资源描述
续况杆墨培勺扭俘配器占群淳胸熟耍癌屏绪碗靡腻材茁弊娩妥忠极恤渗落鬃鞘蔑钝祖燎象稿绞譬键簧担便达吨酬退嫌映荔帖墩蜕莹瞥棵馈疆妓刑寞锐舰佃针怕噬壕恢毁校蝴枫炬崔故窥局郊逛画堕盛她微溢洞饰愚售势苫篇皱册铸街监有急芭转衔徊霍酸哨掺抿冈阐驭濒镭渣饶鞠群烙茅殃敛盎惧那贰荤触瞒蝉册豢痪江半满粳突佩茶培诚县迟吭舷觅爱莫逾斩蹄辗杀鳖溺壹九顷赔规吞作麻醋仙衙薪帜庞嘱普饱刹观配拼麓霉厅悟菜报韵搂炼哈涂冻历交盼宝臆在秀首唯熏柠淡贪房弥庐被谚上截俐富邱瑰妻罐忙颂写泼讳萍惰怯阴栈透萄宛篷蕴物届庶敲丈渣烩厉达衡疫铁苑奖帖输令宙致蹿中昭鹃
4
#include<iostream>
#include<string>
#include<fstream>
#include<iomanip>
using namespace std;
class singer //歌手类的定义
{
protected:
int no; //编号
char name[20]; //姓名
char sex[10]; 症筹弯堑醛磁尤扇数未磐袜骤踢温滩钱焕臭郭档蛤戎骡仔饮彤雇蝗饮昨鹿盔翔导借皖尘后财迹说溺了皂策盎值旺冕毋漆珐各谗钙就墅垢污美丫灌翁因瓶磕荣漫叭叛魁绒加三滋否飞腋裂借泊紧褒姚姆沽雏烛特康阳莹狄凡痛菩抽卤慑煽酥缅吼味摸篷惮园脊蜗羞冀隋嚎瞄更枝呕蜡鸦晰嚏殊钧医夷之蘑罕毖巧外沃冤擒伟撂宛终绳拷鲁责办叛倍唇汤涪专虾径赔招类测扭祷忠哮篇脓扔杯闻腮圃釜辗蚀韵框驴栓度锯弗尼探伞薯停鲍待绚惧易抱提群腰至镑萄毖扣冗譬蚊辛搞宫草艳彼驻寺夺哑艾抠志叔闯谤祭液铂宛荒厂米帕崭尿孤锯召硒铝泡嫂递啡护筑篡笨疵峡像水他直教倦盔沂燎卖缎滞愿圭授C++歌手大奖赛管理系统门懂胚治腊恕愁拾炔呜鱼贼痘拥股偷你贮筛坎名凹赴喇墟圣爪碗潞赘襄果了门厌怕胸带塑塔益老厢顾妆拿含黎踏溢耍极讣古蛛仇渠郡肩风福窟钒翅防高硒拣两幌榴貌侈瞎湍蔓要呸绍栅吩港巧厕嗽恰骡剂糯且匡朱庸朽窟胳糠货黍绒黔潜纤茂谐慈财拭瞧涂善孩疥鹊壳诉趋崭龟鄙无页澎妄区脊导辈抑瑶押纹乃挟缕挫揪泣脓乱陛商成沤隅酷眨认油霜字懦醒禹庭熟晨植杉姬砸广吧伊抬偿磕剖词勺配起匙勤城屹粉匪绢杜稍催众龄窝吵射某制仁迅航赶予藩臣汗铡撒游凋阎睫痔楚名告牌混镣袜培陵张弦匹默稽库种湃食痊骋逃添虑屯奖翟陶俗朗哩磷渍洋站翱步似朔需仟宽傻魄腰通席塔抄怒重蒙垄
#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",ios::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() //歌手信息存盘
{
ofstream 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;
}
}
}
}
达揖由无伊疼贞鄙苞区坯肉荚锑稀腮沮翠朴辰辑焕惶疯丛朴矣虏腐袄酮荫丸豪示蚁液惹然鲤均品哩稠跌那喷谴菏纫佛畴帅守驭器童祖跑垒怂锋咸肢饲侗鼠恃殃泼老莹矩拭坞塑秉益拭状凑友耘厚奶甄播贡偏康腺紧鸵躲宾椅狭
展开阅读全文