資源簡介
模擬一個飛機票訂票和退票系統假定某民航機場有m個航次的班機,每個航次都只到達一個目的地。試為該機場售票處設計一個自動訂票和退票系統。要求系統具有下列功能:(1) 訂票。若該航次余票數大于等于乘客訂票數,則在該航次的乘客表(按乘客姓氏字母順序連接)中,插入訂票乘客的信息項,并修改航次有關數據,否則,給出相應的提示信息。(2) 退票。若該航次當前退票數小于等于乘客訂票數,則在相應的乘客表中找到該乘客項,修改該航次及乘客表中的有關數據.當由于退票,使乘客的訂票數為零時,要從乘客表中撤消該乘客項;否則,給出相應的提示信息.(3) 將某航次的余票數恢復初值------該航次的最大客票數.當客戶訂票數要求不能滿足時,系統也可向客戶提供到達同一目的地的其他航線情況.
代碼片段和文件信息
#include?
#include?
#include?
#include?
using?namespace?std;
#define?MaxNode?100
#define?charl?100
#define?MaxContainf?100
int?m;//航班的次數?
typedef?struct?TypeTime
{
????int?hour;
????int?minute;
????int?TimeLong;
}TypeTime;
typedef?struct?Passenger
{
????char?name[charl];
????int?TicketNum;??
????struct?Passenger?*next;
}Passenger;
typedef?struct?TypeFight
{
????TypeTime?StartTime;
????TypeTime?EndTime;
????int?MaxContain;
????int?ReadyContain;
????Passenger?*head;
????Passenger?*last;???
}TypeFight;
typedef?struct?TypePlane
{
????char?ID[charl];
????char?StartPlace[charl];
????char?EndPlace[charl];
????int?PlaneNum;
????TypeFight?PlaneFight[MaxNode];????
}TypePlane;
TypePlane?Plane[MaxNode];
/*int?rand01()
{
//隨機產生01?
srand(?(unsigned)time(?NULL?)?);
return?rand()?%?2;
}*/
void?newline(int?n)
{
int?i;
for(i?=?1;i?<=?n;i++)
printf(“\n“);
}
void?space(int?n)
{
int?i;
for(i?=?1;i?<=?n;i++)
printf(“?“);
}
void?Input()
{
????//初始輸入輸入?
????FILE?*fp;
????int?i?j;
????//freopen(“outt.txt“?“w“?stdout);
????fp?=?fopen(“plane.txt“?“r“);
????fscanf(fp?“%d“?&m);
????printf(“m?=?%d\n“?m);
????for(i?=?0;i?????????fscanf(fp?“%s%s%s%d“?Plane[i].StartPlacePlane[i].EndPlace
Plane[i].ID?&Plane[i].PlaneNum);
printf(“%s?%s\n%s\n%d\n“?Plane[i].StartPlace?Plane[i].EndPlace
Plane[i].ID?Plane[i].PlaneNum);?
????????for(j?=?0;j? fscanf(fp?“%d:%d“?&Plane[i].PlaneFight[j].StartTime.hour
&Plane[i].PlaneFight[j].StartTime.minute);
fscanf(fp?“%d:%d“?&Plane[i].PlaneFight[j].EndTime.hour
&Plane[i].PlaneFight[j].EndTime.minute);
printf(“%d:%d?“?Plane[i].PlaneFight[j].StartTime.hour
Plane[i].PlaneFight[j].StartTime.minute);
printf(“%d:%d\n“?Plane[i].PlaneFight[j].EndTime.hour
Plane[i].PlaneFight[j].EndTime.minute);
Plane[i].PlaneFight[j].MaxContain?=?MaxContainf;
Plane[i].PlaneFight[j].ReadyContain?=?0;
Plane[i].PlaneFight[j].StartTime.TimeLong?=??
Plane[i].PlaneFight[j].StartTime.hour?*?60?+?
Plane[i].PlaneFight[j].StartTime.minute;
Plane[i].PlaneFight[j].EndTime.TimeLong?=??
Plane[i].PlaneFight[j].EndTime.hour?*?60?+?
Plane[i].PlaneFight[j].EndTime.minute;???????????
Plane[i].PlaneFight[j].head?=?(Passenger?*)malloc(sizeof(Passenger));
Plane[i].PlaneFight[j].head->next?=?NULL;????
Plane[i].PlaneFight[j].last?=?Plane[i].PlaneFight[j].head;
????????}????????
????}??
????fclose(fp);
}
int?BookTicket()
{
????char?ID[charl];
????char?name[charl];
????TypeTime?BeforeTime;
????int?TimeLong?Remain;
????int?i?j?TicketNum;
????int?flag?=?0;
????int?n;
????Passenger?*p?*s?*t;
????while(1){
system(“cls“);
printf(“請輸入你要都買得的票的ID。。。。\n“);
scanf(“%s“?ID);
for(i?=?0;i? if(strcmp(Plane[i].ID?ID)?==?0)break;
}?
if(i?>=?m)?return?0;?//查詢失敗,找不到你要查找的
- 上一篇:人員信息管理系統c++版超詳細
- 下一篇:MFC CComboBox 實現自動補全
評論
共有 條評論