数据结构课程设计报告学生成绩管理系统.pdf
《数据结构课程设计报告学生成绩管理系统.pdf》由会员分享,可在线阅读,更多相关《数据结构课程设计报告学生成绩管理系统.pdf(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、淮 海 工 学 院 计算机工程学院课程设计报告设计名称:设计名称:数据结构课程设计选题名称:选题名称:学生成绩管理系统系系(院)院):计算机工程学院计算机工程学院设计时间:设计时间:2013。12.232013.1.5设计地点:设计地点:软件工程实验室、教室软件工程实验室、教室指导教师评语:签名:年月日数据结构课程设计报告第1页,共页1课程设计目的1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用
2、系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。2课程设计任务与要求:任务任务根据教材数据结构C 语言描述(耿国华主编)和参考书数据结构题集(C 语言版)(严蔚敏、吴伟民主编)选择课程设计题目,要求通过设计,在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解和综合运用.设计题目从任务书所列选题表中选取,每班每题不得超过2 人.学生自选课题学生原则上可以结合个人爱好自选课题,要求课题有一定的深度与难度,有一定的算法复杂性,能够巩固数据结构课程所学的知识。学生自选
3、课题需在18 周前报课程设计指导教师批准方可生效。要求:要求:1、在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备与否直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。2、。设计的题目要求达到一定工作量(300 行以上代码),并具有一定的深度和难度。3、程序设计语言推荐使用C/C+,程序书写规范,源程序需加必要的注释;4、每位同学需提交可独立运行的程序;5、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范
4、、内容充实,不少于10 页(代码不算);6、课程设计实践作为培养学生动手能力的一种手段,单独考核。3课程设计说明书数据结构课程设计报告第2页,共页一一 需求分析需求分析该程序是模拟成绩管理系统,实现对学生成绩的录入,修改,插入,查询,删除,排序,统计等基本功能,本程序有以下规定:1.管理员可以进行学生信息的录入,包括姓名,学号,班级,性别,各科成绩等信息2.管理员和学生都可以进行成绩的查询(通过姓名,学号进行查询)3.管理员还可以对学生信息进行管理(修改(整个或者单个记录项进行修改),插入(在已有的信息下进行有顺序的插入),删除(将整个记录删除),排序(按各科成绩高低进行排序,或者按姓名进行排
5、序,或者是按学号进行排序),统计(各个学科的最高分,最低分,及格率)。二二 概要设计概要设计系统用到的抽象数据类型定义系统用到的抽象数据类型定义:ADT LinearList数据元素:D=ai|aiD0,i=1,2,,n,n0,D0为某一数据对象关系:S=ai,ai+1|ai,ai+1D0,i=1,2,,n-1基本操作:Locate(L,e)DestroyList(L)ClearList(L)GetData(L,i)InsList(L,i,e)DelList(L,i,e)ADT LinearList系统中的子程序和功能说明:系统中的子程序和功能说明:fprint(StudentList st)
6、保存到文件StudentList*create(StudentList*st,int n)Createseq(StudentList*st)录入学生信息Amst(StudentList st,char name)修改学生信息Insertst(StudentList st)插入学生信息Deletest(StudentList st,StudentType*e)删除学生信息Search(StudentList*st,char n20)学生信息查询系统Sort(StudentList*st,char sc20)学生信息排序系统Jige(StudentList st,char subnum20)统计学
7、科及格率Bestscore(StudentList st,char subnum)统计学科最高分Leastscore(StudentList st,char subnum)统计学科最低分Menu()主菜单menu(StudentList st)小菜单main()主函数功能实现过程功能实现过程void Createseq(StudentList st)录入学生信息输入学生的个数;输入学生信息项的个数;输入学生信息项的表头;for(j=1;j=len;j+)输入表头信息;数据结构课程设计报告第3页,共页依次录入学生信息:for(i=1;i=a;i+)for(j=1;j=学生信息项的个数;j+)输入
8、学生信息;是否保存信息(输入 1 或者 2):输入选择;if(选择为 1)调用保存函数;if(选择为 2)输出未保存;输出学生信息;void Amst(StudentList*st,char name)修改学生信息for(i=1;i=len;i+)if(输入的修改名字和记录中的学生的名字相同)找到该学生的位置;输入你要修改的该学生记录项;for(j=1;j=a;j+)找到该记录项;输入修改后的信息;显示修改的学生的信息;int Deletest(StudentList*st,StudentType*e)删除学生信息输入删除的位置;if(删除的位置不在范围内)输出删除的位置不合法;找到该位置进行
9、删除;输出删除后全部学生信息;int Search(StudentList*st,char n20)查询学生信息for(int i=1;ilength;i+)for(j=1;jstunum;j+)if(学生某个信息与记录项相同)找到该位置;输出查找到的学生的信息;数据结构课程设计报告第4页,共页否则的话输出你查找的学生不存在;int Sort(StudentList st,char sc20)对学生信息排序for(j=1;jstunum;j+)找到要统计的成绩的那一列;for(int i=1;ilength=len;printf(输入学生信息项的个数:”);scanf(%d”,&a)st-st
10、unum=a;printf(输入学生信息项的表头:”);for(j=1;j=a;j+)基功能实现过程功能实现过程数据结构课程设计报告第5页,共页scanf(s”,&str0.dataj);printf(”依次录入学生信息:n);for(i=1;i=len;i+)for(j=1;jr0。dataj);printf(n);for(i=1;ilength;int a=ststunum;int k,p;char str20;修改的项目char ne20;for(i=1;iri.data1,name)=0)p=i;for(i=0;irp。datak,ne);printf(”n 修改的学生信息为:n”)f
11、or(j=1;j=a;j+)printf(%st”,str0.dataj);printf(st”,st-rp.dataj);int Deletest(StudentList*st,StudentType e)删除学生信息int i;printf(”n 输入你要删除的位置:”);scanf(%d,&i);if((ilength)printf(删除的位置不合法!”);return(ERROR);*e=stri;for(int k=i;k=st-length;k+)st-rk=st-rk+1;st-length-;for(int p=0;plength;p+)for(int j=1;jstunum;
12、j+)printf(%st,str0。dataj);printf(”st”,st-rp.dataj);printf(”n”);return(OK);int Search(StudentList st,char n20)查找数据结构课程设计报告第7页,共页int a=0;int r;int k;int j;for(int i=1;i=stlength;i+)for(j=1;j=st-stunum;j+)if(strcmp(st-ri.dataj,n)=0)k=i;r=j;a=1;if(a=1)printf(n 查找的学生信息为:n”);for(j=1;j=ststunum;j+)printf(s
13、t,st-rk.dataj);else if(a=0)printf(你查找的学生不存在!”);return(OK);int Sort(StudentList*st,char sc20)/冒泡排序StudentType x;int j,i;int p;int n;for(j=1;j=ststunum;j+)if(strcmp(str0。dataj,sc)=0)p=j;n=stlength;int change=1;for(i=1;i=n1change;i+)change=0;for(int k=1;krk.datap,strk+1。datap)0)数据结构课程设计报告第8页,共页x=st-rk;
14、st-rk=st-rk+1;strk+1=x;change=1;for(i=1;i=stlength;i+)for(j=1;jri.dataj);printf(”n”);return(OK);void Jige(StudentList st,char subnum20)/统计学科及格率char b10=60”double s;int a=0;int p;int n=st.length;for(int j=1;j=0)a+;s=(a(1。0))/(n*1.0);printf(%s 的学科及格率为f,st。r0.datap,s);四四 设计与调试分析设计与调试分析1.这个程序采用一个结构体:学生信
15、息结构体。采用的是顺序表的存储结构,顺序表的长度表示学生的个数。每个数组里面还有一个二维数组,表示每个学生含有的数据项。2。由于前期工作考虑的不是很周全,采用了顺序表,这对于实现程序的插入和删除的功能显然效率不是很高3。由于先前成绩定义成了字符型,所以对于成绩的比大小有些麻烦。我对于字符型转化成数字进行加减不是很清楚,所以在实现统计功能中并没有包括成绩的总分计算以及平均分的计算,这是该系统的漏洞。数据结构课程设计报告第9页,共页五五 用户手册用户手册【使用说明使用说明】1.进入学生成绩管理系统主页面2.根据身份的不同进入不同的系统界面(如果是管理员则进入含有五个子系统选择的界面,而学生则只可以
16、进入查询学生信息的界面)3.如果要录入学生的信息,则选择 1,可以人工的控制要输入的学生个数以及每个学生含有的记录项,注意输完了保存进文件4.如果要对学生进行管理,就选择 2,将进入对学生管理的三项选择界面.如果要修改学生信息,选择 1,输入要修改的学生的名字,找到该学生并输入要修改的学生的记录项,进行修改.如果要插入学生信息,选择 2,选择插入的位置,当你插入的位置不合法时,会有提示.如果要删除学生信息,输入你要删除的学生的位置,如果没该学生则删除不合法.5.如果要查找学生信息,则选择 3,输入你要查找的学生的姓名或者学号,如果没有该学生就提示你查找的学生不存在。有该学生就会输出该学生的所以
17、信息。6.如果要对学生信息进行排序,就选择 4,输入你要进行排序的学生的记录项,它就会将该记录项把学生信息进行升序排列7.如果要对学生信息进行统计,就选择 5.如果要对学科成绩进行最高分统计,就选择 1,然后输入你要统计的学科名,系统会找出该学科的最高分。如果要对学科成绩进行及格率的统计,则选择2,输入你要统计的学科名,系统会算出该学科的及格率。如果要对学科成绩进行最低分统计,则选择 3,输入你要统计的学科名,系统会找出该学科的最低分。8.如果系统结束,则按 6 结束。【程序中的头文件程序中的头文件】#includestdio。hincludestdlib。hincludestring.hin
18、cludedefine ERROR 0define OK 1define MAX_size 20#define LIST_SIZE 100/线性表长度typedef char KeyType;FILE*fp;/定义全局变量/六六 测试成果测试成果1.录入学生信息2.插入学生信息3.修改学生4.删除学生信息5.对学生信息排序数据结构课程设计报告第10页,共页(1)学号排序(2)姓名排序(3)成绩排序6.查找学生(1)学号查找(2)姓名查找7.统计(1)最高分(2)及格率(3)最低分8.学生查询七七 附录(源程序清单)附录(源程序清单)#includestdio。hincludeincludest
19、unum;if(fp=fopen(students_list。txt,”wb))=NULL)printf(File open error!n);exit(0);for(int i=0;i=len;i+)fwrite(stri,sizeof(StudentList),1,fp);/*将学生信息写入文件/fclose(fp);/*关闭文件/printf(n 学生信息已成功保存到文件 students_list。txt 中!n”);/getchar();StudentList create(StudentList st,int n)/读出文件if(fp=fopen(”students_list。tx
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 报告 学生 成绩管理系统
限制150内