《高级程序设计语言》课程设计 -学生成绩管理系统设计与实现.doc_第1页
《高级程序设计语言》课程设计 -学生成绩管理系统设计与实现.doc_第2页
《高级程序设计语言》课程设计 -学生成绩管理系统设计与实现.doc_第3页
《高级程序设计语言》课程设计 -学生成绩管理系统设计与实现.doc_第4页
《高级程序设计语言》课程设计 -学生成绩管理系统设计与实现.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

河南工程学院高级程序设计语言课程设计成果报告学生成绩管理系统设计与实现学生学号 : 学生姓名: 学 院: 计算机学院 专业班级: 软件工程1341 专业课程: 高级程序设计语言指导教师: 2014 年 6 月 27 日题 目学生成绩管理系统设计与实现考核项目考核内容得分平时考核(30分)出勤情况、态度、效率;知识掌握情况、基本操作技能、知识应用能力、获取知识能力系统设计(30分)分析系统的功能模块编程调试(30分)实现系统的各个功能模块,并完成调试回答问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代码的排版总 评 成 绩指导教师评语: 日期: 年 月 日目 录第1章 系统设计目的11.1 设计内容11.2 课程设计的要求11.3课程设计基本操作方法1第2章 系统实现思路22.1 页面设计22.2 功能设计与实现22.3系统模块化设计图32.4 系统需求分析3第3章 系统详细设计43.1 系统的需求43.2主函数设计113.3系统的性能要求133.4 系统的功能分析133.5系统的功能模块13第4章 系统调试运行144.1测试结果144.2程序运行总结17课程设计体会19参考文献20第1章 系统设计目的1.1 设计内容a.设计四个类;学生类(描述学生基本信息);成绩类;班级类;课程类(描述课程信息:课程编号,科目名称(如高等数学,大学英语等);学生成绩及课程信息用文件保存,每个类一个文件,程序执行时从文件读入。b.能按学期,按班级完成对学生成绩的录入,修改,能按班级统计学生的成绩;求学生的总分及平均分;并能根据学生的平均成绩进行排序。能查询学生成绩,不及格科目及学生名单;能按班级输出的学生的成绩单。设置学生的成绩信息:学生学号、姓名、所选课程名称、平时成绩、期末成绩、平时成绩所占百分比计算学生总评成绩:总评成绩=平时成绩*平时成绩所占比百分比+期末成绩*(1平时成绩所占百分比)显示学生的姓名、所选课程名称以及平时成绩、期末成绩和总评成绩信息。分单人显示和以班输出(班成绩单格式输出到文件)注意,至少一个班,30人三门课1.2 课程设计的要求根据c+课程所学的概念、理论和方法,按照c+程序设计的基本步骤,设计出一个适当规模的程序设计课程内容中的全部内容功能;设计主控模块程序。对给出的程序源代码要给出各部分的详细注释。自己根据能力及需要添加相应功能模块。包括系统的功能分析、系统的功能模块设计、程序流程图或结构框图、逻辑结构设计,数据库中的表、视图(如果使用)、索引的机构和定义、触发器、储存过程、课程设计体会。1.3课程设计基本操作方法1按照系统用户手册及文档规范要求进行操作,养成查阅手册、文档的良好习惯;2对特殊疑难问题采用讨论、协作等方式进行解决,有意识地训练团队合作意识;3课程设计报告应多包含在课程设计过程中出现的错误及解决方法。第2章 系统实现思路2.1 页面设计程序运行后会出现一个简洁的窗口,便于用户查询数据。(1)基本要求:a要求利用面向对象的方法以及c+的编程思想来完成系统的设计;b要求在设计的过程中,建立清晰的类层次;c在系统中至少要定义四个类,每个类中要有各自的属性和方法;d在系统的设计中,至少要用到面向对象的一种机制。(2)创新设计在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。(3)写出设计说明书2.2 功能设计与实现 通过主窗体调用其他窗体,具体实现可以参照系统分析相关内容。应用系统主控界面包括记录编和记录查询等功能模块。记录编辑功能完成学生成绩记录编辑和记录查询功能。记录查询功能可以对数据各分类的记录进行查询1.设计方法和基本原理:(1)问题描述设计一个实用的小型班级程序,具有查询和删除功能,并且能够打开或修改指定文件及将多个文件组成组成一个文件。他完全使用类来实现,充分体现面向对象的程序设计特点。要求:实现主要功能:建立文件,文件的存取和显示,删除记录,查询记录。(2)问题的解决方案:根据系统功能要求,可以将问题分为: a.应用系统分析,建立该系统的功能模块框图以及界面的设计和组织;b分析系统中的各个实体及它们之间的关系包括属性和行为;c.根据问题描述,设计系统的类层次;d完成类层次中各个类的描述(包括属性和方法);e完成类中各个成员函数的定义;f完成系统的应用模块;g.功能调试;h完成系统总结以及系统应用说明书。 2.3系统模块化设计图该学生管理系统主要分为七个功能模块,各个功能模块由相应的功能函数来实现,模块化图如下:学生管理系统主菜单录入数据查询数据修改数据保存数据数据排序数据读取退出系统图表 21 系统模块化设计图2.4 系统需求分析(1)学生信息录入功能;(2)学生成绩查询功能;(3)学生成绩输出功能;(4)学生信息修改功能;(5)学生信息删除功能;(6)学生成绩的排序功能。第3章 系统详细设计3.1 系统的需求1.构造学生信息结构体存储学生信息学生信息包括:姓名,学号,数学,英语,数构,物理,总分,平均分等信息。构造代码如下:struct Student /声明一个名为student的结构体类型 string name; /姓名 string number; /学号 double maths; /数学 double english; /英语 double datastruct; /数构 double physical; /物理 double total; /总分 double average;/均分; 2. 系统功能函数类的设计把该系统要实现的功能封装在此类中,方便增加和修改。在本系统中设计了七个函数分别实现学生成绩的录入,查询,输出,修改,删除,求总分和平均分。其代码如下::class SYSTEM /声明类systempublic:SYSTEM()n=0; /构造函数 void add();/添加 void show();/显示 void search();/查询 void change();/修改 void delet();/删除 void sort();/排序 void Max();/最高分 void Min();/最低分private:Student stu1000;/定义一个结构体类型student的变量stu int n;各功能函数代码如下:学生信息输入函数add()void SYSTEM:add()/添加 cout学号:stun.number; cout姓名:; cout数学:stun.maths; cout英语:stun.english; cout数构:stun.datastruct; cout物理:stun.physical; stun.total= stun.maths+ stun.english+ stun.datastruct+ stun.physical; stun.average=stun.total/4; n+;/学生人数增加一个 (2)学生成绩查询函数search()void SYSTEM:search()/查询 cout请选择查询方式:endl; cout1.按学号查询endl; cout2.按姓名查询c; switch (c) case 1:/按照学号查询string num;cout请输入要查询的学号:num;for(i=0;in;i+) if(stui.number=num) cout学号 姓名 数学 英语 数构 物理 总分 平均分endl;coutstui.number stui.maths stui.english stui.datastruct stui.physical stui.total stui.averageendl;break; if(stui.number!=num)cout未找到该学生信息!endl;break;case 2:/按照学号查询string name1;cout请输入要查询的姓名:name1;for(i=0;in;i+) if(=name1) cout学号 姓名 数学 英语 数构 物理 总分 平均分endl;coutstui.number stui.maths stui.english stui.datastruct stui.physical stui.total stui.averageendl; break; (3)学生成绩输出函数show()void SYSTEM:show()/输出 cout学号 姓名 数学 英语 数构 物理 总分 平均分endl; for(int i=0;in;i+) coutstui.number stui.maths stui.english stui.datastruct stui.physical stui.total stui.averageendl; void SYSTEM:change() /修改string num;int i; cout请输入要修改的学生学号:num; for(i=0;in;i+) if(stui.number=num) cout该学号的学生信息如下:endl; cout学号 姓名 数学 英语 数构 物理 总分 平均分endl; coutstui.number stui.maths stui.english stui.datastruct stui.physical stui.total stui.averageendl;cout请输入新的学生信息:endl;cout学号:stui.number;stun.number=stui.number;cout姓名:;=;cout数学:stui.maths;stun.maths =stui.maths;cout英语:stui.english;stun.english=stui.english;cout数构:stui.datastruct;stun.datastruct=stui.datastruct;cout物理:stui.physical;stun.physical=stui.physical;stui.total= stui.maths+ stui.english+ stui.datastruct+ stui.physical;stui.average=stui.total/4;break; if(stui.number!=num)cout无此学生信息!endl;void SYSTEM:delet() /删除 string num; cout请输入要删除学生的学号,然后按回车确认:num; for(int i=0;in;i+) if(stui.number=num) for(int j=i;jn-1;j+) stuj=stuj+1;/用后一个学生信息覆盖前一个学生信息 n-; /学生人数减少一个 cout已成功删除该学生信息!endl;break;(4)排序函数sort()void SYSTEM:sort() /排序cout请选择排序方式:endl;cout1.按学生总分排序endl;cout2.按学生平均分排序endl;cout3.返回k; switch (k) case 1:/按学生总分排序 Student p; for(int i=0;in;i+) for(int j=0;jn-i;j+) if(stuj.totalstuj+1.total) p=stuj; stuj=stuj+1; stuj+1=p; cout学号 姓名 数学 英语 数构 物理 总分endl; for(int m=0;mn;m+) coutstum.number stum.maths stum.english stum.datastruct stum.physical stum.totalendl; break; case 2:/按学生平均分排序 Student p;/定义一个Student类型的变量p for(int i=0;in;i+) for(int j=0;jn-i;j+) if(stuj.averagestuj+1.average) p=stuj; stuj=stuj+1; stuj+1=p; cout学号 姓名 数学 英语 数构 物理 平均分endl; for(int m=0;mn;m+) coutstum.number stum.maths stum.english stum.datastruct stum.physical stum.averageendl; break;case 3:return;/返回 (5)求各科最高分函数Max()void SYSTEM:Max()/最高分double max1,max2,max3,max4,max5,max6;max1=stu0.maths;max2=stu0.english;max3=stu0.datastruct;max4=stu0.physical;max5=stu0.total;max6=stu0.average; for(int i=0;imax1) max1=stui.maths ; if(stui.englishmax2) max2=stui.english; if(stui.datastructmax3) max3=stui.datastruct; if(stui.physicalmax4) max4=stui.physical; if(stui.totalmax5) max5=stui.total; if(stui.averagemax6) max6=stui.average; cout数学最高分 英语最高分 数构最高分 物理最高分 总分最高 平均分最高endl; cout max1 max2 max3 max4 max5 max6endl; (6)求各科最低分函数Min()void SYSTEM:Min()/最低分double min1,min2,min3,min4,min5,min6; min1=stu0.maths; min2=stu0.english; min3=stu0.datastruct; min4=stu0.physical; min5=stu0.total; min6=stu0.average; for(int i=0;in;i+) if(stui.mathsmin1) min1=stui.maths; if(stui.englishmin2) min2=stui.english; if(stui.datastructmin3) min3=stui.datastruct; if(stui.physicalmin4) min4=stui.physical; if(stui.totalmin5) min5=stui.total; if(stui.averagemin6) min6=stui.average; cout数学最低分 英语最低分 数据结构最低分 物理最低 总分最低 平均分最低endl; cout min1 min2 min3 min4 min5 min6endl; 3. 主函数设计先用循坏语句实现不断重复,通过多重选择语句调用功能函数类中的相应函数实现学生成绩管理系统的各项功能需求。其代码如下:void main() SYSTEM person; int b;3.2主函数设计先用循坏语句实现不断重复,通过多重选择语句调用功能函数类中的相应函数实现学生成绩管理系统的各项功能需求。void main() SYSTEM person; int b; do cout*endl; cout 1.输入学生成绩 5.删除学生成绩endl; cout 2.查询学生成绩 6.学生成绩排序endl; cout 3.输出学生成绩 7.最高分endl; cout 4.修改学生成绩 8.最低分endl; cout 0.退出学生成绩管理系统endl; cout*endl; coutb; switch(b) case 1: cout请依次输入该学生的相关信息:endl; person.add(); break; case 2: person.search(); break; case 3: person.show(); break; case 4: person.change(); break; case 5: person.delet(); break; case 6: person.sort(); break; case 7: person.Max(); break; case 8: person.Min(); break; case 0:cout谢谢使用本系统!endl; while(b10);3.3系统的性能要求(1)系统安全、可靠;(2)功能齐全;(3)操作方便、界面友好;(4)易于维护和扩充。3.4 系统的功能分析(1)资料维护:系统维护包括对学生的信息的录入操作及数据表中的信息进行浏览。(2)系统功能:可以对数据表中的信息进行浏览。(3)系统查询:可以对学生的信息进行查询。3.5系统的功能模块学生成绩查询系统有:成绩录入、增加、删除、修改、数据查询,排序显示构成。第4章 系统调试运行4.1测试结果每一个case都能执行,但是很多的地方都不够完善,例如:在总成绩排序中,只能输出总成绩,不能单独的输出学生的相应的信息;每次进行别的操作之前都要进行一次数据的录入,不能直接对原有的文件进行读取。 4-1修改学生成绩4-2删除学生成绩4-3学生成绩排序4-4输出各科最高分4-5输出各科最低分4-6退出系统4.2程序运行总结该程序经过多次运行后,最终通过执行结果,很多细节需要我们留意,一个很小的错误就可能造成程序无法运行。课程设计体会亲身体会:这次的c+课程设计实践中,在老师的指导下,运用c+的知识编写一个课题。在整个过程中我们要明白设计目的,然后进行分析,而且团队意识很重要。在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。第一次进行实训,刚开始不知该如何下手,感觉跟平时学的知识跟现实无法连接,但是在老师和其他同学的帮助下,还是最终做到了有始有终,尝到了成功的甜头。对程序这门课又有了新的认识,并且产生了浓厚的兴趣。参考文献1 谭浩强著,C+语言设计题解与上机指导,清华大学出版社2 谭浩强著,C+面向对象程序设计,清华大学出版社3 Deitel.Java大学基础教程(第六版).电子工业出版社4 MaryCampione.Java语言导学(第四版).机械工业出版社5 Y.DanielLiang.Java语言程序设计基础篇(第六版).机械工业出版社6 KathySierra.HeadFirstJava(第二版).东南大学出版社 #include #include #include#include#includeusing namespace std; class Tstu /通过定义一个类来定义数据录入的函数 char name20; int number; float math,cpp,english,average,sum; public: Tstu() ; Tstu ( char n20, int num,float ma,float cj,float eng ) ; float getsum();/得到总分的函数 float getaver(); /得到平均分的函数 friend void main(); /将主函数定义为友元函数,方便访问类中的成员 ; Tstu:Tstu ( char n20, int num,float ma,float cj,float eng ) strcpy(name,n); /得到姓名 number=num; /得到学号 math=ma; /得到数学成绩 cpp=cj; /得到c+成绩 english=eng; /得到英语成绩 float Tstu:getsum() /得到总分的函数 sum=cpp+english+math; return sum; float Tstu:getaver() /得到平均分的函数 average=getsum()/3; return average; void main() cout*欢迎来到学生成绩查询系统*endl; cout请选择您需要的操作!endl; /菜单的输出 cout操作:endl; cout(1)数据录入endl; cout(2)增加学生endl; cout(3)删除学生endl; cout(4)修改数据endl; cout查询:endl; cout(5)按总成绩查询endl; cout(6)按姓名查询endl; cout(7)输出所有学生的数据endl; cout成绩统计:endl; cout(8)每个学生的平均成绩endl; cout(9)各科不及格人数endl; cout排名:endl; cout(10)按总分查询排名endl; cout(11)退出endl; cout选择相关操作请输入相对的括号里的阿拉伯数字及字母!p; if(p=1&p=11) chris1=1; else cout指令错误!请重新输入:endl; while(chris1=0); do switch(p) case 1: /数据的录入 char c; /用于在小项中选择是否继续操作 char name20; int number; float math,cpp,english; do cout请输入姓名:name; cout请输入学号:number; cout请输入数学成绩:math; cout请输入C+成绩:cpp; cout请输入英语成绩:english; fstream outfile,infile; /作一个文本文档在文件夹中用于显示所录入的数据 outfile.open(f1.txt,ios:out|ios:app); if(!file) coutf1.txt can not open.n; return; outfilename 学号:number 数学成绩:math C+成绩:cpp 外语成绩:englishendl; outfile.close(); infile.open(f1.txt,ios:in); if(!file) /判断文件是否打开 coutf1.txt can not open.n; return; char ch; while(infile.get(ch) coutch; coutendl; infile.close(); j+; si=new Tstu(name, number,math, cpp, english); i+; cout数据录入成功,想继续录入吗(y/n)c; chris1=0; do if(c!=y&c!=n) cout指令错误!请重新输入!c; else chris1=1; while(chris1=0); while(c=y); /重复输入 break; case 2: /增加学生数据 char name20; int number; float math,cpp,english; char c; do cout请输入您要增加的学生的姓名:name; cout请输入你要增加的学生的学号:number; cout请输入数学成绩:math; cout请输入C+成绩:cpp; cout请输入英语成绩:english; fstream outfile,infile; outfile.open(f1.txt,ios:out|ios:app); if(!file) coutf1.txt can not open.n; return; outfilename 学号:number 数学成绩:math C+成绩:cpp 外语成绩:englishendl; outfile.close(); infile.open(f1.txt,ios:in); if(!file) coutf1.txt can not open.n; return; char h; while(infile.get(h) couth; coutendl; infile.close(); j+; si=new Tstu(name,number, math, cpp, english); i+; cout数据录入成功,想继续录入吗(y/n)c; if(c!=y&c!=n) cout指令错误!请重新输入!c; while(c=y); break; case 3:/删除学生信息 char c; string xingming,line,str,name; do ifstream fin(f1.txt); fstream outfile(f2.txt,ios:trunc|ios:out); /作一个文本文档在文件夹中用于显示所录入的数据 cout请输入您要删除的学生的姓名:xingming; while(!fin.eof() ) getline(fin,line); istringstream stream(line); name = line.substr(0,line.find( ,0);/找到名字,判断是否相等 if(name != xingming) outfilelineendl; outfile.close(); fin.close(); fstream f(f1.txt,ios:trunc|ios:out); ifstream outf(f2.txt); foutf.rdbu

温馨提示

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

评论

0/150

提交评论