C++程序设计实践
题 目 学生成绩档案管理系统 成员姓名 班级 学号: 指导教师
学 院
完成时间 年 月 日
目 录
一、 二、 三、 四、
程序设计目的 程序使用说明 程序结构和流程 调试与分析 1. 2.
五、 六、
附录:参考文献
一、程序设计目的:
总结与心得
调试结果展示
程序的不足分析
程序源代码
根据课题要求,设计一“学生成绩管理系统”,它的主要功能是对学生的成绩进行输入、修改和管理。包括录入学生的信息、查询、修改、输出所有信息、统计和退出等功能。在完成这个实验设计的过程中,更加全面地认识C++程序设计。在已有的知识基础上,自学结构体、面向对象等内容。让组员在设计期间,提升对C++的认识与理解,更好地掌握相关知识,将理论知识运用于实践。具体表现在以下方面:
1. 熟练运用计算机语言,理解计算机语言的思想。能够合理运用计算机语言编
写高效的程序;
2. 通过课程设计,加深C++进行面向过程的结构化程序设计。能对系统功能进
行分析,并设计合理的模块化结构;
3. 通过课程设计,理解C++优越于C语言的面向对象的程序编辑。自学对文件
操作与文件流等部分;
4. 通过课程设计,训练C++程序调试能力,培养分析问题、解决问题和改进问
题的能力;
5. 通过课程设计,开发一个中小型系统,掌握系统研发全过程; 6. 通过课程设计,培养团队协作能力,提升团队沟通与交流的技巧。 二、程序使用说明:
该程序使用C++设计的一个简单学生成绩管理系统,它外观大方,功能多样。它操作人性化,易于操作,能以简便高效的方式对学生成绩进行管理和查询。其具体的功能分为以下几个部分:
1. 输入学生的数据:只要输入学生的姓名和成绩,学号会自动生成,每输入完
一个学生数据,不用再选择,可以继续;
2. 查询学生成绩:在这个功能里,你可以选择是按照学号还是姓名进行查询,
一次只能查找一人;
3. 修改成绩:该功能是在学号的基础上对学生的姓名和成绩进行修改。学号
不会改动;
4. 输出所有学生成绩:它会将所有录入的学生数据都显示出来;
5. 统计挂科和优秀人数:在所录入的信息中统计,会显示出优秀多少人和挂科
多少人;
6. 退出系统:退出学生成绩管理系统。
开始 功能菜单 用户选择功能 判断 执行选择服务
三、程序结构和流程:
为实现系统功能,本程序主要分为七个模块。它们分别为:显示中文提示选单、录入新的信息、查询信息、修改信息、列出所有的信息、统计信息、退出该程序。这七个函数再通过主函数调用分别得以实现。
主函数,首先提供了程序运行时的友好界面,列出了清单,以供用户做出选择,以便决定使用学生成绩管理系统的哪种功能。然后,通过执行选择语句,分别实现其它各个函数的调用功能。
Main主函数 menu菜单 目录 录入 查询 修改 输出 统计 退出
四、调试与分析:
1、调试结果展示:
学生成绩管理系统主页面:
输入数据:
查询成绩:
修改学生信息:
输出所有学生成绩:
统计挂科和优秀人数:
2、程序的不足分析
由于本程序是分模块设计的,所以每次运行时选择完每一分块的任务并且执行完任务后,并于本次保存,再按任意键又会继续回到原来的用户选择界面,供用户继续选择所需要的任务并执行任务。对于本程序的调试运行,总体上情况良好,具有可实施性,操作简单,使用户能够接受并方便使用。但是,任何程序都有其改进的地方,发现问题并解决问题是追求只是的必经之路,也只有懂得发现问题才能更好的学习C++程序设计,才能使自己更有效的提高,所以在百般思考的过程中我发现的主要问题有:对于本程序来说,录入后的信息不能删除,这样的话只会让文件中的数据越来越多,却不能按照要求去删除。这会给使用者带来不便。
五、源程序代码:
#include const char * file = \"student.dat\"; const int LIM =10; int ct=0; inline void eatline(){while(cin.get()!='\\n') continue;} struct student { int num; char name[LIM]; int grade; }; void menu() //主菜单 { cout<<\"\************************************\"< cout<<\"\************************************\"< menu2(); int a; int w=0; cin>>a;int na;char sna[LIM]; fstream find; find.open(file,ios_base::in|ios_base::out|ios_base::binary); eatline(); student stu; switch(a) { case 1:cout<<\"请输入学生学号:\"< case 2:cout<<\"请输入学生姓名:\"< cout<<\"■选择执行的操作错误!■\\n\"; cin.clear(); while(cin.get()!='\\n'); } } for(int i=1;i<=ct;i++) { streampos place =(i-1) * sizeof stu; find.seekp(place); if (find.fail()) { cerr << \"■查找出错!程序将退出!■\\n\"; system(\"pause\"); exit(EXIT_FAILURE); } find.read((char *) &stu, sizeof stu); switch(a) { case 1:if(stu.num==na) { w=1; cout< w=1; cout< while(cin.get()!='\\n'); } } } if(w==0)cout<<\"■未找到此人!!■\"< void menu5() //二级菜单 { cout<<\"\************************************\"< fstream find; find.open(file,ios_base::in|ios_base::out|ios_base::binary); eatline(); student stu; int A=0,C=0; for(int i=1;i<=ct;i++) { streampos place =(i-1) * sizeof stu; find.seekp(place); if (find.fail()) { cerr << \"■查找出错!程序将退出!■\\n\"; system(\"pause\"); exit(EXIT_FAILURE); } find.read((char *) &stu, sizeof stu); if(stu.grade<=60)C++; if(stu.grade>=90)A++; }
Copyright © 2019- jqkq.cn 版权所有 赣ICP备2024042794号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务