您好,欢迎来到吉趣旅游网。
搜索
您的当前位置:首页c++课程设计实践报告

c++课程设计实践报告

来源:吉趣旅游网
 中 南 大 学

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 #include #include #include using namespace std;

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<<\"\************************************\"<void menu2() //二级菜单 {

cout<<\"\************************************\"<void find() //查找学生数据的函数 {

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<<\"请输入学生学号:\"<>na;break;

case 2:cout<<\"请输入学生姓名:\"<>sna;break; default:{

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<cout<case 2:if(!strcmp(stu.name,sna)) {

w=1;

cout<cout<cout<<\"■选择执行的操作错误!■\\n\"; cin.clear();

while(cin.get()!='\\n'); } }

}

if(w==0)cout<<\"■未找到此人!!■\"<find.close(); }

void menu5() //二级菜单 {

cout<<\"\************************************\"<void aver() //统计及格和优秀人数的函数 {

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++; }

cout<<\"■优秀人数为:\"<void output() //输出全部学生成绩信息的函数 {

student stu; ifstream find;

find.open(file,ios_base::in|ios_base::binary);

cout<\"<while(find.read((char *) &stu,sizeof stu)) { cout<cout<find.close(); }

int stu_num() //计算数据组数 {

student stu;

ifstream stunum;

stunum.open(file,ios_base::in|ios_base::binary); if(stunum.is_open()) {

stunum.seekg(0);

while(stunum.read((char *)&stu,sizeof stu))ct++; }

stunum.close(); return ct; }

void change() //修改数据函数 {

fstream change;

change.open(file,ios_base::in|ios_base::out|ios_base::binary); if(change.eof())

change.clear(); //清除EOF cout<<\"请输入你要修改的学生学号:\"<>rec; eatline();

if(rec<=0||rec>ct) {

cout<<\"■数据不存在!程序将退出!■\"<student stu;

streampos place =(rec-1) * sizeof stu; change.seekg(place); if (change.fail()) {

cerr << \"■查找出错!程序将退出!■\\n\";

system(\"pause\"); exit(EXIT_FAILURE); }

change.read((char *) &stu, sizeof stu); cout << \"你选择的是:\\n\";

cout<cout<change.clear(); // 清除EOF标记

cout << \"请输入你要修改数据的姓名: \"; cin.get(stu.name, LIM); eatline();

cout << \"请输入你要修改数据的成绩: \"; while(cin >> stu.grade) {

if(stu.grade<0||stu.grade>100) {

cout<<\"■输入的成绩错误!请重新输入:■\\n\"; cin.clear();

while(cin.get()!='\\n'); continue; }

break; }

change.seekp(place); // 回到查找到的地点

change.write((char *) &stu, sizeof stu) << flush; if (change.fail()) {

cerr << \"■查找失败!程序将退出■\\n\"; system(\"pause\"); exit(EXIT_FAILURE); }

change.close(); }

void add() // 输入数据,的函数 {

student stu;

ofstream fout(file, ios_base::out | ios_base::app ios_base::binary);

if (!fout.is_open()) {

| cerr << \"Can't open \" << file << \" file for output:\\n\"; exit(EXIT_FAILURE); }

cout << \"请输入学生姓名: (按Enter键退出输入!):\\n\"; cin.get(stu.name, LIM); while (stu.name[0] != '\\0') {

eatline();

cout << \"输入学生成绩: \"; cin >> stu.grade;

if(stu.grade<0||stu.grade>100) {

cout<<\"■输入的成绩错误!■\\n\"; cin.clear();

while(cin.get()!='\\n'); continue; }

stu.num=++ct; eatline();

fout.write((char *) &stu, sizeof stu);

cout << \"请输入学生姓名: (按Enter键退出输入!):\\n\"; cin.get(stu.name,LIM); }

fout.close(); }

int main() {

ifstream fin;

fin.open(file,ios_base::in|ios_base::binary); if(!fin.is_open()) {

student st[5]={{1,\"小张\小李\小王\小赵\小乐\

ofstream fout(file,ios_base::out|ios_base::binary); for(int i=0;i<5;i++)

fout.write((char *)&st[i],sizeof st[i]); fout.close(); }

fin.close(); stu_num();

while(1) {

menu();

cout<<\"请输入你要选择的操作: \\n \"; char n; cin>>n;

switch(n) {

case '1':eatline();add();break; case '2':find();break; case '3':change();break; case '4':output();break; case '5':aver();break;

case '6':exit(EXIT_FAILURE); default:{

cout<<\"■选择执行的操作错误!■\\n\"; cin.clear();

while(cin.get()!='\\n'); continue;

} //如果选择错误,cin.clear等语句清除已经输入的内容,程序选择 }

system(\"pause\"); system(\"cls\"); cin.clear(); }

return 0; }

六、总结与心得: 通过这次的课程设计,让我充分的感觉到了要自己设计一个程序是多么的难,这个程序的设计过程中,我清楚的意识到自己的水平有多么的薄弱,每增加一个函数就要调试好久,有时候应为少了一个大括号或是分号,导致要找很久很久。虽然系统可以运行,也具有了一些基本的功能,但我意识到了自己有太多的不足,现阶段还得依靠很多资料才能完成一个程序。

附录:参考文献

杨长兴主编《C++程序设计》中国水利水电出版社,2012.01

谭浩民主编。《 C++程序设计实践指导》北京:清华大学出版社,2005.7

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- jqkq.cn 版权所有 赣ICP备2024042794号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务