面向对象程序设计课程设计-学生成绩管理系统.doc

上传人:椰子壳 文档编号:5028169 上传时间:2020-01-29 格式:DOC 页数:20 大小:1.13MB
返回 下载 相关 举报
面向对象程序设计课程设计-学生成绩管理系统.doc_第1页
第1页 / 共20页
面向对象程序设计课程设计-学生成绩管理系统.doc_第2页
第2页 / 共20页
面向对象程序设计课程设计-学生成绩管理系统.doc_第3页
第3页 / 共20页
面向对象程序设计课程设计-学生成绩管理系统.doc_第4页
第4页 / 共20页
面向对象程序设计课程设计-学生成绩管理系统.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《面向对象程序设计课程设计-学生成绩管理系统.doc》由会员分享,可在线阅读,更多相关《面向对象程序设计课程设计-学生成绩管理系统.doc(20页珍藏版)》请在三一文库上搜索。

1、学校代码: 10128学 号: 200920205014课程设计说明书题 目: 学生成绩管理系统学生姓名: 学 院: 班 级: 指导教师: 2011 年 1 月 21 日面向对象程序设计课程设计说明书内蒙古工业大学课程设计(论文)任务书课程名称: 面向对象程序设计课程设计 学院: 班级: 学生姓名: _ 学号: 指导教师: 一、题目学生成绩管理系统二、目的与意义面向对象程序设计课程设计课程设计是计算机科学与技术专业实践性环节之一,通过课程设计的综合训练可以使学生进一步理解和掌握面向对象程序设计课程的基本知识;掌握面向对象程序设计的思路和方法;基本具有利用面向对象的方法以及 C+的编程思想来完成

2、系统设计的能力。三、要求(包括原始数据、技术参数、设计要求、图纸量、工作量要求等) 1. 要求利用面向对象的方法以及C+的编程思想来完成系统的设计;2. 要求在设计的过程中,建立清晰的类层次;3. 在系统中至少要定义一个类,类中要有各自的属性和方法;4. 在系统的设计中,至少要用到面向对象的一种机制。四、工作内容、进度安排 1. 根据课程设计的要求,确定设计题目;(0.5天)2. 查找相关资料,进行应用程序总体结构、使用功能的设计;(0.5天)3. 进行应用程序的界面设计和源程序代码的编写;(2.5天)4. 设计说明书的撰写、答辩(1.5天)五、主要参考文献1C+语言程序设计(第三版),郑莉,

3、清华大学出版社,20042C+程序设计教程,钱能主编,清华大学出版社,1999.43C+程序设计课程设计,刘振安,机械工业出版社,2004.8审核意见系(教研室)主任(签字) 指导教师下达时间 2011年 1月 17日指导教师签字:_目录目录3第一章 概述41.面向对象程序设计简介42.程序功能简介5第二章 功能实现简介51.程序核心类的设计52.函数的实现62.1键盘输入模块62.2显示数据62.3查找学生成绩模块82.4 信息修改92.5删除学生信息模块92.6排序学生成绩模块102.7保存学生成绩模块11第三章 调试及运行结果121主菜单122 查找模块122.1当用户输入4是出现以下界

4、面:122.2当用户输入5则出现以下界面:133修改学生成绩模块134删除学生成绩模块145输入模块156排序学生成绩模块157显示成绩模块16第四章 总结171.遇到的问题及解决办法171.1循环的控制171.2空格的控制171.3.字符串的读写171.4.文件的调用181.5 排序使用181.6 .美化运行环境181.7 .类成员的调用182 心得体会18参考文献20第一章 概述1.面向对象程序设计简介面向对象编程用语言与其他语言不同,它将客观事物看做具有属性和行为的随想,通过抽象找出同一类对象共同属性和行为。主要特点是:抽象、封装、继承和多态。在本程序的设计过程中,主要运用了抽象和封装的

5、手法。本程序中将抽出的公共性质和一部分功能一起封装成了一个Student类,功能被设计成相应的函数。封装中的函数为类提供了外部接口,而类的成员:学号、班级、姓名、成绩数组、平均成绩都已经隐藏起来,这样就达到了对成员访问权限的合理控制,使不同类之间的相互影响减少到最低,保证了数据的安全性。另一方面,将数据和代码封装成一个可重用的程序模块,在编写新程序时就可以重复利用已有的成果,从而简化了程序的编写工作。 2.程序功能简介本学生成绩管理系统程序运行后,将显示一个主菜单,用户可以根据主菜单选择不同的选项,对数据进行相应的操作。当程序运行后要实现输入、查找、和删除,修改的功能。在此基础上考虑到输入过程

6、中可能出现误操作情况、学生退学或毕业情况以及需要对成绩排序的需求我又添加了相应的功能。具体的功能可以分为以下几个模块:输入学生成绩模块、查找学生成绩模块、修改学生成绩模块、删除学生成绩模块、排序学生成绩模块。输入学生成绩模块包含了两个子模块:从键盘输入学生成绩和从文件读取学生成绩。第二章 功能实现简介1.程序核心类的设计对学生成绩进行抽象后,设计stu类如下:class stu private:char name20; double math,chinese,english,tiyu,average,sum; public: stu() stu(char n20,double ma,doubl

7、e chin,double eng,double ty); double getsum(); double getaver(); void in(); /数据添加函数void dele(); /数据删除函数void modiy(); /数据修改函数void search1(); /数据总分查找函数 void search2(); / 数据姓名查找函数void show(); /数据显示函数void row(); /排名;2.函数的实现2.1键盘输入模块当程序运行后用户从主菜单中选择了“录入学生信息”后,程序分步将提示用户输入相应的信息如:姓名、以及各科成绩等。输入完学生成绩后,将自动计算出该学

8、生的平均成绩以及每科平均成绩。对于成绩的录入采用循环。核代码如下:do coutname; coutmath; coutchinese; coutenglish; couttiyu;while(c=y);2.2显示数据如果用户选择显示学生数据后,系统将曾文件中提取信息进行显示,其中包括每科的平均成绩以及大于90分的学生信息。核心代码如下:cout管理系统中没有录入数据或者数据已经被删除!endl;cout编号 姓名 语文 数学 外语 体育 总分 平均分endl;for(int k=0;ki;k+) coutk+1 name chinese math english tiyu (*sk).get

9、sum() (*sk).getaver()math;sum2+=sk-chinese;sum3+=sk-english;sum4+=sk-tiyu;for( k=0;k=90)cout平均分大于90的同学如下:n;cout编号 姓名 语文 数学 外语 体育 总分 平均分endl;break;for( k=0;k=90)coutk+1 name chinese math english tiyu (*sk).getsum() (*sk).getaver()endl; if(i!=0)cout数学平均分:sum1/kendl;cout语文平均分:sum2/kendl;cout英语平均分:sum3/

10、kendl;cout体育平均分:sum4/kendl;2.3查找学生成绩模块2.31 按总分查找for(int q=0;qgetsum()=t) flag1=1; cout您要查询的学生是:(*sq).nameendl; 2.3.2按姓名查找for(int j=0;ji;j+) if(strcmp(n,(*sj).name)=0) flag=1; cout姓名 总分 平均分endl; cout(*sj).name (*sj).getsum() (*sj).getaver()endl; 2.4 信息修改当用户从主菜单选择了“修改学生成绩”后,将提示用户输入要修改的学生成绩的姓名,输入完成后,该系

11、统将自动查找当前所有信息中是否有该与学号相对应的成绩存在,当用户确认后,将逐步提示用户重新输入与该学号相对应的成绩信息。核心代码如下:do cout请输入您要修改的学生的姓名:name; for(int h=0;hname)=0) flag2=1; coutmat; coutchin; couteng; coutty;sh-tiyu=ty;sh-chinese=chin; sh-math=mat; sh-english=eng; cout数据修改成功!; while(c=y);2.5删除学生信息模块当用户从主菜单选择了“删除学生成绩”后,将提示用户输入要删除的学生的姓名,输入完成后,该系统将自

12、动查找当前所有信息中是否有该与学号相对应的成绩存在,当用户确认后,将从此记录之后依次利用下一条记录代替前一条记录,如不存在,将返回提示信息。核心代码如下:do cout请输入您要删除的学生姓名:name; for(int h=0;hname)=0) flag3=1; i-; do sh=sh+1;h+; while(h=i); if(flag3=0) cout您要求删除的对象本来就不存在!请检查输入的正确性!n; coutif(c!=y&c!=n) coutc; while(c=y); 2.6排序学生成绩模块当用户从主菜单选择了“按平均成绩排序(降序)”后,系统将当前所有成绩信息按平均成绩(降

13、序)排序并显示在屏幕上,其排序方法为“冒泡”排序法。主要代码如下:for(int x=0;xi-1;x+) t=x; for(int y=x+1;ygetsum()getsum() t=y; if(t!=x) b=*sx; *sx=*st; *st=b; 2.7保存学生成绩模块该模块可以实现将当前内存中所有的信息全部保存到文件中,为了使使用人员操作简单,该模块将在使用人员退出系统时自动调用,以防止操作后未保存就退出的事件发生。代码如下:filej= new fstream(student.txt,ios:out|ios_base:app); if(t=0)*filej姓名setw(10)数学成

14、绩setw(12)语文成绩setw(12)外语成绩setw(12)体育成绩endl; *filejnamesetw(8)mathsetw(12)chinesesetw(12)englishsetw(12)tiyup; if(p=0&p=10) flag2=1; else cout指令错误!请重新输入:endl; 这样当成绩不符合要求时可以一直提示输入有误并提供重新输入的机会。1.2空格的控制.输出函数中需要多个空格式,在程序中添加如下代码用来控制输出格式:coutsetw(10);1.3.字符串的读写在写入和读取函数中可以写入,不能正常读取,经过调试后返现原因是写入时数据之间没有分割符,导致读

15、取时直接把全部数据读成字符串,写入时数据之间没有分割符,导致读取时直接把全部数据读成字符串,一次性读入。在写入函数中没写入一个数据就添加一个分隔符endl,这样就可以正常读入。1.4.文件的调用在写入函数和读取函数中可以写入,不能读取,经调试发现是读入时的循环控制变量没有初始化。在写入函数中添加如下代码:outfilecountendl;即将当前学生人数写入文件,读取时再用此数据初始化循环变量,这样不但可以正常读取,还实现了文件的追加写入。1.5 排序使用.排序函数不能得出正确结果,经调试发现排序方法不正确,经改正为冒泡排序法后结果正确。1.6 .美化运行环境程序运行过后由于选项较多,造成屏幕

16、堆叠内容过度,显示非常凌乱。在程序中适当位置添加如下语句:system(pause);和system(cls);在这两个个函数的配合下经调试后,程序会在适当的时候清除屏幕堆叠内容,使程序更为简洁明了。1.7 .类成员的调用在很多函数中提示无法调用类的私有成员。将此类函数声明为类的由原函数即可调用类的私有成员并对之进行处理。2 心得体会一周的课程设计很短暂,但是也很充实。原本已经考完试,而且已经接近年底,我早已归心似箭。但是这一周的课程设计中我突然间发现自己的知识掌握的并不牢靠,而且动手能力实在不强,原本以为很简单的题目,在实践过程中才发现,看似简单的问题,往往有难以轻松解决的困难。在设计过程中

17、,我不仅复习了这学期所学的c+知识,还在与人合作方面得到提升,虽然实验要求每人一组,但是在设计过程中,我却在与同学的讨论中获益匪浅。很多问题也是在讨论中得以解决。课程设计是专业课,这样的形式使我们可以自由充分的发挥,尽情的去完成和完善我们的程序,并在设计过程中不断地复习和提高。对于我个人来说,我最大的收获是对c+中文件的处理更得心应手了,原来上课时不懂得内容也在实践过程中得以掌握。但是我发现我还是有很多地方值得去提高和学习,比如说容器的应用。本来想把这个程序做成一个向量容器,这样学生成绩的数组就可以随着输入成绩而改变。但是,由于能力有限还是没能得以实现。类似的问题可能还存在与我的程序其他地方,

18、但是我认为,既然我做出了这个程序,实现了全部功能,在过程中得到了提高,我的目的就达到了。即使程序还不完善,但是在以后的学习中,我一定可以做得更好。“纸上得来终觉浅。”在以后的学习中我要更多的去实践,在实践中发现不做,不断提高。最后,在这个临近年关的时候,在这里衷心的感谢邢红梅、云静、关玉欣三位老师,在很多老师已经放假的日子里不辞辛苦的指导我们的课程设计。并恳请在以后的学习中能得到老师们更多的指点和教诲。参考文献1郑莉、董渊、张瑞丰,c+语言程序设计(第三版),清华大学出版社 , 2007年2C+程序设计,谭浩强,清华大学出版社,20043C+程序设计实践指导,谭浩强,清华大学出版社,20054 http:/ http:/ http:/ http:/ 人民邮电出版社, 2008年10C+程序设计课程设计, 刘振安, 机械工业出版社, 2004.8

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1