数据结构课程设计飞机订票系统_第1页
数据结构课程设计飞机订票系统_第2页
数据结构课程设计飞机订票系统_第3页
数据结构课程设计飞机订票系统_第4页
数据结构课程设计飞机订票系统_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、,设计程序完成功能;2 .概要设计在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。主菜单0123456789输列出按航按订票退票修改保存读取退出入航班班号城程序系统飞机文件文航的信查询市航班件、班息航班来的信下载的信息查息文件信询息航班0.输入航班的信息航班号起飞城市降落城市出发时间降落时间剩下的座位价格折扣1.列出航班的信息继续 y退出n2.按航班号查询航班信息输入所需要查询的航班号显示这个航班的的信息3.按城市来查询航班输入起飞城市输入降落城市显示这个航班的信息4.订票程序输入号码输入名字输入ID需要定的

3、票数航班号5.退票系统输入航班号输入你ID确定退票1否定 06.修改飞机航班的信息输入要修改的航班号重新输入新的航班信息7.保存文件显示保存成功详细设计3.源程序/*头文件(.h)*#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>#include <ctype.h>/*I/O 函数*/*其它说明*/*字符串函数*/*屏幕操作函数*/*字符操作函数*/#define N 20#define Q 40 /*定义常数表示记录数*/*定义数据结

4、构*/*乘客信息*/typedef structchar name10; /*姓名 */char id20;/*证件号*/int count;/*订票数*/char flightname10;/* 乘坐航班号*/GUEST;/*航班信息 */typedef structchar planenumber10;/* 航班号 */char city120;/*起飞城市*/char city220;/*抵达城市*/char time120;/*起飞时间*/char time220;/*降落时间*/int room;/* 舱位数 */char price5;/*票价*/char discount5;/*

5、折扣*/GUEST guest25;int sit;FLY;*/*菜单函数,函数返回值为整数,代表所选的菜单项menu_select()char s80;int c;gotoxy(1,25);/*将光标定为在第25行,第1列*/printf("press any key enter menun");/*fel示压任意键继续 */getch(); /*读入任意字符*/clrscr(); /*清屏 */gotoxy(1,1);printf("Welcome tonn");printf("Tickets BookingSystemnn");

6、printf("*MENU*nn");printf("printf("printf("printf("printf("printf("printf("informationn");printf("0. Enter flight recordn");1. List the flight informationn");2. Search flightnumbern");3. Search cityn");4. Book the ticketn&quo

7、t;);5. Quit the ticketn");6. Channge the flight7. Save the filen");printf("8. Load the filen");printf("9. exitn");printf("*n");doprintf("n Enter you choice(09):"); /*提示输入选项*/scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/while(c<0|c

8、>9); /* 选择项不在09之间重输*/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<

9、=40):");/* 输入航线总数*/scanf("%d",&n);printf("input the flight's informationnn");/* 提示信息 */printf("flightname start-city end-city start-time end-time room price discountn");n");for(i=0;i<n;i+)scanf("%s",ti.planenumber);/* 输入姓名 */gotoxy(13,6+i)

10、;/* 光标跳到地址栏*/scanf("%s",ti.city1);/* 输入起飞城市*/gotoxy(25,6+i);scanf("%s",ti.city2);/* 输入降落城市*/gotoxy(36,6+i);scanf("%s",ti.time1);/* 输入起飞时间*/gotoxy(47,6+i);scanf("%s",ti.time2);/* 输入降落时间*/gotoxy(57,6+i);scanf("%d",&ti.room);/* 输入舱位数*/gotoxy(64,6+i)

11、;scanf("%s",ti.price);/* 输入票价*/gotoxy(73,6+i);scanf("%s",ti.discount);/* 输入折扣*/printf("n");for(i=0;i<n;i+)ti.sit=0;return n; /*返回记录条数*/*显示记录,参数为记录数组和记录条数*/void list(FLY t,int n)int i;clrscr();printf("flightname start-city end-city start-time end-timeroomprice di

12、scountn");n");for(i=0;i<n;i+) printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7sn",ti.planenumber,ti.city1,ti.city2,ti.time1,ti.time2,ti.room,ti.price,ti.discount);printf( * *end *n");/*按航班号查找记录*/ void search1(FLY t,int n)char s20;/*保存待查找航班名字符串*/int i;clrscr(); /*清屏 */printf(&

13、quot;please input the flightname that you want to search:");scanf("%s",s); /*输入待查找航班名*/for(i=0;i<n;i+)/* 从第一条记录开始,直到最后一条*/if(strcmp(s,ti.planenumber)=0) /* 记录中的航班名和待比较*/break;/*相等,则返回该记录的下标号,程序提前结结束*/if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("not foundn");elseprintf("

14、flightname start-city end-city start-time end-time room price discountn"); /* 显示记录*/n");printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7sn",ti.planenumber,ti.city1,ti.city2,ti.time1,ti.time2,ti.room,ti.price,ti.discount);/*按起降城市查找记录*/void search2(FLY t,int n)char s120;char s220;int i

15、;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,ti.city1)=0)&&(strcmp(s2,ti.city2)=0)/* 记录中的城市和待比较的是否

16、相等*/break; /*相等,则返回该记录的下标号,程序提前结结束*/if(i>n-1)/*如果整数i值大于n-1,说明没找到*/printf("not foundn");elseprintf("flightname start-city end-city start-time end-timeroomprice discountn"); /* 找到,显示记录*/n");printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7sn",ti.planenumber,ti.city1,ti

17、.city2,ti.time1,ti.time2,ti.room,ti.price,ti.discount);/*订票*/void book(FLY t,int n)char s20,number110,name110,id120,flightname110;int i,j=0,m,k,count1;clrscr(); /*清屏 */printf("How many tickets do you want to book:");scanf("%d",&m);printf("number nameIDbook-countflightnam

18、en"); /* 提示信息*/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&qu

19、ot;,flightname1);/* 输入航班号 */for(i=0;i<n;i+)/* 从第一条记录开始,直到最后一条*/if(strcmp(flightname1,ti.planenumber)=0) /* 记录中的航班名和待比较的是否相等*/j=ti.sit;strcpy(ti.guestj.number,number1);strcpy(,name1);strcpy(ti.guestj.id,id1);ti.guestj.count=count1;strcpy(ti.guestj.flightname,flightname1);ti.room=ti.r

20、oom-count1;ti.sit+;break; /*相等,则返回该记录的下标号,程序提前结结束*/if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("Sorry!No this flightn");m=m+2;k+;/*退票 */void quit(FLY t,int n)char s120,s220;/*保存待查找航班名和证件号字符串*/int i,k,j,h,l,ch;clrscr();/*清屏*/printf("please input the flightname that you want to quit:"

21、);scanf("%s",s1); /*输入待查找航标名*/printf("please input the your id:");scanf("%s",s2); /*输入待查找证件号*/printf("numbernameIDbook-countprintf("n");for(i=0;i<n;i+)/* 从第一条记录开始,直到最后一条*/for(j=0;j<ti.sit;j+)if(strcmp(s1,ti.guestj.flightname)=0)&&(strcmp(s2,

22、ti.guestj.id)=0)printf("%-11s%-16s%-16s%-14d%-10sn",ti.guestj.number,,ti.guestj.id,ti.guestj.count,ti.guestj.flightname);ti.room=ti.room+ti.guestj.count;l=j;h=i;break;i=h;if(i>n-1)/*如果整数i值大于n-1,说明没找到*/printf("not foundn");elseprintf("Are you sure delete it(1

23、/0)n"); /*确认是否要删除*/scanf("%d",&ch); /* 输入一个整数0 或 1*/if(ch=1) /*如果确认删除整数为1*/for(k=l+1;k<ti.sit;k+)strcpy(ti.guestk-1.number,ti.guestk.number); /* 将后一条记录的姓名拷贝到前一条*/strcpy(,);strcpy(ti.guestk-1.id,ti.guestk.id);ti.guestk-1.count=ti.guestk.count;strcpy

24、(ti.guestk-1.flightname,ti.guestk.flightname);ti.sit-;printf("quit success!n");/* 提示退票成功*/*修改航班信息*/void channge(FLY t,int n)char s20; /*要删除记录的姓名*/int i,j;clrscr(); /*清屏 */printf("please input the flightname that you want to channge:"); /* 提示信息 */scanf("%s”,s);/*输入航班名 */for(i

25、=0;i<n;i+)/* 从第一条记录开始,直到最后一条*/if(strcmp(s,ti.planenumber)=0) /* 记录中的航班名和待比较的是否相等*/break; /*相等,则返回该记录的下标号,程序提前结结束*/if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("not foundn");elseprintf("flightname start-city end-city start-time end-timeroom price discountn"); /* 找到,显示原先记录*/n")

26、;printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7sn",ti.planenumb er,ti.city1,ti.city2,ti.time1,ti.time2,ti.room,ti.price,ti.discount);printf("please input the new information:n");scanf("%s",ti.planenumber);/* 输入航班名 */gotoxy(13,6+i);/* 光标跳到地址栏*/scanf("%s",ti.city1

27、);/* 输入起始城市*/gotoxy(25,6+i);scanf("%s",ti.city2);/* 输入终点城市*/gotoxy(35,6+i);scanf("%s",ti.time1);/* 输入起飞时间*/gotoxy(47,6+i);scanf("%s",ti.time2);/* 输入降落时间*/gotoxy(57,6+i);scanf("%d",ti.room);/* 输入座位号*/gotoxy(64,6+i);scanf("%s",ti.price);/* 输入票价*/gotoxy

28、(71,6+i);scanf("%s",ti.discount);/* 输入折扣*/*保存资料 */void save(FLY t,int n)int i,j;FILE *fp; /*指向文件的指针*/if(fp=fopen("record1.txt","wb")=NULL) /*打开文件,并判断打开是否正常*/printf("can not open filen");/* 没打开 */exit(1); /*退出 */printf("nSaving filen"); /* 输出提示信息*/fpr

29、intf(fp,"%d",n); /*将记录数写入文件*/fprintf(fp,"rn"); /*将换行符号写入文件*/for(i=0;i<n;i+)fprintf(fp,"%s %s %s %s %s %d %s %s",ti.planenumber,ti.city1,ti.city2,ti.time1,ti.time2,ti.room,ti.price,ti.discount);fprintf(fp,"rn");/*将换行符号写入文件*/fprintf(fp,"%d",ti.sit);

30、 /* 将记录数写入文件*/fprintf(fp,"rn");/*将换行符号写入文件*/for(j=0;j<ti.sit;j+)fprintf(fp,"%s %s %s %d %s",ti.guestj.number,,ti.guestj.id,ti.guestj.count,ti.guestj.flightname);/* 格式写入记录*/fprintf(fp,"rn"); /* 将换行符号写入文件*/fclose(fp);/* 关闭文件*/printf("*save success*n&

31、quot;); /* 显示保存成功*/*读入函数,参数为结构体数组*/int load(FLY t)int i,n,j;FILE *fp; /* 指向文件的指针*/if(fp=fopen("record1.txt","rb")=NULL)/* 打开文件*/printf("can not open filen"); /*不能打开 */exit(1); /*退出 */fscanf(fp,"%d",&n); /* 读入记录数*/for(i=0;i<n;i+)fscanf(fp,"%s %s %s

32、%s %s %d %s %s",t i.planenumber,ti.city1,ti.city2,ti.time1,ti.time2,&ti.room,ti.pric e,ti.discount);fscanf(fp,"%d",&ti.sit); /* 读入记录数*/for(j=0;j<ti.sit;j+)fscanf(fp,"%s %s %s %d %s",ti.guestj.number,ti.gues ,ti.guestj.id,&ti.guestj.count,ti.guestj.fligh

33、tname); /*按 格式读入记录*/fclose(fp); /* 关闭文件*/printf("You have success read data from file!nnnn"); /* 显示保存成功 */ return n; /*返回记录数*/*主函数 */ main() int i;FLY flightQ;int length; /*保存记录长度*/clrscr(); /*清屏 */textcolor(YELLOW); /* 字体颜色*/textbackground(BLUE);/* 背景颜色*/for(;)/* 无限循环*/switch(menu_select(

34、) /*调用主菜单函数,返回值整数作开关语句的条件*/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(flig

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论