航班售票系统课程设计报告
- 格式:doc
- 大小:267.50 KB
- 文档页数:28
web航班售票系统课程设计一、课程目标知识目标:1. 让学生理解Web航班售票系统的基本原理和功能需求;2. 让学生掌握运用数据库管理航班信息、用户数据和订单数据;3. 让学生掌握HTML、CSS和JavaScript等前端技术,实现用户界面的设计与交互;4. 让学生掌握一种后端编程语言(如Python、Java等),实现航班查询、预订和支付等功能的开发;5. 让学生了解软件测试方法,对Web航班售票系统进行功能测试和性能优化。
技能目标:1. 培养学生运用前端技术设计美观、易用的用户界面;2. 培养学生运用后端技术实现系统的业务逻辑;3. 培养学生使用数据库技术存储和管理数据;4. 培养学生具备团队协作和沟通能力,共同完成项目开发;5. 培养学生运用软件测试方法,提高系统的稳定性和可靠性。
情感态度价值观目标:1. 培养学生对计算机科学技术的兴趣,激发其学习热情;2. 培养学生具备良好的编程习惯,注重代码的可读性和可维护性;3. 培养学生具备解决问题的能力,面对困难时保持积极的心态;4. 培养学生遵循社会主义核心价值观,关注社会热点问题,将所学知识应用于实际生活,为社会发展贡献力量。
本课程旨在帮助学生掌握Web航班售票系统的设计与开发,结合前端、后端和数据库技术,实现实际应用场景下的在线售票功能。
通过本课程的学习,学生将能够独立完成中小型Web项目的开发,为今后从事软件开发工作奠定基础。
同时,注重培养学生的团队协作精神、创新意识和责任感,使他们在学习过程中形成正确的价值观。
二、教学内容1. 系统分析与设计:讲解Web航班售票系统的需求分析、功能模块划分和界面设计;- 教材章节:第1章 系统分析与设计- 内容:系统需求、功能模块、界面设计规范2. 数据库技术:教授MySQL数据库的安装与使用,设计航班、用户和订单等数据表;- 教材章节:第2章 数据库技术- 内容:MySQL安装与配置、数据表设计、SQL语句操作3. 前端技术:学习HTML、CSS、JavaScript,实现用户界面的设计与交互;- 教材章节:第3章 前端技术- 内容:HTML标签、CSS样式、JavaScript基础、DOM操作4. 后端技术:掌握一种后端编程语言(如Python、Java等),实现航班查询、预订和支付等功能;- 教材章节:第4章 后端技术- 内容:后端编程语言基础、Web服务器搭建、接口开发5. 系统集成与测试:教授如何将前端、后端和数据库整合,进行功能测试和性能优化;- 教材章节:第5章 系统集成与测试- 内容:系统框架整合、功能测试、性能优化6. 项目实践:分组进行Web航班售票系统的实际开发,巩固所学知识;- 教材章节:第6章 项目实践- 内容:团队协作、项目开发、问题解决三、教学方法1. 讲授法:通过教师系统地讲解课程理论知识,帮助学生掌握Web航班售票系统的基本原理和关键技术。
航班售票管理系统设计报告一、系统分析(一)可行性分析国际民航业的激烈竞争又迫使担负国际航线运输任务的航空公司必须尽快推出自己的因特网售票系统,而这些又必须由一个安全的网上订票与支付系统作支持。
更重要的还要提供票务管理。
面对不同种类的信息,需要合理的数据库结构来保存数据信息以及有效的程序结构支持各种数据操作的执行。
航空业身处信息时代的电子商务大潮中,加之传统的售票方式已经不能满足现今航空业的发展,于是航空售票管理系统就自然而然被应用。
由于本系统管理主要是对机票的管理,且每个数据内容具有较强的关联性,涉及的计算过程不是很复杂。
因此,比较适合于采用数据库管理。
且航空公司用于机票管理的微机都是PIII以上的机器,在存储量、速度方面都能满足数据库运行的要求。
在技术难度方面,由于有相关参考文献,还有就是网上资料,特别是参考其它程序的功能,因此完全可以实现系统的投资约50万元,待5年后更新,年使用费约10万元,在经济上是可行的。
(二)需求分析1、航班售票管理系统开发目标售票/订票是民航业务中的一个最基本的业务,表面上看,它只是民航业务的一个简单的部分,但是它涉及到资金管理与客户服务等多主面,因此,过去传统的售票方式已经不能满足现代航空业务流量剧增的客观要求,本课程设计便是利用开发工具VF6.0开发一个民航售票管理系统,它能方便快捷地运用在民航业务的营运之中。
2、航班售票管理系统的主要功能本系统设计主要是根据售票业务的基本流程进行的,系统功能十分强大,包括如下几个方面:订票管理、乘客查询与退票管理、查询飞行时刻窗口和系统维护四方面内容。
其中,订票系统至少要满足:(1)每一航班的乘客乘坐飞机的起点、终点、日期和可以使用(预订)的座位等基本信息。
(2)自动显示符合乘客要求的航班及座位是否存在(是否还有空位)(3)查询每一航班的售票订票情况、乘客信息及售票收入金额。
(4)可以按五种方式查询航空公司的航班时刻表信息。
3、航班售票管理系统业务流程分析航班售票系统主要有以下几项管理功能:(1)订票管理:根据乘客的订票信息查询航班信息,查看是否还有余票未售出,为乘客订票,备份数据。
中南大学信息科学与工程学院数据结构课程设计报告课题:专业班级:学号:姓名:指导老师:完成时间:一、设计综述1.设计题目航空客运订票系统2.问题描述每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1, 2 或 3)以及等候替补的客户名单(包括姓名、所需数量)。
3.需求分析(1)查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;(2)承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少余订票额,则需重新询问客户要求。
若需要,可登记排队候补;(3)承办退票业务:根据客户提出的情况(日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。
实现提示:两个客户名单可分别由线性表和队列实现。
为查找方便,已订票客户的线性表应按客户姓名有序,并且,为了插入和删除方便,应以链表作为存储结构。
由于预约人数无法预计,队列也应以链表作为存储结构。
4.完成目标通过对课程设计课题的研究,依靠自己的理解与学习,进行分析,设计,调试,记录等过程,深入了解数据结构( C 语言)的知识与实践操作,将两者相互结合,融会贯通。
二、程序设计1.概要设计1.1 第一个结构体定义了订票客户passenger 所需的全部变量;typedef struct passenger{char name[10];/* 姓名 */int ID[20];// 身份证号int password; // 密码int tickets;/* 订票量 */struct passenger *next;}qnode,*qptr;1.2 第二个结构体用于创建候补客户的存储用循环链表;typedef struct pqueue{qptr front;qptr rear;}linkqueue;1.3 第三个结构图定义了候补客户passenger_wait 所需的全部变量;typedef struct passenger_wait{char name[10];/* 客户姓名 */int ID[20];// 身份证号int tickets_wait;/*订票量*/char grade;/* 舱位等级 */struct passenger_wait *next;}linklist;1.4 第四个结构体则定义了每趟航班所需的基本数据,这里可以初始化,但考虑到这是订票系统,于是没有添加新增航班功能。
飞机售票系统课程设计报告一、课程目标知识目标:1. 让学生理解飞机售票系统的基本概念、功能及工作原理。
2. 让学生掌握飞机售票系统中涉及的航空公司、航班、座位、票价等基本知识点。
3. 让学生了解飞机售票系统在实际应用中的数据处理和存储方法。
技能目标:1. 培养学生运用所学知识分析和设计飞机售票系统的能力。
2. 培养学生使用编程语言或工具实现飞机售票系统基本功能的能力。
3. 培养学生通过实际操作,掌握飞机售票系统的使用方法。
情感态度价值观目标:1. 培养学生对计算机科学和技术领域的兴趣,激发他们探索航空业信息化的热情。
2. 培养学生具备团队协作精神,学会与他人共同解决问题。
3. 培养学生关注社会发展,认识到信息技术在航空业中的重要作用。
课程性质分析:本课程为信息技术或计算机科学与技术相关课程的实践环节,旨在让学生将所学理论知识运用到实际项目中,提高他们的实践能力。
学生特点分析:学生为高中年级学生,具备一定的计算机操作和编程基础,对新鲜事物充满好奇心,善于团队合作。
教学要求:1. 结合课本知识,注重理论与实践相结合,提高学生的动手能力。
2. 注重培养学生的创新意识和解决问题的能力。
3. 强调团队协作,提高学生的沟通与协作能力。
二、教学内容1. 基本概念:介绍飞机售票系统的定义、功能、发展历程及在航空业中的重要性。
关联教材章节:第一章 计算机售票系统概述2. 系统架构:讲解飞机售票系统的整体架构,包括客户端、服务器端、数据库等组成部分。
关联教材章节:第二章 售票系统架构与设计3. 数据库设计:学习飞机售票系统中涉及的表结构设计,如航班信息、座位信息、旅客信息等。
关联教材章节:第三章 数据库设计4. 功能模块:详细介绍飞机售票系统的各个功能模块,如查询航班、预订机票、支付、退改签等。
关联教材章节:第四章 售票系统功能模块设计5. 编程实践:指导学生使用编程语言(如Python、Java等)或工具(如Visual Basic、Access等)实现飞机售票系统的基本功能。
- 专业课程设计I报告题目:民航票务管理与售票系统指导教师成绩评定表民航票务管理与售票系统一、课题容和要求1.1课程简介:本次课程设计的根本要求主要是按照软件工程思想,以SQL Server 2000为后台数据库,以Delphi为前端开发工具,设计并实现一个民航票务管理与售票系统。
其中,系统实现的功能主要有(1)可以进展航班信息、票务信息的添加、修改和删除。
(2)允许普通用户和各类人员查询有关民航航班的时刻表,包括航班号、起点、终点、日期、起飞时刻、到达时刻、剩余座位数、票价、航班所属航空公司等方面的准确信息。
也可以按照终点和日期进展查询。
1.2. 需求描述1.2.1 我把本系统的用户统一分为普通用户和具有信息管理职责的管理员特殊用户,其中,管理员是系统指定的用户,不用注册,且本身也不必具备修改用户信息的功能。
而普通用户初次登陆时是需要注册的,注册完了之后,如果数据成功添加在了数据库的passenger表中,那么显示成功注册,然后重新登陆。
1.2.2可以进展航班信息、票务信息的添加、修改和删除。
该功能只能有管理员实现,其中票务信息我是不允许修改的,只有删除的选项,之所以这么做,第一是票务信息(p_ticket)关联的关联的两表passenger乘客信息表和flight航班信息表都是可以修改的,所以票务信息的修改本质上意义不大;第二就是我的三表都是有外键约束的,所以当票务信息被修改的时候,必然影响到其他主键表,所以技术上也添了麻烦。
1.2.3用户可以对航班信息表进展一定限度的查询,包括按航班号查询,按起点和终点查询和按日期查询。
三种条件选一种1.2.4 售票信息实时更新:具体要做到的是当某个航班被售票的时候,其剩余座位数也要跟着减少一个,相应的退票的时候,座位数也要跟着加一。
需要注意的是用户不具有退票的功能,必须由管理员操作。
1.2.5非功能需求(1) 可读性:程序的源代码要书写规整,要求容易理解,以便于日后程序调试时容易测试和修改。
合肥学院计算机科学与技术系课程设计报告2008~2009学年第二期课程程序设计语言Ⅱ课程设计课程设计名称航空售票系统学生姓名刘艺学号0804032025专业班级网络工程(2)指导教师高玲玲、李红2009年6月一:课程设计题目:航班售票系统实验要求:设计一个航班售票系统系统,能够对航空公司的售票进行管理。
航空公司的售票系统主要包括:航线信息、订票业务、退票业务.1:航线信息包括航班号,飞机号,目的地,订票数,余票数,共5项.现有3条航线:目的地北京,上海,广州。
飞机可乘100人(初始定票数为0,余票数为100)。
将这些信息存入文件airline.dat中。
2:订票业务:(1).客户信息包括姓名,航班号,假设已有3个客户信息存入文件customer.dat。
(2).有新客户订票时,先输入姓名和航班号,查询情况,如果还有余票,就为这个客户办理订票手续,分给客户一个座位号,然后写入文件costomer.dat,并修改文件,若无余票,则输出客户已满3:退票业务:根据客户提出的航班号,办理退票,从airline.dat文件中删除这个客户的信息,并修改airline.dat中相应的航线的订票数和余票数输出全部航线的信息和全部客户信息,退出系统。
二:问题分析:实验的准备工作:(1)、仔细阅读课程设计任务书,明确实验设计的目的、实验内容、实验要求、所需知识点等。
(2)、阅读教材及相关材料,更深入的了解所需知识点,并与其它知识点能够融会贯通,加深对各知识点的了解,使得在进行课程设计的时候能够更好的运用各知识点。
根据题目要求,先定义一个customer类,声明类中的成员,包括name(姓名),ID(证件号码),want(客人要订的票数)。
再定义一个AirInfo类,此类中包括三个成员函数,分别实现1:航班信息.2:订票业务.3:退票业务的功能.航线信息中要包括Num(航班号),Start(航班起飞点), End(航班终点地),Time(航班起飞时间),Count(航班票数),LeftCount(航班剩余票数),havingBookCustomer(已订票的客户).订票业务中需要用到类的调用,调用customer类,访问类中的公有成员name,ID,want,输入订票客户信息,订票成功.退票业务中同样需要类的调用, 调用customer类,访问类中的公有成员name,ID,want,输入退票客户信息,退票成功.还要在类中声明一些成员函数, 有设计航班号,设计航班起飞点,设计航班终点地,设计航班起飞时间,设计航班票数,设计航班剩余票数,设计已订票的客户,获取航班起飞时间日期,航班剩余票数,获取该航班起飞地,获取该航班终点地,获取该航班号,打印该航班的信息的函数.输入新的航班信息,查询航班信息,这些函数均要实现此系统的功能. 三:算法的设计1、通过分析实验要求的功能,确定所需函数,两者结合来分析所需的算法及算法该如何实现。
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 课程设计一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握飞机售票系统的原理、功能和结构;技能目标要求学生能够运用编程语言实现简单的飞机售票系统;情感态度价值观目标要求学生培养对计算机科学和软件工程的兴趣,提高解决问题的能力。
通过分析课程性质、学生特点和教学要求,我们将目标分解为具体的学习成果。
学生将能够:1. 描述飞机售票系统的原理和功能;2. 解释飞机售票系统的结构和组成;3. 使用编程语言实现简单的飞机售票系统;4. 分析并解决飞机售票系统中的问题。
二、教学内容根据课程目标,我们选择和了以下教学内容:1. 飞机售票系统的原理和功能;2. 飞机售票系统的结构和组成;3. 编程语言的基本概念和语法;4. 飞机售票系统的实现和调试。
我们制定了详细的教学大纲,明确了教学内容的安排和进度。
教学内容将按照以下顺序进行:1. 飞机售票系统的原理和功能;2. 飞机售票系统的结构和组成;3. 编程语言的基本概念和语法;4. 飞机售票系统的实现和调试。
三、教学方法我们选择了多种教学方法,以激发学生的学习兴趣和主动性。
包括讲授法、讨论法、案例分析法和实验法。
1.讲授法:通过讲解飞机售票系统的原理、功能和结构,使学生掌握基本概念和知识。
2.讨论法:通过小组讨论,引导学生思考和分析飞机售票系统中的问题,提高解决问题的能力。
3.案例分析法:通过分析实际案例,使学生了解飞机售票系统的应用场景和实际操作。
4.实验法:通过编程实践,让学生动手实现简单的飞机售票系统,培养实际操作能力。
四、教学资源我们选择了适当的教材、参考书、多媒体资料和实验设备作为教学资源。
教材包括《计算机科学导论》和《编程语言基础》;参考书包括《飞机售票系统设计与实现》和《软件工程导论》;多媒体资料包括教学PPT和视频教程;实验设备包括计算机和编程环境。
教学资源将用于支持教学内容和教学方法的实施,丰富学生的学习体验。
(完整word版)飞机订票系统实验报告实验题目:订票系统实验目的:1.了解并掌握数据结构的设计方法,具备初步的独立分析和设计能力;2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
实验要求:●任务:通过此系统可以实现如下功能:●录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)●查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;●订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;●退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
●修改航班信息:当航班信息改变可以修改航班数据文件实验主要步骤:航班端(一)输入航班信息,add()增加航班信息,并保存到save().(二)修改信息,在xiugai()函数里,输入要修改的航班号,选择修改的内容,如修改时间,地点并保存。
客户端(一)输入起始站和终点站,在两者都符合的条件下在search ()函数里查找,并输出航班信息。
(二)订票:用search(),判断是否有符合的航班,有则输出并进行订票,还有输入客户信息。
(三)退票:调用search(),用它的返回值判断是否有符合的航班,有则输入,并删除客户信息。
1)在主函数里先了调用chushihua(),确定有hangban.dat 文件,并让客户或航班端选择相应的模块。
2)定义订票业务函数,在这个函数中首先调用了search 函数查找需要订票的航班,用search函数的返回值判断是否有该航班。
课程设计报告课程名称:高级语言程序设计课程设计姓名:班级学号:指导教师:完成日期:6月20日目录1 课程设计目的与要求 (1)2问题描述 (2)3总体设计 (3)3.1功能分析 (3)3.2系统主要使用的函数 (3)3.3系统使用的主要数据结构 (4)4详细设计 (6)4.1程序总体结构图 (6)4.2程序流程图 (6)5功能测试 (8)5.1航班售票系统 (8)6程序设计调试情况(程序设计及调试过程中碰到的问题及解决的方法) (11)7课程设计小结 (12)参考文献 (13)附录系统源程序 (14)1 课程设计目的与要求高级语言程序设计是本科工科类各专业的重要基础课,课程以影响深远的、传统的、面向过程的优秀编程语言C语言为基础,学习程序设计的基本概念和方法,通过本门课程学习,应使同学掌握高级语言的基本原理,熟练掌握程序设计的基础知识、基本概念;掌握程序设计的思想和编程技巧。
课程设计是在学生已经具备了使用C语言编写简单的应用程序的能力,为使学生对C语言有更全面的理解,进一步提高运用C语言编程解决实际问题的能力,通过提出算法、指定输入输出来设计一个解决方案。
经过该实践环节,培养学生的探索精神和创新能力。
通过答辩训练学生的综合表达能力。
参加本课程设计的学生,应当认真完成本课程设计的全部过程。
并以最终课程设计成果来证明其独立完成各种实际任务的能力。
从而反映出理解和运用本课程知识的水平和能力。
具体如下:(1)数据组织方面尽量使用到:数组、链表、结构体、文件;(2)程序结构方面做到函数调用,尽量采用指针运算;(3)代码编写规范,形成良好的编程习惯;(4)程序须有一定的健壮性和必要的提示信息,考虑问题的多种可能和边界数据。
(5)课设完成须进行答辩,提交课设报告电子稿、装订的打印稿。
课设报告内容包括以下几个方面:●程序的总体设计和算法分析。
●程序流程图、函数说明●源程序代码清单●测试数据和测试过程记录●遇到的问题及解决方法分析●课程设计小结2问题描述航班售票系统:(1)系统以菜单方式工作(2)假设该民航有若干航班,要求实现增加航班和取消某个航班的功能。
(3)查询:根据用户提出的终到站查询航班号、售票情况等航班信息;也可根据航班号,列出该航班已订票的乘客名单。
(4)订票:根据航班号为客户订票,如该航班有余票,则为客户订票;如该航班已满员,则显示相应信息。
(5)退票:按乘客要求退出已预定的机票。
3总体设计3.1功能分析系统提供主界面,各种功能操作以独立的函数为基础,运用对链表操作的技术来实现航班的管理,同时对操作结果在计算机中做永久保存。
)3.1.1航班售票系统(1)订票功能:此功能是Reserve函数来实现的,里面嵌套调用了3个函数Deletereturn,Addcustomer,WriteCustomer,(2)退票功能:我用的是ReturnTicket函数来实现的,里面嵌套调用了3个函数AddReturn,DeleteCustomer,WriteCustomer,(3)修改航线功能:在实现这个功能的时候,必须有航线的增加,取消,和修改三个不同的功能,所以我编写了3个不同的函数,AddAirFlight,DeleteAirFlight,ChangeAirFlight,(4)查询航班及乘客信息功能WriteCustomer的作用在本部分当中体现,它用来输出客户的信息,在Init函数中,我事先置入了3个默认的乘客,分别是我们小组的3个人,OutInfo函数则输出了所有航班的信息3.2系统主要使用的函数int Reserve(char name[],int airNum,int i) /*订票系统函数*/void ReturnTicket (int i,int airNum,int seat) /*退票系统函数*/int DeleteReturn(AirFlight *p) /*删除退票函数*/void AddReturn (AirFlight *p,int seat) /*添加退票信息函数*/void ChangeAirFlight() /*修改航线函数*/void DeleteAirFlight() /*删除航线函数*/void DestroyCustomer(CNode *p) /*删除客户信息函数*/void AddCustomer(AirFlight *p,char *name,int airNum,int seat) /*添加客户信息函数*/void DeleteCustomer(AirFlight *p,int seat) /*删除客户信息函数*/ void AddAirFlight() /*添加航线信息函数*/void WriteAirInfo(FILE *fp) /*输出输出航线函数*/void OutInfo() /*输出所有信息*/void WriteCustomer(FILE *fp) /*输出客户文件函数*/3.3 系统使用的主要数据结构typedef struct Return /*定义退票系统的结构体*/{int seat;struct Return *next;}Return;typedef struct /*定义客户信息的结构体*/{char name[20];int airNum;int seat;}Customer;typedef struct CNode /*定义客户单链表的结构体*/{Customer cust;struct CNode *next;}CNode;typedef struct AirFlight /*定义航班信息的结构体*/{int flight;int plane;int reservation;int availnum;CNode *cHead;Return *rHead;struct AirFlight *next;}AirFlight;typedef struct Airline /*定义航线信息的结构体*/{char dest[20];AirFlight *head;}Airline;Airline airInfo[3]; /*定义三条航线为全局变量*/4详细设计4.1 程序总体结构图图4-1航班售票系统结构图4.2 程序流程图图4-2-1航班售票系统中的AddCustomer()图4-2-2航班售票系统中的ChangeAirFlight()图4-2-3航班售票系统中的operation3()5功能测试5.1航班售票系统图5-2-1运行后文件中的截图图5-2-2航班售票系统主菜单图5-2-3订票提示语图5-2-4订票成功图5-2-5退票成功图5-2-6修改航线提示语图5-2-7增加航线提示语图5-2-8增加航线成功图5-2-8取消航线成功图5-2-8修改航线成功图5-2-9显示乘客信息6程序设计调试情况(程序设计及调试过程中碰到的问题及解决的方法)在程序设计中,我遇到的最大的问题就是结构体变量的定义和链表的运用,应为一开始在学习链表的时候我就感觉到很吃力,所以在编航空售票系统的大程序时,我上网查找了很多资料,有不懂的也去百度,或者在同学之间讨论,至今还有一些不能熟练运用,但和之前相比已经有了很大的进步,我会在今后的学习中进一步巩固。
在调试过程中,也有不少的问题。
比如,漏加了取地址符,导致程序没有错误而无法运行;字符串输入函数getchar的用法出错,导致无法输入菜单命令;头文件的名字和文件名不一致而出错,这是连接时候出现的问题;还有曾遇到,同样一个文件,以.c的后缀运行时有错,以.cpp的后缀运行时就没有错了,老师说这涉及到了兼容性的问题。
总之,由于粗心大意犯的错误,自己是可以找出来的,实在太隐蔽的,我也就只能求助同学或者老师了。
7课程设计小结本次课程设计已经完成,编写好的程序整体上运行与题目要求很吻合,算法大多比较通用,各个函数模块的正确性、完备性、对输入的容错能力以及算法的进一步改进在设计中都有表述,这道题使我熟悉了文件的输入输出操作,也深刻认识到了链表在实际的操作中有多么的难,我会在进一步的学习中,对链表进行深层次的理解。
本次程序编写我从简单入手,在进行复杂的编写过程。
首先我搜集资料,掌握航空售票系统方面的种种相关知识,其次我们对这个系统应该如何编译作了一个简单的思考和讨论,确定要运用到的知识和相关难点,并对这些难点进行解决,最终到发杂的程序上。
回望本次的课程设计,我学到了很多的东西。
无论是枯燥的搜集资料,还是一遍遍地调试程序给我带来的疲惫感,都在最终看到程序正常运行的那刻消失殆尽,感受到了努力付出,然后收获硕果的成就感。
总结我这周的实训,我学到了很多的知识。
不论是理论知识的掌握亦或是实践经验的积累,我都有了进一步的提升。
面对科学实践过程中所遇到的难题,我不能退缩,要严谨,认真,无所畏惧地面对它。
正如本次的课程设计,编写的过程很艰难,一个小小的错误都会导致最终程序无法正常运行。
因此,只有我们每个人认真严谨的完成自己的任务,不出现一丝一毫的马虎,才能获得最后的成功。
本以为掌握课本上所教授的理论知识对于我们当代大学生而言就足够了。
然而,在实训过后才发现这样的理解是十分错误的。
理论知识若没有经过实践的考验,那它便是经不起推敲的。
只有把实践和理论结合起来,用理论知识支持实践,用实践来肯定理论知识,才能提高自己的学习能力和动手能力。
在设计的过程中我们遇到了各种各样的问题,也发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计,把以前所学过的知识重新温故,巩固了所学的知识,也能够了解到自己相对薄弱的环节。
总而言之,本次实训我真的受益匪浅。
小组成员分工:组长:负责修改航线信息和查询航班信息模块组员:负责主程序模块负责订票、退票模块参考文献[1]. 迟剑,刘艳飞等.C语言宝典.北京:电子工业出版社,2009.6[2]. 李恬,邱小平等.C语言程序设计实训与应用教程.北京:清华大学出版社,2010.2[3]. 黄锐军.C#程序设计项目实训教程.北京:化学工业出版社,2009.10[4]. 耿祥义,张跃平.C语言程序设计实用教程.北京:清华大学出版社,2010.11附录系统源程序#include<conio.h>#include<stdio.h>#include<string.h>#include<stdlib.h>typedef struct Return{int seat;struct Return *next;}Return;typedef struct{char name[20];int airNum;int seat;}Customer;typedef struct CNode{Customer cust;struct CNode *next;}CNode;typedef struct AirFlight{int flight;int plane;int reservation;int availnum;CNode *cHead;Return *rHead;struct AirFlight *next;}AirFlight;typedef struct Airline{char dest[20];AirFlight *head;}Airline;Airline airInfo[3];int Reserve(char name[],int airNum,int i){int DeleteReturn(AirFlight *p);void AddCustomer(AirFlight *p,char *name,int airNum,int seat);void WriteCustomer(FILE *fp);FILE *fp;AirFlight *p;int seat;for(p=airInfo[i].head;p&&p->flight!=airNum;p=p->next);if(p==NULL) return -2;if(p->availnum==0) return -1;elseif(p->rHead!=NULL)seat=DeleteReturn(p);elseseat =p->reservation;p->availnum--;p->reservation++;AddCustomer (p,name,airNum,seat);if(!(fp=fopen("customer.txt","w"))){puts("对不起,操作有误,无法打开文件\"customer.txt\"!");return -2;}WriteCustomer(fp);return seat;}void ReturnTicket (int i,int airNum,int seat){void AddReturn(AirFlight*p,int seat);void DeleteCustomer (AirFlight *p,int seat);void WriteCustomer(FILE *fp);FILE *fp;AirFlight *p;for(p=airInfo[i].head;p&&p->flight!=airNum;p=p->next);if(p==NULL)puts("对不起,操作有误,没有找到退票信息!\n");else{AddReturn(p,seat);p->availnum++;p->reservation--;DeleteCustomer(p,seat);if(!(fp=fopen("customer.txt","w"))){puts("对不起,操作有误,无法打开文件\"customer.txt\"!");return;}WriteCustomer(fp);}return;}int DeleteReturn(AirFlight *p){Return *temp;int seat;temp=p->rHead;p->rHead=temp->next;seat=temp->seat;free(temp);return seat;}void AddReturn (AirFlight *p,int seat){Return *temp;temp=(Return *)malloc(sizeof(Return));if(temp==NULL){puts("对不起,操作有误,分配空间失败!");return;}temp->seat=seat;temp->next=p->rHead;p->rHead=temp;}void ChangeAirFlight(){int airFlight,k,changeFlight;AirFlight *p;CNode *pC;puts("请输入您所要修改的航线:\n");scanf("%d",&airFlight);if(0<airFlight&&airFlight<=300) k=0;else if(300<airFlight&&airFlight<=600) k=1;else if(600<airFlight&&airFlight<=900) k=2;else puts("对不起,操作有误,输入无效!");for(p=airInfo[k].head; p&&p->flight!=airFlight;p=p->next);if(p!=NULL){puts("请输入您的新航线:\n");scanf("%d",&changeFlight);p->flight=changeFlight;for(pC=p->cHead; pC; pC=pC->next)pC->cust.airNum=changeFlight;printf("恭喜!航线%d 已成功修改成%d.\n",airFlight,p->flight); }else printf("对不起,不存在该航线%d!\n",airFlight);}void DeleteAirFlight(){void DestroyCustomer(CNode *p);void DestroyReturn(Return *p);void OutInfo();int airFlight,k;AirFlight *p,*pre=NULL;puts("请输入您要取消的航线!\n");scanf("%d",&airFlight);if(0<airFlight&&airFlight<=300) k=0;else if(300<airFlight&&airFlight<=600) k=1;else if(600<airFlight&&airFlight<=900) k=2;else puts("对不起,操作有误,输入无效!");for(p=airInfo[k].head; p&&p->flight!=airFlight;p=p->next) pre=p;if(p==NULL){printf("对不起,不存在该航线%d!\n",airFlight);return;}if(pre==NULL) airInfo[k].head=p->next;else pre->next=p->next;DestroyCustomer(p->cHead);DestroyReturn(p->rHead);free(p);printf("恭喜!已成功取消该航线%d\n",airFlight);OutInfo();}void DestroyCustomer(CNode *p){CNode *pNext;while(p!=NULL){pNext=p->next;free(p);p=pNext;}}void DestroyReturn(Return *p){Return *pNext;while(p!=NULL){pNext=p->next;free(p);p=pNext;}}void AddCustomer(AirFlight *p,char *name,int airNum,int seat){CNode *temp;if(!(temp=(CNode*)malloc(sizeof(CNode)))){puts("对不起,操作有误,开辟空间失败!\n");return;}temp->cust.airNum=airNum;temp->cust.seat=seat;strcpy(temp->,name);temp->next=p->cHead;p->cHead=temp;}void DeleteCustomer(AirFlight *p,int seat){CNode *temp,*pre=NULL;for(temp=p->cHead;temp&&temp->cust.seat!=seat;temp=temp->next) pre=temp;if(temp==NULL){puts("对不起,没有找到相应的客户,请您核对后继续!");return;}if(pre==NULL) p->cHead=temp->next;else pre->next=temp->next;free(temp);}void WriteCustomer(FILE *fp){int i;AirFlight *p;CNode *q;fputs(" ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\n",fp);fputs("以下为本航空公司提供的乘客信息:\n",fp);for(i=0;i<3;i++){fputs("\n\n",fp);fprintf(fp,"降落地点:%s\n",airInfo[i].dest);for(p=airInfo[i].head;p;p=p->next){fputs("\n\n",fp);fputs("航班\t座位号\t乘客姓名\n",fp);for(q=p->cHead;q;q=q->next)fprintf(fp,"%d\t%d\t%s\n",q->cust.airNum,q->cust.seat,q->);}}}void WriteAirInfo(FILE *fp){int i;AirFlight *p,*q;fputs(" ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\n",fp);fputs("以下为本航空公司提供的航班信息:\n",fp);for(i=0;i<3;i++){fputs("\n\n",fp);fprintf(fp,"降落地点:%s\n",airInfo[i].dest);for(p=airInfo[i].head;p;p=p->next){fputs("\n\n",fp);for(q=p;q;q=q->next)fprintf(fp,"\t航班号:%d\n\t飞机号:%d\n\t订票数:""%d\n\t余票数:%d\n",q->flight,q->plane,q->reservation,q->availnum);}}}void OutInfo(){FILE *fp,*fp2;if(!(fp=fopen("airinfo.txt","w"))){puts("对不起,操作有误,无法打开文件\"airinfo.txt\"!\n");return;}WriteAirInfo(fp);fclose(fp);if(!(fp2=fopen("customer.txt","w"))){puts("对不起,操作有误,无法打开文件\"airinfo.txt\"!\n");return;}WriteCustomer(fp2);fclose(fp2);}void AddAirFlight(){int k,airflight;AirFlight *temp;puts("请选择本次航程的着陆点:[0/1/2]\n");puts("☆0.北京\n☆1.上海\n☆2.广州\n");scanf("%d",&k);if(k<0||k>2){puts("对不起,操作有误,输入无效!");return;}printf("请输入航班号:");switch(k){case 0: puts("[1~300]:"); break;case 1: puts("[301~600]:"); break;case 2: puts("[601~900]:");}scanf("%d",&airflight);if(airflight<=300*k||airflight>300*(k+1)){puts("Wrong input!");return;}temp=(AirFlight*)malloc(sizeof(AirFlight));if(temp==NULL){puts("对不起,操作有误,开辟空间失败!\n");return;}temp->availnum=100;temp->reservation=0;temp->cHead=NULL;temp->rHead=NULL;temp->plane=1;temp->flight=airflight;temp->next=airInfo[k].head;airInfo[k].head=temp;printf("恭喜!新航线已成功建立!\n");OutInfo();}void Init(){int i;strcpy(airInfo[0].dest,"Beijing");strcpy(airInfo[1].dest,"Shanghai");strcpy(airInfo[2].dest,"Guangzhou");for(i=0;i<3;i++){airInfo[i].head=(AirFlight*)malloc(sizeof(AirFlight));if(!airInfo[i].head){puts("对不起,操作有误,分配空间失败!");return;}airInfo[i].head->flight=300*i+1;airInfo[i].head->plane=i+1;airInfo[i].head->reservation=0;airInfo[i].head->availnum=100;airInfo[i].head->cHead=NULL;airInfo[i].head->rHead=NULL;airInfo[i].head->next=NULL;}Reserve("梁建军",1,0);Reserve("卿泽华",301,1);Reserve("吕继东",601,2);}void Operation1(){int i,seat;int airNum;char name[20];printf("本航空公司为您提供的航班有:\n");printf("航线1飞往北京:航班号1-300\n");printf("航线2飞往上海:航班号301-600\n");printf("航线3飞往广州:航班号601-900\n");printf("\n若开始订票,请输入您的姓名及航班号:\n");printf("友情提示:姓名和航班号用空格隔开\n");scanf("%s %d",name,&airNum);if(0<airNum&&airNum<=300) i=0;else if(300<airNum&&airNum<=600) i=1;else if(600<airNum&&airNum<=900) i=2;else puts("对不起,操作有误,输入无效!");seat=Reserve(name,airNum,i);if(seat==-2) printf("对不起,查找不到该航班号%d!\n",airNum);else if(seat==-1) puts("对不起,票已售完!");else{printf("\n您已成功预定机票,相关信息如下:\n");printf("乘客姓名:%s\n",name);printf("航班号:%d\n",airNum);printf("座位号:%d\n",seat);printf("目的地:%s\n",airInfo[i].dest);}return;}void Operation2(){int i,seat;int airNum;printf("\n请输入您的飞机号及座位号:\n");printf("友情提示:飞机号和座位号用空格隔开\n");scanf("%d%d",&airNum,&seat);if(0<airNum&&airNum<=900){if(0<airNum&&airNum<=300) i=0;else if(300<airNum&&airNum<=600) i=1;else if(600<airNum&&airNum<=900) i=2;ReturnTicket(i,airNum,seat);printf("操作成功,您的订票已成功退订!\n");printf("期待与您的下次合作,我们将竭诚为您服务!\n");}else puts("对不起,操作有误,输入无效!");return;}void Operation3(){char chm;printf("请您再次选择服务项目:\n\t1.增加航线\n\t2.取消航线\n\t3.修改航线\n");chm=getch();if(chm=='1') AddAirFlight();else if(chm=='2') DeleteAirFlight();else if(chm=='3') ChangeAirFlight();else puts("对不起,操作有误,输入无效!");return;}void main(){int flag=1;char ch;Init();while(flag){printf("\n\t 欢迎进入航空订票系统\t\n");printf("\n\t\t---我们将竭诚为您服务\n");puts("\n\t\t服务菜单\t\n");puts("☆\t\t1.订票\t\t☆\n☆\t\t2.退票\t\t☆\n☆\t\t3.修改航线信息\t☆\n""☆\t\t4.查询航班信息\t☆\n★\t\t5.退出服务\t★");puts("\n");puts("请您选择服务项目:");ch=getch();if(ch=='1') Operation1();else if(ch=='2') Operation2();else if (ch=='3') Operation3();else if(ch=='4'){WriteAirInfo(stdout);WriteCustomer(stdout);OutInfo();}else if(ch=='5') flag=0;else puts("对不起,操作有误,输入无效!");}}。