C++实训作业——球员管理系统,对txt文件的增删改查,包含简单注册登录

实训周做了一个比较简单的球员管理系统,用指针,结构体实现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文件

发布了3 篇原创文章 · 获赞 5 · 访问量 378

猜你喜欢

转载自blog.csdn.net/weixin_43753937/article/details/104936682