《数据结构》课程设计报告信息工程学院计算机科学与技术专业题目:学生成绩管理系统(线性表应用)班级:计算机111班第11组组长:姓名:葛学谦学号:2011306010311组员:姓名:冷冰学号:2011306010316指导老师:曲朝阳、郭晓利、刘志颖日期:2012年12月20日程序设计书目录一、程序设计目标二、问题描述三、需求分析四、概要设计(说明课程设计中用到的抽象数据类型的定义、主程序的流程以及各程序模块之间的调用关系等)五、详细设计六、软件说明书七、源程序清单八、测试报告九、课程设计总结数据结构课程设计一、课程设计目的1.数据结构课程设计,使我们能够将学到的面向对象的设计思想运用在具体的工作和学习中,加深对类和对象的理解,2.要求学生对生活中许多具体的事物抽象出类,并掌握继承和派生类、基类、虚函数和多态的概念。3.通过课程设计掌握《面向对象语言程序设计》的编程思想,为后续课程打下基础。4.培养我实际操作能力和实践能力,为以后的工作打下坚实的基础。二、课程设计的内容1、课程设计的题目及简介文本界面为管理员1.输入信息2.保存信息3.查询信息4.修改并保存5.显示全部6.删除信息7.退出系统学生1信息查询(1)输入姓名(2)输入学号2退出系统三、需求分析(说明课程设计的任务)提供身份验证,和使用系统的权限设置、判定。教师用户能实现本班同学各学期各科成绩的录入、编辑,数据必须保存在文件中,以便反复使用。学生用户提供对学号或姓名,各学期、各学科成绩的查询。学生和教师用户能按各学期、各学科分数排序输出。教师用户能统计各科成绩分数段的分布,并输出。四、概要设计(说明课程设计中用到的抽象数据类型的定义、主程序的流程以及各程序模块之间的调用关系等)1.调用函数Node*Create()判断是否等于一如果是可创建链表输入相应的学生成绩如果不是则需要运用Insert(p)函数插入结点增加学生成绩的,并通过chundang(p)函数进行存档,2.调用函数Node*Delete(Node*head,intnum)删除学生的成绩则必须对链表结点进行删除意味着将某个要删除结点前后的连续打断,去掉该结点,使前后指针变量重新连接,完成链表结点的删除任务3.打开存档文件ifstreamFilein(out.txt);输出说存档的学生成绩4.调用函数Node*sousuo(Node*head,charna[20]),按学生的姓名进行搜索五、详细设计(1)程序流程图各功能模块的实现流程图:1增加学生成绩调用函数Node*Create()判断是否等于一如果是可创建链表输入相应的学生成绩如果不是则需要运用Insert(p)函数插入结点增加学生成绩的,并通过chundang(p)函数进行存档,具体流程如下图所示流程图2删除学生成绩调用函数Node*Delete(Node*head,intnum)删除学生的成绩则必须对链表结点进行删除意味着将某个要删除结点前后的连续打断,去掉该结点,使前后指针变量重新连接,完成链表结点的删除任务流程图3.导入学生成绩打开存档文件ifstreamFilein(out.txt);输出说存档的学生成绩输入要删除成绩的编号该生成绩已删除,显示其他同学的成绩输出所有学生的成绩新增学生成绩按提示:输入学个的各种成绩按格式显示输入的学生成绩退出该功能,返回主菜单,继续选择退出该功能,返回主菜单,继续选择判断以前是否存储了学生成绩是新增成绩输入要删除学生成绩24、学生成绩的搜索调用函数Node*sousuo(Node*head,charna[20]),按学生的姓名进行搜索流程图:5成绩的统计调用函数Node*sousuo(Node*head,charna[20]),按学生的姓名进行搜索。6、按英语成绩进行排序:调用函数Node*paixu(Node*head)完成排序功能它的主要思想的:首先设置英语成绩的最大值100,最小值0(也可以使150或者其他)然后让输入的学生成绩英语成绩一次比较进行比较,(如果有相等的就输出排名1,然后排名加1),否则最大值减1,然后再次进行比较(如果等于99且上次没有等于100的,就输出排名1,然后排名加1,如果上次有等于100的排名为2),如果没有与99相等的.,则继续循环……流程图:搜索学生成绩4按照提示输入学生的姓名进行搜索输出所以查询的学生成绩退出该功能,返回主菜单,继续选择导入学生成绩显示学生的成绩退出该功能,返回主菜单,继续选择成绩的统计:5统计所设定的专业人数和男女性别的人数,计算学生的年龄并统计输出统计的成绩退出该功能,返回主菜单,继续选择对英语成绩进行排序输出排序之后的学生成绩退出该功能,返回主菜单,继续选择总功能模块图:2、输入要删除的学生的编号,删除学生成绩。1输入学生的成绩:姓名、性别、专业、出生日期、家庭地址、英语成绩菜单1.新增学生成绩2.删除学生成绩3.导入学生成绩4.学生成绩搜索5.学生成绩统计6.学生成绩保存7.退出5统计各种专业、男女、相应年龄的人数7保存学生成绩:提示保存成功4、输入你要查找你学生姓名3、输出学生的编号、姓名、性别、专业、出生日期、家庭地址、英语成绩7、退出系统学生管理系统功能模块图按学生成绩进行排序5各功能显示效果模块图:学生和管理员输入管理员进入界面后增加学生成绩和导入学生成绩保存学生成绩学生进入界面后,按学生姓名查询并输出成绩六、软件说明书总体结构我们采取模块化方式进行程序设计,要求程序的功能设计、数据结构设计及整体结构设计合理。也可根据自己对题目的理解增加新的功能模块。系统以菜单界面方式(至少采用文本菜单界面,如能采用图形菜单界面更好)工作,运行界面友好,演示程序以用户和计算机的对话方式进行(1)首先,看题目要求,每一条记录包括一个学生的姓名、性别、专业、出生日期、家庭住址、英语成绩。同时,应具备以下功能:1、输入功能:一次可以完成自定义学生人数的学生成绩记录的输入。2.保存功能:对指定学生的成绩进行保存3.查询功能:选择某种方式并输入该成绩查询符合条件的学生成绩4、修改并保存功能:对指定学生的成绩进行修改保存。5.显示功能:将以上功能操作后的学生成绩显示出来。6、删除功能:对指定学生的成绩进行删除。7.退出主菜单。七、源程序清单#includeiostream#includestring#includefstreamusingnamespacestd;#definepassword123456;//people.hclassstupeople//人员类基类{public:intgetage();//年龄char*getname();//姓名char*getsex();//性别voiddisplay();//输出信息voidpeosearch();//查询信息voidpeosave();//保存信息private:charname[20];charsex[4];intage;};//student.hclassstustudent:publicstupeople{public:intgetnumber();//学号doublegetcscore();//语文doublegetmscore();//高数doublegetescore();//外语doublegetpscore();//C++doublegetdscore();//数据库doublegetsscore();//体育doublegetave();//平均成绩doublegetsum();//总成绩voidstuenterinfo();//输入信息voiddisplay();//输出信息voidstusearch();//查找信息voidstusave();//保存信息voidstuload();//加载信息private:intnumber;doublecscore;doublemscore;doubleescore;doubledscore;doublepscore;doublesscore;doublesumscore;doubleavescore;};//admin.hclassstuadmin:publicstustudent//派生类管理员类{public:voidchange();//更改信息voiddel();//删除信息private:intnewage;intnewnumber;charnewsex;charnewname;charchangename[20];doublenewcscore;doublenewmscore;doublenewescore;doublenewdscore;doublenewpscore;doublenewsscore;doublenewsumscore;doublenewavescore;};inti,j,p[6];charA,B,x;stuadminsa;structstudentinfo{intnumber;charname[20];charsex[4];intage;doublecscore;doublemscore;doubleescore;doublepscore;doubledscore;doublesscore;doublesumscore;doubleavescore;intflag;}s;//人员类的相关函数的定义intstupeople::getage(){returnage;}char*stupeople::getname(){returnname;}char*stupeople::getsex(){returnsex;}//学生类的相关函数的定义intstustudent::getnumber(){returnnumber;}doublestustudent::getcscore(){returncscore;}doublestustudent::getmscore(){returnmscore;}doublestustudent::getescore(){returnescore;}doublestustudent::getpscore(){returnpscore;}doublestustudent::getdscore(){returndscore;}doublestustudent::getsscore(){returnsscore;}doublestustudent::getsum(){sumscore=cscore+mscore+escore+pscore+dscore+sscore;returnsumscore;}doublestustudent::getave()//平均成绩{avescore=sumscore/6;returnavescore;}voidstustudent::stuenterinfo()//输入信息{cout请输入学号:;cins.number;coutendl;cout请输入姓名:;cins.name;coutendl;cout请输入性别:;cins.sex;coutendl;cout请输入年龄:;cins.age;coutendl;cout请输入各科成绩:endl;cout语文:;cins.cscore;coutendl;cout高数:;cins.mscore;coutendl;cout外语:;cins.escore;coutendl;coutC++:;cins.pscore;coutendl;cout数据库:;cins.dscore;coutendl;cout体育:;cins.sscore;coutendl;cout信息输入成功!endl;s.flag=0;s.sumscore=s.cscore+s.mscore+s.escore+s.pscore+s.dscore+s.sscore;s.avescore=s.sumsco