航空订票系统设计报告

合集下载

数据结构课程(航空订票系统)设计报告

数据结构课程(航空订票系统)设计报告

航空客运订票系统1、需求分析航空客运订票的业务活动包括:查询航线、客票预订和办理退票等。

试设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。

【基本要求】(1)每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量);(2)作为示意系统,全部数据可以只放在内存中;(3)系统能实现的操作和功能如下:a、查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行、最近一天航班的日期和余票额;b、承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户班里订票手续,输出作为好;若已满或者余票少于订票额,则需要重新询问客户要求。

若需要,可等级排队侯补;c、承办退票业务:根据客户提供的情况(航班),为客户办理退票手续,然后查询该航班是否有人排队侯补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队侯补的客户。

(4)开始已初始化3条航线(如下),可按操作提示选择“显示所有航线”查看,客户信息与新航线信息可根据测试需要自行添加,具体情况请见下面测试结果。

【选做内容】a、输出所有航线信息;b、管理员系统:通过密码认证后可查看所有航班的订票情况,可根据需要增加新的航线。

2、概要设计由于“航线”可只用一条单链表记录,故采用全局变量,减少参数的传递。

1、定义“航线”类型ADT Lairline{数据对象:D={ai|ai∈航线链表集,i=1,2,3……,n,n>=0}数据关系:R1={<ai-1,ai>| ai-1,ai∈D,i=1,2,3……,n }基本操作:Lairline search_line() //按航班号查找航班Lairline search_plant() //按飞机号查找航班Lairline search_day() //按飞行日期查找航班Lairline search_addr() //按航班终点查找航班void more() //设计者信息void guide() //主菜单界面void insert_line() //插入新航班void print_customer(airline *p) //显示航班客户信息void admin() //进入管理员操作系统void book() //订票系统void waited(airline *p) //排队订票系统void refund() //退票系统void search() //航班查询系统void InitLine() //初始化航线信息void printline() //显示所有航班信息} ADT Lairline2、主程序void main(){初始化;do{接受命令;处理命令(调用相应函数);}while(“命令”!=“退出”);}3、调用关系3、详细设计1、航线,客户的存储结构typedef struct customer{ //客户信息char name[20]; //客户姓名int num; //订票量int level; //舱位等级customer *next;}customer,*Lcustomer;typedef struct airline{ //航线信息char end_addr[20]; //航线终点char line_num[5]; //航班号char plant_num[8]; //飞机号int day; //飞行日期int total; //定员int left; //剩余票数customer *booked; //已定客户信息customer *wait; //排队等候订票信息airline *next;}airline,*Lairline;2、链表的各种操作Lairline search_line() //按航班号查找航班Lairline search_plant() //按飞机号查找航班Lairline search_day() //按飞行日期查找航班Lairline search_addr() //按航班终点查找航班void more() //设计者信息void guide() //主菜单界面void insert_line() //插入新航班void print_customer(airline *p) //显示航班客户信息void admin() //进入管理员操作系统void book() //订票系统void waited(airline *p) //排队订票系统void refund() //退票系统void search() //航班查询系统void InitLine() //初始化航线信息void printline() //显示所有航班信息部分操作的算法或伪代码Lairline search_line() //按航班号查找航班{char a[5];airline *p;p=L->next;PR("请输入航班号");SC("%s",a);for(;p;p=p->next)if(!strcmp(a,p->line_num)) break;return p;}void insert_line() //插入新航班{airline *p,*q;int flag=1;for(;flag;){q=(Lairline)malloc(sizeof(airline));PR("请输入航班号:");SC("%s",q->line_num);for(p=L;p->next;p=p->next)//判断航线插入位置if(strcmp(p->next->line_num,q->line_num)>=0)break;if(p->next&&strcmp(p->next->line_num,q->line_num)==0)//航线存在的情况{PR("航班已存在,请重新输入\n");continue;}按照提示输入新航线信息;PR("增加航班成功,是否继续增加\n继续(1)\n返回(0)");SC("%d",&flag);}}void admin() //进入管理员操作系统void admin() //进入管理员操作系统{int i,flag,tag;char a[20];airline *p;设置身份验证,只有密码正确才能进入,否则返回主程序;for(tag=1;tag;){PR("请选择操作\n查询航班订票情况(1)\n增加新航班(2)\n");SC("%d",&flag);if(flag==1){航线存在则显示航线客户信息,否则显示航线不存在;}else if(flag==2)insert_line();//增加新航线elsePR("操作错误,请按提示操作\n");PR("请选择操作\n继续(1)\n退回主菜单(0)\n");SC("%d",&tag);}guide();}void book() //订票系统{int i;int flag=0;airline *p;customer *cst,*c;PR("请输入查询航班的方式:\n");选择航线查找方式查找航线;if(p){航线存在,输入订票信息(包括客户姓名,订票量,票等级);if(cst->num<=p->left){票数满足,将客户信息添加到已定票客户名单;}else{余票不足,询问客户是否进行排队等候,若是,则将客户名单添加到排队订票名单;}}elsePR("没有该航班\n");guide();}void waited(airline *p) //排队订票系统{int flag;customer *q,*q0,*h;if(!p->wait) return;q=(customer *)malloc(sizeof(customer));q->level=0;q->num=123;strcpy(q->name,"00000");q->next=p->wait;h=q;for(;p->left>0&&q->next;){if(q->next->num<p->left){PR("%s,您正在排队定%d张票,现有票,是否定\n是(1)\n否(0)\n",q->next->name,q->next->num);SC("%d",&flag);if(flag){q0=q->next;q->next=q->next->next;q0->next=p->booked;p->booked=q0;p->left=p->left-q0->num;PR("排队订票成功\n\n");}}elseq=q->next;}p->wait=h->next;}void refund() //退票系统{int flag;char a[20];airline *p;customer *c,*c1;根据客户提供信息先找到航班(search_line())查找客户信息所在结点,若没有则返回主程序,若找到则删除节点,并询问排队客户是否订票(waited(p));}void search() //航班查询系统{int i;int flag=0;airline *p;PR("请输入查询航班的方式:\n");PR("航班号---->1\n");PR("飞机号---->2\n");PR("飞行日期-->3\n");PR("航班终点-->4\n");SC("%d",&i);for(;!flag;)switch(i){case 1: p=search_line();flag=1;break;case 2: p=search_plant();flag=1;break;case 3: p=search_day();flag=1;break;case 4: p=search_addr();flag-=1;break;default:PR("操作错误,请重新输入\n");break;}if(p){PR("终点站航班号飞机号飞行周日余票量\n");PR("%-20s%10s%10s%8d%8d\n",p->end_addr,p->line_num,p-> plant_num,p->day,p->left);PR("是否订票(确定请按1)");SC("%d",&i);if(i==1)book();}elsePR("没有该航班\n");}void InitLine() //初始化航线信息{初始化航线,先建立3条航线方便测试;}3、主程序void main() //主函数{int flag=1;more();guide(); //操作指引界面InitLine(); //初始化航班信息do{switch(getchar()){case '1':printline();break;//显示所有航班case '2':search();break; //查找航班case '3':book();break; //订票case '4':refund();break; //退票case '5':admin();break; //管理员系统case '6':more();break; //设计者信息case '9':system("cls");guide();break;case '0':flag=0;break;}}while(flag);}4、函数调用关系4、调试分析1、在编程过程中,起先使用的是局部变量,每次调用函数都需要进行参数的传递,很麻烦,而且还容易出现错误;后意识到航线的链表只有一条,很多函数都需要对其数据进行修改,故航线信息采用了全局变量,方便数据的修改,减少了参数的传递。

课程设计报告-民航订票系统

课程设计报告-民航订票系统

民航订票系统一、设计目的与内容1.设计目的熟练掌握数据的存储表示和基本操作的实现,能够利用存储设计算法解决简单的航空订票问题。

2.设计内容:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;•订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;输出:可以按照航班号为顺序输出订票信息。

二、算法的基本思想算法的主要思路是:1.首先对界面的设计,可以对操作的人员来说简单上手。

对系统的应用都能进行相应的操作。

(1)设置管理员的功能。

(2)设置客户的功能(3)管理员的主要操作界面(4)客户的主要操作界面(5)结束2.类dingpiao用来显示客户订票的事件;基本思路如下:(1)客户提交自己的详细信息。

(2)管理员处理相应的内容并给票给客户。

(3)订票结束3.类tuipiao将处客户的退票的信息,释放存储空间,基本思路如下:(1)客户提交自己的详细信息。

(2)管理员把客户的票取出,(3)结束三、E-R图系统流程图该系统的数据流程图如图3-3:客户端启登陆No有效数据?yes四、测试数据程序运行实例如下: 1 主界面的进入:将response 对象写往客户解析request 对象将结果显示在客出票航班查询 修改密码输入查询条件验证有效?Noyes已查航班? No输入乘客信息验证有效?Noyes输入新密码验证有 效Noyes封装requset 对象将request 对象写向服务分拣请求调用调用调用调用出票请求 查询航班请求 修改密码请求 登陆请求 封装response 对象2 管理员的相应功能3 用户的相应功能4管理员录入订票信息5客户注册模块6 客户添加信息模块10 客户订票界面11 客户退票界面五、源程序及系统文件使用说明1用java写的飞机订票系统的主界面可以直观的观察操作的界面,所应用的代码如下所示:package FlightManagementSystem;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class Welcome extends JFrame implements ActionListener{/****/private static final long serialVersionUID = 1L;public static final String Flight = null;//声明JButton组件对象JButton jbutton1,jbutton2,jbutton3,jbutton4;public Welcome(){super("欢迎进入民航订票系统!");//设置内容面板的布局模式为:流动布局getContentPane().setLayout(new FlowLayout());jbutton1=new JButton("管理系统");jbutton2=new JButton("客户系统");jbutton4=new JButton(" 退出系统 ");getContentPane().add(jbutton1);getContentPane().add(jbutton2);getContentPane().add(jbutton4);this.setBounds(300,200,240,120);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setResizable(false);//注册监听器jbutton1.addActionListener(this);jbutton2.addActionListener(this);jbutton4.addActionListener(this);}public void actionPerformed(ActionEvent e){if(e.getSource()==jbutton1){@SuppressWarnings("unused")LoginOfManager s=new LoginOfManager();this.dispose();}if(e.getSource()==jbutton2){try {new Login();} catch (Exception e1) {// TODO Auto-generated catch blocke1.printStackTrace();}this.dispose();}if(e.getSource()==jbutton4){System.exit(0);}}public void airportInformation(){System.out.println("谢谢光临!");}public static void main(String[] args){@SuppressWarnings("unused")Welcome welcome=new Welcome();}}2 管理员的操作界面也是简单易懂,利于上手。

航空订票系统设计报告

航空订票系统设计报告

一绪论11.1 课题背景及现状 (1)1.2 开发工具介绍 (1)二需求分析 (2)(一)航空售票系统的数据需求(二)数据字典(三) 主要数据流图三概要设计 (6)四逻辑设计 (7)五详细设计 (7)(一)基本查询语句(二) 程序流图中某些加工实现采用IPO图的方式描述(三)数据库的逻辑结构设计六测试结果 (12)七小结 (17)参考文献 (18)附录(主要源代码) (19)一绪论1.1 课题背景及现状随着旅游业的逐渐的成熟发达,航空客运量大幅度的提高,国内国际的旅游航班的增加,这些都对航空的信息管理系统提出了更高的要求,所以要不断的完善更新航空售票系统,提高航空售票系统的工作效率。

航空公司为方便旅客,需开发一个订票系统。

系统的操作者是有登录密码和用户名的售票员。

系统要实现的基本功能是航班的调整,售票,订票,取票,退票,乘客信息的管理,乘客购票的统计;而系统在以后扩展时还可以实现的功能有:对机组工作人员的管理,预定机票的送票情况管理等。

此系统的开发由我们分模块完成,而我所负责的模块是实现系统的航班调整,售票,订票,退票,取票,航班查询功能。

举一个旅客订票的例子:预定机票的旅客信息,包括姓名、性别、地址、证件号、目的地,输入机票预定系统的客户端程序,系统经过查询航空公司内的航班数据服务器后,为旅客安排航班,印出取票通知。

旅客在飞机起飞前一天凭取票通知和帐单交款后取票,系统校对无误后即印出机票给旅客。

要求系统能有效、快速、安全、可靠和无误的完成上述操作。

并要求客户机的界面要简单明了,易于操作,服务器程序利于维护。

航空售票系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。

对于前者要求建立起数据一致性和完整性强、数据安全性好的库。

而对于后者则要求应用程序功能完备,易使用等特点1.2 开发工具介绍本次课程设计应用的开发工具主要是用java语言和SQL Server 2005 。

飞机售票系统课程设计报告

飞机售票系统课程设计报告

飞机售票系统课程设计报告一、课程目标知识目标: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)1.1 需求概述 (1)1.2 需求环境 (1)1.3 功能描述 (1)2 概要设计 (2)2.1 法式功能模块 (2)2.2 法式流程图 (2)2.3 课程设计的思想 (2)3 详细设计 (3)3.1 法式初始化 (3)3.1.1代码功能 (3)3.1.2 功能实现代码 (3)3.2 查询航班信息 (5)3.2.1代码功能 (5)3.2.3 功能实现代码 (6)3.3 订票模块 (7)3.3.1 代码功能 (7)3.3.2 功能实现代码 (7)4 测试与运行 (13)5结束语 (16)6 参考文献 (17)7附录 (18)1 需求分析1.1 需求概述航线管理.每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量客户管理.有关订票的客房信息(包括姓名、订票量、舱位品级(1,2和3)以及等替补的客房名单(包括姓名、所需标量).系统实现主要把持把持和功能.系统实现的主要把持规程和功能如下:①查询航线.根据旅客提出的终点站名输出下列信息:航班号、飞机号、飞行日期、余标额.②承办订票业务.根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户规画订票手续,输出座位号;若已满或者余票少于订票额,则需要重新询问客户要求;若需要,可等待排队侯补③承办退票业务.根据客户提供的情况(日期、航班),为客户输退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额满足该客户的要求,则为其订票手续,否则依次询问其他排队候补的客户.1.2 需求环境本课程设计需要的设备为硬件要求和软件配置要求具体要求如下:①硬件要求:一台计算机.②软件配置:WINDOWS7/V.1.3 功能描述本次课程设计是航空订票系统主要是由查询航班信息,订票还有退票三年夜主要功能.除此之外,还有系统的界面等等.2.1 法式功能模块由需求分析知,本次课程设计是航空订票系统其主要由三年夜模块构成,即查询模块(这部份由我负责),订票系统模块和退票系统模块构成.2.2 法式流程图该法式开始运行后进如航空订票系统用户可以进行航班信息的查询,订票和退票把持.2.3 课程设计的思想由需求分析知道需要实现几个功能界说了两个结构体.这两个结构体分别用来暗示顾客信息和航班信息.有结构体可以知道一些基本信息,比如顾客的姓名,定的机票和航班的时间等等信息.使得实验代码的可读性年夜年夜增强.3.1 法式初始化代码功能这一块还是由我负责.我初始化了五个航班的基本信息.在初始化法式中,主要是航班的基本信息.比如航班号,动身时间和剩下的机票数目等等基本信息.通过运用指针和链表来进行对初始化信息的书写.在初始化时将三个重点的信息分别初始化为:①广州航班号005 飞机号PZH113 机票数120②天津航班号004 飞机号PZH121 机票数120③北京航班号003 飞机号PZH133 机票数120④上海航班号002 飞机号PZH132 机票数120⑤成都航班号001 飞机号PZH122 机票数1203.1.2 功能实现代码void InitLine() //初始化航线信息{airline *p,*q; //航线L=(airline *)malloc(sizeof(airline));L->booked=NULL;L->wait=NULL;L->next=NULL;strcpy(L->end_addr,"00000000"); //终点站strcpy(L->line_num,"000"); //航班号strcpy(L->plant_num,"0000000"); //飞机号L->day=L->left=L->total=0;q=L;p=(airline *)malloc(sizeof(airline));//广州p->booked=NULL;p->wait=NULL;strcpy(p->end_addr,"广州");strcpy(p->line_num,"005");strcpy(p->plant_num,"PZH113");p->day=5;p->left=120;p->total=120;p->next=q->next;q->next=p;p=(airline *)malloc(sizeof(airline));//天津p->booked=NULL;p->wait=NULL;strcpy(p->end_addr,"天津");strcpy(p->line_num,"004");strcpy(p->plant_num,"PZH121");p->day=4;p->left=120;p->total=120;p->next=q->next;q->next=p;p=(airline *)malloc(sizeof(airline));//北京p->booked=NULL;p->wait=NULL;strcpy(p->end_addr,"北京");strcpy(p->line_num,"003");strcpy(p->plant_num,"PZH133");p->day=1;p->left=120;p->total=120;p->next=q->next;q->next=p;p=(airline *)malloc(sizeof(airline));//上海p->booked=NULL;p->wait=NULL;strcpy(p->end_addr,"上海");strcpy(p->line_num,"002");strcpy(p->plant_num,"PZH132");p->day=2;p->left=120;p->total=120;p->next=q->next;q->next=p;p=(airline *)malloc(sizeof(airline));//成都p->booked=NULL;p->wait=NULL;strcpy(p->end_addr,"成都");strcpy(p->line_num,"001");strcpy(p->plant_num,"PZH122");p->day=3;p->left=120;p->total=120;p->next=q->next;q->next=p;}3.2 查询航班信息代码功能此模块主要由我负责,在此模块我实现了查询航班的功能.当进入查询功能时,通过输入数字用户可以查询航班的基本信息,比如目的地,剩下的机票数目,动身的时间等等基本信息.如果输入的数字在界面中没有显示则会提示用户没有这次航班.在这个模块我使用了个switch语句来实现对查询方式的选择.通过判断输入的数字进入到相对应的查询方式.如果输入的信息有误的话,系统将会提示用户没有这次航班,需要重新输入.在该模块用户可以进行查询功能.用户根据提示可以依照航班号、飞机号、飞行日期和航班重点来查询航班的基本信息.这些基本信息包括了飞行航班号、飞机号、剩余票量和惩罚日期等等.在该模块用户必需根据提示进行输入,否则系统会提示输入有误,需要重新输入.3.2.3 功能实现代码void search() //航班查询系统{int i;int flag=0;airline *p;PR("请输入查询航班的方式:\n");PR("航班号---->1\n");PR("飞机号---->2\n");PR("飞行日期-->3\n");PR("航班终点-->4\n");SC("%d",&i);for(;!flag;)switch(i) //switch语句来进行航班的查询方式{case 1: p=search_line();flag=1;break;case 2: p=search_plant();flag=1;break;case 3: p=search_day();flag=1;break;case 4: p=search_addr();flag-=1;break;default:PR("把持毛病,请重新输入\n");break;}if(p){PR("终点站航班号飞机号飞行周日余票量\n");PR("%-20s%10s%10s%8d%8d\n",p->end_addr,p->line_num,p->plant_num,p->day,p->left);PR("是否订票(确定请按1)");SC("%d",&i);if(i==1)book();}elsePR("没有该航班\n");}3.3 订票模块3.3.1 代码功能在此模块可以根据提示可以从航班号,飞行日期和终点站来进行订票.如果订票时余票缺乏所需要的票的数目时就可以进行排队购票选择.3.3.2 功能实现代码void book() //订票系统{int i;int flag=0;airline *p;customer *cst,*c;PR("请输入查询航班的方式:\n");PR("航班号--->1\n");PR("终点站--->2\n");PR("飞行日期->3\n");for(;!flag;){SC("%d",&i);switch(i) //运用一个switch语句进行航班查询{case 1: p=search_line();flag=1;break;case 2: p=search_addr();flag=1;break;case 3: p=search_day();flag=1;break;default:PR("把持毛病,请重新输入\n");break;}}if(p){PR("终点站航班号飞机号飞行周日余票量\n");PR("%-20s%10s%10s%8d%8d\n",p->end_addr,p->line_num,p->plant_num,p->day,p->left);cst=(customer *)malloc(sizeof(customer));PR("请输入订票数量:");SC("%d",&cst->num);PR("请输入舱位品级(1/2/3)");SC("%d",&cst->level);PR("请输入您的名字");SC("%s",cst->name);if(cst->num<=p->left){cst->next=p->booked;p->booked=cst;p->left=p->left-cst->num;PR("订票胜利,座位号为%d~%d\n",p->total-p->left-cst->num+1,p->total-p->left);}else//当需要的飘得数量年夜于剩余的票数的时候进行询问是否进行排队购票{PR("余票缺乏,是否排队等待\n是(y)\n否(n)\n");SC("%d",&flag);if(flag){if(!p->wait){cst->next=p->wait;p->wait=cst;}else{c=p->wait;for(;c->next;c=c->next);cst->next=c->next;c->next=cst;}}}}elsePR("没有该航班\n");guide();}排队订票时的排队订票系统:void waited(airline *p) //排队订票系统{int flag;customer *q,*q0,*h;if(!p->wait) return;q=(customer *)malloc(sizeof(customer));q->level=0;q->num=123;strcpy(q->name,"00000");q->next=p->wait;h=q;for(;p->left>0&&q->next;){if(q->next->num<p->left){PR("%s,您正在排队定%d张票,现有票,是否定\n是(y)\n 否(n)\n",q->next->name,q->next->num);SC("%d",&flag);if(flag){q0=q->next;q->next=q->next->next;q0->next=p->booked;p->booked=q0;p->left=p->left-q0->num;PR("排队订票胜利\n\n");}elseq=q->next;}elseq=q->next;}p->wait=h->next;}在此模块,用户可以根据系统的提示进行退票把持.当进行退票把持时需要进行信息的核对,如果正确,打印出信息,再询问是否退票.void refund() //退票系统{int flag;char a[20];airline *p;customer *c,*c1;p=search_line();c=p->booked;if(!p){PR("没有该航班\n\n");guide();return;}PR("请输入您的姓名");SC("%s",a);if(!p->booked->name) //进行信息的查找判断是否有用户的信息{PR("对不起,没有找到您的信息\n\n");guide();return ;}if(!strcmp(a,p->booked->name)) //核对完信息后输出要退票乘客的信息{PR("退票信息\n姓名/终点站/票数\n%s/%s/%d\n",p->booked->name,p->end_addr,p->booked->num);PR("确认要退票\n是(y)\n否(n)\n");scanf("%d",&flag);if(flag){p->booked=p->booked->next;p->left=p->left+c->num;free(c);PR("退票胜利\n\n");waited(p);guide();}}else{for(;c->next;c=c->next)if(!strcmp(a,c->next->name))break;if(!c->next){PR("对不起,没有找到您的信息\n\n");guide();return ;}else{PR("退票信息\n姓名/终点站/票数\n%s/%s/%d\n",c->next->name,p->end_addr,c->next->num);PR("确认要退票?\n是(y)\n否(n)\n");//询问是否退票scanf("%d",&flag);if(flag){c1=c->next;c->next=c->next->next;p->left=p->left+c1->num;free(c1);PR("退票胜利\n\n");waited(p);guide();}}}}以上三个模块是改法式最主要的功能实现的代码.初度之外还有部份其他显示模块.4 测试与运行由需求分析可知该法式运行后实现功能后的结果.此处是功能界面,用户可以依照提示进行把持进行查询功能时:进行查询模块式会显示出查询方式,依照查询方式可以准确的获得航班的信息进行订票模块时:在此处模块,订票可以根据提示进行购票,可以订多张票,输入舱位的品级和订票人名字排队订票系统:如果该航班剩余的票量小于所要购买的数量,则会提示是否进行排队购票.退票系统:在该模块,进行退票把持时,系统会进行信息的核对,如果正确,将会显示客户的信息.然后提示是否退票.5 结束语此次数据结构课程设计为航空订票系统.在写法式的时候还是遇到了很多的问题.有些功能怎么也实现不了.经过和同学的探讨还有上网查找资料,最后终于克服了这些问题,胜利的运行出了法式.通过这次学习,使我对编写法式的兴趣更年夜了.除此之外,此次课程设计帮我们熟练地运用所学习的知识,还让我们熟练的去融合他们,写出一个全新的法式来.在这次课程设计中要衷心的感谢老师对我们的帮手,使得我们对所学知识的熟练运用.总而言之,这次的课程设计既有趣又训练了我们对知识的运用.6参考文献[1]阮宏一,鲁静《数据结构课程设计C/C++描述》.电子工业出书社[3]袁蔚敏.《数据结构》清华年夜学出书社7 源代码源代码:#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<string.h>#define PR printf#define SC scanftypedef struct customer //客户信息{char name[20]; //客户姓名int num; //订票量int level; //舱位品级customer *next;}customer,*Lcustomer;typedef struct airline //航线信息{char end_addr[20]; //航线终点char line_num[5]; //航班号char plant_num[8]; //飞机号int day; //飞行日期int total; //定员int left; //剩余票数customer *booked; //已定客户信息customer *wait; //排队等待订票信息airline *next;}airline,*Lairline;airline *L; //将航班信息界说为全局变量,减少参数传递Lairline search_line() //按航班号查找航班{char a[5];airline *p;p=L->next;PR("请输入航班号");SC("%s",a);for(;p;p=p->next)if(!strcmp(a,p->line_num)) break;return p;}Lairline search_plant() //按飞机号查找航班{char a[8];airline *p;p=L->next;PR("请输入飞机号");SC("%s",a);for(;p;p=p->next)if(!strcmp(a,p->plant_num)) break;return p;}Lairline search_day() //按飞行日期查找航班{int a;airline *p;p=L->next;PR("请输入飞行日期");SC("%d",&a);for(;p;p=p->next)if(a==p->day) break;return p;}Lairline search_addr() //按航班终点查找航班{char a[20];airline *p;p=L->next;PR("请输入航班终点");SC("%s",a);for(;p;p=p->next)if(!strcmp(a,p->end_addr)) break;return p;}void guide() //主菜单界面{PR(" ------------航空订票客服系统----------\n");PR("==============================================\n");PR("\t\t显示所有航线==> 1\n");PR("\t\t查询航线信息==> 2\n");PR("\t\t订票业务 ==> 3\n");PR("\t\t退票业务 ==> 4\n");PR("\t\t退出系统 ==> 0\n");PR("==============================================\n");PR("\t\t清除屏幕信息==> 9\n\n");PR("请按上面指引把持:\t");}void print_customer(airline *p) //显示航班客户信息{customer *c;if(p->booked){c=p->booked;PR("已定票客户信息\n票数\t/\t客户姓名\n");for(;c;c=c->next)PR("%5d\t/\t%s\n",c->num,c->name);PR("\n\n");}elsePR("暂时没有客户订票\n\n");if(p->wait){c=p->wait;PR("排队订票客户信息\n票数\t/\t客户姓名\n");for(;c;c=c->next)PR("%5d\t/\t%s\n",c->num,c->name);PR("\n\n");}elsePR("暂时没有客户排队订票\n\n");}void book() //订票系统{int i;int flag=0;airline *p;customer *cst,*c;PR("请输入查询航班的方式:\n");PR("航班号--->1\n");PR("终点站--->2\n");PR("飞行日期->3\n");for(;!flag;){SC("%d",&i);switch(i){case 1: p=search_line();flag=1;break;case 2: p=search_addr();flag=1;break;case 3: p=search_day();flag=1;break;default:PR("把持毛病,请重新输入\n");break;}}if(p){PR("终点站航班号飞机号飞行周日余票量\n");PR("%-20s%10s%10s%8d%8d\n",p->end_addr,p->line_num,p->plant_num,p->day,p->left);cst=(customer *)malloc(sizeof(customer));PR("请输入订票数量:");SC("%d",&cst->num);PR("请输入舱位品级(1/2/3)");SC("%d",&cst->level);PR("请输入您的名字");SC("%s",cst->name);if(cst->num<=p->left){cst->next=p->booked;p->booked=cst;p->left=p->left-cst->num;PR("订票胜利,座位号为%d~%d\n",p->total-p->left-cst->num+1,p->total-p->left);}else{PR("余票缺乏,是否排队等待?\n是(y)\n否(n)\n");SC("%d",&flag);if(flag){if(!p->wait){cst->next=p->wait;p->wait=cst;}else{c=p->wait;for(;c->next;c=c->next);cst->next=c->next;c->next=cst;}}}}elsePR("没有该航班\n");guide();}void waited(airline *p) //排队订票系统{int flag;customer *q,*q0,*h;if(!p->wait) return;q=(customer *)malloc(sizeof(customer));q->level=0;q->num=123;strcpy(q->name,"00000");q->next=p->wait;h=q;for(;p->left>0&&q->next;){if(q->next->num<p->left){PR("%s,您正在排队定%d张票,现有票,是否定\n是(y)\n 否(n)\n",q->next->name,q->next->num);SC("%d",&flag);if(flag){q0=q->next;q->next=q->next->next;q0->next=p->booked;p->booked=q0;p->left=p->left-q0->num;PR("排队订票胜利\n\n");}elseq=q->next;}elseq=q->next;}p->wait=h->next;}void refund() //退票系统{int flag;char a[20];airline *p;customer *c,*c1;p=search_line();c=p->booked;if(!p){PR("没有该航班\n\n");guide();return;}PR("请输入您的姓名");SC("%s",a);if(!p->booked->name){PR("对不起,没有找到您的信息\n\n");guide();return ;}if(!strcmp(a,p->booked->name)){PR("退票信息\n姓名/终点站/票数\n%s/%s/%d\n",p->booked->name,p->end_addr,p->booked->num);PR("确认要退票?\n是(y)\n否(n)\n");scanf("%d",&flag);if(flag){p->booked=p->booked->next;p->left=p->left+c->num;free(c);PR("退票胜利\n\n");waited(p);guide();}}else{for(;c->next;c=c->next)if(!strcmp(a,c->next->name))break;if(!c->next){PR("对不起,没有找到您的信息\n\n");guide();return ;}else{PR("退票信息\n姓名/终点站/票数\n%s/%s/%d\n",c->next->name,p->end_addr,c->next->num);PR("确认要退票?\n是(y)\n否(n)\n");scanf("%d",&flag);if(flag){c1=c->next;c->next=c->next->next;p->left=p->left+c1->num;free(c1);PR("退票胜利\n\n");waited(p);guide();}}}}void search() //航班查询系统{int i;int flag=0;airline *p;PR("请输入查询航班的方式:\n");PR("航班号---->1\n");PR("飞机号---->2\n");PR("飞行日期-->3\n");PR("航班终点-->4\n");SC("%d",&i);for(;!flag;)switch(i){case 1: p=search_line();flag=1;break;case 2: p=search_plant();flag=1;break;case 3: p=search_day();flag=1;break;case 4: p=search_addr();flag-=1;break;default:PR("把持毛病,请重新输入\n");break;}if(p){PR("终点站航班号飞机号飞行周日余票量\n");PR("%-20s%10s%10s%8d%8d\n",p->end_addr,p->line_num,p->plant_num,p->day,p->left);PR("是否订票(确定请按1)");SC("%d",&i);if(i==1)book();}elsePR("没有该航班\n");}void InitLine() //初始化航线信息{airline *p,*q;L=(airline *)malloc(sizeof(airline));L->booked=NULL;L->wait=NULL;L->next=NULL;strcpy(L->end_addr,"00000000");strcpy(L->line_num,"000");strcpy(L->plant_num,"0000000");L->day=L->left=L->total=0;q=L;p=(airline *)malloc(sizeof(airline));p->booked=NULL;p->wait=NULL;strcpy(p->end_addr,"广州");strcpy(p->line_num,"005");strcpy(p->plant_num,"PZH113");p->day=5;p->left=120;p->total=120;p->next=q->next;q->next=p;p=(airline *)malloc(sizeof(airline));p->booked=NULL;p->wait=NULL;strcpy(p->end_addr,"天津");strcpy(p->line_num,"004");strcpy(p->plant_num,"PZH121");p->day=4;p->left=120;p->total=120;p->next=q->next;q->next=p;p=(airline *)malloc(sizeof(airline));p->booked=NULL;p->wait=NULL;strcpy(p->end_addr,"北京");strcpy(p->line_num,"003");strcpy(p->plant_num,"PZH132");p->day=1;p->left=120;p->total=120;p->next=q->next;q->next=p;p=(airline *)malloc(sizeof(airline));p->booked=NULL;p->wait=NULL;strcpy(p->end_addr,"上海");strcpy(p->line_num,"002");strcpy(p->plant_num,"PZH133");p->day=2;p->left=120;p->total=120;p->next=q->next;q->next=p;p=(airline *)malloc(sizeof(airline));p->booked=NULL;p->wait=NULL;strcpy(p->end_addr,"成都");strcpy(p->line_num,"001");strcpy(p->plant_num,"PZH122");p->day=3;p->left=120;p->total=120;p->next=q->next;q->next=p;}void printline() //显示所有航班信息{int flag;airline *p;p=L->next;PR("终点站航班号飞机号飞行周日余票量\n");for(;p;p=p->next){PR("%-20s%10s%10s%8d%8d\n",p->end_addr,p->line_num,p->plant_num,p->day,p->left);}PR("按1进入订票系统,按0返回主菜单\n");SC("%d",&flag);if(flag)book();else guide();}void main() //主函数{int flag=1;guide();InitLine();do{switch(getchar()){case '1':printline();break;case '2':search();break;case '3':book();break;case '4':refund();break;case '9':system("cls");guide();break;case '0':flag=0;break;}}while(flag);}。

航空订票管理系统 软件项目管理课程设计报告

航空订票管理系统 软件项目管理课程设计报告

软件项目管理课程设计报告专业:软件工程年级:学号:学生姓名:题目名称:航空订票管理系统指导老师:完成时间:1、项目概述目前,国内航空公司的数量和规模都在扩大,国外航空公司也纷纷着陆中国,这些航空公司之间的竞争可谓日益激烈。

配备一个安全、高效、灵活、可靠的客户服务中心系统对于航空公司加强客户服务质量,提高客户服务水平,扩展业务途径,维护公众形象,提高工作效率必将发挥重要作用。

对航空公司来说,航空订票管理系统既能扩大服务范围,扩大公司影响,减少营业费用,又对稳固航空公司的客源有着重要的辅助作用;站在旅客的角度,航空公司提供的这种服务提供了更多的方便,节省了很多时间。

建设航空订票管理系统是体现和提高航空公司领导业绩的一条捷径,此外还具有重要意义:1、改善航空公司服务质量;2、创造和提升航空公司的品牌优势;3、优化航空公司的服务流程;4、提升信息化的水平;2、工作任务(Statement Of Work,SOW)书进入信息时代后,人们对航空订票的运作实现信息化管理的要求越来越高,随着社会的生活节奏化,为了方便大众,提高工作效率,该系统的建设实现对航空订票的高效率信息化管理。

该系统一方面实现对大众的自助服务功能;如:网上订票、退票、查询等功能。

另外还要实现系统管理员对整个系统资源的信息化管理,如:用户管理。

一、整体要求1.系统用例图2.用例描述(1)航班查询查看航班信息基本查询,从下拉列表中选择航班或起点或终点信息综合查询,手动输入航班的基本信息(2)订票输入航班信息显示航班信息,以及打折后的票价信息,询问信息是否正确正确输入个人信息完成订票不正确返回订票初始界面(3)退票输入将退票的序号显示票的具体信息,并询问是否退票退票成功,更新顾客数据库登陆进入管理界面选择添加、更新、删除航班,或查看航班具体信息等业务添加输入添加航班的具体信息更新航班数据库更新输入所要更改航班的具体信息更新航班数据库删除选择所要删除的航班更新航班数据库查看航班具体信息显示数据库中所有航班的具体信息二、程序描述(1)服务器端程序:本套航空订票系统软件的服务器端应用程序,使用java编写前台控制软件,管理员通过使用该软件来进行对数据库中的数据进行管理。

飞机订票系统课程设计报告人才管理与系统完善

飞机订票系统课程设计报告人才管理与系统完善

飞机订票系统课程设计报告人才管理与系统完善关于飞机订票系统的课程设计报告的一些思路和建议。

一、选题背景和意义现代化的交通运输系统为人们的生产、生活以及经济发展带来了巨大的便利,而机票订购作为交通运输系统的重要组成部分,也越来越得到人们关注。

因此,设计一个高效、安全、可靠、方便的飞机订票系统,对于提高机票预定及购票效率,实现国内民航市场的信息化和现代化,具有非常重要的意义。

二、课程设计的主要内容和目标1. 系统需求分析:系统开发前需要对需求进行详尽的分析和规划,包括界面设计、系统数据库的设计等。

2. 数据库设计:包括数据库建模、定义数据结构、定义实体及其属性等。

3. 系统架构设计:这是整个系统的核心部分,设计需根据功能划分的模块进行构建,并确定各种关键的模块之间的交互关系,比如订单管理、票务管理、会员管理、支付管理等。

4. 系统开发与实现:基于需求分析、数据库设计以及系统架构设计,进行测试、编码、调试等,实现整个系统。

5. 系统完善:包括性能优化、安全性加固、兼容性问题的解决等。

三、在系统设计过程中需要考虑的因素1. 用户体验:系统操作应当简单、明了、易于理解,从而方便用户进行操作,提高用户的使用体验并减少操作出错的可能性。

2. 安全性:系统应当设备多种安全措施,防范用户信息泄漏或被黑客攻击,包括数据加密、用户认证、审计等。

3. 可维护性:系统中应当考虑到技术的更新换代,因此在设计时需要进行规范化开发,模块化设计。

4. 兼容性:系统应能在多种操作系统和浏览器上运行,面向多个设备进行开发,以便让更多的用户能够使用该系统。

总之,飞机订票系统的课程设计需要考虑到各种实际因素,系统设计应具有安全性、可维护性、用户体验良好的特点,同时也需要在实际中寻找更好的完善方法。

航空订票系统设计报告

航空订票系统设计报告

航空订票系统设计报告一绪论 1 课题背景及现状............................................................... ......1 开发工具介绍................................................................. ........1 二需求分析............................................................... ........................2 航空售票系统的数据需求数据字典(三) 主要数据流图三概要设计............................................................... ........................6 四逻辑设计............................................................... ........................7 五详细设计............................................................... ........................7 基本查询语句(二) 程序流图中某些加工实现采用IPO 图的方式描述数据库的逻辑结构设计六测试结果............................................................... ......................12 七小结............................................................... (17)(三) 主要数据流图如下:(1)功能模块设计4 主要层次结构图:旅客航班查询各项业务管理界面乘机资料人明细管理售票管理票务管理购送票管理定单信息管理退出点击乘客机组人员送票情况订票情况关闭该界面回到登陆界面客户购票统计航航班增加班删除航班修改查询业务订票业务退票业务售票业务取票业务机场航班查询 5 三概要设计航空订票系统E-R图如下:性别证件号电话旅客类型年龄姓名地址旅客 1 1 订票购买票价 1 n 1 型号姓名订票旅客 1 航班飞机证件号机型舱位n 目的地航班座位飞行航班类型舱位航班号起飞时间 1 座位飞机型号订票日期取票日期航班起飞时间航班号剩余票数目的地票价出发地起飞日期到达时间 6 四逻辑设计根据E-R图和相关要求,把ER模型图转换为关系表,进行数据模型转换,系统用到五个基本表:旅客表;购买表;航班表;飞行表;飞机表将E-R图转换成关系模型,关系的主码用横线标识:旅客购买(旅客证件号,航班,票价) 航班(航班,出发地,目的地,起飞时间,抵达时间,航班类型,剩余票数,票价,起飞日期) 飞行(航班,型号,航程,中转站) 飞机(型号,舱位,座位,航班) 五.详细设计基本查询语句订票业务: 每次当有旅客需要订票时,首先需要对机场的航班情况进行查询,当有符合旅客的航班的机票剩余时旅客可以订票,并记录下旅客的相关信息,用到的SQL 语句为:insert into passenger(姓名,证件号,年龄,性别,旅客类型,地址,电话);然后旅客的订票信息存入数据库,并分配相应的航班和取票信息;退票业务:当有旅客退票时,需要根据录入旅客相关的信息将数据库peopleorder表中相应的记录删除,所用SQL语句为:delete from peopleorder where 姓名=’旅客姓名’,证件号=’旅客证件号码’,状态= ‘买票’; 航班增加/删除/修改业务:当航空公司需要对机场航班情况进行调整时,如增加/删除/修改操作,通过以下SQL语句实现:增加:insert into flight values (‘航班号’,’出发地’,’目的地’,’起飞时间’,’抵达时间’,’航班类型’,’剩余票数’,’票价’,’起飞日期’) 删除:delete from flight where 航班号=’航班号码’; 修改:update flight set [任意属性列]=[修改值] where航班号=’航班号码’; 7 二) 程序流图中某些加工实现采用IPO图的方式描述:“收集旅客信息数据算法”IPO表系统:航空售票作者:孙启欢模块:收集数据算日期: 编号:被调用:取调用:数据模块输入:姓名、性输出:格式化之后别的数据处理:格式化后的各种数据= 格式化局部数据元素:注释:本加工仅采集数据,未进行实质性的数据变换8 (“收集航班信息数据算法”IPO表系统:航空售票作者:孙启欢模块:收集数据算日期:编号:被调用:取调用:数据模块输入:航班,出输出:格式化之后发地,目的地,的数据起飞时间,抵达时间,剩余票数,票价,起飞日期,处理:格式化后的各种数据= 格式化局部数据元素:注释:本加工仅采集数据,未进行实质性的数据变换9 “订票/售票/取票/退票相关数据算法”IPO表系统:航空售票作者:孙启欢模块:审核数据算日期:法编号:被调用:审调用:核数据模块输入:旅客的相输出:订单信息,关信息,飞机/航机票信息班的相关信息处理:订单信息=旅客信息+所购买航班信息+取票信息机票信息=旅客购买航班的详细信息局部数据元素:10 数据库的逻辑结构设计旅客购买(旅客证件号,航班,票价) 航班(航班,出发地,目的地,起飞时间,抵达时间,航班类型,剩余票数,票价,起飞日期) 飞行(航班,型号,航程,中转站) 11 飞机(型号,舱位,座位,航班) 七测试结果在航空售票系统的开发过程中,我完成的模块是需要系统实现如下功能:航班的调整,订票/售票,退票,取票,航班查询测试过程中有如下主要代表性功能界面主要功能界面如下:12 订票客户资料界面订单号创立成功13航班退票系统主界面点击退票当订单号不存在时14 点击查询可知道该订单号的详细信息管理主界面15 航班管理系统管理员可以更新数据库八小结数据库课程设计任务渐渐远去,通过这次课程设计积累的信心与斗志,我开始写这篇文章,为自己的足迹留下哪怕是微不足道但是对自己弥足珍贵的痕迹。

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

一绪论31.1 课题背景及现状 (3)1.2 开发工具介绍 (3)二需求分析 (2)(一)航空售票系统的数据需求(二)数据字典(三) 主要数据流图三概要设计 (6)四逻辑设计 (7)五详细设计 (7)(一)基本查询语句(二) 程序流图中某些加工实现采用IPO图的方式描述(三)数据库的逻辑结构设计六测试结果 (12)七小结 (17)参考文献 (18)附录(主要源代码) (19)一绪论1.1 课题背景及现状随着旅游业的逐渐的成熟发达,航空客运量大幅度的提高,国内国际的旅游航班的增加,这些都对航空的信息管理系统提出了更高的要求,所以要不断的完善更新航空售票系统,提高航空售票系统的工作效率。

航空公司为方便旅客,需开发一个订票系统。

系统的操作者是有登录密码和用户名的售票员。

系统要实现的基本功能是航班的调整,售票,订票,取票,退票,乘客信息的管理,乘客购票的统计;而系统在以后扩展时还可以实现的功能有:对机组工作人员的管理,预定机票的送票情况管理等。

此系统的开发由我们分模块完成,而我所负责的模块是实现系统的航班调整,售票,订票,退票,取票,航班查询功能。

举一个旅客订票的例子:预定机票的旅客信息,包括姓名、性别、地址、证件号、目的地,输入机票预定系统的客户端程序,系统经过查询航空公司内的航班数据服务器后,为旅客安排航班,印出取票通知。

旅客在飞机起飞前一天凭取票通知和帐单交款后取票,系统校对无误后即印出机票给旅客。

要求系统能有效、快速、安全、可靠和无误的完成上述操作。

并要求客户机的界面要简单明了,易于操作,服务器程序利于维护。

航空售票系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。

对于前者要求建立起数据一致性和完整性强、数据安全性好的库。

而对于后者则要求应用程序功能完备,易使用等特点1.2 开发工具介绍本次课程设计应用的开发工具主要是用java语言和SQL Server 2005 。

java版本 jdk 1.6.0.4版本,Java IDE使用的是eclipse 3.2 版本。

本次数据库课程设计是以SQL Server 数据库作为后台以java作为前台的应用型设计课程,综合了数据库与java两大课程创建应用型的数据库系统,大大提高了我们学生的动手能力,做到了理论与实践相结合,完成系统的分析,设计和开发。

二.需求分析(一)航空售票系统的数据需求包括如下几点:数据录入和处理的准确性和实时性数据的输入是否准确是数据处理的前提,错误的输入会导致系统输出的不正确和不可用,从而使系统的工作失去意义。

数据的输入来源是手工输入。

手工输入要通过系统界面上的安排系统具有容错性,并且对操作人员要进行系统的培训。

在系统中,数据的输入往往是大量的,因此系统要有一定的处理能力,以保证迅速的处理数据。

数据的一致性与完整性由于系统的数据是共享的,在不同的旅行社中中,机票是共享数据,所以如何保证这些数据的一致性,是系统必须解决的问题。

要解决这一问题,要有一定的人员维护数据的一致性,在数据录入处控制数据的去向,并且要求对数据库的数据完整性进行严格的约束。

对于输入的数据,要为其定义完整性规则,如果不能符合完整性约束,系统应该拒绝该数据。

数据的共享与独立性整个机票预定系统的数据是共享的。

然而,从系统开发的角度上看,共享会给设计和调试带来困难。

因此,应该提供灵活的配置,使各个分系统能够独立运行,而通过人工干预的手段进行系统数据的交换。

这样,也能提供系统的强壮性。

系统能实现的操作和功能如下:①查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,价格和剩余票额等业务。

②承办订票业务:根据客户提出的要求(航班号或者终点站)查询该航班票额情况,若尚有余票,则为客户办理订票手续.输出座位号;若已满员,则需重新询问客户要求。

若需要,可购买下一次航班或者等待看有没有人退票;③承办退票业务:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所剩票额能满足他的要求.则为他办理订票手续,否则依次询问其它排队候补的客户。

两个客户名单可分别由线性表和队列实现。

为查找方便.已订票客户的线性表应按客户姓名有序,并且,为插入和删除方便,应以链表作存储结构。

由于预约人数无法预计,队列也应以链表作存储结构。

整个系统需汇总各条航线约情况登录在一张线性表上,由于航线基本不变采用顺序存储结构,并按航班有序或按终点站名有序。

每条航线是这张表上的—个记录,包含上述8个域,其中乘员名单域为指向乘员名单链表的头指针,等侯替补的客户名单域为分别指向队头和队尾的指针(二)数据字典数据条目:系统管理要求=[乘客资料表|机组人员资料表|购买信息表|航班信息表|飞行信息表|订单信息表]乘客资料表=证件号+姓名+性别+年龄+家庭地址+电话+旅客类型+目的地机组人员资料表=编号+职称+姓名+年龄+性别购买信息表=旅客证件号+航班+票价航班信息表=航班号+出发地+目的地+起飞时间+抵达时间+航班类型+剩余票数+价格飞行信息表=航班号+飞机号+航程+中转站订单信息表=姓名+证件号+航班号+机型+舱位+座位+订票日期(三) 主要数据流图如下:(1)功能模块设计(2)主要层次结构图:三概要设计航空订票系统E-R图如下:四逻辑设计根据E-R图和相关要求,把ER模型图转换为关系表,进行数据模型转换,系统用到五个基本表:旅客(passenger )表;购买(buy)表;航班(flight)表;飞行(fly)表;飞机(plane)表将E-R图转换成关系模型,关系的主码用横线标识:旅客(passenger )(姓名,证件号,电话,旅客类型,性别,年龄,地址)购买(buy)(旅客证件号,航班,票价)航班(flight)(航班,出发地,目的地,起飞时间,抵达时间,航班类型,剩余票数,票价,起飞日期)飞行(fly)(航班,型号,航程,中转站)飞机(plane)(型号,舱位,座位,航班)五 .详细设计(一)基本查询语句订票业务: 每次当有旅客需要订票时,首先需要对机场的航班情况进行查询,当有符合旅客的航班的机票剩余时旅客可以订票,并记录下旅客的相关信息,用到的SQL 语句为:insert into passenger(姓名,证件号,年龄,性别,旅客类型,地址,电话);然后旅客的订票信息存入数据库,并分配相应的航班和取票信息;退票业务:当有旅客退票时,需要根据录入旅客相关的信息将数据库peopleorder表中相应的记录删除,所用SQL语句为:delete from peopleorder where 姓名=’旅客姓名’,证件号=’旅客证件号码’,状态= ‘买票’;航班增加/删除/修改业务(需要管理员权限):当航空公司需要对机场航班情况进行调整时,如增加/删除/修改操作,通过以下SQL语句实现:增加:ins ert into flight values (‘航班号’,’出发地’ ,’目的地’,’起飞时间’ ,’抵达时间’,’航班类型’,’剩余票数’ ,’票价’,’起飞日期’)删除:delete from flight where 航班号=’航班号码’;修改:update flight set [任意属性列]=[修改值] where航班号=’航班号码’;(二) 程序流图中某些加工实现采用IPO图的方式描述:(三)数据库的逻辑结构设计(航空订票系统使用的数据表)旅客(passenger )(姓名,证件号,电话,旅客类型,性别,年龄,地址)购买(buy)(旅客证件号,航班,票价)航班(flight)(航班,出发地,目的地,起飞时间,抵达时间,航班类型,剩余票数,票价,起飞日期)飞行(fly)(航班,型号,航程,中转站)飞机(plane)(型号,舱位,座位,航班)七测试结果在航空售票系统的开发过程中,我完成的模块是需要系统实现如下功能:航班的调整(增加/删除/修改),订票/售票,退票,取票,航班查询测试过程中有如下主要代表性功能界面(1)主要功能界面如下:(2)订票客户资料界面(3)订单号创立成功(4)航班退票系统主界面(5)点击退票当订单号不存在时(6)点击查询可知道该订单号的详细信息(7)管理主界面(需要输入帐号密码)(8)航班管理系统管理员可以更新数据库(包括插入,删除,更新,和查看数据库)八小结数据库课程设计任务渐渐远去,通过这次课程设计积累的信心与斗志,我开始写这篇文章,为自己的足迹留下哪怕是微不足道但是对自己弥足珍贵的痕迹。

我很高兴的一点是尽管我们的成果离完善还很远,但我真的有了很大的进步:知识方面,,知道数据库是如何与开发工具连接的……所有这些都让我们对专业的兴趣又浓厚了很多这次课设分为两个阶段——管理系统的前台和后台。

首先,要开发一个系统,就先得进行需求分析,这个部分是必不可少。

需求分析是整个设计过程的基础,是最困难,最耗费时间的一步。

这一步做得不好,甚至会导致整个数据库反工重做。

其次,该注意的是,数据字典是在需求分析阶段建立,在数据库设计过程中不断修改,充实,完善的。

系统一旦建立,各个功能就不易轻易修改和变动,所谓牵一发而动其身,所以要做好准备。

再次,E-R图的设计,清晰确定,消除不必要的冗余,优化设计,节省系统开发时间。

最后,就是整个系统的维护和优化改进方面,由于时间和能力的有限,不能很好的完善系统,这是这次设计的缺陷。

经过这次课设,我总结如下1、注重理论知识和动手能力的相辅相成。

平时要多动脑和多动手,多上机操作实践。

2、平时多浏览资料。

我们所学的专业知识更新很快,这就要求我们能与时俱进,图书馆里有大量的参考书,另外网上有着更多、更新的知识宝库。

如果能很好的利用这两点,对自己的进步会有很大的帮助3、虚心请教,当遇到不懂的问题自己想了很多办法却无法解决时,可以请教一些其他的同学或老师,这可以很快的解决问题。

在这次课设中,提高和完善所学知识的同时也体会到了团队精神的力量,收获丰富,受益良多;从中学到的知识和吸取的经验教训将会使我的知识很好的加深。

没有课设,我们就不可能真正的学好、掌握知识。

语言并不重要毕竟它仅仅是工具,用好一个工具并不是一件值得为外人道的事情,主要是了解学习思想。

古语说的好:学无止境啊!以后我将更加努力争取取得更好的成绩。

我很庆幸在老师和同学的帮助下我顺利地完成了这次数据库课程设计。

在这里,我向给予我许多帮助的老师、同学真诚的说声:“谢谢你们!”。

参考文献[1] 王珊,萨师煊.《数据库系统概论》(第四版)高等教育出版社,2006[2](美)RogerS.Pressman 郑人杰马素霞等译《软件工程实践者的研究方法》2007年1月[3](美)Cay S.Horstmann 陈昊鹏王浩等译《java 2核心技术》第七版[4](美)Bruce Eckel 陈浩鹏译《Java编程思想》第四版附录(航空订票系统主要java源程序)主函数://import flight.assist.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Main extends JFrame{private UpdateComboBox update;private Interface jiemian;public Main(){update = new UpdateComboBox(); //开始线程jiemian = new Interface();this.getContentPane().add(jiemian);}public static void main(String args[]){try{UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());}catch(Exception e){Main frame = new Main();frame.setSize(568,436);frame.setResizable(false);frame.setTitle("航班订票系统");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}主界面函数;/*import flight.query.*;import flight.manage.*;import flight.dingpiao.*;//import flight.tuipiao.TuiPiao;import flight.assist.*; */mport java.awt.*;import javax.swing.*;import java.awt.event.*;import javax.swing.border.*;import .URL;class Interface extends JPanel implements ActionListener //主界面{//private MyQuery query;static TestDB manager;private TuiPiao tuiPiao;private Hangkong dingPiao;private JButton jbManager = new JButton("管理");private JButton jbDingPiao = new JButton("订票");private JButton jbTuiPiao = new JButton("退票");private JButton jbAbout = new JButton("关于");public Interface(){this.setLayout(null);this.add(jbDingPiao);this.add(jbTuiPiao);this.add(jbManager);this.add(jbAbout);jbDingPiao.setFont(new Font("Times",Font.PLAIN,12));jbTuiPiao.setFont(new Font("Times",Font.PLAIN,12));jbManager.setFont(new Font("Times",Font.PLAIN,12));jbAbout.setFont(new Font("Times",Font.PLAIN,12));jbDingPiao.setBounds(190,280,80,30);jbTuiPiao.setBounds(290,280,80,30);jbManager.setBounds(390,280,80,30);jbAbout.setBounds(430,350,80,30);jbManager.addActionListener(this);jbDingPiao.addActionListener(this);jbTuiPiao.addActionListener(this);jbAbout.addActionListener(this);}public void paintComponent(Graphics g){ImageIcon imageIcon = new ImageIcon("jiemian.gif");Image image = imageIcon.getImage();g.drawImage(image,0,0,this);}public void actionPerformed(ActionEvent e){if (e.getSource() == jbManager ){CheckID check = new CheckID();}else if (e.getSource() == jbDingPiao){dingPiao = new Hangkong();dingPiao.setSize(430,300);dingPiao.setResizable(false);dingPiao.setTitle("国内机票实时速定");dingPiao.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);dingPiao.setVisible(true);}else if (e.getSource() == jbTuiPiao){tuiPiao = new TuiPiao();tuiPiao.setSize(470,370);tuiPiao.setResizable(false);tuiPiao.setTitle("航班退票系统");tuiPiao.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);tuiPiao.setVisible(true);}else if (e.getSource() == jbAbout){String information = "制作人:" + " 孙启欢杨帅" + "\n" +"版本: " + " 0.00" + "\n" +"时间: " + " 2008-6-21" + "\n" +"地址: " + " 华东交通大学软件学院06软件测试3班";JOptionPane.showMessageDialog(null,information,"关于",RMA TION_MESSAGE);}}订票系统主要源代码(部分)://import flight.assist.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.sql.*;import java.util.*;import javax.swing.border.*;public class Hangkong extends JFrame implements ActionListener{private String[] string=new String[23];private JComboBox boxyear=new JComboBox();…………….private JComboBox boxadult=new JComboBox();private String[] year={" 2007"," 2008"};private String[] adult={" 成人"," 儿童"," 学生"};private String[] month={"01","02","03","04","05","06","07","08","09","10","11","12" };private String[] day={"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","2 0","21","22","23","24","25","26","27","28","29","30"};private JTextField jbtflight=new JTextField(10);……………..);private JButton jbtbutton=new JButton("机票预定");private JButton jbtreturn=new JButton("返回主页面");Color color=new Color(230,230,255);{if(jbrsingle.isSelected()){if(sflight==1){JOptionPane.showMessageDialog(this,"航班号不能为空!","错误信息",JOptionPane.ERROR_MESSAGE);jbtflight.setText("");}else if(sflight==4){JOptionPane.showMessageDialog(this,"没有此次航班,请您重新查阅!","错误信息",JOptionPane.ERROR_MESSAGE);jbtflight.setText("");}else{clientFrame.getContentPane().add(client.panel(string));clientFrame.setTitle("客户资料");……………….client.jbtchildticketnumber.setText("1");}}else if(jbrdouble.isSelected()){isFull=seatinformation.isFull(string[11],string[10]);dflight=doubleflight();if(sflight==1){JOptionPane.showMessageDialog(this,"第一航班号不能为空!","错误信息",JOptionPane.ERROR_MESSAGE);}else if(dflight==5){JOptionPane.showMessageDialog(this,"返回航班号与第一航班号不匹配\n请重新输入返回航班号!","错误信息",JOptionPane.ERROR_MESSAGE);jbtflight1.setText("");}else{clientFrame.getContentPane().add(client.panel(string));clientFrame.setSize(450,460);clientFrame.setTitle("客户资料");clientFrame.setVisible(true);this.setVisible(false);}}}else if(jbrmultiple.isSelected()){isFull=seatinformation.isFull(string[11],string[10]);mflight=multipleflight();if(sflight==1){JOptionPane.showMessageDialog(this,"第一航班号不能为空!","错误信息",JOptionPane.ERROR_MESSAGE);}else if(sflight==2){JOptionPane.showMessageDialog(this,"你要预定的第一航班号已经满座!\n您可以改定同一天的航班:\n"+otherchoice,"客户信息",RMA TION_MESSAGE);jbtflight.setText("");} else if(mflight==4){JOptionPane.showMessageDialog(this,"不存在您要预定的第二航班号,请您重新查阅!","错误信息",JOptionPane.ERROR_MESSAGE);jbtflight1.setText("");}else if(mflight==5){JOptionPane.showMessageDialog(this,"第二航班号与第一航班号不匹配\n请重新输入返回航班号!JOptionPane.ERROR_MESSAGE);jbtflight1.setText("");}else{clientFrame.getContentPane().add(client.panel(string));clientFrame.setTitle("客户资料");this.setVisible(false);}}}}else{JOptionPane.showMessageDialog(null,"对不起,不能预定以前的票了",JOptionPane.ERROR_MESSAGE);}}private boolean isTimeValid(String year,String month,String day){int y = Integer.parseInt(year);int m = Integer.parseInt(month);int d = Integer.parseInt(day)Calendar cal = Calendar.getInstance(); //得到当前时间cal.setTime(new java.util.Date());int py = cal.get(Calendar.YEAR);int pm = cal.get(Calendar.MONTH) + 1;int pd = cal.get(Calendar.DAY_OF_MONTH);if (y == py){if (m < pm)return false;else if(d < pd)return false;}return true;}public boolean timeCompare(String i,String j) {Long a=Long.parseLong(i);Long b=Long.parseLong(j);if(a>b){return false;}elsereturn true;}}。

相关文档
最新文档