ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:509.65KB ,
资源ID:6145588      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6145588.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(航班信息管理系统.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

航班信息管理系统.docx

1、航班信息管理系统课 程 设 计 课程名称 C语言课程设计 题目名称 航班信息管理系统 学生学院 物理与光电工程学院 专业班级 电子科学与技术(4)班学 号 学生姓名 指导教师 2015 年 10 月 23 日一 设计目的进一步加深、巩固所学专业课程(C语言程序设计)的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。掌握运用C语言独立地编写、调试应用程序和进行其他相关设计的技能。二 课程设计的内容对航班信息(包括航班号、最大载客数、起飞地点、起飞时间、降落地点、降落时间、单价)和乘客信息(包括航班号、身份证号码姓名、性别、出生年月、座位号)进行管理,包括航班信息与乘客信息

2、的输入、输出、查询、删除、统计、退出。假设现收集到了一个机场的所有的航班信息,要求用C语言编写一个简单的航班信息管理系统,可进行录入、查询、修改和浏览航班信息的功能;乘客提出航班号、起飞地点、起飞时间、降落地点、订票数等订票要求,根据事先保存的航班数据决定乘客能否订票。只有全部满足了乘客的订票要求并且所订航班有足够的未订座位之后才能完成订票处理,并且修改该航班的未订座位数(每个航班的未订座位数的初始值就是该航班的最大载客数),否则,订票失败,并且给出不能订票的原因。三 课程设计的要求与数据1、对航班信息(包括航班号、最大载客数、起飞地点、起飞时间、降落地点、降落时间、单价)和乘客信息(包括航班

3、号、身份证号码、姓名、性别、出生年月、座位号)进行管理,包括航班信息与乘客信息的输入、输出、查询、删除、统计、退出;2、航班信息内容较多,要求设计的管理系统能够完成以下功能:(1)、航班信息录入功能:航班信息用文件保存,可以一次完成若干条记录的输入;(2)、航班信息浏览功能:完成全部航班记录的显示;(3)、查询功能:完成按航班号或按目的地查找航班记录,并显示;(4)、航班信息的修改:按航班号进行修改某个航班的信息;(5)、航班信息的删除:按航班号进行删除某个航班的信息;(6)、订票处理:按乘客的订票方式完成航班订票处理;(7)、应提供一个界面来调节各个功能,调用界面和各个功能的操作界面应尽可能

4、清晰美观! 四 课程设计应完成的工作1、编写算法;2、算法测试,并有具体的测试结果和结果分析;3、撰写课程设计报告,内容包括:(1) 封面扉页(2) 设计任务书(3) 目录(4) 总体设计方案(包括流程图)(5) 使用说明及运行实例(包括界面)(6) 成员设计内容简介(7) 项目源代码(注意注释的使用)(8) 指导老师评语五 总体设计1、功能1:航班信息的输入并对输入的内容进行错误检查;2、功能2:航班信息的显示浏览;3、功能3:航班信息的修改并对修改的内容进行错误检查;4、功能4:航班信息的删除;5、功能5:航班信息的查询;6、功能6:乘客信息输入并对输入的内容进行错误检查;7、功能7:订票

5、处理检查是否还有空座位;8、退出系统。六 详细设计系统的整体框图如图1所示:开始输出菜单根据菜单输入n的值选择程序打开文件退出结束保存 删除修改 查询显示 输出输入图1 整体框图1、打开存放着航班信息与乘客信息的文件:分别打开航班文件与乘客文件,存放在链表中,供后续函数调用;可用函数void read_psg_data(void)、void read_pla_data(void)来实现此操作。这是两个无参函数,用来读取存储在文件中的信息当到达文件尾时关闭文件并退出函数,带回指向链表头的一个指针和指向链表尾的指针。算法:fopen()函数打开文件后读取一定长度的信息存到malloc()分配的内存

6、地址空间,声明两个全局指针pla_head和psg_head,每读取一组数据就将其地址存放在pla1节点中,并链接到之前列表的尾端。N-S流程图如图2所示(以读取航班信息为例):fp=fopen(文件)while(不到文件尾) malloc()分配内存pla1是否成功否 是 fread()读取一定长度字节数据到pla1pla1置为NULL否pla_head是否为空 pla_end-next = pla1; pla_head = pla1; pla_end = pla1; pla_end = pla1;pla_end_next置为NULL读取成功标志位置为0关闭文件图2 打开文件读取数据流程图2

7、、输入航班数据与乘客数据(以航班数据为例):输入信息包括航班号、最大载客数、起飞地点等相关信息;用函数void add_pla_info(void),函数再调用int check_pla_num(PLA *pla)、void check_time(int *hour, int *min)、void check_string(char name20)分别进行航班号、输入的时间、输入的地点等信息的正确性验证,从源头避免出错。算法:打开待保存输入信息的文件,在一个while循环里面分配内存并输入数据,对输入的数据进行正确性验证,如果出错则会提示重新输入,正确输入完一个航班后将数据保存到链表尾端并将新

8、的航班数据写入打开的文件中。N-S流程图如图3所示(以读取航班信息为例):fp=fopen(文件)while(继续输入)malloc()分配内存pla是否成功输入航班号 重新输入否是航班记录已存在输入载客数是 重新输入否是否数字且在正常范围 输入起飞时间否是 重新输入 时间格式正确 输入降落地点 重新输入是否 地点格式正确输入降落时间 重新输入是否时间格式正确输入单价是 重新输入否是否数字是否pla_head为空 pla_end-next = pla; pla_head = pla; pla_end = pla; pla_end = pla;保存新航班数据到文件图3 输入航班数据流程图3、显示

9、浏览航班信息:显示信息包括航班号、最大载客数、起飞地点、起飞时间、降落地点、降落时间、单价、剩余票数,调用了时间函数localtime()获取当前系统时间;用函数void display_pla_info(void)完成此操作。算法:把读取文件后产生的链表按照一定的格式输出到屏幕上。N-S流程图如图4所示:将链表头赋给航班结构体局部变量while(未到链表尾) printf(pla1); pla1 = pla1-next;图4 显示航班信息流程图4、删除航班信息:删除一个航班的所有信息,调用函数void delete_pla_data(void)完成是删除操作。算法:显示所有航班信息,要求用户

10、输入需删除的航班号,在while循环中遍历链表,找到数据则显示出来,再次要求用户确认删除,若删除,该数据的下一条数据地址将会取代当前的数据地址,即从链表中删除了,调用save_pla_info()保存新的链表;若没有找到航班则要求用户重新输入。N-S流程图如图5所示:输入航班号否是 到达链表尾是否提示找不到航班,重新输入 输入的航班号与pla1_num相同是否pla2 = pla1; 输出该航班信息否是pla1 = pla1-next; 确认删除返回菜单删除的航班是链表头pla_head = pla1-next; pla2-next = pla1-next;释放pla1;保存文件标志位置位;调

11、用save_pla_info()保存新的链表;提示删除成功;返回菜单图5 删除航班信息流程图5、修改航班信息:修改一个航班的信息,调用void modify_data(void)实现此操作。算法:显示所有航班信息,用户输入一个航班号,在while循环中遍历链表,找到要修改的数据则显示出来,再次要求用户确认修改,若修改,则开始输入信息;若没有找到航班则返回菜单。这里用到了添加航班时的信息检查函数。N-S流程图如图6所示:是返回菜单输入航班号否while(未到链表尾) 输入的航班号与pla1_num相同是否pla2 = pla1; 输出该航班信息pla1 = pla1-next; 确认修改输入新的

12、航班号、载客数、起飞时间、降落地点、降落 时间、单价,并检查每一项的格式是否符合要求提示修改成功返回菜单提示未找到该航班并返回菜单图6 修改航班信息流程图6、查询航班信息:查询信息时分为航班号查询与目的地查询,用户可输入航班号或目的地进行查询并订票,调用void search(void)函数,内部再调用void search_pla_num(void)和void search_destination(void)两个函数实现此操作。算法:进入查询后显示另一个菜单要求用户选择相应的查询条件。按航班号查询时,用户输入一个航班号,在while循环中遍历链表,找到要修改的数据则显示出来,询问用户是否要订

13、票,若订票则会进入订票函数buy_check();若不订票则返回菜单;若没有找到相应的航班信息则返回上一层菜单。N-S流程图如图7所示:显示菜单选择程序按航班号 选择相应的操作输入航班号 输入目的地是否while(不到链表尾) while(不到链表尾)航班号相同 目的地相同是pla2 = pla1; 显示航班信息 pla2 = pla1; 显示航班信息否pla1 = pla1-next; 询问是否订票 pla1 = pla1-next; 进入search_pla_num() 执行订票流程 询问是否订票 未找到相应的航班信息 未找到相应的航班信息图7 查询航班信息流程图7、订票处理:进入订票时,

14、会调用search_pla_num()函数完成操作。算法:调用display_pla_info()输出所有航班信息,然后调用search_pla_num()和buy_check()订票并完成乘客身份信息的输入与格式检验。N-S流程图如图8所示:否display_pla_info()显示所有航班信息提示用户输入相应的航班号while(未到链表尾)是 航班号相同 pla2 = pla1; 显示信息否是 pla1 = pla1-next; 调用buy_check()检查该航班已满人数提示用户选择其他航班调用buy_ticket()函数完成乘客信息的录入(包括姓名、身份证号、性别等信息),并对正确性进

15、行检查,然后把信息存放到乘客文件中。提示订票成功并返回提示未找到航班信息后返回菜单8、退出系统:用户在主菜单界面时按照提示即可退出系统,调用一个exit()函数来实现。七 调试分析 源程序及注释/* 航班信息管理系统 */#include #include #include #include #include #include #define LEN1 sizeof(PSG)#define LEN sizeof(PLA)#define FORMAT %3d%7d%5d%7d:%2d%12s%8d:%2d%6s%8dn#define INFO pla_num, pla1-p_num, pla1-

16、l_num, pla1-up_hour, pla1-up_min, pla1-addr_dst, pla1-down_hour, pla1-down_min, pla1-price, (pla1-l_num - pla1-buy_num)typedef struct passenger int p_num; n); getch(); return; printf(您是否需要预订该航班机票 (y / n) ); fflush(stdin); find = getchar(); if (y != find & Y != find) return; buy_ticket(pla1); printf(

17、n信息输入完毕,您已成功预订%2d:%2d分飞往%s的%d航班,您的座位号是:%d.n, pla1-up_hour, pla1-up_min, pla1-addr_dst, pla1-p_num, +pla1-buy_num); bflag = 1; , dst); getch(); return; search_pla_num();/* 查询航班信息 */void search(void) char n = 1; while (n) system(cls); printf(t查询航班信息n); make_line(_, 40); printf(t1. 按航班号查询n); printf(t2.

18、 按降落地点n); printf(t0. 返回主菜单n); make_line(_, 40); printf(n请选择菜单:); while (n) search_again: fflush(stdin); n = getchar(); fflush(stdin); switch (n) case 1: system(cls); search_pla_num(); break; case 2: system(cls); search_destination(); break; case 0: return; default: printf(错误!请重新输入: ); goto search_ag

19、ain; break; /* 检查所要增加的航班记录是否存在 */int check_pla_num(PLA *pla) int p_num, i = 0; char ch = c; PLA *pla1, *pla2; while (c = ch) printf(航班号:); fflush(stdin); while (scanf(%d, &p_num) != 1) fflush(stdin); printf(n输入出错,请输入数字: ); pla1 = pla_head; pla2 = pla1; while (pla1) if (pla1-p_num = p_num) printf(n航班

20、%d已存在,请重新确认!n, pla1-p_num); make_line(_, 30); printf(n键入“C”继续添加信息,其余键返回: ); fflush(stdin); scanf(%c, &ch); getchar(); if (ch != c & ch != C) return 1; system(cls); break; else pla2 = pla1; pla1 = pla1-next; ch = y; if (pla1 = NULL) pla-p_num = p_num; return 0; return 0;/*检查价格*/void check_price(char

21、price10) int i; while (scanf(%s, price) for (i = 0; i 9 | pricei p_num) printf(n航班号 载客数 起飞时间 降落地点 降落时间 单价n); make_line(_, 70); printf(%4d%6d%7d:%2d%12s%7d:%2d%7sn, pla1-p_num, pla1-l_num, pla1-up_hour, pla1-up_min, pla1-addr_dst, pla1-down_hour, pla1-down_min, pla1-price); make_line(_, 70); printf(您

22、确定要修改该航班吗 (y / n) ); fflush(stdin); mod_pla = getchar(); if (y != mod_pla & Y != mod_pla) return; system(cls); m = check_pla_num(pla1); 订票 |n); printf(tt| 2. 查看航班信息 |n); printf(tt| 3. 航班查询 |n); printf(tt| 4. 增添航班信息 |n); printf(tt| 5. 修改航班信息 |n); printf(tt| 6. 删除航班信息 |n); printf(tt| 0. 退出 |n); printf

23、(tt|-|nn); printf(tt请选择您需要的操作(0-6): );/* 功能处理 */void manage() char n2 = 0, 0; while (1) input_agn: scanf(%s, n); xe文件中。解决办法:关闭控制台再次链接即可。解决方法:把第793行的变量定义语句放在函数的第一条语句位置。 解决办法:这是出现段错误的问题,可能是数组越界了。用strncpy(name, check, 20)替换strcpy(name, check)即可。解决方法: printf(继续订票请键入y,其他键返回上一层菜单:);里面的“”格式有误,改成printf(继续订票

24、请键入y,其他键返回上一层菜单:)。解决办法:把void buy_check(PLA pla1) 改成void buy_check(PLA *pla1),原因是形参类型定义错误。 主要程序运行结果1、运行开始(如图7-1)图7-1 系统主菜单2、选择4增添航班信息(如图7-2)图7-2 航班信息输入界面3、选择2查看航班信息(如图7-3)图7-3 查看航班信息界面4、选择3查询航班(如图7-4)图7-4 查询航班信息菜单5、选择5修改航班信息(如图7-5)图7-5 修改航班信息界面6、选择6删除航班信息(如图7-6)图7-6 删除航班信息7、选择1订票(如图7-7)图7-7 订票界面8、选择0

25、退出系统(如图7-8)图7-8 退出系统界面图2 主要功能模块图八 总结经过前后半个月的c语言课程设计,从最初的系统框图、流程图到最后的成品代码,一边看书籍一边写代码,感觉自己收获不少!首先是:要使用链表来达到这样的功能要求,甚至操作链表完成一系列动作,很方便但不容易理解,所以在这方面我们花了很多时间看课本、看别人的例程,强化了c语言的知识。其次,在这次做课程设计的过程中,发现了平时很多没有注意到的问题,例如:有返回值函数和无返回值函数两者被调用时时不同的.这次课程设计虽然花了我们不少时间,但正是这些时间,让我见识到了C语言的重要性。这个航班信息管理系统都是在自己的知识范围内做出来的,所以界面清晰简洁,可能不太好看,但很实用!从这里我也得到一个体会,做一个程序或者开发一个软件,应该着重从它的后台制作入手,不能做出一个中看不中用的程序或软件。这次的课程设计让我对C语言的知识更加扎实了,也勾起了我深入学习C语言的兴趣。九 参考文献1曹飞飞、高文才编著.C语言程序开发范例宝典(第2版)M.北京:人民邮电出版社, 20102曹飞飞、高春艳等编著.C语言开发宝典M.北京:机械工业出版社,20133曹衍龙、林瑞仲、徐慧编著.C语言实例解析精粹(第二版)M.北京:人民邮电出版社,20094谭浩强著.C程序设计(第四版)M.北京:清华大学出版社,2010

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1