版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、“学生学习成绩管理系统”用于对学生学习成绩数据文件的新文件创建和老文件管理,并可以进行密码设置。具体要求实现的功能如下:1、输入添加记录:将每一个学生的学号、姓名和各科学习成绩作为一个记录进行输入或添加。要求经过密码验证后能建立一个新的数据文件或给已建立好的数据文件增加记录。2、显示、查询记录:能按学生姓名(或学号)显示、查询一个或多个学生的各门(或某门)功课的成绩和平均成绩。3、修改记录:可以对数据文件中的任意记录的数据进行修改,在修改前后对该记录的内容进行显示,并设确认提示。(要求设置密码,验证通过后方可进入修改环节)4、删除记录:可以删除数据文件中的任一记录,包括逻辑删除(具有恢复功能)
2、和物理删除(不可恢复)。(说明:该功能也应设置为经过验证密码后才可实施删除)5、成绩排序:采用不同的排序方法对单科成绩和总(或平均)成绩进行排序,但不能改变原记录的顺序。6、统计功能:(a)计算各门课程全班总成绩及平均成绩;(b)统计各门课程得分为100、9099、8089、7079、6069和不及格学生的人数,以及与全班总人数的百分比。7、其他:该软件应具有系统名称、设计单位或个人等基本信息。学生成绩管理系统源程序清单:#include#include#include#include#define null 0#define len sizeof(student)#define n 5typ
3、edef struct stuint flag;long num;char name10;int scoren;struct stu *next;student;void edit();/*编辑菜单*/void search(student *head); /*查找函数*/student *search_number(student *head,long number); /*按学号查找*/void search_name(student *head); /*按姓名查找*/student *search_score(student *head,int min,int max,int i); /
4、*按成绩查找*/void enter_record(student *p); /*输入成绩*/student *creat(void); /*建立链表*/student * insert(student *head); /*插入结点*/void count(int *p); /*计算总成绩及平均成绩*/void print(student *p); /*输出结点*/void print_title();/*输出标题*/student *delete(student *head); /*删除结点*/void recover(student *head); /*恢复删除*/void revise(
5、student *head); /*修改记录*/void tongji(student *head); /*统计*/void paixu(student *head,int m); /*排序*/int cipher_check();/*密码检测*/void set_up_cipher();/*设立密码*/student *load();/*载入*/void save(student *head); /*保存*/void about();/*关于*/int n;char cipher11=;/*字符串,保存密码*/main()char c;student *head=null;system(cl
6、s);about();for(;)system(cls);printf(*n);printf(tt welcome ton);printf(ntt the student score manage systemn);printf(*menu*n);printf(ttt1. creat the recordn);printf(ttt2. load the filen);printf(ttt3. edit the recordn);printf(ttt4. about designn);printf(ttt5. quitn);printf(*n); printf(ntttenter your ch
7、oice(15):);for(;) c=getchar(); if(c=n) continue; else if(c5) printf(tttenter your choice(15):); else break; getchar();switch (c) case 1: head=creat(); if(head=null) printf(empty record!nnenter any key to continue.n); getch(); break; set_up_cipher(); printf(enter any key to edit menu.); getch(); edit
8、(head);break; case 2: head=load(); if(head=null) printf(nenter any key to continue.); getch();break; printf(enter any key to edit menu.); getch(); edit(head); break; case 3:edit(head);break; case 4:about();break; case 5:exit(0); void edit(student *head)/*编辑菜单*/char c,m;int i,f=0;for(;)system(cls);pr
9、intf(*edit*menu*n);printf(ttt1.save the record.n);printf(ttt2.insert a record.n);printf(ttt3.delete a record.n);printf(ttt4.recover the record.n);printf(ttt5.revise the record.n);printf(ttt6.search records.n);printf(ttt7.sort the records.n);printf(ttt8.tongji the records.n);printf(ttt9.change the pa
10、ssword.n);printf(ttt0.return to main menu.n);printf(*n);printf(tttenter your choice(09):);for(;) c=getchar(); if(c=n) continue; else if(c9) printf(tttenter your choice(09):); else break; switch (c) case 1:save(head);f=0;break; case 2: printf(please enter the right password:n); if(cipher_check()=0) p
11、rintf(wrong password!n); break; head=insert(head);f=1;break; case 3: printf(please enter the right password:n); if(cipher_check()=0) printf(wrong password!n); break; head=delete(head);f=1;break; case 4: printf(please enter the right password:n); if(cipher_check()=0) printf(wrong password!n); break;
12、recover(head);f=1;break; case 5: printf(please enter the right password:n); if(cipher_check()=0) printf(wrong password!n); break; revise(head);f=1;break; case 6: search(head);break; case 7: printf(sort on which subject?n); printf(score1(1)/score2(2)/score3(3)/sum(4)n); for(;) scanf(%c,&m); if(m=n) ;
13、 else if(m=1&mnum);head=null;while(p1-num!=0) n+; enter_record(p1); if(n=1) head=p1; else p2-next=p1; p2=p1; p1=(student *)malloc(len); printf(please enter next number(0 to end):n); scanf(%ld,&p1-num); if(n!=0) p2-next=null;free(p1);return head;student * insert(student *head) /*插入结点*/student *p1,*p2
14、,*new_node;for(;) new_node=(student *)malloc(len); if(new_node=null) printf(database is full,cant add more record.n); return null; printf(nplease enter the number you want to insertn(enter 0 to end):); scanf(%ld,&new_node-num); if(new_node-num=0) break; for(p1=head,p2=null; p1!=null&(new_node-num)(p
15、1-num); p2=p1,p1=p1-next) ; if(p1!=null&(p1-num)=(new_node-num)&p1-flag=1) char c; printf(this number already exists:n); print_title(); print(p1); printf(cover or not?(y/n)?); for(;) c=getchar(); if(c=n|c=n) free(new_node);break; else if(c=y|c=y) free(new_node);enter_record(p1);break; else if(c!=n)
16、printf(error!enter again:); else continue; else if(p1!=null&(p1-num)=(new_node-num) n+; free(new_node); enter_record(p1); else n+; enter_record(new_node); new_node-next=p1; if(p2=null) head=new_node; else p2-next=new_node; return head;student *delete(student *head) /*删除结点*/long number;char c;student
17、 *p1,*p2;for(;) printf(please enter the number you want to delete(enter 0 to end):n); scanf(%ld,&number); if(!number) break; for(p1=head,p2=null; p1!=null&p1-num!=number; p2=p1,p1=p1-next) ; if(p1=null|p1-flag=0) printf(this number doesnt exist.n); else print_title(); print(p1); printf(delete this r
18、ecord?n); printf(sure(s)/cancle(c)/delete thoroughly(t)n); for(;) c=getchar(); if(c=c|c=c) break; else if(c=s|c=s|c=t|c=t) n-; if(c=s|c=s) p1-flag=0; else if(p2=null) head=p1-next; else p2-next=p1-next; free(p1); break; else if(c!=n) printf(error!enter again:); return head;void recover(student *head
19、) /*恢复删除*/student *p;long number;printf(recover which number?n);scanf(%ld,&number);if(number=0) return;p=search_number(head,number);if(p=null) printf(cant recover this number!n);else if(p-flag=1) printf(this number has not been deleted.n);else n+;p-flag=1;printf(recover success!n);void revise(studen
20、t *head) /*修改记录*/char c;long number;student *p1;for(;) printf(which number do you want to revise?n(enter 0 to end):); scanf(%ld,&number); if(number=0) return; p1=search_number(head,number); if(p1=null|p1-flag=0) printf(this number doesnt exist.n);continue; print_title(); print(p1); printf(do you wan
21、t to revise the record?(y/n)n); for(;) c=getchar(); if(c=n) continue; else if(c=n|c=n) break; else if(c=y|c=y) printf(please enter new record:n); enter_record(p1); printf(the new record is:n); print_title(); print(p1); break; else printf(error,enter again:); void search(student *head) /*查找函数*/char c
22、;int i,min,max;long number;student *p;printf(please enter search conditions:n);printf(all(a)/number(n)/name(m)/score(s)/return(r)n);for(;) c=getchar(); if(c=n) continue; else if(c=s) printf(which couse do you want to search?n); printf(score1(1)/score2(2)/score3(3)/total(4)/average(5); for(;) c=getch
23、ar(); if(c=n) continue; else if(c0&cnext,min,max,i) print(p); else switch(c) case a: print_title(); for(p=head;p!=null;p=p-next) if(p-flag=1) print(p); break; case n: printf(what number do you want to search?n); scanf(%ld,&number); p=search_number(head,number); if(p=null|p-flag=0) printf(this number
24、 doesnt exist!n); else print_title(); print(p); break; case m: search_name(head);break; case r: return; default :printf(this condition doesnt exist,pleaseenter again:n); printf(all(a)/number(n)/name(m)/score(s)/return(r)n); continue; printf(please enter search conditions:n); printf(all(a)/number(n)/
25、name(m)/score(s)/return(r)n); student *search_number(student *head,long number) /*按学号查找*/student * p;for(p=head;p!=null&p-num!=number;p=p-next);return p;void search_name(student *head) /*按姓名查找*/student *p1;char *p,str10;p=str;printf(please enter the name you want to search:n);scanf(%s,p);for(p1=head
26、;p1!=null;p1=p1-next) if(p1-flag=0) continue; if(strcmp(p,p1-name)=0) break; if(p1=null) printf(this people doesnt exist.n);else print_title(); for(;p1!=null;p1=p1-next) if(strcmp(p,p1-name)=0&p1-flag=1) print(p1); student *search_score(student *head,int min,int max,int i) /*按成绩查找*/student *p1;for(p
27、1=head;p1!=null;p1=p1-next) if(p1-flag=1&p1-scorei=min&p1-scoreinext) if(p-flag=0) continue; numberi=p-num; i+; for(i=0;iscorem; for(j=i+1;jscoremmax) max=p-scorem; k=j; if(k!=i) t=numberi; numberi=numberk; numberk=t; printf(*n);if(m=3) printf(sord by sum score:n);else printf(sord by score%d:n,m+1);
28、printf(mingci );printf(number name score1 score2 score3 total avern);for(i=0;in;i+) printf(%4d ,i+1); print(search_number(head,numberi);void tongji(student *head) /*统计*/int i,sum,s,j;student *p1;printf(*n);printf( sum averagen);for(i=0;inext) if(p1-flag=1) sum+=p1-scorei; printf( score%d:%6d%9.2fn,i
29、+1,sum,(float)sum/n); for(sum=0,p1=head;p1!=null;p1=p1-next) if(p1-flag=1) sum+=p1-scoren-2;printf( sum :%6d%9.2fn,sum,(float)sum/n);printf(average:%6.2f%9.2fn,(float)sum/(n-2),(float)sum/(n-2)/n);printf(*n);printf(ge fenshuduan renshu:n);printf( 100 90-99 80-89 70-79 60-69 failn);printf( score digi
30、t rate digit rate digit rate digit rate digit rate digit raten);for(i=0;i=60;s-=10) j=0; for(p1=search_score(head,s,s+9,i); p1!=null; p1=search_score(p1-next,s,s+9,i) j+; printf(%5d,%6.2f,j,(float)j/n); for(j=0,p1=search_score(head,0,59,i); p1!=null; p1=search_score(p1-next,0,59,i) j+; printf(%5d,%6
31、.2f,j,(float)j/n); printf(n); void about()/*关于设计*/clrscr();printf(nnnnnn);printf(ttb*about*n);printf(ttb*tthe student score manage systemtt*n);printf(ttb*tttttt*n);printf(ttb*ttb llrsnake ttt*n);printf(ttb*ttb 1000000001ttt*n);printf(ttb*n);printf(ntttpress any key to return.);getch();student *load(
32、)/*载入*/file *fp;student *head=null,*p1,*p2;char c10;printf(please enter the file name:n);scanf(%s,c);if(fp=fopen(c,rb)=null) printf(can not open the file %sn,c); return head; printf(loading.n);n=0;fgets(cipher,11,fp);p1=(student *)malloc(len);if(p1=null) printf(out of memory!n); return(head); head=p1;while(!feof(fp) if(fread(p1,len,1,fp)!=1) break; n+; p1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年各工种岗位作业安全考核考前冲刺练习试题【全优】附答案详解
- 【低空经济】低空太阳能充电网络建设方案
- 2026年一级建造师之一建民航机场工程实务每日一练试卷及参考答案详解(新)
- 低空巡检平台建设方案
- 2026年客家土楼幼儿园
- 2026年地震幼儿园逃生指南
- 2025福建福州宏诚工程建设监理有限公司社会招聘4人笔试参考题库附带答案详解
- 2025福建泉州文旅集团招聘61人笔试参考题库附带答案详解
- 2025神农科技集团有限公司第一批校园招聘17人笔试参考题库附带答案详解
- 2025湖南省各市州湘能农电服务有限公司联合招聘780人笔试参考题库附带答案详解
- 基因治疗产品生产工艺清洁验证残留限度
- 2025年潍坊职业学院辅导员考试笔试题库附答案
- 2026年河南交通职业技术学院单招职业技能测试必刷测试卷附答案
- 2025年吐鲁番市法检系统招聘聘用制书记员考试(23人)模拟试卷及参考答案
- 2024年贵州省中考英语试卷(含答案)
- 三年(2023-2025)广东中考化学真题分类汇编:专题09 质量守恒定律和化学方程式(原卷版)
- 金属非金属矿山安全培训管理规定
- 2025年大学《火灾勘查-火灾痕迹鉴定》考试模拟试题及答案解析
- 2025年西藏初中班(校)招生全区统一考试语文试卷
- 昆虫旅馆课件
- 农村旧房木梁拆除方案(3篇)
评论
0/150
提交评论