为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

飞机票订票系统

2017-09-02 50页 doc 387KB 24阅读

用户头像

is_079973

暂无简介

举报
飞机票订票系统飞机票订票系统 软件课程设计报告 班级:光电0905 姓名:彭应钦 学号:U200914197 1 目录 1软件设计 .............................................................................................. 3 1.1主要功能 .................................................................................... 3 1.2程序模...
飞机票订票系统
飞机票订票系统 软件课程设计报告 班级:光电0905 姓名:彭应钦 学号:U200914197 1 目录 1软件设计 .............................................................................................. 3 1.1主要功能 .................................................................................... 3 1.2程序模块 .................................................................................... 3 1.3结构体 ........................................................................................ 3 1.4文件指针定义............................................................................. 4 1.5函数声明 .................................................................................... 4 1.6流程图 ........................................................................................ 5 1.7说明 .......................................................................................... 15 2软件测试 ............................................................................................ 16 3算法改进 ............................................................................................ 24 4开发体会 ............................................................................................ 24 附录:源代码清单 ............................................................................... 25 2 1软件设计 1.1主要功能 本程序最多支持管理100个航班信息,10000机票信息,管理员可以进行航班信息的输入、单个或全部航班信息的删除、航班信息查询、旅客信息输入、机票信息查询、机票订购以及机票退订等功能,其中航班信息查询支持按航班号查询以及按目的地和起飞时间查询两种方式,机票信息查询支持按航班号查询、按旅客姓名查询以及按机票编号查询三种方式。程序运行开始时要输入管理员密码(默认为U200914197),通过后可以自由进行操作,但需要按提示操作。 具体功能如下: 1. 菜单 ?主菜单 ?航班信息查询方式菜单 ?航班信息维护方式菜单 ?机票信息查询方式菜单 2. 文件读取 ?本地航班信息读取 ?本地机票信息读取 3. 文件保存 ?本地航班信息保存 ?本地机票信息保存 4. 信息输入 ?航班信息输入 ?机票信息输入 5. 查询 ?航班信息查询 ?机票信息查询 6. 航班信息维护 7. 订票与退票 1.2程序模块 1. 菜单模块 ?主菜单 ?航班信息查询方式菜单 ?航班信息维护方式菜单 ?机票 信息查询方式菜单 2. 文件读取模块 ?本地航班信息读取 ?本地机票信息读取 3. 文件保存模块 ?本地航班信息保存 ?本地机票信息保存 4. 信息输入模块 ?航班信息输入 ?机票信息输入 5. 查询模块 ?航班信息查询 ?机票信息查询 6. 航班信息维护模块 7. 订票与退票模块 1.3结构体 struct FLIGHT // 航班信息结构 { char flight_num[10];//航班号 char start[10];//出发地 3 char destination[10];//目的地 char takeoff_time[8];//起飞时刻 char arrive_time[8];//到达时刻 unsigned int num;//总票数 unsigned int left;//剩余票数 unsigned int price;//价格 }; struct TICKET // 机票信息结构{ char flight_num[10];//航班号 char ticket_num[10];//机票编号 char start[10];//出发地 char destination[10];//目的地 char takeoff_time[8];//起飞时刻 char arrive_time[8];//到达时刻 char gate_num[5];//登机口 char seat_num[10];//座位号 char name[10];//姓名 char sex[4];//性别 char id_num[20];//身份证号 char phone_num[16];//联系电话 }; struct FLIGHT all[M]; //航班结构数组 struct FLIGHT *pp; //指向航班的结构数组 struct TICKET passenger[N]; //机票信息结构数组 struct TICKET *qq; // 1.4文件指针定义 FILE *fp_flight_info,*fp_ticket_info;//航班信息文件指针,机票信息文件指针 1.5函数声明 void flight_info_input();//航班信息输入函数 void flight_info_delete();//单个航班信息删除 void flight_info_deleteall();//全部航班信息删除 void ticket_info_input(struct FLIGHT *p);//机票信息输入 void ticket_book();//机票订购 void ticket_cancel();//机票退订 4 void fileread1();//读取本地航班信息 void fileread2();//读取本地机票信息 void filesave1();//保存本地航班信息 void filesave2();//保存本地机票信息 void search_flight_num();//按航班号查询航班信息 void search_destination_time();//按目的地和起飞时间查询航班信息 void search_ticket_flight_num();//按航班号查询机票信息 void search_ticket_name();//按旅客姓名查询机票信息 void search_ticket_num();//按机票编号查询机票信息 void rootmenu();//主菜单 void menu1();//航班信息查询方式菜单 void menu2();//航班信息维护方式菜单 void menu3();//机票信息查询方式菜单 1.6流程图 按航班号 按目的地和起飞时航班信息查询 间 退出 按航班号查询 旅客信息查询 按姓名查询 按机票号查询 机票订购 飞退出 系 机统 票总 系体 统 结机票退订 构 航班信息输入 单个航班信息删除 航班信息维护 全部航班信息删除 退出 保存退出 5 开始 显示说明以及提示。int x=0; 输入密码 否 判断密码是否正确 x++; 是 否 x==3; pp=&all[0];qq=&passenger[0]; fileread1();fileread2(); 是 rootmenu(); 结束 结束 main函数流程图 6 开始 显示菜单 给c赋值 否 c>='1'&&c<='6' 是 switch(c) ‘4’ ‘6’ ‘3’ ‘5’ ‘2’ ‘1’ 保存退出 订票 退票 航班维护 菜单一 menu1(); 菜单三 结束 主菜单void rootmenu()流程图 menu1,menu2,menu3的流程图与主菜单的流程图一样,不再重复。 7 开始 能否打开文件新建指针返回 文件开头 初值 否 关闭文件能否读取一个 能 结束continue; pp++, flinum++ 本地文件读取 航班信息读取与机票信息读取流程图是一样的,不再重复。 8 开始 否能否打开文件显示提示 能 指针返回 文件开头 写文件 关闭文件 结束 本地文件保存 9 开始 1 非0 相关数据的 输入 显示提示 是 否 菜单cc=='Y' 结束 航班信息输入 10 开始 显示提示 相关数据 的输入 否 cc=='Y'菜单 是 显示提示 否 显示菜单结束cc1=='Y' 是 k=i-1; pP=pp-1; k #include #include#define M 100 //所支持的航班最大数量 #define N 10000 //所支持的机票最大数量 struct FLIGHT // 航班信息结构 { char flight_num[10];//航班号 char start[10];//出发地 char destination[10];//目的地 char takeoff_time[8];//起飞时刻 char arrive_time[8];//到达时刻 unsigned int num;//总票数 unsigned int left;//剩余票数 unsigned int price;//价格 }; struct TICKET // 机票信息结构 { char flight_num[10];//航班号 char ticket_num[10];//机票编号 char start[10];//出发地 char destination[10];//目的地 char takeoff_time[8];//起飞时刻 char arrive_time[8];//到达时刻 char gate_num[5];//登机口 char seat_num[10];//座位号 char name[10];//姓名 char sex[4];//性别 char id_num[20];//身份证号 char phone_num[16];//联系电话 }; struct FLIGHT all[M]; //航班结构数组 struct FLIGHT *pp; //指向航班的结构数组 struct TICKET passenger[N]; //机票信息结构数组 struct TICKET *qq; // FILE *fp_flight_info,*fp_ticket_info;//航班信息文件指针,机票信息文件 指针 static int flinum=0,ticnum=0;//外部静态型变量,分别用来计数航班数量与 机票数量 char str[8]={"B1"};//用来组合生成机票编号 25 void flight_info_input();//航班信息输入函数 void flight_info_delete();//单个航班信息删除 void flight_info_deleteall();//全部航班信息删除 void ticket_info_input(struct FLIGHT *p);//机票信息输入 void ticket_book();//机票订购 void ticket_cancel();//机票退订 void fileread1();//读取本地航班信息 void fileread2();//读取本地机票信息 void filesave1();//保存本地航班信息 void filesave2();//保存本地机票信息 void search_flight_num();//按航班号查询航班信息 void search_destination_time();//按目的地和起飞时间查询航班信息 void search_ticket_flight_num();//按航班号查询机票信息 void search_ticket_name();//按旅客姓名查询机票信息 void search_ticket_num();//按机票编号查询机票信息 void rootmenu();//主菜单 void menu1();//航班信息查询方式菜单 void menu2();//航班信息维护方式菜单 void menu3();//机票信息查询方式菜单 void main() { printf(" 说明:此程序中除使用的地名人名性别用中文 \n");//系统说明 printf(" 输入外,其他全用英文输入,时间请使 \n"); printf(" 用24时制且按 09:08的格式输入。为了 \n"); printf(" 更流畅地使用请按提示操作。正常的程 \n"); printf(" 序退出只能使用主菜单下的保存退出, \n"); printf(" 否则输入的信息将丢失~ \n"); system("pause"); char code[16]; int x=0; begin: printf("\n请输入管理员密码,连续三次错误将退出程序(初始为U200914197)\n");//密码保护 gets(code); if(strcmp("U200914197",code)!=0) { x++; if(x==3) 26 { exit(1); } goto begin; } pp=&all[0];//指针赋初值 qq=&passenger[0]; fileread1();//本地文件读取 fileread2(); rootmenu(); } /***************************主菜单*******************************/ void rootmenu() { begin: fflush(stdin); system("cls"); printf("*****************************欢迎使用飞机票销售系统 *****************************"); printf("* *"); printf("* 1.航班信息查询 *"); printf("* 2.旅客信息查询 *"); printf("* 3.机票订购 *"); printf("* 4.机票退订 *"); printf("* 5.航班信息维护 *"); printf("* 6.保存退出 *"); printf("********************************************************************************"); printf("请输入选项~\n"); char c; c=getchar(); if(c>='1'&&c<='6') { switch(c) { case '1': menu1(); 27 break; case '2': menu3(); break; case '3': ticket_book(); break; case '4': ticket_cancel(); break; case '5': menu2(); break; case '6': filesave1(); filesave2(); printf("谢谢使用~\n"); exit(1); break; } } else { printf("ERROR!Please input again\n"); system("pause"); system("cls"); goto begin; } } /********************************子菜单1***********************************/ void menu1() { begin: fflush(stdin) ; system("cls"); printf(" *航班信息查询* \n"); printf(" 1.按航班号 "); printf(" 2.按目的地和起飞时间 "); printf(" 3.退出 "); 28 printf("请输入选项~\n"); char c; c=getchar(); if(c>='1'&&c<='3') { switch(c) { case '1': search_flight_num(); break; case '2': search_destination_time(); break; case '3': rootmenu(); break; } } else { n"); printf("ERROR!Please input again\ system("pause"); system("cls"); goto begin; } } /****************************子菜单 2***********************************/ void menu2() { begin: fflush(stdin); system("cls"); printf(" *航班信息维护* \n"); printf(" 1.航班信息输入 "); printf(" 2.单个航班信息删除 "); printf(" 3.全部航班信息删除 "); printf(" 4.退出 "); printf("请输入选项~\n"); 29 char c; c=getchar(); if(c>='1'&&c<='4') { switch(c) { case '1': flight_info_input(); break; case '2': flight_info_delete(); break; case '3': flight_info_deleteall(); break; case '4': rootmenu(); break; } } else { printf("ERROR!Please input again\n"); system("pause"); system("cls"); goto begin; } } /*************************子菜单3**************************/ void menu3() { begin: fflush(stdin); system("cls"); printf(" *旅客信息查询* \n"); printf(" 1.按航班号查询 "); printf(" 2.按姓名查询 "); printf(" 3.按机票号查询 "); printf(" 4.退出 "); 30 printf("请输入选项~\n"); char c; c=getchar(); if(c>='1'&&c<='4') { switch(c) { case '1': search_ticket_flight_num(); break; case '2': search_ticket_name(); break; case '3': search_ticket_num(); break; case '4': rootmenu(); break; } } else { printf("ERROR!Please input again\n"); system("pause"); system("cls"); goto begin; } } /******************************本地文件读取************************************/ void fileread1() { if((fp_flight_info=fopen("flight_info.dat","rb"))==NULL) //检 查能否以只读方式打开文件 { fp_flight_info=fopen("flight_info.dat","wb"); //不 能打开文件就新建文件 } rewind(fp_flight_info); //指针重新定位到文件首部 for(;fread(pp,sizeof(struct FLIGHT),1,fp_flight_info)==1;pp++,flinum++) //将每个FLIGHT结构读取 出来并计数 continue; 31 fclose(fp_flight_info);//关闭文件 } void fileread2() { if((fp_ticket_info=fopen("ticket_info.dat","rb"))==NULL) { fp_ticket_info=fopen("ticket_info.dat","wb"); } rewind(fp_ticket_info); for(;fread(qq,sizeof(struct TICKET),1,fp_flight_info)==1;qq++,ticnum++) continue; fclose(fp_ticket_info); } /*******************************文件保存 **************************************/ void filesave1() { if((fp_flight_info=fopen("flight_info.dat","wb+"))==NULL) //检查能否以读、写或新建方式打开文件 { \n"); printf("不能打开文件. exit(1); //退出程序 } rewind(fp_flight_info); //指针重新定位到文件首部 fwrite(&all[0],sizeof(struct FLIGHT),flinum,fp_flight_info); //将所有信息写入本地文件 fclose(fp_flight_info); //关闭文件 } void filesave2() { if((fp_ticket_info=fopen("ticket_info.dat","wb+"))==NULL) { printf("不能打开文件.\n"); exit(1); } rewind(fp_ticket_info); fwrite(&passenger[0],sizeof(struct TICKET),ticnum,fp_ticket_info); fclose(fp_ticket_info); } /*******************************航班信息输入 **********************************/ void flight_info_input() { //依次输入信息 while(1) 32 { fflush(stdin); //清空标准输入设备缓存,以免对下面的 输入有影响 printf("\n请输入航班号:"); gets(pp->flight_num); strcpy(pp->start,"武汉"); //出发地默认为武汉 printf("\n请输入目的地:"); //需要始终使用汉字输入 gets(pp->destination); printf("\n请输入起飞时刻:"); //需要使用“09:24”类似的格式输 入时间 gets(pp->takeoff_time); printf("\n请输入到达时刻:"); gets(pp->arrive_time); printf("\n请输入总票数:"); scanf("%d",&pp->num); printf("\n请输入剩余票数:"); scanf("%d",&pp->left); printf("\n请输入价格:"); scanf("%d",&pp->price); flinum++; //航班数量增加1 pp++; //指针挪到下一个结构 fflush(stdin); printf("\n是否继续输入航班信息?是请按 Y 按其他退出\n"); // 判断是否继续输入 char cc; cc=getchar(); if(cc=='Y') { system("cls"); continue; } else { rootmenu(); break; } } } /******************************机票信息输入**********************************/ void ticket_info_input(struct FLIGHT *p) //根据航班信息往机票中写 入共有的信息 { fflush(stdin); 33 strcpy(qq->flight_num,p->flight_num); int a=ticnum+1; char str3[8]={"A"}; V:char str1[8]; sprintf(str1,"%s%04d",str,a);//将已有机票数加1按“0010”这样的格式存到str1中作为机票编号的一部分 for(int i=0;iticket_num,str1); //写入机票信息 strcpy(qq->start ,p->start); strcpy(qq->destination,p->destination); strcpy(qq->takeoff_time,p->takeoff_time); strcpy(qq->arrive_time,p->arrive_time); str3[1]=p->flight_num[strlen(p->flight_num)-2]; //将A和航班号后两位组合到一起作为登机口号码 str3[2]=p->flight_num[strlen(p->flight_num)-1]; // str3[3]='\0'; // strcpy(qq->gate_num,str3); int b; b=p->num-p->left+1; B:char str2[5]; sprintf(str2,"%03d",b);//将已售出的机票数加1以格式“008”作为座位号 for(i=0;iflight_num,pa ssenger[i].flight_num)==0)//检查是否有同样的座位号,由于退票可能造成有一样的座位号 { b--;//往前检查 goto B; } } strcpy(qq->seat_num,str2); printf("\n请输入姓名:"); 34 gets(qq->name); printf("\n请输入性别:"); gets(qq->sex); printf("\n请输入身份证号:"); gets(qq->id_num); printf("\n请输入联系电话:"); gets(qq->phone_num); ticnum++; //机票数量加1 qq++; //指针挪到下一个结构 } /******************************单个航班信息删除 ****************************/ void flight_info_delete( ) { printf("需要所要删除的航班编号,若已知则按 Y 继续执行,若未知请按其他键返回查询\n"); fflush(stdin); char cc; cc=getchar(); if(cc=='Y') { int i,k; printf("请输入要查询的航班编号\n"); scanf("%d",&i); k=i-1; printf("\n航班号 航班编号 出发地 目的地 起飞时刻 到达时刻 总票数 剩余票数 价格\n"); //打印航班信息以供核对 printf("%-8s%-10d%-8s%-8s%-10s%-10s%-8d%-10d%-4d\n",all[k].flight _num,i,all[k].start,all[k].destination,all[k].takeoff_time,all[k].arr ive_time,all[k].num,all[k].left,all[k].price); printf("\n请认真核对,确认删除请按 Y ,按其他键返回主菜单\n"); fflush(stdin); char cc1; cc1=getchar(); if(cc1=='Y') { for(k=i-1;k=0&&strncmp(all[i].takeoff_time,ss3,2)<=0) //用strncmp比较all[i].takeoff_time前面的两个字符 { printf("%-8s%-10d%-8s%-8s%-10s%-10s%-8d%-10d%-4d\n",all[i].flight _num,i+1,all[i].start,all[i].destination,all[i].takeoff_time,all[i].a rrive_time,all[i].num,all[i].left,all[i].price); j++; } } if(j==0) { printf("\n您所查询的航班不存在,按任意键重新查询\n"); system("pause"); menu1(); } else { printf("请记住所需的航班编号,按任意键返回主菜单\n"); system("pause"); rootmenu(); } } /************************机票订购***************************/ void ticket_book() { printf("需要所要订购机票的航班编号,若已知则按 Y 继续执行,若未知 38 请按其他键返回查询\n"); fflush(stdin); char cc; cc=getchar(); if(cc=='Y') { int i,k; n"); printf("请输入要查询的航班编号\ scanf("%d",&i); k=i-1; printf("\n航班号 航班编号 出发地 目的地 起飞时刻 到达时刻 总票数 剩余票数 价格\n"); printf("%-8s%-10d%-8s%-8s%-10s%-10s%-8d%-10d%-4d\n",all[k].flight _num,i,all[k].start,all[k].destination,all[k].takeoff_time,all[k].arr ive_time,all[k].num,all[k].left,all[k].price); if(all[k].left==0) { printf("\n没有机票了,按任意键返回主菜单\n"); system("pause"); rootmenu(); } printf("\n请认真核对,确认订票请按 Y ,按其他键返回主菜单\n"); fflush(stdin); char cc1; cc1=getchar(); if(cc1=='Y') { printf("\n请输入订票数\n"); int j; scanf("%d",&j); printf("\n请认真填写个人信息,暂不支持修改\n"); if((int)all[k].left>=j) { for(int i=0;i
/
本文档为【飞机票订票系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索