2022年C语言飞机订票系统_第1页
2022年C语言飞机订票系统_第2页
2022年C语言飞机订票系统_第3页
2022年C语言飞机订票系统_第4页
2022年C语言飞机订票系统_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、C 语 言飞 机 订 票 系 统飞机订票系统一、课程设计目的(1)明白并把握算法的设计方法,具备初步的独立分析和设计才能;(2)初步把握软件开发过程的问题分析、系统设计、程序编码、测试等基本方 法和技能;(3)提高综合运用所学的理论学问和方法独立分析和解决问题的才能;二、课程设计的内容和要求 本程序主要用于机票的治理,甩以供应了以下功能,行班信息输入输出 保 存、航线查询、订票,退票,和修改航班信息;创建航班信息: 包括航班号、起飞时间、降落时间、起飞抵达城市、航班票价、及票价的折扣,票数等信息. 录入的信息应当储存在一个文件里;浏览航班信息 : 通过浏览系统,客户可以依据自己时间、金钱等多方

2、面的因素选 择适合自己的航班;修改航班信息: 当航班信息转变可以修改航班数据文件;查询航班信息: 可通过航班号查询,可通过飞机终点站查询,也可以按航线查 询;删除航班信息 : 可通过航班号删除,也可以按航线删除;添加航班信息: 按添加的航班数量依次添加航班信息 订票: 可以订票,假如该航班已经无票,可以举荐相关航班 退票: 不中意所订的票时可进行退票 三、算法的基本思想 1. 涉及到的数据结构typedef struct flightnode / 定义结构体数组 int num; / 航班号char start20; / 起始城市char over20; / 终点城市 char Stime10

3、; / 起始时间 har Etime10; int Price; int Discount; /折扣机票数int count; /struct flightnode *next; NODE; 2. 基本功能模块飞机票治理系统创浏修查删添建览改找除加订退航航航航航航票票主函数模块;1)函数原形: void main; 2)功能:调用 initlist&h 创建航班信息模块函数和 menu函数,初始化函数和显示主界面1)函数原形: void creat; 2)功能:本模块是对程序中的create函数和 save()函数的具体说明 链表的储备结构,对该创建的链表调用 去浏览航班信息模块1 函数原形

4、: void print; 2 功能:输出航班信息修改航班信息模块1 函数原形 : void change save()函数,储备到数据文件中2 功能:当航班信息转变可以修改航班数据文件20 查找航班信息模块1)函数原形 : NODE *search:查找航班信息数据2 功能:由于航班的录入和储存是由链表储备结构进行的,所以此查询就可通 过链表对该文件进行查看或者查询,查询我们可依据航班号和航班抵达的城市和航线匹配查询,在查询中将需要查询的航班号 值 num进行比较,而按抵达城市查找就利用函数 start,name1 如匹配就输出;删除航班信息模块 1)函数原形 : void del no 和

5、文件阅读时指针所指的 strcmpp-next-2 功能:挑选按什么方式删除,然后按该方式删除添加航班信息模块1)函数原形 : void add;2 功能:按添加的航班数量依次添加航班信息订票信息模块1)函数原形 : int book_tickets 2 功能: 先依据 search 函数查询要订票的航班,在订票时应先按乘客想要定的航班号或者抵达城市或航线查询,并按乘客欲定的票的数目与查询数目进行比较,如订票的票数小于该航班票数,就输出订票胜利,且在整个定票系统中,全部的定票都用链表进行储备治理退票信息模块1)函数原形 : int tuipiao 2 功能:在退票系统中即对航班票的数据文件进行

6、治理,所以可先依据查询航班票的方法,如查询到的票的信息和乘客此时要求退票的信息相匹配,就在该定票数据文件中删除相应的该票的节点,再修改其航班信息;3主要功能模块流程图开头输出界面挑选操作挑选 创建航班信息挑选 浏览航班信息按航班或终点挑选挑选修改航班信息查找航班信息挑选删除航班信息按航班号或航四挑选添加航班信息挑选订票信息挑选 退票信息挑选 退出终止、系统测试 1.挑选 1,运行界面如下:2挑选 2,运行界面如下:3挑选 3,运行界面如下:4挑选 4,运行界面如下:5挑选 5,运行界面如下:6. 挑选 6,运行界面如下:7. 挑选 7,运行界面如下:8. 挑选 8,运行界面如下:9. 挑选 0

7、,运行界面如下:五结论本次程序设计主要用到了结构体、调用函数、文件的储存、输入以及输出等功能;使我对数据结构有了更深一层的熟悉,特殊是对动态链表和文件的运用得到了很大的提高;在本次试验中程序曾多次编译、运行出错,多亏了王帅老师的指导才将错误找出并改正,通过本次试验,我熟悉到实践和动手的重要性;六源程序及系统文件使用说明 程序清单 #include /标准输入、输出头文件 #include /包含字符串函数处理头文件 #include /包含动态储备与释放函数头文件 typedef struct flightnode /定义结构体数组 int num; /航班号 char start20; /起

8、始城市 char over20; /终点城市 char Stime10; /起始时间 char Etime10; int Price; float Discount; /折扣 int count; /机票数 struct flightnode *next; NODE; #define PRINT %4d %9.6s %9.6s %9.6s %9.6s %9d %.1f %9d n,p-next-num,p-next-start,p-next-over,p-next-Stime,p-next-Etime,p-next-Price,p-next-Discount,p-next-count /定义输

9、出格式 void creat; /创建航班信息文件void print; / 输出航班信息void save; /储存航班信息int read; /读取航班信息NODE *search; /查找航班信息void del; /删除航班信息int book_tickets; /订票信息int tuipiao; / 退票信息void change; /修改信息void menu; /菜单void initlistNODE *; / 初始化函数void add; /添加信息函数NODE *h=NULL; / 建立全局变量,存链表头指针int m=0; /航班数量void initlistNODE *h

10、 *h=NODE *mallocsizeofNODE; *h-next=NULL; void creat /打印模块程序 FILE *fp; NODE *p=NULL; / 定义移动指针int i,flightnum; char y; p=h; iffp=fopenair.dat,rb.=NULL/ 打开文件,并判定是否出错printf 信息文件已经存在,不必创建 .按任意键后回车返回 nnn;/打印出错提示 fclosefp; fflushstdin; getchar; return ; p=h; printf 请输入要输入的航班数量 :; fflushstdin; /清除文件缓冲区scan

11、f%d,&flightnum; / 读取航班数systemcls; /清屏printf 请依次输入航班信息 :nn; /打印提示信息 printf-n; fori=0;inext=NODE *mallocsizeofNODE; p-next-next=NULL; printf 航班号 :; fflushstdin; scanf%d,&p-next-num; / 读取航班号printf 起始站 :; fflushstdin; scanf%10s,&p-next-start;/ 读取起飞城市printf 终点站 :; fflushstdin; scanf%10s,&p-next-over;/ 读取

12、抵达城市printf 起始时间 :; fflushstdin; scanf%10s,&p-next-Stime;/ 读取起飞时间printf 抵达时间 :; fflushstdin; scanf%10s,&p-next-Etime;/ 读取抵达时间 printf 航班票价 :; fflushstdin; scanf%d,&p-next-Price;/ 读取航班票价printf 票价折扣 :; fflushstdin; scanf%10f,&p-next-Discount;/ 读取票价折扣printf 机票数 :,m; fflushstdin; scanf%d,&p-next-count;/ 读

13、取机票数 printf 第%d 个信息已经输完 n,i+1; p=p-next; m+; ; void save/储存模块程序 NODE *p=NULL;/ 定义移动指针FILE *fp,*fp1;/ 定义指向文件指针p=h; iffp=fopenair.dat,wb=NULL/ 打开文件并判定是否出错printf 创建文件失败 .nnn;/ 打印出错提示 fflushstdin; getchar; return; iffp1=fopennum.dat,wb=NULL/ 打开文件并判定是否出错printf 创建文件失败 .nnn;/ 打印出错提示fflushstdin; getchar; re

14、turn; whilep-next.=NULL iffwritep-next,sizeofNODE,1,fp=0/ 向文件写入数据,并判定是否出错 printf 向文件输入数据失败 .nnn; break; else p=p-next; fprintffp1,%d,m; / 按指定的格式输出到 fp1 所指定的文件中fclosefp;/关闭文件 fclosefp1;/关闭文件int read/从文件读取信息模块 FILE *fp,*fp1;/ 定义文件指针NODE *p=NULL; int i; initlist&h; p=h; iffp=fopenair.dat,rb=NULL/ 打开文件,

15、并判定是否出错printf 出错,请检查信息文件是否存在,按任意键后回车返回住菜单 nnn;/打印出错提示fflushstdin; getchar; return 0; iffp1=fopennum.dat,rb=NULL/ 打开文件并判定是否出错printf 创建文件失败 .nnn;/ 打印出错提示 fflushstdin; getchar; return 0; fscanffp1,%d,&m; / 从 fp1 所指定的文件中按给定的格式将输入数据送内存中fclosefp1;/关闭文件printfn 总共 %d 个航班信息 n,m; fori=0;inext=NODE *mallocsize

16、ofNODE; p-next-next=NULL; freadp-next,sizeofNODE,1,fp;/从文件中读取信息 p=p-next; fclosefp;/关闭文件 return 1; void print/ 打印模块 NODE *p=NULL; ifread=0return;/ 调用读取文件函数 ,并判定是否文件存在;p=h; printf n; 终点站起始时间抵达时间航班票价票价折printf 航班号起始站扣票数 n; whilep-next.=NULL printfPRINT;/ 打印信息p=p-next; printf ; printfnnnnnn 请按任意键后回车终止返回

17、上层菜单 :n; fflushstdin; getchar; NODE *search/查询模块 NODE *p=NULL; NODE *x=NULL; /* 用于记录查询到的记录 */ char name120; char name220; char ii10; int n,no; int flag=0; ifread=0return 0; p=h; do printf 请挑选查找方式: nn; /打印查询方式菜单 printf-n; printf 1.按航班号查找 nn 2.按终点站查找 nn 3.按航线查找 nn 0.返回 nn; printf 请在 0-3 中挑选: nn 按其他键后回

18、车返回主菜单 :nnnnn; fflushstdin; scanf%d,&n;/ 读取查找方式ifn=0 break; switchn case 1: printf 请输入航班号: n; fflushstdin; scanf%d,&no;/ 航班号break; case 2: printf 请输入终点站名称: n; fflushstdin; scanf%10s,name2;/读取终点站break; case 3: printf 请输入起始站名称: n; fflushstdin; scanf%10s,name1;/读取起始站printf 请输入终点站名称: n; fflushstdin; sca

19、nf%10s,name2;/终点站break; default: printf 请挑选有效查询方式 .nnn; whilep-next.=NULL ifstrcmpp-next-start,name1=0|strcmpp-next-over,name2=0 /按终点站起始站判定输出条件 printf n 查找航班信息胜利 .nnn; 间航班票价票价折扣printf 航班号起始站终点站起始时间抵达时票数 n; printfPRINT;/ 打印信息x=p-next; flag=1; break; ifp-next-num=no/ 按航班号判定输出条件 printf n 查找航班信息胜利 .nnn;

20、 间航班票价票价折扣printf 航班号起始站终点站起始时间抵达时票数 n; printfPRINT;/ 打印信息x=p-next; flag=1; break; p=p-next; if.flag printf 查找失败 .:nnnnn; printf nnn 是否重新查找 .n 请键入 yes或 non 后回车键终止 n - nnnnn; no=0;/将航班号赋值为 0 p=h; flag=0; fflushstdin; scanf%10s,ii; whilestrcmpii,yes=0;/ 判定终止returnx; void add int flightnum; int i,y; NOD

21、E*p=NULL; i=read; ifi=0return; p=h; whilep-next.=NULLp=p-next; printf 请输入要输入的航班数量 :; fflushstdin; scanf%d,&flightnum; / 读取航班数systemcls; printf 请依次输入航班信息 :nn; / 打印提示信息printf-n; fori=0;inext=NODE *mallocsizeofNODE; p-next-next=NULL; printf 航班号 :; fflushstdin; scanf%d,&p-next-num; / 读取航班号 printf 起飞城市 :

22、; fflushstdin; scanf%10s,&p-next-start;/ 读取起飞城市 printf 抵达城市 :; fflushstdin; scanf%10s,&p-next-over;/ 读取抵达城市 printf 起飞时间 :; fflushstdin; scanf%10s,&p-next-Stime;/ 读取起飞时间 printf 抵达时间 :; fflushstdin; scanf%10s,&p-next-Etime;/ 读取抵达时间 printf 航班票价 :; fflushstdin; scanf%d,&p-next-Price;/ 读取航班票价 printf 票价折扣

23、 :; fflushstdin; scanf%10f,&p-next-Discount;/ 读取票价折扣 printf 机票数 :,m; fflushstdin; scanf%d,&p-next-count;/ 读取机票数 printf 第%d 个信息已经输完 n,i+1; p=p-next; m+; ; printf 信息输入完毕,是否存盘 :存盘按 0,不存盘按其他任意键后回车fflushstdin; scanf%d,&y; ify=0 save;/将结构体信息存盘print;/ 输出输入的航班信息 void del/ 删除模块 NODE *p=NULL; NODE *temp=NULL;

24、 char name120; char name220; char ii10; int no,n; int flag=0; ifread=0return;/ 调用读取函数do printf 请挑选删除以方式回车键终止:nn; printf *1.按航班号删除 nn *2.按航线删除 nn *0.返回 nn; printf 请在 0-2 中挑选以回车键终止: nnn; fflushstdin; scanf%d,&n;/ 读取删除方式ifn=0 break; /跳出循环switchn case 1: printf 航班号: n; fflushstdin; scanf%d,&no; / 读取航班号p

25、=h; break; /跳出循环case 2: printf 起始站名称: n; fflushstdin; scanf%10s,name1;/读取起始站printf 终点站名称: n; fflushstdin; scanf%10s,name2; /读取终点站p=h; break; /跳出循环default: printf 请挑选有效的选项: n; continue; whilep-next.=NULL ifp-next-num=no|strcmpp-next-start,name1=0&strcmpp-next-over,name2=0 ./判定输入信息是否存在 temp= p-next-ne

26、xt; p-next=temp; m-; flag=1; printf 删除胜利 .剩余 %d 条信息nnnnn,m; break; p= p-next; if.flagprintf 没有这个信息 .nnnnn; printf 是否连续删除 n 请键入 yes或 no 以回车键终止 n; fflushstdin; scanf%10s,ii; /读取是否连续信息save; /调用储备函数if.strcmpii,yes / 判定是否连续删除printf 请按任意键后回车终止返回上层菜单:nnnnnn; break; while1; / 判定终止 int book_tickets/订票模块 int

27、n; char a10; NODE *x=NULL; NODE *p=NULL; do printf 查找要订票的航班: n; x = search;/调用查询模块ifx.=NULL printf 请输入您要订的机票数以回车键终止:n; fflushstdin; scanf%d,&n; / 读取所订机票数 else return 0; ifncount.=0&x-count=n/ 判定是否出错 x-count=x-count-n; save;/调用储存函数printf 订票胜利 .nn; break; ifx-countn/ 判定是否出错 printf 该航班机票已被定完,请预定其他航班:nn

28、nnnn; break; printf 是否连续?请输入 判定是否连续订票 fflushstdin; scanf%10s,a; yes或 no 以回车键终止 :nnnnnn;/while.strcmpa,yes; / 判定终止 return1; int tuipiao / 退票模块 int n; char a10; NODE *p=NULL; NODE *x=NULL; do printf 查找要退票的航班 n; x= search; /调用查询模块 ifx.=NULL printf 请输入您要退的机票数目:n; fflushstdin; scanf%d,&n; / 输入所退票数 else r

29、eturn 0; whilencount= x-count+n; save; /调用储存模块printf 退票胜利 .nnnnn; printf 是否连续退票?请键入 断是否连续退票 fflushstdin; scanf%10s,a; yes或 no 以回车键终止 :nnn;/判while.strcmpa,yes;/ 判定并跳出循环return 1; fflushstdin; getchar; void change /修改模块 char j10; NODE *x=NULL; NODE *p=NULL; ifread=0return; do x=search; ifx.=NULL printf 请重新输入本条信息 nnnnn; printf 航班号 :n; fflushstdin; scanf%d,&x-num; / 读取航班号printf 起始站 :n; fflushstdin; scanf%10s,&x-start;/ 读取起始站printf 终点站 :n; fflushstdin; scanf%10s,&x-o

温馨提示

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

评论

0/150

提交评论