数据结构课程设计(C语言版)飞机订票系统

合集下载

数据结构课程设计(C语言版)模拟飞机订票系统文档说明

数据结构课程设计(C语言版)模拟飞机订票系统文档说明

数据结构课程设计(C语言版)模拟飞机订票系统文档说明一、问题描述:试设计一个系统完成对航班的录入,查询,修改,订票,退票操作,航班与客户信息以文件的形式保存。

二、需求分析:通过此系统可以实现如下功能:1)录入:可以录入航班情况(数据可以存储在一个数据文件中)。

2)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;3)订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;4)退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

5)修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。

可以建立航班结构体,结构体成员包括航班号、起点站、终点站、飞行时间、预售票总数。

客户结构体成员包括客户姓名、证件号码、订票航班号、订票数额。

三、具体模块划分:根据需求分析,该程序可分为粗略以下七个模块:四、代码设计:该部分包括对数据结构定义的分析,各个主函数的定义分析,关键函数算法的分析。

1、数据结构的定义分析:struct Flight//定义航班结构体{char ID_flight[20]; //航班号char City_started[20]; //航班起飞城市char City_landed[20]; //航班抵达城市char Time_started[10]; //航班起飞时间char Time_landed[10]; //航班抵达时间char Price[10]; //航班票价char Discount[10]; //航班折扣int flight_num; //航班票额}airp[n];struct Guest//定义客户结构体{char name[20]; //客户姓名char ID_guest[20]; //客户证件号char flight_booking[20]; //客户所定航班int booking_sv; //客户订单号int num_booking; //客户所定机票额}gt[n];该部分定义了两个结构体数组分别用于存放航班信息、客户信息。

航空订票系统c语言课程设计

航空订票系统c语言课程设计

航空订票系统c语言课程设计一、课程目标知识目标:1. 让学生掌握C语言中结构体、数组、函数等基本知识点的综合运用,特别是在航空订票系统中的应用。

2. 让学生了解并掌握航空订票系统的基本业务流程,如航班查询、预订、取消预订等功能。

3. 使学生能够通过C语言实现简单的航空订票系统,并了解其背后的数据结构和算法。

技能目标:1. 培养学生运用C语言进行问题分析、程序设计和调试的能力。

2. 培养学生独立思考和团队协作的能力,通过项目实践,提高解决实际问题的能力。

3. 培养学生具备良好的编程习惯,编写出结构清晰、可读性强的代码。

情感态度价值观目标:1. 培养学生对计算机编程的兴趣和热情,激发他们主动探索新知识的精神。

2. 培养学生面对困难和挑战时,保持积极乐观的心态,勇于克服困难,不断进步。

3. 通过航空订票系统课程设计,使学生认识到编程在实际生活中的应用价值,提高他们对社会责任的认识。

课程性质:本课程为C语言程序设计课程的实践环节,以项目为导向,注重培养学生的动手能力和实际应用能力。

学生特点:学生已经掌握了C语言的基本语法和编程技巧,具有一定的编程基础,但缺乏实际项目经验。

教学要求:结合学生特点和课程性质,采用案例教学、任务驱动等方法,引导学生通过实践掌握课程内容,提高编程能力。

在教学过程中,注重启发式教学,鼓励学生提问、讨论,培养他们的问题解决能力和团队协作精神。

最终达到课程目标,使学生能够独立完成航空订票系统课程设计。

二、教学内容1. C语言基础知识回顾:结构体、数组、函数、指针、文件操作等。

2. 航空订票系统业务流程分析:航班查询、预订、取消预订、显示航班信息等。

3. 数据结构和算法:链表、排序算法、查找算法等在航空订票系统中的应用。

4. 编程规范和调试技巧:代码规范、调试方法、性能优化等。

5. 项目实践:根据业务流程,设计并实现航空订票系统各功能模块。

教学内容安排和进度:1. 第一周:C语言基础知识回顾,重点讲解结构体、数组和函数。

C语言数据结构课程设计航空订票实验报告(含源代码)

C语言数据结构课程设计航空订票实验报告(含源代码)

一、设计要求任务通过此系统可以实现如下功能:1.录入航班信息:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据定)2.查询航班:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,确定航班是否满仓);3.订票:(订票情况可以存在一个数据文件中,结构自己设定);4.退票:可退票,退票后修改相关数据文件;5.修改航班信息6.退出程序客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;二、设计概要主界面选择操作项目1.录入航班信息通过单链表这种数据结构,设置了剩余票数,航班号,出发地点,到达地点,起飞日期,出发时间,到达时间,票价。

2.订票输入旅客的姓名,证件号,航班号,和订票张数。

程序中自动查询输入要定的航班号,如果没有则叫其重新输入,有则执行:票数足够则订票成功,票数不充足叫其选择其它航班。

此也采用单链表的数据结构。

3.退票要旅客输入订单号,查询航班号,没有此航班号则叫旅客核对。

有则执行:1)查询旅客的航班2)修改航班的剩余票数。

3)删除旅客订票信息。

4)退票成功,显示剩余票数。

4.查询输入航班号,有与之匹配的航班则输出之,没有则说没有此航班5.修改航班信息查询到要修改的航班,然后直接进行修改6.退出程序三、设计中主要用到的结构体typedef struct P//旅客机票信息{char name[10];//姓名int ordernum;//机票编号char num[10];//旅客证件号struct P *next;int ticketnum;//订票张数int flightn;//航班号}person;typedef struct node//航班信息{ int ticket;//剩余票数int flightnum;//航班号char startadd[20];//出发地点char arriveadd[20];//到达地点char startdate[20];//出发日期char starttime[10];//出发时间char arrivetime[10];//到达时间int price;//票价struct node *next;}LinkList;四、主要函数void dingpiao(LinkList *&L,person *&p)//订票函数void write(LinkList *&L)//航班信息录入函数void showF(LinkList *fn)//展示航班信息的函数void showT(LinkList *L1,person *p1)//展示机票信息的函数void tuipiao(LinkList *&L,person *p)//退票函数void xiugai(LinkList *&L)//修改航班信息的函数void scr()//主界面函数void chaxun(LinkList *&L)//查询函数int main()//主函数,定义为int型五、变量说明1.在主函数中LinkList *h 表示航班节点person *p 表示机票信息节点2.在其他函数中一般也用 r,p,f等表示链表指针i j m等表示int变量六、演示截图1.航班信息录入2.订票3.退票4.查询5.修改航班信息6.主界面、七、实验心得体会1.巩固和加深了对数据结果的理解,提高综合运用本课程所学知识的能力2.培养了我选用参考书,查阅手册及及文献资料的能力。

航空订票系统课程设计(c语言)

航空订票系统课程设计(c语言)

航空订票系统课程设计(c语言)一、教学目标本课程旨在通过学习航空订票系统的开发,让学生掌握C语言编程的基本概念和方法,培养学生的实际编程能力和问题解决能力。

具体目标如下:1.理解C语言的基本语法和数据结构。

2.掌握函数的定义和调用。

3.学习面向对象编程的基本概念。

4.能够使用C语言编写简单的程序。

5.能够运用面向对象编程的思维解决实际问题。

6.能够独立完成航空订票系统的开发。

情感态度价值观目标:1.培养学生的团队合作意识和沟通能力。

2.培养学生的创新思维和问题解决能力。

3.培养学生对编程语言和计算机科学的兴趣和热情。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、函数的定义和调用,以及面向对象编程的基本概念。

具体安排如下:1.C语言的基本语法和数据结构(2课时)。

2.函数的定义和调用(2课时)。

3.面向对象编程的基本概念(2课时)。

4.航空订票系统的开发实践(4课时)。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。

1.讲授法:用于讲解C语言的基本语法、数据结构和函数的定义和调用。

2.讨论法:用于讨论面向对象编程的基本概念,促进学生之间的交流和思考。

3.案例分析法:通过分析航空订票系统的案例,让学生理解和应用所学的编程知识。

4.实验法:通过实际编写程序和开发航空订票系统,培养学生的实际编程能力和问题解决能力。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:选择一本适合学生水平的C语言编程教材。

2.参考书:提供相关的编程参考书籍,供学生自主学习。

3.多媒体资料:制作相关的教学PPT和视频,帮助学生更好地理解和掌握知识。

4.实验设备:提供计算机实验室,让学生能够实际编写程序和进行实验。

五、教学评估本课程的评估方式将包括平时表现、作业和考试三个部分,以全面客观地评价学生的学习成果。

(完整版)数据结构毕业课程设计(C语言版)飞机订票系统

(完整版)数据结构毕业课程设计(C语言版)飞机订票系统

———C语言版课题:飞机订票系统和图的遍历的动态演示姓名:学号:班级:指导教师:订票系统1.需求分析任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;2:主要设计思路:1)算法构造流程图:A:主菜单:B:各分块模板的构造流程图:3:功能函数设计:(1):订票系统主菜单函数menu_select()本函数主要构造系统的主菜单,系统需要实现很多功能,并且各个功能需要各自的函数支持,所以通过主菜单可以轻松的进入各个函数下实现各自的功能,故主菜单显得尤为重要。

其实就是通过键盘输入选择项,然后通过scanf接受,在通过swtich判断进入各个选择项。

(2):工作人员管理函数enter()&change()系统需要各个航班的详细信息,所以需要工作人员把信息输入系统里,以供乘客查询订票。

enter()函数的构造就是为了解决这个问题。

而有可能航班线路更改或由于天气等原因飞机的起飞时间发生了更改,故工作人员需要及时更改信息,所以需要构造change()函数。

(3):列出航班信息的函数list()乘客需要查询各个航班的信息,所以通过系统要能调出上面工作人员已经录入好的航班信息,所以构造本函数来实现这个功能。

(4)乘客具体查询函数search()本函数分两个分函数:search1()和search2(),它们分别实现乘客的按航班查询和按出发及抵达城市的两种查询方案。

C语言程序设计课程设计飞机订票系统的设计

C语言程序设计课程设计飞机订票系统的设计

一、设计内容与设计要求一、设计内容:飞机订票系统1.1问题描述:假设某航空公司只有M架N个座位的飞机,每架飞机每天飞行一趟。

通过该系统来实现机票的订购问题。

1.2功能要求:1)、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:起飞地、目的地航班号、座次号码、座次订出与否标记、订座者的姓名和订座者的身份证号码。

2)、本系统显示这样的菜单:(1)输入航班信息(2)输出航班信息(3)查找航班信息a.显示空座的数量b.显示空座的信息c.显示已订座的信息d.起飞时间(4)订票预约(5)删除定票预约(6)退出系统1、本系统成功执行菜单的每个信息,选项4)和5)将要求额外的输入,并且它们都允许用户收回其输入。

2、查找航班信息既可按线路查,也可按目的地查。

4、在两次运行之间,数据被保存于一个文件里,当本程序重新开始的时候,它首先从该文件读入数据1.3 算法提示:1、数据结构:结构体类型数组2、数据库结构:下表构成该系统的基本数据库。

1.4测试数据:每架飞机的座位N=12,M=51.5 其它:对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能。

二、设计要求1).设计正确,方案合理。

2).界面友好,使用方便。

3).程序精炼,结构清晰。

4).设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。

5).上机演示。

二、进度安排第 18 周星期一上午课题讲解查阅资料星期一下午系统需求分析模块设计星期二上午算法、数据结构设计主程序设计星期二下午各功能模块程序设计修改完善程序星期五下午各功能模块程序设计修改完善程序第 19 周时间待定星期五下午答辩目录一、需求分析 (4)1、程序的功能 (4)2、输入输出的要求 (6)二、概要设计 (9)三、详细设计 (11)1、数据类型 (11)2、模块分析 (12)3、函数的调用关系 (12)四、调试分析以及设计体会 (13)1、测试数据 (13)2、调试分析 (13)3、心得体会 (14)五、使用说明 (15)六、附录 (17)1、参考书目 (17)2、源程序清单(带注释) (17)七、计算机科学与技术系课程设计评分表 (40)一、需求分析1.1 系统功能需求1.1.1程序的功能1.系统管理员功能:1)录入和修改航班和机票的信息:输入航班号,输入起飞港,途径港,到达港,录入起飞时间,到达时间,飞行总共用时,可随时修改航班信息2)输出航班的信息:输入航班号便可输出之前输入的航班信息2.客户需要的功能:1)查找航班信息:a.显示空座的数量b.显示空座的信息c.显示已订座的信息d.起飞时间2)订票预约:查询航班信息后,提前订票预约需要的飞机票,3)删除定票预约4)退出系统1.1.2 主要模块流程图1.1.3 功能描述1.1.4各功能模块的功能描述(1)显示菜单函数:FLIGHT fltlist[5]; PASSENGER psglist[5][12]; ReadFlight(fltlist);PASSENGER* k;k=(PASSENGER*) psglist; ReadPassenger(k);用户可以根据菜单提示,选择相关菜单。

C语言数据结构课程设计航空订票实验报告(含源代码)

数据结构课程设计实验报告设计题目__________________________________________________________________ 设计者__________________________________________________________________ 指导老师__________________________________________________________________ 班级___________________________________________________________________ 学号____________________________________________________________________一、设计要求任务通过此系统可以实现如下功能:1.录入航班信息:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据定)2.查询航班:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,确定航班是否满仓);3.订票:(订票情况可以存在一个数据文件中,结构自己设定);4.退票:可退票,退票后修改相关数据文件;5.修改航班信息6.退出程序客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;二、设计概要主界面选择操作项目1.录入航班信息通过单链表这种数据结构,设置了剩余票数,航班号,出发地点,到达地点,起飞日期,出发时间,到达时间,票价。

2.订票输入旅客的姓名,证件号,航班号,和订票张数。

程序中自动查询输入要定的航班号,如果没有则叫其重新输入,有则执行:票数足够则订票成功,票数不充足叫其选择其它航班。

此也采用单链表的数据结构。

C语言课程设计报告飞机订票系统

C语言课程设计报告飞机订票系统摘要本文是关于C语言课程设计报告飞机订票系统,它具有灵活的菜单,可以让用户轻松查看有关航班信息的详细信息,并用于购买操作。

本文旨在概述程序的全部运行流程,运用相关编程技术来实现订票系统。

关键词:C 语言课程设计,飞机订票系统,编程技术1 引言随着科技的不断发展,传统的人工订票系统已经不能满足人们的复杂需求,订票系统需要采用新技术来改进,以适应现代用户的需求。

为了建立一个高效的订票系统,我们开发了一个飞机订票系统。

它具有基于菜单式界面的灵活性,可以有效地实现飞机航班信息的查询,购票和航班信息的管理。

本报告着重介绍了构筑飞机订票系统的过程,旨在介绍编程技术以及每个模块的函数、功能实现,并概述程序的全部运行流程。

2 技术框架编写本程序的主要语言是C,采用层次功能模块结构设计,分为用户界面,数据管理,查询服务,支付服务和关系维护四个主要模块。

(1)用户界面用户界面模块主要实现功能是提供用户访问的菜单界面,用户可以在输入信息后,访问系统并根据输入信息获取反馈,进行下一步操作。

(2)数据管理数据管理包含数据结构和文件管理模块,它用来存储和管理航班信息、乘客信息等有关数据,数据在使用后可以及时写入文件。

(3)查询服务查询服务模块提供用户查询航班信息所必需的功能,根据用户输入的查询条件,提供精确的查询结果。

(4)支付服务支付服务模块用来实现订票系统和外围支付系统或服务的接口,以进行订票支付操作,以保证系统订票的安全性。

(5)关系维护关系维护模块主要负责订票系统的关系维护,保证数据的一致性,以及相联的航班和乘客信息之间的一致性。

3 设计实现(1)用户界面模块用户界面模块主要是用户与系统的交互界面,用C语言的标准输入输出实现,通过“while-switch”语句实现对不同功能的跳转。

(2)数据管理模块数据管理模块采用数组和二维字符串实现,能够有效地存储和进行订票,查询,修改和删除数据。

C语言课程设计报告飞机订票系统

C语言课程设计题目:飞机订票系统专业:。

学号:。

:。

任课教师:。

C语言课程设计报告一、课程设计报告正文(1)课程设计题目的原文;假定民航机场共有n个航班:航班号、起始站、终点站、飞机号、飞机时间、乘员定额、余票量。

试设计一民航订票系统,使之能提供下列服务:航班信息录入功能(文件保存)完成航班信息浏览功能;查询航线(至少一种查询方式)。

(2)题目的分析(需求分析);任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中)浏览:航班信息浏览功能需要提供显示操作;查询:可提供按照航班号、起点站、终点站、飞行时间、查询,可以查询某个航线的情况(如,输入航班号,起飞抵达城市,确定航班是否满仓);另外要提供键盘式选择菜单以实现功能选择。

要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。

可以建立航班结构体,结构体成员包括航班号、起点站、终点站、飞行时间、预售票总数、已售票数。

(3)整体设计与模块划分;根据需求分析,该程序可分为以下四大模块:(4)代码设计;包括——各功能模块的流程图;重要模块中关键部分的代码分析;关键函数的算法设计和分析等等;二、航班基本信息输入模块航班信息录入函数:航班信息浏览函数:[流程图]显示信息查询模块:分析:基本信息的查询按查询可供选择的方式比较丰富,可按航班号查询。

在查询小模块中采用了直接查找的方法。

本模块可以通过多种查询方式进行完善。

这是本程序没有做的地方。

[流程图](一)核心源程序清单和执行结果:a)源程序清单:#include<stdio.h>#include<stdlib.h>#include<io.h>#include<math.h> //标准输入、输出头文件#include<string.h> //包含字符串函数处理头文件#include<process.h> //包含access函数的头文件#define N 1000 //定义最多的航班数#define PRINT "%d\t\t%s\t\t%s\t\t星期%s\t\t%d\n ",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count //宏定义输出格式struct air //定义结构体数组{int num; //定义航班号char start[20]; //航班起始站char over[20]; //终点站char time[10]; //飞行时间int count; //机票数量}s[N];int i,m=0; //定义全局变量char ii[10];void add(); //函数声明增加航班信息函数void print(); //显示航班信息void search(); //查找航班信息void read(); //读取文件void save(); //保存文件void output(); //输出格式void chushihua(); //系统初始化void build(); //建立数据文件void main() //主函数{int j;chushihua(); //系统初始化判断是否存在原始数据文件printf(" O(^_^)O欢迎使用飞机订票系统O(^_^)O \n"); //打印出系统主界面do{printf("===================================================================== =========== ");printf(" 1.增加航班信息\n"" 2.浏览航班信息\n"" 3.查找航班信息(按航班号)\t\t\n"" 0.退出\n");printf("================================================================================ ");printf("请在0-3中选择以回车键结束:");scanf("%d",&j);switch(j){case 1: add(); //调用增加航班函数break;case 2:print(); //调用显示模块break;case 3:search(); //调用查找模块break;case 0: //退出系统save();printf("使用,再见!( ^_^ )/~~ \n ");break;}}while(j!=0); //判断是否调用其他函数}void chushihua() //定义系统初始化函数{if(access("hangban.dat",0)){build();}elseread();}void build() //定义建立数据文件函数{FILE *fp; //定义文件指针if((fp=fopen("hangban.dat","wb"))==NULL) //打开文件并判定是否出错{printf("创建文件失败! "); //打印出错提示getchar();return;}printf("请依次输入航班信息(以回车键结束):\n"); //打印提示信息printf("-------------------------------------------------------------------------- \n");for(i=0;i<N;i++){printf("请输入航班号: ");scanf("%d",&s[i].num); //输入航班号printf("请输入起始站: ");scanf("%s",s[i].start); //输入起始站printf("请输入终点站: ");scanf("%s",s[i].over); //输入终点站printf("请输入时间(星期几): ");scanf("%s",s[i].time); //输入时间printf("请输入机票数: ");scanf("%d",&s[i].count); //输入机票数fwrite(&s[i],sizeof(struct air),1,fp);m++;printf("添加完毕,是否继续添加?请键入y或n以回车键结束:");scanf("%s",ii);if(strcmp(ii,"y")!=0) //判断是否继续添加航班信息{fclose(fp); //关闭文件return;}}}void read() //定义读取文件函数{FILE *fp;if((fp=fopen("hangban.dat","r"))==NULL){printf("创建文件失败! ");getchar();return;}i=0;while(!feof(fp)){fread(&s[i],sizeof(struct air),1,fp); //逐块读取数据i++;m++; //计算存在航班数}m--;fclose(fp);}void save() //定义保存函数{FILE *fp;if((fp=fopen("hangban.dat","wb"))==NULL){printf("创建文件失败! ");getchar();return;}for(i=0;i<m;i++) //逐块保存数据fwrite(&s[i],sizeof(struct air),1,fp);fclose(fp);}void add() //定义增加航班信息函数{do{printf("请依次输入您要增加的航班信息(以回车键结束): \n"); //打印提示信息printf("-------------------------------------------------------------------------- \n");printf("请输入航班号: ");scanf("%d",&s[m].num); //读取航班号printf("请输入起始站: ");scanf("%s",s[m].start); //读取起始站printf("请输入终点站: ");scanf("%s",s[m].over); //读取终点站printf("请输入时间: ");scanf("%s",s[m].time); //读取时间printf("请输入机票数: ");scanf("%d",&s[m].count); //读取机票数m++;printf("添加完毕,是否继续添加?请键入y或n以回车键结束:");scanf("%s",ii);}while(!strcmp(ii,"y")); //判断是否继续添加}void output() //定义输出格式函数{printf("航班号\t\t起始站\t\t终点站\t\t时间\t\t机票数\n"); //信息标题for(i=0;i<m;i++)printf(PRINT);//打印出信息}void print() //定义显示航班信息函数{printf("\n目前我们有如下航班:\n");output(); //调用输出格式函数printf("\n请按回车键返回上层菜单");getchar();getchar();}void search() //定义查询函数{int n;do{printf("\n请输入航班号:");scanf("%d",&n); //输入查询的航班号for(i=0;i<m;i++){if(s[i].num==n) //按航班号判定输出条件{printf("\n您所查找的航班信息为:\n ");printf("航班号\t\t起始站\t\t终点站\t\t时间\t\t机票数\n\n");printf(PRINT); //显示信息printf("\n查询完毕,按回车键继续");getchar();getchar();return;}}printf("\n对不起,没有您需要的信息!\n ");printf("是否重新查找?请键入y或n以回车键结束");scanf("%s",ii);}while(!strcmp(ii,"y"));//判定是否重新查找}1)第一次运行程序(输入初始数据)界面提示输入原始数据:请输入航班号→请输入起始站→请输入终点站→请输入飞行时间→请输入机票数。

c语言民航订票系统课程设计

c语言民航订票系统课程设计一、课程目标知识目标:1. 让学生掌握C语言中数组、结构体、函数等基本概念及其应用;2. 让学生了解民航订票系统的基本业务流程,理解系统设计的基本原则;3. 使学生能够运用C语言实现简单的民航订票系统功能,如用户注册、航班查询、购票、退票等。

技能目标:1. 培养学生运用C语言进行程序设计的能力,特别是针对民航订票系统这种实际问题的解决能力;2. 提高学生分析问题、设计算法、编写程序、调试程序的能力;3. 培养学生团队协作能力,通过小组合作完成课程设计。

情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养他们主动探索新知识的热情;2. 培养学生面对实际问题时,具备积极解决问题的态度,树立正确的价值观;3. 通过课程设计,使学生认识到编程对于解决现实问题的意义,提高社会责任感。

分析课程性质、学生特点和教学要求,本课程目标旨在让学生在掌握C语言基础知识的基础上,通过实际项目的设计与实现,提高编程能力和解决实际问题的能力。

同时,注重培养学生团队协作精神,提高他们的情感态度价值观,为将来的职业发展打下坚实基础。

通过本课程的学习,学生将能够独立或协作完成一个简单的民航订票系统,并在实践中不断提高自己的编程技能和综合素质。

二、教学内容1. C语言基础知识回顾:数组、结构体、函数、指针等基本概念及其应用。

2. 民航订票系统需求分析:介绍系统业务流程,分析用户需求,明确系统功能模块。

3. 系统设计:讲解如何运用C语言进行系统设计,包括模块划分、数据结构设计、接口设计等。

4. 编程实现:- 用户注册与登录模块:实现用户注册、登录、修改密码等功能;- 航班查询模块:实现按航班号、出发地、目的地等条件查询航班信息;- 购票模块:实现用户购票、选择座位、支付等功能;- 退票模块:实现用户退票、退款等功能;- 管理员模块:实现航班信息管理、用户管理、订单管理等功能。

5. 系统测试与调试:教授学生如何进行系统测试,找出并修复程序中的错误。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

———C语言版课题:飞机订票系统和图的遍历的动态演示姓名:学号:班级:指导教师:订票系统1.需求分析任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;2:主要设计思路:1)算法构造流程图:A:主菜单:B:各分块模板的构造流程图:3:功能函数设计:(1):订票系统主菜单函数menu_select()本函数主要构造系统的主菜单,系统需要实现很多功能,并且各个功能需要各自的函数支持,所以通过主菜单可以轻松的进入各个函数下实现各自的功能,故主菜单显得尤为重要。

其实就是通过键盘输入选择项,然后通过scanf接受,在通过swtich判断进入各个选择项。

(2):工作人员管理函数enter()&change()系统需要各个航班的详细信息,所以需要工作人员把信息输入系统里,以供乘客查询订票。

enter()函数的构造就是为了解决这个问题。

而有可能航班线路更改或由于天气等原因飞机的起飞时间发生了更改,故工作人员需要及时更改信息,所以需要构造change()函数。

(3):列出航班信息的函数list()乘客需要查询各个航班的信息,所以通过系统要能调出上面工作人员已经录入好的航班信息,所以构造本函数来实现这个功能。

(4)乘客具体查询函数search()本函数分两个分函数:search1()和search2(),它们分别实现乘客的按航班查询和按出发及抵达城市的两种查询方案。

(5)票务管理函数book()&quit()通过book()函数可以实现乘客的订票操作,通过quit()可以实现乘客的退票操作。

(6)文件操作函数save()&load()3.源程序代码:(WIN TC下运行)#include<dos.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#define N 20#define Q 40/*定义数据结构*//*乘客信息*/typedef struct{char number[10];/*编号*/char id[20]; /*证件号*/char name[10]; /*姓名*/int count; /*订票数*/char flightname[10];/*乘坐航班号*/}GUEST;/*航班信息*/typedef struct{char planenumber[10];/*航班号*/char Take_off_city[20];/*起飞城市*/char Arrived_in_city[20];/*抵达城市*/char takeoff_time[20];/*起飞时间*/char Landing_time[20];/*降落时间*/int shipping; /*舱位数*/char price[5]; /*票价*/char discount[5]; /*折扣*/GUEST guest[20];int sit;}FLY;/*菜单函数,函数返回值为整数,代表所选的菜单项*/ menu_select(){int c;printf("按任意键返回主菜单\n");/*提示压任意键继续*/getch(); /*读入任意字符*/printf(" Welcome to\n\n");printf(" Tickets Booking System\n\n");printf(" ********************MENU****************\n\n");printf(" 0. 输入航班信息\n");printf(" 1. 列出航班的信息\n");printf(" 2. 按航班号查询航班信息\n");printf(" 3. 按城市来查询航班\n");printf(" 4. 订票程序\n");printf(" 5. 退票系统\n");printf(" 6. 修改飞机航班的信息\n");printf(" 7. 保存文件\n");printf(" 8. 读取和下载文件\n");printf(" 9. 退出\n");printf(" *****************************************\n\n");do{printf("\n 输入你的选择项(0~9):"); /*提示输入选项*/scanf("%d",&c); /*输入选择项*/}while(c<0||c>9); /*选择项不在~9之间重输*/return c; /*返回选择项,主程序根据该数调用相应的函数*/}/*输入函数*/int enter(FLY t[]){int i,k,n,m,w,j;char *s;printf("输入航线总数(n<=40):");/*输入航线总数*/scanf("%d",&n);while(n>40||n<0){printf("输入错误!!再次输入(0<n<=40):");/*输入航线总数*/scanf("%d",&n);}printf(" 输入航班的信息\n\n");/*提示信息*/printf("航班号起飞城市降落城市出发时间降落时间剩下的座位价格折扣\n");printf("------------------------------------------------------------------------------\n");for(i=0;i<n;i++){scanf("%s",t[i].planenumber);/*输入姓名*/scanf("%s",t[i].Take_off_city);/*输入起飞城市*/scanf("%s",t[i].Arrived_in_city);/*输入降落城市*/scanf("%s",t[i].takeoff_time);/*输入起飞时间*/scanf("%s",t[i].Landing_time);/*输入降落时间*/scanf("%d",&t[i].shipping);/*输入舱位数*/scanf("%s",t[i].price);/*输入票价*/scanf("%s",t[i].discount);/*输入折扣*/}printf("-----------------------------------------------------------------------------\n"); for(i=0;i<n;i++)t[i].sit=0;return n; /*返回记录条数*/}/*显示记录,参数为记录数组和记录条数*/void list(FLY t[],int n){int i;printf("航班号起飞城市降落城市出发时间降落时间剩下的座位价格折扣\n");printf("------------------------------------------------------------------------------\n");for(i=0;i<n;i++)printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumber,t[i].Take_off_city,t[i].Ar rived_in_city,t[i].takeoff_time,t[i].Landing_time,t[i].shipping,t[i].price,t[i].discount); printf(" ************************end*******************\n");}/*按航班号查找记录*/void search1(FLY t[],int n){char s[20]; /*保存待查找航班名字符串*/int i;printf("输入你想查找的航班名:");scanf("%s",s); /*输入待查找航班名*/for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if(strcmp(s,t[i].planenumber)==0) /*记录中的航班名和待比较的是否相等*/break; /*相等,则返回该记录的下标号,程序提前结结束*/}if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("没有找到\n");else{printf("航班号起飞城市降落城市出发时间降落时间剩下的座位价格折扣\n"); /*显示记录*/printf("------------------------------------------------------------------------------\n");printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumber,t[i].Take_off_city,t[i].Ar rived_in_city,t[i].takeoff_time,t[i].Landing_time,t[i].shipping,t[i].price,t[i].discount); }}/*按起降城市查找记录*/void search2(FLY t[],int n){char s1[20];char s2[20];int i;printf("输入起飞城市名称:");scanf("%s",s1); /*输入起飞城市名*/printf("输入降落城市名称:");scanf("%s",s2); /*输入降落城市名*/for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if((strcmp(s1,t[i].Take_off_city)==0)&&(strcmp(s2,t[i].Arrived_in_city)==0)) /*记录中的城市和待比较的是否相等*/break; /*相等,则返回该记录的下标号,程序提前结结束*/}if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("没有找到\n");else{printf("航班号起飞城市降落城市出发时间降落时间剩下的座位价格折扣\n"); /*找到,显示记录*/printf("------------------------------------------------------------------------------\n");printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumber,t[i].Take_off_city,t[i].Ar rived_in_city,t[i].takeoff_time,t[i].Landing_time,t[i].shipping,t[i].price,t[i].discount); }}/*订票*/void book(FLY t[],int n){char s[20],number1[10],name1[10],id1[20],flightname1[10];int i,j=0,m,k,count1;printf("输入你想预订的票数:");scanf("%d",&m);printf("号码姓名证件号订的票数航班号\n"); /*提示信息*/printf("------------------------------------------------------------\n");for(k=0;k<m;k++){scanf("%s",number1);scanf("%s",name1);/*输入订票客户姓名*/scanf("%s",id1);/*输入证件号*/scanf("%d",&count1);/*输入订票票数*/scanf("%s",flightname1);/*输入航班号*/for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if(strcmp(flightname1,t[i].planenumber)==0) /*记录中的航班名和待比较的是否相等*/ {j=t[i].sit;strcpy(t[i].guest[j].number,number1);strcpy(t[i].guest[j].name,name1);strcpy(t[i].guest[j].id,id1);t[i].guest[j].count=count1;strcpy(t[i].guest[j].flightname,flightname1);t[i].shipping=t[i].shipping-count1;t[i].sit++;break; /*相等,则返回该记录的下标号,程序提前结结束*/}}if(i>n-1) /*如果整数i值大于n-1,说明没找到*/{printf("对不起!没有此航班\n");m=m+2;k++;}}}/*退票*/void quit(FLY t[],int n){char s1[20],s2[20]; /*保存待查找航班名和证件号字符串*/int i,k,j,h,l,ch;printf("请输入你想退订的航班号:");scanf("%s",s1); /*输入待查找航班名*/printf("请输入你的证件号:");scanf("%s",s2); /*输入待查找证件号*/printf("号码姓名证件号订的票数航班号\n"); /*显示提示*/printf("------------------------------------------------------------\n");for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{for(j=0;j<t[i].sit;j++)if((strcmp(s1,t[i].guest[j].flightname)==0)&&(strcmp(s2,t[i].guest[j].id)==0)){printf("%-11s%-16s%-16s%-14d%-10s\n",t[i].guest[j].number,t[i].guest[j].name,t[i].guest[j].i d,t[i].guest[j].count,t[i].guest[j].flightname);t[i].shipping=t[i].shipping+t[i].guest[j].count;l=j;h=i;break;}}i=h;if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("没有找到\n");else{printf("你是否确认删除(1/0)\n"); /*确认是否要删除*/scanf("%d",&ch); /*输入一个整数或*/if(ch==1) /*如果确认删除整数为*/{for(k=l+1;k<t[i].sit;k++){strcpy(t[i].guest[k-1].number,t[i].guest[k].number); /*将后一条记录的姓名拷贝到前一条*/ strcpy(t[i].guest[k-1].name,t[i].guest[k].name);strcpy(t[i].guest[k-1].id,t[i].guest[k].id);t[i].guest[k-1].count=t[i].guest[k].count;strcpy(t[i].guest[k-1].flightname,t[i].guest[k].flightname);}t[i].sit--;}printf("退票成功!!\n");/*提示退票成功*/}}/*修改航班信息*/void channge(FLY t[],int n){char s[20]; /*要删除记录的姓名*/int i,j;printf("请输入你要修改的航班号:"); /*提示信息*/scanf("%s",s);/*输入航班名*/for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if(strcmp(s,t[i].planenumber)==0) /*记录中的航班名和待比较的是否相等*/break; /*相等,则返回该记录的下标号,程序提前结结束*/}if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("没有找到\n");else{printf("航班号起飞城市降落城市出发时间降落时间剩下的座位价格折扣\n"); /*找到,显示原先记录*/printf("------------------------------------------------------------------------------\n");printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7s\n",t[i].planenumber,t[i].Take_off_city,t[i].Ar rived_in_city,t[i].takeoff_time,t[i].Landing_time,t[i].shipping,t[i].price,t[i].discount); printf("please input the new information:\n");scanf("%s",t[i].planenumber);/*输入航班名*/scanf("%s",t[i].Take_off_city);/*输入起始城市*/scanf("%s",t[i].Arrived_in_city);/*输入终点城市*/scanf("%s",t[i].takeoff_time);/*输入起飞时间*/scanf("%s",t[i].Landing_time);/*输入降落时间*/scanf("%d",t[i].shipping);/*输入座位号*/scanf("%s",t[i].price);/*输入票价*/scanf("%s",t[i].discount);/*输入折扣*/}}/*保存资料*/void save(FLY t[],int n){int i,j;FILE *fp; /*指向文件的指针*/if((fp=fopen("record1.txt","wb"))==NULL) /*打开文件,并判断打开是否正常*/{printf("can not open file\n");/*没打开*/exit(1); /*退出*/}printf("\n保存文件\n"); /*输出提示信息*/fprintf(fp,"%d",n); /*将记录数写入文件*/fprintf(fp,"\r\n"); /*将换行符号写入文件*/for(i=0;i<n;i++){fprintf(fp,"%s %s %s %s %s %d %s%s",t[i].planenumber,t[i].Take_off_city,t[i].Arrived_in_city,t[i].takeoff_time,t[i].Landing_ time,t[i].shipping,t[i].price,t[i].discount);fprintf(fp,"\r\n"); /*将换行符号写入文件*/fprintf(fp,"%d",t[i].sit); /*将记录数写入文件*/fprintf(fp,"\r\n"); /*将换行符号写入文件*/for(j=0;j<t[i].sit;j++){fprintf(fp,"%s %s %s %d%s",t[i].guest[j].number,t[i].guest[j].name,t[i].guest[j].id,t[i].guest[j].count,t[i].guest[ j].flightname);/*格式写入记录*/fprintf(fp,"\r\n"); /*将换行符号写入文件*/}}fclose(fp);/*关闭文件*/printf("****恭喜!保存成功***\n"); /*显示保存成功*/}/*读入函数,参数为结构体数组*/int load(FLY t[]){int i,n,j;FILE *fp; /*指向文件的指针*/if((fp=fopen("record1.txt","rb"))==NULL)/*打开文件*/{printf("不能打开\n"); /*不能打开*/exit(1); /*退出*/}fscanf(fp,"%d",&n); /*读入记录数*/for(i=0;i<n;i++){fscanf(fp,"%s %s %s %s %s %d %s%s",t[i].planenumber,t[i].Take_off_city,t[i].Arrived_in_city,t[i].takeoff_time,t[i].Landing_ time,&t[i].shipping,t[i].price,t[i].discount);fscanf(fp,"%d",&t[i].sit); /*读入记录数*/for(j=0;j<t[i].sit;j++)fscanf(fp,"%s %s %s %d%s",t[i].guest[j].number,t[i].guest[j].name,t[i].guest[j].id,&t[i].guest[j].count,t[i].guest [j].flightname); /*按格式读入记录*/}fclose(fp); /*关闭文件*/printf("你已经成功从文件读取数据\n\n\n\n"); /*显示读取成功*/return n; /*返回记录数*/}/*主函数*/main(){ int i;FLY flight[Q];int length; /*保存记录长度*/for(;;)/*无限循环*/{switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/ {case 0:length=enter(flight);break;/*输入记录*/case 1:list(flight,length);break; /*显示全部记录*/case 2:search1(flight,length);break; /*查找记录*/case 3:search2(flight,length);break; /*查找记录*/case 4:book(flight,length);break; /*订票*/case 5:quit(flight,length);break; /*退票*/case 6:channge(flight,length);break; /*修改航班信息*/ case 7:save(flight,length);break; /*保存文件*/case 8:length=load(flight); break; /*读文件*/case 9:exit(0); /*如返回值为则程序结束*/}}}4.系统运行时窗口截图:(VC6.0下的运行结果)订票系统菜单窗口0.输入航班的信息1.列出航班的信息2.按航班号查询航班信息3.按城市来查询航班4.订票程序5.退票系统6.修改飞机航班的信息7.保存文件8.读取文件、下载文件图的遍历过程演示一.需求分析:设计程序完成如下功能:对给定的图的结构和起点,产生深度优先遍历和广度优先遍历,并列出求解的过程动态演示。

相关文档
最新文档