C++学生成绩管理系统课程设计

上传人:痛*** 文档编号:103416559 上传时间:2022-06-08 格式:DOC 页数:12 大小:299KB
返回 下载 相关 举报
C++学生成绩管理系统课程设计_第1页
第1页 / 共12页
C++学生成绩管理系统课程设计_第2页
第2页 / 共12页
C++学生成绩管理系统课程设计_第3页
第3页 / 共12页
点击查看更多>>
资源描述
目录1、C+课程设计实验目的22、课程设计内容22.1课程设计的题目和简介22.2 设计思路说明32.3 程序实现32.4 程序流程图42.5文件流的实现73、运行结果截图94、学习小结111、C+课程设计实验目的这次C+课程设计实验通过设计一个学生成绩管理系统,使学生分析模块的实现并用掌握系统各功能模块的基本工作原理,从而掌握C的面向对象基本编程原理和和基本的编程方法,在编写模板过程中学会系统调试分部调试。进而培养分析、解决问题的能力,与此同时提高软件文档写作能力。 2、课程设计内容 2.1课程设计的题目和简介 请用C+编写一系统,实现学生信息管理,软件的入口界面应包括如下几个方面:(一) 功能要求: (1) 信息维护: 要求:学生信息数据要以文件的形式保存,能实现学生信息的维护,此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息 (2) 信息查询: 要求:查询时可实现按姓名查询、按学号查询 (3) 成绩统计: 要求:A输入任意的一个课程名(如数学)和一个分数段(60-70),统计出在此分数段的学生情况。 B能统计学生的成绩,求学生的总分和平均分,并能根据学生的平均成绩进行排序 (4) 排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示,排序结果(使用表格的形式显示排序后的输出结果)(使用多种方法排序者,加分)(二) 其它要求: (1) 只能使用C+语言,源程序要有适当的注释,使程序容易阅读(2) 至少采用文本菜单界面(如果能采用图形菜单界面更好) (3) 学生可自动增加新功能模块(视情况可另外加分) (4) 写出课程设计报告,具体要求见相关说明文档 2.2 设计思路说明(1) 定义student类,然后进行全局变量声明和初始化,这些变量包含了Save(保存学生信息); Add(增加学生信息); Delete(删除学生信息); Modify(修改学生信息); Show(打印学生信息); Search(查找学生信息); GradeSelect(按分数查询); SortNum(根据学号排序); SortGrade(成绩分段统计)(2) 文件流实现对文件的打开读取和保存(3) 设置一个验证函数bool Find来验证学号的存在与否(4) 各函数功能的实现和主函数(包含了文本菜单界面)2.3 程序实现(1) 取再以write_file对文件进行保存,使之本身有一个学生成绩数据库,方便实现程序功能的操作,避免了每次测试程序都输入学生信息(2) switch语句的多次使用使程序简便易读,僻如对学生信息进行修改,用switch语句针对要修改的项目而不用将不要修改的重新输入,同时主菜单界面也是通过它实现的(3) 各程序模块间相互调用,以实现功能,例如Modify函数调用了Search函数(4) 在main函数中运用了switch语句对菜单进行选择。运行时菜单显示如图所示:通过ifstream& open file实现对文件的打开,通过read_file对文件进行读取,再通过ofstream fout函数对文件进行保存。 图2-1程序的选择菜单界面2.4 程序流程图 图2-2主函数流程图(1) 流程图说明: 输出欢迎界面,输入功能选项;通过调用各模块功能函数实现以下功能:添加学生信息:调用Add函数删除学生信息:调用Delete函数学生信息列表:调用Show函数学生信息修改:调用Modify函数查找学生信息:调用Search函数根据学号排序:调用SortNum函数根据成绩排序:调用SortGrade函数成绩分段统计:调用GradeSelect函数通过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语句调用bool Find函数以判断学号是否存在,若存在则结束返回,若不存在则输入信息并存入数组然后数组总条数加1,最后结束返回菜单。图2-3 Add函数流程图Delete函数流程图:Delete函数流程图说明:开始之后先输入要删除的学生学号,而后调用Find函数判断是否是存在的学号,如果学号存在则输出该学号的学生信息,然后确认删除该生成绩信息,如果确认,则该生信息删除,最后结束。如果该学号不存在,则提示“该学号不存在!”结束回到主菜单。 图2-4 Delete函数流程图其它模块的实现流程图与以上的类似就不一一列举了,下面进入整个课设最重要的部分文件流的使用。2.5文件流的实现(1) 文件的打开,代码如图所示:图2-5 文件的打开与返回 in.open()用一般的文件打开方式不能打开字符串,打开是乱码,不直接用in.open(file)打开文件,而要在要在file后面加.c_str。(2) 文件的读取,代码如下图所示:图2-6 文件的读取代码 之所以定义string word,并且之后有atoi(word.c_str()是因为word里面存了一个单词,这样可以读取。atoi函数的作用是将字符转换为整形,由于我没有和数组保存数据信息,故用字符串的话用书上的文件流读取方式后打开是乱码,不是可以看懂的整形,故些处使用atoi函数进行转换克服这一难题。使用getline获取数据时遇空格可接受。(3) 写文件,代码如图所示:图2-7 文件的书写保存 用ofstream fout函数打开文件是因为如果打开的文件不存在,它会为你自动创建一个文件,而fout.open()中的“c_str()”是因为文件被申明为了string类型。然后用for循环语句可使用户持续输入数据。最后用fout.close()关闭文件,若不关闭将损坏文件。3、运行结果截图图3-1 初始存入的学生信息图3-2 增加学生信息图3-3 删除学生信息图3-4 查找学生信息图3-5 根据成绩排序图3-6根据学号排序图3-7 根据分数段排序图3-8 退出系统4、学习小结 通过这次C+的课设,我进一步了解了C+面对对象的编程方法,印象最深的是文件流的使用。在文件流的使用中遇到许多问题,比如打开TXT文档是乱码,因为使用的文件打开方式是适合数组而不适合字符串的。同样在这样艰难的过程中我也学会很多,对原本一知半解的文件流有了进一步的认识,现在已经可以进行简单使用了。其实各部分的模块大部分都是面向过程的,所以遇到的问题可以通过查资料或者问同学老师等方式解决,虽然不是课设的主要内容,但是也遇到很多问题,程序在不断调试修改中才逐渐成型,逐渐完善。只有自己认真做了这个课设,在其中可以学到很多知识,有平时自己根本就注意不到的细节问题,可能导致整个程序大乱,比如我只是在一个分模块中漏了一个“”,最后出现七个错误,全是提示成员函数定义不合法。 另外我还学习到,在编程的过程中,千万不能急于写代码,应先规划一下设计思路,这样写代码时就可以一气呵成;最大的收获应该算是发现了一个优秀的软件开发人员的秘密,那就是自学,不能什么都依赖老师,老师毕竟不能把所有的知识全都教给我们,只要我们学会了自学,那么就相当于学会了一半的语言。最后,通过这次做课设,我常常地了解到我们所学的C+知识毕竟很浅显,如果要有更大的进步和发展,要求自己必须在课后主动查资料,经常写代码,这样出的错误越多,日后发现问题就可以很快发现,水平才能提升。在C+这条路上我们要做的还有很多。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!