数据结构课程设计学生成绩管理系统1_第1页
数据结构课程设计学生成绩管理系统1_第2页
数据结构课程设计学生成绩管理系统1_第3页
数据结构课程设计学生成绩管理系统1_第4页
数据结构课程设计学生成绩管理系统1_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、信息科修与技术彦陀数据结构课程设计(实训I)报告书题目:学生成绩管理系统专业:信息管理与信息系统班里姓至学号:指导老师:设计时间:2011年3月14日2011年3月18日数据结构课程设计(实训I)报告书11、 课程设计(实训)计划-1-2、 系统需求分析与功能设计-1-3、 总体设计-1-4、 算法说明-2-5、 系统难点分析-3-6、 系统测试-3-7、 心得体会-7-8、 参考文献-8-附录源代码-8-1.课程设计(实训)计划(1)编写算法;(2)算法测试;(3)设计实验报告:1)设计任务书2)目录3)总体设计方案(流程图)4)使用说明书及运行实例(界面)5)源代码及注释6)课程设计心得2

2、 .系统需求分析与功能设计(1)成绩管理系统主要功能:1)初始化链表2)输入数据3)显示全部记录4)查询记录(分按姓名和学号查询两种)5)删除记录6)添加记录6)学生成绩排名并显示排名(2)界面设计系统界面采用图形和数字化菜单设计(3)课程设计的要求和数据1) c语言实现2)对学生信息进行管理(包括成绩的输入、输出、查询,删除、排序、退出)3)学生信息:基本信息:学号、姓名、性别、成绩等学生成绩输入(一次性输入一条记录并计算总分及平均分)显示信息:完成全部学生记录的显示查询信息:完成按学号和按姓名查询记录,并显示删除信息:按学号删除信息排序:按学生总分排序,显示排名4)应提供一个主界面调用各项

3、功能,使得操作界面清晰美观5)退出系统,记录无保存3 .总体设计1、功能模块:(1)成绩输入功能(2)成绩输出功能(3)成绩查询功能(4)删除功能排序功能(6)退出系统2、详细设计:(1)初始化学生信息表:申请头结点STU*head,head->next=NULL;实现此操作(2) 成绩输出模块:voidxianshi(L)voidpaixu(L)voidchaxun(L)通过此输出信息(3)查询模块:voidchanzhao(L)实现个种查找功能(4) 删除功能:voidshanchu(L)(5) 排序功能:voidpaixu(L)3、总体设计方案程序流程图:结束4、算法说明函数调用V

4、oidmain()主函数(内含初始化链表head=(STU*)malloc(sizcof(STU);hcad->ncxt=NULL>主界面、模块应用switch。语句);Voidshuru(L)仓ij建输入数据:r=(STU*)malloc(sizeof(STU)请结点输入数据,插入到链表,r,next=NULL;s->next=r;s=r;保存;向为节点Voidxianshi(L)显示学生信息:应用循环语句while(q->next!=tail)输出每一'节点数据,直至q指tail=NULL;Voidchaxun(L)查找学生信息并显示结果:分按学号和姓名查询

5、并输出查找的信息,switch做判断按何种方式查询,while。循环语句进行匹配查询,知道找到为止,引用strcmp()函数进行匹配;Voidchazha"L,n。)按要求查找记录:while()语句循环按学号进行查找;Voidtianjia(L)尾插法插入数据,p2=(STU*)malloc(sizeof(STU涧请结点,输入数据,找至U尾结点for(p3=L;p3->next!=NULL;p3=p3->next),插入链表p3->next=p2;Voidgengxin(L)修改学生宿息:查找函数chazha。找到要修改的节点,再进行修改Voidshanchu(L

6、)删除学生记录:while(strcmp(p->sname,name)!=O)&&p->next!=NULL)iic到耍删除的节点,进彳丁删除;Voidmingci(L)为学生成绩排名并显示排名;冒泡排序法给链表安总成绩排名,然后for。循环输出排序完的链表数据。5、系统难点分析1、链表的排疗;,只能做到初步的排序,不能实现对成绩相同的学生排名相同功能;2、查找功能不够强大,对字符串的查询比如不区分大小写功能不能实现;3、对各种输入值不加于区分,比如姓名写成数字,年龄的限制(1-100)4、程序重复的语句多、繁琐,不善应用函数的调用。6、系统测试源代码(见附录)调试

7、运行如下:(如图1、图2)O.C:n包工伟区妞Hudi,品 j S<wrce Fleaglllitfslc,£|msin.c-Header Ries) liftfi Rcwuicc filespHng%入熟1学成绩*是?;份人“叶*皿0):scinfCV.tpiAsrittxue):uane(Ai->stwxue<fl.t|pi->sriuxue>iae.a)酬:wrwz':scaaF(#V.&Ai->sMxwe)阿inH入英信廉绩镇系是N份人“叶>yin剜):甲Linking.lidoqiuA.rxe->error(s

8、>,0i»rning(5>Wi欢迎进入学生成缔管理二输入0返回«1输入1输入学士信息二输入2显示学生信息二输入3查询学生信息二输入4添加学生信息二输入5更新学生信息;输入6删除学生信息;输入7计算并显示学生排名10科入错误!醮害整心冲畀输入MJIMX.贝gMMX."K畀输入1输入学生信息富畀输入2显示学生信息畀输入3查询学生信息"畀输入4添知学生信息一畀输入5更新学生信息;畀输入6删除学生信息汀输入?计算并显示学注排名"图3输入测试:10输入U1的:查看输入除主界面外的序号可否进行操作。正确输出:输入错误!请慎重选择。实际输出:如下

9、图所示。当前状态:通过(实际输出与正确相符)。测试结果分析:测试策略:输入一个主界面不包含的选项。得到数据显示输入错误。(如图3)!:输入1输入5 :输入«锚入! sfefA砌入错误!«啪入!:输入«1输入3查询学生信息i4添加学生佶怠.5更新学生信忌1 16删除学主信息.7初算并显示学生排名七”Anru#x于半*决灶 如于王欣顷m牲*! 1输入学生信息 2显示学生信怠n3查询学生信息 添加学生信怠J15更新学生信忌 图4输入测试:输入口的:a正确输出:查看输入字符可否进行操作。输入错误!请慎重选择。实际输出:(图4)当前状态:通过(实际输出与正确相符)。测试结果

10、分析:测试策略:输入一个主界面不包含的选项。得到数据显示输入错误。图5已删测试输入:输入姓名:邱为民;输入学号:I:输入性别:1为男;输入年龄:21;输入语文成绩8&数学成绩82;英语成绩89;一个学生信息登记完毕。再输入另一个学生数据:输入姓名:陈婷婷;输入学号:1:输入性别:测试U的:设计该输入的U的在于测试程序在登记学生信息方面是否存在无法登记学生信息、在选择登记学生信息时是否没有出现相应界面等情况以及能否正确输入等功能。正确输出:输入姓名:邱为民;输入学号:h输入性别:1为男;输入年龄:21;输入语文成绩8”输入数学成绩82:输入英语成绩89选择是否输入信息请按(1、0):输入

11、姓名:陈婷婷;输入学号:1;输入性别:0:输入年龄:实际输出:如上(图5)输出界面。当前状态:已改正(实际输出与正确输出不符,但现在已修改正确)测试结果分析:测试策略在于输入一组数据后以便后面的操作完成学生信息的登记。得到的数据由上面的截图(图5)证明。测试输入:2选择显示测试目的:测试显示功能是否能够实现正确输出:按姓名、学号、性别、年龄、语文、数学、英语、平均分及总分显示学生信息。实际输出:如下图(图6)所示。当前状态:通过(实际输出与正确相符)。测试结果分析:测试策略:选择查找看其是否正确找到所查找数据。得到数据结果显示查找无误。图6已删测试输入:3选择查找测试目的:测试查找功能是否能够

12、实现正确输出:1按学号查询2按姓名查询。返回主菜单选择1请输入要查找的学号:1查找结果:既要查找的数据。查询完毕或没有要查询的记录!实际输出:如下图(图7)所示。当前状态:通过(实际输出与正确相符)。测试结果分析:测试策略:按学号查找,首先要输入对应的数据,接着成功查找。显示的数据是按学号查找的结果,无差错。图7已删测试输入:4选择添加学生数据。测试目的:查看添加功能是否能够运行。正确输出:;输入要添加的姓名:小丘;输入添加的学号:7;输入性别(1为男,。为女):0:输入年龄:19;请你输入语文成绩:88;输入数学成绩:85;输入英语成绩:90:此信息已添加。并且再次查询。实际输出:如下图(图

13、8)所示。当前状态:通过(实际输出与正确相符)。测试结果分析:测试策略:分别输入提示信息查看添加功能是否能够运用。通过再次查询显示添加无误。图8已删图9已删测试输入:5选择修改学生数据。测试目的:测试是否能够实现修改功能。正确输出:输入要修改的人名:小丘;输入新姓名:小球球;输入新学号(原来是学号5):5;输入新性别:(1是男。是女)0;输入年龄(原来年龄是19)19;输入语文成绩(原来是88.000000分):88:输入数学成绩(原来是88.000000分):85;请你输入英语成绩(原来是88.00000。分):90;提示:修改完成或没找到要修改的项!。再次查询并显示查询结果。实际输出:如上

14、图(图9)所示。当前状态:通过(实际输出与正确相符)。测试结果分析:测试策略:根据提示输入修改的数据分别观察是否正确。得到的数据是提示我输入信的数据并告诉我原来的数据,我根据提示输入新的数据,结果无误。测试输入:6选择删除操作。测试U的:测试其是否能够正确删除想要删除的数据。正确输出:请输入要删除的姓名:3;已删除!并显示新的数据。实际输出:如图(图1。)所示。当前状态:通过(实际输出与正确相符)。测试结果分析:测试策略:根据提示进行删除;系统提示删除成功。得到的数据显示显示删除成功,证明这一部分无差错。图10已删测试输入:7选择排序测试目的:看排序功能是否能够实现正确输出:按照名次、姓名、学

15、号、性别、年龄、语文、数学、英语、平均分、总分显示学生数据。实际输出:如下图(图11)所示。当前状态:通过(实际输出与正确相符)。测试结果分析:测试策略:选择排序,系统自动根据总分和平均分对数据进行排序并输出。得到的数据显示并未出错。图11已删测试输入:0选择退出。测试目的:成功退出系统。正确输出:pressanykeytocontinue实际输出:如下图(图12)所示。当前状态:通过(实际输出与正确相符)。测试结果分析:测试策略:选择退出以便成功退出系统。得到数据:无误图12已删7、心得体会这次的实训结束了,现在的我正在做着最后的工作一一填写实训报告。感触还真是很多,那儿天的坚持,每天八节课

16、就坐在电脑前敲着代码,有的时候晚上回了寝室还要继续敲。可以说我们男生还是对程序这块比较感兴趣的。但是面对这么大的一个课题写这样的一个程序我还是第一次,所以对于我来说难道还是挺大的。很多时候焦头烂额心烦意乱也写不好,写出来后反复调试反复出错,简直是在考验我们的耐心。看着每个同学焦急的样子,真的有点担心在规定的期限内是不是能够完成任务。所以期间自己会想,如果将来从事了这个行业,面对更加复杂的程序更加有难度的题IT要求,心理BE力不是更大么?不管怎么样,还是要把程序写完。其中也遇到了很多困难:因为这个题u要求要有9个小题Lh而且有的小题口还要求里面还要有选择,这样难度更加提高而且更加复杂。刚开始会理

17、不出头绪,不知道该先弄哪一块。从头开始往后写整个程序是不可能的,那样会错的更加离谱,所以只好先分快些再综合起来。而且整个星期天天对着电脑敲这样一个程序确实很烦躁。但是告诉自己要坚持下去,到了最后把程序调试出来后,心里真的是激动万分,感慨也颇深:面对复杂的事情而且要长期坚持时,千万不可浮躁了事,那样欠下的债会越来越多,一定要定下心来踏踏实实的去做,我发现有了好的开始,后面再乱的思绪也会慢慢捋清楚。心态很重要,第一天还好,第一天的时候,心虚特别浮躁,显然那天的效率十分低下,回去后和朋友聊天,被开导后慢慢整理思绪平静下心来开始做,发现一切并没有原本想象的那么棘手。面对问题要自己主动去解决,程序过程中

18、难免有很多难题,别人无法帮助自己,要黑自己去努力克服才能接着做下一步。所以在完成后,除了自己完成任务的喜悦感意外,还有一些感慨,我觉得这一次我不仅仅收获了如何去写一个程序,而是如何做好一件看似棘手困难的复杂的事情。&参考文献1杨路明,C语言程序设计教程北京:邮电大学出版社,2005年12月第2版12耿国华,数据结构一C语言描述北京:高等教育出版社,2005年7月笫1版附录源代码如下:#include<stdio.h>#includc<stdlib.h>#include<malloc.h>#include<string.h>#includc

19、Mlinlist.hH/*左义结构体类型typedefstructStu(charsname20J;intsno;charsex|10;intnianling;floatyuwen;floatshuxue;floatyingyu;floatavg;floatsum:structStu*next;STU,*Linlist;voidshum(L);voidxianshi(L);voidchaxun(L);printf(H printf(H printf(H printf(Hprintf(H printfC* printf(MII输入 II输入 II输入II输入II输入 1输入 II输入0 返回1输

20、入学生信息2显示学生信息3查询学生信息4添加学生信息5更新学生信息6删除学生信息lKnnH);llnnH);llnnH);llnnH);llnnH);llnnH);llnnH);voidtianjia(L);voidgengxin(L):voidshanchu(L);voidmingci(L);STU*chazhao(LinlistUntno);/*主函数*/voidmain()(intm;STU*head;head=(STU*)malloc(sizeof(STU);hcad->next=NULL:while(m)printf(H*欢迎进入学生成绩管理*printf(M printf(&

21、quot;II输入7计算并显示学生排名INF);*、“).switch(m)casel:shuni(L);break;case2:xianshi(L);break;case3:chaxun(L);break;case4:tianjia(L);break;case5:gengxin(L);break:case6:shanchu(L):break;case7:mingci(L);break;case0:;break;default:printfC输入错误!请慎重选择nu);break;/*各子函数引STU*chazhao(LinlistLjntno)/*按学号查询/STU*r;r=L->ne

22、xt;while(r!=NULL)if(r->sno=no)returnr;r=r->next;return0;voidshum(Linlisthead)intHag=Lc,scx,sno;STU*r=NULL,*s=NULL,*m=NULL:s=hcad;while(s->next!=NULL)s=s->next;/*将指针垃于最末尾*/while(l)r=(STU*)malloc(sizeof(STU)y*申谙结点*7printf("输入姓名:");/*添加信息*/scanf(M%sr->sname);printfC输入学号:);scanf

23、(H%d&sno);m=chazhao(head.sno);whi!e(m!=NULL)m=chazhao(hcad.sno);if(m!=NULL)(printf("请你输入不重复的学号An");scanf('%d&sno);r->sno=sno;printfC输入性别(l->boy,0->girl):");do)scanf(°%d&sex);if(sex=1)strcpy(r->sex,-boyr);elseif(sex=O)strcpy(r->sex,"girlH);elsep

24、rintfd输入错误!(l->boy,0->girl):nH);while(sex!=1&&sex!=0);printf("输入年龄:");scanf(H%dH,&r->nianling);printfC输入语文成绩:H);scanf(M%f&r->yuwen);while(r->yuwen<O.OHr->yuwen>100.0)(if(r->yuwen<0.011r->yuwen>100.0)(printfC输入错误,请重新输入!心)向何(输入语文成绩:”);scanf

25、(n%f&r->yuwen);1)printff输入数学成绩:");scanf(u%f&r->shuxue);while(r->shuxue<O.OIlr->shuxue>100.0)(if(r->shuxue<0.011r->shuxue>100.0)(printfC输入错误,请重新输入!iiH);printf(“输入数学成绩:);scanf(H%f&r->shuxue);printfC输入英语成绩');scanf(H%f&r->yingyu);while(r->y

26、ingyu<O.OIlr->yingyu>100.0)(if(r->yingyu<0.011r->yingyu>100.0)(printf”输入错误,请重新输入!nH);primf(输入英语:”);scanf('%fA&r->yingy*u);r->sum=r->yuwen+r->shuxue+r->yingyu;r->avg=r->sum/3;r->next=NULL;s->next=r;s=r;printf(选择是否输入信息请按(1/0):n,r);scanf(?%d&c

27、);if(c=0)break:/*保存链表*/printf(”信息已输入!n");voidxianshi(LinlistL)STU*a=NULL;STU*p,*q,*tail*s;tail=NULL;if(L->next=NULL)(prints此表中无记录,请输入记录后在使用此功能!iT);return;Iwhile(L->next!=tail)(P=L;q=p->next;while(q->next!=tail)(if(p->next->sno>q->next->sno)s=q->ncxt;p->next=q-&g

28、t;next;q->next=q->next->next:p->next->next=q:q=s;p=p->next;q=q->next;)tail=q;)a=L->next;print”姓名t学号t性别t年龄t语文t数学t英语t平均分t总分n");for(a=L->next;a!=NULL;a=a->next)printf(M%-8s%-8d%-8s%-8d%-8.2f%-8.2f%-8.2f%-8.2f%-8.2Ana->sname,a->sno,a->sex,a->nianling,a->

29、yuwen.a->shuxue,a->yingyiLa->avg,a->sum);)voidchaxun(LinlistL)(STU*p;charname(20;intsno,n;if(L->next=NULL)(primf("此表中无记录,请输入记录后在使用此功能!E);return;while(n)printf(Hprintf(Hprintf(Hprintf(HscanfCAdA&n);杠*请选择查询方式*按学号杳询时; 2*按姓名杳询门;0* 反 叵| 主单、switch(n)n");case l:printf (”请输入要查询的

30、学号:nM);scanf(-%d&sno);printf(N* * 水学生信息 *、口);printf。姓名' (学号1性别t年龄t语文t数学t英语W);for(p=L->next:p!=NULL;p=p->next)if(p->sno)=sno)printf(H%-8s%-8d%-8s%-8d%-10.2f%-10.2f%-10.2Anp->sname,p->sno,p->sex,p->nianling,p->yuw en,p->shuxue9p->yingyu); printfC*查询完毕或没有要查询的记录! nH

31、) ;break;case 2:printf (%人输入要查询的姓名n”);scanf(n%sH.name);printf(”水*,A 学生信息 * “、); print©姓名' (学号t性别t年龄1语文t数学 (英语n”); for(p=L->next;p!=NULL;p=p->next)if(strcmp(p->sname,name)=O)printf(-%-8s%-8d%-8s%-8d%-10.2f%-10.2f%-10.2inp->sname,p->sno,p->sex,p->nianling,p->yuw en.p-&

32、gt;shuxue,p->yingyu);printC*查询完毕或没有要查询的记录! nH);break;case O:break;default:printf ("输入错误!请慎重选择)break;voidgengxin(LinlistL)STUcharname20;intsex.sno;if(L->next=NULL)printfC此表中无记录,请输入记录后在使用此功能!n,>return;1printfC*输入要修改的人需);scanf(u%sN.name);pl=L;while(pl!=NULL)(if(strcmp(p1->sname,name)=O

33、)(printfC输入新姓名/牝修改信息可scanf(-%spl->sname);printfC*输入新学号(原来是学号d):",pl->sno);scanf(-%d&sno);m=chazhao(L,sno);whilc(m!=NULL)m=chazhao(L,sno);if(m!=NULL)(printf(请你输入不重复的学号(以O返回上一级菜单scanf(H%d*&sno);pl->sno=sno;primf("输入新性别(l->boy,0->girl):");do)scanf(u%d'&sex)

34、;if(sex=l)strcpy(p1->sex,Mboyn);elseif(sex=O)strcpy(p1->sex/girlM);elseprintf("输入错误!(l->boy,0->girl):nn);while(sex!=1&&sex!=O);printf("输入年龄(原来年龄是d):",pl->nianling);scanf(H%dH,&p1->nianling);printf("输入语文成绩(原来是%f分):",pl->yuwen);scanf(H%f&p1

35、->yuwen);while(p1->yuwen<0.011p1->yuwen>100.0)(if(p1->yuwen<0.011p1->yuwen>100.0)prinlfT输入错误,请重新输入!nM);printf("输入语文成绩:);scanf(H%f&p1->yuwen);printf(输入数学成绩(原来是£分):AplAshuxue);scanf(u%f&p1->shuxue);while(p1->shuxue<O.Ollp1->shuxue>100.0)(i

36、f(p1->shuxue<0.011p1->shuxue>100.0)(printfd输入错误,请重新输入!nH);printf(输入数学成绩:“);scanf(H%fH,&pl->shuxue);)printf"输入英语成绩(原来是£分):H,pl->yingyu);scanfC1%f&p1->yingyu);while(p1->yingyu<0.011pl->yingyu>100.0)(if(p1->yingyu<0.011p1->yingyu>100.0)(pri

37、ntfd输入错误,请重新输入!nH);printf("输入英语成绩:);scanf(M%A&p1->yingyu);)p1->sum=p1->yuwen+p1->shuxue+p1->yingyu;pl->avg=pl->suni/3;pl=pl->next;)print”修改完成或没找到要修改的项!n)voidlianjia(LinlistL)(STU*p2=NULL,*p3=NULL,*m;intsex.sno;p2=(STU*)malloczcof(STU);八申请结点引if(L->next=NULL)(printf

38、("此表中无记录,请输入记录后在使用此功能!n");return;)printf("输入添加的姓名叮);scanf("s”.p2>snamc);printf(输入添加的学号:“);scanf(r%d&sno);m=chazhao(L.sno);while(m!=NULL)m=chazhao(L,sno);if(m!=NULL)(primf("请你输入不重复的学号(以O返回上一级菜单:)F);scanf(H%d&sno);I)p2->sno=sno;printfd输入性别(1->boy,0>girl):J)

39、;do)scanf(H%d'&sex);if(sex=l)strcpy(p2->sex/boyH);elseif(sex=O)strcpy(p2->sex;girlH);elseprintf(H输入错误!(l->boy,0->girl):nH);while(sex!=1&&sex!=O);printf(”输入年龄:“);scanf(u%dH,&p2->nianling);printf(输入语文成绩:”);scanf(v%f&p2->yuwen);while(p2->yuwen<0.011p2->

40、;yuwen>100.0)if(p2->yuwen<0.011p2->yuwen>100.0)prints输入错误,诘重新输入!nH);printf(”输入语文成绩:);scanf(H%fH,&p2->yuwen);(prints输入数学成绩:”);scanf(u%f&p2->shuxue);while(p2->shuxue<0.011p2->shuxue>100.0)if(p2->shuxue<0.011p2->shuxue>100.0)printf(M输入错误,请重新输入!nH);printf(输入数学成绩:”);scanf(H%fH,&p2->shuxue);)printf(H输入英语成绩f);scanf(r%f&p2->yingyu);while(p2->yingyu<0.011p2->yingyu>100.0)if(p2->yingyu<

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论