数据结构课程设计飞机订票系统.docx
- 文档编号:10163272
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:19
- 大小:95.86KB
数据结构课程设计飞机订票系统.docx
《数据结构课程设计飞机订票系统.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计飞机订票系统.docx(19页珍藏版)》请在冰豆网上搜索。
数据结构课程设计飞机订票系统
订票系统
1.需求分析
任务:
通过此系统可以实现如下功能:
录入:
可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
查询:
可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);
可以输入起飞抵达城市,查询飞机航班情况;
订票:
(订票情况可以存在一个数据文件中,结构自己设定)
可以订票,如果该航班已经无票,可以提供相关可选择航班;
退票:
可退票,退票后修改相关数据文件;
客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:
当航班信息改变可以修改航班数据文件
要求:
根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;
2.概要设计
在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。
主菜单
0
1
2
3
4
5
6
7
8
9
输入航班的信息
列出航班的信息
按航班号查询航班信息
按城市来查询航班
订票程序
退票系统
修改飞机航班的信息
保存文件
读取文件、下载文件
退出
0.输入航班的信息
航班号
起飞城市
降落城市
出发时间
降落时间
剩下的座位
价格
折扣
1.列出航班的信息
继续y
退出n
2.按航班号查询航班信息
输入所需要查询的航班号
显示这个航班的的信息
3.按城市来查询航班
输入起飞城市
输入降落城市
显示这个航班的信息
4.订票程序
输入号码
输入名字
输入ID
需要定的票数
航班号
5.退票系统
输入航班号
输入你ID
确定退票1
否定0
6.修改飞机航班的信息
输入要修改的航班号
重新输入新的航班信息
7.保存文件
显示保存成功
详细设计
3.源程序
/******头文件(.h)***********/
#include
#include
#include
#include
#include
#defineN20
#defineQ40/*定义常数表示记录数*/
/*定义数据结构*/
/*乘客信息*/
typedefstruct
{
charnumber[10];/*编号*/
charname[10];/*姓名*/
charid[20];/*证件号*/
intcount;/*订票数*/
charflightname[10];/*乘坐航班号*/
}GUEST;
/*航班信息*/
typedefstruct
{charplanenumber[10];/*航班号*/
charcity1[20];/*起飞城市*/
charcity2[20];/*抵达城市*/
chartime1[20];/*起飞时间*/
chartime2[20];/*降落时间*/
introom;/*舱位数*/
charprice[5];/*票价*/
chardiscount[5];/*折扣*/
GUESTguest[25];
intsit;
}FLY;
/*菜单函数,函数返回值为整数,代表所选的菜单项*/
menu_select()
{
chars[80];
intc;
gotoxy(1,25);/*将光标定为在第25行,第1列*/
printf("pressanykeyentermenu......\n");/*提示压任意键继续*/
getch();/*读入任意字符*/
clrscr();/*清屏*/
gotoxy(1,1);
printf("Welcometo\n\n");
printf("TicketsBookingSystem\n\n");
printf("********************MENU*********************\n\n");
printf("0.Enterflightrecord\n");
printf("1.Listtheflightinformation\n");
printf("2.Searchflightnumber\n");
printf("3.Searchcity\n");
printf("4.Booktheticket\n");
printf("5.Quittheticket\n");
printf("6.Channgetheflightinformation\n");
printf("7.Savethefile\n");
printf("8.Loadthefile\n");
printf("9.exit\n");
printf("***********************************************\n");
do{
printf("\nEnteryouchoice(0~9):
");/*提示输入选项*/
scanf("%s",s);/*输入选择项*/
c=atoi(s);/*将输入的字符串转化为整型数*/
}while(c<0||c>9);/*选择项不在0~9之间重输*/
returnc;/*返回选择项,主程序根据该数调用相应的函数*/
}
/*输入函数*/
intenter(FLYt[])
{
inti,k,n,m,w,j;
char*s;
clrscr();/*清屏*/
printf("inputtheflight'scount(n<=40):
");/*输入航线总数*/
scanf("%d",&n);
while(n>40||n<0)
{
clrscr();
printf("inputerror!
!
!
inputagain(0 ");/*输入航线总数*/ scanf("%d",&n); } printf("inputtheflight'sinformation\n\n");/*提示信息*/ printf("flightnamestart-cityend-citystart-timeend-timeroompricediscount\n"); printf("------------------------------------------------------------------------------\n"); for(i=0;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 returnn;/*返回记录条数*/ } /*显示记录,参数为记录数组和记录条数*/ voidlist(FLYt[],intn) { inti; clrscr(); printf("flightnamestart-cityend-citystart-timeend-timeroompricediscount\n"); printf("------------------------------------------------------------------------------\n"); for(i=0;i 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("************************end*******************\n"); } /*按航班号查找记录*/ voidsearch1(FLYt[],intn) { chars[20];/*保存待查找航班名字符串*/ inti; clrscr();/*清屏*/ printf("pleaseinputtheflightnamethatyouwanttosearch: "); scanf("%s",s);/*输入待查找航班名*/ for(i=0;i { if(strcmp(s,t[i].planenumber)==0)/*记录中的航班名和待比较的是否相等*/ break;/*相等,则返回该记录的下标号,程序提前结结束*/ } if(i>n-1)/*如果整数i值大于n-1,说明没找到*/ printf("notfound\n"); else { printf("flightnamestart-cityend-citystart-timeend-timeroompricediscount\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); } } /*按起降城市查找记录*/ voidsearch2(FLYt[],intn) { chars1[20]; chars2[20]; inti; clrscr();/*清屏*/ printf("pleaseinputthestart-city: "); scanf("%s",s1);/*输入起飞城市名*/ printf("pleaseinputtheend-city: "); scanf("%s",s2);/*输入降落城市名*/ for(i=0;i { if((strcmp(s1,t[i].city1)==0)&&(strcmp(s2,t[i].city2)==0))/*记录中的城市和待比较的是否相等*/ break;/*相等,则返回该记录的下标号,程序提前结结束*/ } if(i>n-1)/*如果整数i值大于n-1,说明没找到*/ printf("notfound\n"); else { printf("flightnamestart-cityend-citystart-timeend-timeroompricediscount\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); } } /*订票*/ voidbook(FLYt[],intn) { chars[20],number1[10],name1[10],id1[20],flightname1[10]; inti,j=0,m,k,count1; clrscr();/*清屏*/ printf("Howmanyticketsdoyouwanttobook: "); scanf("%d",&m); printf("numbernameIDbook-countflightname\n");/*提示信息*/ printf("------------------------------------------------------------\n"); for(k=0;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 { 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! Nothisflight\n"); m=m+2; k++; } } } /*退票*/ voidquit(FLYt[],intn) { chars1[20],s2[20];/*保存待查找航班名和证件号字符串*/ inti,k,j,h,l,ch; clrscr();/*清屏*/ printf("pleaseinputtheflightnamethatyouwanttoquit: "); scanf("%s",s1);/*输入待查找航标名*/ printf("pleaseinputtheyourid: "); scanf("%s",s2);/*输入待查找证件号*/ printf("numbernameIDbook-countflightname\n");/*显示提示*/ printf("------------------------------------------------------------\n"); for(i=0;i { for(j=0;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("notfound\n"); else { printf("Areyousuredeleteit(1/0)\n");/*确认是否要删除*/ scanf("%d",&ch);/*输入一个整数0或1*/ if(ch==1)/*如果确认删除整数为1*/ { for(k=l+1;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("quitsuccess! ! \n");/*提示退票成功*/ } } /*修改航班信息*/ voidchannge(FLYt[],intn) { chars[20];/*要删除记录的姓名*/ inti,j; clrscr();/*清屏*/ printf("pleaseinputtheflightnamethatyouwanttochannge: ");/*提示信息*/ scanf("%s",s);/*输入航班名*/ for(i=0;i { if(strcmp(s,t[i].planenumber)==0)/*记录中的航班名和待比较的是否相等*/ break;/*相等,则返回该记录的下标号,程序提前结结束*/ } if(i>n-1)/*如果整数i值大于n-1,说明没找到*/ printf("notfound\n"); else { printf("flightnamestart-cityend-citystart-timeend-timeroompricediscount\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("pleaseinputthenewinformation: \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);/*输入折扣*/ } } /*保存资料*/ voidsave(FLYt[],intn) { inti,j; FILE*fp;/*指向文件的指针*/ if((fp=fopen("record1.txt","wb"))==NULL)/*打开文件,并判断打开是否正常*/ { printf("cannotopenfile\n");/*没打开*/ exit (1);/*退出*/ } printf("\nSavingfile\n");/*输出提示信息*/ fprintf(fp,"%d",n);/*将记录数写入文件*/ fprintf(fp,"\r\n");/*将换行符号写入文件*/ for(i=0;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,"%
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 飞机 订票 系统