订票系统 数据结构 课程设计

合集下载

航空客运订票系统数据结构课程设计源代码

航空客运订票系统数据结构课程设计源代码

第一部分:需求分析1、系统名称:航空客运订票系统航空客运订票的业务活动包括:查询航线、客票预定和办理退票等。

要求在TC或VC环境下设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。

2、要求:(1)每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行日期(星期几)、乘员定额、余票量、已经订票的客户名单(包括姓名、订票量)以及等候替补的客户名单(包括姓名、所需票量)。

(2)作为模拟系统,全部数据可以只存放在内存中。

(3)通过此系统可以实现如下功能:①录入功能:可以录入航班情况②查询功能:根据客户提供的终点站名进行查询,可以输出以下信息:航班号、飞机号、星期几飞行和余票量等。

也可以根据航班号,查询飞机某个航线的情况。

③订票功能:根据客户提出的要求(姓名、终点站名、订票数量)查询该航班的余票量情况。

如尚有足够的余票,则为客户办理订票手续;若已满员或余票量少于订票数量,则需要重新询问客户要求,如需要,可登记排队候补。

④退票功能:根据客户提供的情况(姓名、日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,若有人排队,则为排在第一位的客户办理订票手续。

第二部分:系统设计图样一:设计说明1:添加航班:整个航班的信息保存在一个结构体flight中,采用结构体数组,每一个航班信息包含航班号、起飞时间、起飞城市、降落时间、降落城市、余票数量。

航班信息通过lulu()函数进行添加。

添加的信息保存在航班flight结构体数组中。

2:查询航班:查询板块分为两个部分,按姓名查找和按站名查找。

按姓名查找:通过所输入的姓名和已定客户的姓名相匹配,匹配成功则查找成功。

按站名查找:通过所输入的起始站名和终点站名进行匹配,匹配成功则查找成功。

3:订票功能:根据用户的姓名和航班号进行订票,如果所查找的航班号的余票满足用户需要的票数,则订票成功,该信息保存在Customer中,才用结构体数组,包含已定客户的姓名、客户ID、订的票数、起飞时间、起飞城市、降落时间、降落城市、航班号。

数据结构课程设计(航空客运订票系统)

数据结构课程设计(航空客运订票系统)

(贵州大学计算机科学与信息学院贡献)#include <iostream.h> #include <process.h> #include <string.h> #include <conio.h> #include <stdio.h> #include <iomanip.h> #define MAX 60 #define NULL 0typedef struct Customer {char Name[8];int Amount;char Rank;int IDinfor;struct Customer *Next; }Customer;/* 乘客信息*//* 姓名*//* 定票数*//* 舱位等级*//* 个人信息*//* 指向下一乘客结点*/typedef struct Flight{char Des_Name[10]; char Flight_No[6];char Plane_No[6]; int Week_Day;int Customer_Amount; int Free_Amount;int Price[3];Customer *CustName; Customer *ReplName; struct Flight *Next;}Flight,*PFlight;/* 航线信息*//* 终点站名*//* 航班号*//* 飞机号*//* 飞行周日*//* 乘员定额*//* 剩余票数*//* 舱位等级的价格*//* 该航班的已定票乘客名单*//* 该航班的候补乘客名单*/ /* 指示下一航线结点*/int Customer_Count=0; Flight *Head;Flight *p2;Customer *Custp1[MAX];/* 所有航线的定票乘客总数*//* 航线头指针*//* 航线结点指针*/各条航线乘客结点指针Customer *Replp1[MAX]; int IsEmpty=1; int IsReplace=1; Customer *prior; int shouldsave=0; /* 各条航线候补结点指针 *//* ------------- 询问是否继续的函数 ------- */ char Continue(){char answer; while(1){printf("\n\t 您是否想继续 (Y/N)?"); scanf("%s",&answer); system("cls"); if(answer=='y'||answer=='Y') return 'y'; else if(answer=='n'||answer=='N')return 'n'; elseprintf("\n\t 输入有误,请重新输入 !");} }/* -------------- 操作出错函数 --------- */ void ErrorMess(){printf("\n\t 对不起,您的操作有误 !"); getch();}/* ------------- 系统退出函数 ---------- */ int ExitSystem(){char answer;printf("\n\t 您是否想要退出系统 (Y/N)?"); scanf("%s",&answer); if(answer=='y'||answer=='Y') return 1; else return 0;/* 是否有定票乘客 */ /* 是否有候补乘客 *//* 满足要求的定票乘客的前结点,以作删除操作/* ------------- 航线查找函数 -------- *//*Find_Line() 为重载函数*/int Find_Line(PFlight L,char *key)/* 核对航线是否唯一*/{int flag=0; /* 该标志位0 表示未找到相关信息,反之即找到,以下标志位同理*/Flight *p1;p1=L; /* 赋航线首地址*/if(p1==p2) /* 首航线不作比较*/return flag;while(p1!=p2&&p1!=NULL) /* 本航班号不纳入比较范围,否则会一直提示航线不唯一*/{ if(strcmp(p1->Flight_No,key)==0){flag=1;break;} p1=p1->Next;/* 指向下一航班结点*/}return flag;}int Find_Line(PFlight L,char *key,PFlight &p2,int &Flight_No)/* 航线查找函数*/ {int flag=0; /* 该标志位0 表示未找到相关信息,反之即找到*/Flight *p1;p1=L; /* 赋航线首结点*/ while(p1!=NULL){ if(strcmp(p1->Flight_No,key)==0)/* 不包括当前航线*/ {flag=1;p2=p1;break;}p1=p1->Next; /* 指向下一航班结点*/ if(p1!=NULL) /* 遇结束符不作统计范围*/ Flight_No++;}return flag;}/* ------------- 航班查找函数---------- */void Line_search(){Flight *p1;p1=Head;char Desname[50];// 查询终点站航班关键字if(Head==NULL){printf("\n\t 没有到达您想要的终点站的航班!");getch();return;}printf("\n\t 请输入终点站名:");scanf("%s",Desname);printf("\n\t 您所查询的航班的信息:\n");printf("\n _________________________________________________________________ \n");while(p1!=NULL){if(strcmp(p1->Des_Name,Desname)==0){printf("Des_Name Flight_No Plane_No Week_Day Cust_Num 1_PriceFree_Num 2_Price 3_Price\n");printf("\n%-9s%-10s%-9s%-9d%-9d%-9d%-8d%-8d%-8d",p1->Des_Name,p1->Flight_No,p1->Plane_No,p1->Week_Day,p1->Customer_Amount,p1->Free_Amount,p1->Price[0],p1->Price[1],p1->Price[2])J} p1=p1->Next;}printf("\n ___________________________________________________________________ \n");Continue();}/* ---------------- 航线添加函数-------- */void Line_Add(){Flight *p1; /* 建立临时航线结点*/ while(1){if(Head==NULL)/* 航线为空*/{ p1=p2=new Flight; /* 建立首个航线*/ Head=p2;}else{ p1=new Flight; /* 建立航线结点*/p2->Next=p1; /* 前一航线结点指向当前航班结点*/ p2=p1; /* 保留当前航班结点地址*/}printf("\n\t 添加新的航线!\n");printf("\n\t 请输入终点站名:");scanf("%s",&p2->Des_Name);while(1) /* 数据合法性检验*/{ printf("\n\t 请输入唯一的航班号:"); scanf("%s",&p2->Flight_No);if(Find_Line(Head,p2->Flight_No)) /* 存在航班号*/ printf("\n\t 航班号已经存在!\n");else break;}printf("\n\t 请输入飞机号:"); scanf("%s",&p2->Plane_No);while(1){printf("\n\t 请输入航班日期(请输入1—7 ):"); scanf("%d",&p2->Week_Day);if(p2->Week_Day<1||p2->Week_Day>7)printf("\n\t 输入日期有误,请重新输入!\n"); elsebreak;}printf("\n\t 请输入座位数量:"); scanf("%d",&p2->Customer_Amount);printf("\n\t 请输入头等舱的价钱:");scanf("%d",&p2->Price[0]);printf("\n\t 请输入二等舱的价钱:");scanf("%d",&p2->Price[1]);printf("\n\t 请输入三等舱的价钱 :"); scanf("%d",&p2->Price[2]);p2->Free_Amount=p2->Customer_Amount; p2->CustName=NULL; p2->ReplName=NULL; shouldsave=1; if(Continue()=='n'){p2->Next=NULL; return;} } }/* ----------- 航线是否为空函数 ------- */ int Empty_Flight(){if(Head==NULL){system("cls");printf("\n\t 对不起,航线不存在,按任意键返回 !"); getch(); return 1;}else return 0;}/* ----------- 航线查看函数 ---------- */ void Line_See(){system("cls"); Flight *p1; p1=Head;if(Empty_Flight()) /* 航班线为空 */return;printf("\n\n\t 航班信息 :\n");printf("\n ___________________________________________________________________ ______ \n");printf("Des_Name Flight_No Plane_No Week_Day Cust_Num Free_Num 1_Price 2_Price 3_Price\n"); while(p1!=NULL){printf("\n%-9s%-10s%-9s%-9d%-9d%-9d%-8d%-8d%-8d",p1->Des_Name,p1->Fl ight_No,p1->Plane_No,p1->Week_Day,/* 剩余票数与乘员定额相同 *//* 该航线定票乘客头指针为空 */ /* 初始候补名单为空 *//* 航线的下一结点为空 */p1->Customer_Amount,p1->Free_Amount,p1->Price[0],p1->Price[1],p1->Pric e[2]);p1=p1->Next;}printf("\n ___________________________________________________________________ ________ \n");printf("\n\t 按任意键返回!\n");getch();}/* ----------- 航线管理菜单-------- */void LinemanageMenu(){char c;system("cls");while(1){printf("\n\t\t 航线管理菜单:");printf("\n _______________ \n\n");printf("\t1. 添加新的航线\n");printf("\t2. 查询航线\n");printf("\t3. 查看航线\n");返回主菜单\n");printf("\t4.printf("\n ________________ \n");printf("\t 请选择您想要的服务:");scanf("%s",&c);switch(c){case '1':Line_Add();break;case '2':Line_search();break;case '3':Line_See();break;}case '4':return; }}}/* -------------- 订票办理函数 --------- */ void bookingMenu(){int Ticket_Count,IDinfor,i,flag=0;int Flight_No=0; /* 记录满足条件的航线的定票结点 */ Flight *p1; /* 记下满足条件的航线结点地址 *//* 临时性定票乘员结点 */ /* 临时性候补乘员结点 */ /* 用户输入的航班数据 *//* 候补乘客标志位 *//* 是否执行候补操作标志位 */ /* 航班线为空 */return; while(1) {printf("\n\t 现在您可以订票 !");flag=0; /* 标志位清零以重新作出判断 */ Flight_No=0; tag=0;printf("\n\t 请输入航线号 :"); scanf("%s",&answer);以下操作 */{while(1) /* 数据合法性检验 */ {printf("\n\t 请输入您想要订购的票的数量 :"); scanf("%d",&Ticket_Count); if(Ticket_Count==0){printf ("\n\t 请再次输入飞机号 :\n"); getch();Customer *p2; Customer *p3; char answer[7]; char temp; char c; int tag=0; int IsRepl=0;if(Empty_Flight()) if(Find_Line(Head,answer,p1,Flight_No)) /* 调用航线查找函数, 若存在则进行else break;}p1->CustName=Custp1[Flight_No]; }else /* 建立该航线的后续乘客结点 */{p2=new Customer; Custp1[Flight_No]->Next=p2; Custp1[Flight_No]=p2;}IsEmpty=0; /* 定票乘员不为空 */ Custp1[Flight_No]->Amount=Ticket_Count; /*订票数 */ IDinfor=p1->Customer_Amount-p1->Free_Amount+1; /* 算出 座位 号*/Custp1[Flight_No]->IDinfor=IDinfor; /* 赋座位号 */ p1->Free_Amount-=Ticket_Count; /* 减去定票数 */printf("\n\t 请输入您的姓名 :"); scanf("%s",&Custp1[Flight_No]->Name); while(1) /* 数据合法性检验 */ {printf("\n\t 请输入舱位等级 :"); scanf("%s",&Custp1[Flight_No]->Rank);if(!(Custp1[Flight_No]->Rank>='1'&&Custp1[Flight_No]->Rank<='3')){printf("\n\t 输入有误,请重新输入 !"); getch();}elsebreak;}printf("\n\t 请输入您的 ID 信息 :"); scanf("%d",&Custp1[Flight_No]->IDinfor);if(Ticket_Count<10) /* 为显示规整,作相应处理 */ printf("\n\t"); elseprintf("\n\t");printf("\n\t 恭喜您订票成功! \n"); for(i=1;i<=Ticket_Count;i++) /* 打印座位号 */{printf("\n\t 您所预定的座位号是 %d",IDinfor++); if(i%10==0) printf("\n\t");if(p1->Free_Amount>=Ticket_Count){Customer_Count++; flag=1; IsRepl=1;if(p1->CustName==NULL)*/{Custp1[Flight_No]=p2=new点*//* 定票乘客总数增 1*/ /* 表明进入了订票实际操作 */ /* 定票量满足,无需进入候补操作 *//* 首个定票乘客, 并记录相Customer; /* 建立该航线的首位乘客结}printf("\n");}/* 满足定票数*/else if(p1->Free_Amount==0){printf("\n\t 对不起,票已售完!\n");IsRepl=0;}else{printf("\n\t 对不起,当前没有多余的票!\n");IsRepl=0;}if(!IsRepl){printf("\n\t 您是否想成为候补乘客(Y/N)?");scanf("%s",&temp);if(temp=='y'||temp=='Y')/* 以下为候补操作*/{if(p1->ReplName==NULL){Replp1[Flight_No]=p3=new Customer; /* 建立该航线的首位候补乘客结点*/p1->ReplName=Replp1[Flight_No];}else{p3=new Customer;Replp1[Flight_No]->Next=p3;Replp1[Flight_No]=p3;}IsReplace=0; /* 候补乘客不为空*/tag=1; /* 已选择列入候补乘客名单*/Replp1[Flight_No]->Amount=Ticket_Count;printf("\n\t 请输入您的姓名:");scanf("%s",&Replp1[Flight_No]->Name);Replp1[Flight_No]->IDinfor=IDinfor; /* 候补乘客的座位*/Replp1[Flight_No]->Amount=Ticket_Count; /* 候补乘客的订票数*/while(1) /* 数据合法性检验*/{printf("\n\t 请输入舱位等级:"); scanf("%s",&Replp1[Flight_No]->Rank);printf("\n\t 请输入您的ID 信息:"); scanf("%d",&Replp1[Flight_No]->IDinfor);if(!(Replp1[Flight_No]->Rank>='1'&&Replp1[Flight_No]->Rank<='3')){printf("\n\t 输入有误,请重新输入.");getch();}elsebreak;}printf("\n\t 没有剩余座位!\n");/* 候补乘客无座提示*/shouldsave=1;}/* 进入候补名单*/}/* 票数满足*/}/* 航线存在*/elseprintf("\n\t 对不起,航线不存在!\n");/* 航线不存在*/ if(flag) /* 此处不作处理,则会地址溢出*/Custp1[Flight_No]->Next=NULL;/* 末位定票乘客的指针置空*/ if(tag){Replp1[Flight_No]->Next=NULL;/* 末位候补乘客的指针置空*/printf("\n\t 您已经成功排入候补订票队列中!\n");}printf("\n\t 是否退出菜单?:(y/n)");scanf("%s",&c);if(c=='y')return;}/*while*/}/* ---------------- 订票乘客信息----------- */void Display_Reserve(){system("cls");Flight *p1;Customer *p2;p1=Head;if(Empty_Flight())return;printf("\n\t 订票乘客信息");if(IsEmpty){printf("\n\t 对不起,没有订票乘客信息!\n"); getch();return;}printf("\n _______________________________________________________________ \n");printf("Name Flight_No Plane_No Tic_Amount Des_Name Rank_NoID\n");while(p1!=NULL){ if(p1->CustName!=NULL){ p2=p1->CustName; while(p2!=NULL){printf("\n%-8s%-10s%-9s%-11d%-9s%-9c%-9d",p2->Name,p1->Flight_No,p1->Plane_No,p2->Amount,p1->Des_Name,p2->Rank,p2->IDinfor);if(p1->Free_Amount>=1) printf("\n\n\t 还有多余的票!\n");elseprintf("\n\n\t 票已售完!\n"); p2=p2->Next;} } p1=p1->Next;printf("\n\n ________________________________________________________________ \n");}printf("\n\t 按任意键返回!"); getch();return;/* ---------------- 候补乘客信息----------- */void Display_Replace(){system("cls");Flight *p1;Customer *p2;p1=Head;if(Empty_Flight())return;printf("\n\t 候补乘客信息!");if(IsReplace){printf("\n\t 对不起,没有候补乘客!\n");getch();return;}printf("\n ________________________________________________________________ \n");printf("Name Flight_No Plane_No Tic_Amount Des_Name Rank_NoID\n");while(p1!=NULL){if(p1->ReplName!=NULL){p2=p1->ReplName;while(p2!=NULL){printf("\n%-8s%-10s%-9s%-11d%-9s%-9c%-9d",p2->Name,p1->Flight_No,p1->Plane_No,p2->Amount,p1->Des_Name,p2->Rank,p2->IDinfor);if( p1->Free_Amount>=1)printf("\n\t 还有多余的票!\n");elseprintf("\n\t 票已售完!\n");p2=p2->Next;}p2=p1->CustName; /* 指向该航线的乘客名单的首地址 */}p1=p1->Next;} printf("\n\n __________________________________________________________________ _________ \n");printf("\n\t 按任意键返回 !");getch();return;}/* ---------------- 退票办理函数 ----------- */printf ("\n\t 现在开始进行退票手续 ");if(IsEmpty){printf("\n\t 对不起,乘客不存在 !"); getch();return;}while(1){flag=0;tag=0;Flight_No=0;printf("\n\t 请输入航线 :");scanf("%s",&answer); if(Find_Line(Head,answer,p1,Flight_No)) {void RefundticketMenu(){int Flight_No=0,flag=0;Flight *p1; Customer *p2,*p4; Customer *p3,*p5; char answer[7],name[7]; int tag=0; */ int IDinfor;if(Empty_Flight()) return; /* 记录满足条件的航线的定票结点 /* 记下满足条件的航线结点地址/* 临时性定票乘员结点/* 临时性候补乘员结点 */*/ */ */*//* 若第二乘客满足条件,则它的首地址会发生冲突,注意此处/* 记录座位号 *//* 航班线为空*//* 航线存在 */printf("\n\t 请输入您的姓名 :"); scanf("%s",&name);if(p2==NULL) /* 该航线无定票乘客 {printf("\n\t 对不起,乘客不存在 !.");if(Continue()=='n')/* 是否继续操作 */ return;} elsewhile(p2!=NULL)/* 查找有无此乘客名 {if(strcmp(p2->Name,name)==0)/* { if(p2==p1->CustName) { prior=p1->CustName; /*IDinfor=p2->IDinfor; flag=1;break; }}else if(p2->Next!=NULL)/* 记录满足航线的的前结点地址 */{ if(strcmp(p2->Next->Name,name)==0){tag=1; /* 特别注意此处 */prior=p2; /* 记录满足定乘客的前一地址,以作删除操作 */IDinfor=p2->Next->IDinfor;flag=1;break;}}p2=p2->Next; /* 指向下一乘客结点 */ shouldsave=1;}/*while */ if(!flag)printf("\n\t 对不起,乘客不存在 !\n");}/* 存在该航线 */elseprintf("\n\t 对不起,航线不存在 !\n"); if(flag){if(prior==p1->CustName&&!tag) /* 首结点满足条件且一个乘客,则该航线定票乘客置空 */*/*/此外括号不能省略,否则功能会转变 *//* 若为首位乘客满足 */记录指针{if(prior->Next==NULL) /* 仅一乘客,头指针置空*/{ p1->Free_Amount+=prior->Amount; p1->CustName=NULL;}else{ p1->Free_Amount+=prior->Next->Amount; p1->CustName=prior->Next; /* 指向下一乘客结点*/}}else{p1->Free_Amount+=prior->Next->Amount; prior->Next=prior->Next->Next; /* 删除操作*/}Customer_Count--;if(Customer_Count==0)IsEmpty=1;shouldsave=1;}if(flag)/* 存在退票操作*/{p3=p1->ReplName;while(p3!=NULL){if(p3->Amount<=p1->Free_Amount)/* 候补乘客的定票数小于或等于剩余票数*/{printf("\n\t 候补乘客已经存在!\n"); p4=Custp1[Flight_No]->Next=newCustomer; p4->Next=NULL;IsEmpty=0; if(p1->CustName==NULL) p1->CustName=p4;strcpy(p4->Name,p3->Name); p4->Rank=p3->Rank; p4->Amount=p3->Amount;p4->IDinfor=IDinfor; p1->Free_Amount-=p3->Amount; /* 减去相应的票数*/Customer_Count++;if(p3->Next==NULL) /* 无候补乘客*/IsReplace=1;if(p1->ReplName==p3){if(p1->ReplName->Next==NULL) p1->ReplName=NULL;/* 删除*/ elsep1->ReplName=p3->Next;}elsep5->Next=p3->Next->Next;break;}if(p3->Next!=NULL)if(p3->Next->Amount<=p1->Free_Amount)p5=p3;p3=p3->Next; /* 指向下一候补乘客结点*/ shouldsave=1;}printf("\n\t 退票成功!");getch();return;}/* 存在此乘客*/shouldsave=1;if(Continue()=='n')return;}/*while*/}/* -------------- 乘客管理子菜单函数---------- */void CustomermagMenu(){char c;system("cls");while(1){printf("\n\t\t 乘客管理菜单:\n");printf("\n ____________________________________________________________________ _______ \n\n");printf("\t1. 乘客信息\n");printf("\t2. 候补乘客信息\n");printf("\t3. 返回主菜单 \n");printf("\n ____________________________________________________________________ _______ \n");printf("\t 请选择您想要的服务 :"); scanf("%s",&c);switch(c){case '1':Display_Reserve();break;case '2':Display_Replace();break;case '3':return; default:ErrorMess();}}}/* ------ 下面为主程序画面函数 ---- */void main(){system("color 1f"); // 屏幕颜色设定 system("mode con: cols=78 lines=35");Flight *p1;p1=Head;char c;do{system("cls");printf("\n\t\t 航空客运订票系统主菜单 \n");*************************\n");printf(" 请选择您想要的服务 :"); scanf("%s",&c);switch(c){case '1':LinemanageMenu();break; case'2':bookingMenu();break; case '3':RefundticketMenu();break;printf("\t 1. 航 线 管 理 菜 单 \n");printf("\t 2. 订 票 办 理 菜 单 \n");printf("\t 3. 退 票 办 理 菜 单 \n");printf("\t 4. 乘 客 管 理 菜 单 \n");printf("\t 5. 退 出 系 统\ n");printf("\n*************************谢 谢 使 用 航空客运订票系统!printf("\n******************************************************************************\n");/* 航线管理 *//* 订票办理 *//* 退票办理 */case '4':CustomermagMenu();break;/* 乘客管理*/ case '5':exit(0);default:break;}}while(c!='5');}。

订票系统课程设计

订票系统课程设计

订票系统课程设计一、课程目标知识目标:1. 学生能理解订票系统的基本原理,掌握其功能模块和操作流程;2. 学生能掌握数据库的基本操作,如查询、插入、删除和更新等;3. 学生了解计算机网络通信的基本原理,并能够运用到订票系统中。

技能目标:1. 学生能够运用所学编程语言,独立设计并实现一个简单的订票系统;2. 学生能够通过实际操作,掌握数据库的连接和操作方法;3. 学生能够通过小组合作,解决实际编程过程中遇到的问题。

情感态度价值观目标:1. 培养学生对计算机科学技术的兴趣和爱好,激发他们的求知欲和探索精神;2. 培养学生具备良好的团队合作意识,学会倾听、沟通和协作;3. 培养学生具备责任心,认识到编程在现实生活中的重要应用,提高他们的社会使命感。

课程性质:本课程为信息技术学科,旨在让学生掌握订票系统的设计与实现,提高编程实践能力。

学生特点:学生具备一定的编程基础,对数据库和网络通信有一定了解,但实际操作能力有待提高。

教学要求:结合学生特点,注重理论与实践相结合,强调动手实践,培养学生解决问题的能力和团队协作精神。

通过本课程的学习,使学生能够将所学知识应用于实际项目中,提高综合素养。

二、教学内容1. 订票系统概述- 了解订票系统的基本概念、发展历程和分类;- 学习订票系统的功能模块和业务流程。

2. 数据库操作- 掌握数据库的基本概念和SQL语言;- 学习数据库的创建、查询、插入、删除和更新等操作。

3. 订票系统设计与实现- 分析订票系统的需求,设计系统架构;- 学习编程语言(如Java、Python等)实现订票系统的功能模块;- 掌握界面设计、数据库连接和操作、网络通信等关键技术。

4. 网络通信原理- 了解计算机网络的基础知识;- 学习TCP/IP协议和HTTP协议;- 掌握网络编程基本方法,如Socket编程。

5. 项目实践与团队协作- 分组进行项目实践,设计并实现一个简单的订票系统;- 学习项目管理方法,明确分工,提高团队协作能力;- 分析项目实施过程中的问题,总结经验教训。

数据结构课程设计飞机订票系统

数据结构课程设计飞机订票系统

订票系统1.需求分析任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;2.概要设计在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。

主菜单0 1 2 3 4 5 6 7 8 9输入航班的信息列出航班的信息按航班号查询航班信息按城市来查询航班订票程序退票系统修改飞机航班的信息保存文件读取文件、下载文件退出详细设计3.源程序/******头文件(.h)***********/#include <stdio.h> /*I/O函数*/#include <stdlib.h> /*其它说明*/#include <string.h> /*字符串函数*/#include <conio.h> /*屏幕操作函数*/ #include <ctype.h> /*字符操作函数*/#define N 20#define Q 40 /*定义常数表示记录数*//*定义数据结构*//*乘客信息*/typedef struct{char number[10];/*编号*/char name[10]; /*姓名*/char id[20]; /*证件号*/int count; /*订票数*/char flightname[10];/*乘坐航班号*/}GUEST;/*航班信息*/typedef struct{char planenumber[10];/*航班号*/char city1[20]; /*起飞城市*/char city2[20]; /*抵达城市*/char time1[20]; /*起飞时间*/char time2[20]; /*降落时间*/int room; /*舱位数*/char price[5]; /*票价*/char discount[5]; /*折扣*/GUEST guest[25];int sit;}FLY;/*菜单函数,函数返回值为整数,代表所选的菜单项*/ menu_select(){char s[80];int c;gotoxy(1,25);/*将光标定为在第25行,第1列*/printf("press any key enter menu......\n");/*提示压任意键继续*/getch(); /*读入任意字符*/clrscr(); /*清屏*/gotoxy(1,1);printf(" Welcome to\n\n");printf(" Tickets Booking System\n\n");printf("********************MENU*********************\n\n");printf(" 0. Enter flight record\n");printf(" 1. List the flight information\n");printf(" 2. Search flightnumber\n");printf(" 3. Search city\n");printf(" 4. Book the ticket\n");printf(" 5. Quit the ticket\n");printf(" 6. Channge the flight information\n");printf(" 7. Save the file\n");printf(" 8. Load the file\n");printf(" 9. exit\n");printf("***********************************************\n");do{printf("\n Enter you choice(0~9):"); /*提示输入选项*/scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/ }while(c<0||c>9); /*选择项不在0~9之间重输*/return c; /*返回选择项,主程序根据该数调用相应的函数*/ }/*输入函数*/int enter(FLY t[]){int i,k,n,m,w,j;char *s;clrscr(); /*清屏*/printf("input the flight's count(n<=40):");/*输入航线总数*/ scanf("%d",&n);while(n>40||n<0){clrscr();printf("input error!!!input again(0<n<=40):");/*输入航线总数*/scanf("%d",&n);}printf(" input the flight's information\n\n");/*提示信息*/printf("flightname start-city end-city start-time end-time room price discount\n");printf("------------------------------------------------------------------------------\ n");for(i=0;i<n;i++){scanf("%s",t[i].planenumber);/*输入姓名*/gotoxy(13,6+i);/*光标跳到地址栏*/scanf("%s",t[i].city1);/*输入起飞城市*/gotoxy(25,6+i);scanf("%s",t[i].city2);/*输入降落城市*/gotoxy(36,6+i);scanf("%s",t[i].time1);/*输入起飞时间*/gotoxy(47,6+i);scanf("%s",t[i].time2);/*输入降落时间*/gotoxy(57,6+i);scanf("%d",&t[i].room);/*输入舱位数*/gotoxy(64,6+i);scanf("%s",t[i].price);/*输入票价*/gotoxy(73,6+i);scanf("%s",t[i].discount);/*输入折扣*/}printf("-----------------------------------------------------------------------------\n ");for(i=0;i<n;i++)t[i].sit=0;return n; /*返回记录条数*/}/*显示记录,参数为记录数组和记录条数*/void list(FLY t[],int n){int i;clrscr();printf("flightname start-city end-city start-time end-time room price discount\n");printf("------------------------------------------------------------------------------\ n");for(i=0;i<n;i++)printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumb er,t[i].city1,t[i].city2,t[i].time1,t[i].time2,t[i].room,t[i].price,t[i].discount);printf("************************end*******************\n");}/*按航班号查找记录*/void search1(FLY t[],int n){char s[20]; /*保存待查找航班名字符串*/int i;clrscr(); /*清屏*/printf("please input the flightname that you want to search:");scanf("%s",s); /*输入待查找航班名*/for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if(strcmp(s,t[i].planenumber)==0) /*记录中的航班名和待比较的是否相等*/break; /*相等,则返回该记录的下标号,程序提前结结束*/ }if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("not found\n");else{printf("flightname start-city end-city start-time end-time room price discount\n"); /*显示记录*/printf("------------------------------------------------------------------------------\ n");printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumb er,t[i].city1,t[i].city2,t[i].time1,t[i].time2,t[i].room,t[i].price,t[i].discount);}}/*按起降城市查找记录*/void search2(FLY t[],int n){char s1[20];char s2[20];int i;clrscr(); /*清屏*/printf("please input the start-city:");scanf("%s",s1); /*输入起飞城市名*/printf("please input the end-city:");scanf("%s",s2); /*输入降落城市名*/for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if((strcmp(s1,t[i].city1)==0)&&(strcmp(s2,t[i].city2)==0)) /*记录中的城市和待比较的是否相等*/break; /*相等,则返回该记录的下标号,程序提前结结束*/ }if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("not found\n");else{printf("flightname start-city end-city start-time end-time room price discount\n"); /*找到,显示记录*/printf("------------------------------------------------------------------------------\n");printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumb er,t[i].city1,t[i].city2,t[i].time1,t[i].time2,t[i].room,t[i].price,t[i].discount);}}/*订票*/void book(FLY t[],int n){char s[20],number1[10],name1[10],id1[20],flightname1[10];int i,j=0,m,k,count1;clrscr(); /*清屏*/printf("How many tickets do you want to book:");scanf("%d",&m);printf("number name ID book-count flightname\n"); /*提示信息*/printf("------------------------------------------------------------\n");for(k=0;k<m;k++){scanf("%s",number1);gotoxy(13,4+k);/*光标跳到地址栏*/scanf("%s",name1);/*输入订票客户姓名*/gotoxy(25,4+k);scanf("%s",id1);/*输入证件号*/gotoxy(43,4+k);scanf("%d",&count1);/*输入订票票数*/gotoxy(53,4+k);scanf("%s",flightname1);/*输入航班号*/for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if(strcmp(flightname1,t[i].planenumber)==0) /*记录中的航班名和待比较的是否相等*/{j=t[i].sit;strcpy(t[i].guest[j].number,number1);strcpy(t[i].guest[j].name,name1);strcpy(t[i].guest[j].id,id1);t[i].guest[j].count=count1;strcpy(t[i].guest[j].flightname,flightname1);t[i].room=t[i].room-count1;t[i].sit++;break; /*相等,则返回该记录的下标号,程序提前结结束*/}}if(i>n-1) /*如果整数i值大于n-1,说明没找到*/{printf("Sorry!No this flight\n");m=m+2;k++;}}}/*退票*/void quit(FLY t[],int n){char s1[20],s2[20]; /*保存待查找航班名和证件号字符串*/int i,k,j,h,l,ch;clrscr(); /*清屏*/printf("please input the flightname that you want to quit:");scanf("%s",s1); /*输入待查找航标名*/printf("please input the your id:");scanf("%s",s2); /*输入待查找证件号*/printf("number name ID book-count flightname\n"); /*显示提示*/printf("------------------------------------------------------------\n");for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{for(j=0;j<t[i].sit;j++)if((strcmp(s1,t[i].guest[j].flightname)==0)&&(strcmp(s2,t[i].guest[j].id)= =0)){printf("%-11s%-16s%-16s%-14d%-10s\n",t[i].guest[j].number,t[i].guest[j ].name,t[i].guest[j].id,t[i].guest[j].count,t[i].guest[j].flightname);t[i].room=t[i].room+t[i].guest[j].count;l=j;h=i;break;}}i=h;if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("not found\n");else{printf("Are you sure delete it(1/0)\n"); /*确认是否要删除*/scanf("%d",&ch); /*输入一个整数0或1*/if(ch==1) /*如果确认删除整数为1*/{for(k=l+1;k<t[i].sit;k++){strcpy(t[i].guest[k-1].number,t[i].guest[k].number); /*将后一条记录的姓名拷贝到前一条*/strcpy(t[i].guest[k-1].name,t[i].guest[k].name);strcpy(t[i].guest[k-1].id,t[i].guest[k].id);t[i].guest[k-1].count=t[i].guest[k].count;strcpy(t[i].guest[k-1].flightname,t[i].guest[k].flightname);}t[i].sit--;}printf("quit success!!\n");/*提示退票成功*/}}/*修改航班信息*/void channge(FLY t[],int n){char s[20]; /*要删除记录的姓名*/int i,j;clrscr(); /*清屏*/printf("please input the flightname that you want to channge:"); /*提示信息*/scanf("%s",s);/*输入航班名*/for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if(strcmp(s,t[i].planenumber)==0) /*记录中的航班名和待比较的是否相等*/break; /*相等,则返回该记录的下标号,程序提前结结束*/ }if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("not found\n");else{printf("flightname start-city end-city start-time end-time room price discount\n"); /*找到,显示原先记录*/printf("------------------------------------------------------------------------------\ n");printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumber,t[i].city1,t[i].city2,t[i].time1,t[i].time2,t[i].room,t[i].price,t[i].discount);printf("please input the new information:\n");scanf("%s",t[i].planenumber);/*输入航班名*/gotoxy(13,6+i);/*光标跳到地址栏*/scanf("%s",t[i].city1);/*输入起始城市*/gotoxy(25,6+i);scanf("%s",t[i].city2);/*输入终点城市*/gotoxy(35,6+i);scanf("%s",t[i].time1);/*输入起飞时间*/gotoxy(47,6+i);scanf("%s",t[i].time2);/*输入降落时间*/gotoxy(57,6+i);scanf("%d",t[i].room);/*输入座位号*/gotoxy(64,6+i);scanf("%s",t[i].price);/*输入票价*/gotoxy(71,6+i);scanf("%s",t[i].discount);/*输入折扣*/}}/*保存资料*/void save(FLY t[],int n){int i,j;FILE *fp; /*指向文件的指针*/if((fp=fopen("record1.txt","wb"))==NULL) /*打开文件,并判断打开是否正常*/{printf("can not open file\n");/*没打开*/exit(1); /*退出*/}printf("\nSaving file\n"); /*输出提示信息*/fprintf(fp,"%d",n); /*将记录数写入文件*/fprintf(fp,"\r\n"); /*将换行符号写入文件*/for(i=0;i<n;i++){fprintf(fp,"%s %s %s %s %s %d %s %s",t[i] .planenumber,t[i].city1,t[i].city2,t[i].time1,t[i].time2,t[i].room,t[i].price,t[i ].discount);fprintf(fp,"\r\n"); /*将换行符号写入文件*/fprintf(fp,"%d",t[i].sit); /*将记录数写入文件*/fprintf(fp,"\r\n"); /*将换行符号写入文件*/for(j=0;j<t[i].sit;j++){fprintf(fp,"%s %s %s %d %s",t[i].guest[j].number,t[i].gu est[j].name,t[i].guest[j].id,t[i].guest[j].count,t[i].guest[j].flightname);/*格式写入记录*/fprintf(fp,"\r\n"); /*将换行符号写入文件*/}}fclose(fp);/*关闭文件*/printf("****save success***\n"); /*显示保存成功*/}/*读入函数,参数为结构体数组*/int load(FLY t[]){int i,n,j;FILE *fp; /*指向文件的指针*/if((fp=fopen("record1.txt","rb"))==NULL)/*打开文件*/{printf("can not open file\n"); /*不能打开*/exit(1); /*退出*/}fscanf(fp,"%d",&n); /*读入记录数*/for(i=0;i<n;i++){fscanf(fp,"%s %s %s %s %s %d %s %s",t[ i].planenumber,t[i].city1,t[i].city2,t[i].time1,t[i].time2,&t[i].room,t[i].pric e,t[i].discount);fscanf(fp,"%d",&t[i].sit); /*读入记录数*/for(j=0;j<t[i].sit;j++)fscanf(fp,"%s %s %s %d %s",t[i].guest[j].number,t[i].gues t[j].name,t[i].guest[j].id,&t[i].guest[j].count,t[i].guest[j].flightname); /*按格式读入记录*/}fclose(fp); /*关闭文件*/printf("You have success read data from file!!!\n\n\n\n"); /*显示保存成功*/return n; /*返回记录数*/}/*主函数*/main(){ int i;FLY flight[Q];int length; /*保存记录长度*/clrscr(); /*清屏*/textcolor(YELLOW); /*字体颜色*/textbackground(BLUE);/*背景颜色*/for(;;)/*无限循环*/{switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/{case 0:length=enter(flight);break;/*输入记录*/case 1:list(flight,length);break; /*显示全部记录*/ case 2:search1(flight,length);break; /*查找记录*/case 3:search2(flight,length);break; /*查找记录*/case 4:book(flight,length);break; /*订票*/case 5:quit(flight,length);break; /*退票*/case 6:channge(flight,length);break; /*修改航班信息*/ case 7:save(flight,length);break; /*保存文件*/case 8:length=load(flight); break; /*读文件*/case 9:exit(0); /*如返回值为9则程序结束*/}}}4.菜单窗口订票系统菜单窗口0.输入航班的信息1.列出航班的信息2.按航班号查询航班信息3.按城市来查询航班4.订票程序5.退票系统6.修改飞机航班的信息7.保存文件8.读取文件、下载文件。

数据结构课程设计 火车订票系统

数据结构课程设计 火车订票系统

软件课程设计--C语言设计火车票订票系统之源代码(模拟数据库功能)(需求分析+可行性分析)设计题目:火车订票系统小组成员:指导教师:完成时间:一.需求设计:1.每条线路所涉及的信息有:起点、终点、站名、车次、、票价、时间、座位号。

2.作为示意系统,全部数据可以只放在内存中。

3.系统能实现的功能和操作如下:①.查询路线:根据旅客提出的终点站名输入下列信息:车次、车站名。

②.承办订票业务:根据客户提出的要求查询该车次票额的情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新查询客户要求,若需要可登记排队候补。

③.承办退票业务:根据客户提供的情况(车次、时间、座位号)为客户办理退票手续,然后查询该车次是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。

④登记旅客情况:包括旅客姓名,性别,年龄,家庭住址,联系方式等。

⑤统计功能:将每次车的订票,退票结果统计出来。

⑥管理功能:列车管理员可以通过调用函数来查看车票极其用户情况.⑦.查询功能:用户可以查询自己需要的车辆信息.二.总体设计1.程序流程图:按2键按3键按4键进入in函数进入book函数进入inquire函数进入cancel函数按5键进入you函数2.总体设计说明:①.数据结构设计:程序=数据结构+算法,一个好的程序必定有一个好的数据结构.本设计主要考虑车票信息和用户信息的数据结构.车票信息采用半十字链表.横向链表中的每一个结点包含以下内容:车次,起始站,发车时间,指向下一个结点的指针,指向中途站的指针.纵向链表中每一个结点包含以下内容:从始发站开始的依次到站,票价,到达时间,是否已被购买标识,才用mark标识,当mark为1时车票已售出,当mark为0时车票还未售出.以及指向下一个结点的指针.纵向链表采用循环链表,尾指针指向首指针.未购票用户信息使用队列来保存,因为考虑到用户会预订票,所以把用户以来订票的时间早晚排在队中.先来先买,后来后买.队列中的每个元素包含以下内容:用户姓名,身份证号码,想要购票的车次,起始站,要到的站,时间.已经购票用户信息使用一个单链表来保存,链表中的没个结点包含以下内容:用户姓名,身份证号码,已购车票的车次,出发时间,到达时间.车票信息链表示意图:车次起始站发车时间downnnext到站时间票价marknext座位号未购票用户信息队列:用户姓名购票的车次起始站要到的站达到时间用户姓名购票的车次起始站要到的站达到时间注:座位号包含在车次号中已购票用户信息链表示意图: 用户姓名身份证号码已购车票的车次号出发时间到达时间注:座位号包含在车次号中②算法的设计:主函数:利用case语句实现用户界面,用户输入需要的服务的数字代码,程序就会转到相应的函数,实现相应的功能。

数据结构课程设计飞机票订票系统讲解

数据结构课程设计飞机票订票系统讲解

学号成都理工大学计算机科学与技术系数据结构课程设计设计说明书题目订票系统学生姓名班级成绩指导教师(签字)计算机科学与技术系2016 年9 月20 日目录第1章问题描述 (1)(1)录入: (1)(2)查询: (1)(3)订票: (1)(4)退票: (1)1、开发环境 (2)2、组成框图 (2)3、流程图 (3)第3章详细设计 (4)1.根据飞机订票系统的可设要求,要实现以下功能: (4)2.具体的方法及函数调用的思想: (4)struct://它相当于一种记录 (4)3.方法的实现: (5)1)input( ); //录入 (5)2)find( ); //查询,按终点站来查询 (6)3)string time(short begin_hour,char begin_minute); //调用系统时间 (6)4)order( ); //办理订票函数 (6)5)refund( ); //办理退票函数 (6)第4章测试结果及分析 (7)执行结果: (7)参考文献 (10)附录:源代码 (10)1第1章问题描述通过此系统可以实现如下功能:(1)录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)(2)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;(3)订票:可以订票,如果该航班已经无票,可以提供相关可选择航班;(4)退票:订票数量及航班情况。

第2章概要设计1、开发环境系统环境:Microsoft Windows®10 专业版开发环境:Microsoft Visual Studio 2015开发平台:Win64开发语言:C++硬件环境:(1) CPU:Intel Core i5(2)内存:4GB(3)显示卡:NVIDIA GeForce GTX950M2、组成框图3、流程图第3章详细设计1.根据飞机订票系统的可设要求,要实现以下功能:(1)录入:录入航班情况(2)查询:可以查询某个航线的情况可以输入抵达城市,查询飞机航班情况;(3)订票:1)先判断飞机是否起飞,如果发出航班则订票失败,否则可以订机票。

数据结构课程设计---航空订票系统

数据结构课程设计---航空订票系统

数据结构课程设计报告1.航空订票系统1.需求分析试设计一个航空订票系统,基本要求如下:每条航班所涉及的信息有:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,乘员定额,余票量,订定票的客户名单(包括姓名,订票量,舱位等级(头等舱、公务舱、经济仓)以及等候替补的客户名单(包括姓名、所需数量)。

采用链式存储结构。

系统能实现的操作和功能如下:(1)航班信息管理。

(2)查询航线,按以下几种方式查询:①按航班号查询;②按起点站查询;③按终点站查询;④按日期查询;每种查询方式中,查询后输出如下信息:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,余票量。

(3)承办订票业务:根据客户提出的要求(航班号,订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少于订票额,则需重新询问客户要求。

若需要,可登记排队候补。

(4)承办退票业务:根据客户提出的情况(日期,航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。

2.设计2.1 设计思想(1)数据结构设计typedefstruct keHu//客¨户信息{char nameofKeHu[20];//客户名字int numofPiao;//客¨户需要票的数量int type;//仓位等级1:头等Ì舱2:公务舱3:经济舱struct keHu* next;/下个客户};typedefstruct hangBan{int numofHangBan;//航班号char typeofHB[20];//航班机型¨char startFly[20];//起飞¦机场char endFly[20];//降¦落机场char DataofHB[20];//日期格式为(20120312星期¨一)char startTime[20];//起飞¦时间char endTime[20];//到达时À间float flyTime;//飞行时长float prise;//价格int largeNum;//成员定额int leaveNum;//余票数量keHu *custemer;//乘客信息名单keHu *orderofKeHu;//替补客户};typedefstruct Node{hangBan *exam;//航班信?息¡éint numofN;//航班数量struct Node *next;};(2)算法设计总体设计:在Fly.h文件中设计舱位的信息处理以及订票退票和对舱位信息的管理方面的功能然后在main,h中设计用户界面功能部分。

数据结构课程设计之飞机订票系统

数据结构课程设计之飞机订票系统

青岛理工大学数据结构课程设计报告题目:飞机订票系统院(系):学生姓名:班级:学号:起迄日期:指导教师:2010—2011年度第 2 学期一、需求分析1.问题描述:设计一个模拟飞机订票系统,通过此系统可以录入、查询、修改航班情况,完成用户订票和退票功能,并且可以保存客户和航班的资料。

2.基本功能1,录入航班信息。

没个航班的信息包括:航班号,起飞、抵达城市,座位总数,剩余座位数。

数据由使用者输入。

数据存储在txt文件中,采用线性表的链式结构。

2,加载航班和客户信息。

可以自动加载保存在txt文件中的航班和客户的信息。

3,查询航班。

可以通过输入航班号,查询该航班的所有信息。

可以通过输入起飞抵达的城市,查询航班的信息。

4,订票。

客户的信息包括:姓名,证件号,所订票的航班号,座号。

用户输入要订票的航班号,如果该航班未满,则订票成功,并记录客户的信息。

如果该航班已满,则订票失败,输出所有未满的航班信息,供用户选择。

5,退票。

删除退票用户的订票信息,相应的航班的剩余票数增加1。

6,修改航班信息。

用户输入要修改的航班号,和要修改的内容,修改该航班的相应信息。

7,保存操作。

把当前的航班信息,和用户信息分别保存在txt文件中。

8,输出所有客户信息。

按一定的格式输出用户的姓名,证件号码,航班号,座号。

9,输出所有航班信息。

按一定的格式输出所有的航班的航班号,起飞抵达城市,座位总数,剩余座位数。

0,退出系统。

3.输入输出在控制台下,根据提示输入要完成功能的标号,然后在提示下选择性的输入航班号、起飞抵达地、证件号码,或者姓名等。

系统会根据用户的输入输出相应的航班信息或者用户信息。

二、概要设计1.设计思路:对于航班和用户,分别定义不同的数据结构,并且采用线性表的链式结构进行存储。

然后根据要完成的功能,分模块用函数实现。

所用到的算法主要有:链表的创建,增加,遍历,插入,删除。

2.数据结构设计:采用的逻辑结构是线性结构。

存储结构是链式结构。

数据结构课程设计航空客运订票系统

数据结构课程设计航空客运订票系统

数据结构课程设计航空客运订票系统(总14页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--《数据结构课程设计》报告设计题目航空客运订票系统专业班级学号姓名电话完成日期目录1. 问题描述 (2)2. 系统设计 (2)3. 数据结构与算法描述 (4)4. 测试结果与分析 (6)5. 总结 (10)6. 参考文献 (10)附录程序源代码 (10)1课程设计题目1. 问题描述基于人们对航空客运使用需求的日益提高,为方便乘客提前买票及优化飞机航空订票服务,需要开发一个飞机订票系统,此程序是为实现航班情况的查询,订票,退票以及客户信息浏览与票务信息浏览等基本功能。

2. 系统设计设计目标(1)可以浏览航线信息;包括终点站名、航班号、飞机号、飞行日期、乘员定额和余票量;(2)可以浏览已订票客户信息;包括客户姓名、订票数额和舱位等级;(3)可以查询航线;包括终点站名、航班号、飞机号、飞行日期、乘员定额和余票量;(4)可以办理订票业务;需提供航班号、所需票数、客户姓名和舱位等级,生成客户座位号;(5)可以办理退票业务;提供航班号和客户姓名,即可退票;(6)可以查看剩余票数;(7)要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。

设计思想(1)运行环境(软硬件环境):DEV-C++;(2)输入的形式和输入值的范围:由航空公司输入航线情况并以单链表的形式存储在内存里面;(3)输出的形式描述:通过客户的输入,输出相应内容;2(4)功能描述:用户可通过本系统实现对航班的查询、订票和退票功能。

系统模块划分主函数输出菜单界面。

输入指令,显示,敲击回车开始工作。

浏览航线信息编写void list()函数实现打印全部航线信息的功能,调用void display()函数实现打印struct airline链表中存储的航线的基本信息的功能。

浏览已订票客户信息编写void prtlink()函数实现打印订票乘员名单域的客户名单信息的功能,调用find()函数查询并以指针形式返回。

数据结构课程设计《订票系统(航空)》报告源代码

数据结构课程设计《订票系统(航空)》报告源代码

数据结构课程设计——《订票系统》目录一、设计任务与要求2b5E2RGbCAP1.1 总体目标与任务要求2p1EanqFDPw1.2 题目选择与目地意义2DXDiTa9E3d1.3 所选题目地主要工作2RTCrpUDGiT二、需求分析 25PCzVD7HxA2.1 用户需求分析 2jLBHrnAILg2.2 功能需求分析 3xHAQX74J0X2.3 系统需求分析 3LDAYtRyKfE三、概要设计 4Zzz6ZB2Ltk3.1 各模块地算法设计说明4dvzfvkwMI13.2 存储结构设计说明9rqyn14ZNXI四、详细设计 11EmxvxOtOco五、源代码 12SixE2yXPq5六、运行结果分析236ewMyirQFL七、收获与体会30kavU42VRUs八、主要参考资料30y6v3ALoS89一、设计任务与要求1.1 总体目标与任务要求制作一个订票系统, 通过此系统可以实现如下功能:1)录入:可以录入航班情况<数据可以存储在一个数据文件中, 数据结构、具体数据自定).2)查询:可以查询某个航线地情况<如 , 输入航班号 , 查询起降时间 , 起飞抵达城市 , 航班票价 , 票价折扣 , 确定航班是否满仓);可以输入起飞抵达城市, 查询飞机航班情况.3)订票:可以订票 , 如果该航班已经无票 , 可以提供相关可选择航班 <订票情况可以存在一个数据文件中 , 结构自己设定) .4 )退票:M2ub6vSTnP可退票 , 退票后修改相关数据文件;客户资料有姓名, 证件号 , 订票数量及航班情况 , 订单要有编号 .5 )修改航班信息:0YujCfmUCw当航班信息改变可以修改航班数据文件. 根据以上功能说明, 设计航班信息 ,订票信息地存储结构, 设计程序完成功能 . eUts8ZQVRd1.2 题目选择与目地意义选择这个题目地原因是 , 订票系统在现实生活中应用很广泛 , 通过这个系统可以使订票、退票等变得简便 . 与传统地人工用纸、笔来记录办理订票、退票等相比 , 使用这个系统也会增加工作效率 . 这个题目做出来地系统还是比较实用地 , 所以我选择了订票系统这个题目 . sQsAEJkW5T完成此系统 , 需要综合运用数据结构课程中学到地几种典型数据结构, 以及程序设计语言 <C 语言) , 自行实现一个较为完整地应用系统地设计与开发. 通过课程设计 , 自己通过系统分析、系统设计、编程调试 , 写实验报告等环节 , 进一步掌握应用系统设计地方法和步骤 , 灵活运用并深刻理解典型数据结构在软件开发中地应用 . 学会将知识应用于实际地方法, 提高分析和解决问题地能力, 增加综合能力. GMsIasNXkA1.3 所选题目地主要工作这个题目地主要工作是使订票系统可以录入航班情况, 查询某个航线地情况、办理订票、办理退票、修改航班信息、查询订票信息等. TIrRGchYzg二、需求分析2.1 用户需求分析用户使用此程序所要完成地工作主要为:查询所有航线信息、查看已订票客户信息、查询航线、办理订票业务、办理退票业务. 通过此系统可以方便地进行上述工作 . 7EqZcWLZNX每条航线所涉及地信息有:终点站名、航班号、飞行时间、票价、乘员定额、余票量 .已订票地客户名单信息包括姓名、订票量、舱位等级<1,2 或 3).等候替补地客户名单信息包括姓名、所需票量.查询航线功能可以根据旅客提出地终点站名输出航班号、飞行时间、票价、乘员定额、余票量 .订票业务功能根据客户提出地要求<航班号、订票数额)查询该航班票额情况, 若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于定票额,则需重新询问客户要求 .若需要 ,可登记排队候补购票 .lzq7IGf02E退票业务功能根据客户提供地情况 <航班号、姓名)为客户办理退票手续 ,然后查询该航班是否有人排队候补 ,首先询问排在第一地客户 ,若所退票额能满足他地要求 ,则为他办理订票手续 ,否则依次询问其他排队候补地客户 .zvpgeqJ1hk2.2 功能需求分析功能需求分析模块图如图 2.2.1功能模块图:图 2.2.1功能模块图2.3 系统需求分析开发环境: PC机Windows XP 系统使用软件:编写实验报告:Microsoft Office Word画图:亿图制作程序:Microsoft Visual C++ 6.0三、概要设计3.1 各模块地算法设计说明1.浏览航线信息功能 , 调用 display 函数进行输出 . 流程图如图 3.1.1 浏览航线信息流程图:图 3.1.1浏览航线信息流程图:其中 display函数地流程图如图 3.1.2 display函数流程图:图3.1.2 display函数流程图2.浏览已订票客户信息功能, 按顺序输出客户信息链表中地信息. 流程图如图 3.1.3浏览已订票客户信息功能流程图:NrpoJac3v1图 3.1.3浏览已订票客户信息功能流程图3.查询航线功能, 根据客户提出地终点站名输出航线信息. 流程图如图3.1.4查询航线流程图:图 3.1.4查询航线流程图4.办理订票业务功能, 根据客户提出地航线信息等进行订票. 流程图如图3.1.5办理订票业务功能流程图:1nowfTG4KI图 3.1.5办理订票业务功能流程图5.办理退票业务功能, 根据客户提出地航线信息等进行退票. 流程图如图3.1.6办理退票业务功能流程图:fjnFLDa5Zo图 3.1.6办理退票业务功能流程图6.主函数流程图如图 3.1.7主函数流程图:图3.1.7主函数流程图3.2 存储结构设计说明typedef struct wat_ros/*单链队列存储等候替补地客户信息*/ {char name[10]。

订票系统数据结构课程设计

订票系统数据结构课程设计

订票系统数据结构课程设计一、课程目标知识目标:1. 让学生理解订票系统中的基本数据结构,掌握线性表、树和图等数据结构在订票系统中的应用。

2. 使学生掌握如何使用数据结构优化订票系统的查询和存储效率,了解不同数据结构在系统性能上的影响。

3. 引导学生学会分析订票系统中的数据关系,并能运用所学知识设计合理的数据结构。

技能目标:1. 培养学生运用所学数据结构知识解决实际问题的能力,能够根据需求设计并实现订票系统中的数据结构。

2. 提高学生的编程实践能力,使其能够熟练运用编程语言实现订票系统相关功能。

3. 培养学生团队协作和沟通能力,能在项目中进行有效分工与协作。

情感态度价值观目标:1. 激发学生对数据结构学习的兴趣,培养其探究精神,提高学习积极性。

2. 培养学生的责任心,使其认识到数据结构在实际应用中的重要性,增强对技术应用的敬畏之心。

3. 引导学生树立正确的价值观,认识到科技进步对生活的影响,培养其热爱科学、服务社会的精神。

课程性质:本课程为高二年级信息技术课程,旨在让学生结合实际应用,深入理解数据结构知识,提高编程实践能力。

学生特点:学生已具备一定的数据结构基础,对编程有一定了解,具备基本的编程能力,但实际应用经验较少。

教学要求:结合订票系统实际应用场景,引导学生运用所学数据结构知识,培养其解决实际问题的能力。

教学过程中注重理论与实践相结合,强化编程实践,提高学生的综合运用能力。

通过项目合作,培养学生的团队协作和沟通能力。

二、教学内容1. 订票系统概述:介绍订票系统的基本功能、业务流程及在生活中的应用。

教材章节:第二章 数据结构在实际应用中的优势2. 数据结构基础知识回顾:线性表、树和图的基本概念、存储结构及操作方法。

教材章节:第三章 线性表;第四章 树;第五章 图3. 订票系统中的数据结构应用:a. 线性表在航班信息存储和查询中的应用b. 树在航空公司组织结构及航班层级关系表示中的应用c. 图在航班网络及航线规划中的应用教材章节:第六章 数据结构在实际应用中的案例分析4. 数据结构优化订票系统性能:分析不同数据结构在查询、存储等方面的性能差异,探讨优化策略。

C++数据结构课程设计订票系统

C++数据结构课程设计订票系统

XXXXXXXXXX项目名称:航空信息管理系统学生姓名:XXXXXX 学号:XXXXXXXXX 班级:XXXXXX 指导教师:XXX目录1.系统需求分析 (1)2.数据结构设计及用法说明 (2)3.详细设计和编码 (3)3.1订票模块 (3)3.2退票模块 (6)3.3录入模块 (7)3.4查询模块 (8)4.实验结果 (9)4.1主菜单界面 (9)4.2查询功能模块 (9)4.3订票功能模块 (10)4.4退票功能模块 (10)4.5录入航班信息模块 (10)5.体会 (11)参考文献 (12)附录:源程序清单 (13)1.系统需求分析本次课程设计要求使用C语言编写一个航空客运订票系统程序,根据所有内容都可以只在内存中运行可得知该模拟的航空客运订票系统不需要用文件保存相关输入,运行过程中的数据。

同时该航空客运订票系统要求模拟实际航空订票系统,具有查询航线,客票预订,办理退票,录入航班信息等基本功能。

查询航线功能根据实际分析应该具有通过用户输入的要查询终点站名输出该终点站的终点站,航班号,飞机号,飞行日期,剩余票量的功能。

订票功能应当设计能够根据用户输入的姓名和终点站,查询该终点站的余票并提示剩余票数,之后让用户输入需要订购的票数并执行相关操作。

退票功能可设计成要求用户输入姓名和航班号来查找该用户的的订票信息并打印,再询问是否退票。

录入功能是必要的,用来录入航班节点信息。

2.数据结构设计及用法说明根据该航空信息管理系统的功能要求,应当设计菜单模块,查询模块,订票模块,退票模块,录入信息模块等几个基本模块,main函数里调用菜单模块打印选项菜单,然后用switch case 接收用户选择,并依此跳转到相应模块执行。

同时,为达到能够执行一个模块后继续返回主菜单执行而不是直接退出的目的设计将菜单模块及相应子功能模块放入for死循环里,当输入5则直接退出程序。

按该系统的功能分析得出存放在系统中各项数据不需要使用排序功能,因而使用链表保存数据比用顺序表和数组要便捷并且占用内存少,所以定义linklist类型,内部有data,next 指针2个数据。

航空订票系统C++数据结构课程设计报告

航空订票系统C++数据结构课程设计报告

一.需求分析:通过此系统可以实现如下功能:1.航班信息录入每个航班信息包括航班号、起飞时间、降落时间、起飞地点、将落地点、票价、折扣、剩余票量。

通过剩余票量可以确定该航班是否已满。

2.航班信息查询通过航班号或者起飞地点、降落地点查询所需要的航班信息。

3.订票输入姓名和所要订的航班的航班号订票。

4.退票输入姓名和所订的航班的航班号办理退票。

5.修改航班信息输入航班号修改该航班的起飞和降落时间以修改航班的起降时间。

6.退出退出的同时将信息写入文件。

二.总体设计:结构体:struct flight //航班信息{int a1; //航班号string a2; //起飞时间string a3; //降落时间char a4[10]; //起飞城市char a5[10]; //降落城市int a6; //价格int a7; //票价折扣int a8; //余票}fl[10];struct customer //客户信息{char name[10]; //定义字符型数组姓名name[10]int seat; //定义整型变量座位号seatint num; //定义整型变量航班号numchar no[18]; //证件号noint ps; //订票数psstring qfs; //起飞时间qfsstring jls; //降落时间jlschar qfd[10]; //起飞城市qfdchar jld[10]; //降落城市jldint pj; //票价pj}cu[200];使用的函数:void luru(); //声明录入函数void chaxun(); //声明查询函数void chaxun1(); //声明查询方式1函数 void chaxun2(); //声明按查询方式2函数 void dingpiao(); //声明订票函数 void tuipiao(); //声明退票函数 void xiugai(); //声明修改函数 void menu(); //声明主菜单函数 void duqu(); //声明文件读取函数 void tuichu(); //声明退出并保存函数通过各个函数的调用以实现航班信息录入,航班信息查询,订票,退票,修改航班信息。

火车订票数据结构课程设计_任务书

火车订票数据结构课程设计_任务书

数据结构与数据处理应用训练课程名称:数据结构与数据处理应用训练计划学时:32学时(1周)一、课程目的1.培养运用数据结构的基本知识解决实际问题的能力;2.加深对数据结构基本知识的理解;3.发挥各人的想象能力和分析能力,拓展思维空间;4.掌握应用程序设计的基本方法;5.培养书写课程设计报告的能力。

二、课程设计内容与要求具体见附录I。

三、考核形式考核办法:结合课程设计作品、课程设计报告和平时情况评定。

评分标准:程序运行及答辩占60%,课程设计报告占20%,平时占20%。

评分等级为优秀、良好、中等、及格、不及格五个级别。

实现难度不同的课程设计,给不同的分数。

若完成项目指定功能,按对应的标准给分;若在完成指定功能的基础上,还添加扩展功能、有创意,给予一定的加分;若减少指定功能的实现或运行有错误,酌情减分。

课程设计要求独立完成,严禁抄袭,如发现雷同,一经证实,相关人都按作弊处理,没有成绩,并且上报学院。

四、应提交材料1、课程设计报告(实习报告)不少于3000字。

格式参见附录II的模板。

内容主要包括:(1) 封面。

(2) 课程设计题目、摘要、关键词。

(3) 内容与要求(说明课程设计题目的具体内容、需实现的功能及要求,若自己对系统的功能做了增减,按实际完成的功能写)。

(4) 总体设计(说明算法总体思路及由哪几大功能模块组成、各功能模块的功能介绍)。

(5) 详细设计(说明各功能模块的具体实现算法----流程图、存储结构描述、及各功能模块的参数说明)。

(6) 程序测试(给出程序运行结果截图,需包括若干组测试用例以及实现对各种情况的测试)。

(7) 总结(说明调试过程中遇到的问题是如何解决的;对设计与实现的回顾讨论与分析、改进设想;收获与体会等)。

(8) 参考文献(9) 附录(包含源程序)2、程序提交完整的工程文件。

在统一答辩完成后,每个教学班交一张光盘,包含所有学生的资料(课程设计报告与程序),每个学生的资料放在以“学号姓名”命名的文件夹中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一.订票系统
1.问题分析
通过此系统可以实现如下功能: 录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结 构、具体数据自定)。
查询:可以查询某个航线的情况(如,输入航班号,查询起降时间, 起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入 起飞抵达城市,查询飞机航班情况。 订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订 票,如果该航班已经无票,可以提供相关可选择航班。 退票: 可退票,退票后修改相关数据文件。 修改航班信息:当航班信息改变可以修改航班数据文件。 客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。 本程序是用结构体与数组来实现以上功能。 数组是有序数据的集合。数组中的每个元素都属于同一个数据类型, 用一个统一的数组名下的数组名和下标来唯一地确定数组中的元素。结 构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定 义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一 个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互 赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它 本身不是数据类型(而结构体是)。简单的说,结构体可以将不同类型的 数据组成一个有机的整体,以便于引用,而且这些组合在一个整体中的 数据是互相联系的。
do{ scanf("%c",&d); }while(d!='r'&&d!='q'&&d!='y');} if(d=='y') {n[i-1][j-1]--; l[h]=1; printf("\n订票成功!!\n"); goto loop2;} else if(d=='r') goto loop1; else goto loop2; } /******************************退票 ****************************************/ if(a=='2'){ printf("\n请填写退票详细信息.\n"); printf("\n请输入航班号(1-3):\n"); do{scanf("%d",&x); }while(x>3||x<1); printf("\n请输入旅行周日(1-7):\n"); do{scanf("%d",&y); }while(y>7||y<1); printf("\n请输入座位号:\n"); do{scanf("%d",&z); }while(z>100||z<1); printf("\n请输入您的姓名:\n"); scanf("%s",&s2); printf("\n请输入您的身份证号:\n"); scanf("%ld",&ID2); h2=x+4*y+32*z; if(T[h2].ID==0) {printf("\n该票没有被定出!\n");goto loop2;} else{ if(T[h2].ID!=ID2||strcmp(s2,T[h2].name)) {printf("信息出现矛盾!无法退票!\n");goto loop2;} else{printf("\n请输入y确认退票!回主选单请输入q!\n"); scanf("%c",&f); while(f!='y'&&f!='q'){scanf("%c",&f);} if(f=='y'){
2.5模块“查询系统”
本模块可以让实现余票查询、已订出票信息查询,此功能同样是用if语 句完成,在余票查询中还会用for语句对未订出的票的座位号进行输出。 if((T[i].ID==0||l[i]==0)&&(i-add5-add6*4)%32==0){ n55++; a4[n55]=i; } for(j=i+1;j<=n55;j++) { { for(i=j;i<=j+9;i++) printf("%5d",a4[i]/32); }
3.程序代码
#include<stdio.h> #include<string.h> struct inf { char name[20]; long ID; }; struct inf T[3232]; void main() { int c,d2,g,h,h2,i,j,k,n2,n3,x,y,z; int n4,n9,n55,add1,add5,add6,add7,add9; long ID2,d1; int n[3][7]; int k2[4][8]; char s[15]; char s2[15],s3[15]; char a,d,f,add2,add3,add4,add8,add10; int l[3232]={0},a3[100],a4[100],p3[100],a7[100],s22[100]; int n5[100],n6[100],t2[100],p2[100],a2[100],s33[100],t3[100]; int n7[10][10][10]; for(i=0;i<=2;i++) for(j=0;j<=6;j++) n[i][j]=100; /********************************开头 **************************************/ loop2: printf("\n***************************************\n"); printf(" 欢迎使用航空售票系统 \n"); printf("***************************************\n"); printf("\n1.订票\n2.退票\n3.查票\n4.查询\n5.退出\n"); printf("请输入您的选择(1-5):\n"); do{ scanf("%c",&a);}while(a!='1'&&a!='2'&&a!='3'&&a!='4'&&a!='5'); /*******************************订票
2.4模块“查票系统”
本模块可让乘客进行身份证号查询、座位号查询、姓名查询,以上三个 功能均由if语句进行比较,完成查询。在搜索比较过程中,如果输入错 误数字或代码则会有提示,要求重新输入。 printf("\n请您输入您要查询的身份证号:\n"); do{scanf("%ld",&d1);}while(d1==0); if(T[i].ID==d1&&l[i]==1){n3++;a3[n3]=i;} i++;} printf("\n请您输入您要查询的名字:\n"); scanf("%s",&s3); while(T[i].name==NULL) i++; if(strcmp(T[i].name,s3)==0&&l[i]!=0) printf("\n请您输入您要查询的座位号:\n"); do{ scanf("%d",&d2);}while(d2<1||d2>100)
2.3模块“退票系统”
退票者需要对本人信息与所退票信息尽行录入,程序会用把录入信息与 数据库中信息进行比对,如有不符项,则提示且无法进行退票。
printf("\n请输入您的身份证号:\n"); scanf("%ld",&ID2); h2=x+4*y+32*z; if(T[h2].ID==0) {printf("\n该票没有被定出!\n");goto loop2;} else{ if(T[h2].ID!=ID2||strcmp(s2,T[h2].name)) {printf("信息出现矛盾!无法退票!\n");goto loop2;} else{printf("\n请输入y确认退票!回主选单请输入q!\n&#***********************/ if(a=='1'){ loop1: {printf("共有三个航班,请您输入您的选择(1-3):\n"); do{scanf("%d",&i);}while(i>3||i<1); printf("请输入你旅行的周日代码(1-7):\n"); do{scanf("%ld",&j);}while(j>7||j<1); printf("本航班当天余票为%d张!\n",n[i-1][j-1]); printf("\n请输入您想订的座位号(1-100):\n"); do{scanf("%d",&k);}while(k>100||k<1); h=i+4*j+32*k; while(l[h]==1){ do{printf("该票已经被订,请重新输入:\n"); scanf("%d",&k);h=i+4*j+32*k;}while(k>100||k<1);} printf("请输入您的姓名:\n"); scanf("%s",&T[h].name); printf("\n请输入您的身份证号码:\n"); scanf("%ld",&T[h].ID); do{ printf("\n请输入您的目的地(1-5):\n"); printf("1.北京\n2.天津\n3.上海\n4.深圳\n5.广州\n"); scanf("%d",&c);}while(c>5||c<1); switch(c) { case 1:strcpy (s,"北京");break; case 2:strcpy (s,"天津");break; case 3:strcpy (s,"上海");break; case 4:strcpy (s,"深圳");break; case 5:strcpy (s,"广州");break; } printf("\n您的订票信息如下:\n"); printf("姓名 身份证号 航班号 飞行时间 目的地\n"); printf("\n%s %10ld %d号 周%d%10s\n",T[h].name,T[h].ID,i,j,s); printf("\n"); printf("\n 请再次检查您的信息。\n\n如果正确无误,请输入y.\n\n 重新填写,请输入r.\n\n放弃订票,回主选单输入q。\n");
相关文档
最新文档