《学生成绩管理系统设计实现.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统设计实现.docx(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、河南工程学院高级程序设计语言课程设计成果报告学生成绩管理系统设计与实现End-Next=new Student;End=End-Next;cout添加成功!,endl;cout输入任意字符!继续getch();录入之后可以进行显示所有学生信息.其包括:姓名,学号,各科成绩以及 总成绩和平均分。显示函数如下:void Show()(cout姓名: name(endl(学号:/zIdendl/,C+: z,Cnumendlcase 1: Mnuniendl英语:Enumendl总成绩: suni平均分 average(endlendlname, pl-name);strcpy (temp-Id,
2、pl-Id);temp-Cnum=pl-Cnum;temp-Mnum=pl-Mnum;temp-Enum=pl-Enum;temp-sum=pl-suni;strcpy (pl-name, p2-name);strcpy (pl-Id, p2-Id);pl-Cnum=p2-Cnum;7pl-Mnum=p2-Mnum;pl-Enum=p2-Enum;pl-sum=p2-sum;strcpy (p2-name, temp-name);strcpy (p2-Id, temp-ld);p2-Cnum=temp-Cnum;p2-Mnum=temp-Mnum;p2-Enum=temp-Enum;p2-su
3、m=teinp-sum;然后再通过对链表的排序来完成对学生成绩的排序。其函数如下: void Studentmassage: : Sort ()对当前链表进行排序cout “Sorting.endl;Student *p=NULL, *pl=NULL, *k=NULL;int n=Studentmassage:ListCount();if (nNext;p!=End;p=p-Next) for (k=p-Next;k!=End;k=k-Next) if (p-sumk-sum)( Studentmassage:Swap(p, k);)cout排序完成! getch();return;使用用户也
4、可以通过姓名和学号利用系统的提示,查找某个学生的信息,以 及个人资料和成绩。其查找函数如下:void Studentmassage:Find() char name20 ,Id10;int x;Student * p=NULL;coiitntt*n;coutttX 1.按学生的姓名查找nttX 2,按学生学号查找;coutx;switch (x)couttt请输入要查找的学生的姓名:;cinname;if (p=FindItem(nanie)(p-Next-Show();cout输入任意字符!继续;getchO ;)else(cout,tt没有找到该姓名的学生! n endl;coutNext
5、-Show();cout”输入任意字符!继续”;getch();)else(cout,tt没有找到该学好的学生! “ n,endl;cout*输入任意字符!继续;getch();)break;有时学生成绩录入出错时,也可以修改,严重时,可以删除。修改程序如下: void Studentmassage: :ModifyItem()修改信息char name20;Student * p=NULL;coutz/tt请输入要修改的人的姓名:;cinname;if (p=FindItem(name)(cout,tt已找到学生的信息,请输入新的信息!Next-Input();cout修改成功!endl;c
6、out输入任意字符!继续;10getch();elsecout/ztt 没有找到!endl;cout输入任意字符!继续;getch();如假设删除,其删除程序如下:/删除信息/zname;void Studentmassage:Removeitem() char name20;Student * p=NULL, *temp=NULL;COUt,tt请输入要删除的学生的姓名: if (p=FindItem(name)(temp=p-Next;p-Next=p-Next-Next;delete temp;cout/ztt 删除成功!zzendl;cout”输入任意字符!继续;getchO ;els
7、e(coutz,tt 没有找到! /zendl;cout”写反,以及字符与字符串的操作问题,这些是比拟 简单的错误,很容易分辨出来,并改正之。(3)函数的返回值问题,也是比拟容易找出并解决的问题。2 .逻辑错误(1)文件的写入与读出,刚开始对文件的操作不太明白,一致不能很好的 操作文件,其中最大的问题是对已存在的文件读取问题,通过“显示全部学生成 绩”将数据从文件中读取,可是在使用过程中总是出现读出错误,出现乱码。(2)内存的分配问题,这也是困惑了我好久的问题。对于我们初学者来说 对内存的分配和释放问题是比拟抽象和模糊的难题,本来使用链表的方式存储数 据,然而待到排序时出现了交换数据困难的问题
8、,以及分配空间繁琐释放空间不 及时的问题,造成空间浪费使得程序运行效率低的问题。因此最后采用了顺序存 储记录的方式,这样就能改变前述问题。整个调试过程中主要是这么几个问题,其余的是一些小问题,很容易的就调 试出来了。所以,以后在输入代码时,我们应该用心仔细的去输入,防止一些小 的错误的发生。134. 2调试结果经过屡次的运行失败,然后把错误改正。然后再出错,然后再改。反复的修 改,让我们发扬了爱迪生创造灯泡的对追求成功锲而不舍的精神,终于成功的将 程序运行了出来。调试的步骤有如下几步:(1)进入界面:在此界面按任意键进入主菜单,如图4-1。定是一个新系统,无学生信息、。请先输入。 按任意键开始
9、& E:chxddDebugad. exe*图4-1进入主界面so-X380 OAS900Go欢迎进入学生成绩管理系统8080 OAX-808014(2)主菜单:在此界面用户可以选择要操作的选项,回车之后即可进入相 关页面进行操作(例如 选择1回车,即可进入输入学生数据页面),如图4-2o图4-2主菜单(3)在下面的界面按照系统提示完成操作,如图4-3。图4-3录入操作15(4)其输出成绩图,如卜图4-4。E:chxddDebugad. exe*添加成功?输入任意字符!添加成功?输入任意字符!S 戈月月 名号;的的 姓学致羹 的的墨课 1生生4学语 .事C+数英 择入入入入入 选请请请 月继续
10、 图4-4录入结果16题目学生成绩管理系统设计与实现考核工程考核内容得分平时考核(30分)出勤情况、态度、效率;知识掌握情况、 基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答下列问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代码的排版总评成绩指导教师评语:日期:第5章系统的使用说明与数据测试调试运行后,并且所设计的程序运行成功后。为了方便用户使用,我们就应 该将使用的方法和说明以及数据的测试公布给使用用户。4.1
11、使用说明用户运行程序后进入系统主界面,在主界面用户可以翻开或者新建数据文 件。用户新建或者翻开文件要符合操作系统的要求,如果用户翻开不存在的文件, 那么系统将输出操作错误,并对其进行相关操作。本系统同时只能对一个数据文 件进行相关操作,不能同时翻开多个数据文件,其类似于单用户操作系统。当 用户指定当前文件后可对其进行显示,插入,删除,修改,计算平均分等相关功 能。用户在操作过程中可随时对当前文件进行保存到文件操作,以防止修改的数 据丧失。操作完当前文件后,用户可以关闭该文件,在不退出本系统的前提下另 行翻开或者新建数据文件对其进行相关操作。5. 2数据测试经过屡次测试程序运行稳定,无致命错误。
12、根据本次课程设计的要求对数据 进行输入并分析数据输出结果。通过测试发现当用户正确输入时系统能够正确显 示用户的输入,当用户输入错误时,系统并不会出现致命错误但其将显示非用户 期望的数据。例如:当用户查询学生记录时,系统将提示选择查找方式。如图5-1。图5-1查询17然后按照自己所了解的信息,输入数字,选择查找方法。例如:我知道姓名就选1。如图5-2。图5-2输入信息然后输入学生姓名,便可得到学生的个人信息。如图5-3。 *E:chxddDebugad. exe*X 1 .挨华生的姓名查找X 2 .转李生学号查找X MX MX X XX MX MX M X M XX MX M X X XX MX
13、 MX M X M MX情选择:1姓名:chang请输入要查找的学生的姓名:chang学号:201312211207C+:96教学:99:98总成绩:293平均分97.6667输入任意字符!继续图5-3查找结果18课程设计体会通过这次实训的学习,我深刻的意识到自己的缺乏,在实训的过程中我才发 现我平时学到的只是皮毛。这次实训给了我不少打击,我只有参考资料,问问同 学问问老师来不断完善,最后在黄老师的指导下我完成了这次实验报告,这次作 业的完成真可谓艰难,这我才意识到自己知识的严重缺乏,今后我会更加努力完 善自己!19参考文献I谭浩强.C+面向对象程序设计(第二版).清华大学出版社2谭浩强.C+
14、面向对象程序设计题解与上机指导.清华大学出版社L i ppmanBar bar a.C+ Primer.人民邮电出版社3 Bjarne Stroustrup. The C+ Programming Language.权L械:业出 版社5C+语言的设计和演化.机械工业出版社6C+语言的设计和演化(英文版).机械工业出版社7C+程序设计语言(特别版).机械工业出版社20附录源程序include # include include ttinclude 用 getch ();using namespace std;Student 类一class Student ( public:char name 2
15、0;char Id20; double Cnum; double Mnum; double Enum; double sum;double average; Student * Next; void Input ()class Student ( public:char name 20;char Id20; double Cnum; double Mnum; double Enum; double sum;double average; Student * Next; void Input ()学生姓名学生号C+课程得分/数学课程得分英语课程得分总分平均分下一个学生的指针输入学生信息cinna
16、me;cinId;; cinCnum;; cinMnum;; cinEnum;couttt请输入学生的姓名: couttt请输入学生的学号:; cout,tt请输入C+课程的成绩: couttt请输入数学课程的成绩 cout,ztt请输入英语课程的成绩 sum=Cnum+Mnum+Enum;average=sum/3;)void ReadFile (istream & in) 读取学生信息的文件 (innamedCnumMnumEnumsumaverage;void Show() 显示学生的个人信息 cout姓名:nanieendl学号:/,Idendl/,C+: z,Cnumendl 数学:
17、英语: Enuniendl总成绩:平均分averageendlendlNext;p!=End;p=p-Next)p-Show ();cout输入任意字符!继续;getch();)void AddltemO 添加学生信息(End-Input ();End-Next=new Student;End=End-Next;cout添加成功! z,endl;coutNext!=End;p=p-Next) 匹配成功那么返回上一个指 针,不成功就返回空if(!strcmp(p-Next-name, name)return p;return NULL;)Student *FindID(char * Id)(fo
18、r (Student * p=Head;p-Next!=End;p=p-Next) 匹配成功那么返回上一个指 针,不成功就返回空if(!strcmp(p-Next-Id, Id)return p;return NULL;);/造函数Studentmassage:Studentmassage () (Head=new Student;Head-Next=new Student;End=Head-Next;in. open (z,sort. txt);if (! in)cout这是一个新系统,无学生信息。请先输入。ReadFile(in);i f (End-name 0 = 0) break;En
19、d-Next=new Student;End=End-Next;in. close ();coutz,tt读取学生信息成功! z,Next!=End;) temp=Head-Next;Head-Next=Head-Next-Next;delete temp;)delete Head,End;一菜单一void Studentmassage: :ShowMenu() / 主菜单函数 C i i + / / *1*kIz vtz*1* vtz%tzvfxvtz xtzvtz vtz vt* vt*viz vizvlx、1fzvt* xt* vt* vt*、/vtzI fill I 、*T* *T*T
20、* *T* *T* *T* *T*T*T* *T*T* *T* *T* *T* *7 *7 *7* *7*7*#7 #7 *7*T* *T*T* *7*7*!*T* *T* *T* *1*endl;cout,z= 学生成绩管理系统 = =/,endl;cout=* =endl;cout=* 1.增加学生成绩 =z/endl;cout=* 2.显示学生成绩 =endl;cout=* 3 .排序统计成绩 =endl;coutz,=* 4 ,查找学生成绩 =,endl;cout,z=* 5 .删除学生成绩 =(x;switch(x)case 1:根据姓名查找(couttt请输入要查找的学生的姓名:;
21、cinname;23if(p=FindItem(name)(p-Next-Show();cout输入任意字符!继续;getchO ;)else(cout,ztt没有找到该姓名的学生! n nTPA k case 2:根据学号查找coutz/tt请输入要查找的学生的学号:;cinId;if(p=FindID(Id)(p-Next-Show();cout输入任意字符!继续;getchO ;else(coutz,tt没有找到该学好的学生! z,n endl;cout输入任意字符!继续;getchO ;break;)/修改信息void Studentmassage:Modifyitem() 修改学生信
22、息 (char name20;Student * p二NULL;cout,ztt请输入要修改的人的姓名:;cinname;if(p=FindItem(name)cout,ztt已找到学生的信息,请输入新的信息!Next-Input ();cout修改成功! ,endl;cout输入任意字符!继续;getchO ;) else cout/ztt 没有找到!,zendl;cout输入任意字符!继续; getchO ;删除信息一void Studentmassage: :Removeitem()/ 删除学生信息24char name20;Student * p=NULL, *temp=NULL;co
23、ut,ztt请输入要册除的学生的姓名:name; if(p=FindItem(name)temp=p-Next;p-Next=p-Next-Next;delete temp;cout,ztt 删除成功!,endl;cout输入任意字符!继续;getch();)elsecout,ztt 没有找到!,zendl;coutname, pl-name);strcpy(temp-Id, pl-Id);temp-Cnum=pl-Cnum;temp-Mnum=p1-Mnum;temp-Enum=pl-Enuni;temp-sum=pl-sum;strcpy(pl-name, p2-name);strcpy(
24、pl-Id,p2-Id);p 1 -Cnum=p2-Cnuni;pl-Mnum=p2-Mnum;pl-Enum=p2-Enum;pl-sum=p2-sum;strcpy (p2-name, temp-name);strcpy(p2-Id, temp-Id);p2-Cnum=temp-Cnum;p2-Mnum=temp-Mnum;p2-Enum=temp-Enum;p2-sum=temp-sum;)int Studentmassage: :ListCount()统计当前链表的记录总数,返回一个整数(if(! Head)return 0;int n=0;for (Student * p=Head-
25、Next;p!=End;p=p-Next)n+;)return n;)/25void Studenlmassage: : Sort ()对当前链表进行排序 cout “Sorting. endl;Student *p=NULL, *pl=NULL, *k=NULL;int n=Studentma.ssage: :ListCount ();if(nNext;p!=End;p=p-Next) for(k=p-Next;k!=End;k=k-Next) (if(p-sumk-sum)( Studentmassage:Swap(p, k);cout Next;p!二End;p=p-Next)outna
26、me/,t/,Idz,t,/Cnuni,t/,Mnum,t/,Enum,/t,sum,n,;out. close ();)/主函数一一一一一int main() (int x,i=0;bool quit二false;coutz,tt z,en dl;for(i=0;i3;i+)coutz,tttttttt ,endl;coutz,tt【欢迎进入学生成绩管理系统 】 ,zendl;for(i=0;i3;i+)coutz,ttOtttttt ,x;switch(x) (case 0:quit=true;break;case 1:Grade. Additem();break;case 2:Grade
27、. Display();break;case 3:Grade. Sort();break;26第1章课程设计的目的与任务11.1 课程设计目的11.2 课程设计主要任务1第2章系统实现思路22.1 学生成绩管理系统设计思路22.2 课程设计所用设施22.3 课程设计思路的核心2系统详细设计33.1 需求分析33.2 系统功能模块33.3 模块框架图以及重要数据的设计53.4 程序实现功能6第4章系统调试运行134.1 调试分析134.2 调试结果14第5章系统的使用说明与数据测试175.1 使用说明175.2 数据测试17课程设计体会19参考文献20附录源程序21case 4:Grade. F
28、ind();break;case 5:Grade. Removeitem();break;case 6:Grade. ModifyltemO ;break;)return 0;27第1章课程设计的目的与任务1.1 课程设计目的通过高级程序设计语言课程设计,使学生能将学到的面向对象的程序设 计思想用到具体的工作和学习中,加深对类与对象的理解,是将计算机课程与实 际问题相联接的关键步骤。通过课程设计,能够提高学生分析问题、解决问题, 从而运用所学知识解决实际问题的能力。1. 2课程设计主要任务通过本课程设计,使学生进一步深化掌握C+语言的基本知识;掌握结构化 程序设计的基本方法和设计技巧,初步了解
29、算法分析与设计概念;理解面向对象 程序设计思想,初步具备运用面向对象程序设计方法进行程序设计的能力。能熟 练应用VC+集成环境进行C+语言程序的编写、编译与调试,提高学生对本课程 知识综合运用能力。为了实现对学生的成绩便于统计与查找,特制作学生成绩管理系统。设计内 容如下:设计四个类,包括学生类(描述学生基本信息);成绩类:班级类;课程 类(描述课程信息:课程编号,科目名称,如高等数学,大学英语等);学生成绩及课程信息用文件保存,程序执行时从文件读入;能按学期,按班级完成对学生成绩的录入、修改,能按班级统计学生的成 绩;求学生的总分及平均分,并能根据学生的平均成绩进行排序,能查询学生 成绩,不
30、及格科目及学生名单;能按班级输出学生的成绩单。- 设置学生的成绩信息:学生学号、姓名、所选课程名称、平时成绩、期 末成绩、平时成绩所占百分比。- 计算学生总评成绩:总评成绩:平时成绩*平时成绩所占百分比+期末成绩 * (1-平时成绩所占百分比)。- 显示学生的姓名、所选课程名称以及平时成绩、期末成绩和总评成绩信 息。分单人显示和以班输出(班成绩单格式输出到文件)。- 注意,至少应包含一个班、30人、三门课。第2章系统实现思路做题时,首先,应该先读懂题意,了解其核心。设想思路,然后将编译代码 写到纸上。最后再输入编译器中编译调试。得出最终的结果。2.1 学生成绩管理系统设计思路为了方便老师和学生
31、的使用,我们运用我们所学的知识,设计思路,明确其 重点与核心。首先,看到题目的要求后,应该有个大致的轮廓。调用什么函数, 有个做题方向与思路。我看到这道题,先想到用到的知识点与分了几种情况。其 次,是利用自己的课本以及网络去了解用到的知识点。这个系统有以下几种模块:(1)设计录入模块,将学生的信息录入系统;(2)将所有的学生信息显示出来,于是就有了显示模块;(3)输入成绩后要对成绩排序,于是就有了排序模块;(4)而且以免出错,便有删除和修改模块;(5)平安退出模块。2.2 课程设计所用设施PC机、VC6.0语言编辑、编译运行工具、文档编辑软件等。2. 3课程设计思路的核心这道题的设计核心是实现
32、老师方便输入和统计学生的各科成绩,并且便于学 生查找。其思路的核心,首先,我想到的就是运用类和文件流的输入输出,运用 类使程序更加简洁、清晰。运用文件流的输入输出可以保护文件不被破坏。将数 据储存在文件当中。明确了其运用的知识,其次,更深入的构思其数据和运用的 函数。最后,从其核心开始入手,然后,渐渐地扩展其相关内容。第3章系统详细设计明确的分析了其思路和核心,我们也就应该详细的去设计其思路,分析其所 需要设计的内容和参数以及了解所要设计函数的功能。更进一步的将思路深入 化,将其分析的通彻透底。3.1需求分析在设计过程中,我们应该根据2.1课程设计任务的思路的笼统的思考思路, 在来系统的进行分
33、析与讨论,最后得出想要的需求分析。需求分析有如下几点:(1)能对学生各科成绩进行录入;(2)能对学生的成绩进行增加;(3)能对学生的成绩进行删除;(4)能对学生的成绩进行修改;(5)能对学生的成绩按总成绩,姓名,进行查询;(6)能输出学生的所有数据;(7)能进行成绩统计;(8)能进行总分查询排名。3. 2系统功能模块.函数模块学生成绩管理系统程序采用了结构化程序设计的思想,由两个源文件和两 个.h头文件组成,程序中除了主函数还包括多个函数,分别包含在四个头文件 当中。以下是这些函数的函数原型及功能设计。(1) void Input ()函数功能:输入学生的信息。(2) void ReadFil
34、e(istream & in)函数功能:读取文件中的信息。(3) void Show()函数功能:将学生信息展现到显示屏。(4) void Display()函数功能:进入主菜单页面。(5) void AddltemO函数功能:进入下一个操作的页面。(6) getch ()函数功能:数是从控制台获取一个输入字符。(7) void ShowMenu()函数功能:目录的函数。(8) void Find()函数功能:查找学生信息的函数。(9) void ModifyltemOvoid Removeitem()函数功能:删除和修改学生信息。(10) void Swap(Student Student
35、*)函数功能:交换两个combox变量的数据域。(11) void Sort ()函数功能:对当前链表进行排序。(12) void save ()函数功能:保存函数。1 .主菜单模块了解了其使用的函数以及其功能后,然后我们就应该明确其主菜单所含有的 模块。学生成绩查询系统有:成绩录入、增加、删除、修改,数据查询,排序显 示构成。3.3模块框架图以及重要数据的设计1 .根据期末课程设计要求,本组统划分成七个主功能模块:录入学生信息及 成绩模块、修改学生信息模块、删除学生信息模块、查询信息模块、输出模块和 系统退出和保存模块,系统功能结构图如图3-1。图37模块框架图2 .重要数据的数据结构的设计。学生成绩管理的记录项用结构体student 表示,包括7个属性name、Id Cnum Enum Mnum sum average分别代表学 生的姓名、学号、语文、数学、英语三门课程以及总分和平均分。内容如下:class studentchar name20;char Id20;double Cnum;double Mnum;double Enum;double sum;d