C++面向对象程序设计大作业.docx
- 文档编号:6186783
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:19
- 大小:34.29KB
C++面向对象程序设计大作业.docx
《C++面向对象程序设计大作业.docx》由会员分享,可在线阅读,更多相关《C++面向对象程序设计大作业.docx(19页珍藏版)》请在冰豆网上搜索。
C++面向对象程序设计大作业
学号:
《C++面向对象程序设计》
大作业
题目
学院
专业信息工程
班级
姓名王继文
指导教师
2015 年11 月15 日
1
一 大作业的目的...........................................................................................................................1
二 大作业的内容...........................................................................................................................1
三 大作业的要求与数据...............................................................................................................2
四 大作业应完成的工作...............................................................................................................2
五 总体设计(包含几大功能模块)...........................................................................................2
六 详细设计(各功能模块的具体实现算法——流程图).......................................................3
七 调试分析(包含各模块的测试用例,及测试结果)...........................................................5
八 总结.........................................................................................................................................18
九 参考资料...................................................................................................................................19
一大作业的目的
《面向对象程序设计》是一门实践性很强的课程,通过大作业不仅可以
全方位检验学生知识掌握程度和综合能力,而且还可以进一步加深、巩固
所学课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题
和解决问题的能力。
更好地掌握运用 C++语言独立地编写、调试应用程序和
进行其它相关设计的技能。
二大作业的内容
(1) 初始化输入:
N-参赛院系总数,M-男子竞赛项目数,W-女子竞赛项目数;
(2) 各项目名次取法有如下几种:
取前 5 名:
第 1 名得分 7,第 2 名得分 5,第 3 名得分 3,第 4 名得分 2,第 5
名得分 1;
(3) 由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。
(4)所有信息记录完毕后,用户可以查询各个院系或个人的比赛成绩,生成团
体总分报表,查看参赛院系信息、获奖运动员、比赛项目信息等。
1
三大作业的要求与数据
1、用C++语言实现系统;
2、由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。
所有信
息记录完毕后,用户可以查询各个院系或个人的比赛成绩,生成团体总分报表,
查看参赛院系信息、获奖运动员、比赛项目信息等。
3、各项目名次取法有如下几种:
取前 5 名:
第 1 名得分 7,第 2 名得分 5,第 3 名得分 3,第 4 名得分 2,
第 5 名得分 1。
四大作业应完成的工作
(1)编写算法;
(2)算法测试,并有具体的测试结果和结果分析;
(3)撰写大作业报告。
内容包括:
1) 封面扉页
2) 设计任务书
3) 目录
4) 总体设计方案(包括流程图)
5) 使用说明及运行实例(包括界面)
6) 成员设计内容简介
7) 项目源程序代码(注意注释的使用)
8) 指导教师评语
五总体设计(包含几大功能模块)
本文研究开发的运动会管理系统用于支持用于查询各个学校在运动会中的成绩。
有几
种目标:
1.支持输入各个项目的基本信息;
2
2.可以按比赛项目编号或名称查询、删除、修改信息。
3.可以按运动员编号或姓名查询、删除、修改信息
4.数据输入信息并能随时查询
六详细设计(各功能模块的具体实现算法——流程
图)
开始
信
息
录
入
信
息
修
改
信
息
查
询
信
息
删
除
信
息
输
出
结束
6.1 各函数的功能和实现
1.本实验中,对不同的对象采取不同的存储结构,对比赛项目采取链式结
构,而对于参赛运动员采取一个结构就可以了。
本程序中主要用到线性表的一
些基本操作,将比赛项目信息,运动员信息,赛事信息都构造成线性表。
具体
功能通过主函数分别调用各函数实现。
2.参考本实验的功能要求,本程序分为七个模块:
主函数、信息录入函数、
信息修改函数、信息删除函数、信息查询函数,信息输出函数。
3.信息录入函数有包括比赛项目信息录入函数(包括比赛编号、名称等),
3
运动员信息录入函数(运动员的编号、姓名、性别、年龄、工作单位或省份)、
比赛赛事信息录入函数(某运动员参加某比赛项目,成绩、名次)。
4.信息修改函数包括比赛项目、运动员信息、赛事信息修改。
5.信息查询函数包括根据比赛项目、运动员编号进行查修
6.信息输出函数包括比赛项目、运动员信息、赛事信息输出等。
7.退出系统:
可用一个函数 exit()来实现,首先将信息保存到文件中,
释放动态创建的内存空间,再退出此程序。
如图 6.1
开始
输出菜单
根据菜单输入 n 的值选
择程序
输
入
输
出
查
找
插
入
删
除
退
出
结束
图 6.1
4
七调试分析(包含各模块的测试用例,及测试结果)
7.1 主函数
#include
#include
#include
using namespace std;
void fun1()
{cout<<"******************************"< cout< cout<<"******学校运动会管理系统******"< cout<<"----数据录入请按: 1----"< cout<<"----数据修改请按: 2----"< cout<<"----数据删除请按: 3----"< cout<<"----数据查询请按: 4----"< cout<<"----数据显示请按: 5----"< cout<<"----退出系统请按: 6----"< cout< cout<<"*******************************"< cout< cout<<"*****请输入一个数据,并按回车键! *****"< } class Match { public: Match *next;//为创建链表做准备 int number;//比赛项目编号 char call[10];//比赛项目名称 char time[10];//比赛时间 char place[20];//比赛地点 friend void input1(); }; 5 7.2 输入相关信息 void input1() {ofstream fout("e: \\比赛项目.dat",ios: : app); char ch; Match a; do { cout<<"请分别输入比赛项目编号、名称、比赛时间、比赛地点."< cin>>a.number>>a.call>>a.place>>a.time; a.next=NULL; fout.write((char *)&a,sizeof(Match)); cout<<"是否继续输入,如果继续键入 Y|y"< cin>>ch; }while(ch=='y'||ch=='Y'); fout.close(); } Match *head1; void creat() { head1=NULL; Match *p,*q=head1; ifstream fin("e: \\比赛项目.dat",ios: : in); if(! fin) { cout<<"文件打开失败! "< } 6 p=new Match; fin.read((char*)p,sizeof(Match)); while(! fin.eof()) { if(head1==NULL) head1=p; else q->next=p; q=p; p=new Match; fin.read((char*)p,sizeof(Match)); } fin.close(); } 7 7.3 信息修改 int change1()//对比赛项目相关信息修改 { cout<<"您正在进行修改比赛项目有关事项操作! "< creat(); Match *p1; p1=head1; cout<<"请输入要修改比赛项目的编号: "< int number1;//要修改的比赛项目编号 int sign=0;//设置的标记变量 cin>>number1; while(p1! =NULL) { if(p1->number==number1){sign=1;break;} p1= p1->next; } if (sign==0) cout<<"没有找到要修改的记录! "< else { cout<<"请选择要修改比赛项目的那些信息"< cout<<"------修改比赛项目的编号----1"< cout<<"------修改比赛项目的名称----2"< cout<<"------修改比赛时间----3"< cout<<"------修改比赛地点----4"< 8 cout<<"请输入对应信息的编号"< int a; int nu;//新的整形数据 char info[20];//新的字符数组 cin>>a; switch(a) { case 1: cout<<"请输入新的比赛编号: "< cin>>nu; p1->number=nu; cout<<"比赛项目编号修改成功! "< break; case 2: cout<<"请输入新的比赛项目名称: "< cin>>info; strcpy(p1->call,info); cout<<"比赛项目名称修改成功! "< break; case 3: cout<<"请输入新的比赛时间: "< cin>>info; strcpy(p1->time,info); cout<<"比赛项目时间修改成功! "< break; case 4: cout<<"请输入新的比赛地点: "< cin>>info; strcpy(p1->place,info); cout<<"比赛项目地点修改成功! "< break; } ofstream fout("e: \\比赛项目.dat",ios: : out); p1=head1; while(p1! =NULL) { fout.write((char*)p1,sizeof(Match)); p1=p1->next; } fout.close(); } return 0; } 9 7.4 信息删除 int delete1()//对比赛项目相关信 息进行删除 {creat(); Match *p1,*p2; p2=p1=head1; cout<<"请选择要删除比赛项目的那些信息"< cout<<"------删除比赛项目的编号----1"< cout<<"------删除比赛项目的名称----2"< cout<<"请输入对应信息的编号"< int n; cin>>n; 10 int num,flag=0; char cal[10]; switch(n) {case 1: cin>>num; while(p1! =NULL) {if(p1->number==num){flag=1;break;} p2=p1; p1= p1->next; } if (flag==0) cout<<"没有找到要删除的记录! "< else p2->next=p1->next; case 2: cin>>cal; while(p1! =NULL) {if(! strcmp(p1->call,cal)){flag=1;break;} p2=p1; p1= p1->next; } if (flag==0) cout<<"没有找到要删除的记录! "< else 11 p2->next=p1->next; } ofstream fout("e: \\比赛项目.dat",ios: : out); p1=head1; while(p1! =NULL) { fout.write((char*)p1,sizeof(Match)); p1=p1->next; } fout.close(); return 0; } 12 7.5 信息查询 void print1() { creat(); Match *p1=head1; cout<<"请分别输出比赛项目编号、名称、比赛时间、比 赛地点."< while(p1! =NULL) {cout< >time<<'\t'< p1=p1->next; } } void find1() {creat(); Match *p1; p1=head1; int sign=0;//设置的标记变量 cout<<"请选择要查询比赛项目的哪些信息"< cout<<"------按比赛项目的编号查询----1"< 13 cout<<"------按比赛项目的名称查询----2"< cout<<"------按比赛时间查询----3"< cout<<"------按比赛地点查询----4"< cout<<"请输入对应信息的编号"< int a; int nu;//查询整形数据条件 char info[20];//查询字符型数据条件 cin>>a; switch(a) { case 1: cout<<"请输入要查询的比赛编号: "< cin>>nu; while(p1! =NULL) {if(p1->number==nu){sign=1;break;} p1= p1->next; } if (sign==0) cout<<"没有找到要查询的记录! "< else cout< >time<<'\t'< break; 14 case2: cout<<"请输入要查询的比赛项目名称: "< cin>>info; while(p1! =NULL) {if(p1->call==info){sign=1;break;} p1= p1->next; } if (sign==0) cout<<"没有找到要查询的记录! "< else cout< >time<<'\t'< case 3: cout<<"请输入要查询的比赛时间: "< cin>>info; while(p1! =NULL) {if(! strcmp(p1->time,info)){sign=1;break;} p1= p1->next; } if (sign==0) cout<<"没有找到要查询的记录! "< else cout< 15 >time<<'\t'< case 4: cout<<"请输入要查询的比赛地点: "< cin>>info; while(p1! =NULL) {if(! strcmp(p1->place,info)){sign=1;break;} p1= p1->next; } if (sign==0) cout<<"没有找到要查询的记录! "< else cout< >time<<'\t'< } } class Athlete { public: Athlete *next; int number;//运动员的编号 char name[10];//运动员的姓名 char part[20];//运动员所属工作单位或省份 char sex[20];//运动员性别 16 int age;//运动员年龄 friend void input2(); }; 7.6 退出系统 17 八总结 通过这次大作业使我们懂得了理论与实际相结合是很重要的,只有理论知识 是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论, 才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。 本次 大作业结束了,通过这次实践学到了许多知识。 学到了设计一个简单的系统。 要注意哪些方面。 也知道自己哪些方面做得还不够。 这不仅是程序设计,更是锻 炼我们处理问题的能力.编写程序是件细心活,稍不留神就会出错,这就必须要求 我对待事情要认真! 但我们总结出了一点点的经验如下: 1、要对系统的功能和要求做出详细的分析,并合理分解任务。 2、把分解出来的子任务,做给一个相对独立的模块。 3、在设计一个模块之前,要简单构想一下总界面的显视情况。 18 序号 评分项目 满分 实得分 1 学习态度认真、遵守纪律 10 2 设计分析合理性 10 3 设计方案正确性、可行性、创造 20 4、针对构想出来的界面进行程序的编写。 九 参考资料 [1] 陈维兴,林小茶《C++面向对象程序设计教程(第 3 版)》, 清华大学出版社, 2012 [2] 钱能 主编 《C++程序设计教程》 北京: 清华大学出版社 1999 年 4 月 [3] (美)斯特朗斯特鲁普 著,裘宗燕 译, 《 C++程序设计语言》, 机械工业出版社, 2010 [4]网上相关资料 本科生大作业成绩评定表 班级: 姓名: 学号: 19 性 4 设计结果正确性 40 5 设计报告的规范性 10 6 设计验收 10 总得分/等级 评语: 注: 最终成绩以五级分制记。 优(90-100 分)、良(80-89 分)、中(70-79 分)、 及格(60-69 分)、60 分以下为不及格 指导教师签名: 2015 年 11 月 18 日 20
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 面向 对象 程序设计 作业
![提示](https://static.bdocx.com/images/bang_tan.gif)