C++课程设计.docx
- 文档编号:2555647
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:19
- 大小:64.95KB
C++课程设计.docx
《C++课程设计.docx》由会员分享,可在线阅读,更多相关《C++课程设计.docx(19页珍藏版)》请在冰点文库上搜索。
C++课程设计
面向对象技术实验报告
(比赛报名系统)
一、课程设计目的:
加深对类和对象的理解,熟练的掌握C++中累的定义和操作。
进一步理解纯虚函数和基类和派生。
综合利用上述知识,学习设计和编写面向对象的C++简单程序。
培养我们实际操作能力和实践能力,为以后的工作打基础。
二、功能简介:
本程序是一个关于管理比赛报名系统,其中定义了增加报名、按照报名编号查询报名信息和按照报名编号删除报名信息的函数。
定义比赛类Game,包含属性、报名编号、比赛名称、代表人姓名和资格赛成绩,以及纯虚函数ShowMe。
并且从基类Game中派生个人赛类Single、双人赛类Double和团体赛类Group,具体实现上述纯虚函数ShowMe ,当重载输入">>"操作符,就使其可以通过cin直接读入上述个人赛类、双人赛类和团体赛类的对象值(其中报名编号在增加报名时获得)。
编写main函数,测试上述所要求的各种功能,即可以根据菜单命令增加、删除比赛报名,和按报名编号查询信息。
三、程序流程图:
N
四、代码及代码分析:
本程序比较容易看明白,其中涉及到的一些函数相对来说比较容易。
通过运行,调试,就可完成。
#include"iostream"
#include"iomanip.h"
#include"limits"
#include"string.h"
#include"windows.h"
#definerecord_max2002
#definesingle_max1000
#definedouble_max700
#definegroup_max300
voidfflush()
{
cin.clear();
cin.ignore((std:
:
numeric_limits : streamsize>: : max)(),'\n'); } classGame { protected: shortno; charattrib[7]; chargamename[13]; charrepresent[11]; shortscore; public: virtualvoidoperator>>(shortno); virtualvoidShowMe()=0; friendclassmanager; }; voidGame: : operator>>(shortno)//没有对输入进行检查 { this->no=no; cout<<"请依次输入\n属性比赛名称代表人姓名资格赛成绩"< cin>>attrib>>gamename>>represent>>score; } classSingle: protectedGame { public: virtualvoidoperator>>(shortno); virtualvoidShowMe(); }; voidSingle: : operator>>(shortno) { cout<<"增加个人赛记录"< Game: : operator>>(no); //可增加其它内容 } voidSingle: : ShowMe() { cout< : left)< cout< : left)< } classDouble: protectedGame { public: virtualvoidoperator>>(shortno); virtualvoidShowMe(); }; voidDouble: : operator>>(shortno) { cout<<"增加双人赛记录"< Game: : operator>>(no); //可增加其它内容 } voidDouble: : ShowMe() { cout< : left)< cout< : left)< } classGroup: protectedGame { public: virtualvoidoperator>>(shortno); virtualvoidShowMe(); }; voidGroup: : operator>>(shortno) { cout<<"增加团体赛记录"< Game: : operator>>(no); //可增加其它内容 } voidGroup: : ShowMe() { cout< : left)< cout< : left)< } classmanager { private: Singlesingle[single_max]; Doubledoubl[double_max]; Groupgroup[group_max]; public: staticintcount; shortAdd(); voidSearch(shortno); voidDelete(shortno); }; intmanager: : count=1; ints=0,d=0,g=0; shortmanager: : Add() { cout<<"请按对应键选择"< cout<<"1-个人赛"< cout<<"2-双人赛"< cout<<"3-团体赛"< charflag='N'; cin.get(flag);fflush(); while(flag! ='1'&&flag! ='2'&&flag! ='3') { cout<<"输入有误,请按提示操作! "< flag=cin.get();fflush(); } charyes='N'; switch(flag) { case'1': single[s].no=count; single[s]>>single[s].no; single[s].ShowMe(); cout<<"确认无误,请按Y,其它任意键取消\n"; cin>>yes;fflush(); if(yes=='Y') { s++;count++; cout<<"比赛报名信息已成功录入! "< } else cout<<"本次操作取消"< break; case'2': doubl[d].no=count; doubl[d]>>doubl[d].no; doubl[d].ShowMe(); cout<<"确认无误,请按Y,其它任意键取消\n"; cin>>yes;fflush(); if(yes=='Y') { d++;count++; cout<<"比赛报名信息已成功录入! "< } else cout<<"本次操作取消"< break; default: group[g].no=count; group[g]>>group[g].no; group[g].ShowMe(); cout<<"确认无误,请按Y,其它任意键取消\n"; cin>>yes;fflush(); if(yes=='Y') { g++;count++; cout<<"比赛报名信息已成功录入! "< } else cout<<"本次操作取消"< break; } returncount-1; } voidmanager: : Search(shortno) { shorti,flag=0; for(i=0;i { if(single[i].no==no) { single[i].ShowMe(); flag=1; break; } } for(i=0;i { if(doubl[i].no==no) { doubl[i].ShowMe(); flag=1; break; } } for(i=0;i { if(group[i].no==no) { group[i].ShowMe(); flag=1; break; } } if(! flag) cout<<"没有编号为"< } voidmanager: : Delete(shortno)//删除以后会有编号漏洞,即内存连续但编号不连续 { shorti,flag=0; charyes='N'; for(i=0;i { if(single[i].no==no) { single[i].ShowMe(); cout<<"确认要删除吗? 确定删除按Y,其它任意键取消"< cin>>yes;fflush(); if(yes=='Y') { single[i]=single[--s];//用最后的记录覆盖待删除记录 cout<<"比赛报名信息已成功删除! "< } else cout<<"本次删除操作取消"< flag=1; break; } } for(i=0;i { if(doubl[i].no==no) { doubl[i].ShowMe(); cout<<"确认要删除吗? 确定删除按Y,其它任意键取消"< cin>>yes;fflush(); if(yes=='Y') { doubl[i]=doubl[--d]; cout<<"比赛报名信息已成功删除! "< } else cout<<"本次删除操作取消"< flag=1; break; } } for(i=0;i { if(group[i].no==no) { group[i].ShowMe(); cout<<"确认要删除吗? 确定删除按Y,其它任意键取消"< cin>>yes;fflush(); if(yes=='Y') { group[i]=group[--g]; cout<<"比赛报名信息已成功删除! "< } else cout<<"本次删除操作取消"< flag=1; break; } } if(! flag) cout<<"没有编号为"< } voidmain() { managermanager; intout=-1; cout<<"比赛报名系统"< do { cout< cout<<"1-增加比赛报名"< cout<<"2-按报名编号进行查询"< cout<<"3-删除比赛报名"< cout<<"0-退出系统"< intflag; cin>>flag; fflush(); while(flag! =1&&flag! =2&&flag! =3&&flag! =0) { cout<<"输入有误,请按提示操作! "< cin>>flag; } switch(flag) { intno; case1: cout<<"增加比赛报名"< manager.Add(); system("pause"); break; case2: cout<<"按报名编号进行查询"< cout<<"请输入报名编号: "; cin>>no;fflush(); manager.Search(no); system("pause"); break; case3: cout<<"3-删除比赛报名"< cout<<"请输入报名编号: "; cin>>no;fflush(); manager.Delete(no); system("pause"); break; case0: out=MessageBox(0,"确认要退出","比赛报名系统",1); } }while(out! =1); } 五、代码改进的措施: 为了使显示面板更加美观,可运用system("color05f")函数,它可设置当前窗口的背景色和前景色: 0=黑色8=灰色,1=蓝色9=淡蓝色,2=绿色A=淡绿色,3=浅绿色B=淡浅绿色,4=红色C=淡红色,5=紫色D=淡紫色,6=黄色E=淡黄色,7=白色F=亮白色;每个人根据自己爱好改变颜色,每选定case时,都会改变其颜色. 六、改进后的代码: voidmain() { managermanager; intout=-1; cout<<"比赛报名系统"< system("color06f"); do { system("color0d"); cout< cout<<"1-增加比赛报名"< cout<<"2-按报名编号进行查询"< cout<<"3-删除比赛报名"< cout<<"0-退出系统"< intflag; cin>>flag; fflush(); while(flag! =1&&flag! =2&&flag! =3&&flag! =0) { cout<<"输入有误,请按提示操作! "< cin>>flag; } switch(flag) { intno; case1: system("color0c"); cout<<"增加比赛报名"< manager.Add(); system("pause"); break; case2: system("color0b"); cout<<"按报名编号进行查询"< cout<<"请输入报名编号: "; cin>>no;fflush(); manager.Search(no); system("pause"); break; case3: system("color0f"); cout<<"3-删除比赛报名"< cout<<"请输入报名编号: "; cin>>no;fflush(); manager.Delete(no); system("pause"); break; case0: out=MessageBox(0,"确认要退出","比赛报名系统",1); } }while(out! =1); } 七、心得体会: 通过这次学生选课系统设计,使我对C++语言有了更进一步的认识和了解,更让我掌握到C++语言中相关语句的运用。 用VisualStudio2005环境下编写。 经过这次的实践让我认识到自己好多的不足,就如: 标准函数库不了解,指法不熟悉等。 C++是非常好的系统编程的语言,但不能以此独立,但用C++语言是做不出好的系统,还是要和其它软件结合,以C++为基础编写系统,这样做出来的系统也更好,更美观。 通过分析、设计、编码、调试等各环节的训练,深刻理解C++程序设计技术,掌握分析、解决实际问题的能力。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计