C++歌手大奖赛管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include〈iostream>
#include〈string〉
#include〈fstream>
#include〈iomanip>
using namespace std;
class singer //歌手类的定义
{
protected:
int no;//编号
char name[20]; //姓名
char sex[10];//性别
int age;//年龄
char song[20]; //参赛曲目
char department[30]; //选送单位
char program[30]; //比赛项目名称
char time[20]; //比赛时间
char place[20];//比赛地点
int score; //比赛成绩
singer *mynext;//指向下一个歌手的指针
public:
singer();//歌手类无参构造函数的定义
singer(int pnum,char pname[],char psex[],int page,char psong[],char pdepart[],char program[],char time[],char place[],int score);//歌手类有参构造函数的定义singer(int pnum,char pname[],char psex[],int page,char psong[],char pdepart[],char program [],char time[],char place[],int score,singer *next); //歌手类有参构造函数的定义
int getnum();//提取歌手编号函数的定义
char *getname();//提取歌手名字函数的定义
char *getsex(); //提取歌手性别函数的定义
int getage();//提取歌手年龄函数的定义
void getagee(int as);//设置歌手年龄函数的定义
void getscoree(int ak);
char *getsong();//提取员歌手参赛曲目函数的定义
char *getdepart();//提取歌手选送单位函数的定义
char *getprogram(); //提取比赛项目名称函数的定义
char *gettime(); //提取比赛时间函数的定义
char *getplace();//提取比赛地点函数的定义
int getscore();//提取比赛成绩函数的定义
singer *getnext();//提取指向下一个歌手指针函数的定义
void setnext(singer *next); //设置指向下一个歌手指针函数的定义
void output1();//输出歌手信息函数的定义
void output2();//输出赛事信息函数的定义
void output(); //输出全部信息函数的定义
};
singer::singer()//歌手类无参构造函数
{
no=0;
strcpy(name,”");
strcpy(sex,"");
age=0;
strcpy(song,"”);
strcpy(department,””);
strcpy(program,"”);
strcpy(time,”");
strcpy(place,”");
score=0;
mynext=NULL;
}
singer::singer(int pnum,char pname[],char psex[],int page,char psong[],char pdepart[],char pprogram[],char ptime[],char pplace[],int pscore)//歌手类有参构造函数
{
no=pnum;
strcpy(name,pname);
strcpy(sex,psex);
age=page;
strcpy(song,psong);
strcpy(department,pdepart);
strcpy(program,pprogram);
strcpy(time,ptime);
strcpy(place,pplace);
score=pscore;
mynext=NULL;
}
singer::singer(int pnum,char pname[],char psex[],int page,char psong[],char pdepart[],char pprogram[],char ptime[],char pplace[],int pscore,singer *next)//歌手类有参构造函数{
no=pnum;
strcpy(name,pname);
strcpy(sex,psex);
age=page;
strcpy(song,psong);
strcpy(department,pdepart);
strcpy(program,pprogram);
strcpy(time,ptime);
strcpy(place,pplace);
score=pscore;
mynext=next;
}
int singer::getnum() { return no; }
char *singer::getname(){return name;}
char *singer::getsex() { return sex;}
char *singer::getsong(){return song;}
char *singer::getdepart(){ return department; }
int singer::getage(){return age; }
char *singer::getprogram(){return program;}
char *singer::gettime(){return time;}
char *singer::getplace(){return place;}
int singer::getscore(){return score;}
void singer::getagee(int as){ age=as;}
void singer::getscoree(int ak){score=ak;}
void singer::setnext(singer *next) {mynext=next;}singer *singer::getnext() { return mynext; }
void singer::output1()
{
cout〈〈”编号:”<〈no〈<endl;
cout〈〈”姓名:"〈<name〈〈endl;
cout<<”性别:”〈<sex〈〈endl;
cout〈〈”年龄:”〈<age<〈endl;
cout〈〈”参赛歌曲:"〈〈song〈<endl;
cout<〈”选送单位:"〈<department<<endl;
}
void singer::output2()
{
cout〈<"比赛项目:"<〈program<<endl;
cout〈〈"姓名:”〈<name<<endl;
cout〈〈"比赛时间:"<<time〈<endl;
cout〈〈”比赛地点:”<〈place〈〈endl;
cout〈<"得分:”<<score〈<endl;
}
void singer::output()
{
cout〈<"编号:”〈〈no<<endl;
cout<〈"姓名:"〈〈name〈<endl;
cout<<"性别:"<〈sex〈<endl;
cout<〈"年龄:"〈<age<〈endl;
cout<<"参赛歌曲:"<<song<〈endl;
cout<<"选送单位:"〈<department〈〈endl;
cout<<"比赛项目:”<<program<〈endl;
cout<<"比赛时间:"〈〈time〈〈endl;
cout<〈"比赛地点:"〈<place〈<endl;
cout〈〈"得分:”〈〈score〈<endl;
}
class operate:public singer
{
private:
singer *myfirst; //指向歌手链表中结点的指针
public:
operate(); //operate类无参构造函数的定义
operate(int nnum,char nname[],char nsex[],int nage,char nsong[],char ndepart[],char nprogram[],char ntime[],char nplace[],int nscore);
~operate();//operate类析构函数的定义
void load(); //从文件中加载歌手信息
void add(); //增加歌手信息
void input(int number);//键盘输入新歌手基本信息
void insert(int nnum,char nname[],char nsex[],int nage,char nsong[],char ndepart[],char nprogram[],char ntime[],char nplace[],int nscore);
bool findnum();//按编号查询歌手信息
bool findprogram(); //按项目名称查询赛事信息
bool modify(); //修改歌手信息
bool deletesinger();//删除歌手信息
void save();//歌手信息存盘
void showa();//显示所有歌手信息
void showb();//显示比赛赛事。
};
operate::operate () //operate类无参构造函数的实现
{myfirst=NULL;}
operate::operate(int nnum,char nname[],char nsex[],int nage,char nsong[],char ndepart[],char nprogram[],char ntime[],char nplace[],int nscore) //operate类带参数构造函数的实现{myfirst=new singer(nnum,nname,nsex,nage,nsong,ndepart,nprogram,ntime,nplace,nscore); }
operate::~operate() //operate类析构函数的实现
{
singer *next=myfirst,*temp;
while(next!=NULL)
{
temp=next;
next=next-〉getnext();
delete temp;
}
myfirst=NULL;
}
void operate::load() //从文件中加载歌手信息
{
int nnum,nage;
float nscore;
char nname[20],nsex[20],nsong[20],ndepart[20],nprogram[20],ntime[20],nplace [20];
ifstream f1("singer。
txt”,io s::in);
while(f1。
good())
{
f1>>nnum>>nname〉>nsex>>nage〉>nsong>>ndepart〉>nprogram〉>ntime>〉nplace〉>nscore;
if(!(f1.eof()))
insert(nnum,nname,nsex,nage,nsong,ndepart,nprogram,ntime,nplace,nscore);
}
f1。
close();
cout〈〈endl〈<”存储在文件中的学校人员信息已加载到系统中"<<endl;
}
void operate::add() //增加新歌手
{
int num,n1,n2;
singer *p=myfirst;
if(p==NULL)
{
cout〈〈”目前无歌手,请输入新歌手的编号:";
cin〉>num;
input(num);
}
else
{
if(p—>getnext()==NULL)
{
n1=p—〉getnum()+1;
input(n1);
}
else
{
while(p—〉getnext()!=NULL)
p=p->getnext();
n2=p->getnum()+1;
input(n2);}
}
}
void operate::input(int number) //键盘输入新歌手基本信息
{
int nage;
int nscore;
char nname[20],nsex[20],nsong[20],ndepart[20],nprogram[20],ntime[20],nplace[20];
cout〈<”请输入编号为”<〈number<〈”的歌手信息"〈<endl;
cout〈〈"输入姓名:”;cin>〉nname;
cout〈<”输入性别:";cin〉〉nsex;
cout<〈"输入年龄:”;cin>〉nage;
cout<<”输入参赛歌曲:”;cin>〉nsong;
cout<<"选送单位:";cin〉>ndepart;
cout<<"比赛项目:”;cin>>nprogram;
cout〈〈”比赛时间:”;cin〉>ntime;
cout<〈"比赛地点:”;cin〉〉nplace;
cout〈<"得分:";cin>〉nscore;
insert(number,nname,nsex,nage,nsong,ndepart,nprogram,ntime,nplace,nscore);
}
void operate::insert(int nnum,char nname[],char nsex[],int nage,char nsong[],char ndepart [],char nprogram[],char ntime[],char nplace[],int nscore)
{
singer *p=myfirst;
if(p==NULL)
myfirst=new singer(nnum,nname,nsex,nage,nsong,ndepart,nprogram,ntime,nplace,nscore);
else
{
while(p—>getnext()!=NULL)
p=p->getnext();
p->setnext(new singer(nnum,nname,nsex,nage,nsong,ndepart,nprogram,ntime,nplace,nscore,p—>getnext()));}
}
bool operate::findnum() //按编号查询歌手信息
{
int id;
singer *s=myfirst;
singer *f=s;
cout〈〈”请输入歌手的编号:";cin〉〉id;
if(s==NULL)
{ cout<〈"本系统暂无歌手信息!”<〈endl; return false; }
else
{
while(s!=NULL)
{
if(s—〉getnum()==id)
{s—>output1(); return true; }
else
{f=s;s=s—>getnext();}
}
cout<〈”无此歌手信息!”<<endl;
return false;
}
}
bool operate::findprogram() //按比赛项目查询赛事信息
{
char tmpprogram[20];
singer *s=myfirst;
singer *f=s;
cout〈〈"请输入比赛项目:”;
cin〉〉tmpprogram;
if(s==NULL)
{cout<<”本系统暂无项目信息!"〈<endl; return false; }
else
{while(s!=NULL)
{if(strcmp(s—>getprogram(),tmpprogram)==0)
{s->output2();return true;}
f=s;s=s—>getnext();
}
cout<〈”本系统无此项目信息!”<〈endl;
return false;
}
}
bool operate::modify()//修改歌手信息
{
int number;
singer *s=myfirst;
singer *f=s;
cout<<”请输入要修改的歌手编号:”;cin>〉number;
if(s==NULL)
{cout<〈"无此歌手!"〈〈endl;return false;}
else
{
while(s!=NULL)
{
if(s—〉getnum()==number)
{
s—>output();
while(1)
{
int i;
float tmpnumber;
char temp[30];
cout〈〈"请选择要修改的歌手信息:”<<endl;
cout<<" 1:姓名2:性别3:年龄4:参赛曲目5:选送单位6:比赛项目7:比赛时间8:比赛地点9:得分"<<endl;
cout<〈" 请选择(1~9)中的选项:";cin>>i;
switch(i)
{
case 1:{cout<<”输入修改姓名:";cin>〉temp;strcpy(s—〉
getname(),temp); };break;
case 2:{ cout〈<"输入修改性别:”; cin>〉temp;strcpy(s-〉getsex(),temp); };break;
case 3:{ cout〈〈"输入修改年龄:";cin〉>tmpnumber;s—〉
getagee(tmpnumber); };break;
case 4:{ cout〈<"输入修改参赛歌曲:”;cin>〉temp;strcpy(s—>getsong(),temp);};break;
case 5:{ cout〈〈"输入修改选送单位:”;cin>>temp;strcpy(s—〉getdepart (),temp);};break;
case 6:{ cout〈<”输入修改比赛项目:";cin〉>temp;strcpy(s—>getprogram (),temp);};break;
case 7:{cout<〈"输入修改比赛时间:”;cin〉>temp;strcpy(s—〉gettime (),temp);};break;
case 8:{cout〈<”输入修改比赛地点:”;cin>〉temp;strcpy(s->getplace(),temp);};break;
case 9:{ cout〈〈”输入修改得分:";cin>>tmpnumber;s
—>getscoree(tmpnumber);};break;}
return true;
}
}
else
{ s=s—〉getnext(); f=s;}
}
cout〈〈”没有此编号的歌手!"<〈endl;
return false;
}
}
bool operate::deletesinger()//删除歌手信息
{
int i;
singer *s=myfirst;
singer *f=s;
cout〈〈"请输入要删除歌手的编号:";cin〉〉i;
if(s==NULL)
{
cout〈〈"无歌手可以删除”; return false; }
else if(s->getnum()==i)
{
myfirst=myfirst—>getnext();
cout〈<"编号为"<〈i<<"的歌手已被删除了!”〈<endl;
delete s;
return true;
}
else
{
s=s-〉getnext();
while(s!=NULL)
{
if(s-〉getnum()==i)
{
f—〉setnext(s—>getnext());
cout〈〈"编号为"<〈i<〈”的成员已被删除\n”;
delete s;
return true;
}
f=s;
s=s->getnext();
}
cout<<”要删除的歌手不存在,无法删除!”<<endl;
return false;
}
}
void operate::save()//歌手信息存盘
{
of stream f2(”singer。
txt”,ios::out);
singer *p=myfirst;
while(p)
{
f2<〈p—〉getnum()〈〈”\t"<〈p-〉getname()〈〈"\t"<<p->getsex()〈<”\t"<〈p->getage()〈<”\t”
〈<p—〉getsong()<<”\t”<<p-〉getdepart()<〈"\t"<<p-〉getprogram()<<”\t"<〈p-〉gettime()〈<”\t"〈<p-〉getplace()〈<"\t"〈〈p-〉getscore<〈endl;
p=p—〉getnext();
}
f2.close();
cout<〈”保存数据已经完成"<<endl;
}
void operate::showa( )//显示所有歌手信息
{
singer *s=myfirst;
cout<<setw(8)〈〈"编号”〈<setw(8)<<"姓名”<〈setw(8)<〈”性别”〈〈setw(8)〈<"年龄"〈<setw(10)〈<"参赛曲目"<〈setw(12)<〈"选送单位”<〈endl;
while(s!=NULL)
{
cout〈<setw(8)<<s—〉getnum()<〈setw(8)〈〈s->getname()〈〈setw(8)<〈s-〉getsex()
<〈setw(8)<<s->getage()<<setw(10)<<s->getsong()<〈setw(12)〈〈s->getdepart()〈〈endl;
s=s-〉getnext();
}
}
void operate::showb() //显示所有赛事信息
{
singer *s=myfirst;
cout〈〈setw(10)〈<”参赛项目"〈<setw(12)〈〈”参赛时间”〈<setw(12)<<”参赛地点”<〈setw(12)〈〈”得分"〈<endl;
while(s!=NULL)
{
cout<〈setw(10)<〈s—〉getprogram()〈〈setw(12)<〈s—〉gettime()<〈setw(12)<<s—>getplace()〈<setw(12)〈〈s—>getscore()<〈endl;
s=s->getnext();
}
}
void menu()//主菜单
{
cout<〈" |^^^^^^^^^^^^^^^^^^^^^^^^^^^|
”<<endl;
cout<<”***********************『欢迎来到歌手信息管理系统』*************************"〈〈endl;
cout〈〈” * ||
*"〈〈endl;
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<〈" * ‖7.歌手信息存盘‖
*”<〈endl;
cout<<" * ‖8。
显示所有歌手信息‖
*"<〈endl;
cout〈<" * ‖9。
显示所有赛事信息‖*"<〈endl;
cout<<”* ‖0.退出‖
*”〈〈endl;
cout<<” * ================================================== *"〈〈endl;
cout<<" * 提示:输入相应操作前的序号!
*"〈〈endl;
cout〈〈” * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~*”<<endl;
cout〈〈" *感谢您的支持与使用!
*”〈<endl;
cout〈<” * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *"〈〈endl;
cout〈<” ****************************************************************************”〈<endl;
}
void main()
{
menu();
operate op;
//int i;
while(1)
{
int p,i=0;
cout<〈”请您输入操作选择(0~9):”;cin〉>p;
while(i==0)
{
if(p〈=9&&p>=0)
i=1;
else
{ cout〈<”操作错误,请重新输入!”;cin>>p;}
}
switch(p)
{
case 1:
op。
load();break;
case 2:
op.add(); break;
case 3:
op。
findnum();break;
case 4:
op。
findprogram();break;
case 5:
op.modify(); break;
case 6:
op。
deletesinger();break;
case 7:
op。
save();break;
case 8:
op.showa();break;
case 9:
op。
showb();break;
case 0:
{
cout〈<"************结束程序运行*************"〈<endl;
cout〈〈"***************再见******************”〈〈endl;
exit(1);break;
}
}
}
}
10。