《数据结构课程设计报告-学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告-学生成绩管理系统.docx(22页珍藏版)》请在优知文库上搜索。
1、学院:职业技术学院专业:计算机科学与技术姓名:学号:()62002110311班级:计科()61班实习性质:课程设计实习地点:蔡家关校区国合楼二楼计算机房指导教师:兽茴成绩:学生成绩管理系统设计一、需求分析随着社会的开展,学校的规模不断的扩大,日常教学活动中提取相关信息,以反映教学情况。传统的手工操作方式,易发生数据丧失,统计错误,劳动强度高,且速度慢。使用计算机可以高速,快捷地完成以上工作。在计算机联网后,数据在网上传递,可以实现数据共享,防止重复劳动,标准教学管理行为,从而提高了管理效率和水平。学生成绩管理系统以计算机为工具,通过对学生成绩管理所需的信息管理,把管理人员和老师从繁琐的数据计
2、算处理中解脱出来,使其有更多的精力从事教务管理政策的研究实施,教学方案的制定执行和教学质量的监督检查,从而全面提高教学质量。信息社会的高科技,商品经济化的高效益,使计算机的应用已普及到经济和社会生活的各个领域。计算机虽然与人类的关系愈来愈密切,还有人由于计算机操作不方便继续用手工劳动。为了适应现代社会人们高度强烈的时间观念,学生成绩管理系统软件为教学办公室带来了极大的方便。该软件是以C语言为实现语言,其功能在系统内部有源代码直接完成。通过操作目录,管理者和老师可以了解本软件的根本工作原理。管理者和老师只需输入一些简单的汉字、数字,即可到达自己管理学生成绩的目标。在学生成绩管理系统中,需要从大量
3、的日常教学活动中提取相关信息,以反映教学情况。传统的手工操作方式,易发生数据丧失,统计错误,劳动强度高,且速度慢。使用计算机可以高速,快捷地完成以上工作。在计算机联网后,数据在网上传递,可以实现数据共享,防止重复劳动,标准教学管理行为,从而提高了管理效率和水平。通过本学生成绩管理系统,可以从一下几个方面减少老师的工作负担和提高学校的管理效率,实现学校的信息化和自动化。1.应用学生成绩管理系统,把老师从繁杂的学生成绩了登记分数、统计分数、学生排名等等的工作职工解脱出来,把更多的时间和精力用来提高教学质量和学生的辅导工作上,提高学生的学生效率和成绩。2.应用学生成绩管理系统,可以学校教务处的工作效
4、率,有效的管理学校学生的成绩,更加科学的统计管理学生成绩。学生成绩管理适用各学校的教学老师用于班上的学生成绩了登录、统计和对班上学生成绩的排名。学生管理系统以计算机为工具,通过对学生成绩管理所需的信息管理,把老师从繁琐的数据计算处理中解脱出来,使其有更多的精力从事教务管理政策的研究实施,教学方案的制定执行和教学质量的监督检查,从而全面提高教学质量。二、概要设计数据结构形式:链表+二叉排序树。以成绩为节点建立二叉排序树,以学生为节点,以链表形式接在成绩节点之后。功能:查找(按学号、成绩、姓名)、插入、删除、统计(统计平均成绩、,统计分数段的人数。)学生成绩管理系统是以计算机为工具,通过对教务管理
5、所需的信息管理,把管理人员从繁琐的数据计算处理中解脱出来,使其有更多的精力从事教务管理政策的研究实施,教学方案的制定执行和教学质量的监督检查,从而全面提高教学质量。软件开发的意图为便于学校和老师的管理,方便查看有关学校及学生的情况。如教学老师对学生成绩的修改、删除、查找、添加、总分数的统计、总分排名,单科排名等。成绩管理系统是面向中学的管理系统,其目的是提高老师对学生的科学化管理。本软件针对学校的管理现状和要求,从理论和应用的角度论述了学生成绩管理信息系统的特点、功能、设计思路。本系统主要包括五个模块:学生成绩录入、学生成绩查询、学生成绩的添加、修改、统计学生的总成绩、并对其进行排名、求每个学
6、生的平均分等这八个模块根本实现设计。1.定义头文件,包括标准输入输出函数库、标准函数库、字符串函数库、屏幕操作函数库#includestdio.h#includestdlib.h#include“string.hSincludeconio.hdefineHEADERl学生成绩ndefineHEADER21学号姓名C|数学|英语|总分|平均|名次n#defineHIADIR3ttdefine FORMAT%-10s%-15s%4d%4d%4d%4d%.2f%4dnEND#defIne2.建立查询菜单,方便软件使用者根据根据自己的需要进行操作:voidmenu()system(zzclszz);c
7、printf(学生成绩管理系统n);cprintf(cprintfC*1输入成绩2删除成绩*n)CPrintf(*3查询成绩4修改成绩*n)cprintfC*5插入成绩6统计成绩*nzz)cprintfC*7名次排名8保存成绩*n)cprintfC*9显示成绩0退出系统*n)CPrintf(*n);CPrintf(本软件由张进,杨秀玲共同设计,欢送使用!n);typedefstructstudent/*标记为student*/charnum10;*学号*/charname15;*姓名*/intCgrade;*C语言成绩*/Intmgrade;*数学成绩*/Integrade;/*英语成绩*/I
8、nttotal;/*总分*/floatave;intmingci;*平均分*/*名次*/);4.由于是动态内存分配空间的数据操作,而非文件I/O,那么在程序一开始的时候首先得建立数据,返回头成绩节点。于是首先要有一个创立数据的函数:CreatOo分析要求,可以得到一些初步的功能函数:插入函数InSert()、查找函数SearCh()(2种:按学号、按姓名)、删除函数DeIete()、输出学生信息函数PrintC。1. Creat0:以二叉排序树的定义建立树并返回根节点,在输入学生信息的同时判断是否已有该成绩节点,假设有那么直接链在该成绩的学生节点之后;假设无,开辟新空间给此成绩节点,并把学生节
9、点链在其后。2. Insert():方法和CreatU一样,只要指明根节点就可以了。3. Search():按成绩:只要按二叉排序树的定义就可以找到成绩,然后遍历其成绩节点后的学生链按学号:遍历二叉排序树的方法。按姓名:遍历二叉排序树的方法。4. Delet0:在查找成绩的时候就可以返回该成绩的节点指针和其父节点指针,那么可以根据二叉排序树的删除定义进行操作。5. Print():遍历二叉排序树的方法。6. TongjiO:统计该班的总分第一名和单科第一,和各科不及格人数。三、详细设计一、对整体的设计思想进行构思,并写出软件大概的设计步骤和软件要实现的功能,并对需要的硬件设备和软件进行准备,电
10、脑等相关的设备和资料。1 .翻开TC编译器,新建一个文件。图12 .输入源程序,实现学生成绩管理系统的相关功能。二、软件具体功能的设计方法和步骤。1、定义整个程序需要的头文件,#includestdio.h,/*标准输入输出函数库*/#includestdlib.h/*标准函数库*/includestring.h/*字符串函数库*/#includeconio.h/*屏幕操作函数库*/3 .定义所有和学生有关的数据结构。typedefstructstudent(charnum10;/*学号*/charname15;/*姓名*/intcgrade;*C语言成绩*/intmgrade;/*数学成绩*
11、/integrade;/*英语成绩*/inttotal;/*总分*/floatave;/*平均分*/intmingci;/*名次*/);4 .编写学生成绩管理系统的菜单,方便软件使用者的操作。cprintf(学生成绩管理系统n)CPrintf(*菜单*n*)cprintf(*1输入成绩2删除成绩*n);cprintf(*3查询成绩4修改成绩*n);cprintf(*5插入成绩6统计成绩*n);cprintf(*7名次排名8保存成绩*n);cprintf(*9显示成绩0退出系统*n);CPrintf(*n);cprintf(本软件由王兴宇和崔凯共同设计,欢送使用!n);5.定义错误信息时函数调用
12、,软件的提示信息。voidWrong()Printf(nnnnn*输入错误,任意键返回!*nu);getchar();6 .定义查询时的错误提示函数。voidNofind()(PriiHf(n=没有发现该学生!n)7 .显示单链表1中存储的学生记录,内容为StUdem结构中定义的内容,存储单链表中头结点的指针,该头结点没有存储学生信息,指针域指向的后继结点才有学生信息。查询时指针时,逐条输出链表中存储的学生信息。voidDisp(Link1)Node*p;p=l-next;if(!p)*p=NULL,NU11在Stdlib中定义为0*/printf(,n= getchar();没有学生记录n)
13、;return;printdata(p);p=p-next;printf(HEADER3);8 .定位链表中符合要求的节点,并返回指向该节点的指针,其中findmess口保存要查找的具体内容;nameornum保存按什么查找;在单链表1中查找;Node*Locate(Linkl,charfindmess,charnameornum)(Node*r;if(strcmp(nameornum,num)=0)(r=l-next;while(r)(if(strcmp(r-data.num,findmess)=O)returnr;r=r-next;)elseif(strcmp(nameornum,name)=0)(r=l-next;while(r)(if(strcmp(r-data.name,findmess)=O)returnr;r=r-next;9 .进行分数的验证,输入的分数必须在。到100之间,大于100或小于。时提示输入错误,并要求重新输入。intnumberinput(char*notice)intt=0;doprintf(notice);scanf(%dt);if(t100Ht100t0);returnt;)10 .构造增加学生记录的函数,实现添加操作的临时的结构体指针变量,并且保证输入的学号