足球明星管理系统c++ 面向对象技术.docx
《足球明星管理系统c++ 面向对象技术.docx》由会员分享,可在线阅读,更多相关《足球明星管理系统c++ 面向对象技术.docx(29页珍藏版)》请在冰豆网上搜索。
足球明星管理系统c++面向对象技术
C++程序设计课程设计说明
指导教师:
设计者:
专业班级:
设计时间:
《C++程序设计》课程设计任务书
专业班级:
设计题目:
足球明星管理系统
一、已知技术参数或设计前提
1、每个球员信息包含姓名、身价、所在俱乐部、球衣号号码和在球场上的位置。
2、每个球员的信息可以随时修改。
二、设计内容及要求
1、实现球员信息的数据录入。
2、能够对球员的信息进行保护,对球员的信息进行输入和修改的时候必须输入密码才能进行。
3、能够根据球员的姓名,实现该成员信息的修改。
4、实现按球员姓名、球衣号和身价查询现有球员的个人信息。
5、实现按球员姓名删除指定的球员信息。
6、能够以列表方式输出所有球员信息。
7、用类实现以上功能。
8、通过文件存储球员信息。
三、课程设计工作计划
1、了解课程设计大纲的要求,确定题目,成立设计小组。
(9月11-20日)
2、上网查阅资料,确定程序所包含的内容,进行问题分析,制定方案。
(9月20-28日)
3、确定成员分工,根据方案编写程序并进行调试(10月15-26日)
4、撰写设计说明书,完成设计(10月26-10月29日)
5、对说明书及程序中存在的不足进行修改。
(10月29日-11月2日)
6、提交设计内容,答辩(11月2日)
四、相关教材及参考书目
[1]D.S.Malik著.C++基础教程——从问题分析到程序设计(第二版).清华大学出版社,2006
[2]刘娜娜等著.C++程序设计.北京航空航天大学出版社,2009
指导教师签字:
系主任签字:
年月日
足球明星管理系统
一、需求分析
以前,各个球员的资料基本上都是靠手工做表进来管理球员资料。
随着足球的发展,越来越多的国家重视起足球这项体育运动,越来越多的俱乐部产生,也就给球员管理带来了很多麻烦,有关球员资料管理工作所涉及的数据量越来越大。
有的俱乐部或者国家队不得不靠增加人力、物力来进行球员资料管理。
但手工管理具有效率底、出错率高。
所以我想借本次毕业设计之际,开发一个适用于俱乐部或者国家队的球员资料管理系统。
建立球员资料管理系统,采用计算机对球员资料进行管理,进一步提高管理水平和现代化的模式。
帮助广大教练员和相关工作人员提高工作率,实现球员资料信息管理工作流程的系统化、规范化和自动化。
二、系统的软硬件环境
1、硬件环境内存:
1GB硬盘:
80GB。
2、软件环境:
(1)WINDOWSxp操作系统
(2)visaulC++6.0版本。
三、系统模块功能
该程序共由七个模块构成,分别是:
输入模块,输出模块,查找模块,删除模块,显示模块,系统维护模块,系统功能模块框架图如图1所示
1、输入模块:
该模块用于接收管理输入的明星信息。
2、输出模块:
该模块用于输出管理员输入的明星息。
3、查找模块:
按照姓名和身价查询管理员输入的球员信息。
4、删除模块:
按照管理员输入的姓名进行查找相对应的明星信息,如果找到便显示该生信息并询问是否删除该信息,如果选择“是”就彻底删除该生信息;否则显示“未删除”,如果查找不到显示“未找到”。
5、显示模块:
根据姓名显示单个明星的所有信息。
6、系统维护模块:
修改密码。
四、程序设计分析
1、类结构
(1)球员类ball
1)据成员:
姓名name、球衣号码number、球场上的位置duty、俱乐部address、身价shenjia、密码key。
2)函数:
构造函数ball()(初始化数据成员为0)
首页charinter_face()(设定面向用户的界面,返回一个char值以调用所要的功能函数)
添加球员信息voidaddfootballstar()(添加一个球员的信息,并调用saveall()把信息存到文件)
删除voiddelfootballstar()(创建两个流利用文件间的读取与读入实现删除)
修改voidchange()(先把要改的信息删除再调用saveall()把新信息保存)
显示voidshow_all()(显示全部读者信息)
查询voidselect()(按姓名查询文件里球员的信息)
按身价查询voidsele()(查询大于用户输入的身价的球员信息)
保存voidsaveall()(把修改、新添加的信息写入文件并保存)
系统维护voidyourkey()(利用clear清除文件原来的密码再重设新密码)
验证voidthekey()(用if(youkey!
=key)判断是否输入正确密码)
2、模块设计分析
(1)主函数
1)先用system()清屏,并定义对象abj。
2)使用system("color04f")设定了控制台的颜色。
3)switch(choose=abj.inter_face())调用inter_face()输出主界面运用charinter_face()的返回值以调用各功能函数(例如,当choose=ADD时调用添加球员函数voidaddfootballstar())。
(2)删除模块
1)定义一个文件输入流对象ifp2,并以输入方式打开文件;定义一个文件输出流对象ofp,并以输出方式打开文件。
2)定义一个bool类型把其初始为true;用while(ifp2>>name>>number)和getline(ifp2,str)循环从文本中一行一行读取;用if(sign==name)判断你输入要删除的球员的姓名是否等于从文件中读取的姓名name;不相等是把从文件star2所读取一行的信息输入到文件star.txr里;相等的话把要删除球员的信息显示出来,运用if(d==1)当你确定要删除时输入“1”,把标志flag的值改为FALSE以在下面判断是否删除成功,并用break退出循环同时停止把要删除的球员的信息输入到tar.txt。
3)用if(flag)判断,当flag的值跟初始化的值一样是输出“对不起!
!
!
本次删除失败!
!
!
!
”,当flag的值改为false时用while(getline(ifp2,str))循环继续读取要删除的球员之后的球员信息,并用ofp<之后关闭两个文件。
4)定义一个文件输入流对象in,并以输入方式打开文件star;定义一个文件输出流对象out,并以输出方式打开文件star2。
5)把star内的球员信息一行一行的读取到字符串str,用out<Star为删除后的文件,srar2为系统保存信息的文件,利用两个文件数据的输出、输入实现删除。
(3)添加模块
1)利用cin>>输入球员的信息。
2)调用函数saveall()把添加新信息保存到文件里。
3)saveall()函数:
定义一个输出的文件流ofp,并以追加的方式打开文件star2。
4)用ofp<<把新添加的信息添加到文件末尾。
5)用setw()设置输出数据项的域宽。
6)用setiosflags(ios:
:
left)设置输出的数据按输出域左对齐。
(4)修改
1)先把要修改的球员的信息删除,程序的算法跟删除模块一样。
2)删除要修改的球员的信息后再添加球员信息实现修改,添加的的程序算法跟添加模块一样。
当找不到修改的球员,即满足if(flag)用cout<<询问是否添加查找失败的球员,当确实要添加时输入“1”用goto语句指向添加模块;当不想添加时输入“0”
用goto退出修改。
(5)查询
1)定义一个输入流ifp2,以输入方式打开文件。
2)定义一个字符串sign,定义一个bool变量fig并初始化为true。
3)把输入的名字赋值到字符串sign,用ifp2>>name>>number读取文件的信息,用name==sign判断当符合时显示,并把fig的值改为false。
4)用判断语句if判断fig是否为true,为true则显示“没有收录该球员!
!
!
按回车返回主菜单!
!
!
”以提醒用户。
5)按身价查询则利用条件sign<=shenjia判断,其它部分的算法跟按姓名查询一样。
(6)输出
1)首界面函数charinter_face()用system("cls")实现清屏操作,再用cout<<设定主菜单界面,并返回一个char值returnchoose,其值为用户输入一选择功能模块的值供主函数的switch选择语句实现模块的选择。
2)输出全部球员函数voidshow_all()先定义一个输入流ifp2并以输入的方式打开文件,定义一个bool变量flag并初始化为true,定义一个字符串record。
3)用循环语句while(getline(ifp2,record))一行一行的读取文件的信息并用cout<4)用判断语句if判断flag的值为true时输出“你的记录中没有球员!
!
!
”else输出“所有球员的信息已经全部显示出来!
!
!
!
”。
(7)系统维护
1)修改密码函数voidthekey()先定义一个输入流ofp并以输入的方式打开文件,当文件打不开时用当文件还没建立则用goto到xia建立密码.txt文件初始密码。
2)当文件存在即有原密码时、定义一个变量yourkey,输入密码赋值到yourkey,用判断语句if判断youkey==key是否满足,当不满足时用exit
(1)退出系统,并提醒“你无权管理,请与管理员联系”。
当满足时关闭文件再定义一个输出流f并以输出的方式打开密码文件,用f.clear()清空文件实现对原密码的删除,关闭文件。
3)定义一个输出流ofp并以追加的方式打开密码文件,用cin>>key输入你的新密码,用ofp<:
left)<4)密码判断函数voidball:
:
yourkey()定义一个输入流fp并以输入的方式打开文件,当文件打不开时用cout提示“对不起!
!
!
密码文件不存在!
请进入系统维护设定密码”。
用fp>>key读取密码文件的密码,定义一个double型变量yourkey并把用户输入的密码赋值到yourkey,用if(youkey!
=key)判断用户输入的密码是否正确,不正则用exit
(1)退出系统,正确程序再继续取运行。
五、使用说明
1、主菜单
在WindowsXP环境下点击“足球明星管理系统.exe”运行程序,主界面打开,输入1—7之间的数字选择您想进行的操作,如果输入错误,系统则提示错误。
屏幕如图2所示。
图2足球明星管理系统主界面
2、添加新球员
若选择“添加新球员”,则键入1,按照提示输入相关的信息,如“姓名:
卡卡,球衣号:
8等,输入完毕,按下回车键,系统自动保存”
如图3所示。
图3球明星管理系统添加新球员界面
3、删除球员
在主菜单界面中键入2,进入删除球员菜单,,照提示输入您想删除的球员,如“卡卡”,系统会自动显示出相关信息,如要确定删除请输入“1”,按下回车,删除球员成功,回到主菜单如图4所示。
图4足球明星管理系统删除球员界面
4、显示所有明星姓名
如果想要查看所有球员资料,则输入“3”,如图5所示
图5足球明星管理系统显示所有球员界面
5、修改球员信息
如果想要修改球员信息,则输入数字“4”,如图6所示。
图6足球明星管理系统修改球员信息界面
按照提示输入你想修改球员的姓名,如“梅西”,然后系统会显示球员的所有信息,按照提示输入,输入完毕后按下回车,系统提示新球员信息已经保存好,如图7.所示。
图7足球明星管理系统修改球员信息界面
6、查询球员信息
如果想要查询某个球员的的信息,输入数字“4”,按照提示输入你想要查找的球员,如“卡卡”,系统自动会显示该球员的所有信息,球衣号码,身价等信息。
如图8所示。
图8足球明星管理系统查询球员信息界面
7、身价查询
如果想要查询某个球员的身价,在主菜单输入数字“6”,按照系统的提示,输入要查询的身价,如“900”,系统会自动显示出比900高的和相等身价的球员全部信息。
如图9所示。
图9足球明星管理系统球员身价界面
六、结束语
经过二周多的设计和开发,明星信息管理系统基本开发完毕。
其功能基本符合管理员需求,能够完成明星明星信息的存储和成绩的查询。
但是由于毕业设计时间较短,所以该系统还有许多不尽如人意的地方,比如管理员界面不够美观,不能尽善尽美的想到所有可能出现的情况。
出错处理不够等多方面问题。
这些都有待进一步改善。
七、参考文献
[1]D.S.Malik著.C++基础教程——从问题分析到程序设计(第二版).清华大学出版社,2006
[2]刘娜娜等著.C++程序设计.北京航空航天大学出版社,2009
[3]raphelPender等著,苏剑等译.标准C++编程宝典.电子电工出版社,2005
[4]
八、组员分工
姓名
任务
李雄盛
主函数、ball类、修改、删除功能的实现
潘文俊
密码的设定与实现、程序的编译运行调试
施联生
查询模块、程序说明书内容设计编辑
王蒙
显示模块、数据输入、截图、说明书设计、设计和打印
九、源程序代码
#include
#include//getline()>>>>wenjian
#include
#include
usingnamespacestd;
classball
{
public:
ball();//默认构造函数
charinter_face();//首页
voidaddfootballstar();//添加球员
voiddelfootballstar();//删除球员
voidshow_all();//显示所有球员
voidchange();//修改信息
voidselect();//查询球员
voidsele();//
voidsaveall();//保存新增加的球员
voidthekey();
voidyourkey();
private:
stringname;//姓名
stringaddress;//俱乐部
stringnumber;//球衣号号码
stringduty;//球场上的位置
doubleshenjia;////
doublekey;
};
ball:
:
ball()
{
name="\0";
address="\0";
number="\0";
duty="\0";
shenjia=0;
}
//首页
charball:
:
inter_face()
{
system("cls");
cout<cout<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★"<<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★"<<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★"<<<"\t\t"<<<"\t\t设计者:
"<<<"\t\t首席指导:
"<<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★"<<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★"<<<"\t\t"<<<"\t\t1.添加新球员4.修改信息"<<<"\t\t"<<<"\t\t2.删除球员5.查询球员"<<<"\t\t"<<<"\t\t3.显示所有球员6.按身价查询"<<<"\t\t0.退出7.系统维护."<<<"\t\t\t选择:
";
charchoose;
cin>>choose;
cin.clear();
cin.sync();
returnchoose;
}
//添加球员
voidball:
:
addfootballstar()
{
cout<<<"姓名:
";
cin>>name;
cin.clear();cin.sync();
cout<<"球衣号:
";
cin>>number;
cin.clear();cin.sync();
cout<<"身价(百万):
";
cin>>shenjia;
cin.clear();cin.sync();
cout<<"球场上的位置:
";
cin>>duty;
cin.clear();cin.sync();
cout<<"俱乐部:
";
cin>>address;
cin.clear();cin.sync();
saveall();
cout<!
!
!
!
"<getchar();
}
//删除球员
voidball:
:
delfootballstar()
{
ofstreamofp("star.txt",ios:
:
out);
ifstreamifp2("star2.txt",ios:
:
in);
if(!
ofp||!
ifp2)
{
cout<!
!
!
找不到文件!
!
!
!
"<getchar();cin.sync();
return;
}
stringsign;
cout<";
cin>>sign;
stringstar;
boolflag=true;
stringstr;
while(ifp2>>name>>number)
{
getline(ifp2,str);
if(sign==name)
{
cout<"<<cout<:
left)<<<""<intd;
cout<<"确定要删除请按‘1’键:
";
cin>>d;
if(d==1)
{
flag=false;
}
break;
}
ofp<:
left)<<<""<}
if(flag)
{
cout<!
!
本次删除失败!
!
!
!
"<}
else
{
while(getline(ifp2,str))
{
ofp<getchar;
}
ofp.close();
ifp2.close();
ofstreamout("star2.txt",ios:
:
out);
ifstreamin("star.txt",ios:
:
in);
if(!
out||!
in)
{
cout<!
!
"<return;
}
while(getline(in,str))
{
out<}
out.close();
in.close();
cout<!
!
"<getchar();
}
getchar();
cin.sync();
}
voidball:
:
sele()
{
ifstreamifp2("star2.txt",ios:
:
in);
if(!
ifp2)
{
cout<!
!
!
!
"<getchar();
return;
}
doublesign(0);
cout<cin>>sign;
cin.clear();cin.sync();
stringstar;
boolflag=true;
stringstr;
while(ifp2>>name>>number>>shenjia>>duty>>address)
{
getline(ifp2,str);
if(sign<=shenjia)
{
cout<<"姓名"<<"\t\t"<<"球衣号"<<"\t\t"<<"身价(百万)"<<"\t"<<"球场上的位置"<<"\t"<<"俱乐部"<cout<cout<:
left)<<<""<<<<}
}
cout<<"提示:
按0键再按回车返回主菜单"<for(intk;cin>>k==0;)
{
flag=false;
break;
}
}
//显示所有球员
voidball:
:
show_all()
{
ifstreamifp2("star2.txt",ios:
:
in);
if(!
ifp2)
{
cout<!
!
!
没有找到文件!
!
!
!
!
"<getchar();
return;
}
boolflag=true;
stringrecord;