c++课程设计实践报告.docx

上传人:b****6 文档编号:8781979 上传时间:2023-02-01 格式:DOCX 页数:17 大小:198.43KB
下载 相关 举报
c++课程设计实践报告.docx_第1页
第1页 / 共17页
c++课程设计实践报告.docx_第2页
第2页 / 共17页
c++课程设计实践报告.docx_第3页
第3页 / 共17页
c++课程设计实践报告.docx_第4页
第4页 / 共17页
c++课程设计实践报告.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

c++课程设计实践报告.docx

《c++课程设计实践报告.docx》由会员分享,可在线阅读,更多相关《c++课程设计实践报告.docx(17页珍藏版)》请在冰豆网上搜索。

c++课程设计实践报告.docx

c++课程设计实践报告

中南大学

C++程序设计实践

 

题目学生成绩档案管理系统

成员姓名班级学号:

指导教师

学院

完成时间年月日

 

一、程序设计目的

二、程序使用说明

三、程序结构和流程

四、调试与分析

1.调试结果展示

2.程序的不足分析

五、程序源代码

六、总结与心得

附录:

参考文献

 

一、程序设计目的:

根据课题要求,设计一“学生成绩管理系统”,它的主要功能是对学生的成绩进行输入、修改和管理。

包括录入学生的信息、查询、修改、输出所有信息、统计和退出等功能。

在完成这个实验设计的过程中,更加全面地认识C++程序设计。

在已有的知识基础上,自学结构体、面向对象等内容。

让组员在设计期间,提升对C++的认识与理解,更好地掌握相关知识,将理论知识运用于实践。

具体表现在以下方面:

1.熟练运用计算机语言,理解计算机语言的思想。

能够合理运用计算机语言编写高效的程序;

2.通过课程设计,加深C++进行面向过程的结构化程序设计。

能对系统功能进行分析,并设计合理的模块化结构;

3.通过课程设计,理解C++优越于C语言的面向对象的程序编辑。

自学对文件操作与文件流等部分;

4.通过课程设计,训练C++程序调试能力,培养分析问题、解决问题和改进问题的能力;

5.通过课程设计,开发一个中小型系统,掌握系统研发全过程;

6.通过课程设计,培养团队协作能力,提升团队沟通与交流的技巧。

二、程序使用说明:

该程序使用C++设计的一个简单学生成绩管理系统,它外观大方,功能多样。

它操作人性化,易于操作,能以简便高效的方式对学生成绩进行管理和查询。

其具体的功能分为以下几个部分:

1.输入学生的数据:

只要输入学生的姓名和成绩,学号会自动生成,每输入完

一个学生数据,不用再选择,可以继续;

2.查询学生成绩:

在这个功能里,你可以选择是按照学号还是姓名进行查询,一次只能查找一人;

3.修改成绩:

该功能是在学号的基础上对学生的姓名和成绩进行修改。

学号

不会改动;

4.输出所有学生成绩:

它会将所有录入的学生数据都显示出来;

5.统计挂科和优秀人数:

在所录入的信息中统计,会显示出优秀多少人和挂科多少人;

6.退出系统:

退出学生成绩管理系统。

 

三、程序结构和流程:

为实现系统功能,本程序主要分为七个模块。

它们分别为:

显示中文提示选单、录入新的信息、查询信息、修改信息、列出所有的信息、统计信息、退出该程序。

这七个函数再通过主函数调用分别得以实现。

主函数,首先提供了程序运行时的友好界面,列出了清单,以供用户做出选择,以便决定使用学生成绩管理系统的哪种功能。

然后,通过执行选择语句,分别实现其它各个函数的调用功能。

四、调试与分析:

1、调试结果展示:

学生成绩管理系统主页面:

输入数据:

查询成绩:

修改学生信息:

输出所有学生成绩:

统计挂科和优秀人数:

2、程序的不足分析

由于本程序是分模块设计的,所以每次运行时选择完每一分块的任务并且执行完任务后,并于本次保存,再按任意键又会继续回到原来的用户选择界面,供用户继续选择所需要的任务并执行任务。

对于本程序的调试运行,总体上情况良好,具有可实施性,操作简单,使用户能够接受并方便使用。

但是,任何程序都有其改进的地方,发现问题并解决问题是追求只是的必经之路,也只有懂得发现问题才能更好的学习C++程序设计,才能使自己更有效的提高,所以在百般思考的过程中我发现的主要问题有:

对于本程序来说,录入后的信息不能删除,这样的话只会让文件中的数据越来越多,却不能按照要求去删除。

这会给使用者带来不便。

 

五、源程序代码:

#include

#include

#include

#include

usingnamespacestd;

constchar*file="student.dat";

constintLIM=10;

intct=0;

inlinevoideatline(){while(cin.get()!

='\n')continue;}

structstudent

{

intnum;

charname[LIM];

intgrade;

};

voidmenu()//主菜单

{

cout<<"\t************************************"<

cout<<"\t欢迎使用学生成绩管理系统"<

cout<<"\t************************************"<

cout<<"\t**1--输入数据***********************"<

cout<<"\t**2--查询成绩***********************"<

cout<<"\t**3--修改学生信息*******************"<

cout<<"\t**4--输出所有学生成绩***************"<

cout<<"\t**5--统计挂科和优秀人数*************"<

cout<<"\t**6--退出系统***********************"<

cout<<"\t************************************"<

}

voidmenu2()//二级菜单

{

cout<<"\t************************************"<

cout<<"\t*******1--按学号查询****************"<

cout<<"\t*******2--按姓名查询****************"<

cout<<"\t************************************"<

}

voidfind()//查找学生数据的函数

{

menu2();

inta;

intw=0;

cin>>a;intna;charsna[LIM];

fstreamfind;

find.open(file,ios_base:

:

in|ios_base:

:

out|ios_base:

:

binary);

eatline();

studentstu;

switch(a)

{

case1:

cout<<"请输入学生学号:

"<>na;break;

case2:

cout<<"请输入学生姓名:

"<>sna;break;

default:

{

cout<<"■选择执行的操作错误!

■\n";

cin.clear();

while(cin.get()!

='\n');

}

}

for(inti=1;i<=ct;i++)

{

streamposplace=(i-1)*sizeofstu;

find.seekp(place);

if(find.fail())

{

cerr<<"■查找出错!

程序将退出!

■\n";

system("pause");

exit(EXIT_FAILURE);

}

find.read((char*)&stu,sizeofstu);

switch(a)

{

case1:

if(stu.num==na)

{

w=1;

cout<

cout<

"<

};break;

case2:

if(!

strcmp(stu.name,sna))

{

w=1;

cout<

cout<

"<

};break;

default:

{

cout<<"■选择执行的操作错误!

■\n";

cin.clear();

while(cin.get()!

='\n');

}

}

}

if(w==0)cout<<"■未找到此人!

■"<

find.close();

}

voidmenu5()//二级菜单

{

cout<<"\t************************************"<

cout<<"\t*******1--按学号修改成绩************"<

cout<<"\t*******2--按姓名修改成绩************"<

cout<<"\t************************************"<

}

 

voidaver()//统计及格和优秀人数的函数

{

fstreamfind;

find.open(file,ios_base:

:

in|ios_base:

:

out|ios_base:

:

binary);

eatline();

studentstu;

intA=0,C=0;

for(inti=1;i<=ct;i++)

{

streamposplace=(i-1)*sizeofstu;

find.seekp(place);

if(find.fail())

{

cerr<<"■查找出错!

程序将退出!

■\n";

system("pause");

exit(EXIT_FAILURE);

}

find.read((char*)&stu,sizeofstu);

if(stu.grade<=60)C++;

if(stu.grade>=90)A++;

}

cout<<"■优秀人数为:

"<

"<

find.close();

}

voidoutput()//输出全部学生成绩信息的函数

{

studentstu;

ifstreamfind;

find.open(file,ios_base:

:

in|ios_base:

:

binary);

cout<

while(find.read((char*)&stu,sizeofstu))

{cout<

cout<

"<

}

find.close();

}

intstu_num()//计算数据组数

{

studentstu;

ifstreamstunum;

stunum.open(file,ios_base:

:

in|ios_base:

:

binary);

if(stunum.is_open())

{

stunum.seekg(0);

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

}

stunum.close();

returnct;

}

voidchange()//修改数据函数

{

fstreamchange;

change.open(file,ios_base:

:

in|ios_base:

:

out|ios_base:

:

binary);

if(change.eof())

change.clear();//清除EOF

cout<<"请输入你要修改的学生学号:

"<

intrec;

cin>>rec;

eatline();

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

{

cout<<"■数据不存在!

程序将退出!

■"<

system("pause");

exit(EXIT_FAILURE);

}

studentstu;

streamposplace=(rec-1)*sizeofstu;

change.seekg(place);

if(change.fail())

{

cerr<<"■查找出错!

程序将退出!

■\n";

system("pause");

exit(EXIT_FAILURE);

}

change.read((char*)&stu,sizeofstu);

cout<<"你选择的是:

\n";

cout<

cout<

"<

if(change.eof())

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,sizeofstu)<

if(change.fail())

{

cerr<<"■查找失败!

程序将退出■\n";

system("pause");

exit(EXIT_FAILURE);

}

change.close();

}

voidadd()//输入数据,的函数

{

studentstu;

ofstreamfout(file,ios_base:

:

out|ios_base:

:

app|ios_base:

:

binary);

if(!

fout.is_open())

{

cerr<<"Can'topen"<

\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,sizeofstu);

cout<<"请输入学生姓名:

(按Enter键退出输入!

):

\n";

cin.get(stu.name,LIM);

}

fout.close();

}

 

intmain()

{

ifstreamfin;

fin.open(file,ios_base:

:

in|ios_base:

:

binary);

if(!

fin.is_open())

{

studentst[5]={{1,"小张",100},{2,"小李",90},{3,"小王",67},{4,"小赵",38},{5,"小乐",59}};

ofstreamfout(file,ios_base:

:

out|ios_base:

:

binary);

for(inti=0;i<5;i++)

fout.write((char*)&st[i],sizeofst[i]);

fout.close();

}

fin.close();

stu_num();

while

(1)

{

menu();

cout<<"请输入你要选择的操作:

\n";

charn;

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();

}

return0;

}

六、总结与心得:

通过这次的课程设计,让我充分的感觉到了要自己设计一个程序是多么的难,这个程序的设计过程中,我清楚的意识到自己的水平有多么的薄弱,每增加一个函数就要调试好久,有时候应为少了一个大括号或是分号,导致要找很久很久。

虽然系统可以运行,也具有了一些基本的功能,但我意识到了自己有太多的不足,现阶段还得依靠很多资料才能完成一个程序。

附录:

参考文献

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

谭浩民主编。

《C++程序设计实践指导》北京:

清华大学出版社,2005.7

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

当前位置:首页 > 幼儿教育 > 唐诗宋词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1