barriers / 阅读 / 详情

C语言课程设计

2023-09-09 17:32:46
共1条回复
马老四

已调通,大致功能相当

#include <stdio.h>

#include <stdlib.h> /*其它说明*/

#include <string.h> /*字符串函数*/

#include <time.h>

#define LEN sizeof(STUDENT)

typedef struct stu /*定义结构体数组用于缓存数据*/

{

char num[6];

char name[5];

int score[3];

int sum;

float average;

int order;

struct stu *next;

}STUDENT;

/*初始化函数*/

STUDENT *Init()

{

return NULL; /*返回空指针*/

}

/*菜单选择函数*/

int Menu_Select()

{

int n;

struct tm *pt; /*定义时间结构体*/

time_t t;

t=time(NULL);

pt=localtime(&t); /*读取系统日期并把它放到结构体中*/

printf(" 按任一键进入主菜单...... "); /*按任一键进入主菜单*/

//getch(); /*从键盘读取一个字符,但不显示于屏幕*/

system("pause");

system("cls"); /*清屏*/

printf("******************************************************************************** ");

printf(" 欢迎 Welcome to ");

printf(" 使用学生管理系统1.0 ");

printf("*************************************MENU*************************************** ");

printf(" 1. 输入学生成绩记录 Enter the record "); /*输入学生成绩记录*/

printf(" 2. 显示 Print the record "); /*显示*/

printf(" 3. 寻找 Search record on name "); /*寻找*/

printf(" 4. 删除 Delete a record "); /*删除*/

printf(" 5. 排序 Sort to make New a file "); /*排序*/

printf(" 6. 插入 Insert record to list "); /*插入*/

printf(" 7. 保存 Save the file "); /*保存*/

printf(" 8. 读取 Load the file "); /*读取*/

printf(" 9. 退出 Quit "); /*退出*/

printf(" ******************************************************************************** ");

printf(" 当前系统日期:%d-%d-%d ",pt->tm_year+1900,pt->tm_mon+1,pt->tm_mday); /*显示当前系统日期*/

do

{

printf(" 输入你的选择Enter your choice(1~9):");

fflush(stdin);

scanf("%d",&n);

}while(n<1||n>9); /*如果选择项不在1~9之间则重输*/

return(n); /*返回选择项,主函数根据该数调用相应的函数*/

}

/*输入函数*/

STUDENT *Create()

{

int i,s;

STUDENT *head=NULL,*p; /* 定义函数.此函数带回一个指向链表头的指针*/

system("cls");

for(;;)

{

p=(STUDENT *)malloc(LEN); /*开辟一个新的单元*/

if(!p) /*如果指针p为空*/

{

printf(" 输出内存溢出. Out of memory."); /*输出内存溢出*/

return (head); /*返回头指针,下同*/

}

printf("输入学号Enter the num(0:list end):");

scanf("%s",p->num);

if(p->num[0]=="0") break; /*如果学号首字符为0则结束输入*/

printf("输入名字Enter the name:");

scanf("%s",p->name);

printf("请输入3门成绩Please enter the %d scores ",3); /*提示开始输入成绩*/

s=0; /*计算每个学生的总分,初值为0*/

for(i=0;i<3;i++) /*3门课程循环3次*/

{

do

{

printf("成绩score%d:",i+1);

scanf("%d",&p->score[i]);

if(p->score[i]<0 || p->score[i]>100) /*确保成绩在0~100之间*/

printf("数据错误,请重新输入 Data error,please enter again. ");

}while(p->score[i]<0 || p->score[i]>100);

s=s+p->score[i]; /*累加各门成绩*/

}

p->sum=s; /*将总分保存*/

p->average=(float)s/3; /*先用强制类型转换将s转换成float型,再求平均值*/

p->order=0; /*未排序前此值为0*/

p->next=head; /*将头结点做为新输入结点的后继结点*/

head=p; /*新输入结点为新的头结点*/

}

return(head);

}

/* 显示全部记录函数*/

void Print(STUDENT *head)

{

int i=0; /* 统计记录条数*/

STUDENT *p; /*移动指针*/

system("cls");

p=head; /*初值为头指针*/

printf(" ************************************STUDENT************************************ ");

printf("------------------------------------------------------------------------------- ");

printf("| Rec | Num | Name | Sc1 | Sc2 | Sc3 | Sum | Ave | Order | ");

printf("------------------------------------------------------------------------------- ");

while(p!=NULL)

{

i++;

printf("| %3d | %4s | %-4s | %3d | %3d | %3d | %3d | %4.2f | %-5d| ",

i, p->num,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);

p=p->next;

}

printf("------------------------------------------------------------------------------- ");

printf("**************************************END************************************** ");

}

/*查找记录函数*/

void Search(STUDENT *head)

{

STUDENT *p; /* 移动指针*/

char s[5]; /*存放姓名用的字符数组*/

system("cls");

printf("请输入个姓名来查找. Please enter name for searching. ");

scanf("%s",s);

p=head; /*将头指针赋给p*/

while(strcmp(p->name,s) && p != NULL) /*当记录的姓名不是要找的,或指针不为空时*/

p=p->next; /*移动指针,指向下一结点*/

if(p!=NULL) /*如果指针不为空*/

{

printf(" *************************************FOUND************************************ ");

printf("------------------------------------------------------------------------------- ");

printf("| Num | Name | sc1 | sc2 | sc3 | Sum | Ave | Order | ");

printf("------------------------------------------------------------------------------- ");

printf("| %4s | %4s | %3d | %3d | %3d | %3d | %4.2f | %-5d| ",

p->num,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);

printf("------------------------------------------------------------------------------- ");

printf("***************************************END************************************** ");

}

else

printf(" 没有该学生 There is no num %s student on the list. ",s); /*显示没有该学生*/

}

/*删除记录函数*/

STUDENT *Delete(STUDENT *head)

{

//int n;

STUDENT *p1,*p2; /*p1为查找到要删除的结点指针,p2为其前驱指针*/

char c,s[6]; /*s[6]用来存放学号,c用来输入字母*/

system("cls");

printf("请输入要删除的学号 Please enter the Deleted num: ");

scanf("%s",s);

p1=p2=head; /*给p1和p2赋初值头指针*/

while(strcmp(p1->num,s) && p1 != NULL) /*当记录的学号不是要找的,或指针不为空时*/

{

p2=p1; /*将p1指针值赋给p2作为p1的前驱指针*/

p1=p1->next; /*将p1指针指向下一条记录*/

}

if(strcmp(p1->num,s)==0) /*学号找到了*/

{

printf("**************************************FOUND************************************ ");

printf("------------------------------------------------------------------------------- ");

printf("| Num | Name | sc1 | sc2 | sc3 | Sum | Ave | Order | ");

printf("------------------------------------------------------------------------------- ");

printf("| %4s | %4s | %3d | %3d | %3d | %3d | %4.2f | %-5d| ",

p1->num,p1->name,p1->score[0],p1->score[1],p1->score[2],p1->sum,p1->average,p1->order);

printf("------------------------------------------------------------------------------- ");

printf("***************************************END************************************** ");

printf(" 是否要删除,输入Y删除,N则退出 Are you sure to Delete the student Y/N ?"); /*提示是否要删除,输入Y删除,N则退出*/

for(;;)

{

scanf("%c",&c);

if(c=="n"||c=="N") break; /*如果不删除,则跳出本循环*/

if(c=="y"||c=="Y")

{

if(p1==head) /*若p1==head,说明被删结点是首结点*/

head=p1->next; /*把第二个结点地址赋予head*/

else

p2->next=p1->next; /*否则将一下结点地址赋给前一结点地址*/

//n=n-1;

printf(" 学号为(Num): %s 学生以被删除(student have been Deleted.) ",s);

printf("别忘了保存. Don"t forget to Save. ");break; /*删除后就跳出循环*/

}

}

}

else

printf(" 没有这个学生在表上 There is no num %s student on the list. ",s); /*找不到该结点*/

return(head);

}

/*排序函数*/

STUDENT *Sort(STUDENT *head)

{

int i=0; /*保存名次*/

STUDENT *p1,*p2,*t,*temp; /*定义临时指针*/

temp=head->next; /*将原表的头指针所指的下一个结点作头指针*/

head->next=NULL; /*第一个结点为新表的头结点*/

while(temp!=NULL) /*当原表不为空时,进行排序*/

{

t=temp; /*取原表的头结点*/

temp=temp->next; /*原表头结点指针后移*/

p1=head; /*设定移动指针p1,从头指针开始*/

p2=head; /*设定移动指针p2做为p1的前驱,初值为头指针*/

while(t->average<p1->average&&p1!=NULL) /*作成绩平均分比较*/

{

p2=p1; /*待排序点值小,则新表指针后移*/

p1=p1->next;

}

if(p1==p2) /*p1==p2,说明待排序点值大,应排在首位*/

{

t->next=p1; /*待排序点的后继为p*/

head=t; /*新头结点为待排序点*/

}

else /*待排序点应插入在中间某个位置p2和p1之间,如p为空则是尾部*/

{

t->next=p1; /*t的后继是p1*/

p2->next=t; /*p2的后继是t*/

}

}

p1=head; /*已排好序的头指针赋给p1,准备填写名次*/

while(p1!=NULL) /*当p1不为空时,进行下列操作*/

{

i++; /*结点序号*/

p1->order=i; /*将结点序号赋值给名次*/

p1=p1->next; /*指针后移*/

}

printf("排序成功 Sorting is sucessful. "); /*排序成功*/

return (head);

}

/*插入记录函数*/

STUDENT *Insert(STUDENT *head,STUDENT *New)

{

STUDENT *p0,*p1,*p2;

//int n;

int sum1,i;

p1=head; /*使p1指向第一个结点*/

p0=New; /*p0指向要插入的结点*/

printf(" Please enter a New record. "); /*提示输入记录信息*/

printf("输入学号Enter the num:");

scanf("%s",New->num);

printf("输入名字Enter the name:");

scanf("%s",New->name);

printf("Please enter the %d scores. ",3);

sum1=0; /*保存新记录的总分,初值为0*/

for(i=0;i<3;i++)

{

do

{

printf("成绩score%d:",i+1);

scanf("%d",&New->score[i]);

if(New->score[i]>100||New->score[i]<0)

printf("数据错误Data error,please enter again. ");

}while(New->score[i]>100||New->score[i]<0);

sum1=sum1+New->score[i]; /*累加各门成绩*/

}

New->sum=sum1; /*将总分存入新记录中*/

New->average=(float)sum1/3;

New->order=0;

if(head==NULL) /*原来的链表是空表*/

{

head=p0;

p0->next=NULL;

} /*使p0指向的结点作为头结点*/

else

{

while((p0->average<p1->average)&&(p1->next!=NULL))

{

p2=p1; /*使p2指向刚才p1指向的结点*/

p1=p1->next; /*p1后移一个结点*/

}

if(p0->average>=p1->average)

{

if(head==p1)head=p0; /*插到原来第一个结点之前*/

else p2->next=p0; /*插到p2指向的结点之后*/

p0->next=p1;

}

else

{

p1->next=p0;

p0->next=NULL;

} /*插到最后的结点之后*/

}

//n=n+1; /*结点数加1*/

head=Sort(head); /*调用排序的函数,将学生成绩重新排序*/

printf(" 学生Student %s 已被更新have been inserted. ",New->name);

printf("不要忘了保存Don"t forget to Save the New file. ");

return(head);

}

/*保存数据到文件函数*/

void Save(STUDENT *head)

{

FILE *fp; /*定义指向文件的指针*/

STUDENT *p; /* 定义移动指针*/

char outfile[10];

printf("输出文件例如:c:\score Enter outfile name,for example c:\score ");

scanf("%s",outfile);

if((fp=fopen(outfile,"w"))==NULL) /*为输出打开一个二进制文件,为只写方式*/

{

printf("打不开文件Cannot open the file ");

return; /*若打不开则返回菜单*/

}

printf(" 保存中...Saving the file...... ");

p=head; /*移动指针从头指针开始*/

while(p!=NULL) /*如p不为空*/

{

fwrite(p,LEN,1,fp); /*写入一条记录*/

p=p->next; /*指针后移*/

}

fclose(fp); /*关闭文件*/

printf("保存成功....Save the file successfully! ");

}

/* 从文件读数据函数*/

STUDENT *Load()

{

STUDENT *p1,*p2,*head=NULL; /*定义记录指针变量*/

FILE *fp; /* 定义指向文件的指针*/

char infile[10];

printf("倒入文件例如:c:\score Enter infile name,for example c:\score ");

scanf("%s",infile);

if((fp=fopen(infile,"r"))==NULL) /*打开一个二进制文件,为只读方式*/

{

printf("打不开文件Can not open the file. ");

return(head);

}

printf(" 寻找文件...Loading the file! ");

p1=(STUDENT *)malloc(LEN); /*开辟一个新单元*/

if(!p1)

{

printf("内存溢出!Out of memory! ");

return(head);

}

head=p1; /*申请到空间,将其作为头指针*/

while(!feof(fp)) /*循环读数据直到文件尾结束*/

{

if(fread(p1,LEN,1,fp)!=1) break; /*如果没读到数据,跳出循环*/

p1->next=(STUDENT *)malloc(LEN); /*为下一个结点开辟空间*/

if(!p1->next)

{

printf("Out of memory! ");

return (head);

}

p2=p1; /*使p2指向刚才p1指向的结点*/

p1=p1->next; /*指针后移,新读入数据链到当前表尾*/

}

p2->next=NULL; /*最后一个结点的后继指针为空*/

fclose(fp);

printf(" 你成功的从文件中读取了数据! You have success to read data from the file! ");

return (head);

}

/*主函数界面*/

int main()

{

STUDENT *head,New;

head=Init(); //链表初始化,使head的值为NULL

for(;;) //循环无限次

{

switch(Menu_Select())

{

case 1:head=Create();break;

case 2:Print(head);break;

case 3:Search(head);break;

case 4:head=Delete(head);break;

case 5:head=Sort(head);break;

case 6:head=Insert(head,&New);break; //&New表示返回地址

case 7:Save(head);break;

case 8:head=Load(); break;

case 9:exit(0); //如菜单返回值为9则程序结束

}

}

return 0;

}

相关推荐

c语言课程设计论文

我写过此论文,不过成绩不理想。难的是参考书籍不多。
2023-09-01 22:11:161

c语言课程设计的课程介绍

通过学习C语言程序设计,掌握高级语言程序设计的基本知识,掌握面向过程程序设计和软件开发的基本方法,学会用C语言解决本专业的实际问题,提高分析问题和解决问题的能力。1、课程性质 ,《C语言程序设计》是电子信息相关专业的专业能力模块课程。2、课程与系列产品或项目设计与开发流程的关联该课程是嵌入式系列产品程序设计的基础。3、课程目标通过“篮球赛计时计分系统程序设计”等5个案例的学习与实践,培养学生运用C语言程序设计的知识,解决常用嵌入式系统程序开发问题的能力。4、与前后续课程的关系后续课程:《模块电路功能编程》、《机器人编程与控制》。
2023-09-01 22:11:321

学生成绩记录薄 c语言 课程设计报告

C语言程序设计报告课题名称:学生成绩管理1 系统概述:本程序为一个学生成绩管理系统,对学生的成绩进行管理,学生的信息包括学号,姓名,学期,三门课程的成绩,输入这些信息,本程序可以自动计算总成绩,可以按高分到低分进行排名,并对输入信息的人数进行汇总.2 数据结构设计: (1)结构体; (2)数组的设计:运用指针代替数组,使用指针来建立线性表,使程序更加简洁,可读性更强.3 各函数的设计:函数原型:void InitList(SqLinkList &L);功能: 创建一个空的线性链表;入口参数:L为要创建的线性链表;出口参数:创建链表的L.head为空,L.length为0;返回值: 无; 函数原型:void EmptyLinkList(SqLinkList &L);功能: 清空整个线性链表;入口参数:L为要清空的链表名称;出口参数:若清空成功则链表长度L.length为0;返回值: 无; 函数原型:int ScanE(ElemType &e);功能: 输入学生信息;入口参数:e为要输入信息的学生名称;出口参数:e.num保存学号,e.name保存姓名,e.team保存所在学期,e.s1,e.s2,e.s3分别保存三门课程的成绩;返回值: 输入合法返回1,否则返回0;错误处理:若学号、姓名等输入不合法会有提示及重输; 函数原型:Status SqLinkListAppend(SqLinkList &L,ElemType e);功能: 追加一个结点到线性链表中;入口参数:e为所追加的结点名称,L为e所追加到的线性链表的名称;出口参数:若追加成功,则e为头结点,链表长度L.length增1;返回值: 若追加成功返回1; 函数原型:Link SearchNode(SqLinkList L,int NUM);功能: 查找学号为NUM的学生;入口参数:查找的链表名称L,学号NUM;出口参数:若找到结点指针p指向该结点,否则指向空结点;返回值: 结点指针p; 函数原型:void SearchTeam(SqLinkList L,int team);功能: 查找学期为team的所有记录并输出其信息;入口参数:查找的链表名称L,要查找的学期team;出口参数:无;返回值: 无; 函数原型:void SearchUnpass(SqLinkList L,float s1,float s2,float s3);功能: 查找所有有挂科记录的学生并输出其信息;入口参数:查找的链表名称L,要查找的各门学科成绩s1,s2,s3;出口参数:无;返回值: 无; 函数原型:void SqLinkListSearch(SqLinkList L);功能: 对链表进行分类查找;入口参数:要查找的链表名称L;出口参数:无;返回值: 无; 函数原型: void inputData(SqLinkList &L);功能: 输入数据,并追加一个结点;入口参数: L为要追加结点的链表名称;出口参数: 无;返回值: 无; 函数原型:void SqLinkListTraverse(SqLinkList L);功能: 输出链表中所有学生成绩列表;入口参数:L为要输出信息的链表名称;出口参数:无;返回值: 无; 函数原型:void PrintE(ElemType e);功能: 输出一个结点的所有信息;入口参数:要输出的结点名称e;出口参数:无;返回值: 无;4 使用程序的说明:本程序为一个学生成绩管理系统。对学生的成绩信息进行管理,学生的信息包括学号、姓名、学期、三门课程的成绩、平均成绩、名次。本管理系统实现学生的学号、姓名、学期、每门课程的成绩的录入,并自动按平均分排名,使用时按屏幕上的提示,输入使用代码.如下图所示: 例如:输入代码数字”1”,程序执行”输入学生成绩或已存在的学生成绩进行修改”这条小程序.输入学生个人信息后,如下图所示: 如此分别输入相应的程序代码,就执行相应的程序段. 如下的程序是按学号进行成绩排名: 当输入”6”时,执行相应的程序,即汇总一共输入学生的人数: 5 总结和体会:通过对C语言学习,尤其是这学期本班开展C语言双语教学,体会到学习难的同时,也真正了解到C语言作为一门高级的计算机语言的强大功能,特别是在当今实际生活,生产,办公,信息管理等方面的强大作用. 这次合作我们遇到了许多的困难。时间的紧迫,知识的不足,给我很大的压力。最终我还是还是完成了任务。团结就是力量是我这次最真切的感受。6 程序代码: void InitList(SqLinkList &L) { // 构造一个空的线性表L;L.head = 0; //头指针为空;L.length = 0; //长度初始为0;} void EmptyLinkList(SqLinkList &L){ //入口参数为整个线性表的数据,功能为清空线性表;Node *p;if(!L.head)printf("系统中不存在记录。 "); //头指针为空时没有学生录入;else { while (L.head){ //每个循环将下一结点赋值给头指针,并释放本结点空间,直至线性表清空; p=L.head; L.head=p->next; free(p); } //end while;L.length=0; //长度为0;printf("该管理系统学生信息已清空。 ");}//end else;} int ScanE(ElemType &e){ //输入一个学生的成绩数据结点。返回0为无效结点数据,1为有效结点数据;printf(" 学号:");scanf("%d",&e.num);if(e.num==0){ //学号为0输入不合法,重新输入; printf("学号输入不合法. "); return 0; }printf(" 姓名:");scanf("%s",&e.name);printf(" 学期:");scanf("%d",&e.team);while(e.team>12){ //系统只记录小于12的学期数; printf("输入的学期不能大于12,请重新输入:"); scanf("%d",&e.team);}printf(" 成绩A:");scanf("%f",&e.s1);printf(" 成绩B:");scanf("%f",&e.s2);printf(" 成绩C:");scanf("%f",&e.s3);return OK;} Status SqLinkListAppend(SqLinkList &L,ElemType e){ //追加一个结点到线性表中;Node *p;p=SearchNode(L,e.num); //查找学号为e.num的记录并将其地址赋给指针p; if (p==0){ //若不存在添加学号相同的结点,追加一个结点; p=(Node *)malloc(sizeof(Node)); if (!p) return ERROR; memcpy(&(p->data),&e,sizeof(ElemType)); p->next=L.head ; L.head=p; //追加的一个结点为首结点; L.length++; //表长度加1;}else { //如果该学号记录已存在,则进行修改操作;memcpy(&(p->data),&e,sizeof(ElemType));printf("该学生记录已经存在,已完成修改操作。 "); }return OK;} Link SearchNode(SqLinkList L,int NUM){ //查找学生记录,该学生的学号为NUM;Node *p;p=L.head; //p先指在头结点;while (p&& p->data.num !=NUM ) p=p->next; //如果该学生的学号不为NUM则查找下一个结点;return p;} void SearchTeam(SqLinkList L,int team){ //按学期查找并输出所有该学期存在的记录;Node *p;p=L.head;int n,sum=0; //sum记录该学期的学生总人数;printf("请输入您要查询的学生的学期:");scanf("%d",&n); printf(" 学号 姓名 学期 成绩A 成绩B 成绩C 平均成绩 ");while(p&&p->next){ //如果p结点和它的下一结点不为空,且该结点的学期等于要查找学期,则格式输出所有该学期学生信息;if(p->data.team==n){PrintE(p->data);sum++; //查找到一个该学期的学生记录计数加1; } p=p->next; //转向下一结点;} //end while;if(p->data.team==n){ //如果p的下一结点为空,且本结点学期为n,则格式输出该结点信息;sum++;PrintE(p->data);}if(sum==0)printf("没有这学期的记录。 ");if(sum)printf("该学期共有%d人的记录. ",sum);} void SearchUnpass(SqLinkList L,float s1,float s2,float s3){ //查找并输出有挂科的学生信息;Node *p;p=L.head;int sum=0; //sum计数挂科总人数,初始为0;printf("以下是有一门以上不及格科目的学生的成绩: "); printf(" 学号 姓名 学期 成绩A 成绩B 成绩C 平均成绩 "); while(p&&p->next){ //如果p及其下一结点为真,且该结点有一门以上科目分数低于60则输出该结点成绩并使sum计数加1; if((p->data.s1<60)||(p->data.s2<60)||(p->data.s3<60)) { PrintE(p->data); sum++; } //end if; p=p->next; //转到下一结点; } //end while; if((p->data.s1<60)||(p->data.s2<60)||(p->data.s3<60)){ //查看最后一个结点,若有挂科,sum加1并格式输出结点信息; sum++; PrintE(p->data); } if(sum==0)printf("没有不及格的记录。 "); if(sum)printf("共有%d人的挂科记录. ",sum);} void SqLinkListSearch(SqLinkList L){ //分类查找学生记录;Node *p;p=L.head;int n,reg; //reg为查询方式的指令; printf("1--按学号查询 2--按学期查询 3--挂科学生信息列表 ");printf("请您输入查询方式:");scanf("%d",&reg);if(L.length){if(reg>3)printf("对不起没有您要求的选项。 "); //若reg>3则输入不合法;else if(reg==1){ //reg==1按学号查询;printf("请输入您要查询的学生的学号:");scanf("%d",&n);while(p&&p->next&& p->data.num !=n) p=p->next; //当p和他下一结点为真时且结点数据不为要查找数据时转向下一结点; if(p->data.num==n){ //找到所要查询结点,格式输出;printf(" 学号 姓名 学期 成绩A 成绩B 成绩C 平均成绩 ");PrintE(p->data); }else printf("没有您要查找的学号。 ");} //end reg==1 if ;else if(reg==2)SearchTeam(L,p->data.team); //reg==2,调用SearchTeam函数按学期查询并输出;else if(reg==3)SearchUnpass(L,p->data.s1,p->data.s2,p->data.s3); //reg==3,调用SearchUnpass函数,输出全部有挂科记录的学生信息;}//end if;else printf("系统中无记录. ");} void inputData(SqLinkList &L){ //请求输入学生成绩,则追加一个结点并输入;ElemType e;if (ScanE(e)) SqLinkListAppend(L,e); //输入数据,追加一个结点;} void SqLinkListTraverse(SqLinkList L){ //所有学生信息列表输出;Node *p;char c;p=L.head;if(p) //非空表;{printf(" 学号 姓名 学期 成绩A 成绩B 成绩C 平均成绩 ");for (p=L.head ;p;p=p->next )PrintE(p->data); //从第一个结点开始输出所有信息直到结点为空; }else printf("系统中无记录。 "); //空表;c=getchar();} void PrintE(ElemType e){ //输出各科成绩和平均成绩;printf("%d %s %d %f %f %f %f ",e.num,e.name,e.team,e.s1,e.s2,e.s3,(e.s1+e.s2+e.s3)/3);//格式输出学生的学号、姓名、学期、A、B、C三门成绩以及平均成绩;}
2023-09-01 22:11:521

c语言的课程设计问题该怎么做?

有偿帮助解决,如有需要请浏览主页联系~
2023-09-01 22:12:184

C语言课程设计

告诉个邮箱 或者QQ 可以传的,粘贴不了
2023-09-01 22:12:513

C语言课程设计

3、班级通讯录管理系统设计与实现 以本班同学的具体数据为背景,设计一个本班同学实现以下功能: 1)通讯录编辑(添加、删除) ; 2)按不同的项进行查找; 3)对已存在的通讯录按不同的项排序; 4)将通讯录写入文件; 5)从文件读入通讯录。 备注:通讯录至少应该有以下数据项:姓名,地址,电话,邮编,E-mail。 链接: https://pan.baidu.com/s/1mq8kqN3BvK0IvZBEUP9Oag 提取码: 1111 6、成绩记录簿设计与实现 实现以下功能: 1)创建信息并以磁盘文件保存; 2)读取磁盘文件并显示输出所有学生的成绩; 3)按学号或姓名查询成绩; 4)添加成绩记录; 5)修改指定姓名或学号的学生的成绩并可存盘; 6)显示输出60分以下、60 79、80 89、90分以上各分数段的学生信息。 备注:每个学生信息包括:学号、姓名、C语言成绩。 链接: https://pan.baidu.com/s/1mq8kqN3BvK0IvZBEUP9Oag 提取码: 1111 7、学生籍贯信息记录簿设计与实现 实现以下功能: 1)创建信息并以磁盘文件保存; 2)读取磁盘文件并显示输出所有学生的籍贯信息; 3)按学号或姓名查询其籍贯; 4)按籍贯查询并输出该籍贯的所有学生; 5)能添加、删除和修改学生的籍贯信息; 6)显示输出四川籍和非四川籍学生的信息并可分别存盘。 备注:每个学生信息包括:学号、姓名、籍贯 链接: https://pan.baidu.com/s/1mq8kqN3BvK0IvZBEUP9Oag 提取码: 1111 9、图书信息管理系统设计与实现 实现以下功能: 1)系统以菜单方式工作; 2)图书信息录入功能(图书信息用文件保存); 3)图书信息浏览功能; 4)查询和排序功能; 备注:图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。 链接: https://pan.baidu.com/s/1mq8kqN3BvK0IvZBEUP9Oag 提取码: 1111 10、学生信息管理系统设计与实现 实现以下功能: 1)系统以菜单方式工作; 2)学生信息录入功能(学生信息用文件保存) ; 3)学生信息浏览功能; 4)查询、排序功能(至少两种查询依据和两种排序依据); 5)学生信息删除、修改功能。 备注:学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E- mail等。 链接: https://pan.baidu.com/s/1mq8kqN3BvK0IvZBEUP9Oag 提取码: 1111 12、职工工作量统计系统设计与实现 完成以下功能: 1)输入职工工号和完成的产品数量,程序允许同- -职工有多次输入,由程序对 其完成的产品数量实现累计; 2)按完成数量对职工排序,并确定名次; 3)按完成的产品数量由多到少的顺序,输出名次、同一名次的职工人数及他们 的工号(工号由小到大顺序输出)。 链接: https://pan.baidu.com/s/1mq8kqN3BvK0IvZBEUP9Oag 提取码: 1111
2023-09-01 22:13:301

c语言课程设计(学生成绩管理)

1.用链表读入数据2.用冒泡法排序3.输出数据有不懂的再问我!
2023-09-01 22:13:423

C语言课程设计,贪吃蛇应该怎么做?

2.1程序功能介绍贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。2.2程序整体设计说明一个游戏要有开始部分,运行部分,结束部分(实际上开始部分与运行部分是一体的)。2.2.1设计思路这个程序的关键是表示蛇的图形以及蛇的移动。用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示。移动时必须从蛇头开始,所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时由于没有庆平的原因,原来蛇的位置和新蛇的位置差一个单位,所以看起来社会多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现和消失也是画矩形块和覆盖矩形块2.2.2数据结构设计及用法说明 开始部分:游戏是运行在图形模式下的,所以第一步一定是初始化图形模式,接着要有开始的界面,就像书有封面一样,我设置了一个游戏的标题画面,除了游戏标题画面我还设置了一个欢迎画面。标题画面以后,还要为游戏的运行部分作初始化,包括绘制游戏运行时的背景,对游戏某些重 要变量的初始化。运行部分:作为游戏的核心部分,这里包括的函数比较多,也就是模块比较多,首先让我模拟一下贪吃蛇的游戏模式:某个世界上突然出现一条蛇,它很短,它的运动神经异常,它没法停止自己的多动症在它的世界里就只有食物,它很饿,也很贪吃;同样在不明原因的情况下,食物从天而降,可惜的是没有落到嘴边;饥饿的主人公,不管它有没有毒,也不问食物的来历,径直向食物爬去;它吃到食物啦,它超出想象的同化能力让食物很快的成为自己身体的一部分,它的身子变长啦。当它吃到第一颗食物时,上帝有给它第二颗,于是它吃了第二颗,于是又变长了,于是又有第三颗……它的身子是一直的加长,它不管自己过长身体的麻烦——转身不便,继续吃下去,现在它是直接把巴张大,好让食物有个绿色通道。但是在某天的下午,它咬到了自己,它才想起自己是一条毒蛇,于是晕死过去(不是毒死);又或者它往食物冲锋的时候,它失去控制,撞到了墙上。第一轮循环:第一步,出现食物;第二步,蛇不停运动;第三步,检查蛇是撞到自己或墙壁;由第四步起游戏有两条支线(A、B):A :第四步,蛇没有碰到自己或墙壁,蛇继续前进,绘制蛇的动作;第五步,判断蛇是否吃到食物,如果蛇吃到食物,身子变长,原来的食物消失;第六步,让玩家输入控制指令,让蛇在下一轮循环的第二步改变运动方向;第七步,第二轮循环的第一步,重复第一轮的步骤;B:第四步,蛇碰到自己或墙壁,终止游戏。结束部分:游戏结束时,显示“GAME OVER”,已经是约定俗成的规律了,我的游戏也不例外。除了游戏结束画面外,我还设置了一个游戏退出画面,“善始善终”嘛。有了上述的大致划分,我把整个程序划分成(13+2)个模块(其实就是函数)2.2.3程序结构(流程图)图2.1流程图依据所需要处理的任务要求,规划输入数据和输出结果,决定存放数据的数据结构。C语言中数据结构集中体现在数据类型上,因此在进行C语言程序设计时,应统筹规划程序中所使用的变量,数组,指针等,以及它们的类型等。这点是很重要的,如果在此期间选择不合适的变量或者数组,将来修改就十分困难。现在分析一下贪吃蛇游戏中的元素,继而得出与它们对应的在程序中的描述:蛇:基本描述:长度,颜色,位置。对应数据与数据类型:长度—虽然可以用坐标表示,但是这样的话,运算量将很大,所以换算成较大的单位—节数,以固定长度的每节描述;坐标--整型;颜色--整型; 位置--X,Y坐标。增加的描述:蛇运动的方向,蛇的生命。对应数据与数据类型:这些描述是为了与程序的按键的输入部分与判断游戏结束部分相联系而设的。方向只有四个方向:上下左右。可以设置与之对应的四个整型数:3、4、2、1。生命就只有两种情况:死或生,对应0或1。食物: 基本描述:颜色,位置。对应数据与数据类型:由于颜色设成固定的,所以不再讨论。位置—X、Y坐标。增加的描述:食物的存在。对应数据与数据类型:这是为了避免重复出现食物而设置的,与绘制食物的函数有联系。只有两个值:0或1(没有食物或有食物)其他的元素:墙,由于它在显示上是作为背景而存在的,所以并没有什么说明实际的墙壁就是四条直线组成的边框,由坐标描述。还需要的变量:键盘键入的键值(作为全局变量,整型);经常要使用的循环变量;自定义的填充图案;说明文字的字符数组;游戏的记分;游戏的速度(蛇的速度)。图2.2蛇的不停运动的关键算法的流程图2.2.4各模块的功能及程序说明主要模块的实现思路和算法的流程图说明:关键所在——蛇不停移动的Snakemove():蛇的不停移动,就是蛇的下一节取代前一节的位置,在计算机中就是蛇下一节的位置坐标变成前一节的位置坐标。在上文中,已定义蛇的位置坐标为数组类型,一组坐标对应一节的位置,假设有i+1节,由0到i节,第i节的坐标取第i-1节的坐标,第i-1节的坐标取第i-2节的坐标……直到第1节取第0节的坐标。而第0节的坐标,即蛇头的坐标要往某个方向变化,变化量为蛇每节的长度。蛇的这种坐标轮换需要循环语句使其继续下去。 2.2.5程序结果运行程序得到如下初始界面图:图2.3程序结果图用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示:图2.4程序结果图蛇没有碰到自己或墙壁,蛇继续前进:图2.5程序结果图游戏结束时,显示“GAME OVER”图2.6程序结果图2.3程序源代码及注释#define N 200#include <graphics.h>#include <stdlib.h>#include <dos.h>#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011bint i,key;int score=0;/*得分*/int gamespeed=50000;/*游戏速度自己调整*/struct Food{ int x;/*食物的横坐标*/ int y;/*食物的纵坐标*/ int yes;/*判断是否要出现食物的变量*/}food;/*食物的结构体*/struct Snake{ int x[N]; int y[N]; int node;/*蛇的节数*/ int direction;/*蛇移动方向*/ int life;/* 蛇的生命,0活着,1死亡*/}snake;void Init(void);/*图形驱动*/void Close(void);/*图形结束*/void DrawK(void);/*开始画面*/void GameOver(void);/*结束游戏*/void GamePlay(void);/*玩游戏具体过程*/void PrScore(void);/*输出成绩*//*主函数*/void main(void){ Init();/*图形驱动*/ DrawK();/*开始画面*/ GamePlay();/*玩游戏具体过程*/ Close();/*图形结束*/}/*图形驱动*/void Init(void){ int gd=DETECT,gm; registerbgidriver(EGAVGA_driver); initgraph(&gd,&gm,"c:\program files\winyes\tc20h\bgi"); cleardevice();}/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/void DrawK(void){/*setbkcolor(LIGHTGREEN);*/ setcolor(11); setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/ for(i=50;i<=600;i+=10)/*画围墙*/ { rectangle(i,40,i+10,49); /*上边*/ rectangle(i,451,i+10,460);/*下边*/ } for(i=40;i<=450;i+=10) { rectangle(50,i,59,i+10); /*左边*/ rectangle(601,i,610,i+10);/*右边*/ }}/*玩游戏具体过程*/void GamePlay(void){ randomize();/*随机数发生器*/ food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/ snake.life=0;/*活着*/ snake.direction=1;/*方向往右*/ snake.x[0]=100;snake.y[0]=100;/*蛇头*/ snake.x[1]=110;snake.y[1]=100; snake.node=2;/*节数*/ PrScore();/*输出得分*/ while(1)/*可以重复玩游戏,压ESC键结束*/ { while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/ { if(food.yes==1)/*需要出现新食物*/ { food.x=rand()%400+60; food.y=rand()%350+60; while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/ food.x++; while(food.y%10!=0) food.y++; food.yes=0;/*画面上有食物了*/ } if(food.yes==0)/*画面上有食物了就要显示*/ { setcolor(GREEN); rectangle(food.x,food.y,food.x+10,food.y-10); } for(i=snake.node-1;i>0;i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/ { snake.x[i]=snake.x[i-1]; snake.y[i]=snake.y[i-1]; } /*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/ switch(snake.direction) { case 1:snake.x[0]+=10;break; case 2: snake.x[0]-=10;break; case 3: snake.y[0]-=10;break; case 4: snake.y[0]+=10;break; } for(i=3;i<snake.node;i++)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/ { if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0]) { GameOver();/*显示失败*/ snake.life=1; break; } } if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55|| snake.y[0]>455)/*蛇是否撞到墙壁*/ { GameOver();/*本次游戏结束*/ snake.life=1; /*蛇死*/ } if(snake.life==1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/ break; if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/ { setcolor(0);/*把画面上的食物东西去掉*/ rectangle(food.x,food.y,food.x+10,food.y-10); snake.x[snake.node]=-20;snake.y[snake.node]=-20; /*新的一节先放在看不见的位置,下次循环就取前一节的位置*/ snake.node++;/*蛇的身体长一节*/ food.yes=1;/*画面上需要出现新的食物*/ score+=10; PrScore();/*输出新得分*/ } setcolor(4);/*画出蛇*/ for(i=0;i<snake.node;i++) rectangle(snake.x[i],snake.y[i],snake.x[i]+10, snake.y[i]-10); delay(gamespeed); setcolor(0);/*用黑色去除蛇的的最后一节*/ rectangle(snake.x[snake.node-1],snake.y[snake.node-1], snake.x[snake.node-1]+10,snake.y[snake.node-1]-10); } /*endwhile(!kbhit)*/ if(snake.life==1)/*如果蛇死就跳出循环*/ break; key=bioskey(0);/*接收按键*/ if(key==ESC)/*按ESC键退出*/ break; else if(key==UP&&snake.direction!=4)/*判断是否往相反的方向移动*/ snake.direction=3; else if(key==RIGHT&&snake.direction!=2) snake.direction=1; else if(key==LEFT&&snake.direction!=1) snake.direction=2; else if(key==DOWN&&snake.direction!=3) snake.direction=4; }/*endwhile(1)*/}/*游戏结束*/void GameOver(void){ cleardevice(); PrScore(); setcolor(RED); settextstyle(0,0,4); outtextxy(200,200,"GAME OVER"); getch();}/*输出成绩*/void PrScore(void){ char str[10]; setfillstyle(SOLID_FILL,YELLOW); bar(50,15,220,35); setcolor(6); settextstyle(0,0,2); sprintf(str,"score:%d",score); outtextxy(55,20,str);}/*图形结束*/void Close(void){ getch(); closegraph();}第3章 课程设计总结课程设计是培养学生综合运用所学知识 ,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。 回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整半个月的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针,链表……通过这次课程设计之 后,我们把前面所学过的知识又重新温故了一遍。我做的是做贪吃蛇游戏。简单的一个,但对我一个初学者来说却是一个很大的困难。更加是第一次做课程设计,所以第一天下午在机房做了一个下午却丝毫没有进展,最主要是不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听讲。可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。特别是结构体,指针的部分,几乎是一片空白。不过经过几天的努力,大体上把课本上的知识点看了一遍,知识点也都基本是撑握了,所以一下一步就是开始正式的编程序了。不过毕竟是个新手,还是不知如何下手,于是就在网上下了一篇类似的程序,经过仔细的研究,终于读懂了C语言编程的基本过程和方法。 经过一波三折,终于开始正式编程。编程是一件很枯燥很无聊的事情,但是出于完成作业,得到学分的压力,还必须强破自己坚持下去,按照老师所说的模块化思想,分部分的进行编写。而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。所以认真仔细就是非常重要的了。开始的时候真的感觉编程是一件很无聊的事情,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。又经过几天的努力,终于把程序完成了,尽管程序还是有很多错误和漏洞,不过还是很高兴的。无论如何是自己的劳动成果,是自己经过努力得到的成绩,同时也是学习C语言的一次实践作业,自己进步的证明。 通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过 程中,我会更加注视实践操作,使自己便好地学好计算机。在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。
2023-09-01 22:14:211

C语言课程设计

要许多时间来编啊
2023-09-01 22:14:344

C语言课程设计难吗?C语言这门课难还是课程设计难?

《乾隆抄本百廿回红楼梦稿》,咸丰年间于源题曰“红楼梦稿”,杨继振旧藏,亦称“杨藏本”、“脂稿本”。第78
2023-09-01 22:14:467

C语言课程设计任务——学生成绩统计程序设计

你好
2023-09-01 22:15:214

C语言课程设计-仓库货物管理系统

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> struct Info { char num[15]; char name[15]; double price; int number; }; char menu() { char x; puts(" Welcome to Cargo Warehouse Management Systerm "); puts(" ************************ MENU ************************ "); puts(" 1.Append inform "); puts(" 2.Display inform "); puts(" 3.Search inform "); puts(" 4.Modify inform "); puts(" 5.Delete inform "); puts(" 6.Exit "); puts(" ****************************************************** "); printf("Choose your number(1-6):[ ]"); while(1) { x=getchar(); getchar(); if(x<"1"||x>"6") printf("Input error,please input again(1-6):[ ]"); else break; } return x; 这个只是目录 具体的 你加 我
2023-09-01 22:15:411

C语言课程设计—学生成绩管理系统注意要求,谢谢

#include "stdio.h" #include "stdlib.h" #include "string.h" int shoudsave=0; /* */ struct student { char num[10];/* 学号 */ char name[20]; char class[10];char term[2];int ygrade;int cgrade; int mgrade; int egrade;int totle;int ave; char neartime[10];/* 最近更新时间 */ };typedef struct node { struct student data; struct node *next; }Node,*Link;void menu() { printf("********************************************************************************"); printf(" 1登记学生资料 2删除学生资料 "); printf(" 3查询学生资料 4修改学生资料 "); printf(" 5保存学生资料 0退出系统 "); printf("******************************************************************************** "); }void printstart() { printf("----------------------------------------------------------------------- "); } void Wrong() { printf(" =====>提示:输入错误! "); }void Nofind() { printf(" =====>提示:没有找到该学生! "); }void printc() /* 本函数用于输出中文 */ { printf(" 学号 姓名 班级 学期 语言成绩 英语成绩 数学成绩 C语言成绩 总分 平均分 ");}void printe(Node *p)/* 本函数用于输出英文 */ { printf("%-12s%s %s \%s %d %d %d %d %d ",p->data.num,p->data.name,p->data.class,p->data.term,p->data.ygrade,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.totle,p->data.ave);}Node* Locate(Link l,char findmess[],char nameornum[]) /* 该函数用于定位连表中符合要求的接点,并返回该指针 */ { Node *r; if(strcmp(nameornum,"num")==0) /* 按学号查询 */{ r=l->next; while(r!=NULL) { if(strcmp(r->data.num,findmess)==0) return r; r=r->next; } } else if(strcmp(nameornum,"name")==0) /* 按姓名查询 */{ r=l->next; while(r!=NULL) { if(strcmp(r->data.name,findmess)==0) return r; r=r->next; } } return 0; }void Add(Link l) /* 增加学生 */ { Node *p,*r,*s; char num[10]; r=l; s=l->next; while(r->next!=NULL) r=r->next; /* 将指针置于最末尾 */ while(1) { printf("请你输入学号(以"0"返回上一级菜单:)");scanf("%s",num);if(strcmp(num,"0")==0)break; while(s) { if(strcmp(s->data.num,num)==0){ printf("=====>提示:学号为"%s"的学生已经存在,若要修改请你选择"4 修改"! ",num); printstart(); printc(); printe(s); printstart(); printf(" "); return; } s=s->next; }p=(Node *)malloc(sizeof(Node));strcpy(p->data.num,num); printf("请你输入姓名:"); scanf("%s",p->data.name); getchar(); printf("请你输入班级:");scanf("%s",p->data.class);getchar(); printf("请你输入学期:");scanf("%s",p->data.term);getchar(); printf("请你输入语文成绩:");scanf("%d",&p->data.ygrade);getchar(); printf("请你输入c语言成绩:"); scanf("%d",&p->data.cgrade); getchar(); printf("请你输入数学成绩:"); scanf("%d",&p->data.mgrade); getchar(); printf("请你输入英语成绩:"); scanf("%d",&p->data.egrade); getchar(); p->data.totle=p->data.ygrade+p->data.egrade+p->data.cgrade+p->data.mgrade;p->data.ave=p->data.totle / 3; /* 信息输入已经完成 */ p->next=NULL; r->next=p; r=p; shoudsave=1;} }void Qur(Link l) /* 查询学生 */ { int sel; char findmess[20]; Node *p;if(!l->next) { printf(" =====>提示:没有资料可以查询! "); return;} printf(" =====>1按学号查找 =====>2按姓名查找 "); scanf("%d",&sel); if(sel==1)/* 学号 */ { printf("请你输入要查找的学号:"); scanf("%s",findmess); p=Locate(l,findmess,"num"); if(p) { printf(" 查找结果 "); printstart(); printc(); printe(p); printstart(); } else Nofind(); } else if(sel==2) /* 姓名 */ { printf("请你输入要查找的姓名:"); scanf("%s",findmess); p=Locate(l,findmess,"name"); if(p) { printf(" 查找结果 "); printstart(); printc(); printe(p); printstart(); } else Nofind(); } else Wrong();}void Del(Link l) /* 删除 */ { int sel; Node *p,*r; char findmess[20]; if(!l->next) { printf(" =====>提示:没有资料可以删除! "); return; } printf(" =====>1按学号删除 =====>2按姓名删除 "); scanf("%d",&sel); if(sel==1) { printf("请你输入要删除的学号:"); scanf("%s",findmess); p=Locate(l,findmess,"num"); if(p) { r=l; while(r->next!=p) r=r->next; r->next=p->next; free(p); printf(" =====>提示:该学生已经成功删除! "); shoudsave=1; } else Nofind(); } else if(sel==2) { printf("请你输入要删除的姓名:"); scanf("%s",findmess); p=Locate(l,findmess,"name"); if(p) { r=l; while(r->next!=p) r=r->next; r->next=p->next; free(p); printf(" =====>提示:该学生已经成功删除! "); shoudsave=1; } else Nofind(); } else Wrong(); }void Modify(Link l) { Node *p; char findmess[20]; if(!l->next) { printf(" =====>提示:没有资料可以修改! "); return; } printf("请你输入要修改的学生学号:"); scanf("%s",findmess); p=Locate(l,findmess,"num"); if(p) { printf("请你输入新学号(原来是%s):",p->data.num); scanf("%s",p->data.num);printf("请你输入新姓名(原来是%s):",p->data.name);scanf("%s",p->data.name); getchar(); printf("请你输入新班级(原来是%s):",p->data.class);scanf("%s",p->data.class);getch();printf("请你输入新学期(原来是%s):",p->data.term);scanf("%s",p->data.term);getchar();printf("请你输入新的语文成绩(原来是%d分):",p->data.ygrade);scanf("%d",&p->data.ygrade);getchar(); printf("请你输入新的c语言成绩(原来是%d分):",p->data.cgrade); scanf("%d",&p->data.cgrade); getchar(); printf("请你输入新的数学成绩(原来是%d分):",p->data.mgrade); scanf("%d",&p->data.mgrade); getchar(); printf("请你输入新的英语成绩(原来是%d分):",p->data.egrade); scanf("%d",&p->data.egrade); p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade; p->data.ave=p->data.totle/3; printf(" =====>提示:资料修改成功! "); shoudsave=1; } else Nofind();}void Disp(Link l) { int count=0; Node *p; p=l->next;if(!p) { printf(" =====>提示:没有资料可以显示! "); return; } printf(" 显示结果 "); printstart(); printc(); printf(" "); while(p) { printe(p); p=p->next; } printstart(); printf(" "); }void Tongji(Link l) { Node *pm,*pe,*pc,*pa; /* 用于指向不及格学生的接点 */Node *r=l->next; if(!r) { printf(" =====>提示:没有资料可以统计! "); return ; } pm=pe=pc=pa=r;while(r!=NULL) { if(r->data.ygrade<60)pa=r;if(r->data.cgrade<60)pc=r; if(r->data.mgrade<60)pm=r; if(r->data.egrade<60)pe=r; r=r->next;} printf("------------------------------统计结果-------------------------------- "); printf("语文不及格: %s %d分 ",pe->data.name,pe->data.ygrade);printf("英语不及格: %s %d分 ",pe->data.name,pe->data.egrade);printf("数学不及格: %s %d分 ",pm->data.name,pm->data.mgrade);printf("c语言不及格: %s %d分 ",pc->data.name,pc->data.cgrade);printstart(); }void Sort(Link l) { Link ll; Node *p,*rr,*s;ll=(Link)malloc(sizeof(Node)); /* 用于做新的连表 */ ll->next=NULL;if(l->next==NULL) { printf(" =====>提示:没有资料可以排序! "); return ; } p=l->next; while(p) { s=(Node*)malloc(sizeof(Node)); /* 新建接点用于保存信息 */ s->data=p->data; s->next=NULL;rr=ll; while(rr->next!=NULL && rr->next->data.totle>=p->data.totle) rr=rr->next; if(rr->next==NULL) rr->next=s; else { s->next=rr->next; rr->next=s; } p=p->next; } free(l); l->next=ll->next; printf(" =====>提示:排序已经完成! "); }void Save(Link l) { FILE* fp; Node *p; int flag=1,count=0; fp=fopen("c:\student","wb"); if(fp==NULL) { printf(" =====>提示:重新打开文件时发生错误! "); exit(1); } p=l->next;while(p) { if(fwrite(p,sizeof(Node),1,fp)==1) { p=p->next; count++; } else { flag=0; break; } } if(flag) { printf(" =====>提示:文件保存成功.(有%d条记录已经保存.) ",count); shoudsave=0; } fclose(fp); }void main() { Link l;/* 连表 */ FILE *fp; /* 文件指针 */ int sel; char ch; char jian;int count=0; Node *p,*r;l=(Node*)malloc(sizeof(Node)); l->next=NULL; r=l;fp=fopen("C:\student","rb"); if(fp==NULL) { printf(" =====>提示:文件还不存在,是否创建?(y/n) "); scanf("%c",&jian); if(jian=="y"||jian=="Y") fp=fopen("C:\student","wb"); else exit(0); } printf(" =====>提示:文件已经打开,正在导入记录...... ");while(!feof(fp)) { p=(Node*)malloc(sizeof(Node)); if(fread(p,sizeof(Node),1,fp)) /* 将文件的内容放入接点中 */ { p->next=NULL; r->next=p; r=p; /* 将该接点挂入连中 */ count++; } }fclose(fp); /* 关闭文件 */ printf(" =====>提示:记录导入完毕,共导入%d条记录. ",count);while(1) { menu(); printf("请你选择操作:"); scanf("%d",&sel);if(sel==0) { if(shoudsave==1) { getchar(); printf(" =====>提示:资料已经改动,是否将改动保存到文件中(y/n)? "); scanf("%c",&ch); if(ch=="y"||ch=="Y") Save(l); } printf(" =====>提示:你已经退出系统,再见! "); break; } switch(sel) { case 1:Add(l);break; /* 增加学生 */ case 2:Del(l);break;/* 删除学生 */ case 3:Qur(l);break;/* 查询学生 */ case 4:Modify(l);break;/* 修改学生 */ case 5:Save(l);break;/* 保存学生 */ case 9:printf(" ==========帮助信息========== ");break; default: Wrong();getchar();break; } } }
2023-09-01 22:16:383

c语言课程设计

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> struct record { char id[10]; char name[20]; char phone[20]; char adress[40]; char postcode[10]; char e_mail[30]; }student[500]; int num=0;//外部变量num为文件中的纪录数 FILE *fp; void mainmenu();//主菜单 void newrecord();//新添纪录 void searchmenu();//查询菜单 void searchbyid();//按学号查询 void searchbyname();//按姓名查询 void searchbyphone();//按电话查询 void deletemenu();//删除菜单 void deleteall();//删除所有 void deleteone();//删除单个 void showall();//显示所有 void readfromfile();//读取文件 void writetofile();//写入文件 void deletebyid();//按学号删除 void deletebyname();//按姓名删除 void listbyid();//按学号排序 void listbyname();//按姓名排序 void listmenu();//排序菜单 void main() { readfromfile(); while (1) { mainmenu(); } } void readfromfile()//从文件导入 { if((fp=fopen("student.bin","rb"))==NULL) { printf(" 通讯录文件不存在"); if ((fp=fopen("student.bin","wb"))==NULL) { printf(" 建立失败"); exit(0); } else { printf(" 通讯录文件已建立"); printf(" 按任意键进入主菜单"); getch(); return; } exit(0); } fseek(fp,0,2); /*文件位置指针移动到文件末尾*/ if (ftell(fp)>0) /*文件不为空*/ { rewind(fp); /*文件位置指针移动到文件开始位置*/ for (num=0;!feof(fp) && fread(&student[num],sizeof(struct record),1,fp);num++); printf(" 文件导入成功"); printf(" 按任意键返回主菜单"); getch(); return; } printf(" 文件导入成功"); printf(" 通讯录文件中无任何纪录"); printf(" 按任意键返回主菜单"); getch(); return; } void mainmenu()//主菜单 { char choic; system("cls"); printf(" ******************** 主菜单 ********************"); printf(" *********** 1-新添纪录 2-查询菜单 ************"); printf(" *********** 3-删除菜单 4-记录排序 ************"); printf(" *********** 5-保存退出 6-不保存退出***********"); printf(" ************************************************"); printf(" 请选择:"); choic=getch(); switch (choic) { case "1":newrecord();break; case "2":searchmenu();break; case "3":deletemenu();break; case "4":listmenu();break; case "5":writetofile();break; case "6":exit(0); default:mainmenu(); } } void searchmenu()//查询菜单 { char choic; system("cls"); printf(" ******************* 查询菜单 *******************"); printf(" ********** 1-显示所有 2-按学号查询 ************"); printf(" ********** 3-按姓名查询4-按电话查询 ************"); printf(" ********** 5-返回主菜单 ************"); printf(" ************************************************"); printf(" 请选择:"); choic=getch(); switch (choic) { case "1":showall();break; case "2":searchbyid();break; case "3":searchbyname();break; case "4":searchbyphone();break; case "5":mainmenu();break; } } void deletemenu()//删除菜单 { char choic; if(num==0) { printf(" 对不起,文件中无任何纪录"); printf(" 按任意键返回主菜单"); getch(); return; } system("cls"); printf(" ******************* 删除菜单 *******************"); printf(" *********** 1-删除所有 2-删除单个 ***********"); printf(" *********** 3-返回主菜单 ***********"); printf(" ************************************************"); printf(" 请选择:"); choic=getch(); switch (choic) { case "1":deleteall();break; case "2":deleteone();break; case "3":mainmenu();break; default:mainmenu();break; } } void deleteall()//删除所有 { printf(" 确认删除?(y/n)"); if (getch()=="y") { fclose(fp); if ((fp=fopen("student.bin","wb"))==NULL) { printf(" 不能打开文件,删除失败"); readfromfile(); } num=0; printf(" 纪录已删除,按任意键返回主菜单"); getch(); return; } else return; } void deletebyname()//按姓名删除 { int a=0; int findmark=0; int j; int deletemark=0; int i; char name[20]; printf(" 请输入要删除学生姓名:"); scanf("%s",name); for (i=a;i<num;i++) { if (strcmp(student[i].name,name)==NULL) { printf(" 以下是您要删除的学生纪录:"); findmark++; printf(" ________________________________"); printf(" 学号: %s",student[i].id); printf(" 姓名: %s",student[i].name); printf(" 电话: %s",student[i].phone); printf(" 地址: %s",student[i].adress); printf(" e-mail:%s",student[i].e_mail); printf(" ________________________________"); printf(" 是否删除?(y/n)"); if (getch()=="y") { for (j=i;j<num-1;j++) /*纪录移动,从stud数组中删除之*/ student[j]=student[j+1]; num--; deletemark++; printf(" 删除成功"); if((i+1)<num) { printf(" 是否继续删除相同姓名的同学信息?(y/n)"); if (getch()=="y") { a=i; continue; } } printf(" 是否继续删除?(y/n)"); if (getch()=="y") deletebyname(); return; } if((i+1)<num) { printf(" 是否继续删除相同姓名的同学信息?(y/n)"); if (getch()=="y") { a=i; continue; } } } else continue; } if ((deletemark==0)&&(findmark==0)) { printf(" 没有该同学的纪录"); printf(" 是否继续删除?(y/n)"); if (getch()=="y") deletebyid(); return; return; } else if (findmark!=0) { printf(" 没有重名信息"); printf(" 没有该同学的纪录"); printf(" 是否继续删除?(y/n)"); if (getch()=="y") deletebyid(); return; return; } } void deletebyid()//按学号删除 { int i,j; int deletemark=0; char id[20]; printf(" 请输入要删除学生学号:"); scanf("%s",id); if(num==0) { printf(" 对不起,文件中无任何纪录"); printf(" 按任意键返回主菜单"); getch(); return; } for (i=0;i<num;i++) { if (strcmp(student[i].id,id)==NULL) { printf(" 以下是您要删除的学生纪录:"); printf(" 学号: %s",student[i].id); printf(" 姓名: %s",student[i].name); printf(" 电话: %s",student[i].phone); printf(" 地址: %s",student[i].adress); printf(" e-mail:%s",student[i].e_mail); printf(" 是否删除?(y/n)"); if (getch()=="y") { for (j=i;j<num-1;j++) /*纪录移动,从stud数组中删除之*/ student[j]=student[j+1]; num--; deletemark++; printf(" 删除成功"); printf(" 是否继续删除?(y/n)"); if (getch()=="y") deletebyid(); return; } else return; } continue; } if (deletemark==0) { printf(" 没有该同学的纪录"); printf(" 是否继续删除?(y/n)"); if (getch()=="y") deletebyid(); return; } } void newrecord()//添加纪录 { printf(" **************** 请输入学生信息 **************** "); printf(" 输入学号:"); scanf("%s",&student[num].id); printf(" 输入姓名:"); scanf("%s",&student[num].name); printf(" 输入电话号码:"); scanf("%s",&student[num].phone); printf(" 输入地址:"); scanf("%s",&student[num].adress); printf(" 输入邮编:"); scanf("%s",&student[num].postcode); printf(" 输入e-mail:"); scanf("%s",&student[num].e_mail); num++; printf(" 是否继续添加?(Y/N):"); if (getch()=="y") newrecord(); return; } void showall()//显示所有 { int i; system("cls"); if(num!=0) { printf(" *************** 以下为通讯录所有信息************"); for (i=0;i<num;i++) { printf(" 学号: %s",student[i].id); printf(" 姓名: %s",student[i].name); printf(" 电话: %s",student[i].phone); printf(" 地址: %s",student[i].adress); printf(" 邮编: %s",student[i].postcode); printf(" e-mail:%s",student[i].e_mail); printf(" "); if (i+1<num) { printf(" __________________________"); system("pause"); } } printf(" ************************************************"); } else printf(" 通讯录中无任何纪录"); printf(" 按任意键返回主菜单:"); getch(); return; } //按电话查询 void searchbyphone() { int mark=0; int i; int a=0; printf(" ****************** 按电话查找 ******************"); char phone[10]; printf(" 请输入学号:"); scanf("%s",phone); for(i=0;i<num;i++) { if (strcmp(student[i].phone,phone)==0) { printf(" ************** 以下是您查找的学生信息 **********"); printf(" 学号: %s",student[i].id); printf(" 姓名: %s",student[i].name); printf(" 电话: %s",student[i].phone); printf(" 地址: %s",student[i].adress); printf(" e-mail:%s",student[i].e_mail); printf(" ************************************************"); printf(" 按任意键返回主菜单:"); mark++; getch(); return; } } if (mark==0) { printf(" 没有改学生的信息"); printf(" 按任意键返回主菜单"); getch(); return; } } void searchbyname()//按姓名查询 { int mark=0; int i; int a=0; printf(" ***************** 按姓名查找 *******************"); char name[20]; printf(" 请输入姓名:"); scanf("%s",name); for(i=a;i<num;i++) { if (strcmp(student[i].name,name)==0) { printf(" ************* 以下是您查找的学生信息 ***********"); printf(" 学号: %s",student[i].id); printf(" 姓名: %s",student[i].name); printf(" 电话: %s",student[i].phone); printf(" 地址: %s",student[i].adress); printf(" e-mail:%s",student[i].e_mail); printf(" ************************************************"); mark++; if ((i+1)<num) { printf(" 是否继续查找相同名字的学生信息:(y/n)"); if (getch()=="y") { a=i; continue; } else return; } else { printf(" 按任意键返回主菜单"); getch(); return; } } } if(mark!=0) { printf(" 没有相同姓名的学生纪录"); printf(" 按任意键返回主菜单"); getch(); return; } else { printf(" 没有相同姓名的学生纪录"); printf(" 按任意键返回主菜单"); getch(); return; } } void searchbyid()//按学号查询 { int mark=0; int i; int a=0; printf(" ****************** 按学号查找 ****************** "); char id[10]; printf(" 请输入学号:"); scanf("%s",id); for(i=0;i<num;i++) { if (strcmp(student[i].id,id)==0) { printf(" ************** 以下是您查找的学生信息 **********"); printf(" 学号: %s",student[i].id); printf(" 姓名: %s",student[i].name); printf(" 电话: %s",student[i].phone); printf(" 地址: %s",student[i].adress); printf(" e-mail:%s",student[i].e_mail); printf(" ************************************************"); printf(" 按任意键返回主菜单:"); mark++; getch(); return; } } if (mark==0) { printf(" 没有改学生的信息"); printf(" 按任意键返回主菜单"); getch(); return; } } void writetofile()//写入文件 { int i; if ((fp=fopen("student.bin","wb"))==NULL) { printf(" 文件打开失败"); } for (i=0;i<num;i++) { if (fwrite(&student[i],sizeof(struct record),1,fp)!=1) { printf(" 写入文件错误! "); } } fclose(fp); printf(" 通讯录文件已保存"); printf(" 按任意键退出程序 "); exit(0); } void deleteone()//删除单个 { char choic; printf(" 1-按学号删除 2-按姓名删除"); printf(" 请选择:"); choic=getch(); switch (choic) { case "1":deletebyid();break; case "2":deletebyname();break; } } void listbyname()//按姓名排序 { int i,j; struct record tmp; for (i=1;i<num;i++) { if(strcmp(student[i].name,student[i-1].name)<0) { tmp=student[i]; j=i-1; do { student[j+1]=student[j]; j--; }while ((strcmp(tmp.name,student[j].name)<0&&j>=0)); student[j+1]=tmp; } } printf(" 排序成功,是否显示?(y/n)"); if (getch()=="y") showall(); return; } void listbyid()//按学号排序 { int i,j; struct record tmp; for (i=1;i<num;i++) { if(strcmp(student[i].id,student[i-1].id)<0) { tmp=student[i]; j=i-1; do { student[j+1]=student[j]; j--; }while ((strcmp(tmp.id,student[j].id)<0)&&j>=0); student[j+1]=tmp; } } printf(" 排序成功,是否显示?(y/n)"); if (getch()=="y") showall(); return; } void listmenu()//排序菜单 { char choic; if(num==0) { printf(" 对不起,文件中无任何纪录"); printf(" 按任意键返回主菜单"); getch(); return; } system("cls"); printf(" ******************* 排序菜单 *******************"); printf(" ********** 1-按学号排序 2-按姓名排序 **********"); printf(" ********** 3-返回主菜单 **********"); printf(" ************************************************"); printf(" 请选择:"); choic=getch(); switch(choic) { case "1":listbyid();break; case "2":listbyname();break; case "3":mainmenu();break; default:mainmenu();break; } }
2023-09-01 22:17:101

急求c语言总结 我大一的 谢谢了哦

没看明白什么意思
2023-09-01 22:17:582

c语言程序设计的内容简介

本书采用“案例引导,任务驱动”的编写方式,深入浅出地讲解了C程序设计的基本方法;通过“案例展示—归纳总结—模仿练习—自主设计”的学习模式,使读者循序渐进地掌握C语言的编程方法和思想,提高动手能力。全书案例按照“任务要求—问题分析—程序详解—归纳总结”顺序组织,注重培养读者先进行算法描述后进行编程实践的良好编程习惯,使读者逐步掌握用计算机解决实际问题的方法。全书叙述严谨,实例丰富,内容详尽、难易适中、重点突出,并将指针等较难理解的知识分解到多章讲解,降低了读者学习的难度。全书分为8章,主要内容包括C语言基础知识、算法、C程序的控制结构、数组与指针、函数、结构体与共用体、文件操作和C语言课程设计。本书适合作为高等院校计算机专业学生的教材,也可作为自学C语言程序设计的参考用书。
2023-09-01 22:18:111

求助~急于C语言课程设计制作,全部分都给您

这个很简单啊,给我发过来!
2023-09-01 22:18:304

c语言程序设计的内容简介

本书采用“案例引导,任务驱动”的编写方式,深入浅出地讲解了C程序设计的基本方法;通过“案例展示—归纳总结—模仿练习—自主设计”的学习模式,使读者循序渐进地掌握C语言的编程方法和思想,提高动手能力。全书案例按照“任务要求—问题分析—程序详解—归纳总结”顺序组织,注重培养读者先进行算法描述后进行编程实践的良好编程习惯,使读者逐步掌握用计算机解决实际问题的方法。全书叙述严谨,实例丰富,内容详尽、难易适中、重点突出,并将指针等较难理解的知识分解到多章讲解,降低了读者学习的难度。全书分为8章,主要内容包括C语言基础知识、算法、C程序的控制结构、数组与指针、函数、结构体与共用体、文件操作和C语言课程设计。本书适合作为高等院校计算机专业学生的教材,也可作为自学C语言程序设计的参考用书。
2023-09-01 22:18:411

C语言课程设计 设计思路

首先加载本地文件保存的信息,创建链表,并统计个数,然后根据选择的操作执行相应的方法
2023-09-01 22:19:221

学生学籍信息管理系统C语言的报告总结

得利用结构体好像是吧
2023-09-01 22:19:596

C语言关键词学习总结?

C语言关键词学习总结一、static关键字1、局部变量生命周期:原先存在栈中,生命周期语句执行完毕便结束了。现在存放到静态数据区,生命周期持续到整个程序执行结束。作用域:并没有改变作用域,还是仅限于该语句块。并且只在初次运行的时候进行初始化,下次调用时它的值是上一次函数调用结束之后的值。每次调用后值会被保存。2、全局变量对干一个全部变量,既可以在本源文件中被访问到,也可以在同一个工程的其它源文件中被访问(只需用extern进行声明即可)。如果加上static,限制该全局变量的作用域范围,由原来的整个工程可见变为本源文件可见。二、const关键字1、用const修饰一般变量用const修饰的变量必须在声明时进行初始化(用来修饰函数的形参除外)。2、const与指针搭配使用用const修饰的变量必须在声明时进行初始化(用来修饰函数的形参除外)。两个基础概念: 指针常量和常量指针。指针常量:即指针本身的值是不可改变的,而指针指向的变量的值是可以改变的;常量指针:即指针指向的变量的值是不可改变的,而指针本身的值是可以改变的。三、register关键字用法register: 这个关键字请求编译器尽可能的将变量存在CPU 内部寄存器中而不是通过内存寻址访问以提高效率。注意是尽可能,不是绝对。寄存器其实就是一块一块小的存储空间,只不过其存取速度要比内存快得多。数据从内存里拿出来先放到寄存器,然后CPU 再从寄存器里读取数据来处理,处理完后同样把数据通过寄存器存放到内存里,CPU 不直接和内存打交道。四、auto关键字用于声明变量的生存期为自动,所有的变量默认就是auto的。五、inline内联函数调用函数时需要一定的时间和空间的开销。C++提供一种提高效率的方法,即在编译时将函数调用处用函数体替换,类似于C语言中的宏展开。这种在函数调用处直接嵌入函数体的函数称为内联函数(inlinefunction),又称内嵌函数或内置函数。优点:内联函数可以有效避免函数调用的开销,程序执行效率更高。缺点:如果被声明为内联函数的函数体非常大,则编译器编译后程序的可执行码将会变得很大。
2023-09-01 22:20:271

数据结构c语言版的 课程设计

我也有同样的问题
2023-09-01 22:21:243

C语言课程设计 设计思路

首先假设最高成绩在第一个节点上,所以初始化指针指向第一个节点,然后遍历数组,如果遍历到的当前节点的对应成绩比指针指向的成绩高,那么就调整指针指向当前节点。最后遍历完整个列表后,即可得到所需要的结果,因为指针已经分别指向了各个最高成绩的节点出,输出即可。
2023-09-01 22:21:371

c语言课程设计?

之前写过的,你可以拿去参考#include<stdio.h>#include<string.h>#include<stdlib.h>typedef struct guest{int number;char name[10];int sum;char time[5];struct guest *next;}GuestLink,*Pointer;GuestLink stu[10];int i,j,k;void Insert(Pointer *Head);void Search(Pointer Head);void Update(Pointer Head);void Delete(Pointer *Head);void Show(Pointer Head);void Sort(Pointer Head);void Save(Pointer Head);void Put(Pointer Head);int main(){Pointer Head=NULL;int i;do{printf("");printf("1---增加订餐客户信息");printf("2---查询订餐客户信息");printf("3---修改订餐客户信息");printf("4---删除订餐客户信息");printf("5---浏览客户订餐信息");printf("6---按照用餐时间升序排序");printf("7---保存订餐信息到数据文件");printf("8---查看数据文件中的订餐信息");printf("9---退出");printf("");printf("请选择1--9:");scanf("%d",&i);switch(i){case 1:Insert(&Head);break;case 2:Search(Head);break;case 3:Update(Head);break;case 4:Delete(&Head);break;case 5:Show(Head);break;case 6:Sort(Head);break;case 7:Save(Head);break;case 8:Put(Head);break;case 9:break;default:printf("选择错误!请重新选择!");break;}}while(i!=9);return 0;}void Insert(Pointer *Head){int in_number;Pointer p,q,r;printf("请输入编号:");scanf("%d",&in_number);p=q=*Head;while(p!=NULL){if(p->number==in_number){printf("已经有相同编号:");return;}else{q=p;p=p->next;}}r=(Pointer)malloc(sizeof(GuestLink));//没有*号r->next=NULL;if(r==NULL){printf("分配空间失败");return;}if(q==NULL)//如果是空表,判断空表用q!!!!*Head=r;else{q->next=r;}r->number=in_number;printf("请输入姓名:");scanf("%s",r->name);printf("请输入人数:");scanf("%d",&r->sum);printf("请输入时间:");scanf("%s",r->time);}/*void Insert(Pointer *Head){int in_number;Pointer p,q,r;p=q=*Head;printf("请输入号码:");scanf("%d",&in_number);while(p!=NULL){if(in_number==p->number){printf("已存在号码!");}else{q=p;p=p->next;}}r=(Pointer)malloc(sizeof GuestLink);r->next=NULL;if(q==NULL)*Head=r;elseq->next=r;printf("请输入姓名:");scanf("%s",r->name);printf("请输入人数");scanf("%f",&r->sum);printf("请输入时间");scanf("%s",r->time);}*/void Search(Pointer Head){int flag=1;int number;Pointer p;printf("请输入要查询的编号:");scanf("%d",&number);p=Head;while(p!=NULL&&flag){if(p->number==number){ printf("编号 姓名 人数 时间");printf("%s ",p->name);printf("%d ",p->sum);printf("%s ",p->time);flag=0;}elsep=p->next;}if(flag)printf("没有查询到!");}/*void Search(Pointer Head){int flag=0;int number;Pointer p;p=Head;printf("请输入您要查找的编号:");scanf("%f",&number);while(p!=NULL&&flag){if(p->number==number){printf("已查询到您要的编号");flag=0;}else{p=p->next;}}if(flag==1){printf("姓名:%s",p->name);printf("编号:%f",p->number);printf("人数:%f",p->sum);printf("时间:%s",p->time);}else{printf("没有查询到您要查询的编号!");}}*/void Update(Pointer Head){int flag=1;int number;Pointer p;printf("请输入要修改的编号:");scanf("%d",&number);p=Head;while(p!=NULL&&flag){if(p->number==number){printf("请输入人数:");scanf("%d",&p->sum);printf("请输入用餐时间:");scanf("%s",p->time);flag=0;}elsep=p->next;}if(flag)printf("没有找到要修改的记录!");}//update与查询过程相似!!!void Delete(Pointer *Head){int flag=1;int number;Pointer p,q;printf("请输入要删除的数据编号:");scanf("%d",&number);p=q=*Head;while(p!=NULL&&flag){if(p->number==number){if(p==*Head){*Head=p->next;free(p);//删除结点后要及时释放内存!!!}else{q->next=p->next;free(p);}flag=0;}else{q=p;p=p->next;}}if(flag)printf("没有找到可以删除的数据!!");}/*void Delete(Pointer *Head){Pointer p,q;p=q=*Head;int number;int flag=1;printf("请输入您要删除的结点:");scanf("%d",&number);while(p!=NULL){if(p->number==number){ if(p==*Head){*Head=p->next;free(p);}else{q->next=p->next;free(p);}flag=0;}else{q=p;p=p->next;}}if(flag){printf("没有找到要删除的数据!");}}*/void Show(Pointer Head){Pointer p;p=Head;printf("编号 姓名 人数 用餐时间");while(p!=NULL){printf("%d ",p->number);printf("%s ",p->name);printf("%d ",p->sum);printf("%s ",p->time);p=p->next;}}void Sort(Pointer Head){//三个for循环,第一个赋给结构数组 第二个排序,第三个输出Pointer p;p=Head;int count=0;GuestLink temp;for(i=0;p!=NULL;i++){strcpy(stu[i].name,p->name);stu[i].number=p->number;stu[i].sum=p->sum;strcpy(stu[i].time,p->time);count++;p=p->next;}for(i=0;i<count-1;i++){k=i;for(j=i+1;j<count;j++)if(strcmp(stu[j].time,stu[k].time)<0)k=j;if(k!=i){temp=stu[i];stu[i]=stu[k];stu[k]=temp;}//一个字都不能改!!!!//{temp=stu[k];stu[k]=stu[i];stu[i]=temp;}}printf("编号 姓名 人数 用餐时间");for(i=0;i<count;i++){printf("%d ",stu[i].number);printf("%s ",stu[i].name);printf("%d ",stu[i].sum);printf("%s ",stu[i].time);}}/*Head=p=stu;while(p!=NULL){printf("姓名:%-10s",p->name);printf("人数:%-10d",p->sum);printf("用餐时间:%-10s",p->time);printf("编号:%-10d",p->number);p=p->next;}*//*void Sort(Pointer Head){Pointer p;p=Head;GuestLink temp;count=0;while(p!=NULL){p=p->next;count++;}p=Head;while(p!=NULL){for(i=0;i<count;i++){stu[i].number=p->number;strcpy(stu[i].name,p->name);stu[i].sum=p->sum;strcpy(stu[i].time,p->time);}p=p->next;}for(i=0;i<count-1;i++){k=i;for(j=0;j<count;j++){if(strcmp(stu[j].time,stu[k].time)<0)k=j;if(k!=i){temp=stu[k];stu[k]=stu[i];temp=stu[i];}}}}*/void Save(Pointer Head){Pointer p;FILE *fp;p=Head;for(i=0;p!=NULL;i++){strcpy(p->name,stu[i].name);p->number=stu[i].number;p->sum=stu[i].sum;strcpy(p->time,stu[i].time);p=p->next;}if((fp=fopen("stud","w"))==NULL){printf("can"t open !");}p=Head;while(p!=NULL){if(fwrite(p,sizeof(GuestLink),1,fp)!=1)printf("can"t write!");p=p->next;}fclose(fp);}/*void Save(Pointer Head){FILE *fp;Pointer p;p=Head;for(i=0;p!=NULL;i++){stu[i].number=p->number;strcpy(stu[i].name,p->name);stu[i].sum=p->sum;strcpy(stu[i].time,p->time);p=p->next;}p=Head;if((fp=fopen("stud","w"))==NULL){printf("cam"t open the file");}for(i=0;i<count;i++)if(fwrite(p,sizeof(GuestLink),1,fp)!=1){printf("cant write");}fclose(fp);}*/void Put(Pointer Head){FILE *fp;Pointer p;p=Head;if((fp=fopen("stud","r"))==NULL){printf("can"t open the File");}printf("编号 姓名 人数 用餐时间");while(p!=NULL){if(fread(p,sizeof(GuestLink),1,fp)!=1){printf("can"t read!");}printf("%d ",p->number);printf("%s ",p->name);printf("%d ",p->sum);printf("%s ",p->time);p=p->next;}fclose(fp);}采纳哦~
2023-09-01 22:21:491

c语言课程设计

刚为别人做了一个,和你这个很像,不过用的是单项链表方式而不是array.自己修改下满足你的要求吧#include <stdio.h>#include <string.h>#include <stddef.h>struct StudentCard { int index; //学生号 char name[80]; //姓名 int age; //年龄 char sex[80]; //性别 int classroom; //班级 char school[80]; //学校 char birthday[80]; //出生年月 struct StudentCard *next; //到下一个学生卡,链表};typedef struct StudentCard ELEMENT; //自定义符号typedef ELEMENT *LINK;LINK add(LINK head){ //加入一个新的学生信息,该函数将返回一个struct的指针 int index,age,classroom; char name[80],sex[80],school[80],birthday[80]; printf("Please input index number: "); scanf("%d",&index); printf("Please input name: "); scanf("%s",name); printf("Please input age: "); scanf("%d",&age); printf("Please input sex(nan or nv): "); scanf("%s",sex); printf("Please input classroom: "); scanf("%d",&classroom); printf("Please input school: "); scanf("%s",school); printf("Please input birthday :"); scanf("%s",birthday); if (!head){ //如果是头链表为空的情况,也就是输入第一个学生卡 head=malloc(sizeof(ELEMENT)); head->index=index; head->age=age; head->classroom=classroom; strcpy(head->name,name); strcpy(head->sex,sex); strcpy(head->school,school); strcpy(head->birthday,birthday); head->next=NULL; //下一个元素为NULL,空 printf("Successful! "); return head; //返回头链 } else{ LINK tail=head;//用一个哨兵指针指向头元素 while ((tail)&&(tail->index!=index)) //在tail为NULL并且tail的index不与用户输入的index相等之前,tail一直跳到下一个元素 tail=tail->next; if (tail) //如果存在这个tail printf("index has already existed! Failed! "); else{ tail=head;//再次初始化 while (tail->next) //当哨兵的下一个元素存在时,哨兵跳到哨兵下一个元素 tail=tail->next; //当上面这个循环结束后,此时tail的下一个元素必定为NULL tail->next=malloc(sizeof(ELEMENT));//创建新的元素 tail=tail->next; //跳转到下一个新创建的元素 tail->index=index; tail->age=age; tail->classroom=classroom; strcpy(tail->name,name); strcpy(tail->sex,sex); strcpy(tail->school,school); strcpy(tail->birthday,birthday); tail->next=NULL; printf("Successful! "); return head; } }}void Print_ALL(LINK head){//该函数输出所有学生信息 LINK tail=head; if (!head) //如果头元素为NULL,就是链表无一个元素 printf("Empty List! "); else{ printf("Indx Name Age Sex Class School Birth "); while (tail){//知道哨兵为NULL之前,一直输出哨兵的内容 printf("%d %s ",tail->index,tail->name); printf("%d %s %d ",tail->age,tail->sex,tail->classroom); printf("%s %s ",tail->school,tail->birthday); tail=tail->next; } }};void Print_DEPEND_INDEX(LINK head){ //该函数输出指定的学生号的学生信息 int tem; LINK tail=head; printf("Please input the index number of student: "); scanf("%d",&tem); if (!head) printf("Empty List! "); else{ while ((tail)&&(tail->index!=tem)) tail=tail->next; if (!tail) printf("student not existed! "); else{ printf("Indx Name Age Sex Class School Birth "); printf("%d %s ",tail->index,tail->name); printf("%d %s %d ",tail->age,tail->sex,tail->classroom); printf("%s %s ",tail->school,tail->birthday); } }}void Print_DEPEND_CLASS(LINK head){ //该函数输出指定的班级的学生信息 int tem; LINK tail=head; printf("Please input classroom: "); scanf("%d",&tem); if (!head) printf("Empty List! "); else{ while ((tail)&&(tail->classroom!=tem)) tail=tail->next; if (!tail) printf("No such classroom! "); else{ printf("Indx Name Age Sex Class School Birth "); while (tail){ if (tail->classroom==tem){ printf("%d %s ",tail->index,tail->name); printf("%d %s %d ",tail->age,tail->sex,tail->classroom); printf("%s %s ",tail->school,tail->birthday); } tail=tail->next; } } } }void Print_DEPEND_SEX(LINK head){ //该函数输出男或女同学信息 char tem[80]; printf("please input sex(nan or nv): "); scanf("%s",tem); if (!head) printf("Empty List! "); else{ LINK tail=head; while ((tail)&&(strcmp(tem,tail->sex)!=0)) //当不相等或者tail有效时,tail跳到下一个元素 tail=tail->next; if (!tail) printf("No %s student! ",tem); else{ tail=head; printf("Indx Name Age Sex Class School Birth "); while (tail){ if (strcmp(tem,tail->sex)==0){ printf("%d %s ",tail->index,tail->name); printf("%d %s %d ",tail->age,tail->sex,tail->classroom); printf("%s %s ",tail->school,tail->birthday); } tail=tail->next; } } }}LINK Edit(LINK head){ //该函数用来修改信息 int tem; LINK tail=head; printf("Please input index of student: "); scanf("%d",&tem); if (!head){ printf("Empty List! "); return NULL; } else{ while ((tail)&&(tail->index!=tem)) tail=tail->next; if (!tail){ printf("No such student! "); return head; } else{ printf("Please input name: "); scanf("%s",tail->name); printf("Please input age: "); scanf("%d",&tail->age); printf("Please input sex(nan or nv): "); scanf("%s",tail->sex); printf("Please input classroom: "); scanf("%d",&tail->classroom); printf("Please input school: "); scanf("%s",tail->school); printf("Please input birthday :"); scanf("%s",tail->birthday); printf("Edit successful! "); return head; } }}LINK DELETE(LINK head){ //该函数用来删除学生信息 int tem; LINK tail=head; printf("Please input index of student: "); scanf("%d",&tem); if (!head){ printf("Empty List! "); return NULL; } else if ((head->index==tem)&&(!head->next)){//当头元素满足并且链表只有一个元素 printf("Deleted! "); return NULL; } else if ((head->index==tem)&&(head->next)){//当头元素满足并且链表有许多元素 printf("Deleted! "); return head->next; } else{ //当满足条件的元素在链表中间或者结尾 while ((tail)&&(tail->index!=tem)) tail=tail->next; if (!tail){ printf("No such student! "); return head; } else{ if (!tail->next){//当满足条件的元素在链表结尾 LINK tail2=head;//新的哨兵 while (tail2->next!=tail) tail2=tail2->next; tail2->next=NULL; //直接指向为NULL,表示链表尾,跳过tail printf("Deleted! "); return head; } else{ //当满足条件的元素在链表中间 LINK tail2=head;//新的哨兵 while (tail2->next!=tail) tail2=tail2->next; tail2->next=tail->next; //跳过tail这个元素 printf("Deleted! "); return head; } } }}void Display_MENU(){ printf(" *********studentcard management system********* "); printf(" 1.Input student"s informations (add a student) "); printf(" 2.Print all students" informations "); printf(" 3.Input index number,print selected student"s information "); printf(" 4.Input classroom number,print informations of those students "); printf(" 5.Input index number, modify information "); printf(" 6.Input index number, remove information "); printf(" 7.Print nan or nv informations "); printf(" 8.Display Menu "); printf(" 9.Exit "); printf(" *********************************************** ");}int main(){ LINK head=NULL; //链表头的初始化 int asker; Display_MENU(); while(1){ printf(">>"); scanf("%d",&asker); if (asker==1)//加入新学生信息 head=add(head); else if (asker==2)//输出所有学生信息 Print_ALL(head); else if (asker==3) //输入学生号,输出学生信息 Print_DEPEND_INDEX(head); else if (asker==4) //输入班级,输出学生信息 Print_DEPEND_CLASS(head); else if (asker==5) //输入学生号,修改学生信息 head=Edit(head); else if (asker==6) //输入学生号,删除学生信息 DELETE(head); else if (asker==7) //输入男或女,输出学生信息 Print_DEPEND_SEX(head); else if (asker==8) //显示菜单 Display_MENU(); else if (asker==9) //退出程序,也就是退出while(1)循环 break; else printf("please select correct number! "); } printf("system log-out! "); return 0;}
2023-09-01 22:22:241

《C语言》课程设计

我是大一的,我们怎么没听说有课程设计
2023-09-01 22:22:333

学期结束C语言课程设计

#include<time.h> #include<stdio.h> #include<conio.h> #include <stdlib.h>#define MAX 50void input(); void sort();void display();void insert();void del();void average();int now_no=0;struct student{int no;char name[20];char sex[4];float score1;float score2;float score3;float sort;float ave;float sum;};struct student stu[MAX],*p;main()//主函数{char as;start: printf(" 欢迎使用学生成绩管理系统 ");//一下为功能选择模块do{printf(" 1.录入学员信息 2.显示学员信息 3.成绩排序信息 4.添加学员信息 5.删除学员信息 6.退出 ");printf(" 选择功能选项:");as=getch();switch(as){case "1":system("cls");input();break;case "2":system("cls"); display();break;case "3":system("cls"); sort();break;case "4":system("cls"); insert();break;case "5":system("cls"); del();break;case "6":system("exit");exit(0);default:system("cls");goto start; }}while(1);//至此功能选择结束}void input()//原始数据录入模块{int i=0;char ch;do{printf(" 1.录入学员信息 输入第%d个学员的信息 ",i+1);printf(" 输入学生编号:");scanf("%d",&stu[i].no);fflush(stdin);printf(" 输入学员姓名:");fflush(stdin);gets(stu[i].name);printf(" 输入学员性别:");fflush(stdin);gets(stu[i].sex);printf(" 输入学员成绩:");fflush(stdin);scanf("%f",&stu[i].score1);printf(" 输入学员成绩:");fflush(stdin);scanf("%f",&stu[i].score2);printf(" 输入学员成绩:");fflush(stdin);scanf("%f",&stu[i].score3);printf(" ");i++;now_no=i;printf("%d",now_no);printf("是否继续输入?(Y/N)");ch=getch();system("cls");}while(ch!="n");system("cls");}void sort()//排序数据函数{struct student temp;int i,j;for(i=1;i<now_no;i++){for(j=1;j<=now_no-i;j++){if(stu[j-1].ave<stu[j].ave){temp=stu[j];stu[j]=stu[j-1];stu[j-1]=temp;}}}}void display()//显示数据函数{int i;char as;float ave;do{printf(" 班级学员信息列表 ");printf(" 编号 姓名 性别 成绩 成绩 成绩 平均值 ");for(i=0;i<now_no;i++){stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum/3;printf(" %d %s %s %.2f %.2f %.2f %.2f ",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);}printf(" 按任意键返回主菜单.");as=getch();goto exit;}while(as!="n");exit: system("cls"); }void insert()//插入数据函数{char ch;do{printf(" 输入新插入学员队信息 ");printf(" 输入学生编号:");scanf("%d",&stu[now_no].no);fflush(stdin);printf(" 输入学员姓名:");fflush(stdin);gets(stu[now_no].name);printf(" 输入学员性别:");fflush(stdin);gets(stu[now_no].sex);printf(" 输入学员成绩:");fflush(stdin);scanf("%f",&stu[now_no].score1);printf(" 输入学员成绩:");fflush(stdin);scanf("%f",&stu[now_no].score2);printf(" 输入学员成绩:");fflush(stdin);scanf("%f",&stu[now_no].score3);printf(" ");now_no=now_no+1;sort();printf("是否继续输入?(Y/N)");ch=getch();system("cls");}while(ch!="n");}void del()//删除数据函数{int inum,i,j;printf("输入要删除学员的编号:");fflush(stdin);scanf("%d",&inum);for(i=0;i<now_no;i++){if(stu[i].no==inum){for(j=i;j<now_no;j++){stu[i]=stu[i+1];}now_no=now_no-1;}break;}system("cls");}
2023-09-01 22:22:441

C语言课程设计

(C语言)职工信息管理 有任何问题可以到这里留言: http://moonrosa.googlepages.com/liuyan.htm 【要求】 职工信息包括职工号,姓名,性别,年龄,学历,工资,住址,电话等(职工号不相等)。试设计一职工信息管理系统,使之能够提供下列功能: (1)系统以菜单方式工作 (2)职工信息录入功能(职工信息用文件保存) (3)职工信息浏览功能 (4)职工信息查询功能,查询方式: 1)按学历查询 2)按职工号查询 (5)职工信息删除,修改功能(可选项)。 #include<string.h> void menu() { int n,w1; do { printf(" ************************************************ "); printf(" ************************************************ "); printf(" *** choose function ************ "); printf(" *** 1 Enter new data ************ "); printf(" *** 2 Modify data ************ "); printf(" *** 3 Search by people.xueli and num***** "); printf(" *** 4 Browse data ************ "); printf(" *** 5 add data ************ "); printf(" *** 6 Exit ************ "); printf(" ************************************************ "); printf(" ************************************************ "); printf("Choose your number(1-6):[ ]"); scanf("%d",&n); if(n<1||n>6) w1=1; else w1=0; } while(w1==1); switch(n) { case 1:enter();break; case 2:modify();break; case 3:search();break; case 4:browse();break; case 5:add();break; case 6:exit(0); } } main() { system("cls"); menu(); } #define N 100 struct people { char num[100]; char name[15]; char sex[20]; char age[20]; char xueli[20]; char gongzhi[20]; char address[20]; char telephone[20]; }people[N]; # include <stdio.h> enter() { int i,n; printf("How many people(0-%d)?:",N-1); scanf("%d",&n); printf(" Enter data now "); for(i=0;i<n;i++) { printf(" Input %dth people record. ",i+1); input(i); } if(i!=0)save(n); printf_back(); } browse() { int i,j,n; n=load(); printf_face(); for(i=0;i<n;i++) { if((i!=0)&&(i%10==0)) { printf(" Pass any key to continue ...."); getch(); puts(" "); } printf_one(i) ; } printf(" There are %d record. ",n); printf(" Pass any key to back ..."); getch(); menu(); } add() { int i,n,m,k; FILE*fp; n=load(); printf("How many people are you want to add(0-%d)?:",N-1-n); scanf("%d",&m); k=m+n; for(i=n;i<k;i++) { printf(" Input %dth people record. ",i-n+1 ); input(i); } if((fp=fopen("Pro.txt","ab"))==NULL) { printf("cannot open file "); } for(i=n;i<k;i++) if(fwrite(&people[i],sizeof(struct people),1,fp)!=1) printf("file write error "); fclose(fp); printf_back(); } search() { int i,n,k,w1=1,w2,w3,w4,m,a; struct people p; n=load(); do { printf(" Which way do you want to choose? 1).By xueli 2).By num [ ]"); scanf("%d",&m); switch(m) { case 1: do { k=-1; printf(" Enter xeuli that you want to search! xueli."); scanf("%s",p.xueli); printf_face(); for(i=0;i<n;i++) if(strcmp(p.xueli,people[i].xueli)==0) { k=i; printf_one(k);break; } if(k==-1) { printf(" NO exist!please"); printf(" Are you again? 1).again 2).NO and back [ ]"); scanf("%d",&w1); if(w1==2) printf_back(); } } while(k==-1&&w1==1);break; case 2: do {k=-1; printf(" Enter num that you want to search! num."); scanf("%s",p.num); printf_face(); for(i=0;i<n;i++) if(strcmp(p.num,people[i].num)==0) {k=i; printf_one(k);break; } if(k==-1) {printf(" NO exist!please"); printf(" Are you again? 1).again 2).NO and back [ ]"); scanf("%d",&w1); if(w1==2) printf_back(); } } while(k==-1&&w1==1);break; } w4=0;w3=0; if(k!=-1) {printf(" What do you want to do? 1).Search 2).Modify 3).Delete 4).Back menu [ ]"); scanf("%d",&w2); switch(w2) {case 2:w3=modify_data(k,n);break; case 3:{printf(" Are you sure? 1).Sure 2).No and back [ ]"); scanf("%d",&w4); if(w4==1) for(a=k;a<n;a++) {strcpy(people[a].num,people[a+1].num); strcpy(people[a].name,people[a+1].name); strcpy(people[a].sex,people[a+1].sex); strcpy(people[a].age,people[a+1].age); strcpy(people[a].xueli,people[a+1].xueli); strcpy(people[a].gongzhi,people[a+1].gongzhi); strcpy(people[a].address,people[a+1].address); strcpy(people[a].telephone,people[a+1].telephone); } break; } } if(w3==1||w4==1) {save(n); printf(" Successful.^_^."); printf(" Whant do you want to do? 1).Search another 2).Back [ ]" ); scanf("%d",&w2); } } } while(w2==1); menu(); } modify() {struct people p; FILE *fp; int i,n,k,w0=1,w1,w2=0; n=load(); do { k=-1; printf_face(); for(i=0;i<n;i++) {if((i!=0)&&(i%10==0)) {printf(" Remember NO.which needed modify.pass any key to contiune ..."); getch(); puts(" "); } printf_one(i); } do {printf(" Enter NO.that you want to modify! NO.:"); scanf("%s",p.num); for(i=0;i<n;i++) if(strcmp(p.num,people[i].num)==0) {k=i; p=people[i]; } if(k==-1)printf(" NO exist!please again"); }while(k==-1); printf_face(); printf_one(k); w1=modify_data(k,n); if(w1==1) {printf(" Successful ^_^. Are you modify another ? 1).Yes 2).Back with save [ ]"); scanf("%d",&w0); w2=1; } else {w0=0; if(w2==1) people[k]=p; } if(w0!=1&&w2==1) save(n); }while(w0==1); menu(); } save(int n) {FILE *fp; int i; if((fp=fopen("Pro.txt","wb"))==NULL) {printf(" Cannot open file "); return NULL; } for(i=0;i<n;i++) if(people[i].num!=0) if(fwrite(&people[i],sizeof(struct people),1,fp)!=1) printf("file write error "); fclose(fp); } load() {FILE *fp; int i; if((fp=fopen("Pro.txt","rb"))==NULL) {printf(" Cannot open file "); return NULL; } for(i=0;!feof(fp);i++) fread(&people[i],sizeof(struct people),1,fp); fclose(fp); return(i-1); } input(int i) { no_input(i,i); printf("num:"); scanf("%s",people[i].num); printf("name:"); scanf("%s", people[i].name) ; printf("sex:"); scanf("%s",people[i].sex); printf("age:"); scanf("%s",people[i].age); printf("xueli:"); scanf("%s",people[i].xueli); printf("gongzhi:"); scanf("%s",people[i].gongzhi); printf("address:"); scanf("%s",people[i].address); printf("telephone:"); scanf("%s",people[i].telephone); } modify_data(int i) {int c,w1; do {puts(" modify by=> 1).num 2).name 3).sex 4).ages 5).xueli 6)gongzhi 7)address 8)telephone "); printf("Which you needed?:[ ]"); scanf("%d",&c); if(c>8||c<1) {puts(" Choice error!Please again!"); getchar(); } }while(c>8||c<1); do {switch(c) { case 1:printf("num:");scanf("%s",people[i].num);break; case 2:printf("name:");scanf("%s",people[i].name);break; case 3:printf("sex:");scanf("%s",people[i].sex);break; case 4:printf("age:");scanf("%s",people[i].age);break; case 5:printf("xueli:");scanf("%s",people[i].xueli);break; case 6:printf("gongzhi:");scanf("%s",people[i].gongzhi);break; case 7:printf("address:");scanf("%s",people[i].address);break; case 8:printf("telephone:");scanf("%s",people[i].telephone);break; } puts(" Now: "); printf_face(); printf_one(i); printf(" Are you sure? 1).Sure 2).No and remodify 3).Back without save in this time [ ]"); scanf("%d",&w1); } while(w1==2); return(w1); } no_input(int i,int n) {int j,k,w1; do {w1=0; for(j=0;people[i].num[j]!="";j++) if(people[i].num[j]>"9") {puts("Input error!Only be made up of(0-9).Please reinput! "); w1=1;break; } if(w1!=1) for(k=0;k<n;k++) if(k!=i&&strcmp(people[k].num,people[i].num)==0) {puts("This record is exist.please reinput! "); } } while(w1==1); } printf_face() { printf(" num name sex ages xueli gongzhi address telephone "); } printf_one(int i) { int j; printf("%7s%7s%7s%7s%7s%7s%10s%12s ",people[i].num,people[i].name,people[i].sex,people[i].age,people [i].xueli,people[i].gongzhi,people[i].address,people[i].telephone); } printf_back() { int j,w; printf(" Successful.^_^ "); printf("What do you want you to do? 1).Browse all now 2).Back: [ ]"); scanf("%d",&w); if(w==1) browse(); else menu(); } 参考资料:http://moonrosa.googlepages.com/cyuyan_zgglxt
2023-09-01 22:23:201

《C语言程序设计》课程设计

好多人在要求做课程设计啊,有分赚啊,
2023-09-01 22:23:436

C语言数据结构课程设计

还不错
2023-09-01 22:24:092

C语言的课程设计

这个就行#include<stdio.h>int main(){ int a[100][100]; int num=1;//起始数字 int i,j; int n=0;//矩阵行列数 printf("起始数字num="); scanf("%d",&num); printf("请输入行列数n="); scanf("%d",&n); for(i=0; i<n; i++) { int p; a[i][i]=num+i*(i+1); p=a[i][i]; for(j=i-1; j>=0; j--)//行排列 { p+=1; a[i][j]=p; } p=a[i][i]; for(j=i-1; j>=0; j--)//列排列 { p-=1; a[j][i]=p; } } for(i=0; i<n; i++) { for(j=0; j<n; j++) { printf("%5d ",a[i][j]); } printf(" "); }}满意请采纳。
2023-09-01 22:24:181

C语言课程设计题目

例:学生管理系统设计 设计内容: 详见视频,要求数据结构用链表,数据存储使用文件。 计算每个老师在一个学期中所教课程的总工作量。(教师单个教学任务的信息为:教师号、姓名、性别、职称、认教课程、班级、班级数目、理论课时、实验课时、单个教学任务总课时) A、教师信息处理 (1) 输入教师授课教学信息,包括教师号、姓名、性别、职称、认教课程、班级、班级数目、理论课时、实验课时。 (2) 插入(修改)教师授课教学信息: (3) 删除教师授课教学信息: (4) 浏览教师授课教学信息: B、教师工作量数据处理: (1) 计算单个教学任务总课时。计算原则如下表: (2) 计算一个教师一个学期总的教学工作量。总的教学工作量=所有单个教学任务总课时之和。 (3)教师数据查询:   提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。 C、教师综合信息输出   提示:输出教师信息到屏幕。 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 该系统是一个进行选择题测试的考试系统,具有测试、练习功能,具有系统设置功能,具有查分和帮助功能。 一、功能要求: 1、用文件保存试题库。(每个试题包括题干、4个备选答案、标准答案) 2、试题录入:可随时增加试题到试题库中 3、试题抽取:每次从试题库中可以随机抽出N道题及每题的得分K(N、K由键盘输入)。 4、可以设置考试时间。 5、用户可以选择“考试”和“练习”两种方式。 5、答题:用户可实现输入自己的答案,“考试”时系统不能显示答案。“练习”时每一题都可以通过查看“按钮”显示标准答案。可以用“上一题”、“下一题”翻页。选择“交卷”按钮则显示得分; 6、自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。 7、考试开始系统显示倒计时。时间为零自动交卷。 二、其它要求: 1、源程序要有适当的注释,使程序容易阅读 2、至少采用文本菜单界面(如果能采用图形菜单界面更好) 3、学生可自动增加新功能模块(视情况可另外加分) 4、写出课程设计报告,具体要求见相关说明文档 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 设计内容: 设计一个简单的英语字典,输入英语单词,显示中文含义,设计要求: 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 设计内容: 设计一个学生通信录,学生通迅录数据信息构成内容可自行设计(如:姓名、家庭地址、邮政编码、电话号码等等)。该学生通信录电话簿管理程序具有加入、删除、显示和查询等功能。 设计要求: 1、 能建立、修改和增删学生通讯录 2、 具有群组工能,可以增加群组和记录。 3、 删除可以删除一条、一个群组、全部记录。 4、 查询包含模糊查询。 5、 显示可以以页面和列表方式显示。 6、 有自动排序的功能。 7、 要求:界面友好,易于操作,采用文件存储数据。 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 [设计内容] 实现一个完整的小型音像店对录像带进行管理的系统。 [设计要求] 系统要求具有以下功能: (1) 管理音像店中的所有录像带,包括新录像带入库、录像带出租、录像带的返还、所有录像带清单的显示、根据指定条件进行查找删除录像带等各种基本操作。 (2) 客户数据维护,可以将客户分为不同等级,可以根据指定客户显示其所借录像带详细信息。 (3) 租金管理,根据所借日期自动计算所需交纳的租金。 (4) 系统要求界面美观,菜单设计合理,操作方便。 [实验提示] 音像店有两个主要的组成部分:录像带和客户。可以构造3个链表存储以下数据: (1) 商店中所有录像带的链表; (2) 商店所有客户的链表; (3) 当前已出租的录像带链表; 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 [设计内容] 航空客运订票的业务活动包括:查询航线、客票预定和办理退票等。设计一个航空订票系统实现上述功能。 [设计要求] (1) 将每条航线的有关信息存入计算机,如:终点站名、航班号、飞机号、飞行周日(星期几)、时间、乘员定额、余票量、票价,已定票客户名单和等候替补客户名单(包括姓名,所需票数); (2) 查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞、最近一天航班的日期和余票量。 (3) 订票:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续;若已满员或余票额少于订票额,则需重新询问客户要求。若需要,可登记排队候补; (4) 退票:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他候补客户。 发挥想像,增加新的功能,完善系统。 系统要求界面美观,菜单设计合理,操作方便。 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 [设计内容] 某旅馆有n个等级的房间,第I等级有 个房间,每个等级的房间有 个床位(1≤i≤n)。试模拟旅馆管理系统中床位分配和回收的功能,设计能为单个旅客分配床位,在其离店便回收床位(供下次分配)的算法。 [设计要求] (1) 旅客登记,即为旅客分配床位。输入旅客姓名、年龄、性别、到达日期和所需房间等级。分配成功时打印旅客姓名、年龄、到达日期、房间等级、房间号码和床位号码。分配不成功时,如所有等级均无床位,则打印“客满”信息;如旅客需要的等级均无空床位,则打印“是否愿意更换等级?”的询问信息。若旅客愿意更换,则重新输入有关信息,再进行分配,否则分配工作结束。 (2) 旅客离开时,即进行床位回收。输入房间等级、房间号和床位号。 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 设计内容: 职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。 设计要求: 1、系统以菜单方式工作 2、职工信息录入功能(职工信息用文件保存)--输入 3、职工信息浏览功能--输出 4、职工信息查询功能--算法 查询方式 按学历查询等 按职工号查询等 5、职工信息删除、修改功能(可选项) 6、按工号排序 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 设计内容: 图书信息包括:书号、书名、作者名、分类号、出版社、出版时间、价格等。 设计功能: 1、系统以菜单方式工作 2、图书信息录入功能(图书信息用文件保存)--输入 3、图书信息的编辑功能(插入、删除、修改) 4、图书信息浏览功能(按书号、书名、出版时间、价格等排序输出)。 5、图书信息查询功能(按书号、书名、作者名、出版社查询,提供模糊查询的功能) 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 设计内容: 实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。 设计功能: 1、能够完成对设备的录入和修改 2、对设备进行分类统计 3、设备的破损耗费和遗损处理 4、设备的查询 要求:采用文件方式存储数据,系统以菜单方式工作 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 设计内容: 设计一个学生选修课程系统,假定有n门课程,每门课程有:课程编号,课程名称,课程性质(公共课、必修课、选修课),总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。 设计功能: 1、系统以菜单方式工作 2、课程信息录入功能(课程信息用文件保存)--输入 3、课程信息的编辑功能(插入、删除、修改) 4、课程信息浏览功能(按课程编号、课程名称、总学时、学分等排序输出)。 5、课程信息查询功能(按课程编号、课程名称、课程性质、开课学期等查询,提供模糊查询的功能) 6、学生选修课程 7、学生选课信息查询 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 设计内容: 某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容:1)销售员的代号,2)产品的代号,3)这种产品的当天的销售额。每位销售员每天上缴1张便条。试设计一个便条管理系统。 设计功能: 1、系统以菜单方式工作 2、便条信息录入功能(便条信息用文件保存)--输入 3、收集到了上个月的所有便条后,读取销售情况 1)计算每个人每种产品的销售额。 2)按销售额对销售员进行排序,输出排序结果(销售员代号) 3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)(可选项) 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 设计内容: 设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。 设计功能: (1)查看功能:选择此功能时,列出下列三类选择。 A.办公类 B.个人类 C.商务类,当选中某类时,显示出此类所有数据中的姓名和电话号码) (2)增加功能:能录入新数据 一个结点包括:姓名、电话号码、分类(A 办公类 B 个人类 C 商务类)、电子邮件)。 例如: 杨春 13589664454 商务类 chuny@126.com 当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。 (3)拔号功能: 能显示出通信录中所有人的姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的各个数字,并伴随相应的拔号声音。 (4)修改功能: 选中某个人的姓名时,可对此人的相应数据进行修改 (5)删除功能: 选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 每个教师的信息为:教师号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资。注:应发工资=基本工资+津贴+生活补贴;合计扣款=电话费+水电费+房租+所得税+卫生费+公积金;实发工资=应发工资 - 合计扣款。 A、教师信息处理 (1) 输入教师信息 (2) 插入(修改)教师信息: (3) 删除教师信息: (4) 浏览教师信息:   提示:具体功能及操作参考题1。 B、教师数据处理: (1) 按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据。 (2) 教师实发工资、应发工资、合计扣款计算。   提示:计算规则如题目。 (3) 教师数据管理   提示:输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件 (4) 教师数据查询:   提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。 (5) 教师综合信息输出   提示:输出教师信息到屏幕。 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111
2023-09-01 22:24:311

C语言课程设计

这好像是数据库课程设计阿 用vb或c++编写的可能多一些。c的还真不知道。帮不上忙,不好意思
2023-09-01 22:24:412

C语言课程设计:数据排序算法

你不是都很清楚了
2023-09-01 22:25:393

用C语言设计一个简单计算器的课程设计(希望能尽可能的详细,多一些)

/*输入表达式只能包含整数,+-*/和()*/#include<stdio.h>#include<string.h>int add(int x,int y);int sub(int x,int y);int mul(int x,int y);int div(int x,int y);int getach(); //用于获取一个合法字符int getid(); //对合法字符进行判断处理int cal(); //计算表达式的值int num,curch;int (*func[])(int x,int y)={add,sub,mul,div}; //函数指针数组,数组元素分别指向+-*/运算函数char chtbl[]="+-*/()=";char corch[]="+-*/()=0123456789";void main(){int value;printf("请输入要计算的表达式,以=结束:");getach();while(curch!="="){ value=cal(); printf("结果为:%d ",value); printf("请输入要计算的表达式,以=结束:"); getach();}}int add(int x,int y){return x+y;}int sub(int x,int y){return x-y;}int mul(int x,int y){return x*y;}int div(int x,int y){return x/y;}int getach(){unsigned int i;while(true){ curch=getchar(); if(curch==EOF) return -1; for(i=0;corch[i]&&curch!=corch[i];i++) ; if(i<strlen(corch)) break;}return curch;}int getid(){int i;if(curch>="0"&&curch<="9"){ for(num=0;curch>="0"&&curch<="9";getach()) num=num*10+curch-"0"; return -1;}else{ for(i=0;chtbl[i];i++) { if(chtbl[i]==curch) break; } if(i<=5) getach(); return i;}}int cal(){int x1,x2,x3,op1,op2,i;i=getid();if(i==4) x1=cal();else x1=num;op1=getid();if(op1>=5) return x1;i=getid();if(i==4) x2=cal();else x2=num;op2=getid();while((op2>=0)&&(op2<5)){ i=getid(); if(i==4) x3=cal(); else x3=num; if((op1/2==0)&&(op2/2==1)) x2=func[op2](x2,x3); else { x1=func[op1](x1,x2); x2=x3; op1=op2; } op2=getid();}return func[op1](x1,x2);}
2023-09-01 22:25:552

C语言课程设计 成绩处理程序

国际足球总会主办的比赛和各洲足球联盟管辖的比赛
2023-09-01 22:26:054

c语言课程设计之车辆管理系统设计

这个我可以代做。
2023-09-01 22:26:131

C语言程序 课程设计

发消息给你了
2023-09-01 22:26:435

c语言课程设计怎么写?

这得看你课设的内容和需求是什么啊不然谁知道怎么写依照课设的要求去写就可以了如果代码不想自己写的话我可以有偿代劳
2023-09-01 22:27:122

C语言课程设计图书馆管理系统加讲解

图书管理系统代码如下:#include <stdio.h> #include <stdlib.h> #include <conio.h> struct BOOK { int id,usr[10],total,store,days[10]; char name[31],author[21]; }books[100]; /*上面是结构体的定义,用于存放书籍及借书的信息。*/ void page_title(char *menu_item) { clrscr(); printf(">>> 图 书 管 理 系 统 <<< - %s - ",menu_item); } /*上面是打印页眉的函数,同时通过参数menu_item,可以显示当前的状态。*/ void return_confirm(void) { printf(" 按任意键返回…… "); getch(); } /*上面是返回前请求确认的函数,以便在返回前观察结果*/ int search_book(void) { int n,i; printf("请输入图书序号:"); scanf("%d",&i); for(n=0;n<100;n++) { if(books[n].id==i) { printf("书名:%s ",books[n].name); printf("作者:%s ",books[n].author); printf("存数:%d of ",books[n].store); printf("%d ",books[n].total); return n; } } printf(" 输入错误或无效图书序号. "); return -1; } /*上面的函数是在数组中找到图书号匹配的记录,显示其信息并返 回数组下标,如果找不到相应记录则提示错误并返回-1。*/ void book_out(void) { int n,s,l,d; page_title("借阅图书"); if((n=search_book())!=-1&&books[n].store>0) { printf("请输入借书证序号:"); scanf("%d",&s); printf("请输入可借天数:"); scanf("%d",&d); for(l=0;l<10;l++) { if(books[n].usr[l]==0) { books[n].usr[l]=s; books[n].days[l]=d; break; } } books[n].store--; } if(n!=-1&&books[n].store==0) printf("此书已经全部借出. "); return_confirm(); } /*上面是借书的函数,首先调用找书函数*/ void book_in(void) { int n,s,l; page_title("归还图书"); if((n=search_book())!=-1&&books[n].store<books[n].total) { printf("借阅者图书证列表: "); for(l=0;l<10;l++) if (books[n].usr[l]!=0) printf("[%d] - %d天 ",books[n].usr[l],books[n].days[l]); printf("请输入借书证序号:"); scanf("%d",&s); for(l=0;l<10;l++) { if(books[n].usr[l]==s) { books[n].usr[l]=0; books[n].days[l]=0; break; } } books[n].store++; } if(n!=-1&&books[n].store==books[n].total) printf("全部入藏. "); return_confirm(); } void book_add(void) { int n; page_title("注册新书"); for(n=0;n<100;n++) if(books[n].id==0) break; printf("序号:"); scanf("%d",&books[n].id); printf("书名:"); scanf("%s",&books[n].name); printf("作者:"); scanf("%s",&books[n].author); printf("数量:"); scanf("%d",&books[n].total); books[n].store=books[n].total; return_confirm(); } void book_del(void) { int n; page_title("注销旧书"); if((n=search_book())!=-1) books[n].id=0; printf("该书已注销. "); return_confirm(); } void main(void) { menu: page_title("操作选单"); printf("请用数字键选择操作 "); printf("1 借阅图书 2 归还图书 "); printf("3 注册新书 4 注销旧书 "); printf(" 0 退出 "); switch(getch()) { case "1" : book_out();break; case "2" : book_in();break; case "3" : book_add();break; case "4" : book_del();break; case "0" : exit(0); } goto menu; } { int n; page_title("广?症慕"); if((n=search_book())!=-1) books[n].id=0; printf("乎慕厮广?. "); return_confirm(); } void main(void) { menu: page_title("荷恬佥汽"); printf("萩喘方忖囚佥夲荷恬 "); printf("1 処堋夕慕 2 拷珊夕慕 "); printf("3 广过仟慕 4 广?症慕 "); printf(" 0 曜竃 "); switch(getch()) { case "1" : book_out();break; case "2" : book_in();break; case "3" : book_add();break; case "4" : book_del();break; case "0" : exit(0); } goto menu; }
2023-09-01 22:27:234

C语言课设扫雷游戏设计及论文!

c语言课程设计_扫雷游戏设计/*5.3.4 源程序*/#include <graphics.h>#include <stdlib.h>#include <dos.h>#define LEFTPRESS 0xff01#define LEFTCLICK 0xff10#define LEFTDRAG 0xff19#define MOUSEMOVE 0xff08struct{ int num;/*格子当前处于什么状态,1有雷,0已经显示过数字或者空白格子*/ int roundnum;/*统计格子周围有多少雷*/ int flag;/*右键按下显示红旗的标志,0没有红旗标志,1有红旗标志*/}Mine[10][10];int gameAGAIN=0;/*是否重来的变量*/int gamePLAY=0;/*是否是第一次玩游戏的标志*/int mineNUM;/*统计处理过的格子数*/char randmineNUM[3];/*显示数字的字符串*/int Keystate;int MouseExist;int MouseButton;int MouseX;int MouseY;void Init(void);/*图形驱动*/void MouseOn(void);/*鼠标光标显示*/void MouseOff(void);/*鼠标光标隐藏*/void MouseSetXY(int,int);/*设置当前位置*/int LeftPress(void);/*左键按下*/int RightPress(void);/*鼠标右键按下*/void MouseGetXY(void);/*得到当前位置*/void Control(void);/*游戏开始,重新,关闭*/void GameBegain(void);/*游戏开始画面*/void DrawSmile(void);/*画笑脸*/void DrawRedflag(int,int);/*显示红旗*/void DrawEmpty(int,int,int,int);/*两种空格子的显示*/void GameOver(void);/*游戏结束*/void GameWin(void);/*显示胜利*/int MineStatistics(int,int);/*统计每个格子周围的雷数*/int ShowWhite(int,int);/*显示无雷区的空白部分*/void GamePlay(void);/*游戏过程*/void Close(void);/*图形关闭*/void main(void){ Init(); Control(); Close();}void Init(void)/*图形开始*/{ int gd=DETECT,gm; initgraph(&gd,&gm,"c:\tc");}void Close(void)/*图形关闭*/{ closegraph();}void MouseOn(void)/*鼠标光标显示*/{ _AX=0x01; geninterrupt(0x33);}void MouseOff(void)/*鼠标光标隐藏*/{ _AX=0x02; geninterrupt(0x33);}void MouseSetXY(int x,int y)/*设置当前位置*/{ _CX=x; _DX=y; _AX=0x04; geninterrupt(0x33);}int LeftPress(void)/*鼠标左键按下*/{ _AX=0x03; geninterrupt(0x33); return(_BX&1);}int RightPress(void)/*鼠标右键按下*/{ _AX=0x03; geninterrupt(0x33); return(_BX&2);}void MouseGetXY(void)/*得到当前位置*/{ _AX=0x03; geninterrupt(0x33); MouseX=_CX; MouseY=_DX;}void Control(void)/*游戏开始,重新,关闭*/{ int gameFLAG=1;/*游戏失败后判断是否重新开始的标志*/ while(1) { if(gameFLAG)/*游戏失败后没判断出重新开始或者退出游戏的话就继续判断*/ { GameBegain(); /*游戏初始画面*/ GamePlay();/*具体游戏*/ if(gameAGAIN==1)/*游戏中重新开始*/ { gameAGAIN=0; continue; } } MouseOn(); gameFLAG=0; if(LeftPress())/*判断是否重新开始*/ { MouseGetXY(); if(MouseX>280&&MouseX<300&&MouseY>65&&MouseY<85) { gameFLAG=1; continue; } } if(kbhit())/*判断是否按键退出*/ break; } MouseOff();}void DrawSmile(void)/*画笑脸*/{ setfillstyle(SOLID_FILL,YELLOW); fillellipse(290,75,10,10); setcolor(YELLOW); setfillstyle(SOLID_FILL,BLACK);/*眼睛*/ fillellipse(285,75,2,2); fillellipse(295,75,2,2); setcolor(BLACK);/*嘴巴*/ bar(287,80,293,81);}void DrawRedflag(int i,int j)/*显示红旗*/{ setcolor(7); setfillstyle(SOLID_FILL,RED); bar(198+j*20,95+i*20,198+j*20+5,95+i*20+5); setcolor(BLACK); line(198+j*20,95+i*20,198+j*20,95+i*20+10);}void DrawEmpty(int i,int j,int mode,int color)/*两种空格子的显示*/{ setcolor(color); setfillstyle(SOLID_FILL,color); if(mode==0)/*没有单击过的大格子*/ bar(200+j*20-8,100+i*20-8,200+j*20+8,100+i*20+8); else if(mode==1)/*单击过后显示空白的小格子*/ bar(200+j*20-7,100+i*20-7,200+j*20+7,100+i*20+7);}void GameBegain(void)/*游戏开始画面*/{ int i,j; cleardevice(); if(gamePLAY!=1) { MouseSetXY(290,70); /*鼠标一开始的位置,并作为它的初始坐标*/ MouseX=290; MouseY=70; } gamePLAY=1;/*下次按重新开始的话鼠标不重新初始化*/ mineNUM=0; setfillstyle(SOLID_FILL,7); bar(190,60,390,290); for(i=0;i<10;i++)/*画格子*/ for(j=0;j<10;j++) DrawEmpty(i,j,0,8); setcolor(7); DrawSmile();/*画脸*/ randomize(); for(i=0;i<10;i++)/*100个格子随机赋值有没有地雷*/ for(j=0;j<10;j++) { Mine[i][j].num=random(8);/*如果随机数的结果是1表示这个格子有地雷*/ if(Mine[i][j].num==1) mineNUM++;/*现有雷数加1*/ else Mine[i][j].num=2; Mine[i][j].flag=0;/*表示没红旗标志*/ } sprintf(randmineNUM,"%d",mineNUM); /*显示这次总共有多少雷数*/ setcolor(1); settextstyle(0,0,2); outtextxy(210,70,randmineNUM); mineNUM=100-mineNUM;/*变量取空白格数量*/ MouseOn();}void GameOver(void)/*游戏结束画面*/{ int i,j; setcolor(0); for(i=0;i<10;i++) for(j=0;j<10;j++) if(Mine[i][j].num==1)/*显示所有的地雷*/ { DrawEmpty(i,j,0,RED); setfillstyle(SOLID_FILL,BLACK); fillellipse(200+j*20,100+i*20,7,7); }}void GameWin(void)/*显示胜利*/{ setcolor(11); settextstyle(0,0,2); outtextxy(230,30,"YOU WIN!");}int MineStatistics(int i,int j)/*统计每个格子周围的雷数*/{ int nNUM=0; if(i==0&&j==0)/*左上角格子的统计*/ { if(Mine[0][1].num==1) nNUM++; if(Mine[1][0].num==1) nNUM++; if(Mine[1][1].num==1) nNUM++; } else if(i==0&&j==9)/*右上角格子的统计*/ { if(Mine[0][8].num==1) nNUM++; if(Mine[1][9].num==1) nNUM++; if(Mine[1][8].num==1) nNUM++; } else if(i==9&&j==0)/*左下角格子的统计*/ { if(Mine[8][0].num==1) nNUM++; if(Mine[9][1].num==1) nNUM++; if(Mine[8][1].num==1) nNUM++; } else if(i==9&&j==9)/*右下角格子的统计*/ { if(Mine[9][8].num==1) nNUM++; if(Mine[8][9].num==1) nNUM++; if(Mine[8][8].num==1) nNUM++; } else if(j==0)/*左边第一列格子的统计*/ { if(Mine[i][j+1].num==1) nNUM++; if(Mine[i+1][j].num==1) nNUM++; if(Mine[i-1][j].num==1) nNUM++; if(Mine[i-1][j+1].num==1) nNUM++; if(Mine[i+1][j+1].num==1) nNUM++; } else if(j==9)/*右边第一列格子的统计*/ { if(Mine[i][j-1].num==1) nNUM++; if(Mine[i+1][j].num==1) nNUM++; if(Mine[i-1][j].num==1) nNUM++; if(Mine[i-1][j-1].num==1) nNUM++; if(Mine[i+1][j-1].num==1) nNUM++; } else if(i==0)/*第一行格子的统计*/ { if(Mine[i+1][j].num==1) nNUM++; if(Mine[i][j-1].num==1) nNUM++; if(Mine[i][j+1].num==1) nNUM++; if(Mine[i+1][j-1].num==1) nNUM++; if(Mine[i+1][j+1].num==1) nNUM++; } else if(i==9)/*最后一行格子的统计*/ { if(Mine[i-1][j].num==1) nNUM++; if(Mine[i][j-1].num==1) nNUM++; if(Mine[i][j+1].num==1) nNUM++; if(Mine[i-1][j-1].num==1) nNUM++; if(Mine[i-1][j+1].num==1) nNUM++; } else/*普通格子的统计*/ { if(Mine[i-1][j].num==1) nNUM++; if(Mine[i-1][j+1].num==1) nNUM++; if(Mine[i][j+1].num==1) nNUM++; if(Mine[i+1][j+1].num==1) nNUM++; if(Mine[i+1][j].num==1) nNUM++; if(Mine[i+1][j-1].num==1) nNUM++; if(Mine[i][j-1].num==1) nNUM++; if(Mine[i-1][j-1].num==1) nNUM++; } return(nNUM);/*把格子周围一共有多少雷数的统计结果返回*/}int ShowWhite(int i,int j)/*显示无雷区的空白部分*/{ if(Mine[i][j].flag==1||Mine[i][j].num==0)/*如果有红旗或该格处理过就不对该格进行任何判断*/ return; mineNUM--;/*显示过数字或者空格的格子就表示多处理了一个格子,当所有格子都处理过了表示胜利*/ if(Mine[i][j].roundnum==0&&Mine[i][j].num!=1)/*显示空格*/ { DrawEmpty(i,j,1,7); Mine[i][j].num=0; } else if(Mine[i][j].roundnum!=0)/*输出雷数*/ { DrawEmpty(i,j,0,8); sprintf(randmineNUM,"%d",Mine[i][j].roundnum); setcolor(RED); outtextxy(195+j*20,95+i*20,randmineNUM); Mine[i][j].num=0;/*已经输出雷数的格子用0表示已经用过这个格子*/ return ; } /*8个方向递归显示所有的空白格子*/ if(i!=0&&Mine[i-1][j].num!=1) ShowWhite(i-1,j); if(i!=0&&j!=9&&Mine[i-1][j+1].num!=1) ShowWhite(i-1,j+1); if(j!=9&&Mine[i][j+1].num!=1) ShowWhite(i,j+1); if(j!=9&&i!=9&&Mine[i+1][j+1].num!=1) ShowWhite(i+1,j+1); if(i!=9&&Mine[i+1][j].num!=1) ShowWhite(i+1,j); if(i!=9&&j!=0&&Mine[i+1][j-1].num!=1) ShowWhite(i+1,j-1); if(j!=0&&Mine[i][j-1].num!=1) ShowWhite(i,j-1); if(i!=0&&j!=0&&Mine[i-1][j-1].num!=1) ShowWhite(i-1,j-1);}void GamePlay(void)/*游戏过程*/{ int i,j,Num;/*Num用来接收统计函数返回一个格子周围有多少地雷*/ for(i=0;i<10;i++) for(j=0;j<10;j++) Mine[i][j].roundnum=MineStatistics(i,j);/*统计每个格子周围有多少地雷*/ while(!kbhit()) { if(LeftPress())/*鼠标左键盘按下*/ { MouseGetXY(); if(MouseX>280&&MouseX<300&&MouseY>65&&MouseY<85)/*重新来*/ { MouseOff(); gameAGAIN=1; break; } if(MouseX>190&&MouseX<390&&MouseY>90&&MouseY<290)/*当前鼠标位置在格子范围内*/ { j=(MouseX-190)/20;/*x坐标*/ i=(MouseY-90)/20;/*y坐标*/ if(Mine[i][j].flag==1)/*如果格子有红旗则左键无效*/ continue; if(Mine[i][j].num!=0)/*如果格子没有处理过*/ { if(Mine[i][j].num==1)/*鼠标按下的格子是地雷*/ { MouseOff(); GameOver();/*游戏失败*/ break; } else/*鼠标按下的格子不是地雷*/ { MouseOff(); Num=MineStatistics(i,j); if(Num==0)/*周围没地雷就用递归算法来显示空白格子*/ ShowWhite(i,j); else/*按下格子周围有地雷*/ { sprintf(randmineNUM,"%d",Num);/*输出当前格子周围的雷数*/ setcolor(RED); outtextxy(195+j*20,95+i*20,randmineNUM); mineNUM--; } MouseOn(); Mine[i][j].num=0;/*点过的格子周围雷数的数字变为0表示这个格子已经用过*/ if(mineNUM<1)/*胜利了*/ { GameWin(); break; } } } } } if(RightPress())/*鼠标右键键盘按下*/ { MouseGetXY(); if(MouseX>190&&MouseX<390&&MouseY>90&&MouseY<290)/*当前鼠标位置在格子范围内*/ { j=(MouseX-190)/20;/*x坐标*/ i=(MouseY-90)/20;/*y坐标*/ MouseOff(); if(Mine[i][j].flag==0&&Mine[i][j].num!=0)/*本来没红旗现在显示红旗*/ { DrawRedflag(i,j); Mine[i][j].flag=1; } else if(Mine[i][j].flag==1)/*有红旗标志再按右键就红旗消失*/ { DrawEmpty(i,j,0,8); Mine[i][j].flag=0; } } MouseOn(); sleep(1); } }}c语言课程设计_扫雷游戏设计
2023-09-01 22:27:311

C语言课程设计-学生成绩管理程序

#include<stdio.h> /*引用库函数*/ #include<stdlib.h> #include<ctype.h> #include<string.h> typedef struct /*定义结构体数组*/ { char num[10]; /*学号*/ char name[20]; /*姓名*/ int score; /*成绩*/ }Student; Student stu[80]; /*结构体数组变量*/ int menu_select() /*菜单函数*/ { char c; do{ system("cls"); /*运行前清屏*/ printf(" ****Students" Grade Management System**** "); /*菜单选择*/ printf(" | 1. Input Records | "); printf(" | 2. Display All Records | "); printf(" | 3. Sort | "); printf(" | 4. Insert a Record | "); printf(" | 5. Delete a Record | "); printf(" | 6. Query | "); printf(" | 7. Statistic | "); printf(" | 8. Add Records from a Text File| "); printf(" | 9. Write to a Text file | "); printf(" | 0. Quit | "); printf(" ***************************************** "); printf(" Give your Choice(0-9):"); c=getchar(); /*读入选择*/ }while(c<"0"||c>"9"); return(c-"0"); /*返回选择*/ } int Input(Student stud[],int n) /*输入若干条记录*/ {int i=0; char sign,x[10]; /*x[10]为清除多余的数据所用*/ while(sign!="n"&&sign!="N") /*判断*/ { printf(" student"s num:"); /*交互输入*/ scanf(" %s",stud[n+i].num); printf(" student"s name:"); scanf(" %s",stud[n+i].name); printf(" student"s score:"); scanf(" %d",&stud[n+i].score); gets(x); /*清除多余的输入*/ printf(" any more records?(Y/N)"); scanf(" %c",&sign); /*输入判断*/ i++; } return(n+i); } void Display(Student stud[],int n) /*显示所有记录*/ { int i; printf(" ----------------------------------- "); /*格式头*/ printf(" number name score "); printf(" ----------------------------------- "); for(i=1;i<n+1;i++) /*循环输入*/ { printf(" %-16s%-15s%d ",stud[i-1].num,stud[i-1].name,stud[i-1].score); if(i>1&&i%10==0) /*每十个暂停*/ {printf(" ----------------------------------- "); /*格式*/ printf(" "); system("pause"); printf(" ----------------------------------- "); } } printf(" "); system("pause"); } void Sort_by_num(Student stud[],int n) /*按学号排序*/ { int i,j,*p,*q,s; char t[10]; for(i=0;i<n-1;i++) /*冒泡法排序*/ for(j=0;j<n-1-i;j++) if(strcmp(stud[j].num,stud[j+1].num)>0) {strcpy(t,stud[j+1].num); strcpy(stud[j+1].num,stud[j].num); strcpy(stud[j].num,t); strcpy(t,stud[j+1].name); strcpy(stud[j+1].name,stud[j].name); strcpy(stud[j].name,t); p=&stud[j+1].score; q=&stud[j].score; s=*p; *p=*q; *q=s; } } int Insert_a_record(Student stud[],int n) /*插入一条记录*/ {char x[10]; /*清除多余输入所用*/ printf(" student"s num:"); /*交互式输入*/ scanf(" %s",stud[n].num); printf(" student"s name:"); scanf(" %s",stud[n].name); printf(" student"s score:"); scanf(" %d",&stud[n].score); gets(x); n++; Sort_by_num(stud,n); /*调用排序函数*/ printf(" Insert Successed! "); /*返回成功信息*/ return(n); } int Delete_a_record(Student stud[],int n) /*按姓名查找,删除一条记录*/ { char s[20]; int i=0,j; printf(" tell me his(her) name:"); /*交互式问寻*/ scanf("%s",s); while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/ if(i==n) { printf(" not find! "); /*返回失败信息*/ return(n); } for(j=i;j<n-1;j++) /*删除操作*/ { strcpy(stud[j].num,stud[j+1].num); strcpy(stud[j].name,stud[j+1].name); stud[j].score=stud[j+1].score; } printf(" Delete Successed! "); /*返回成功信息*/ return(n-1); } void Query_a_record(Student stud[],int n) /*查找并显示一个记录*/ { char s[20]; int i=0; printf(" input his(her) name:"); /*交互式输入*/ scanf(" %s",s); while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/ if(i==n) { printf(" not find! "); /*输入失败信息*/ return; } printf(" his(her) number:%s ",stud[i].num); /*输出该学生信息*/ printf(" his(her) score:%d ",stud[i].score); } void Statistic(Student stud[],int n) /*新增功能,输出统计信息*/ { int i,j=0,k=0,sum=0; float aver; /*成绩平均值*/ for(i=0;i<n;i++) /*循环输入判断*/ { sum+=stud[i].score; if(stud[j].score>stud[i].score) j=i; if(stud[k].score<stud[i].score) k=i; } aver=1.0*sum/n; printf(" there are %d records. ",n); /*总共记录数*/ printf(" the hignest score: "); /*最高分*/ printf(" number:%s name:%s score:%d ",stud[j].num,stud[j].name,stud[j].score); printf(" the lowest score: "); /*最低分*/ printf(" number:%s name:%s score:%d ",stud[k].num,stud[k].name,stud[k].score); printf(" the average score is %5.2f ",aver); /*平均分*/ } int AddfromText(Student stud[],int n) /*从文件中读入数据*/ { int i=0,num; FILE *fp; /*定义文件指针*/ char filename[20]; /*定义文件名*/ printf(" Input the filename:"); scanf(" %s",filename); /*输入文件名*/ if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/ { printf(" cann"t open the file "); /*打开失败信息*/ printf(" "); system("pause"); return(n); } fscanf(fp,"%d",&num); /*读入总记录量*/ while(i<num) /*循环读入数据*/ { fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score); i++; } n+=num; fclose(fp); /*关闭文件*/ printf(" Successed! "); printf(" "); system("pause"); return(n); } void WritetoText(Student stud[],int n) /*将所有记录写入文件*/ { int i=0; FILE *fp; /*定义文件指针*/ char filename[20]; /*定义文件名*/ printf(" Write Records to a Text File "); /*输入文件名*/ printf(" Input the filename:"); scanf(" %s",filename); if((fp=fopen(filename,"w"))==NULL) /*打开文件*/ { printf(" cann"t open the file "); system("pause"); return; } fprintf(fp,"%d ",n); /*循环写入数据*/ while(i<n) { fprintf(fp,"%-16s%-15s%d ",stud[i].num,stud[i].name,stud[i].score); i++; } fclose(fp); /*关闭文件*/ printf("Successed! "); /*返回成功信息*/ } void main() /*主函数*/ { int n=0; for(;;) { switch(menu_select()) /*选择判断*/ { case 1: printf(" Input Records "); /*输入若干条记录*/ n=Input(stu,n); break; case 2: printf(" Display All Records "); /*显示所有记录*/ Display(stu,n); break; case 3: printf(" Sort "); Sort_by_num(stu,n); /*按学号排序*/ printf(" Sort Suceessed! "); printf(" "); system("pause"); break; case 4: printf(" Insert a Record "); n=Insert_a_record(stu,n); /*插入一条记录*/ printf(" "); system("pause"); break; case 5: printf(" Delete a Record "); n=Delete_a_record(stu,n); /*按姓名查找,删除一条记录*/ printf(" "); system("pause"); break; case 6: printf(" Query "); Query_a_record(stu,n); /*查找并显示一个记录*/ printf(" "); system("pause"); break; case 7: printf(" Statistic "); Statistic(stu,n); /*新增功能,输出统计信息*/ printf(" "); system("pause"); break; case 8: printf(" Add Records from a Text File "); n=AddfromText(stu,n); /*新增功能,输出统计信息*/ break; case 9: printf(" Write to a Text file "); WritetoText(stu,n); /*循环写入数据*/ printf(" "); system("pause"); break; case 0: printf(" Have a Good Luck,Bye-bye! "); /*结束程序*/ printf(" "); system("pause"); exit(0); } } }
2023-09-01 22:27:411

C语言高手进

//这是我在大学时做的,你看看: /* 程序功能: 能完成每位学生的某门课程的平时成绩和期末考试成绩的录入, 完成每位学生的总评成绩计算(平时成绩*30%+期末考试成绩*70%)并生成数据文件, 生成分数段统计文件(不及格人数,60-69数,70-79人数,80-89人数,90-100人数,及格 率), 通过学生成绩的数据文件查询学生成绩(查询条件自定)。 通过学生成绩的分段统计文件输出学生成绩分段情况和及格率。 程序要求: (1)能够完成300人以内任何人数的成绩处理。 (2)程序要有主控菜单 */ #include<stdio.h> #include<stdlib.h> #include<string.h> struct stud { long num; char name[20]; double score; }; typedef struct stucode { struct stud student ; struct stucode *next; }L; void menu(); void createlist(struct stucode **r); void out(struct stucode *r); void search1(struct stucode *r); void search2(struct stucode *r); void del(struct stucode **r); void insert(struct stucode **r); void sort(struct stucode **r); void main() { char choose; int flag=1; struct stucode *r=NULL; while(flag) { system("cls"); menu(); choose=getchar(); switch(choose) { case "1": createlist(&r); out(r); printf("Testing function 1 Press any key to continue "); getchar(); getchar(); break; case "2": search1(r); printf("Testing function 1 Press any key to continue "); getchar(); getchar(); break; case "3": search2(r); printf("Testing function 1 Press any key to continue "); getchar(); getchar(); break; case "4": del(&r); out(r); printf("Testing function 1 Press any key to continue "); getchar(); getchar(); break; case "5": insert(&r); out(r); printf("Testing function 1 Press any key to continue "); getchar(); getchar(); break; case "6": sort(&r); out(r); printf("Testing function 1 Press any key to continue "); getchar(); getchar(); break; case "7": out(r); printf("Testing function 7 Press any key to continue "); getchar(); getchar(); break; case "0": flag=0; printf("The end. "); break; default: printf(" Wrong Selection!(选择错误,请重选!) ");getchar();getchar(); } } } void createlist(struct stucode **r) { struct stucode *p,*t; long n; char a[20]; double s; if(*r) *r=NULL; printf(" 请输入: 学号(请按学号升序排列) 姓名 分数 (若要结束请输入三个为零) "); scanf("%ld%s%lf",&n,a,&s); if(n==0) return; p=(L *)malloc(sizeof(L)); p->student.num=n; strcpy(p->student.name,a); p->student.score=s; p->next=NULL; *r=p; scanf("%ld%s%lf",&n,a,&s); while(n) { t=p; p=(L *)malloc(sizeof(L)); p->student.num=n; strcpy(p->student.name,a); p->student.score=s; p->next=NULL; t->next=p; scanf("%ld%s%lf",&n,a,&s); } } void search1(struct stucode *r) { long x; if(!r) { printf("没有学生信息可查询! "); return ; } printf(" 请输入要查询的学生信息的学生学号: "); scanf("%ld",&x); while(r&&r->student.num!=x) r=r->next; if(r==NULL) printf("Error! No such student ! "); else printf("%ld %s %.2lf ",r->student.num,r->student.name,r->student.score); } void search2(struct stucode *r) { char m[20]; if(!r) { printf("没有学生信息可查询! "); return ; } printf(" 请输入要查询的学生信息的学生姓名: "); scanf("%s",m); while(r&&strcmp(r->student.name,m)) r=r->next; if(r==NULL) printf("Error! No such student ! "); else printf("%ld %s %.2lf ",r->student.num,r->student.name,r->student.score); } void del(struct stucode **r) { long k; struct stucode *p=*r,*t; if(!(*r)) { printf("没有学生信息可删除 ! "); return ; } printf(" 请输入要删除的学生信息的学生学号: "); scanf("%ld",&k); if(p->student.num==k) *r=(*r)->next,free(p); else { while(p->next&&p->next->student.num!=k) p=p->next; if(p->next==NULL) printf("Error! No such student ! "); else { t=p->next; p->next=p->next->next; free(t); } } } void insert(struct stucode **r) { long n; char a[20]; double s; L *p,*t,*k; printf(" 请输入要插入的学生信息的学生学号 姓名 分数: "); scanf("%ld%s%lf",&n,a,&s); p=(L *)malloc(sizeof(L)); p->student.num=n; p->student.score=s; strcpy(p->student.name,a); if(!(*r)) { *r=p; (*r)->next=NULL; return ; } if(p->student.num<(*r)->student.num) p->next=(*r),(*r)=p; else { t=*r; k=t; while(t->next&&t->next->student.num<=p->student.num) t=t->next; p->next=t->next; t->next=p; *r=k; } } void sort(struct stucode **r) { struct stucode *t,*p,*q,*z; if(!r) { printf("没有学生信息可排序! "); return ; } if(!(*r)||!(*r)->next) return; t=*r; p=t->next; t->next=NULL; while(p) { q=p->next; if(p->student.score>t->student.score) { p->next=t; t=p; } else { z=t; while(z->next&&z->next->student.score>=p->student.score) z=z->next; p->next=z->next; z->next=p; } p=q; } *r=t; } void out(struct stucode *r) { printf(" "); if(!r) { printf("没有学生信息可输出! "); return ; } while(r) { printf("%ld %s %.2lf ",r->student.num,r->student.name,r->student.score); r=r->next; } printf(" "); } void menu() { printf(" 学生信息管理系统 "); printf(" 菜单 "); printf(" 1建立链表并显示 "); printf(" 2查找某学号的学生信息 "); printf(" 3查找某姓名的学生信息 "); printf(" 4删除某学号的学生信息 "); printf(" 5插入新的学生信息 "); printf(" 6按分数降序排列输出 "); printf(" 7输出 "); printf(" 0退出 "); printf(" 请选择您要执行的选项: "); }
2023-09-01 22:28:011

课程设计的目的和意义

以下是我做课程设计时写的,希望能够帮你目的:根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。C语言课程设计过程总结:回顾起此次课程设计,至今我仍感慨颇多,从理论到实践,在整整半个月的日子里,我学到很多很多的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的内容。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是真正的知识,才能提高自己的实际动手能力和独立思考的能力。在设计的过程遇到了各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计,把以前所学过的知识重新温故,巩固了所学的知识。
2023-09-01 22:28:092

农村支部书记没有召开党员会议,私下为一名预备党员办理了转正手续1.此事是否符和党章规定?2.该如何处理

  1.此事是否符和党章规定?  不符合  2.该如何处理  报上级党组织,请求上级处理。或是党支部开会商议  你个人没办法处理,现在农村入党都这样的。  预备党员转正的手续和程序  预备党员期满后,党支部应按时讨论其能否转为正式党员。其手续和程序是:  (1)本人申请。预备党员预备期满时,应由本人主动地以书面形式向党组织提出转为正式党员的申请。申请报告的内容包括:说明自己是什么时候被批准入党的,什么时候预备期  满,并正式向党组织提出转正的申请,对自己在预备期中的表现做出比较全面总结,写明有哪些提高,还有什么缺点和不足,特别是同志们在讨论自己入党时所指出的缺点,在预备期间有没有改正,具体表现是什么,写出今后的努力方向。转正申请的内容必须实事求是,转正申请报告一般应在预备期满前的适当时候交给党组织。  (2)党小组讨论。党小组对组内预备党员的情况比较熟悉,对预备党员教育和考察也做了一定的工作,党小组应该进行讨论,提出对预备党员能否转为正式党员的意见,供党支部参考。  (3)党支部委员会审查。审查时,主要根据预备党员的转正申请报告、党小组的意见、党内外群众的反映和党支部委员会的考察了解,对照党员条件,全面分析研究预备党员能否转为正式党员,提出意见,提交支部党员大会讨论。  (4)支部党员大会讨论。其程序是:a、申请转正的预备党员汇报自己在预备期间的表现,主要优缺点,今后努力方向,以及需要向党组织说明的问题;b、党小组介绍预备党员在预备期的工作、思想情况和小组意见;c、党支部委员会介绍预备党员在预备期的表现,党支部对他进行教育和考察工作情况,提出他能否转为正式党员的意见;d、全体党员讨论,主要是针对预备党员在预备期间的表现,肯定成绩,指出缺点,提出希望,并表示是否同意他转正的意见,在此基础上,有表决权的党员进行正式表决;e、支部党员大会以后,党支部委员会要将支部党员大会决议填入预备党员的《入党自愿书》,党支部书记签名盖章,写明年月日。支部党员大会决议的内容包括:预备党员在预备期间的表现,支部党员大会讨论的情况,对预备党员的意见,表决情况。  (5)报上级党委审批。上级党委接到上报的预备党员转正决议后,要指派专人对预备党员进行全面考察了解,然后召开党委会集体讨论表决、决定。审批结果要及时填入申请转正人的《入党自愿书》,并通知党支部。预备党员转正后,应将其《入党自愿书》、入党和转正申请书、自传、政审材料、教育考察材料,交党委存入本人人事档案。无人事档案的,建立党员档案,由所在党委保存。  11、预备党员转正应注意的问题
2023-09-01 22:12:351

会保险基金筹集模式包括

社会保险基金的筹集模式主要有三种,即现收现付制、完全基金制和部分基金制。1、现收现付制。这是一种以横向平衡为指导原则的基金筹集方式,依规定收益方式实施,由社会保障机构按所需支付的保险金额进行社会筹资。现收现付制是指当期的缴费收入全部用于支付当期的社会保险开支,不留或只留很少的储备基金。这种方式体现了社会保险互助互济的调剂职能,简便易行,也可避免物价上涨后基金贬值的危险。但由于只以现实收支平衡为基础,因此,该模式不仅对被保者的权利义务关系缺乏数量上的长期规划,时间与空间上的调剂能力也较差,而且当保险费用逐年增加、提取比例不断上升后,还可能导致在职职工、企业和国家负担过重的困难。2、完全积累制。这种社会保障基金筹集模式是以远期纵向平衡为原则的筹资方式。其实质是个体一生中的代内再分配制度。一般要求劳动者从参加工作开始,按工资总额的一定比例由雇主和雇员或只有其中一方定期交纳保险费,记入个人账户,作为长期储存积累及保值增值的基金,所有权归个人,到规定条件领取时,一次性领取或按月领取。完全积累制,是指当期缴费收入全部用于为当期缴费的受保人建立储备基金,而建立储备基金的目标应当是满足未来向全部受保人支付保险金的资金需要。该模式要求劳动者在整个就业或投保期间,采取储蓄积累方式筹集社会保险基金。这种方式体现了社会保险的储备职能,使社会保险能有一个较为稳定的经济保证,但由于时间跨度大,储备基金容易受到通货膨胀的影响,基金的保值与增值的压力就非常大。3、部分积累制。这是对现收现付制与完全积累制的整合,这是一种兼容横向平衡原则和远期纵向平衡原则的筹资模式。保障费用一部分采取现收现付方式,满足当前需要,另一部分采取积累方式以满足未来支付需要的增长,这种筹资模式是对原有两种模式的综合和创新。部分基金制亦称部分积累制,是介于现收现付制和完全基金制之间的一种筹资模式,即期的缴费一部分用于应付当期的社会保险开支,一部分用于为受保人建立储备基金。部分基金制是建立社会保险基金较灵活的模式,兼容了以上两种筹资模式的优点。法律依据:《中华人民共和国社会保险法》第十二条用人单位应当按照国家规定的本单位职工工资总额的比例缴纳基本养老保险费,记入基本养老保险统筹基金。职工应当按照国家规定的本人工资的比例缴纳基本养老保险费,记入个人账户。无雇工的个体工商户、未在用人单位参加基本养老保险的非全日制从业人员以及其他灵活就业人员参加基本养老保险的,应当按照国家规,定缴纳基本养老保险费,分别记入基本养老保险统筹基金和个人账户。
2023-09-01 22:12:351

通货膨胀的有利与不利影响分别是什么?

通货膨胀不利影响:1.增加投资的不确定因素。因为投资者对于未来的价格趋势判断不确定,特别在通货膨胀初期,投资者会采取观望而非直接大量投资。这样就使得投资乏力,影响经济增长。2.通货膨胀直接带来的价格上涨会增加消费者的负担,因为工资往往在短时间内无法与通胀率匹配,所以这间接降低了消费者的消费力。比如对于现在的购房者,3%的房价增长会使得原本购买力不足的消费者无力去购房。因为房价的基数很大,3%的增长可能是几万甚至几十万的额外费用。所以即便这个有意购房者的工资上涨3%,那么他/她的消费力也是被削弱的。(当然我是拿了一个比较极端的事情作为例子。)3.通胀压力会增加央行采取增加利率的手段来控制的可能性,所以一旦利率上升,对于企业或者个人的借贷成本会相应地增加。所以,进一步增加了货物的成本。在一定程度上来说,也增加了坏账率。4.当经济状况处于持平或者衰退的阶段,通胀会打击消费者的信心,减少的消费量会带动投资的减少从而双重地影响经济增长。(当然这种通胀的发生会伴随着通货紧缩,90年代就发生在日本。从而导致了日本二十年的经济萎靡。)通货膨胀有利影响:1.长期的通胀可以稀释债务负担。比如A先生有100万为期20年的房贷。那么如果在这二十年的时间里,假设通胀率为50%,工资增长100%。那么简单地来说,他的还款能力增加了一倍,因为100万的房贷总额不变。2.经济学家普遍认为,适当的通胀会增加消费者的信心。2-3%的通胀率在发达国家比较被认可,5-8%的通胀率在发展中国家比较合适。因为通货膨胀远比通货紧缩要好。3.通胀压力可能会引起央行来采取加息手段来控制。利率上升会吸引更多热钱涌入国内,所以货币会升值。这样进口的费用就会降低。比如原油期货、矿产等等的价格会相对低廉一些。所以长期来说,会平衡通胀的压力。4.上面所说,利率的上升间接使得货币升值。相反来说出口的成本会增加,但是这间接也会促进国内的技术革新和产业升级。淘汰更多不必要的产业。在一定程度来说,拿中国做为例子。如果未来的高能耗产业逐渐淘汰,对于空气和生活质量的提升也是一个潜在的帮助。当然,综上所述。这得看通胀率有多高了。然后看通胀的持续时间和类型。如果是输入型通胀,加息手段可能就没有什么显著的效果了。希望能帮到你啦~
2023-09-01 22:12:363

专门造汽车发动机的厂商有哪些?

1. Cummins 康明斯发动机公司 2. Deere迪尔发动机公司 3. DDC底特律柴油机公司 4. DEUTZ道依茨发动机公司 5. Morse莫尔斯发动机有限公司 6. Isuzu五十铃发动机公司 7. Perkins珀金斯发动机有限公司 8. Scania斯堪尼亚发动机公司 9. Zavolzhsky俄罗斯ZMZ发动机厂 10. Yanmar雅马哈柴油机发动机公司 11. Caterpillar卡特比勒发动机公司 12. Hino日野汽车发动机公司 13. Komatsu小松发动机有限公司 14. Mercedes-Benz奔驰发动机公司 15. Iveco依维柯发动机公司 16. MAN B&W曼(猛狮)发动机集团公司 17. UD日产柴有限公司 18. HYUNDAI现代汽车发动机公司 19. Toyota丰田汽车发动机公司 20. Honda本田发动机公司 21. Leyland利兰发动机公司 22. DAF达夫发动机公司 23. HATZ德国赫驰动力公司 24. MITSUBISHI三菱重工有限公司
2023-09-01 22:12:333

冰心的《荷叶母亲》全文是什么?

荷叶母亲原文(作者:冰心)  父亲的朋友送给我们两缸莲花,一缸是红的,一缸是白的,都摆在院子里。[1]    荷叶和莲花  八年之久,我没有在院子里看莲花了——但故乡的园院里,却有许多;不但有并蒂的,还有三蒂的,四蒂的,都是红莲。  九年前的一个月夜,祖父和我在园里乘凉。祖父笑着和我说:“我们园里最初开三蒂莲的时候,正好我们大家庭中添了你们三个姊妹。大家都欢喜,说是应了花瑞。”  半夜里听见繁杂的雨声,早起是浓阴的天,我觉得有些烦闷。从窗内往外看时,那一朵白莲已经谢了,白瓣儿小船般散飘在水面。梗上只留个小小的莲蓬,和几根淡黄色的花须。那一朵红莲,昨天还是菡(hàn)萏(dàn)的,今晨却开满了,亭亭地在绿叶中间立着。  仍是不适意!——徘徊了一会子,窗外雷声作了,大雨接着就来,愈下愈大。那朵红莲,被那繁密的雨点,打得左右攲(qī)斜。在无遮蔽的天空之下,我不敢下阶去,也无法可想。  对屋里母亲唤着,我连忙走过去,坐在母亲旁边——一回头忽然看见红莲旁边的一个大荷叶,慢慢的倾侧了下来,正覆盖在红莲上面······我不宁的心绪散尽了!  雨势并不减退,红莲却不摇动了。雨点不住的打着,只能在那勇敢慈怜的荷叶上面,聚了些流转无力的水珠。  我心中深深地受了感动——  母亲啊!你是荷叶,我是红莲,心中的雨点来了,除了你,谁是我在无遮拦天空下的荫蔽(yinbì)?一九二二年七月二十一日
2023-09-01 22:12:321

服务礼仪培训

服务礼仪标准培训有如下:1、顾客永远是对的这句话是伴随着市场经济的迅速发展、消费者权益运动的日益高涨,由西方企业界提出来的,是“顾客就是上帝”这句口号的具体体现。这句话真正的含义并不是说,顾客真是对的,而应该让他觉得,他是对的。2、视顾客为亲友只有用高质量的情感服务接待每一位顾客,才能使顾客以更大的热情对你的单位予以关注和支持,单位和顾客的关系才能步入良性循环轨道。在服务实践中,对顾客以亲友相待,应以微笑的面孔、百倍的热情欢迎每一位顾客的光临。在为顾客服务中,应该想顾客之所想,体察顾客心理,解决好顾客的各种难题。3、把顾客视为单位的主宰单位把顾客作为单位的主宰,既是由单位的经济属性,即谋求更高盈利的原始经营动机决定的,也是社会属性决定的奉献和获取经济利益相统一的服务理念的具体体现。4、强化现代服务理念,提升服务品位理念支配人的行为,服务理念决定着企业的服务面貌。市场经济的发展,带来企业服务竞争的升级,迫切要求企业迅速更新理念,在现代服务理念支配下,把服务问题提高到战略高度来认识,在服务上不断追求高目标,提升服务品位,创造服务特色。服务员礼貌服务主要标准:(1)主动:无论多忙一样照顾,无论闲忙一样待客。(2)热情:待人礼貌,面带微笑,态度友好,语言亲切,工作热心周到。(3)耐心:做到百问不厌,遇事不急,处事果断。(4)周到:一事同仁,待客诚恳,安排细致,服务热情达到标准。
2023-09-01 22:12:311