收藏 分销(赏)

c语言程序设计学生标准管理系统.doc

上传人:精*** 文档编号:2993144 上传时间:2024-06-12 格式:DOC 页数:21 大小:42.54KB
下载 相关 举报
c语言程序设计学生标准管理系统.doc_第1页
第1页 / 共21页
c语言程序设计学生标准管理系统.doc_第2页
第2页 / 共21页
c语言程序设计学生标准管理系统.doc_第3页
第3页 / 共21页
c语言程序设计学生标准管理系统.doc_第4页
第4页 / 共21页
c语言程序设计学生标准管理系统.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、/*学生成绩管理系统数据库数据项关键数据包含:学号、姓名、年级、专业、成绩1、成绩2、成绩3、平均成绩、总成绩。要求含有以下功效:(1)添加、删除任意个统计。(2)修改任意个统计。(3)显示、保留统计。(4)排序功效:打开学生数据库,计算每个学生平均成绩和总成绩,用冒泡法或选择排序法将平均成绩和总成绩排序后生成两个新文件(从大到小), 存盘并显示这两个文件全部统计。(5)查询功效:打开总成绩排序文件,用折半查找法统计出给定分数人数并显示。 要求:(1)设计一个主函数和多个子函数,每个子函数完成一个相对独立子功效。(2)程序运行时,首优异行口令检验,再显示菜单。并能依据菜单调用对应函数功效。 口

2、令程序段功效要求: 1提醒用户输入一个口令。 2用户输入口令后,若口令对,则提醒用户经过,可实施后续程序;不然不经过。 3可对用户口令输入进行次数限制(如:反复输入3次全部不对),则自动退出系统。*/#include#include#includestruct studentint num;char name10;int grade;char major10;float score_1,score_2,score_3,aver,total;struct student *next;struct student *creat(void);struct student *add(void);str

3、uct student *del(int num);struct student *alter();void save(struct student *head);void read();void totalsort(struct student *head);void aversort(struct student *head);void Bfindsort();int all=0;void main()int i,n,m,num;char ord10=student,ord_110;struct student *p;for(i=0;i=3;i+)if(i=3) exit(0); prin

4、tf(请第%d次输入进入系统指令:,i+1);scanf(%s,ord_1);if(strcmp(ord,ord_1)!=0)printf(输入指令有误请重新输入。n);if(strcmp(ord,ord_1)=0)break;p=NULL;loop_2:printf(输入系统功效:n0、建立一个数据库;n1、添加和保留学生数据;n2、删除和保留学生数据;n3、修改和保留学生数据;n4、显示数据库统计;n5、将数据进行排序;n6、查询指定成绩人数:); loop: scanf(%d,&n);if(n6)printf(n输入选择有误请重新输入:);goto loop;if(n=2) printf

5、(输入删除学生数据学号:); scanf(%d,&num); switch(n)case 0:p=creat();save(p);read();break; case 1:p=add();save(p);read();break; case 2:p=del(num);save(p);read();break;case 3:p=alter();save(p);read();break;case 4:read();break;case 5:printf(输入选择排序功效1、依据平均成绩;2、依据总成绩:); loop_1: scanf(%d,&m);if(m2)printf(n输入选择有误请重新输

6、入:);goto loop_1; switch(m) case 1:aversort(p);break; case 2:totalsort(p);break; break;case 6:Bfindsort();break;loop_5: printf(输入你要进行步骤:1、返回上一菜单菜单;2、退出程序。n);scanf(%d,&n);if(n2)printf(输入选择有误,请重新输入:);goto loop_5;switch(n)case 1:goto loop_2;break;case 2:break;struct student *creat(void)int i,n;struct st

7、udent *head,*p,*q,*tail;printf(输入学生个数:);scanf(%d,&n);head=NULL;for(i=0;inext=p;tail=p;p-next=NULL;q=head;printf(输入学生学号、名字、年级、专业、三门成绩:);scanf(%d %s %d %s %f %f %f,&p-num,&p-name,&p-grade,&p-major,&p-score_1,&p-score_2,&p-score_3); loop: while(q-next!=NULL)if(q-num=p-num) printf(输入学生号错误请重新输入学生学号:);sca

8、nf(%d,&p-num);goto loop;q=q-next;p-aver=(p-score_1+p-score_2+p-score_3)/3;p-total=p-score_1+p-score_2+p-score_3; return(head);void save(struct student *head)struct student *p;FILE *fp;if(fp=fopen(student.txt,wb)=NULL)printf(打开文件失败。n);exit(0);p=head;while(p!=NULL)fwrite(p,sizeof(struct student),1,fp)

9、;p=p-next;fclose(fp);struct student *del(int num)int i,n=0;struct student *p,*q,*head;FILE *fp;if(all=0)printf(数据库为空。n);head=NULL;return(head);p=(struct student *)malloc(sizeof(struct student);if(fp=fopen(student.txt,rb)=NULL)printf(打开student.txt文件失败n);exit(0);for(i=0;p!=NULL;i+)p=(struct student *)

10、malloc(sizeof(struct student); fread(p,sizeof(struct student),1,fp);if(i=0) head=p;if(num=p-num)if(p=head)head=p-next;elseq-next=p-next;n+;all-;q=p;if(n=0)printf(没有%d这一学生号学生!n,num);return(head);struct student *add()int i,j,m,n=0;FILE *fp;struct student *p,*q,*temp,*head,*tail;if(all=0)head=NULL;else

11、if(fp=fopen(student.txt,rb)=NULL)printf(打开student.txt文件失败n);exit(0);p=(struct student*)malloc(sizeof(struct student);fread(p,sizeof(struct student),1,fp);head=p;tail=p; while(p-next!=NULL)p=(struct student*)malloc(sizeof(struct student);fread(p,sizeof(struct student),1,fp);tail-next=p;tail=p;tail-ne

12、xt=NULL;fclose(fp);printf(输入需要输入学生个数:);scanf(%d,&j);for(i=0;inum,&p-name,&p-grade,&p-major,&p-score_1,&p-score_2,&p-score_3);temp=head;loop_1: while(temp!=NULL)if(temp-num=p-num) printf(输入学生号错误请重新输入学生学号:);scanf(%d,&p-num);goto loop_1;temp=temp-next; p-aver=(p-score_1+p-score_2+p-score_3)/3; p-total=

13、p-score_1+p-score_2+p-score_3; if(head=NULL)head=p;p-next=NULL;elseq=head;n=1; while(q-next!=NULL) q=q-next; n+; printf(该链表一共有节点个数%d。n,n); loop: printf(输入将数据插入第多个节点后面。n);scanf(%d,&m);if(mn)printf(输入有误,请重新输入。n);goto loop;q=head;if(m=0)p-next=head;head=p;elsewhile(m-1)!=0)q=q-next;m-; p-next=q-next; q

14、-next=p;return(head);struct student *alter()int m,num,gra,n;char maj10,name10;float score_1,score_2,score_3;struct student *p,*q,*head;FILE *fp;if(all=0)printf(数据库为空。n);head=NULL;return(head);if(fp=fopen(student.txt,rb)=NULL)printf(打开student.txt文件失败n);exit(0);p=(struct student*)malloc(sizeof(struct

15、student);fread(p,sizeof(struct student),1,fp);head=p;q=p;loop_1:printf(输入修改学生数据姓名:);scanf(%s,&name);while(strcmp(name,p-name)!=0)p=p-next;if(p=NULL)printf(没有该学生。n);return(head);loop: printf(请选择修改学生具体数据:n1、学号;2、年级;3、专业;n4、成绩1;5、成绩2;6、成绩3:); scanf(%d,&m);if(m6)printf(n输入选择有误请重新输入:);goto loop;switch(m)

16、 case 1:printf(输入新学号:);loop_2:scanf(%d,&num); while(q!=NULL) if(q-num=num) printf(输入学生号错误请重新输入学生学号:);goto loop_2; q=q-next; p-num=num;break;case 2:printf(输入新年级:);scanf(%d,&gra); p-grade=gra; break;case 3:printf(输入新专业:);scanf(%s,&maj); strcpy(p-major,maj);break;case 4:printf(输入新成绩:);scanf(%f,&score_1

17、);p-score_1=score_1; p-aver=(p-score_1+p-score_2+p-score_3)/3; p-total=p-score_1+p-score_2+p-score_3; break;case 5:printf(输入新成绩:);scanf(%f,&score_2);p-score_2=score_2; p-aver=(p-score_1+p-score_2+p-score_3)/3; p-total=p-score_1+p-score_2+p-score_3;break;case 6:printf(输入新成绩:);scanf(%f,&score_3);p-sco

18、re_3=score_3; p-aver=(p-score_1+p-score_2+p-score_3)/3; p-total=p-score_1+p-score_2+p-score_3;break;printf(选择你要实施内容:n1、返回上一菜单n2、返回主菜单n3、修改另一学生数据);loop_5: scanf(%d,&n);if(n3)printf(输入选择有误,请重新输入:);goto loop_5;switch(n) case 1:goto loop;break;case 2:break;case 3:goto loop_1;break;return(head);void read

19、()struct student *p,*head;FILE *fp;if(all=0)printf(系统没有学生数据。n);return;if(fp=fopen(student.txt,rb)=NULL)printf(打开文件失败。n);exit(0);p=(struct student*)malloc(sizeof(struct student);fread(p,sizeof(struct student),1,fp);head=p;printf(打开student.txt文件学生数据。n);printf(list num name grade major score_1 score_2

20、score_3 aver totaln);while(p!=NULL)printf(student %-3d %-4s %-5d %-5s %-7.2f %-7.2f %-7.2f %-4.2f %-5.2f n, p-num,p-name,p-grade,p-major,p-score_1,p-score_2,p-score_3,p-aver,p-total);p=p-next;fclose(fp);void aversort(struct student *head)int temp;float temp_1;char temp_210;struct student *p,*q,*i;FI

21、LE *fp;p=head;while(p-next!=NULL)q=p;i=p-next;while(i!=NULL)if(i-averq-aver)q=i;i=i-next;if(q!=p)temp=p-num;p-num=q-num;q-num=temp;strcpy(temp_2,p-name);strcpy(p-name,q-name);strcpy(q-name,temp_2);temp=p-grade;p-grade=q-grade;q-grade=temp;strcpy(temp_2,p-major);strcpy(p-major,q-major);strcpy(q-major

22、,temp_2);temp_1=p-score_1;p-score_1=q-score_1;q-score_1=temp_1;temp_1=p-score_2;p-score_2=q-score_2;q-score_2=temp_1;temp_1=p-score_3;p-score_3=q-score_3;q-score_3=temp_1;temp_1=p-aver;p-aver=q-aver;q-aver=temp_1;temp_1=p-total;p-total=q-total;q-total=temp_1;p=p-next;if(fp=fopen(student_1.txt,wb+)=N

23、ULL)printf(打开student_1.txt文件失败n);exit(0);p=head;while(p!=NULL)fwrite(p,sizeof(struct student),1,fp);p=p-next;p=head;rewind(fp);printf(读出由平均成绩排序出来文件student_1.txt。n);printf(list num name grade major score_1 score_2 score_3 aver totaln);while(p!=NULL)fread(p,sizeof(struct student),1,fp);printf(student

24、%-3d %-4s %-5d %-5s %-7.2f %-7.2f %-7.2f %-4.2f %-5.2f n, p-num,p-name,p-grade,p-major,p-score_1,p-score_2,p-score_3,p-aver,p-total);p=p-next;fclose(fp);void totalsort(struct student *head)int temp;float temp_1;char temp_210;struct student *p,*q,*i;FILE *fp;p=head;while(p-next!=NULL)q=p;i=p-next;whi

25、le(i!=NULL)if(i-totalq-total)q=i;i=i-next;if(q!=p)temp=p-num;p-num=q-num;q-num=temp;strcpy(temp_2,p-name);strcpy(p-name,q-name);strcpy(q-name,temp_2);temp=p-grade;p-grade=q-grade;q-grade=temp;strcpy(temp_2,p-major);strcpy(p-major,q-major);strcpy(q-major,temp_2);temp_1=p-score_1;p-score_1=q-score_1;q

26、-score_1=temp_1;temp_1=p-score_2;p-score_2=q-score_2;q-score_2=temp_1;temp_1=p-score_3;p-score_3=q-score_3;q-score_3=temp_1;temp_1=p-aver;p-aver=q-aver;q-aver=temp_1;temp_1=p-total;p-total=q-total;q-total=temp_1;p=p-next;if(fp=fopen(student_1.txt,wb+)=NULL)printf(打开student_1.txt文件失败n);exit(0);p=head

27、;while(p!=NULL)fwrite(p,sizeof(struct student),1,fp);p=p-next;p=head;rewind(fp);printf(读出由平均成绩排序出来文件student_1.txt。n);printf(list num name grade major score_1 score_2 score_3 aver totaln);while(p!=NULL)fread(p,sizeof(struct student),1,fp);printf(student %-3d %-4s %-5d %-5s %-7.2f %-7.2f %-7.2f %-4.2f

28、 %-5.2f n, p-num,p-name,p-grade,p-major,p-score_1,p-score_2,p-score_3,p-aver,p-total);p=p-next;fclose(fp);void Bfindsort()int i,k,a=0,b=0,low,high,m;float score,score_1100;struct student *p;FILE *fp;p=(struct student *)malloc(sizeof(struct student);if(fp=fopen(student_1.txt,rb)=NULL)printf(打开student

29、_1.txt文件失败n);exit(0);for(i=0;p-next!=NULL;i+) fread(p,sizeof(struct student),1,fp);score_1i=p-total;printf(输入需要查询分数:);scanf(%f,&score);low=0;high=i-1;k=i;m=(low+high)/2;while(high=low) if(score_1mscore) high=m-1;elselow=m+1;m=(low+high)/2;for(i=high+1;score_1i=score&i0;i-)b+;printf(输出该总分数人数%dn,a+b);

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服