




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
山东轻工业学院信息学院课 程 设 计 报 告课程名称: 面向对象程序设计 题目名称: 学生成绩管理系统 学生姓名: 王晓悦 专业班级: 嵌入14-1 指导教师: 任晓强 一、 课程设计目的与任务 课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,通过接近实际项目的训练,锻炼的分析解决实际问题的能力。在设计中,利用学到的编程知识,逐步学习面向对象程序设计中,类的设计,程序的编写,以及调试排错、测试等内容。 从实践中掌握程序设计的方法,提高学生面向应用的实践编程的能力。根据C+课程所学的概念、理论和方法,按照C+程序设计的基本步骤,设计出一个适当规模的程序来实现设计课程内容中的全部功能;设计主控模块程序对给出的程序源代码要给出各部分的详细注释自己根据能力及需要添加相应功能模块,增强模拟系统功能。包括系统的功能分析、系统的功能模块设计、程序流程图或结构框图、逻辑结构设计,数据库中的表、视图(如果使用)、索引的结构和定义、触发器、存储过程、课程设计体会。二、 课程设计内容1. 本设计题目的主要内容 设计四个类;学生类(描述学生基本信息);成绩类:班级类;课程类(描述课程信息:课程编号,科目名称(如高等数学,大学英语等);学生成绩及课程信息用文件保存,每个类一个文件,程序执行时从文件读入。 能按学期,按班级完成对学生成绩的录入,修改,能按班级统计学生的成绩;求学生的总分及平均分;并能根据学生的平均成绩进行排序,能查询学生成绩,不及格科目及学生名单;能按班级输出学生的成绩单。 设置学生的成绩信息:学生学号、姓名、所选课程名称、平时成绩、期末成绩、平时成绩所占百分比 计算学生总评成绩:总评成绩=平时成绩*平时成绩所占百分比+期末成绩*(1-平时成绩所占百分比) 显示学生的姓名、所选课程名称以及平时成绩、期末成绩和总评成绩信息。分单人显示和以班输出(班成绩单格式输出到文件) 2. 设计思想与程序构架(1)需求分析:a.能对学生各科成绩进行录入:。b.能对学生的成绩进行增加。c.能对学生的成绩进行删除。d.能对学生的成绩进行修改。e.能对学生的成绩按总成绩,姓名,进行查询。f.能输出学生的所有数据。g.能进行成绩统计h能进行总分查询排名。(2)系统性能要求:a.系统安全、可靠;b.功能齐全;c.操作方便、界面友好;d易于维护和扩充。(3)系统的功能分析:资料维护:系统维护包括对学生信息的录入操作及数据表中的信息进行浏览。系统功能:可以对数据表中的信息进行浏览。系统查询:可以对学生的信息进行查询。(4)系统功能模块学生成绩查询系统有:成绩录入、增加、删除、修改,数据查询,排序显示构成。(5)模块框架图学生成绩管理系统操作查询成绩统计按总成绩排名录入增加删除修改总成绩查询姓名每个学生的平均成绩各科不及格的人数输出所有学生的成绩3. 软件使用说明书 进入visusalc+6.0开发环境。单击NextTipA按钮可显示下一条信息,单击Close按钮关闭。创建一个visualc+项目。在开发环境主窗口中选择File/new菜单项,单击Projects选项卡,选择Win32ConsoleApplication,在ProjectName文本框中输入“学生成绩管理系统”,在Location文本框中输入要保存的路径,单击OK按钮完成该对话框的设置。在弹出的对话框中选择AnEmptyProject单选钮,并单击Finish按钮,在弹出的对话框中单击OK按钮,完成“学生成绩管理系统”的创建。编辑并建立C+源程序。选择ProjectAddToProjectNew菜单项,在弹出的对话框的File选项卡中选择C+SourceFile选择,在File文本框中输入文件名“学生成绩管理系统”,其他选项选择默认值。单击OK按钮,弹出编辑窗口,在该窗口中进行源代码的输入。编译并运行程序。在完成源代码的编辑后,选择FileSave保存所编辑的源程序文件。选择BuildCompile学生成绩管理系统.cpp编译源程序。如果语法有错误,在屏幕下方会有提示,根据这些提示直到没有任何语法错误。选择BuildCompile学生成绩管理系统.exe连接学生成绩管理系统程序,如果有错误显示,则排除这些错误直到没有,那样就已经建立了学生成绩管理系统.exe可执行文件。选择BuildExecute.exe,运行学生成绩管理系统程序。此软件可以分为四个类:操作、查询、成绩统计和排名。系统管理员首先要进行数据统计,按1录入学生姓名、学号、数学成绩、c+成绩和英语成绩,按2可以继续增加学生信息,如有问题可以按3修改或按4删除数据,管理员可以通过软件对输入的数据进行计算,算出学生的总成绩和平均成绩以及该学生成绩是否及格,如果要查询数据可以根据自己的情况选择用学生姓名或学号进行查询,同时可以得出其对应的排名,最后退出该系统。 通过上述测试,本系统实现了对学生成绩等信息的显示功能,能够显示已有学生的成绩信息;实现了对学生的添加功能,能够添加另外学生的成绩;实现了对已有学生成绩信息的查找功能,能够根据学生的姓名或学号来查找学生的成绩信息;实现了对学生成绩信息的修改,删除等功能,同时能够避对没有的学生进行准确的判断,输入没有登记的学生姓名或学号,系统会自动弹出输入错误的报告等。4. 程序测试及分析 该软件可以正常运行,但是有很多的地方都不够完善,例如:在总成绩排序中,只能输出总成绩,不能单独的输出学生的相应的信息;每次进行别的操作之前都要在进行一次数据的录入,不能直接对原有的文件进行读取。 可以运行界面: 输入学生姓名学号以及各科成绩: 添加学生姓名、学号以及各科成绩:5. 设计总结此次c+课程设计,我们学会了如何用C+编写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。本系统是以VisualC+6.0为开发工具编的程序。本系统实现了对学生成绩等信息的显示,添加,查找,修改和删除的功能。第一周结束的时候,我感觉自己收获挺大的,从一开始的迷茫,不知道从何下手到把程序中的几个模块编写出来,心里挺开心的。但是,到了第二周,我由不得不再次陷入困境。在整个程序的编写过程中。最难的就是修改和删除这两个模块。开始编写修改和删除时,很头疼,去向其他人寻求帮助,在别人的帮助和提示下,我编完了修改程序,但编译时老出错,修改后的内容将文本内的信息全部覆盖了。根据C+课程所学的概念、理论和方法,按照C+程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C+语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。三、 附录 #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.rdbuf(); outf.close(); f.close(); cout数据删除成功,想继续删除吗(y/n)c; if(c!=y&c!=n) cout指令错误!请重新输入!c; while(c=y); break; case 4:/修改数据 string sname,line,str,name; int nu;float eng,ma,com;int flag;char c;if(i=0)cout系统中没有输入数据,请先输入数据!endl;break;do flag=0; coutname; fstream fin(f1.txt,ios:in); ofstream outfile(f.txt,ios:trunc|ios:out); coutendl; while(!fin.eof() ) /在文件中查找 getline(fin,line); istringstream stream(line); sname = line.substr(0,line.find( ,0);if(name!=sname)outfilelineendl;else flag=1; fin.close(); if(flag=1) coutnamenumacomeng;coutendl;outfilename 学号:nu 数学成绩:ma C+成绩:com 外语成绩:engendl; outfile.close();fstream outf(f1.txt,ios:trunc|ios:out);fstream inf(f.txt,ios:in);outfinf.rdbuf()endl;outf.close();inf.close(); if(flag=0)cout对不起,您要修改的学生不存在!请查证后输入!endl; coutc; coutendl; if(c!=y&c!=n) cout 指令错误!请重新输入!endlc; while(c=y);break; case 5:/按总分查询 int j=0;float SUM;char c;int flag; if(i=0)cout系统中没有输入数据,请先输入数据!endl;break; do flag=0; cout请输入您要查询的学生的总成绩:SUM; for(int j=0;jgetsum()=SUM) flag=1;cout您要查询的学生是:(*sj).nameendl;cout该生的信息为:endl;cout 学号:(*sj).number 数学分数:(*sj).math c+分数:(*sj).cpp 英语分数(*sj).englishendl; if(flag=0)cout对不起!您要查询的学生不存在!endl;coutc;if(c!=y&c!=n)cout指令错误!请重新输入!c; ; while(c=y); break; case 6:/按姓名查询 char n20;char c;int j=0;int flag; if(i=0)cout系统中没有输入数据,请先输入数据!endl;break; do flag=0; cout请输入要查询的名字: n; for(int j=0;ji;j+) if(strcmp(n,(*sj).name)=0)flag=1;cout您要查询的学生是:(*sj).nameendl;cout该生的信息是:学号:(*sj).number 数学分数:(*sj).mathc+分数:(*sj).cpp英语分数:(*sj).englishendl; if(flag=0)cout对不起您要查询的学生不存在,请查证后再输入!endl;coutc;if(c!=y&c!=n)cout指令错误!请重新输入:c; while(c=y); break; case 7:/输出所有学生数据 cout所有学生数据如下:endl; ifstream file; file.open(f1.txt,ios:in); coutfile.rdbuf(); file.close(); break; case 8:/统计每个学生的平均成绩 if(i=0) cout系统中没有输入数据,请先输入数据!endl;break; for(int m=0;mi;m+) cout(*sm).name 学号:(*sm).number 总分:(*sm).getsum() 均分:(*sm).getaver()endl; break; case 9:/统计各学科不及格人数 if(i=0) cout系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司财务管理流程
- 慢性病患者康复计划
- 家具印刷管理细则
- 心理咨询服务制度实施方案制定计划
- 2025重庆市永川区教育委员会招聘公益性岗位人员1人笔试备考试题及答案解析
- 如何引导初高中学生建立正确的人际交往观念
- 实施仪表工业绿色生产方案
- 园艺养护技巧:花草长寿不难
- 2025兴业银行总行国际业务部交易银行部招聘考试含答案
- 2025下半年北京密云区事业单位招聘62人笔试备考试题及答案解析
- 西语国家概况
- 成人学士学位英语1000个高频必考词汇汇总
- GB/T 5271.29-2006信息技术词汇第29部分:人工智能语音识别与合成
- 全屋定制家居橱柜衣柜整装安装服务规范
- GB/T 28248-2012印制板用硬质合金钻头
- 沥青及沥青混合料试验作业指导书
- 义务教育阶段学生艺术素质测评指标体系小学音乐
- 茶叶生产加工常用表格
- 妊娠合并HIV(医学PPT课件)
- Minitab(高级)
- 工学结合的课程开发与教学设计
评论
0/150
提交评论