1、学生成绩管理系统含源码教案资料学生成绩管理系统该系统是用C实现的控制台程序,用文件保存数据。程序遵循模块化的设计思想,尽量做到高类聚,低耦合的特性,已实现一些基本功能,读者可根据自己的需要进行功能添加或删除,只需另写有关函数即可。由于笔者水平有限,读者可自行优化。本程序紧供大家学习参考。复制代码用vc6.0或devc即可直接编译运行,该程序主要函数:void menu(); /主菜单函数用于输出主菜单界面void introduce();/系统使用介绍函数void input(Link);/输入函数用于输入一条记录void del(Link);/删除记录函数void search(Link);
2、/查询函数void modify(Link);/修改函数void insert(Link);/插入函数void tongji(Link);/统计函数void sort(Link);/排序函数void display(Link);/显示记录函数void save(Link);/保存函数运行结果:主界面选择显示记录功能后选择排序后删除记录后/文件stuscore.h#include#include#include#define NULL 0short saveflag=0;struct student char num11; /学号 char name15;/姓名 short chgrade;/语
3、文成绩 short mgrade;/数学成绩 short egrade;/英语成绩 short total;/总分 float average;/平均分 int mingci;/名次;typedef struct node struct student data; /数据域 struct node *next;/指针域Node,*Link;/main文件#includestuscore.hvoid menu(); /主菜单函数用于输出主菜单界面void introduce();void input(Link);void del(Link);void search(Link);void modi
4、fy(Link);void insert(Link);void tongji(Link);void sort(Link);void display(Link);void save(Link);/保存函数void main() short choice=30; char ch; Link l; FILE *fp; Node *p,*r; fp=fopen(E:C_countstudentscorestuscore,ab+); if(!fp)printf(allocate memory filure1!);exit(1); l=(Node *)malloc(sizeof(Node); if(l=N
5、ULL)printf(allocate memory filure2!);exit(1); l-next=NULL; r=l; while(!feof(fp) p=(Link)malloc(sizeof(Node); if(!p)printf(allocate memory filure3!);exit(1); if(fread(p,sizeof(Node),1,fp)=1) r-next=p; p-next=NULL; r=p; fclose(fp); do menu(); printf(Please enter your choice(0-9): ); scanf(%d,&choice);
6、 if(choice=9) if(saveflag=1) printf(whether save the modified record to file?(y/n): );getchar(); scanf(%c,&ch); if(ch=Y|ch=y)save(l); printf(thank you for useness!n); break; switch(choice) case 0:introduce();break; /调用系统使用说明函数 case 1:input(l);break; /调用输入函数 case 2:del(l);break; /调用删除函数 case 3:search
7、(l);break;/调用查询函数 case 4:modify(l);break;/调用修改函数 case 5:insert(l);break;/调用插入函数 case 6:tongji(l);break;/调用统计函数 case 7:sort(l);break;/调用排序函数 case 8:display(l);break;/调用输出函数 default:printf(error!nnn); while(1);void menu() printf(=欢迎使用学生成绩管理系统=n); printf( 0 system introduce 1 input recordn); printf( 2
8、delete record 3 search recordn); printf( 4 modiry record 5 insert recordn); printf( 6 count record 7 sort recordn); printf( 8 display record 9 quit systemn);void introduce() system(cls); printf(欢迎使用学生成绩管理系统,在功能选择界面您可以输入数字0至9其中任一一个数字进行功能选择。nnn);void input(Link l)/每次添加一条记录 Link p,r,s; char num11,name1
9、5; short chgrade,mgrade,egrade; p=l;s=l; while(p-next)p=p-next; r=(Node *)malloc(sizeof(Node); if(!r)printf(allocate memory filure!);return; system(cls); printf(请输入学号: ); scanf(%s,num); if(l-next!=NULL) while(s-next) s=s-next; if(!strcmp(s-data).num,num) printf(输入的学号已经存在,请重新输入: ); scanf(%s,num); s=l
10、; strcpy(r-data).num,num); printf(请输入姓名: ); scanf(%s,name); strcpy(r-data).name,name); printf(请输入语文成绩: ); scanf(%d,&chgrade); (r-data).chgrade=chgrade; printf(请输入数学成绩: ); scanf(%d,&mgrade); (r-data).mgrade=mgrade; printf(请输入英语成绩: ); scanf(%d,&egrade); (r-data).egrade=egrade; (r-data).total=chgrade+m
11、grade+egrade; (r-data).average=(float)(chgrade+mgrade+egrade)/3; p-next=r;r-next=NULL; saveflag=1; printf(一个学生信息记录已经添加完成nnn);void del(Link l) Link p,r; char num11; system(cls); p=r=l; printf(请输入要删除记录的学号: ); scanf(%s,num); while(p-next) p=p-next; if(strcmp(p-data).num,num)=0)break; r=r-next; if(p!=r)
12、 if(l-next)-next=NULL)l-next=NULL; if(p-next)=NULL)r-next=NULL; r-next=p-next; printf(记录%s %s %d %d %d %d %.2f已删除nnn,(p-data).num,(p-data).name,(p-data).chgrade,(p-data).mgrade,(p-data).egrade,(p-data).total,(p-data).average); saveflag=1; else printf(无此学号的记录nnn);void search(Link l) Link p; char num1
13、1; short temp=0; p=l; system(cls); printf(请输入要查询记录的学号: ); scanf(%s,num); system(cls); if(p-next=NULL)printf(系统无记录nnn);return; while(p-next) p=p-next; if(!strcmp(p-data).num,num) printf(学号 姓名 语文 数学 英语 总分 平均分n); printf(%s %s %d %d %d %d %.2fnnn,(p-data).num,(p-data).name,(p-data).chgrade,(p-data).mgra
14、de,(p-data).egrade,(p-data).total,(p-data).average); temp=1; break; if(temp=0)printf(不存在学号为%s的记录nnn,num);void modify(Link l) Link p,r; char num11,tem11; char name15; short chgrade=0; short mgrade=0; short egrade=0; short temp=0; p=l;r=l; system(cls); printf(请输入要修改记录的学号: ); scanf(%s,num);strcpy(tem,n
15、um); system(cls); while(p-next) p=p-next; if(!strcmp(p-data).num,num) temp=1; printf(学号 姓名 语文 数学 英语 总分 平均分n); printf(%s %s %d %d %d %d %.2fnnn,(p-data).num,(p-data).name,(p-data).chgrade,(p-data).mgrade,(p-data).egrade,(p-data).total,(p-data).average); break; if(temp=1) printf(请重新输入该记录的学号、姓名、语文、数学、英
16、语成绩n); printf(请输入修改后的学号: ); scanf(%s,num); while(r-next) r=r-next; if(!strcmp(r-data).num,num)if(strcmp(num,tem)=0)break;r=l;printf(该学号已存在,请重新输入: );scanf(%s,num); strcpy(p-data).num,num); printf(请输入修改后的姓名: );scanf(%s,name);strcpy(p-data).name,name); printf(请输入修改后的语文成绩: );scanf(%d,&chgrade);(p-data).
17、chgrade=chgrade; printf(请输入修改后的数学成绩: );scanf(%d,&mgrade);(p-data).mgrade=mgrade; printf(请输入修改后的英语成绩: );scanf(%d,&egrade);(p-data).egrade=egrade; (p-data).total=chgrade+mgrade+egrade; (p-data).average=(float)(chgrade+mgrade+egrade)/3; system(cls); printf(学号为%s的记录已修改为: n,tem); printf(%s %s %d %d %d %d
18、 %.2fnnn,(p-data).num,(p-data).name,(p-data).chgrade,(p-data).mgrade,(p-data).egrade,(p-data).total,(p-data).average); saveflag=1; if(temp=0)printf(不存在学号为%s的记录nnn,num);void insert(Link l) input(l);void tongji(Link l) Link p; int tcount=0; int chcount=0; int mcount=0; int ecount=0; p=l; while(p-next)
19、 p=p-next; if(p-data).chgradedata).mgradedata).egradenext)=NULL)printf(系统无记录nnnn);return; p=p-next; if(p-next)=NULL)display(l);return; p=l; while(p-next) p=p-next; r=p;s=p; while(r-next) r=r-next; if(s-data).totaldata).total) temp=(r-data).chgrade;(r-data).chgrade=(s-data).chgrade;(s-data).chgrade=t
20、emp; temp=(r-data).mgrade;(r-data).mgrade=(s-data).mgrade;(s-data).mgrade=temp; temp=(r-data).egrade;(r-data).egrade=(s-data).egrade;(s-data).egrade=temp; temp=(r-data).total;(r-data).total=(s-data).total;(s-data).total=temp; femp=(r-data).average;(r-data).average=(s-data).average;(s-data).average=f
21、emp; strcpy(t,(r-data).num);strcpy(r-data).num,(s-data).num);strcpy(s-data).num,t); strcpy(k,(r-data).name);strcpy(r-data).name,(s-data).name);strcpy(s-data).name,k); t1-next=s; t1=t1-next; t1-next=NULL; display(l);void display(Link l) Link p;2 www。cer。net/artide/2003082213089728。shtml。三、主要竞争者分析 sys
22、tem(cls);300元以下 9 18% p=l; if(p-next)=NULL)printf(无记录nnn);return; printf(学号 姓名 语文 数学 英语 总分 平均分n);新材料手工艺品。目前,国际上传统的金银、仿金银制成饰品的销售在逐步下降,与此形成鲜明对比的是,数年以前兴起的崇尚然风格、追求个性的自制饰品-即根据自己的创意将各种材质的饰珠,用皮、布、金属等线材串出的品,正在各国的女性中大行其道。 while(p-next)!=NULL)p=p-next;printf(%s %s %d %d %d %d %.2fn,(p-data).num,(p-data).name,
23、(p-data).chgrade,(p-data).mgrade,(p-data).egrade,(p-data).total,(p-data).average); printf(nnn);void save(Link l)2、价格“适中化” Link p; FILE *fp;大学生对手工艺制作兴趣的调研300元以下 300400元 400500 500元以上 fp=fopen(E:C_countstudentscorestuscore,wb); if(!fp)printf(cannot open file!n);return;据调查统计在对大学生进行店铺经营风格所考虑的因素问题调查中,发现有50%人选择了价格便宜些,有28%人选择服务热情些,有30%人选择店面装潢有个性,只有14%人选择新颖多样。如图(1-5)所示 system(cls);8-4情境因素与消费者行为 2004年3月20日 p=l;现在是个飞速发展的时代,与时俱进的大学生当然也不会闲着,在装扮上也不俱一格,那么对作为必备道具的饰品多样性的要求也就可想而知了。 while(p-next) p=p-next; if(fwrite(p,sizeof(Node),1,fp)!=1)printf(file wirte error!n);return;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1