代码.docx
- 文档编号:25236512
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:53
- 大小:24.14KB
代码.docx
《代码.docx》由会员分享,可在线阅读,更多相关《代码.docx(53页珍藏版)》请在冰豆网上搜索。
代码
#include
#include
#include
#include
#include
#defineMAX1000
usingnamespacestd;
classPrint
{
public:
virtualvoiddisplay()const=0;//纯虚函数,输出
};
//建立航班信息类
classFlight:
publicPrint
{
friendostream&operator<<(ostream&output,Flight&cp);//友元重载"<<"
public:
voidsetNum(stringnum);//航班号设置函数
voidsetTime(stringtime);//起飞时间设置函数
voidsetStar(stringstar);//起飞站设置函数
voidsetDestination(stringdestination);//终点站设置函数
voidsetPrice(doubleprice);//票价设置函数
voidsetSeat(intseat);//满载人数设置函数
voidsetRema(intrema);//剩票设置函数
voidsetState(stringstate);//航班状态设置函数
stringgetNum();//航班号获取函数
stringgetTime();//起飞时间获取函数
stringgetStar();//起飞站获取函数
stringgetDestination();//终点站获取函数
doublegetPrice();//票价获取函数
intgetSeat();//满载人数获取函数
intgetRema();//剩票获取函数
stringgetState();//航班状态获取函数
Flightoperator-(intn);//重载"-"
Flightoperator+(intn);//重载"+"
virtualvoiddisplay()const;//虚函数继承
private:
stringm_fnum;//航班号
stringm_ftime;//起飞时间
stringm_fstar;//起点站
stringm_fdestination;//终点站
doublem_fprice;//票价
intm_fseat;//票数
intm_frema;//余票
stringm_fstate;//飞机是否起飞
};
classTraffic:
publicFlight
{
public:
//修改航班信息
voidRevamp(intn);
voidAdd();//添加航班信息
voidFound();//创建航班信息
voidBook(intn);//订票
voidRefound(intn);//退票
voidY_Scanner();//浏览用户已购买的航班票
voidSearch(intn);//查找
voidmanage();//验证管理员
voidDelete();//删除航班信息
boolIf_Takeoff(Flight&flight);//判断飞机是否起飞
};
//菜单
classMenu
{
public:
voidinput1(intn);//管理员菜单
voidinput2(intn);//用户菜单
};
//建立用户信息类
classUser:
publicPrint
{
public:
~User(){}//User的析构函数
voidsetNam(stringnam);//用户姓名设置函数
voidsetId(stringid);//用户身份证号设置函数
voidsetNumm(stringnumm);//用户所买航班票航班的设置函数
stringgetNam();//用户姓名获取函数
stringgetId();//用户身份证号获取函数
stringgetNumm();//航班号获取函数
virtualvoiddisplay()const;//继承Print
private:
stringu_nam;//姓名
stringu_id;//证件号
stringu_numm;//订票的航班编号
};
FlightmyFlight[MAX];
FILE*fp,*fpp;
TrafficmyTraffic;
MenumyMenu;
UsermyUser[MAX];
voidUser:
:
setNam(stringnam)
{
u_nam=nam;
}
voidUser:
:
setId(stringid)
{
u_id=id;
}
voidUser:
:
setNumm(stringnumm)
{
u_numm=numm;
}
stringUser:
:
getNam()
{
returnu_nam;
}
stringUser:
:
getId()
{
returnu_id;
}
stringUser:
:
getNumm()
{
returnu_numm;
}
voidUser:
:
display()const
{
cout< } voidFlight: : setNum(stringnum) { m_fnum=num; } voidFlight: : setTime(stringtime) { m_ftime=time; } voidFlight: : setStar(stringstar) { m_fstar=star; } voidFlight: : setDestination(stringdestination) { m_fdestination=destination; } voidFlight: : setPrice(doubleprice) { m_fprice=price; } voidFlight: : setSeat(intseat) { m_fseat=seat; } stringFlight: : getNum() { returnm_fnum; } stringFlight: : getTime() { returnm_ftime; } stringFlight: : getStar() { returnm_fstar; } stringFlight: : getDestination() { returnm_fdestination; } doubleFlight: : getPrice() { returnm_fprice; } intFlight: : getSeat() { returnm_fseat; } voidFlight: : setRema(intrema) { if(rema>m_fseat) { m_frema=m_fseat; } elseif(rema<0) { m_frema=0; } else { m_frema=rema; } } voidFlight: : setState(stringstate) { if(state=="YES"||state=="yes") { m_fstate="YES"; } else { m_fstate="NO"; } } intFlight: : getRema() { returnm_frema; } FlightFlight: : operator-(intn) { m_frema-=n; return*this; } FlightFlight: : operator+(intn) { m_frema+=n; return*this; } ostream&operator<<(ostream&output,Flight&cp) { output< returnoutput; } stringFlight: : getState() { returnm_fstate; } voidFlight: : display()const { cout< } //判断飞机是否起飞 boolTraffic: : If_Takeoff(Flight&flight) { if(flight.getState()=="YES") { returntrue; } else { returnfalse; } } //身份验证 voidTraffic: : manage() { charpassword[20];//用于存贮密码 inttimes=3; cout<<"登录系统需验证密码! "< //验证密码。 三次错误后,就自动退出程序 do { times--; cout<<"请输入密码: (默认000)"; cin>>password; if(strcmp(password,"000")==0)//密码是"000" { times=-1; break; } elseif(times>0) { cout<<"密码错误! \n剩余"< "< } }while(times>0); if(times! =-1) { cout<<"对不起! \n您不是管理员! 不能使用此系统! "< } } //删除模块 voidTraffic: : Delete() { intseat,i,rema,k,d,m,c=0,e=0; charstate[3],num[20],time[20],destination[20],star[20]; charname[12],ID[18],number[20]; doubleprice; stringnumm; if((fp=fopen("flight.txt","r"))==NULL) { cout<<"Cannotopenflight.txt."< exit(0); } i=0; while(! feof(fp)) { fscanf(fp,"%s",num); fscanf(fp,"%s",time); fscanf(fp,"%s",star); fscanf(fp,"%s",destination); fscanf(fp,"%s",state); fscanf(fp,"%lf%d",&price,&seat); fscanf(fp,"%d",&rema); myFlight[i].setNum(num); myFlight[i].setTime(time); myFlight[i].setStar(star); myFlight[i].setDestination(destination); myFlight[i].setPrice(price); myFlight[i].setSeat(seat); myFlight[i].setRema(rema); myFlight[i].setState(state); i++; } k=i-1; fclose(fp); cout<<"请输入航班号: "; cin>>numm; for(i=0;i { if(myFlight[i].getNum()==numm) { e=1; } } if(e! =1) { cout<<"无此航班的信息"< } fp=fopen("flight.txt","w+"); for(i=0;i { if(myFlight[i].getNum()==numm) { c=1; continue; } else { fprintf(fp,"%s",myFlight[i].getNum().c_str()); fprintf(fp,"%s",myFlight[i].getTime().c_str()); fprintf(fp,"%s",myFlight[i].getStar().c_str()); fprintf(fp,"%s",myFlight[i].getDestination().c_str()); fprintf(fp,"%s",myFlight[i].getState().c_str()); fprintf(fp,"%.2lf",myFlight[i].getPrice()); fprintf(fp,"%d",myFlight[i].getSeat()); fprintf(fp,"%d\n",myFlight[i].getRema()); } } fclose(fp); fpp=fopen("ticket.txt","r"); i=0; while(! feof(fpp)) { fscanf(fpp,"%s",name); fscanf(fpp,"%s",ID); fscanf(fpp,"%d",&d); fscanf(fpp,"%s",number); myUser[i].setNam(name); myUser[i].setId(ID); myUser[i].setNumm(number); i++; } m=i-1; fclose(fpp); fpp=fopen("ticket.txt","w+"); for(i=0;i { if(myUser[i].getNumm()==numm) { c=1; continue; } else { fprintf(fpp,"%s",myUser[i].getNam().c_str()); fprintf(fpp,"%s",myUser[i].getId().c_str()); fprintf(fpp,"%d",d); fprintf(fpp,"%s\n",myUser[i].getNumm().c_str()); } } if(c==1) { cout<<"删除成功"< } fclose(fpp); } //查询模块 voidTraffic: : Search(intn) { charch; intcm,i; cin>>cm; switch(cm) { case1: { stringinfo; //输入要查询的航班号 cout<<"Enterastring: "; cin>>info; cout<<"航班号"<<""<<"起飞时间"<<""<<"起飞站"<<""<<"终点站"<<""<<"状态"<<""<<"票价"<<""<<"票数"<<""<<"余票"< for(i=0;i { if(info==myFlight[i].getNum()) { myFlight[i].display(); } } cout<<"是否返回上一级(y/n)? "< cin>>ch; if(ch=='y') { cout<<"请输入你的选择: "; Search(n); } break; } case2: { stringstart,last; //输入要查询的起始站 cout<<"Enterastartstation: "; cin>>start; //输入要查询的终点站 cout<<"Enteralaststation: "; cin>>last; cout<<"航班号"<<""<<"起飞时间"<<""<<"起飞站"<<""<<"终点站"<<""<<"状态"<<""<<"票价"<<""<<"票数"<<""<<"余票"< for(i=0;i { if((start==myFlight[i].getStar())&&(last==myFlight[i].getDestination())) { myFlight[i].display(); } } cout<<"是否返回上一级(y/n)? "< cin>>ch; if(ch=='y') { cout<<"请输入你的选择: "; Search(n); } break; } default: { cout<<"输入错误! 请重新输入"< Search(n); } } } //更改航班信息 voidTraffic: : Revamp(intn) { intcp,i; stringFnum,Snum; stringStime; stringSstar; stringSdestination,Sstate; doubleSprice; intSseat; charch; cin>>cp; switch(cp) { case1: { if((fpp=fopen("ticket.txt","r"))==NULL) { cout<<"Cannotopenticket.txt"< exit(0); } intm,d; charname[12],ID[12],number[12]; i=0; while(! feof(fpp)) { fscanf(fpp,"%s",name); fscanf(fpp,"%s",ID); fscanf(fpp,"%d",&d); fscanf(fpp,"%s",number); myUser[i].setNam(name); myUser[i].setId(ID); myUser[i].setNumm(number); i++; } m=i-1; if(fclose(fpp)) { cout<<"Cannotcloseticket.txt"< exit(0); } cout<<"输入需要更改的航班号: "< cin>>Fnum; cout<<"输入更改后的航班号: "< cin>>Snum; for(i=0;i { if(Fnum==myFlight[i].getNum()) { myFlight[i].setNum(Snum); cout<<"航班号"<<""<<"起飞时间"<<""<<"起飞站"<<""<<"终点站"<<""<<"状态"<<""<<"票价"<<""<<"票数"<<""<<"余票"< cout< } } if((fpp=fopen("ticket.txt","w+"))==NULL) { cout<<"Cannotopenticket.txt"< exit(0); } for(i=0;i { if(Fnum==myUser[i].getNumm()) { myUser[i].setNumm(Snum); } fprintf(fpp,"%s",myUser[i].getNam().c_str()); fprintf(fpp,"%s",myUser[i].getId().c_str()); fprintf(fpp,"%d",d); fprintf(fpp,"%s\n",myUser[i].getNumm().c_str()); } if(fclose(fpp)) { cout<<"Cannotcloseticket.txt"< exit(0); } break; } case2: { cout<<"输入需要更改的航班号: "< cin>>Fnum; cout<<"输入更改后的起飞时间: "< cin>>Stime; for(i=0;i { if(Fnum
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 代码