收藏 分享(赏)

华中科技大学C语言课程设计实验报告及源代码.doc

上传人:精品资料 文档编号:10630680 上传时间:2019-12-10 格式:DOC 页数:99 大小:2.85MB
下载 相关 举报
华中科技大学C语言课程设计实验报告及源代码.doc_第1页
第1页 / 共99页
华中科技大学C语言课程设计实验报告及源代码.doc_第2页
第2页 / 共99页
华中科技大学C语言课程设计实验报告及源代码.doc_第3页
第3页 / 共99页
华中科技大学C语言课程设计实验报告及源代码.doc_第4页
第4页 / 共99页
华中科技大学C语言课程设计实验报告及源代码.doc_第5页
第5页 / 共99页
点击查看更多>>
资源描述

1、附 录36课 程 设 计 报 告题目: 航班时刻表信息查询系统 课程名称: C 语言程序设计 专业班级: 学 号: 姓 名: 指导教师: 报告日期: 计算机科学与技术学院附 录37毕业设计论文 任务书姓名: 班号: 专业: 计算机科学与技术同组姓名: 指导教师: 一、课题名称航班时刻表查询系统二、主要内容建立航班时刻表查询系统,提供创建、编辑和查询等基本功能和服务。三、任务要求收集与阅读相关文献资料,确定系统目标与范围,分析系统需求,确定系统功能;设计系统方案,完成系统实现;提交课程设计报告 。四、系统功能系统主要提供航班信息的快速查询、检索和统计。应该具有按航班、按机场等查询信 息的功能;模

2、糊条件检索航班信息;统计航班座次情况等。五、系统数据系统主要涉及“航班” 、 “经停机场”和“经停航班” 3 类信息。六、基本要求1) 、只能使用 C 语言,源程序要有适当的注释,使程序容易阅读;2) 、要有用户界面,要求至少采用教材 p215-p216 类似的简易菜单,鼓励采用文本菜单界面甚至采用图形菜单界面;3) 、必须使用结构和十字交叉链表等数据结构;4) 、使用文件保存数据;5) 、至少输出一份报表(屏幕输出即可) ,鼓励自行增加新功能;6) 、设计测试的模拟数据,完成系统测试;7) 、写实验报告(要求正规打印,A4 幅面) 。附 录38前言本 C 语言程序课程设计报告是由 wt 编写

3、的。本课程设计主要内容包括,内容中文摘要、Abstract(英文摘要)、正文、致谢、参考文献以及附录,其中:正文主要内容有:一、系统功能模块,主要介绍该课程设计的航班时刻表查询系统的组成功能模块有哪些;二、数据结构设计及用法说明,主要是介绍说明本航班时刻表查询系统设计时用到的一些数据信息结构的设计思路和用法;三、程序结构流程图,用流程图的方式解释本课程设计中一些功能函数的设计思路和实现方法;四、各模块的功能,主要展示了本系统最终功能的解释说明;五、试验结果,主要展示了本航班时刻表查询系统最终功能的实现效果;六、体会,讲述作者在制作过程中的一些心得体会。本 C 语言程序课程设计部分参考了曹计昌,

4、卢萍,李开等老师 2008 年编著的 C 语言程序设计和李开,卢萍,曹计昌等老师编著的 C 语言实验与课程设计 。在此,谨向这些提供无私支持的老师们致以诚挚地谢意!感谢他们默默无闻的奉献!附录主要有两个部分:附录 1 是源程序代码清单,附录 2 是系统测试数据。由于作者水平有限,加之时间仓促,难免有些缺点和错误,望广大读者给予批评指正。编者2012 年 10 月于华中科技大学附 录39摘要本系统可在 VC+ 6.0、CODE:BLOCKS 和 C-Free 中编译运行通过。本系统支持快捷键操作,简单的鼠标操作和键盘操作。本系统大量使用了标注,尽量使程序明了易懂,运用较多的数据结构,用三方向的十

5、字交叉链表储存数据信息,运用数组,指针,结构与联合及文件输入输出,控制台等知识,系统主要提供航班信息以及机场信息的快速查询、检索和统计,本程序有飞机时刻查询,对各三级链表分别进行插入,删除,修改的操作。 本系统的一些主要功能及快捷键说明如下:1、F1 显示帮助主题;2、Alt + X 退出系统;3、Alt + C 清除屏幕;4、Alt + F 弹出“文件(F)“的下拉菜单;5、Alt + E 弹出“编辑(E)“的下拉菜单;6、Alt + I 弹出“查询(I)“的下拉菜单;7、Alt + S 弹出“统计(S)“的下拉菜单;8、Alt + H 弹出“帮助(H)“的下拉菜单;9、ESC 键 关闭弹出

6、窗口,回到主菜单栏;关键词:航班时刻表查询系统,模糊查询,关键字突显,数据实时更新,数据自动加载,文件操作,时间动态显示附 录40AbstractThe system can be in VC+ 6.0, CODE:BLOCKS and C-Free compiled to run through. The system supports shortcut key operation, simple operation of the mouse and keyboard operation. This system uses a large number of tagging, try to

7、make the program easier to understand, use more data structure, with three direction cross storage data information, the use of the array, pointer, and joint structure and file input and output, console and other knowledge, system is mainly to provide flight information, airport information query, r

8、etrieval and statistics, the present procedures have the aircraft time query, on each of three levels of linked respectively insertion, deletion, modification of the operation.This system main function and shortcuts as follows:1、F1 displays help topics;2、Alt + X to exit the system;3、Alt + C clear sc

9、reen; 4、Alt + F pop “ File ( F ) “ drop-down menu;5、Alt + E pop “ Edit ( E ) “ drop-down menu;6、Alt + I pop “ Query ( I ) “ drop-down menu;7、Alt + S pop “ Statistics ( S ) “ drop-down menu;8、Alt + H pop “ Help ( H ) “ drop-down menu;9、ESC key to close the pop-up window, back to the main menu bar;Key

10、 words: flight schedule query system, fuzzy query,keyword salience,Data updated in real time, Automatic data loading, file operation, Time dynamic display附 录41目录前言 I第 1 章 摘要 II1.1 航班时刻表查询系统摘要 II1.2 关键字 II第 2 章 Abstract III2.1 Flight Schedule Query System Abstract III2.2 Keywords III第 3 章 正文 1 3.1 系统

11、功能模块结构 13.2 数据结构设计及用法 23.3 程序结构(流程图) 53.4 各模块的功能 223.5 实验结果 233.6 体会 34致谢 35参考文献 35附录 36附录 1 源程序清单 36附录 2 系统测试数据 92附 录42一、系统功能模块结构航班时刻表信息查询系统由五大功能模块组成:文件模块,编辑模块,查询模块,统计模块,帮助模块。如下图 1 所示:图 3.1.1 系统功能模块结构图1、文件模块包括五个子模块:数据保存,数据加载,数据备份,备份恢复,退出;2、编辑模块包括九个子模块:航班插入,航班修改,航班删除,机场插入,机场修改,机场删除,经停航班插入,经停航班修改,经停航

12、班删除;3、查询模块包括三个子模块:航班查询,机场查询,模糊查询;附 录434、统计模块包括两个子模块:座位统计,价格统计;5、帮助模块包括三个子模块:帮助主题,关于系统,清屏。二、数据结构设计及用法说明1、帐号密码信息链数据结构(IP)及用法typedef struct ip_nodechar id15; /*帐号*/char password15; /*密码*/struct ip_node *next; IP;2、航班信息链数据结构(FLIGHT_NODE)及用法typedef struct flight_nodechar flight_number10; /*航班编号 */char ai

13、rcraft_model20; /*客机名称*/char flight_corp_number10; /*所属航空公司编号*/char flight_corp_name20; /*所属航空公司名称*/char initial10; /*始发地*/char terminal10; /*目的地*/char begin_time10; /*始发时间*/char end_time10; /*到达终点时间 */float one_price; /*单程票价*/float round_price; /*来回票价*/char full_time10; /*全程时间*/int mileage; /*飞行里程*

14、/struct flight_node *next; /*指向下一结点*/struct stop_airport_node * anext; /*指向经停机场信息链结点的指针*/ FLIGHT_NODE;3、经停机场信息链数据结构(STOP_AIRPORT_NODE)及用法typedef struct stop_airport_nodechar airport_number10; /*机场编号*/char airport_name20; /*机场名称*/char regional_number10; /*所属地域编号*/char flight_number10; /*航班编号*/char ar

15、rive_time10; /*到达时间*/char leave_time10; /*离开时间*/char cur_time10; /*到目前为止飞行时间*/int cur_mileage; /*到目前为止飞行里程*/struct stop_airport_node *next; /*指向下一节点*/struct stop_flight_node *fnext; /*指向经停航班信息结点的指针*/ STOP_AIRPORT_NODE;4、经停航班信息链数据结构(STOP_FLIGHT_NODE)及用法typedef struct stop_flight_nodechar flight_numbe

16、r10; /*经停航班编号*/char aircraft_model20; /*经停客机型号*/附 录44char airport_number10; /*机场编号*/char regional_number10; /*所属地域编号*/char flight_type20; /*航班类型: 始发-经停- 终到*/char arrive_time10; /*到达时间*/char leave_time10; /*离开时间*/float cur_one_price; /*本机场到终点单程票价*/float cur_round_price; /*本机场到终点来回票价*/int surplus_tick

17、et; /*余票数量*/struct stop_flight_node *next;/*指向下一个结点*/ STOP_FLIGHT_NODE;5、屏幕窗口信息链数据结构(LAYER_NODE)及用法typedef struct layer_node char LayerNo; /*弹出窗口层数*/SMALL_RECT rcArea; /*弹出窗口区域坐标 */CHAR_INFO *pContent; /*弹出窗口区域字符单元原信息存储缓冲区*/char *pScrAtt; /*弹出窗口区域字符单元原属性值存储缓冲区*/struct layer_node *next; /*指向下一结点的指针*/

18、 LAYER_NODE;6、标签束信息结构(LABEL_BUNDLE)及用法typedef struct label_bundle char *ppLabel; /*标签字符串数组首地址 */COORD *pLoc; /*标签定位数组首地址*/int num; /*标签个数*/ LABEL_BUNDLE;标签束信息包括标签字符串数组内容,标签位置,标签个数。用一个字符型的二重指针变量 ppLabel 指向标签字符串数组内容,用一个 COORD 类型的字符指针变量 pLoc 指向标签串数组输出时的首位置坐标,用整型变量 num 表示标签的个数。7、热区信息结构(HOT_AREA)及用法typed

19、ef struct hot_area SMALL_RECT *pArea; /*热区定位数组首地址*/char *pSort; /*热区类别(按键、文本框、选项框)数组首地址*/char *pTag; /*热区序号数组首地址*/int num; /*热区个数*/ HOT_AREA;热区信息包括热区的位置,类别,序号及个数。因此用一个 SMALL_RECT 结构类型的指针变量 pArea 指向热区的定位范围;用字符指针变量 pSort 指向热区的类别类型,其中数字0表示按钮型热区, 1表示文本框热区, 2表示选项框热区;用字符指针变量 pTag指向热区的序号,热区编号一般为 1,2,3,4,5这

20、些自然数表示多个热区的排列顺序,整型变量 num 表示热区个数。8、航班信息数据结构见表 3.2.1 表 3.2.1中文字段名 类型及长度 举例航班编号 char10 1客机型号 char20 波音 737附 录45所属航空公司编号 char10 南方航空公司所属航空公司名称 char20 NH101始发地 char10 北京始发时间 char10 08:00目的地 char10 成都到达时间 char10 18:00单程票价 float 1000来回票价 float 2000全程飞行时间 char10 HH:MM全程飞行里程 int 1200km9、经停机场信息数据结构见表 3.2.2表 3

21、.2.2中文字段名 类型及长度 举例机场编号 char10 CTU机场名称 char20 首都国际机场所属地域编号 char10 BJ110航班编号 char10 1到达时间 char10 HH:MM离开时间 char10 HH:MM飞行时间 char10 注:从始发机场计算飞行里程 int 注:从始发机场计算10、经停航班数据信息结构见表 3.2.3表 3.2.3中文字段名 类型及长度 举例经停航班编号 char10 1经停客机型号 char20 波音 737机场编号 char10 CTU所属地域编号 char10 43001101航班类型 char20 北京上海成都到达时间 char10

22、HH:MM离开时间 char10 HH:MM单程票价 float 注:从本机场到终点机场来回票价 float 注:从本机场到终点机场余票数量 int 93 张11、三方向的十字交叉链表结构见图 3.2.1图 3.2.1 经停机场 1 经停机场 2经停机场 n航班 1 航班121222航班n 主链头gp_head经停航班 1 经停航班 n 附 录46三、程序结构(流程图)3.1、主程序运行流程见图 3.3.1图 3.3.1加载文件中存储的链表数据信息文本菜单界面初始化系统功能模块的选择及运行退出系统前保存链表数据信息清理内存中的缓存信息,关闭系统开始结束加载用户名及密码文件信息登入系统附 录47

23、3.2、数据保存流程见图 3.3.2YNYNYN图 3.3.2开始打开航班,经停机场,经停航班信息文件P1=NULL在文件 1 写入一条航班信息P2=NULLP1=P1-next在文件 2 写入一条经停机场信息 P2=p2-nextP3=NULL关闭文件退出系统在文件 3 写入一条经停航班信息P3=p3-next结束附 录483.3、数据加载流程见图 3.3.3YNYNNYNN开始打开航班,经停机场,经停航班信息文件,定义三个文件指针 in1,in2,in3 分别指向三个文件中的信息feof(in1)=0动态创建在一个航班结点 p1,从文件 1 中读入一条航班信息记录p1-anext=NULL

24、; p1-next=hd; hd=p1; feof(in2)=0动态创建在一个机场结点 p2,从文件 2 中读入一条机场信息记录在航班链中寻找经停该机场的航班,在该航班下建一条机场链p2-fnext=NULL;p2-next=p1-anext;p1-anext=p2;feof(in3)=0动态创建在一个机场结点 p3,从文件 3 中读入一条机场信息记录在机场链中寻找该机场的经停航班,在该机场下建一条经停航班链p2=p1-anext; p3-next=p2-fnext; p2-fnext=p3;附 录49图 3.3.33.4、航班插入流程见图 3.3.4是否图 3.3.4结束开始动态创建一个航班

25、结点 p1,并对该节点中数据项赋值获取链表头指针 gp_head ,phead= *phead = p1;保存链表信息结束附 录503.5、航班删除流程见图 3.3.5 YNNYYN开始输入所要删除信息的航班 fli_num获取指向航班数据链头的指针 PP=NULLp=p-nextP-flight_number=fli_numP 是否为头指针未找到符合的航班将目标结点的前驱结点指向后继结点结束将目标结点的后继结点指针置为链表头指针保存信息释放结点指针 p,并且循环释放该航班结点下的机场和经停航班信息附 录51图 3.3.53.6、航班修改流程见图 3.3.6 YNNY开始输入所要修改的航班编号

26、 fli_num获取指向航班数据链头的指针 PP=NULLP=P -nextP-flight_number=fli_num未找到符合的航班输入修改后的信息保存信息结束附 录52图 3.3.63.7、机场插入流程见图 3.3.7 是否否是开始动态创建一个机场结点 p2,并对该节点中数据项赋值遍历链表比较原链表中是否已存在该机场编号获取链表头指针 gp_head ,pfli_node=gp_head遍历链表是否找到与该机场相对应的航班结点 pfli_nodefree(p2);释放结点p2 - next = pfli_node - anext ; pfli_node - anext = p2保存链表

27、信息结束附 录53图 3.3.73.8、机场修改流程见图 3.3.8 YN开始输入所要修改的航班编号 air_num获取指向航班数据链头的指针 phead寻找与 air_num 匹配的机场信息结点 pair_tempSeekAirNode(phead,air_num)动态创建机场结点 pair_node,并对其数据项赋值pair_temp=NULL未找到符合的机场pair_next = pair_temp - next; *pair_temp = *pair_node;pair_temp -next = pair_next;free(pair_node)保存信息结束附 录54图 3.3.83.

28、9、机场删除流程见图 3.3.9 YNYYN开始输入所要删除信息的航班 air_num获取指向航班数据链头的指针gp_head,pfli_node=gp_headpfli_node=NULLpair_current = pfli_node -anext;pair_current = pair_current -next;pair_node 是否为头指针 未找到符合的机场结束将目标结点的前驱结点指向后继结点将目标结点的后继结点指针置为链表头指针保存信息释放结点指针 pair_node,并且循环释放该机场结点下的经停航班信息附 录55图 3.3.93.10、经停航班插入流程见图 3.3.10 是否

29、否是开始动态创建一个经停航班结点 p3,并对该节点中数据项赋值遍历机场链表比较原链表中是否已存在该经停航班编号获取链表头指针 gp_head ,pfli_node=gp_head,pair_node=pfli_node-anextpref_node=pair_node-fnext遍历链表是否找到与该经停航班相对应的机场结点 pair_nodefree(p3);释放经停航班结点pref_node -next = pair_node -fnext;pair_node -fnext = pref_node;保存链表信息结束附 录56图 3.3.103.11、经停航班修改流程见图 3.3.11 YN开

30、始输入所要修改的经停航班编号ref_num,以及该对应的机场编号 air_num获取指向航班数据链头的指针 phead寻找与 air_num 和 ref_num 匹配的经停航班信息结点 pref_tempSeekAirNode(phead,air_num)动态创建经停航班结点 pair_node,并对其数据项赋值pref_temp=NULL未找到符合的经停航班pref_next = pref_temp -next;*pref_temp = *pref_node;pref_temp - next = pref_next;free(pref_node)保存信息结束附 录57图 3.3.113.12

31、、经停航班删除流程见图 3.3.12 YNYN开始输入所要删除信息的经停航班 ref_num获取指向航班数据链头的指针gp_head,pfli_node=gp_headpfli_node=NULL找到相应机场结点 pair_nodepref_current = pair_node -fnext;pref_prior = pref_current;pref_current = pref_current - next;pref_prior 是否为头指针 未找到符合的机场结束将目标结点的前驱结点指向后继结点将目标结点的后继结点指针置为链表头指针保存信息释放结点指针 pref_node附 录58图 3

32、.3.123.13、航班查询流程见图 3.3.13 YNY开始输入所要查询航班的编号 fli_num获取航班链的链头指针 pP=NULLP=p-nextp-flight_number=fli_num输出此时 p 所指向结点的信息结束附 录59图 3.3.133.14、机场查询流程见图 3.3.14 YNYNYNN Y开始输入所要查询的机场编号 num获取链表的链头指针 P1P1=NULLP1=p1-next获取第二级链表的链头指针p2=p1-anextP2=NULLP2=p2-next获取第三级链表的链针 p3=p2-fnextP3=NULLP3=p3-nextP3-airport_numbe

33、r=num输出 p3 指向的第三级链结点的信息附 录60图 3.3.143.15、模糊查询(关键字匹配查询)流程见图 3.3.15YNYN图 3.3.15结束开始输入所要查询的关键字 KeyWord获取第一级链头指针 p1=gp_headP1=NULLP1=p1-nextMyStrstr(KeyWord,p1-)=0输出当前指针 p1 指向结点信息结束附 录613.16、余票统计流程见图 3.3.16开始获取链表第一级链头指针P1=headP1=NULLP2=p1-anextP2=NULLP3=p2-fnextP3=NULL输出 p3 指向的结点座位等信息P3=p3-nextP2=p2-nex

34、tP1=p1-next结束附 录62图 3.3.163.17、价格统计流程见图 3.3.17开始获取链表第一级链头指针P1=headP1=NULLP2=p1-anextP2=NULLP3=p2-fnextP3=NULL输出 p3 指向的机票价格等信息P3=p3-nextP2=p2-nextP1=p1-next结束附 录63图 3.3.17四、各模块的功能4.1.1 数据保存 :保存输入系统的数据信息。4.1.2 数据加载 :加载文件中的信息。4.1.3 数据备份 :将当前系统内保存的数据信息另存到另一文件中备份。4.1.4 备份恢复 :将上一次备份文件中的数据信息恢复到当前系统中。4.1.5

35、退出 Alt+X:退出系统。4.2.1 航班插入 :插入用户所需的一条航班信息。4.2.2 航班修改 :修改用户所指定的某条航班信息。4.2.3 航班删除 :删除用户所指定的某条航班信息。4.2.4 机场插入 :插入用户所需的一条机场信息。4.2.5 机场修改 :修改用户所指定的某条机场信息。4.2.6 机场删除 :删除用户所指定的某条机场信息。4.2.7 经停航班插入 :插入用户所需的一条经停航班信息。4.2.8 经停航班修改 :修改用户所指定的某条经停航班信息。4.2.9 经停航班删除 :删除用户所指定的某条经停航班信息。4.3.1 航班查询 :按航班号查询相关信息。4.3.2 机场查询

36、:按机场编号查询相关信息。4.3.3 模糊查询 :根据子串匹配模糊查询信息。4.4.1 余票统计 :统计所有航班的剩余票数。4.4.2 价格统计 :统计所有航班中的价格信息。4.5.1 帮助主题 :本程序快捷操作使用说明。4.5.2 关于系统 :介绍本系统的主要功能及基本情况。4.5.3 清屏 Alt+C:清除屏幕信息。附 录64五、试验结果(输入数据与输出结果)I、注册系统登入帐号进入首界面,选择快速登入(输入字母 L)还是免费注册一个新账号 (输入字母 R)图 3.5.1进入注册帐号界面(帐号栏输入 xxxx 密码栏输入 xxxx)图 3.5.2新帐号注册成功,自动跳转到登入界面图 3.5.3附 录65II、登入系统界面输入帐号: 密码:图 3.5.4登入成功后进入欢迎界面图 3.5.5III、按任意键进入本系统

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报