C学生成绩管理系统课程设计1_第1页
C学生成绩管理系统课程设计1_第2页
C学生成绩管理系统课程设计1_第3页
C学生成绩管理系统课程设计1_第4页
C学生成绩管理系统课程设计1_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、目录1、C+课程设计实验目的22、课程设计内容22.1课程设计的题目及简介22.2 设计思路说明32.3 程序实现32.4 程序流程图42.5文件流的实现73、运行结果截图94、学习小结111、C+课程设计实验目的这次C+课程设计实验通过设计一个学生成绩管理系统,使学生分析模块的实现并用掌握系统各功能模块的基本工作原理,从而掌握C的面向对象基本编程原理和及基本的编程方法,在编写模板过程中学会系统调试分部调试。进而培养分析、解决问题的能力,与此同时提高软件文档写作能力。 2、课程设计内容 2.1课程设计的题目及简介 请用C+编写一系统,实现学生信息管理,软件的入口界面应包括如下几个方面:(一)

2、功能要求: (1) 信息维护: 要求:学生信息数据要以文件的形式保存,能实现学生信息的维护,此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息 (2) 信息查询: 要求:查询时可实现按姓名查询、按学号查询 (3) 成绩统计: 要求:A输入任意的一个课程名(如数学)和一个分数段(60-70),统计出在此分数段的学生情况。 B能统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序 (4) 排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示,排序结果(使用表格的形式显示排序后的输出结果)(使用多种方法排序者,加分)(二) 其它要求: (1) 只能使用C+语言

3、,源程序要有适当的注释,使程序容易阅读(2) 至少采用文本菜单界面(如果能采用图形菜单界面更好) (3) 学生可自动增加新功能模块(视情况可另外加分) (4) 写出课程设计报告,具体要求见相关说明文档 2.2 设计思路说明(1) 定义student类,然后进行全局变量声明及初始化,这些变量包含了Save(保存学生信息); Add(增加学生信息); Delete(删除学生信息); Modify(修改学生信息); Show(打印学生信息); Search(查找学生信息); GradeSelect(按分数查询); SortNum(根据学号排序); SortGrade(成绩分段统计)(2) 文件流实现

4、对文件的打开读取和保存(3) 设置一个验证函数bool Find来验证学号的存在与否(4) 各函数功能的实现及主函数(包含了文本菜单界面)2.3 程序实现(1) 取再以write_file对文件进行保存,使之本身有一个学生成绩数据库,方便实现程序功能的操作,避免了每次测试程序都输入学生信息(2) switch语句的多次使用使程序简便易读,僻如对学生信息进行修改,用switch语句针对要修改的项目而不用将不要修改的重新输入,同时主菜单界面也是通过它实现的(3) 各程序模块间相互调用,以实现功能,例如Modify函数调用了Search函数(4) 在main函数中运用了switch语句对菜单进行选择

5、。运行时菜单显示如图所示:通过ifstream& open file实现对文件的打开,通过read_file对文件进行读取,再通过ofstream fout函数对文件进行保存。 图2-1程序的选择菜单界面2.4 程序流程图 图2-2主函数流程图(1) 流程图说明: 输出欢迎界面,输入功能选项;通过调用各模块功能函数实现以下功能:添加学生信息:调用Add函数删除学生信息:调用Delete函数学生信息列表:调用Show函数学生信息修改:调用Modify函数查找学生信息:调用Search函数根据学号排序:调用SortNum函数根据成绩排序:调用SortGrade函数成绩分段统计:调用Grad

6、eSelect函数通过switch语句实现多条件分支功能选择,通过循环实现所选功能结束后重选操作。(2) 定义study类的成员数据:Num/学生学号,定义为string型Name/学生姓名,定义为string型Math/数学成绩,定义为int型English /英语成绩,定义为int型Computer /计算机成绩,定义为int型Grade /平均成绩,定义为int型定义一个bool Find函数对学号进行判断看该学号是否存在,bool函数的判断中只有true和false,所以判断过程简便。Setw函数控制字符域宽。(3) Add函数流程图 Delete函数流程图说明:开始之后就用if语句调

7、用bool Find函数以判断学号是否存在,若存在则结束返回,若不存在则输入信息并存入数组然后数组总条数加1,最后结束返回菜单。图2-3 Add函数流程图Delete函数流程图:Delete函数流程图说明:开始之后先输入要删除的学生学号,而后调用Find函数判断是否是存在的学号,如果学号存在则输出该学号的学生信息,然后确认删除该生成绩信息,如果确认,则该生信息删除,最后结束。如果该学号不存在,则提示“该学号不存在!”结束回到主菜单。 图2-4 Delete函数流程图其它模块的实现流程图与以上的类似就不一一列举了,下面进入整个课设最重要的部分文件流的使用。2.5文件流的实现(1) 文件的打开,代

8、码如图所示:图2-5 文件的打开与返回 in.open(file.c_str()用一般的文件打开方式不能打开字符串,打开是乱码,不直接用in.open("file")打开文件,而要在要在file 后面加.c_str。(2) 文件的读取,代码如下图所示:图2-6 文件的读取代码 之所以定义string word,并且之后有atoi(word.c_str()是因为word里面存了一个单词,这样可以读取。atoi函数的作用是将字符转换为整形,由于我没有和数组保存数据信息,故用字符串的话用书上的文件流读取方式后打开是乱码,不是可以看懂的整形,故些处使用atoi函数进行转换

9、克服这一难题。使用getline获取数据时遇空格可接受。(3) 写文件,代码如图所示:图2-7 文件的书写保存 用ofstream fout函数打开文件是因为如果打开的文件不存在,它会为你自动创建一个文件,而fout.open(file.c_str()中的“c_str()”是因为文件被申明为了string类型。然后用for循环语句可使用户持续输入数据。最后用fout.close()关闭文件,若不关闭将损坏文件。3、运行结果截图图3-1 初始存入的学生信息图3-2 增加学生信息图3-3 删除学生信息图3-4 查找学生信息图3-5 根据成绩排序图3-6根据学号排序图3-7 根据分数段排序图3-8

10、退出系统4、学习小结 通过这次C+的课设,我进一步了解了C+面对对象的编程方法,印象最深的是文件流的使用。在文件流的使用中遇到许多问题,比如打开TXT文档是乱码,因为使用的文件打开方式是适合数组而不适合字符串的。同样在这样艰难的过程中我也学会很多,对原本一知半解的文件流有了进一步的认识,现在已经可以进行简单使用了。其实各部分的模块大部分都是面向过程的,所以遇到的问题可以通过查资料或者问同学老师等方式解决,虽然不是课设的主要内容,但是也遇到很多问题,程序在不断调试修改中才逐渐成型,逐渐完善。只有自己认真做了这个课设,在其中可以学到很多知识,有平时自己根本就注意不到的细节问题,可能导致整个程序大乱,比如我只是在一个分模块中漏了一个“”,最后出现七个错误,全是提示成员函数定义不合法。 另外我还学习到,在编程的过程中,千万不能急于写代码,应先规划一下设计思路,这样写代码时就可以一气呵成;最大的收获应该算是发现了一个优秀的软件开发人员的秘密,那就是自学,不能什么

温馨提示

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

评论

0/150

提交评论