C面向对象程序设计大作业.doc
《C面向对象程序设计大作业.doc》由会员分享,可在线阅读,更多相关《C面向对象程序设计大作业.doc(21页珍藏版)》请在咨信网上搜索。
学 号: 《C++面向对象程序设计》大作业 题 目 学 院 专 业 信息工程 班 级 姓 名 王继文 指导教师 2015 年 11 月 15 日 目录 一 大作业的目的 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、用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.可以按比赛项目编号或名称查询、删除、修改信息。 3.可以按运动员编号或姓名查询、删除、修改信息 4.数据输入信息并能随时查询 六 详细设计(各功能模块的具体实现算法——流程图) 开始 信息录入 信息修改 信息查询 信息输出 信息删除 结束 6.1各函数的功能和实现 1.本实验中,对不同的对象采取不同的存储结构,对比赛项目采取链式结构,而对于参赛运动员采取一个结构就可以了。本程序中主要用到线性表的一些基本操作,将比赛项目信息,运动员信息,赛事信息都构造成线性表。具体功能通过主函数分别调用各函数实现。 2.参考本实验的功能要求,本程序分为七个模块:主函数、信息录入函数、信息修改函数、信息删除函数、信息查询函数,信息输出函数。 3.信息录入函数有包括比赛项目信息录入函数(包括比赛编号、名称等),运动员信息录入函数(运动员的编号、姓名、性别、年龄、工作单位或省份)、比赛赛事信息录入函数(某运动员参加某比赛项目,成绩、名次)。 4.信息修改函数包括比赛项目、运动员信息、赛事信息修改。 5.信息查询函数包括根据比赛项目、运动员编号进行查修 6.信息输出函数包括比赛项目、运动员信息、赛事信息输出等。 7.退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。 如图6.1 结束 开始 输出菜单 根据菜单输入n的值选择程序 输入 退出 输出 查找 插入 删除 图 6.1 七 调试分析(包含各模块的测试用例,及测试结果) 7.1主函数 #include<iostream> #include<fstream> #include<string> using namespace std; void fun1() { cout<<"******************************"<<endl; cout<<endl; cout<<"******学校运动会管理系统******"<<endl; cout<<"----数据录入 请按:1----"<<endl; cout<<"----数据修改 请按:2----"<<endl; cout<<"----数据删除 请按:3----"<<endl; cout<<"----数据查询 请按:4----"<<endl; cout<<"----数据显示 请按:5----"<<endl; cout<<"----退出系统 请按:6----"<<endl; cout<<endl; cout<<"*******************************"<<endl; cout<<endl; cout<<"*****请输入一个数据,并按回车键!*****"<<endl; } class Match { public: Match *next;//为创建链表做准备 int number; //比赛项目编号 char call[10]; //比赛项目名称 char time[10]; //比赛时间 char place[20]; //比赛地点 friend void input1(); }; 7.2输入相关信息 void input1() { ofstream fout("e:\\比赛项目.dat",ios::app); char ch; Match a; do { cout<<"请分别输入比赛项目编号、名称、比赛时间、比赛地点."<<endl; cin>>a.number>>a.call>>a.place>>a.time; a.next=NULL; fout.write((char *)&a,sizeof(Match)); cout<<"是否继续输入,如果继续键入Y|y"<<endl; 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<<"文件打开失败!"<<endl; exit(0); } 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.3信息修改 int change1() //对比赛项目相关信息修改 { cout<<"您正在进行修改比赛项目有关事项操作!"<<endl; creat(); Match *p1; p1=head1; cout<<"请输入要修改比赛项目的编号:"<<endl; int number1; //要修改的比赛项目编号 int sign=0; //设置的标记变量 cin>>number1; while(p1!=NULL) { if(p1->number==number1) {sign=1;break;} p1= p1->next; } if (sign==0) cout<<"没有找到要修改的记录!"<<endl; else { cout<<"请选择要修改比赛项目的那些信息"<<endl; cout<<"------修改比赛项目的编号----1"<<endl; cout<<"------修改比赛项目的名称----2"<<endl; cout<<"------修改比赛时间----3"<<endl; cout<<"------修改比赛地点----4"<<endl; cout<<"请输入对应信息的编号"<<endl; int a; int nu; //新的整形数据 char info[20]; //新的字符数组 cin>>a; switch(a) { case 1:cout<<"请输入新的比赛编号:"<<endl; cin>>nu; p1->number=nu; cout<<"比赛项目编号修改成功!"<<endl; break; case 2:cout<<"请输入新的比赛项目名称:"<<endl; cin>>info; strcpy(p1->call,info); cout<<"比赛项目名称修改成功!"<<endl; break; case 3:cout<<"请输入新的比赛时间:"<<endl; cin>>info; strcpy(p1->time,info); cout<<"比赛项目时间修改成功!"<<endl; break; case 4:cout<<"请输入新的比赛地点:"<<endl; cin>>info; strcpy(p1->place,info); cout<<"比赛项目地点修改成功!"<<endl; 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; } 7.4信息删除 int delete1() //对比赛项目相关信息进行删除 { creat(); Match *p1,*p2; p2=p1=head1; cout<<"请选择要删除比赛项目的那些信息"<<endl; cout<<"------删除比赛项目的编号----1"<<endl; cout<<"------删除比赛项目的名称----2"<<endl; cout<<"请输入对应信息的编号"<<endl; int n; cin>>n; 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<<"没有找到要删除的记录!"<<endl; 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<<"没有找到要删除的记录!"<<endl; else 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; } 7.5信息查询 void print1() { creat(); Match *p1=head1; cout<<"请分别输出比赛项目编号、名称、比赛时间、比赛地点."<<endl; while(p1!=NULL) { cout<<p1->number<<'\t'<<p1->call<<'\t'<<p1->time<<'\t'<<p1->place<<endl; p1=p1->next; } } void find1() { creat(); Match *p1; p1=head1; int sign=0;//设置的标记变量 cout<<"请选择要查询比赛项目的哪些信息"<<endl; cout<<"------按比赛项目的编号查询----1"<<endl; cout<<"------按比赛项目的名称查询----2"<<endl; cout<<"------按比赛时间查询----3"<<endl; cout<<"------按比赛地点查询----4"<<endl; cout<<"请输入对应信息的编号"<<endl; int a; int nu; //查询整形数据条件 char info[20]; //查询字符型数据条件 cin>>a; switch(a) { case 1:cout<<"请输入要查询的比赛编号:"<<endl; cin>>nu; while(p1!=NULL) { if(p1->number==nu) {sign=1;break;} p1= p1->next; } if (sign==0) cout<<"没有找到要查询的记录!"<<endl; else cout<<p1->number<<'\t'<<p1->call<<'\t'<<p1->time<<'\t'<<p1->place<<endl; break; case 2:cout<<"请输入要查询的比赛项目名称:"<<endl; cin>>info; while(p1!=NULL) { if(p1->call==info) {sign=1;break;} p1= p1->next; } if (sign==0) cout<<"没有找到要查询的记录!"<<endl; else cout<<p1->number<<'\t'<<p1->call<<'\t'<<p1->time<<'\t'<<p1->place<<endl; break; case 3:cout<<"请输入要查询的比赛时间:"<<endl; cin>>info; while(p1!=NULL) { if(!strcmp(p1->time,info)) {sign=1;break;} p1= p1->next; } if (sign==0) cout<<"没有找到要查询的记录!"<<endl; else cout<<p1->number<<'\t'<<p1->call<<'\t'<<p1->time<<'\t'<<p1->place<<endl; break; case 4:cout<<"请输入要查询的比赛地点:"<<endl; cin>>info; while(p1!=NULL) { if(!strcmp(p1->place,info)) {sign=1;break;} p1= p1->next; } if (sign==0) cout<<"没有找到要查询的记录!"<<endl; else cout<<p1->number<<'\t'<<p1->call<<'\t'<<p1->time<<'\t'<<p1->place<<endl; break; } } class Athlete { public: Athlete *next; int number; //运动员的编号 char name[10]; //运动员的姓名 char part[20]; //运动员所属工作单位或省份 char sex[20]; //运动员性别 int age; //运动员年龄 friend void input2(); }; 7.6退出系统 八 总结 通过这次大作业使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。本次大作业结束了,通过这次实践学到了许多知识。学到了设计一个简单的系统。要注意哪些方面。也知道自己哪些方面做得还不够。这不仅是程序设计,更是锻炼我们处理问题的能力.编写程序是件细心活,稍不留神就会出错,这就必须要求我对待事情要认真! 但我们总结出了一点点的经验如下: 1、要对系统的功能和要求做出详细的分析,并合理分解任务。 2、把分解出来的子任务,做给一个相对独立的模块。 3、在设计一个模块之前,要简单构想一下总界面的显视情况。 4、针对构想出来的界面进行程序的编写。 九 参考资料 [1] 陈维兴,林小茶《C++面向对象程序设计教程(第3版)》, 清华大学出版社,2012 [2] 钱能 主编 《C++程序设计教程》 北京:清华大学出版社 1999年4月 [3] (美)斯特朗斯特鲁普 著,裘宗燕 译, 《 C++程序设计语言》, 机械工业出版社,2010 [4]网上相关资料 本科生大作业成绩评定表 班级: 姓名: 学号: 序号 评分项目 满分 实得分 1 学习态度认真、遵守纪律 10 2 设计分析合理性 10 3 设计方案正确性、可行性、创造性 20 4 设计结果正确性 40 5 设计报告的规范性 10 6 设计验收 10 总得分/等级 评语: 注:最终成绩以五级分制记。优(90-100分)、良(80-89分)、中(70-79分)、 及格(60-69分)、60分以下为不及格 指导教师签名: 2015 年11月18日- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 作业
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文