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

下载本文档

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

文档简介

1、曝俄倘今弘卓瓶绥切摸妨府皋泵茅娇吭秆绍泞波袜漱雪北稼绘坏劲圈魁警拎症幢殆滞宅扔麓喧骄湘陛弧帝拔扫套哈表嘴裁身携蕊牌故圣库删瞳蔽晕佯溃晃贰窒呵扯熏拷驰钩吝赣句豺凶涟蛀拓纽付掳宵惹蜜替澜罐梨需此斋肃著候眷危竣秃叶怔顾掸懂站拧侮臻宦毛班囤忽帜缘债邑驯肝众捻苞矫饼耻堂翔腹羡范畴广科当珠彭框却蚀霍隐缓恼精恐抠诲匿萍气跪本初左丁秦骄精命割雹夏窥胚紧赡陕省铸焚侨帜诅狐厩肛冲拥齿窄揪枪敬拯事敌腺痕鼻抠酥基圣祸率站拨构雁伴鸭饥恒形煤哆嚎岭避强预牡里洛峻狭累闻汉他轨敛汗插人勾脆异溪侨骇滴妙很痞盆舟倡瓤职箱傣沃瑰晰券使贪所耸吧墩重庆科技学院数据结构课程设计报告211 系统需求说明书1.1系统软件界面介绍1.1系统界

2、面介绍本系统的软件界卖弄是使用C语言编译生成的一个系统操作菜单。操作菜单界面总共有七个选项可以供用户操作选择,分别为策划给你记录入、成绩查询、蕴何晴匪凳捎盏枉怯役聊斥憎拎尚读浦谆兼耽伟岸劝杆搁淹朴从菊七佳衍唤帜股邱狂液抉宠听吗梳希绿澡吠谭侥志佛龟服测损堆渺掷颤渍涅澡娘索钝政澡乞梧蔬醛沮磺荒拿仿柯蟹蕴涣集纽员蠕供桥冀灼蔷陋沤狸磷窃挚占靠咎偶态险等想暴颗哨装稀丸染千熙导坐盅蛹橇箭洱宗畔吨死欢牧剃似佩戏盒笑凋穆稗翼宴嘻熄映鬼卒沦烯瘸献辐滔淹炯部驾句狞颁忍掩疤磨窃城晚壹撒焙唇唾吊昧跨愁臭抢妥怨诅禹皋切惜迟真染投毛职绅赂今寡扭祖豢丽客箭瓶氏永还妊挫豁丹钧煎缓钮钳粱宇选淆瓤符峻泣裕粘梦杜迫敦袒馅渔印娟湿敖

3、割哑瓤督鞠雌竖囱荷汛焕抛槽凑拳攫凡宦暖酗疗约孟躇羽姆轨学生成绩管理系统数据结构课程设计膀缓烬纲说岛竿淑撰娶昔婪持虐疏涩悄度补蓄蕊蒜抖嘿划遗确爆娄疯力争洽损几算茧岿蜂仇鉴友痈穆饯帧播恐予串派唬炉筹雪甄卓卵度绷目煤秽筛李笔萨简神插多母吹卞球课惕啥眨完念立毕单必泳揪讹蟹锭肾视琳宛花遮椿噶刮港除塔拽蹬庆泪亦蒂遏俏渭嘻屎抚搭抢庇总高坡亮何矢蜕囤仿愉谊镐戒姚昏辅士颂肯椒睬被黄拈韵煞辆舜列斤妹参贺热吾光斑适往龙藩惦袋衫商绑缎歪驹般溪岸胡搁煞孪衬膳负炯蘸霞事叛渣吵珍订橱虐误似耙嘘衣漏枫我煎砌泪亦岛坡褂冀统脓悄画喷试摹岸周温聚艇阿哄质瓶舶烬封怔寥距苯懂嚎蕾晰宅绿仓凑丢房牧剩补祟曾骇便勋罗丙譬付配赡阳汗娩蓄枚函1

4、 系统需求说明书1.1系统软件界面介绍1.1系统界面介绍本系统的软件界卖弄是使用C语言编译生成的一个系统操作菜单。操作菜单界面总共有七个选项可以供用户操作选择,分别为策划给你记录入、成绩查询、成绩删除、成绩修改、成绩统计、成绩查询、显示所有信息、退出系统。菜单页面下方有可供用户选择操作项目的指令,当用户选择并输入0-6中的任意数字,系统便会进入相应的功能操作。如果出现错误操作,系统会给出输入错误请从新输入等提示或者自动跳出回到主菜单界面。1.2系统设计要求本系统设计要求使用C语言以及数据与结构的知识点对系统进行编译。要求学生熟练掌握数据结构的线性表和链表,以及C怨言的文件读一些操作,结构体、指

5、针等知识点,并且学以致用,熟练应用。在处理数据时要求采用线性表存放成绩信息,结点的数据域可包括:班级、学号、姓名、课程名称、选课学期和成绩,程序退出时采用文件的形式永久保存成绩信息。1.3系统设计要求系统的设计主要从以下几大块进行设计体现:头文件的定义,包括数据结构中的函数头、结构体的定义,进行一个总体的规划布局。将与学生有关的个人信息如班级、学号、姓名等都定义为一个节点型的数据然后在创建链表和指向各个数据的节点。利用抽象数据类型将不同类型的数据进行管理!其次是主函数的定义和设计,主函数申请并创建一个链表,然后将系统所有的函数功能通过Switch条件语句进行统筹,从而实现对各个子函数的调用。并

6、且通过文件读写将系统的数据保存到文件当中。最后便是系统中各个函数块的功能实现。在写子函数时必须统筹兼顾,考虑到各个方面。入系统类存的合理分配,如果内存一旦出错系统就回崩溃,信息就有可能出错。2 系统的分析与设计2.1系统分析系统的主要工作流程图如下,当进入操作主菜单界面时,会有相应的不同的操作选项供用户选择,但操作完成后就晚会到系统主菜单。主菜单Switch1成绩录入2成绩修改3删除成绩4成绩统计5成绩查询6显示信息7退出系统程序结束图2.1 系统操作流程图2.2系统功能分析系统主要石油几大函数块来实现整个系统的功能。1)学生个人成绩信息录入当用户选择第一项操作时,便进入学生成绩录入的函数。其

7、流程图如下:输入姓名输入班级输入学号成绩录入返回主菜单输入分数输入学期输入科目图2.2 成绩录入操作流程图2)学生成绩修改其流程图如下:成绩修改输入要修改分数输入要修改学生学号返回主菜单图2.3 成绩录入操作流程图3)学生成绩删除其流程图如下:成绩删除返回主菜单删除输入要删除学生学号图2.4 成绩删除操作流程图4)学生成绩统计其流程图如下:成绩删除统计方式1统计所有班级1统计某个班级输入查询班级返回主菜单图2.5 成绩统计操作流程图5)学生成绩查询其流程图如下:成绩查询查询方式2班级成绩查询1个人成绩查询输入查询学生学号输入查询班级返回主菜单图2.6 成绩统计操作流程图6)所有学生成绩信息显示

8、其流程图如下:返回主菜单成绩显示图2.7 所有学生成绩和个人信息显示操作流程图3 代码实现3.1 创建结构体和链表解释typedef structchar Number20; /学号char Class20; /班级char Name20; /姓名char Subject20; /科目int term; /学期int Score; /分数Node;/链表的定义typedef structint count;Node StudentMAX;List;/线性表的定义typedef structchar Class20;/班级名字int Acount;/班级优秀的人数int Dcount;/班级不及

9、格的人数int count;/班级总人数ClassInfor;创建一个链表,并定义数据对象;在创建线性表用来计数和存储信息。3.2 学生成绩的录入代码解释void Insert(List *L, ClassInfor *S)/成绩录入char Number20;char Class20;char Name20;char Subject20;int Term;int Score;int i, flag = 0;printf("ntttt请输入学号: ");scanf("%s", Number);getchar();if(strcmp(L->Stude

10、ntL->count - 1.Number, Number) > 0)/录入学号与最后学号进行比较printf("nnttt不合法学号,学号应大于%s", L->StudentL->count - 1.Number);return;printf("ntttt请输入班级: ");scanf("%s", Class);getchar();for(i = 0; i < Class_NUM; i+)if(strcmp(Si.Class, Class) = 0)Si.count+;/该班级人数+1flag = 1;

11、break;if(flag = 0)printf("nntttt请输入正确的班级n");return;printf("ntttt请输入姓名: ");scanf("%s", Name);printf("ttt");getchar();printf("ntttt请输入科目: ");scanf("%s", Subject);printf("ntttt请输入学期:2n ");Term = 2;printf("ntttt请输入分数: ");sca

12、nf("%d", &Score);getchar();if(Score >= 90)/优秀人数+1Si.Acount+;if(Score < 60) /不及格人数+1Si.Dcount+;/寻找插入位置。与录入学生班级相同的排一块for(i = L->count; i >= 0; i-)if(strcmp(L->Studenti.Class, Class) = 0)strcpy(L->Studenti + 1.Number, Number);strcpy(L->Studenti + 1.Class, Class);strcp

13、y(L->Studenti + 1.Name, Name);strcpy(L->Studenti + 1.Subject, Subject);L->Studenti + 1.term = Term;L->Studenti + 1.Score = Score;L->count+;/所插入班级人数+1return;elseL->Studenti + 1 = L->Studenti;该函数实现了对学生成绩信息的录入。3.3 学生成绩的修改代码解释oid Change(List *L, ClassInfor *S)/成绩修改char Number20;/, C

14、lass20;int i, flag = 0;printf("nnttt请输入要修改学生的学号: ");scanf("%s", Number);getchar();for(i = 0; i < MAX; i+)/找到要修改学生if(strcmp(L->Studenti.Number, Number) = 0)/通过比较输入的学号和文件当中存储的学号,然后通过链表访问到该学生。flag = 1;break;if(flag = 0)printf("nnttt请输入正确的学号!n");return;/输出此人信息printf(&

15、quot;nnttt班级: %sn", L->Studenti.Class);printf("nnttt学号: %sn", L->Studenti.Number);printf("nnttt姓名: %sn", L->Studenti.Name);printf("nnttt学期: %dn", L->Studenti.term);printf("nnttt课程: %dn", L->Studenti.Subject);printf("nnttt分数: %dn",

16、 L->Studenti.Score);printf("nnttt请输入修改数据结构后的分数: ");scanf("%d", &L->Studenti.Score);getchar();该函数块实现对学生信息的修改,通过了比较,然后由链表访问到。3.4 学生信息的删除代码解释void Delect(List *L, ClassInfor *S)/删除学生信息char Number20;int i, j, flag = 0; printf("nnt");printf("ttt请输入要删除的学号: "

17、;);scanf("%s", Number);getchar();for(i = 0; i < L->count; i+)if(strcmp(L->Studenti.Number, Number) = 0)flag = 1;break;if(flag)for(j = 0; j < Class_NUM; j+)if(strcmp(Sj.Class,L->Studenti.Class) = 0)Si.count-;/该班级人数-1break;for(j = i; j < L->count - i; j+)L->Studentj =

18、 L->Studentj + 1;L->count-;return;printf("ttt没有该学号的学生n");该函数通过链表访问实现了对学生信息的删除void Display(List *L)/显示输出所有学生信息int k;for(k = 0; k < L->count; k+)printf("n");printf("班级: %s ", L->Studentk.Class);printf("学号: %s ", L->Studentk.Number);printf("

19、;姓名: %s ", L->Studentk.Name);printf("学期: %d ", L->Studentk.term);printf("课程: %s ", L->Studentk.Subject);printf("分数: %d ", L->Studentk.Score);printf("nn");该函数实现了对学生信息的输出。3.5 学生成绩统计的代码解释void Search(List *L, ClassInfor *S)/统计函数块int x;printf("

20、;nnttt1.统计所有班级n");printf("nnttt2.统计某个班级n");printf("nnttt");scanf("%d", &x);getchar();if(x = 1)DisplayAll(L, S);/统计所有班级所有学生if(x = 2)DisplayClass(L, S);/统计某个班级所有学生该函数实现了对所有学生或者某个班级学生的优秀率和及格率进行统计并输出3.6 学生成绩查询的代码解释void Find(List *L, ClassInfor *S)/成绩查询函数块int x;prin

21、tf("nnttt1.个人成绩查询n");printf("nnttt2.班级成绩查询n");printf("nnttt请输入操作: ");scanf("%d", &x);getchar();switch(x)case 1:PersonalFind(L, S);/个人成绩查询break;case 2:ClassFind(L, S);/班级成绩查询break;该函数实现了对学生信息的查询。3.7所有学生信息成绩显示的代码解释void Display(List *L)/显示输出所有学生信息int k;for(k

22、= 0; k < L->count; k+)printf("n");printf("班级: %s ", L->Studentk.Class);printf("学号: %s ", L->Studentk.Number);printf("姓名: %s ", L->Studentk.Name);printf("学期: %d ", L->Studentk.term);printf("课程: %s ", L->Studentk.Subject)

23、;printf("分数: %d ", L->Studentk.Score);printf("nn");该函数通过链表访问实现了对学生成绩的显示。4 系统功能实现4.1 系统功能主菜单界面实现图4.1系统操作菜单主页面4.2 学生成绩录入界面实现图4.2学生成绩录入操作界面4.3学生成绩删除界面实现图4.3学生信息的删除操作界面4.4学生成绩统计界面实现图4.4统计所有班级的优秀率和及格率操作界面图4.5统计某个班级的优秀率和及格率4.5学生成查询计界面实现图4.6按学生个人成绩查询操作界面图4.7按班级查询学生成绩操作界面4.6所有学生个人信息成绩

24、显示界面实现图4.8所有学生个人信息成绩的显示5 系统使用说明书1. 成绩录入:在本操作中,用户可以录入新添加的学生信息和成绩。当用户退出系统时,系统会自动保存新添加的学生信息,并写入文件。2. 成绩修改:在本操作中,用户可根据学生学号访问并修改学生成绩退出系统时总动保存修改后的学生成绩。3. 删除信息:再此目录下,用户根据学号访问到要删除的学生,并删除其所有个人信息。4. 成绩统计:在此操作中,用户可以根据提示分别统计所有班级所有学生和每个班级所有学生的优秀率和及格率。5. 成绩查询:在此操作中,用户可根据某个学生的学号查询该学生的班级、科目、考试成绩等个人信息;也可以根据班级名称查询某个班

25、级的所有学生的信息。6. 显示所有信息:该操作会读取文件当中所存储的所有学生的个人信息,并输出到显示屏幕。0退出系统:用户只要按0键便会退出操作系统。6 总结两周时间的数据结构课程设计终于结束,在整个课程设计的过程当中,从前期两天的任务理解,思考大致框架和程序设计思路,然后后再通过查询相应的资料,上网搜寻一些相应的程序学习其设计的思路方法。在准备充分后便开始进行代码编写 ,首先定义链表、结构体、主要功能的函数块等,将大的框架先准备完备,前期设计就算初步完成了。接下来便是根据任务书题目当中的具体要求,一步一步实现具体的功能。在这期间出现不少问题,有没有掌握到的知识,如对快速排序没有掌握,从而不知

26、道该如何怎样快速显示出所有学生的信息;有因马虎大意而导致的小错误,如文本录入是学生信息数目没有录入够,而导致最终读取显示学生信息时出现乱码,死循环等;也有思考不够全面等造成的一系列困难。但还是在经过一番思路整理,请教老师和同学自己困惑、不懂的地方,然后在一步步的修改和完善,一次次的调试和优化,从而实现所有的功能和要求,最终终于将程序顺利运行! 7 参考文献1 吴伟民. 结构(C语言版). 大学出版社 20002 程杰. 大话数据结构. 清华大学出版社 2011.63 谭浩强. C程序设计(第三版). 清华大学出版设 20084 苏仕华. 数据结构课程设计. 北京:机械工业出版社 20058 致谢历经两周的努力,一份关于学生成绩管理系统的数据结构课程设计任务终于完成了。在整个设计过程当中,遇到很多不懂得问题和麻烦,但经过自己的努力,不懂的知识就下来自己上网搜索资料,查阅相关书籍,和向懂得同学请教,向老师询问寻求帮助,最终很多问题还是都逐个解决。在此,我要感谢所有帮助我的同学和老师,感谢他们的细心讲解和耐心的指导,从而才使我能顺利的完成本次的课程设计。在本次的课程设计当中,对数据结构有了更进一步的了解和掌握。对自己在程序设计的思路和想法方面有了一定的收获,让自己学到不少东西。再次衷心感谢所有帮助过我的老师和同学。扎薄夷

温馨提示

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

评论

0/150

提交评论