收藏 分享(赏)

数据结构课程设计实验报告--机票管理系统.doc

上传人:精品资料 文档编号:10773208 上传时间:2020-01-08 格式:DOC 页数:56 大小:230.22KB
下载 相关 举报
数据结构课程设计实验报告--机票管理系统.doc_第1页
第1页 / 共56页
数据结构课程设计实验报告--机票管理系统.doc_第2页
第2页 / 共56页
数据结构课程设计实验报告--机票管理系统.doc_第3页
第3页 / 共56页
数据结构课程设计实验报告--机票管理系统.doc_第4页
第4页 / 共56页
数据结构课程设计实验报告--机票管理系统.doc_第5页
第5页 / 共56页
点击查看更多>>
资源描述

1、0数据结构课程设计实验报告1目录一.设计要求及分析2二.数据结构设计3三.主要功能函数设计4四.源代码4五.运行与测试30六.实验小结35七.参考文献362一.设计要求及分析:首先建立 1 个航班信息表,乘客信息表在程序运行过程中建立。在飞机航班数据的信息模型中,航班号是主关键字,例如 CZ3869,其中 CZ 是航空公司的别称,用两个大写字母表示,后 4 位为航班编号。设计要求(1)建立飞机航班信息表,按航班号有序,用文件保存;乘客信息表按航班号和姓名有序,用文件保存;每个航班记录包括十项,分别是:航班号、起点、终点、班期、起飞时间、到达时间、飞机型号、票价、总票、余票等,例如航班信息表如下

2、表所示。3航班号 起点 终点 班 期 起飞时间 到达时间 机 型 票 价 总票 余票CA1544 合肥 北京 1,2,4,5 1055 1240 733 960 200 MU5341 上海 广州 每 日 1420 1615 M90 1280 160 CZ3869 重庆 深圳 2,4,6 0855 1035 733 1010 200 MU3682 桂林 南京 2,3,4,6,7 2050 2215 M90 1380 160 HU1836 上海 北京 每 日 0940 1120 738 1250 230 CZ3528 成都 厦门 1,3,4,5,7 1510 1650 CRJ 1060 130 M

3、U4594 昆明 西安 1,3,5,6 1015 1140 328 1160 100 SC7425 青岛 海口 1,3,6 1920 2120 DH4 1630 180 其中余票字段可定义为数组int yp8;yp0不用, yp1存放班期 1(星期一)的余票数,类推,无班期则放 0。每个航班可按如下格式显示:航班号 起点 终点 班期 起飞时间 到达时间 飞机型号 票价 总票 余票CA1544 合肥 北京 1,2,4,5 1055 1240 733 960 200 1-602-804-565-66每个乘客记录包括:身份证、姓名、性别、航班号、班期、手机号等。(2)程序运行后,出现登录界面, (参

4、考通讯录管理系统)选择管理者和普通乘客;(3)选择普通乘客需要输入身份证号和登录密码,只能做查询类工作和购票、退票操作;4(4)选择管理者需要输入登录密码,如连续输错3次密码,则被退出系统;管理员可做所有操作。菜单设计可分航班信息管理和乘客信息管理(可参考图书管理系统 ), (a) 航班信息管理可实现:1. 增加航班记录2. 查询航班信息- a.按航班号查询 b. 按起点和终点查询 3. 删除航班记录4. 修改航班信息5. 显示全部航班信息0. 返回上层菜单(b) 乘客信息管理可实现:1. 查询乘客信息- a.按身份证号查询 b.按姓名查询 c.按航班号查询2. 购票(增加乘客记录)3. 退票

5、(删除乘客记录)4. 修改乘客信息5. 显示全部乘客信息0. 返回上层菜单根据以上菜单项设计相应的功能函数。每次执行完相应的功能后能返回主菜单。分析:购票需要输入身份证号,姓名、性别、航班号、班期、手机号等,先判断相应航班号的班期的余票数,不为 0 则增加一条乘客记录,并修改相应航班号的班期的余票数,否则不能购票;5退票时需要输入身份证号,可得到乘客信息,修改相应航班号的班期的余票数,并删除该乘客信息记录。2.数据结构设计struct air /定义航班结构体数组char num20; /定义航班号char start20; /定义起点char over20; /定义终点char banqi2

6、0; /定义班期char time120; /定义起飞时间char time220; /定义到达时间char type20; /机 型 char price20; /价?格?int xcl; /票数struct air *next;lineinfo;struct guest /定义乘客结构体数组int idnum; /身份证号char gname20; /名字char gender20; /定义机票结构体数组int pnum; /定义机票结构体数组6char num20; /定义机票结构体数组char banqi20; /定义机票结构体数组struct guest *next; / 定义机票结

7、构体数组;三.主要功能函数设计1. 增加航班记录void addair() 添加(增加航班信息)2. 查询航班信息- a.按航班号查询 b. 按起点和终点查询 void chaxunts() 查询函数,可以按航班号查询 及按起点和终点查询 3. 删除航班记录void shanchu() 删除航班信息4. 显示全部航班信息void xianshixinxi() 显示全部航班信息0. 返回上层菜单(b) 乘客信息管理可实现:1. 查询乘客信息- a.按身份证号查询 b.按姓名查询 c.按航班号查询void xianshixinxi2() 可实现按身份证号查询和按姓名查询及按航班号查询2. 购票(增

8、加乘客记录)void dingpiao()3. 退票(删除乘客记录)void tuipiao()4. 显示全部乘客信息void lvke()70. 返回上层菜单四.源代码:#include #include #include #include #include #define LEN sizeof(struct air)#define LEN1 sizeof(struct guest)#define NULL 0int chcode();struct air /定义结构体数组char num20; /定义航班号char start20; /航班起始站char over20; /终点站char

9、banqi20; /班期char time120; /起飞时间char time220; /到达时间char type20; /机型char price20; /价格int xcl; /票数struct air *next;struct guest /定义结构体数组8int idnum; /身份证号char gname20; /名字char gender20; /性别int pnum;char num20;char banqi20;struct guest *next;void mainmenu() /显示主菜单 system (“cls“);printf(“ “);printf(“tttt

10、1.航班信息管理系统nn“);printf(“tttt 2.旅客订退票系统nn“);printf(“tttt 3.退出系统nn“);printf(“ttt 请按键选择,回车确定n“);printf(“ “);printf(“=“);return ;void menu1() /显示航班信息菜单 system (“cls“);printf(“=“);printf(“ 9“);printf(“tttt 1.增加航班信息nn“);printf(“tttt 2.删除航班信息nn“);printf(“tttt 3.航班查询nn“);printf(“tttt 4.航班信息一览nn“);printf(“ttt

11、t 5.返回上一层nn“);printf(“ttt 请按键选择,回车确定n“);printf(“ “);printf(“=“);return ;void menu2() /显示航班查询菜单 system (“cls“);printf(“=“);printf(“ “);printf(“tttt 1.航班号查询nn“);printf(“tttt 2.起点和终点查询nn“);printf(“ttt 请按键选择,回车确定n“);printf(“ “);printf(“=“);return ;void menu7() /显示航班查询菜单10 system (“cls“);printf(“=“);prin

12、tf(“ “);printf(“tttt 1.身份证号查询nn“);printf(“tttt 2.姓名查询nn“);printf(“tttt 3.航班号查询nn“);printf(“ttt 请按键选择,回车确定n“);printf(“ “);printf(“=“);return ;void main()/主函数,调用main1void main1();main1();void main1()/main1函数void tsgxx();/声明void dingpiaoxitong();/声明char choose;mainmenu();scanf(“%c“,switch(choose)/功能函数选

13、择 11case 1: int login;login = chcode();tsgxx();break;case 2:dingpiaoxitong();break;case 3:system (“cls“);printf(“nnnnnnnnntttt 已退出系统“);getch();exit(0);system (“cls“);break;int chcode() char pw50,ch;char *syspw = “abc“; / 原始密码int i,m = 0; printf(“请输入密码:“); while(m 0) printf(“b b“);-i;else if(ch != b)

14、 pwi+ = ch;printf(“*“);12pwi = 0;printf(“n“);if(strcmp(pw,syspw) != 0) printf(“密码错误,请重新输入!n“);m+;else printf(“密码正确!n“);system(“pause“);return 1;printf(“连续3次输入错误,已经退出!n“);system(“pause“);return 0; void tsgxx()/航班信息函数 void addair();void shanchu();void chaxunts();void xianshixinxi();/函数声明char choose;me

15、nu1();/调用菜单函数scanf(“%c“,scanf(“%c“,13for (;)switch(choose)/功能函数选择 case 1:addair();break;case 2:shanchu();break;case 3:chaxunts();break;case 4:xianshixinxi();break;case 5:main1();break; int tjzs()/统计文本个数函数 FILE *fp;int txcl=0,n;char tnum20=0,tstart20=0,tover20=0,tbanqi20=0,time120=0,time220=0,ttype20

16、=0,tprice20=0;fp=fopen(“air.txt“,“r“);/打开文件for (n=1;!feof(fp);n+)/逐个读文件fscanf(fp,“%s %s %s %s %s %s %s %s %d “,tnum,tstart,tover,tbanqi,time1,time2,ttype,tprice, /n-;fclose(fp);/关闭文件return (n);/返回个数int tjdzzs()/统计文本个数函数FILE *fp;14int idnum=0,n;char gname20=0,num20=0,gender20=0,banqi20=0,pnum20=0;fp=

17、fopen(“guest.txt“,“r“);/打开文件for (n=0;!feof(fp);n+)/逐个读文件fscanf(fp,“%d %s %s %s %s %d “,fclose(fp);/关闭文件return (n);/返回个数void addair()/增加航班信息 FILE *fp;int xcl=0,n=0;char num20=0,start20=0,over20=0,banqi20=0,time120=0,time220=0,type20=0,price20=0;char hitkey=0;system (“cls“);if (fp=fopen(“air.txt“,“r“)

18、=NULL)/打开航班文件,不存在此文件则新建 fp=fopen(“air.txt“,“w“);fclose(fp); fp=fopen(“air.txt“,“a“);printf(“nt请按以下格式输入航班信息: n航班号 起点 终点 班期 起飞时间 到达时间 飞机型号 票价 余票:n“);/按格式输入航班信息for (;hitkey!=27;)/循环输入 if (n!=0)printf(“请输入:“);scanf(“%s%s%s%s%s%s%s%s%d“,num,start,over,banqi,time1,time2,type,price,15fprintf(fp,“%s %s %s %

19、s %s %s %s %s %dn“,num,start,over,banqi,time1,time2,type,price,xcl);printf(“继续输入请按回车,结束输入请按escn“);n+;hitkey=getch();for (;hitkey!=13)hitkey=getch();fclose(fp);fp=fopen(“air.txt“,“r“);printf(“nnnnnnttt保存成功,按任意键返回上一层!“);getch();tsgxx();/返回上一层void shanchu()/删除航班信息函数 struct air *head=NULL;struct air *p,

20、*p1,*p2;int txcl=0,n=0,j,i;char num20=0,ttnum20=0,tnum20=0,tstart20=0,tover20=0,tbanqi20=0,ttime120=0,ttime220=0,ttype20=0,tprice20=0;char hitkey=0;FILE *fp;if (fp=fopen(“air.txt“,“r“)=NULL)/打开文件 system (“cls“);printf(“nnnnnnnnnttt记录文件不存在!按任意键返回.“);getch();tsgxx();16else system (“cls“);printf(“nnnnn

21、nnntt请输入你要删除的航班号:“);/输入删除航班号scanf(“%s“,printf(“tt确认删除请回车,取消请按escn“);hitkey=getch();for (;hitkey!=13)hitkey=getch();if (hitkey=27)tsgxx();fp=fopen(“air.txt“,“r“);for (j=0;!feof(fp);)/读文件夹信息,统计个数 j+;fscanf(fp,“%s%s%s%s%s%s%s%s%d“,tnum,tstart,tover,tbanqi,ttime1,ttime2,ttype,tprice, fclose(fp);fp=fopen

22、(“air.txt“,“r“);for (i=1;inext=p1;p2=p1;p1=(struct air*)malloc(LEN);/新建链表strcpy(p1-num,num);/复制航班号strcpy(p1-start,tstart);/复制strcpy(p1-over,tover);/复strcpy(p1-banqi,tbanqi);/复strcpy(p1-time1,ttime1);/复strcpy(p1-time2,ttime2);/复strcpy(p1-type,ttype);/复strcpy(p1-price,tprice);/复p1-xcl=txcl;/复制个数 if (n

23、=0) head=NULL;elsep2-next=p1;p1-next=NULL;18fclose(fp);fp=fopen(“air.txt“,“w“);/清空文件fclose(fp);fp=fopen(“air.txt“,“a“);/追加文件p=head;for (;p!=NULL;)/把链表内容覆盖到文件fsntf(fp,“%s %s %s %s %s %s %s %s %d n“,p-num,p-start,p-over,p-banqi,p-time1,p-time2,p-type,p-price,p-xcl);p=p-next; fclose(fp);/关闭文件system (“c

24、ls“);printf(“nnnnnnnntt 删除成功 ntt按任意键返回上一层n“);getch();/返回上一层tsgxx();void chaxunts()/查询航班信息函数FILE *fp;char choose;int txcl=0,n=0,k=0,i,l;char 19tnum20=0,tstart20=0,tover20=0,tbanqi20=0,ttime120=0,ttime220=0,ttype20=0,tprice20=0,ttnum20=0,ttstart20=0,ttover20=0,ttbanqi20=0,tttime120=0,tttime220=0,tttyp

25、e20=0,ttprice20=0;if (fp=fopen(“air.txt“,“r“)=NULL)/打开文件 system (“cls“);printf(“nnnnnnnnnttt记录文件不存在!按任意键返回.“);getch();tsgxx();l=tjzs();/获得文件个数menu2();/调用菜单函数scanf(“%c“,scanf(“%c“,/选择查询方式if (choose=5)return;else if (choose=1)/航班号查询 system (“cls“);printf(“请输入航班号:“);scanf(“%s“,ttnum);elseif (choose=2)/

26、起点终点查询 system (“cls“);printf(“请输入起点和终点:“);scanf(“%s%s“,ttstart,ttover);system (“cls“);for (i=0;inext=p1;p2=p1;p1=(struct air*)malloc(LEN);/新建链表strcpy(p1-num,tnum); /复制航班号strcpy(p1-start,tstart);/复制strcpy(p1-over,tover);/复strcpy(p1-banqi,tbanqi);/复strcpy(p1-time1,ttime1);/复strcpy(p1-time2,ttime2);/复s

27、trcpy(p1-type,ttype);/复strcpy(p1-price,tprice);/复p1-xcl=txcl;/复 if (n=0)head=NULL; 27elsep2-next=p1;p1-next=NULL;fclose(fp);fclose(fp);fp=fopen(“air.txt“,“r“);p=head;/printf(“%s“,p-num);for (;p!=NULL;)/读链表if(!(strcmp(p-num,tnum)/航班号相同28flag=1;/标记取1loop=p-xcl;/现存量减1(p-xcl)-;p=p-next;if(flagfclose(fp)

28、;fp=fopen(“air.txt“,“a“);p=head;for (;p!=NULL;)fprintf(fp,“%s %s %s %s %s %s %s %s %d n“,p-num,p-start,p-over,p-banqi,p-time1,p-time2,p-type,p-price,p-xcl);p=p-next;29 free(p);/把链表内容覆盖文件fclose(fp);if(flagfclose(fp3); fp3=fopen(“guest.txt“,“a“); if (n!=0)printf(“nnnnnnttt请按以下格式输入旅客信息:tttt 身份证号 姓名 性别 航班号 班期 手机号n请输入:“);/录入旅客信息

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报