版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机科学学院计算机科学与应用系c程序设计报告成 绩 管 理 系 统 设 计学生姓名:* *学 号:1004681082班 级:计 科102指导老师:* *报告日期:2011-02-16 1.题目与要求1)问题提出本人计划编写一个学生信息管理系统,主要用来管理学生基本信息及成绩信息。2)本系统涉及的知识点单链表、结构体、函数、循环、指针、选择3)功能要求(1)建立学生信息,每个学生的信息包括:学号、姓名、成绩。(2)求出每个学生的总分和平均分。(3)查找:根据学号、姓名、成绩、总分、平均分中任一项查询该生的基本信息。(4)排序:根据学号或总分将学生的信息按照一定的顺序进行排序。(5)根据需要修
2、改学生的基本信息。(6)根据实际情况删除某生的信息。(7)根据实际情况插入某生的信息。(8)输出。2.功能设计1)算法设计(1)利用switch语句设计如图所示的主菜单。 请输入选项编号1查 找2排 序3学生信息的修改4链表的删除5链表的插入6链表的输出7退 出 图1 学生信息管理系统主菜单(2)选择1后,调用查找函数search,进入查找函数后利用switch语句实现如图所示的查找子菜单。该菜单中每个选项调用一个函数(除选项10外)。查找菜单请输入选项编号1按学号查找2按姓名查找3按c语言分数查找4按高数分数查找5按英语分数查找6按总分查找7按平均分查找8总分前三名9不及格者10班级成绩情况
3、11退出 图2 查找子菜单(3)选项2后, 调用排序函数arrange,进入查找函数后利用switch语句实现如图所示的查找子菜单。该菜单中每个每个选项调用一个函数(除3外)。排序菜单 输入选项编号1按学号排序2按总分排序3退 出 图3 排序子菜单(4)选择3后,调用修改函数correct,修改某个学生的信息。(5)选择4后,调用删除函数del,根据需要删除某个学生的信息。(6)选择5后,调用插入函数insert,根据需要插入某个学生的信息。(7)选择6后,调用输出函数output,将每个学生的信息全部输出。(8)选择7后,退出学生信息管理系统。(9)根据所选菜单编号编写相应代码。(a)函数w
4、elcome:欢迎用户使用。(b)函数about: 简要介绍本程序。(c)函数create:创建单链表,采用循环输入的方式输入学生的基本信息。(d)函数snosearch:根据学号查找,输出该生的基本信息。(e)函数namesearch:根据姓名查找,输出该生的基本信息。(f)函数cyuyansearch:根据c语言成绩成绩查找,输出该生的基本信息。(g)函数gaoshusearch:根据高数成绩查找,输出该生的基本信息。(h)函数yingyusearch:根据英语成绩查找,输出该生的基本信息。(i)函数zongfensearch:根据总分查找,输出该生的基本信息。(j)函数averagese
5、arch:根据平均分查找,输出该生的基本信息。(k)函数qsmsearch:查看班级前三名学生信息情况。(l)函数bujigesearch:查看班级不及格学生信息情况。成绩菜单 输入选项编号1c语言不及格者2高数不及格者3英语不及格者4不及格者5全不及格者6退出 图4 成绩子菜单(m)函数classscore:查看班级成绩平均分整体情况。(n)函数snoarrange:按照学号将学生信息进行排序。(o)函数zongfenarrange:按照总分将学生信息进行排序。(n)函数over:感谢用户使用。2)画模块图按学号查找显示欢迎界 面按姓名查找显示程序介 绍按c语言不及格者查 找按成绩查找输 入
6、成 绩按高数不及格者查 找按总分查找查 找 排 序主模块按平均分查 找修改学生信 息按英语不及格者查 找按前三名查 找 删除学生信 息按不及格查 找 插入学生信 息按不及格者查 找按学号排序 输出学生信 息按全不及格者查 找按总分排序 显示结束界 面图5 成绩管理系统模块图3)画部分模块的流程图开始输入学生信息pnew-score=pnew-score1+pnew-score2+pnew-score3;pnew-avg=pnew-score/3pnew-score=pnew-score1+pnew-score2+pnew-score3;pnew-avg=pnew-score/3输入学生信息结束
7、p-next=nullyna=pnew-sno图6 creat函数流程图开始输入at+t=num+1yna=p-snop=p-nextny输出学生信息结束 图7 snosearch函数流程图开始输入bt=0;flag=0;p=head;t+nyt=num+1k=0yflag=0nyn结束flag=1输出学生信息p=p-next图8 namesearch函数流程图 开始s=0;r=0;w=0;t=0m=0;n=0;p=head;nys!=nump=head;s=0s+nys!=numtscorens+yt=p-scoret=p-scorenp=p-nexty输出学生信息p=headp=p-nex
8、t结束 图9 qsmsearch函数流程图开始p=head输入bna=1nya1&anextnyn=3i=0j=0ni!=a-2nj!=a-2yyp=p-nextp=p-nexti+j+p-next=nullp-next=p-next-nextnum=num-1结束 图10 del函数流程图 3.程序代码设计1.main函数:(1)函数原型:void main()(2)功能:分别调用 welcome函数、about函数、create函数、search函数、del函数、insert函数、output函数和over函数。(3)变量及类型:int m,n; /switch选择变量(4)说明:main
9、函数中用到system(cls),其作用是清除屏幕上的文字。2.welcome函数:(1)函数原型:void welcome()(2)功能:显示欢迎用户使用界面。(3)说明:getchar()函数用于使屏幕停止,按下enter键后再执行下面程序。3.about函数:(1)函数原型:void about()(2)功能:简要介绍本程序。(3)说明:getchar()函数用于使屏幕停止,按下enter键后再执行下面程序。4.create函数:(1)函数原型:void create()(2)功能:利用单链表、while循环和 scanf函数完成对学生信息的输入(学号、姓名、三门成绩),并计算出总分和平
10、均分,再存入单链表中。(3)变量及类型:int a=0; /判断学生信息输入是否结束(学号是否为0)struct student *p,*pnew; /结构体指针指向结点(4)说明:学生的人数不受限制,输入结束符号即可。5.search函数:(1)函数原型:void search()(2)功能:通过选项来选择调用不同函数,完成不同的功能。(3)变量及类型:int m,n; /switch选择变量6.snosearch函数:(1)函数原型:void snosearch()(2)功能:通过学号来查找该生的基本信息。(3)变量及类型:int a,t; /a用来存储学号;t用来计数,以便跳出循环 st
11、ruct student *p; /指针p用于指向头结点7.namesearch函数:(1)函数原型:void namesearch()(2)功能:通过姓名来查找该生的基本信息。(3)变量及类型:int k,t,flag; /k用于判断;t用于计数;flag起标记作用 char b20; /数组b用于存放姓名 struct student *p; /指针p用于指向头结点8.cyuyansearch函数:(1)函数原型:void cyuyansearch()(2)功能:通过c语言成绩来查找该生的基本信息。(3)变量及类型:int t,flag; /t用于计数;flag起标记作用 float a;
12、 /a用于存放c语言成绩 struct student *p; /指针p用于指向头结点9.gaoshusearch函数:(1)函数原型:void gaoshusearch()(2)功能:通过高数成绩来查找该生的基本信息。(3)变量及类型:int t,flag; /t用于计数;flag起标记作用 float b; /b用于存放高数成绩 struct student *p; /指针p用于指向头结点10.yingyusearch函数:(1)函数原型:void yingyusearch()(2)功能:通过英语成绩来查找该生的基本信息。(3)变量及类型:int t,flag; /t用于计数;flag起标
13、记作用 float c; /c用于存放英语成绩 struct student *p; /指针p用于指向头结点11.zongfensearch函数:(1)函数原型:void zongfensearch()(2)功能:通过总分来查找该生的基本信息。(3)变量及类型:int t,flag; /t用于计数;flag起标记作用 float d; /d用于存放总分 struct student *p; /指针p用于指向头结点12.averagesearch函数:(1)函数原型:void averagesearch()(2)功能:通过平均分来查找该生的基本信息。(3)变量及类型:int t,flag; /t
14、用于计数;flag起标记作用 float e; /e用于存放平均分 struct student *p; /指针p用于指向头结点13.qsmsearch函数:(1)函数原型:void qsmsearch()(2)功能:显示前三名的基本信息(3)变量及类型:int s=0,r=0,w=0; /s,r,w均用做计数 float t=0,m=0,n=0; /t,m,n均用做记录最高分 struct student *p; /指针p用于指向头结点14. bujigesearch函数:(1)函数原型:void bujigesearch()(2)功能:通过switch选择输出不及格情况。(3)变量及类型:
15、int n,m,r,s,t,k,h,flag; /n,m为switch选择变量;r,s,t,k,h用做计数;flag起标记作用 struct student *p; /指针p用于指向头结点15.classscore函数:(1)函数原型:void classscore()(2)功能:查看班级成绩的整体情况。(3)变量及类型:int i; /i用于for循环 float a=0,b=0,c=0,d,e; /a,b,c,d,e均用于中间变量 struct student *p; /指针p用于指向头结点16.arrange函数:(1)函数原型:void arrange()(2)功能:通过选项来选择调用
16、不同函数,完成不同的功能。(3)变量及类型:int a,m; /a,m均为switch选择变量;17.snoarrange函数:(1)函数原型:void snoarrange()(2)功能:将学生信息按照学号进行排序。(3)变量及类型:int a,c,i,j; /a为switch选择变量;c用于计数;i,j用于for循环 struct student *p,*q,*k,*newp,*newhead;/指针p,q,k,newp,newhead均用于创建新链表18.zongfenarrange函数:(1)函数原型:void zongfenarrange()(2)功能:将学生信息按照总分进行排序。(
17、3)变量及类型:int a,c,i,j; /a为switch选择变量;c用于计数;i,j用于for循环 struct student *p,*q,*k,*newp,*newhead;/指针p,q,k,newp,newhead均用于创建新链表19. correct函数:(1)函数原型:void correct()(2)功能:修改某生的信息。(3)变量及类型: int t,a,b,m,flag; / t用于计数;a用于判断;b,m为switch选择变量;flag起标记作用 struct student *p; /指针p用于指向头结点20.del函数:(1)函数原型:void del()(2)功能:
18、删除单链表中某生的基本信息。(3)变量及类型:int a,n,i,j; /a存放要删除的结点;n为switch选择变量;i,j用于for循环 struct student *p; /指针p用于指向头结点21.insert函数:(1)函数原型:void insert()(2)功能:将某生的基本信息插入单链表中。(3)变量及类型: int a,n,i,j; / a存放要插入的结点;n为switch选择变量;i,j用于for循环struct student *p,*q; /指针p用于指向头结点;指针q用于指向新生信息的结点22.output函数:(1)函数原型:void output()(2)功能:
19、输出每个学生的基本信息。(3)变量及类型:int s=0; /s用于计数 struct student *p /指针p用于指向头结点23.over函数:(1)函数原型:void over()(2)功能:显示感谢用户使用界面。4.c程序设计总结(1)程序调试情况 在编写完程序后,执行时总会出现很多错误,便又重新检查程序,改写程序,再经过不断的调试,最终将程序改写完成。(2)本人在程序中的感想 程序在编写时总是感觉非常难,而且还会出现很多小错误,从而导致出很多麻烦,最终经过耐心检查,才将问题解决。5.结束语 由于本人完成此程序是在家中完成,又无网络可以查询,故只能参考课本,在本人的独立下完成此程序
20、,在此须感谢白燕老师。 6.参考文献1尹业安 白燕.c语言程序设计.国防科技大学出版社,2008.87.附录:程序清单#include#include#includevoid welcome();void about();void create();void search();void snosearch();void namesearch();void cyuyansearch();void gaoshusearch();void yingyusearch();void zongfensearch();void averagesearch();void qsmsearch();void bu
21、jigesearch();void classscore();void arrange();void snoarrange();void zongfenarrange();void correct();void del();void insert();void output();void over();struct studentint sno;char name20;float score1;float score2;float score3;float score;double avg;struct student *next;struct student *head;int num=0;
22、void main()int m,n;welcome();about();system(cls);create();system(cls);z:printf(1查找n);printf(2排序n);printf(3学生信息的修改n);printf(4链表的删除n);printf(5链表的插入n);printf(6链表的输出n);printf(7退出n);scanf(%d,&n);switch(n)case 1:system(cls);search();system(cls);goto z;case 2:system(cls);arrange();system(cls);goto z;case 3
23、:system(cls);correct();system(cls);goto z;case 4:system(cls);del();system(cls);goto z;case 5:system(cls);insert();system(cls);goto z;case 6:system(cls);output();system(cls);goto z;case 7:system(cls);f:printf(你真的想退出吗n 1是 2否n);scanf(%d,&m);switch(m)case 1:break;case 2:goto z;default:system(cls);printf
24、(你的输入有误n);goto f;break;default:system(cls);printf(你的输入有误n);goto z;system(cls);over();void welcome()printf(nnn);printf( 【】【】n);printf( |n); printf( | 欢迎使用 |n);printf( | |n);printf( | |n);printf( | 学 生 成 绩 管 理 系 统 |n);printf( | |n);printf( | |n);printf( | |n);printf( | 制作人:* |n);printf( | 指导老师:* |n);p
25、rintf( | |n);printf( |n);printf( 【】【】n);getchar();void about()system(cls);printf(nnn);printf(ttt关于学生管理系统的说明nnn);printf( 本程序采用链表和函数编写完成,主要功能有查找,链表的删除,链表的插入和链表的输出.n);printf(程序中主要运用链表部分和函数的知识.程序优点是:学生人数可以根据实际情况进行更改;n缺点是:部分程序过于复杂,程序功能不太齐全;);printf(本程序已经经过多次测试,尚未出现问题.nn若在使用中出现错误,还请谅解!);getchar();void cre
26、ate()int a=0;struct student *p,*pnew;head=pnew=p=(struct student *)malloc(sizeof(struct student);printf(请依次输入每位同学的学号,姓名和3门成绩,按0键结束n);printf( 学号姓名c语言高数英语n) ;scanf(%d%s%f%f%f,&pnew-sno,pnew-name,&pnew-score1,&pnew-score2,&pnew-score3);pnew-score=pnew-score1+pnew-score2+pnew-score3;pnew-avg=pnew-score/
27、3.0;pnew-avg=(double)( (int)(pnew-avg*100)*0.01 );while(1)num+;p-next=pnew;p=pnew;pnew=(struct student *)malloc(sizeof(struct student);scanf(%d,&pnew-sno);if(a=pnew-sno)break;scanf(%s%f%f%f,pnew-name,&pnew-score1,&pnew-score2,&pnew-score3);pnew-score=pnew-score1+pnew-score2+pnew-score3;pnew-avg=pnew
28、-score/3.0;pnew-avg=(double)( (int)(pnew-avg*100)*0.01 );p-next =null; void search()int m,n;a:printf(1按学号查找n); printf(2按姓名查找n);printf(3按c语言分数查找n);printf(4按高数分数查找n);printf(5按英语分数查找n);printf(6按总分查找n);printf(7按平均分查找n);printf(8总分前三名n);printf(9不及格者n);printf(10班级成绩情况n);printf(11退出n);scanf(%d,&n);switch(n)
29、case 1:snosearch();goto a;case 2:namesearch();goto a;case 3:cyuyansearch();goto a;case 4:gaoshusearch();goto a;case 5:yingyusearch();goto a;case 6:zongfensearch();goto a;case 7:averagesearch();goto a;case 8:qsmsearch();goto a;case 9:bujigesearch();goto a;case 10:classscore();goto a;case 11:system(cl
30、s);d:printf(你真的想退出吗n 1是 2否n);scanf(%d,&m);switch(m)case 1:break;case 2:goto a;default:system(cls);printf(你的输入有误n);goto d;break;default:system(cls);printf(你的输入有误n);goto a;void snosearch()int a,t;struct student *p;system(cls);printf(请输入学号:);s:scanf(%d,&a);t=0;p=head;printf(n学号为%d的成绩如下:n,a);printf( 学号姓
31、名 c语言 高数 英语 总分 平均分n);while(1) t+;if(t=num+1)system(cls);printf(你输入的学号有误n请重新输入学号:);goto s;if(a=p-sno)printf(%d%s %.2f %.2f %.2f %.2f %.2lfn,p-sno,p-name,p-score1,p-score2,p-score3,p-score,p-avg);break;p=p-next;printf(nnn);void namesearch()int k,t,flag;char b20;struct student *p;system(cls);printf(请输入
32、姓名:);t:scanf(%s,b);t=0;flag=0;p=head;printf(n姓名为%s的成绩如下:n,b);printf( 学号姓名 c语言 高数 英语 总分 平均分n);while(1)t+;if(t=num+1)if(flag=0)system(cls);printf(你输入的姓名有误n请重新输入姓名:);goto t;elsebreak;k=strcmp(p-name,b);if(k=0)flag=1;printf(%d%s %.2f %.2f %.2f %.2f %.2lfn,p-sno,p-name,p-score1,p-score2,p-score3,p-score,
33、p-avg);p=p-next;printf(nnn);void cyuyansearch()int t,flag;float a;struct student *p;system(cls);printf(请输入c语言成绩:);u:scanf(%f,&a);t=0;flag=0;p=head;printf(nc语言成绩为%.2f的成绩如下:n,a);printf( 学号姓名 c语言 高数 英语 总分 平均分n);while(1)t+;if(t=num+1)if(flag=0)system(cls);printf(你输入的c语言成绩有误n请重新输入c语言成绩:);goto u;elsebreak
34、;if(a=p-score1)flag=1;printf(%d%s %.2f %.2f %.2f %.2f %.2lfn,p-sno,p-name,p-score1,p-score2,p-score3,p-score,p-avg);p=p-next;printf(nnn);void gaoshusearch()int t,flag;float b;struct student *p;system(cls);printf(请输入高数成绩:);v:scanf(%f,&b);t=0;flag=0;p=head;printf(n高数成绩为%.2f的成绩如下:n,b);printf( 学号姓名 c语言
35、高数 英语 总分 平均分n);while(1)t+;if(t=num+1)if(flag=0)system(cls);printf(你输入的高数成绩有误n请重新输入高数成绩:);goto v;elsebreak;if(b=p-score2)flag=1;printf(%d%s %.2f %.2f %.2f %.2f %.2lfn,p-sno,p-name,p-score1,p-score2,p-score3,p-score,p-avg);p=p-next;printf(nnn);void yingyusearch()int t,flag;float c;struct student *p;sy
36、stem(cls);printf(请输入英语成绩:);w:scanf(%f,&c);t=0;flag=0;p=head;printf(n英语成绩为%.2f的成绩如下:n,c);printf( 学号姓名 c语言 高数 英语 总分 平均分n);while(1)t+;if(t=num+1)if(flag=0)system(cls);printf(你输入的英语成绩有误n请重新输入英语成绩:);goto w;elsebreak;if(c=p-score3)flag=1;printf(%d%s %.2f %.2f %.2f %.2f %.2lfn,p-sno,p-name,p-score1,p-score
37、2,p-score3,p-score,p-avg);p=p-next;printf(nnn);void zongfensearch()int t,flag;float d;struct student *p;system(cls);printf(请输入总分成绩:);x:scanf(%f,&d);t=0;flag=0;p=head;printf(n总分成绩为%.2f的成绩如下:n,d);printf( 学号姓名 c语言 高数 英语 总分 平均分n);while(1)t+;if(t=num+1)if(flag=0)system(cls);printf(你输入的总分成绩有误n请重新输入总分成绩:);
38、goto x;elsebreak;if(d=p-score)flag=1;printf(%d%s %.2f %.2f %.2f %.2f %.2lfn,p-sno,p-name,p-score1,p-score2,p-score3,p-score,p-avg);p=p-next;printf(nnn);void averagesearch()int t,flag;double e;struct student *p;system(cls);printf(请输入平均分成绩:);y:scanf(%lf,&e);t=0;flag=0;p=head;printf(n平均分为%.2f的成绩如下:n,e)
39、;printf( 学号姓名 c语言 高数 英语 总分 平均分n);while(1)t+;if(t=num+1)if(flag=0)system(cls);printf(你输入的平均分成绩有误n请重新输入平均分成绩:);goto y;elsebreak;if(e=p-avg)flag=1;printf(%d%s %.2f %.2f %.2f %.2f %.2lfn,p-sno,p-name,p-score1,p-score2,p-score3,p-score,p-avg);p=p-next;printf(nnn);void qsmsearch()int s=0,r=0,w=0;float t=0,m=0,n=0;struct st
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年家具定制协议范本综合指南
- 创新型企业知识产权保护服务协议范例
- 2024年度学生宿舍租赁协议样本
- 太阳课件模板教学课件
- 2024施工项目协议条款管理与应用
- 2024年废钢采购与销售协议范本
- 餐具买卖协议:2024新款化
- 收购快递合同范本
- 免责任合同范本
- 个人和公司劳动合同范本
- 分层次教学与个性化辅导计划
- 基于物联网的农业无人机高效配送方案
- 毛细支气管炎护理查房课件
- EHS(环境健康安全)管理制度
- GB/T 10476-2024尿素高压冷凝器技术条件
- 2024-2030年中国金融BPO行业市场发展分析及投资前景与策略研究报告
- 二年级《公共安全教育》全册教学设计
- 2024-2025学年小学科学四年级下册青岛版(六三制2024)教学设计合集
- 2024版中国血脂管理指南
- 2022下半年四川省考公务员考试行测题及解析(三十二)
- 快乐读书吧《鲁滨逊漂流记》整本书导读课 教学设计-2023-2024学年语文六年级下册统编版
评论
0/150
提交评论