实训周做了一个比较简单的球员管理系统,用指针,结构体实现txt文件的增删改查,记录一下。梳理一下,系统设计如下:
在开始代码之前,先做一份球员名单txt文件,包含所需的各项信息,不建议放到C盘,我做的球员信息如下:
主函数:
int main()
{
int c=1;
qiuyuan p[1000];
int zhiling;
shouye();//首页,这里可以自己设计一下
mingling();//选择命令
getqiuyuanshu();//读取球员名单的行数,即球员人数
cout<<endl;
cout<<"\t"<<"请先导入球员信息,才能执行其它操作!"<<endl;
while(1)
{
menu();
cout<<"\t"<<"请输入你想执行的功能:";
cin>>zhiling;
switch(zhiling)
{
case 1:luru(p,n);break;
case 2:qiuyuanxinxibiao(p,n);break;
case 3:chaxun(p,n);break;
case 4:zengjia(p);break;
case 5:xiugai(p,n);break;
case 6:shanchu(p);break;
case 7:fankui();break;
case 8:cout<<endl<<"\t"<<"即将退出,请稍等......";c=0;Sleep(500);exit(1);
default:cout<<"\t"<<"选择错误,按任意数字键即可返回菜单"<<endl;
cout<<"\t";cin>>zhiling;
}
if(c==1)
{
cout<<"\n"<<"\n"<<"\t"<<"-------------------------按任意键返回主菜单--------------------------";
cin.clear();
cin.sync();
cin.get();
system("cls");
}
else
break;
}
return 0;
}
获取球员人数(关键,即txt文件的数据行数):
int getqiuyuanshu(){
fstream fin("E:\\C++大一上学期\\球员名单.txt",ios::in);//自定义txt文件路径,获取球员名单总行数
if(!fin)
{
cerr<<"can not open file"<<endl;
return -1;
}
char d;
while(fin.get(d))
{
if(d=='\n')
n++;
}
fin.close();
return n;
}
mingling选择函数
void mingling()
{
int ling;
cin>>ling;
cout<<endl;
switch(ling)
{
case 1:cout<<"\t"<<"即将进入系统......"<<endl;
Sleep(500);
system("cls");//清屏函数
login();
break;
case 2:cout<<"\t"<<"即将退出,请稍后......"<<endl;exit(1);
default:cout<<"\t"<<"选择错误,请重新输入"<<endl;
mingling();
}
}
注册登录login函数(为了省事,楼主写的注册登录没有写保存读取账号密码的功能),其实就是定义了几个变量,然后赋初值。注册就修改这几个变量的值,登录就直接输入这几个变量的默认值。我另外一个系统的注册登录做了保存登录读取账号密码的功能,后期有时间再写一下。
void login()
{
int dl;
cout<<endl<<"\t"<<"\t"<<"\t"<<"\t"<<"\t"<<"------------------------------------"<<endl;
cout<<"\t"<<"\t"<<"\t"<<"\t"<<"\t"<<" 1.注册"<<endl;
cout<<"\t"<<"\t"<<"\t"<<"\t"<<"\t"<<" 2.登录"<<endl;
cout<<"\t"<<"\t"<<"\t"<<"\t"<<"\t"<<" 3.离开"<<endl;
cout<<"\t"<<"\t"<<"\t"<<"\t"<<"\t"<<"------------------------------------"<<endl;
cout<<"\t"<<"\t"<<"\t"<<"\t"<<"\t"<<"(默认账号:123456,密码:123456)"<<endl;
cout<<endl<<"\t"<<"\t"<<"\t"<<"\t"<<"\t"<<" 您选择的是:";
cin>>dl;
switch(dl)
{
case 1:Sleep(500);system("cls");
cout<<endl;
cout<<"\t"<<"\t"<<"\t"<<"\t"<<"\t"<<" 请输入您要注册的手机号码:";
cin>>tel;
cout<<"\t"<<"\t"<<"\t"<<"\t"<<"\t"<<" 设置密码(6-14个字符):";
cin>>mima1;
cout<<"\t"<<"\t"<<"\t"<<"\t"<<"\t"<<" 确认密码:";
cin>>mima2;
if(mima1==mima2)
{
lock=mima1;
cout<<endl;
cout<<"\t"<<"\t"<<"\t"<<"\t"<<"\t"<<"注册成功,即将跳转到登录界面......"<<endl;
Sleep(500);system("cls");
cout<<endl<<"\t"<<"\t"<<"\t"<<"\t"<<"\t"<<"请输入登录账号(手机号):";
cin>>zhanghao;
cout<<"\t"<<"\t"<<"\t"<<"\t"<<"\t"<<" 密码:";
cin>>mima;
if(zhanghao==tel&&mima==lock)
{
cout<<endl<<"\t"<<"\t"<<"\t"<<"\t"<<"\t"<<"登录中,请稍候......"<<endl;
Sleep(1000);system("cls");break;
}
else
{
cout<<endl<<"\t"<<"\t"<<"\t"<<"\t"<<"\t"<<"密码或账号错误,即将返回......"<<endl;
Sleep(500);system("cls");login();break;
}
}
else
{
cout<<endl<<"\t"<<"\t"<<"\t"<<"\t"<<"\t"<<" 两次输入的密码不一致,即将返回......"<<endl;
Sleep(500);system("cls");login();break;
}
case 2:Sleep(500);system("cls");
cout<<endl;
cout<<"\t"<<"\t"<<"\t"<<"\t"<<"\t"<<"请输入登录账号(手机号):";
cin>>zhanghao;
cout<<"\t"<<"\t"<<"\t"<<"\t"<<"\t"<<" 密码:";
cin>>mima;
if(zhanghao==tel&&mima==lock)
{
cout<<endl<<"\t"<<"\t"<<"\t"<<"\t"<<"\t"<<"登录中,请稍候......"<<endl;
Sleep(1000);system("cls");break;
}
else
{
cout<<endl;
cout<<"\t"<<"\t"<<"\t"<<"\t"<<"\t"<<"密码或账号错误,即将返回......"<<endl;
Sleep(500);system("cls");
login();break;
}
case 3:cout<<"\t\t\t"<<"即将退出,请稍候......"<<endl;exit(1);
default:cout<<"\t\t\t"<<"输入错误,请重新输入!!!"<<endl;Sleep(500);system("cls");login();
}
}
球员信息的增删改查:
void chaxun(qiuyuan *p,int n)//查询球员信息
{
int r;string find_name;
cout<<"\t"<<"请输入你要查找的球员的姓名:";
cin>>find_name;
cout<<endl;
bool flag=false;
for(r=0;r<n;r++)
{ if(p[r].name==find_name)
{
cout<<"\t"<<"该球员的信息为:"<<endl;
cout<<"\t"<<"---------------------------------------------------------------------"<<endl;
cout<<"\t"<<"号码 姓名 球队 位置 性别 身高 体重 球龄"<<endl;
cout<<"\t"<<p[r].x<<"\t"<<p[r].name<<"\t"<<p[r].qiudui<<"\t"<<p[r].weizhi<<"\t"<<p[r].sex<<"\t"<<p[r].shengao<<"\t"<<p[r].tizhong<<"\t"<<p[r].qiuling<<endl;
cout<<"\t"<<"---------------------------------------------------------------------"<<endl;
flag=true;
break;
}
}
if(flag==false)
cout<<"\t"<<"查无此人!"<<endl;
}
void zengjia(qiuyuan *p)//增加球员信息
{
int r;
n=n+1;
ofstream outfile;
outfile.open("E:\\C++大一上学期\\球员名单.txt",ios::out);
cout<<endl;
cout<<"\t"<<"请输入你要增加的球员的信息:"<<endl;
cout<<"\t"<<"请输入该球员的号码:";
cin>>p[n-1].x;
cout<<"\t"<<"请输入该球员的姓名:";
cin>>p[n-1].name;
cout<<"\t"<<"请输入该球员所在的球队:";
cin>>p[n-1].qiudui;
cout<<"\t"<<"请输入该球员的位置:";
cin>>p[n-1].weizhi;
cout<<"\t"<<"请输入该球员的性别:";
cin>>p[n-1].sex;
cout<<"\t"<<"请输入该球员的身高:";
cin>>p[n-1].shengao;
cout<<"\t"<<"请输入该球员的体重:";
cin>>p[n-1].tizhong;
cout<<"\t"<<"请输入该球员的球龄:";
cin>>p[n-1].qiuling;
for(r=0;r<n;r++)
{
outfile<<p[r].x<<"\t"<<p[r].name<<"\t"<<p[r].qiudui<<"\t"<<p[r].weizhi<<"\t"<<p[r].sex<<"\t"<<p[r].shengao<<"\t"<<p[r].tizhong<<"\t"<<p[r].qiuling<<endl;
}
outfile.close();
cout<<"\t"<<"增加成功!";
cout<<endl;
}
void xiugai(qiuyuan *p,int n)//修改球员信息
{
int r;
string gai_name;
ofstream outfile;
outfile.open("E:\\C++大一上学期\\球员名单.txt",ios::out);
cout<<endl;
cout<<"\t"<<"请输入你要修改的球员的姓名:";
cin>>gai_name;
bool flag=false;
for(r=0;r<n;r++)
{
if(p[r].name==gai_name)
{
cout<<"\t"<<"请重新输入该球员的号码:";
cin>>p[r].x;
cout<<"\t"<<"请重新输入该球员的姓名:";
cin>>p[r].name;
cout<<"\t"<<"请重新输入该球员的球队:";
cin>>p[r].qiudui;
cout<<"\t"<<"请重新输入该球员的位置:";
cin>>p[r].weizhi;
cout<<"\t"<<"请重新输入该球员的性别:";
cin>>p[r].sex;
cout<<"\t"<<"请重新输入该球员的身高:";
cin>>p[r].shengao;
cout<<"\t"<<"请重新输入该球员的体重:";
cin>>p[r].tizhong;
cout<<"\t"<<"请重新输入该球员的球龄:";
cin>>p[r].qiuling;
flag=true;
break;
}
}
if(flag==false)
cout<<"\t"<<"查无此人!"<<endl;
else if(flag==true){
for(r=0;r<n;r++)
{
outfile<<p[r].x<<"\t"<<p[r].name<<"\t"<<p[r].qiudui<<"\t"<<p[r].weizhi<<"\t"<<p[r].sex<<"\t"<<p[r].shengao<<"\t"<<p[r].tizhong<<"\t"<<p[r].qiuling<<endl;
}
outfile.close();
cout<<"\t"<<"修改成功!";
cout<<endl;
}
}
void shanchu(qiuyuan *p) //删除球员
{
int i,r;
string shan_name;
ofstream outfile;
outfile.open("E:\\C++大一上学期\\球员名单.txt",ios::out);
cout<<endl;
cout<<"\t"<<"请输入你要删除的球员的姓名:";
cin>>shan_name;
cout<<endl;
bool flag=false;
for(r=0;r<n;r++)
{
if(p[r].name==shan_name)
{
for(i=r;i<n;i++)
{
p[i].x=p[i+1].x;
p[i].name=p[i+1].name;
p[i].qiudui=p[i+1].qiudui;
p[i].weizhi=p[i+1].weizhi;
p[i].sex=p[i+1].sex;
p[i].shengao=p[i+1].shengao;
p[i].tizhong=p[i+1].tizhong;
p[i].qiuling=p[i+1].qiuling;
}
n--;
flag=true;
break;
}
}
if(flag==false)
cout<<"查无此人!"<<endl;
else if(flag==true){
for(r=0;r<n;r++)
{
outfile<<p[r].x<<"\t"<<p[r].name<<"\t"<<p[r].qiudui<<"\t"<<p[r].weizhi<<"\t"<<p[r].sex<<"\t"<<p[r].shengao<<"\t"<<p[r].tizhong<<"\t"<<p[r].qiuling<<endl;
}
outfile.close();
cout<<"\t"<<"删除成功!";
cout<<endl;
}
}
系统使用反馈函数
void fankui()
{
int wenti;
string liuyan,lxfs;
ofstream out("E:\\C++大一上学期\\球员管理系统反馈.txt",ios::app);//在cpp的bin目录下
cout<<endl;
cout<<"\t"<<"常见问题:"<<endl;
cout<<"\t"<<"---------------------------------"<<endl;
cout<<"\t"<<"1.录入信息时显示输入错误"<<endl;
cout<<"\t"<<"2.修改球员信息时显示查无此人"<<endl;
cout<<"\t"<<"3.删除球员信息时显示查无此人"<<endl;
cout<<"\t"<<"4.其他问题"<<endl;
cout<<"\t"<<"5.离开"<<endl;
cout<<"\t"<<"---------------------------------"<<endl;
cout<<"\t"<<"请输入您遇到的问题对应的编号:";
cin>>wenti;
switch (wenti)
{
case 1:cout<<"\t"<<"输入请注意身高体重的范围,规范格式。";break;
case 2:cout<<"\t"<<"请检查输入的球员姓名是否有误。";break;
case 3:cout<<"\t"<<"请检查输入的球员姓名是否有误。";break;
case 4:cout<<endl;
cout<<"\t"<<"请留下您在使用的过程中遇到的问题:";
cin>>liuyan;
cout<<"\t"<<"请留下您的联系方式以便我们联系您:";
cin>>lxfs;
cout<<"\t"<<"感谢您的留言,我们将会不断改善!";
cout<<endl;
out<<endl;
out<<"\t"<<"问题:"<<liuyan<<endl;
out<<"\t"<<"联系方式:"<<lxfs<<endl;
out.close();
break;
case 5:cout<<endl<<"\t"<<"即将返回,请稍等......";cout<<endl;break;
default:cout<<"\t"<<"选择错误,按任意数字键即可返回菜单"<<endl;
cout<<"\t";cin>>wenti;
}
cout<<endl;
}
以上就是球员管理系统的基本代码,源码在下面的链接。有问题的可以留言,一定会尽量回复。
球员管理系统源码及txt文件