求C++课程设计解读
C++答辩求下面这个程序的解读!!!#include <string.h>
#include <iostream.h>
#include"fstream.h"
#define M 5//每种飞机票的总数目
#define N 3//飞机票的总数目
class Plane
{private:
char name[40];//终点站名
int number;//航班号
int Number;//飞机号
int week;//星期几飞行
int day;//日期
int left;//余票额
int n;//与数组flag一起确定客户订票状态
public:
int flag[20];//订票状态数组,-1为预订票,1为已定票,0为初始化状态
Plane()//构造函数
{
name[0]='\0';
number=0;
Number=0;
week=0;
day=0;
left=M;
n=0;//数组从0开始计数
for(int i=0;i<20;i++)
flag[i]=0;
}
void init()//初始化每种飞机票
{
cout<<"请输入终点站名:";
cin>>name;
cout<<"请输入航班号:";
cin>>number;
cout<<"请输入飞机号:";
cin>>Number;
cout<<"请输入星期几飞行:";
cin>>week;
cout<<"请输入航班的日期:";
cin>>day;
}
~Plane(){};//析构函数
char *getname(){return name;}//获得终点站名
int getnumber(){return number;}//获得航班号
int getNumber(){return Number;}//获得飞机号
int getweek(){return week;}//获得星期几飞行
int getday(){return day;}//获得日期
int getleft(){return left;}//获得余票额
int getn(){return n;}//获得旅客数目
void inleft(int n){left=left+n;}//余票额增加函数
void deleft(int n){left=left-n;}//余票额减少函数
void inn(){n++;}//旅客数目增加函数
};
Plane pl[N];
void init();
int showmenu();//菜单函数
void start();//初始化函数
void query();//查询函数
void make();//订票函数
void back();//退票函数
void writetofile();
int main()
{
cout<<"这是民航售票处的计算机系统程序"<<endl;
while(1)
{
int choice;
choice=showmenu();
switch(choice)
{
case 1:start();break;
case 2:query();break;
case 3:make();break;
case 4:back();break;
case 5:writetofile();break;
case 0:return 0;
default:cout<<"你敲错了!\n";
}
}
return 0;
}
int showmenu()
{
int ch;
cout<<endl;
cout<<"请选择你要执行的功能"<<endl;
cout<<"1:录入数据"<<endl;
cout<<"2:查询航线"<<endl;
cout<<"3:承办订票业务"<<endl;
cout<<"4:承办退票业务"<<endl;
cout<<"5:将数据写入文件"<<endl;
cout<<"0:退出程序的运行"<<endl;
cin>>ch;
return ch;
}
void start()
{
for(int i=0;i<N;i++)
{
pl[i].init();
cout<<endl;
}
}
void query()
{
int i,num=0;
char name[40];
cout<<endl;
cout<<"请输入终点站名:";
cin>>name;
for(i=0;i<=N;i++)
if(strcmp(name,pl[i].getname())==0)
{
num++;
cout<<"航班号:"<<pl[i].getnumber()<<endl;
cout<<"飞机号:"<<pl[i].getNumber()<<endl;
cout<<"星期:"<<pl[i].getweek()<<"飞行"<<endl;
cout<<"航班日期:"<<pl[i].getday()<<endl;
cout<<"余票额:"<<pl[i].getleft()<<endl;
break;
}
if(num==0)
cout<<"没有此航班"<<endl;
}
void make()
{
int number,n,sitnumber,nu,ch,num=0;
cout<<"请输入航班号:";
cin>>number;
cout<<"请输入订票数额:";
cin>>n;
for(int i=0;i<N;i++)
if(number==pl[i].getnumber())
{
num++;
if(n<=pl[i].getleft())
{
cout<<"此航班有票"<<endl;
pl[i].deleft(n);
pl[i].inn();
pl[i].flag[pl[i].getn()]=1;
for(i=0;i<n;i++)
{
cout<<"座位号";
cin>>sitnumber;
}
}
else
{
cout<<"余票额少于订票额,请重新输入订票数额,"<<"订票数额应该少于或等于"<<pl[i].getleft();
cin>>nu;
if(nu<=pl[i].getleft())
{
cout<<"此航班有票"<<endl;
pl[i].deleft(nu);
pl[i].inn();
pl[i].flag[pl[i].getn()]=1;
for(i=0;i<N;i++)
{
cout<<"座位号";
cin>>sitnumber;
}
}
else
{
cout<<"是否需要预约"<<endl;
cout<<"是(1) 否(2)"<<endl;
cin>>ch;
switch(ch)
{
case 1:pl[i].inn();pl[i].flag[pl[i].getn()]=-1;break;
case 2:break;
default:cout<<"你敲错了!"<<endl;
}
}
}
}
if(num==0)
cout<<"没有此航班"<<endl;
}
void back()
{
int number,day,n,nu,sitnumber,num=0;//航班号,日期,退票数目,订票数目,座位号,标志量
cout<<"请输入日期:";
cin>>day;
cout<<"请输入航班:";
cin>>number;
for(int i=0;i<N;i++)
if((day==pl[i].getday())&&(number==pl[i].getnumber()))//日期与航班是否满足
{
num++;//日期与航班满足
cout<<"输入退票数目";
cin>>n;
cout<<"退票成功"<<endl;
pl[i].inleft(n);//该种飞机票增加,即已退票
for(int j=0;j<=pl[i].getn();j++)//顺序查询客户订票状态
{
if(pl[i].flag[j]==-1)//客户是否为预定状态
{
cout<<"有预约订票,请输入订票数额:";
cin>>nu;
if(nu<=pl[i].getleft())//余票额是否满足要求
{
cout<<"此航班有票"<<endl;
pl[i].flag[j]=1;
cout<<"订票成功"<<endl;
pl[i].deleft(nu);
for(int k=0;k<nu;k++)
{
cout<<"座位号"<<" ";
cin>>sitnumber;
}
cout<<"余票额为"<<pl[i].getleft()<<endl;
}
}
else
cout<<"没有预约订票!"<<"余票额为"<<pl[i].getleft()<<endl;
}
}
if(num==0)
cout<<"没有此票"<<endl;
}
void writetofile()
{
ofstream ofs("123.dat");
int i;
for(i=0;i<N;i++)
{
ofs<<pl[i].getname()<<endl;
ofs<<pl[i].getnumber()<<endl;
ofs<<pl[i].getNumber()<<endl;
ofs<<pl[i].getweek()<<endl;
ofs<<pl[i].getday()<<endl;
}
ofs.close();
cout<<"数据已经写入文件123.dat中"<<endl;
}