版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计-飞机订票设计 题目:飞机订票设计。 功能:本飞机共有80个座位,分为20 排,每排4个 位子。编号为A,B,C,D。如10D表示10排D座。A和D靠窗,19到20排为 吸烟区。本系统可以让乘客自己选座号和区域, 直到乘客满意为止,无法满足的 话,只能改乘另一个航班。订上票的乘客需要 .题目:飞机订票设计。 功能:本飞机共有80个座位,分为20排, 每排4个位子。编号为A,B,C,D。 如10D表示10排D座。A和D靠窗,19到20排为吸烟区。本系统可以让乘 客自己选座号和区域,直到乘客满意为止,无法满足的话,只能改乘另一个航班。 订上票的乘客需要给出姓名和身份证号,最后要打印出
2、乘客清单。 分布实施: 1、初步完成总体设计,搭好框架,确定人机对话的界面,确定两个函数; 2、完成最低要求:建立一个小系统,包括 5排座位,两个区域,能供乘客选择; 3、进一步要求:完成全部功能的系统。 要求:1、用C语言实现程序设计; 2、利用结构体数组实现信息的数据结构设计; 3、系统的各个功能模块要求用函数的形式实现; 4、界面友好(良好的人机交互),程序加必要的注释。 课程设计试验报告要求: 1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模 块划分。 2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问 题与解决方案、小结等。 /#in elu
3、de vstdafx.h #in elude #i ncludevstdio.h #i ncludevstri ng.h #in elude #defi ne OK 1 #defi ne TRUE 1 #defi ne FALSE 0 #defi ne ERROR 0 #defi ne OVERFLOW -2 #defi ne PR printf typ edef int status; typ edef struct airli ne char line_nu m8;/ 航班号 char plane_nu m8;/ 飞机号 char e nd_place20;/ 目的的 int total;
4、/座位总数 int left;/剩余座位 struct airli ne *n ext;/ 下一个E airli ne; typ edef struct customer char n ame9;/ 顾客名 char lin e_num8;/ 航班号 int seat_ num;/ 座位号 struct customer *n ext;/下一个结点 customer; airli ne *ini t_airli ne() /初始化链表 airli ne *l; l=(airli ne*)malloc(sizeof(airli ne); if(l=NULL) exit(0); l-n ext=N
5、ULL; return l; customer * ini t_customer()/初始化链表 customer *l; l=(customer*)malloc(sizeof(customer); if(l=NULL) exit(0); l-n ext=NULL; return l; 链表插入操作 status in sert_airli ne(airli ne *p ,char *li ne_nu m,char *p la ne_nu m,char *end_pl ace,i nt total,i nt left)/airli ne airli ne *q; q=(airli ne*)ma
6、lloc(sizeof(airli ne); strc py(q-li ne_num , li ne_nu m); strc py(q-plane_num , plane_nu m); strc py(q-e nd_p lace , end_pl ace); q-total =total; q-left =left; q- next=NULL; (*p)-n ext二q; (*p)=(* p)- next; / P R(i nsert %d ,%dis succssed!n,e,bl); return OK; status in sert_customer(customer *p ,char
7、*n ame,char *li ne_nu m,i nt seat)/customer链表插入操作 customer *q; q=(customer*)malloc(sizeof(customer); /* PR(内存分配失败n); return OVERFLOW; */ strc py(q-n ame , n ame); strc py(q-li ne_num , li ne_nu m); q-seat_ num =seat; q-n ext=NULL; (*p)-n ext=q; (*P )=(* P)- next; / P R(i nsert %d ,%dis succssed!n,e,
8、bl); 修改airline链表中的数据 return OK; airli ne *modefy_airli ne(airli ne *l,char *li ne_num)/ airli ne *p; p=1-n ext ; for(; p!=NULL ;p=p-next ) if(strc mp (li ne_nu m, p-li ne_num )=0) p-left +; / P R(modefy %sn, p-li ne_num ); return l; PR(没有这个航班,无法完成修改任务!n); 删除航班 return 0; status delete_airli ne(airli
9、ne *h,char *li ne_num)/ airli ne *p ,* pr; pr=h; p=pr-n ext ; while( p!=NULL) if(strc mp (li ne_nu m, p-li ne_num )=0) pr-n ext =p-n ext ; PR(删除 %s 航班n,p-line_num ); return OK; pr=pr-n ext ; p=pr-n ext ; PR(无此航班,无法删除! n); return ERROR; status delete_customer(customer *h,char *li ne_num)/ customer *p
10、,*pr; pr=h; p=pr-n ext ; while( p!=NULL) if(strc mp (li ne_nu m, p-li ne_num )=0) pr-n ext =p-n ext ; pr=pr-n ext ; p=pr-n ext ; / PR(无此航班,无法删除!n); return OK; 删除顾客 顾客退票 status delete_cus(customer *h,airli ne *l,char *n ame)/ char line_nu m8; customer *p,*pr; / qr=h; pr=h; p=pr-n ext ; / PR(开始删除n); w
11、hile( p!=NULL) if(strcm p(n ame ,p-n ame )=0) strc py(li ne_nu m, p-li ne_num ); l=modefy_airli ne(l,li ne_nu m); pr-n ext =p-n ext ; PR(顾客 %s 退票成功!n,p-name ); return OK; pr=pr-n ext ; p=pr-n ext ; PR(无此顾客,无法退票! n); return ERROR; status save_airline(airline *1)/ 保存 airline.dat FILE *fp_airli ne; cha
12、r ch=#; airli ne *p=1-n ext ; char file name二c:airli ne.dat; if(fp_airli ne=fo pen (file name,wb)=NULL) prin tf(ca n not open file to write:%sn,file name); return ERROR; for(; p!=NULL ;p=p-next ) / prin tf(%s,%s,%s,%d,%dn ,p-li ne_num ,p-plane_num ,p-end_pl ace ,p-total ,p-left ); fprin tf(fp_airli
13、ne,%s,%s,%s,%d,%d%c n, p-li ne_num ,p-plane_num ,p -end_p lace ,p-total ,p-left ,ch); fclose(fp_airli ne); return OK; status save_customer(customer *1)/保存顾客信息 customer.dat FILE *fp_customer; char ch=#; customer *p=1-n ext ; if(fp_customer=fo pen (file name,wb)=NULL) prin tf(ca n not open file to wri
14、te:%sn,file name); char file name二c:customer.dat; return ERROR; for(; p!=NULL ;p=p-next ) / P R(%s,%s,%dn, p-n ame ,p-li ne_num ,p-seat_ num ); fprin tf(fp_customer,%s,%s,%d%c, p-n ame ,p-li ne_num ,p-seat_ nu m ,ch); fclose(fp_customer); return OK; in t cha ngStrl nt(char *ch)/ 把字符串转化为整型 int a=1,b=
15、0,c=0,i; for (i=strle n( ch)-1;i=0;i-) if (chiv58 a=a*10; c=c+b; else PR(%c不合法,无法将此字符串转化为整形!n,chi); return 0; / prin tf(the c is %dn,c); return c; 链表插入操作 status in sert_air(airli ne *l,char *li ne_nu m,char *plane_nu m,char *end_pl ace,i nt total,i nt left)/airli ne airli ne *q; q=(airli ne*)malloc(
16、sizeof(airli ne); strc py(q-li ne_num , li ne_nu m); strc py(q-plane_num , plane_nu m); strc py(q-e nd_p lace , end_pl ace); q-total =total; q-left =left; q-n ext=l-n ext ; l-n ext=q; / P R(i nsert %d ,%dis succssed!n,e,bl); return OK; status in sert_cus(customer *l,char *n ame,char *li ne_nu m,i nt
17、 customer *q; seat)/customer链表插入操作 q=(customer*)malloc(sizeof(customer); strc py(q-n ame , n ame); strc py(q-li ne_num , li ne_nu m); q-seat_ num =seat; q-n ext=l-n ext ; l-n ext=q; return OK; status load_airli ne(airli ne *l) FILE *fp_airli ne; int flag=O,i=O; char ch; char lin e_num8;/ 航班号 char p
18、la ne_nu m8;/飞机号 char e nd_place20;/ 目的的 char total_str5; char left_str5; int total;/座位总数 int left;/剩余座位 / airli ne *p=l; char file name=c:airli ne.dat; if(fp_airli ne=fo pen (file name,rb)=NULL) i+; prin tf(ca n not open file to load:%sn,file name); return ERROR; while(!feof(fp_airli ne) ch=fgetc(f
19、p_airli ne); if(ch!=#) if(flag=0 i+; else if(flag=1 i+; else if(flag=2 i+; else if(flag=3 else if(flag=4 i+; else if (ch=,) flag+; i=0; /* else P R(错误 n); return ERROR; */ else flag=0; i=0; total=cha ngStrl nt(total_str); left=cha ngStrl nt(left_str); P R(%8s%8s%8s%9d%9dn,li ne_num ,p la ne_num ,en
20、d_place ,total ,left ); in sert_air(l,li ne_num,p la ne_nu m,e nd_place,total,left); fclose(fp_airli ne); return OK; status load_customer(customer *l) FILE *fp_customer; int flag=O,i=O; char ch; char n ame9; char lin e_num8;/ 航班号 char seat_ num _str5; int seat_ nu m;/座位 / customer *p=*l; char file n
21、ame50=c:customer.dat; if(fp_customer=fo pen (file name,rb)=NULL) prin tf(ca n not open file to load:%sn,file name); return ERROR; while(!feof(fp_customer) ch=fgetc(fp_customer); prin tf(%cn,ch); if(ch!=#) if(flag=0 i+; else if(flag=1 i+; else if(flag=2 i+; else if (ch=,) flag+; i=0; else P R(错误 n);
22、return ERROR; else flag=0; seat_ num=cha ngStrl nt(seat_ num _str); P R(%10s %10s %dn ,n ame ,li ne_num ,seat_num ); in sert_cus(l ,n ame, line_nu m,seat_ nu m); / p=p-n ext ; fclose(fp_customer); return OK; status creat_airline(airline *l)/仓U建 airline 单链表 airli ne *p=*l; int i=0; char *li ne_num3=b
23、j nc01,bjsh02,shgz03; char *plan e_num3= plan e1, plan e2, plan e3; char *en d_place3= nc,sh,gz; int total3=100,100,100; int left3=51,50,78; for (i=0;i3;i+) in sert_airli ne( return OK; 仓J建customer 单链表 订票函数 status creat_customer(customer *l)/ customer *p=*l; int i=0; char *n ame3=ouya ngj0,yhl,fs; c
24、har *li ne_num3=bj nc01,bjsh02,shgz03; int seat_num3=1,5,10; for (i=0;in ext ; for(; p-n ext !=NULL ;p=p-n ext) in sert_airli ne( PR(增加航班 %s 成功!n,line_num); return OK; status book(airli ne *l,char *li ne_nu m,customer *c,char *n ame)/ airli ne *p=1; customer *q=c- n ext ; p=1-n ext ; for(;q-n ext !=
25、NULL;q=q-n ext) / P R(%sn,q- name ); for(; p!=NULL ;p=p-next ) if(strc mp (li ne_nu m, p-li ne_num )=0) if(p-left 0) PR(恭喜您!订票成功!n); PR(你的座位号是:%dn,(p-total -p-left +1); in sert_customer( p-left -; return OK; else PR(对不起,座位已满!n); return 0; PR(对不起,没有这个航班号!n); return ERROR; status prin t_airli ne(airli
26、 ne *1)/打印航线信息 airli ne *p=1-n ext ; for(; p!=NULL ;p=p-next ) P R(%8s%8s%8s%9d%9dn, p-li ne_num ,p- pla ne_num ,p-e nd_pla ce ,p-total ,p-left ); return OK; status prin t_customer(customer *1)/打印顾客信息 customer *p=1-n ext ; for(; p!=NULL ;p=p-next ) P R(%10s %10s %dn, p-n ame ,p-li ne_num ,p-seat_num
27、 ); return OK; status inputpassword(char cc9)/隐藏密码为 *号的函数 楼主,注意这里! char c; int i; for(i=O;c=getch();i+) if(c=13) break; /*13是回车的ascii码,用n不行,不知怎么回事*/ else cci=c; prin tf(*); cci=0; /prin tf(n); /prin tf(%s,cc); /getcharO; return strle n(cc); void mai n() char choice,choice2, name9,li ne_nu m8, passwo
28、rd9, pla ne_nu m8,e nd_p lac e9; char pass9=19851102,re_ pass_19,re_ pass_29; int t=1,tt=1,total; airli ne *air= ini t_airli ne(); customer *cus=i ni t_customer(); PR(航空订票系统n); PR(成员:晏凯n); PR(计算机0541课程设计(一)n); creat_airli ne( creat_customer( / save_airli ne(air); / save_customer(cus); while(t=1) *n)
29、; P R(* PR(*-航空订票系统选择菜单-*n); P R(* 订票- -0 *n); P R(* 退票- -1 *n); P R(* 查询 -2 *n); P R(* 修改航线 -3 *n); P R(* 读入文件 -4 *n); P R(* 退出 -5 *n); *n); P R(* PR(请选择:); choice = getch(); P R(%cn,choice); if(choice=0) PR(请输入你要订的航班号:); sca nf( %s, name); sca nf( %s,li ne_num); PR(请输入你的姓名:); book(air,li ne_nu m,c
30、us, name); save_airli ne(air); save_customer(cus); else if(choice=1) PR(n请输入你的姓名:); sca nf( %s, name); delete_cus(cus,air, name); save_airli ne(air); save_customer(cus); else if(choice=2) PR(n航班号飞机号目的地总票数余票数n); prin t_airli ne(air); PR(姓名航班号座位号n); prin t_customer(cus); else if(choice=3) tt=1; PR(请输入密码:); /sca nf(%s, password); inputp assword( password); 楼主,注意这里!我改了! if(strc mp(p assword, pass)=0) while (tt=1) *n); P R(n* P R(* 航线信息修改: *n); P R(* 增加航班号-0 *n); P R(* 删除航班号-1 *n); P R
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年湖南省武冈市高三生物下册期末考试模拟卷(含答案)
- 2026年山东省邹城市高三物理下册期末考试模拟检测卷及答案
- 2026年吉林省梅河口市高一化学上册期末考试测试卷附完整答案【全优】
- 2026年山东省滕州市高一化学上册期末考试考试卷附答案(黄金题型)
- 2026年福建省永安市高三生物下册期末考试模拟卷(含答案)
- 2026年云南省瑞丽市高三生物上册期末考试测试卷及参考答案
- 2026年江苏省扬中市高三历史上册期末考试模拟卷及参考答案(轻巧夺冠)
- 2026年山东省莱阳市高一化学上册期末考试模拟考试卷含答案(满分必刷)
- 2026年山东省邹城市高三生物上册期末考试考试卷及答案
- 2026年云南省弥勒市高一化学上册期末考试试卷附参考答案【突破训练】
- 高中美术鉴赏课教学设计:以作品为本位的四步鉴赏法实践
- 2025年城管协管员笔试考试试题(含答案)
- 医疗健康管理与慢病防控
- 2026年认证基础、管理体系认证基础主观题考试(附答案)解析
- 七年级上册人教版英语第一次月考试卷(含答案)
- 2026年急诊超声应用培训课件
- 正压送风口阀体损坏更换安装调试方案
- 2026中考冲刺-九年级数学知识点梳理
- 新学期(2026年秋)小学二年级体育教学工作计划
- 浙江省杭州市2026届高三上学期教学质量检测数学试卷(杭州一模)(含答案)
- 第二届重庆市市场监管系统执法办案电子数据取证技能大竞赛赛完整试题
评论
0/150
提交评论