《2022年C语言飞机订票系统教学文案 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言飞机订票系统教学文案 .pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C 语 言 飞 机 订 票 系 统名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 14 页 - - - - - - - - - 课程设计课程:数据结构专业班级: xx 软件工程 xx 班姓名: xx 学号: xxx 姓名: xxx 学号: xxx 设计时间: xxx 指导老师: xxx 课程设计题:飞机订票系统一、 设计目的 1掌握结构体数组的表示和存储。 2. 掌握链表的存储和操作。 3掌握文件的操作。名师资料总结 - - -精品资料欢迎下载 - - - - - - -
2、 - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 14 页 - - - - - - - - - 二、设计内容和要求 1. 任务:通过此系统可以实现如下功能:录入: 可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询: 可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票: 订票情况可以存在一个数据文件中,结构自己设定。可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料
3、有姓名,证件号,订票数量及航班情况,订单要有编号。修改航班信息: 当航班信息改变可以修改航班数据文件。要求: 根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能设计思想:管理操作系统,主要考虑的是信息的录入,这里利用文件的读写完成该功能;输出,查询以及删除,利用结构数组存储航班与客户信息,依次对订票,退票,查询及相关操作编写成子程序,然后再主程序中调用,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 14 页 - - - - - - - - - 这样程序
4、看起来相当简练,而且易读懂;算法设计分析:(次系统运行环境为VC6.0)1.txt beijing shanghai 1 1 12 0 1 1 18 0 6 100 2 shanghai wuhang 2 2 12 0 2 2 14 0 2 110 1 wuhang chibi 3 3 13 0 3 3 14 0 1 50 2 (此文件是程序执行航班信息录入时自动生成,在信息读取时需要调用)首先是航班于客户信息的存储,结构数组的利用很好的解决该问题;其次是文件的操作,在主函数中利用文件的读与写;下面介绍订票退票以及查询操作的实现。1 订票:首先输入出发地与目的地,查找是否有相应的航班信息,在航
5、2 班票数足够的情况下,录入客户信息,提示操作成功;否则失败。3 退票:输入退票客户的姓名与身份号码,查找到该客户信息后进行退票操作,完成后对应航班票数加1;若没有该客户信息,提示查无此名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 14 页 - - - - - - - - - 人。查询:输入客户姓名与身份号码,若查到有该客户信息,显示该客户的航班情况;否则提示差无此人。/飞机定票管理系统#include #include #define N 10 struct flig
6、ht char start10;/出发地char end10;/目的地int s_month;/出发时间月份 ,天,小时,分钟int s_day; int s_hour; int s_minute; int d_month;/到达时间月份 ,天,小时 ,分钟int d_day; int d_hour; int d_minute; int coast_t;/历时多久 int coast_m;/票价int num;/剩余票数/int bianhao;/机票编号airN;/ 结构体数组存储航班信息/客户信息struct con int number;/定票者的证件号码char name10;/定票者
7、的名字名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 14 页 - - - - - - - - - char start10;/出发地char end10;/目的地int s_month;/出发时间月份 ,天,小时,分钟int s_day; int s_hour; int s_minute; int d_month;/到达时间月份 ,天,小时 ,分钟int d_day; int d_hour; int d_minute; int coast_t;/历时多久 int coa
8、st_m;/票价/ int bianhao;/机票编号people100; /定票,输出发地与目的地 ,时间,反馈剩余票 ,票价book(int t) int i,month,day,p,q,k=0;/k 为判断输入的信息是否有误char start10,end10; printf( 定票:n); /输入查询的航班信息 ,以便搜索while(k=0) printf(请输入出发地 ,目的地 ,出发日期 :n); /* gets(start);gets(end); /* 这里输入时应注意用回车键,否则默认字符串存入start* scanf(%d,%d,&month,&day); /* /scanf
9、(%s,%s,%d,%d,start,end,&month,&day); / getchar(); printf(%s,%s,%d,%d,start,end,month,day); /扫描信息 ,搜索与所查询的航班匹配信息for(i=0;iN;i+) p=strcmp(start,airi.start);q=strcmp(end,airi.end); if(p=0&q=0&month=airi.s_month&day=airi.s_day) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - -
10、 第 6 页,共 14 页 - - - - - - - - - k=1;/信息输入无误 ,即找到匹配信息printf( 由%s到%s时间为 %d 月%d号的航班票价为 %d,余票为%dn,airi.start,airi.end,airi.s_month,airi.s_day,airi.coast_m,airi.num); /更新信息 ,将客户信息存储if(airi.num=0)printf( 票已售完 ,如有不便请谅解 !nnnn); else airi.num=airi.num-1; printf( 请输入您的证件号码与姓名:n); scanf(%d,%s,&peoplet.number,p
11、eoplet.name); getchar(); strcpy(peoplet.start,airi.start); strcpy(peoplet.end,airi.end); peoplet.s_month=airi.s_month; peoplet.s_day=airi.s_day; peoplet.s_hour=airi.s_hour; peoplet.s_minute=airi.s_minute; peoplet.d_month=airi.d_month; peoplet.d_day=airi.d_day; peoplet.d_hour=airi.d_hour; peoplet.d_m
12、inute=airi.d_minute; peoplet.coast_t=airi.coast_t; peoplet.coast_m=airi.coast_m; / peoplet.bianhao=airi.bianhao; printf( 恭喜您定票成功 !nnnn); t+; / system(pause); if(k=0) printf( 信息输入有误 n); printf( 是否继续定票 ?0为继续 1 为退出 n); scanf(%d,&k); getchar(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师
13、精心整理 - - - - - - - 第 7 页,共 14 页 - - - - - - - - - return t; /退票,并将客户信息栏中该客户信息清楚,所乘航班票数加 1 re_ti(int t) int i,j,nu_mber,k=0;/k 为判断是否查找到客户信息char na_me10; printf( 退票:n); printf( 请输入证件号码与客户姓名:n); scanf(%d,%s,&nu_mber,na_me); getchar(); for(i=0;i100;i+) if(nu_mber=peoplei.number&strcmp(na_me,peoplei.name
14、)=0) k=1;/找到该客户信息/退票后 ,与该客户对应航班票数增1 for(j=0;jN;j+) if(strcmp(peoplei.start,airj.start)=0&strcmp(peoplei.end,airj.end)=0&peoplei.s_month=airj.s_month&peoplei.s_day=airj.s_day) airj.num=airj.num+1; /将客户信息依次向前移动for(j=i;j100;j+) / printf(成功删除该客户信息 !n); peoplej.number=peoplej+1.number; strcpy(peoplej.nam
15、e,peoplej+1.name); strcpy(peoplej.start,peoplej+1.start); strcpy(peoplej.end,peoplej+1.end); peoplej.s_month=peoplej+1.s_month; peoplej.s_day=peoplej+1.s_day; peoplej.s_hour=peoplej+1.s_hour; peoplej.s_minute=peoplej+1.s_minute; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - -
16、 - - - 第 8 页,共 14 页 - - - - - - - - - peoplej.d_month=peoplej+1.d_month; peoplej.d_day=peoplej+1.d_day; peoplej.d_hour=peoplej+1.d_hour; peoplej.d_minute=peoplej+1.d_minute; peoplej.coast_t=peoplej+1.coast_t; peoplej.coast_m=peoplej+1.coast_m; t=t-1;/删除该客户信息后 ,客户记录减去 1 if(k=0)printf( 查无此人 !n); print
17、f(nnnn); return t; /查询信息,出入所要查询的顾客的航班信息,并给出错误处理check() int i,nu_mber,k=0;/k 为判断是否查找到客户信息char na_me10; printf( 查询:n); printf( 请输入证件号码与客户姓名:n); / getch(); /fflush(stdin); scanf(%d,%s,&nu_mber,na_me); for(i=0;i100;i+) if(nu_mber=peoplei.number&strcmp(na_me,peoplei.name)=0) k=1; printf( 以下是该客户信息 :n); pr
18、intf( 证件号 :%d;姓名:%s;出发地 :%s;目的地 :%s;出发时间:%d月%d 日%d时%d 分n,peoplei.number,peoplei.name,peoplei.start,peoplei.end,peoplei.s_month,peoplei.s_day,peoplei.s_hour,peoplei.s_minute); printf(nnnn); if(k=0)printf( 查无此人 !nnnn); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页
19、,共 14 页 - - - - - - - - - main() /使用文件初始化信息int s,p,q=0,i;/p,q 为循环判断变量int t=0; /* FILE *fp; char name=1.txt; if(!(fp=fopen(1.txt,w) printf(error!n); for(i=0;i3;i+) fprintf(fp,%15s%15s%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d%4dn,airi.start,airi.end,airi.s_month,airi.s_day,airi.s_hour, airi.s_minute,airi.d_month
20、,airi.d_day,airi.d_hour,airi.d_minute,airi.coast_t,airi.coast_m,airi.num); fclose(fp); */ FILE *fp; char name=1.txt; if(!(fp=fopen(1.txt,r) printf(error!n); for(i=0;i3;i+) fscanf(fp,%15s%15s%4d%4d%4d%4d%4d%4d%4d%4d%4d%4d%4dn,&airi.start,&airi.end,&airi.s_month,&airi.s_day,&airi.s_hour, &airi.s_minut
21、e,&airi.d_month,&airi.d_day,&airi.d_hour,&airi.d_minute,&airi.coast_t,&airi.coast_m,&airi.num); fclose(fp); / char name; /read conument 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 14 页 - - - - - - - - - while(q=0) printf(*n); printf(请选择服务种类 :n1为定票 ;2 为退票 ;3
22、 查找信息 ;0为退出 n); printf(*n); / system(pause); scanf(%d,&s); getchar(); switch(s) case 1:t=book(t);/ 订票操作break; case 2:t=re_ti(t);/退票操作break; case 3:check();/ 查找客户信息是否存在break; case 0: printf( 航空集团祝福您旅途愉快 !); printf( 您确定离开界面 ?1/0n); scanf(%d,&p); if(p=1)q=1; else q=0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - -
23、 - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 14 页 - - - - - - - - - 输入从北京到上海的航班,录入客户信息,当前票数为2;输入查询的客户证件号码与姓名,找到后输出客户的航班信息;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 14 页 - - - - - - - - - 输入退票者的信息,完成后在进行查找操作时确定已经没有该客户信息;退出界面;收获及体会:通过此次实验,使我对结构数组有了更
24、深刻的理解,也认识到了它的一些缺陷,就是如果对它进行删除以及增添信息时,信息的移动有点麻烦;这时如果用链表进行操作的话会相对简单些;于此同时,语言这类学科,用着就会熟练起来,程序开始时,生疏的地方很多,久而久之,用起来就熟练了;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 14 页 - - - - - - - - - 主函数选择服务种1 调用订票子程序2 调用退票子程序3调用查询子程序4退出输入出发航班信息信息匹配则记录客户信息,否则给出处理情况继续还是退出到主服务?输入客户信息删除该客户信息,所对应航班票数增加继续还是退出到主服务?输入客户信息若找到该客户则输出他的信息,否则提示继续还是退出到主服务?子程序建立 1.txt 文件,将航班信息写入,用于子程序调用;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 14 页 - - - - - - - - -