航空客运订票系统课程设计报告
- 格式:doc
- 大小:359.00 KB
- 文档页数:24
信息科学和工程学院课程设计报告课题:航空客运订票系统目录1.课程设计内容 (3)1.1、课程设计目的 (3)1.2、课程设计题目 (3)1.3、课程设计内容 (3)1.4、实现提示 (3)2.需求分析 (4)3.概要设计 (4)3.1、系统结构图 (5)3.2、算法设计 (5)3.3、存储结构设计 (5)4.详细设计 (6)4.1、数据类型定义 (7)4.2、函数定义 (8)4.3、函数流程图 (8)4.4、程序的设计思想 (12)5.调试分析 (12)5.1、程序测试 (12)5.2 、时间复杂度分析 (13)5.3 、算法的改进设想 (13)6.问题分析及课程设计的心得体会 (14)7.使用手册 (15)8. 源程序 (15)9 参考资料 (22)一、课程设计内容1.1 课程设计目的1.数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的使用系统。
2.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握使用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的使用。
3.学会将知识使用于实际的方法,提高分析和解决问题的能力,增加综合能力。
(1)熟练掌握链表存储结构及其建立过程和常用操作;(2)熟练掌握队列的建立过程和常用操作;(3)学会自己调试程序的方法并掌握一定的技巧。
1.2课程设计题目1、每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名和所需数量)。
2、系统能实现的操作和功能如下:1)查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行和余票额;2)承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票量少余订票额,则需重新询问客户要求。
航空客运订票系统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 需求分析【问题描述】试设计一个航空客运订票系统,方便乘客通过购票系统购买自己的所需要的飞机票,而航空客运订票的业务活动包括:1.查询航线;2.客票预订;3.办理退票。
【系统能实现的功能】①录入:由设计者录入航班情况,数据存储在文件中;②查询航线:由用户输入终点站名,出发时间,输出下列信息:所有可能的航班号,当天航班的余票数目;③承办订票业务:根据用户提出的要求(航班号、出发时间、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;已满员或余票额少于订票额,则需重新询问客户是否需要进入预约人数中。
④承办退票业务:根据用户提供的情况(日期、航班、票数等),为客户办理退票手续。
然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票数目能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。
【测试实例】例子某客户输入订票信息:北京到上海,2014年5月3日,所需票数3张;系统输出:所有可能航班号1000,1001,1002 余票分别为40张,50张,55张;该客户选择航班号为1000的航班;则该航班余票变为37张;2 概要设计航线的情况和已订票客户登录在一张线性表上,分别用顺序表和单链表实现;ADT list{数据对象:D = {ai | ai∈ElemSet,i = 1,2,…,n,n>=0}数据关系:R1 = {<ai-1,ai>|ai-1,ai∈D,i = 2, …,n}基本操作:InitList70219(&L)操作结果:构造一个空的线性表L;ListInsert70219(&L,i,e)初始条件:线性表L已经存在;操作结果:在L中第i个位置之前插入新的元素e,L的长度加1;ListDelete70219(&L,i,&e)初始条件:线性表L已经存在且非空,操作结果:删除L的第i个位置的元素,并用e返回其值,L的长度减1;}预约客户信息的存储使用队列。
c 课程设计航空订票系统一、教学目标本课程的学习目标包括以下三个方面:1.知识目标:学生需要掌握航空订票系统的相关理论知识,包括系统架构、机票预订流程、座位分配机制等。
2.技能目标:学生能够运用所学知识,独立完成航空订票系统的搭建和维护工作,具备实际操作能力。
3.情感态度价值观目标:培养学生对航空订票系统行业的兴趣和热情,提高他们的问题解决能力和创新精神,培养团队协作和沟通能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.航空订票系统概述:介绍航空订票系统的定义、发展历程和现状。
2.系统架构:讲解航空订票系统的整体架构,包括前端界面、后端数据库和中间件等。
3.机票预订流程:详细解析机票预订的具体流程,包括用户注册、查询航班、预订机票、支付等环节。
4.座位分配机制:讲解航空订票系统中座位分配的原理和算法。
5.系统安全和性能优化:介绍航空订票系统的安全防护措施和性能优化手段。
6.实践操作:学生进行航空订票系统的实际操作,巩固所学知识。
三、教学方法为了提高教学效果,本课程将采用以下几种教学方法:1.讲授法:教师讲解航空订票系统的相关理论知识,引导学生掌握基本概念和原理。
2.案例分析法:分析实际案例,让学生了解航空订票系统的应用场景和实际问题。
3.实验法:学生进行实验操作,培养学生的实际动手能力。
4.小组讨论法:分组讨论和实践,培养学生的团队协作和沟通能力。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:选择权威、实用的航空订票系统相关教材,作为学生学习的主要参考资料。
2.参考书:提供相关领域的参考书籍,丰富学生的知识体系。
3.多媒体资料:制作PPT、视频等多媒体资料,生动展示航空订票系统的相关内容。
4.实验设备:准备计算机、服务器等实验设备,为学生提供实际操作的环境。
五、教学评估本课程的教学评估将采用多元化方式,全面、客观地评价学生的学习成果。
评估方式包括以下几个方面:1.平时表现:通过课堂参与、提问、讨论等环节,评价学生的出勤率和积极性。
一、实验名称:航空客运定票系统二、实验内容描述:航空客运订票的业务活动包括:查询航线、客票预定和办理退票等。
试设计一个航空客运定票系统,以使上述业务可以借助计算机来完成。
三、程序设计指导思想:本系统是利用VB6.0作为开发语言,Microsoft access作为后台数据库的航空预订票系统。
主要掌握VB与数据库的连接,从而来完成系统。
四、程序设计1、系统软件总体设计(1)数据库表设计系统数据库中有航班信息表、乘客信息表。
(2)软件结构设计系统软件设计遵循模块化程序设计的思想。
系统程序由订票管理模块、退票管理模块和退出系统模块组成。
(3)功能结构图2、程序框图及必要的说明3、程序总体设计:(1)、新建工程根据需要添加窗体:在界面添加各类控件特别地,添加用来连接数据库的控件1、首先,在“工程”中“部件”中添加Adodc控件和Datagrid控件2、将控件放入窗体设计界面中3、进行Adodc控件主要属性设置点击“下一步”则:选择数据库测试连接记录源设置:3、进行Datagrid控件主要属性设置:将它的DataSource设置为如图示对相关控件进行属性设置(2)、数据库的建立(3)、程序编写五、设计过程(界面)登录系统界面:首页:查询界面:订票界面:退票界面:六、主要程序代码1.登录系统:Private Sub Command1_Click()If Text1.Text = 1 And Text2.Text = 123 Then 用户登录system.Show 调用首页Else 输入不成功时重新清空MsgBox "用户名或密码错误!请重新输入!", , "提示"Text1.Text = ""Text2.Text = ""Text1.SetFocusEnd IfMe.Hide 隐藏窗体End SubPrivate Sub Command2_Click()Me.HideEnd Sub2.首页:Private Sub mnuback_Click() 调用退票窗体back.ShowMe.HideEnd SubPrivate Sub mnubookfind_Click() 调用查询窗体find.ShowMe.HideEnd SubPrivate Sub mnudingpiao_Click() 调用订票窗体book.ShowMe.HideEnd SubPrivate Sub mnuoutme_Click() 退出系统Unload MeEnd Sub3.查询:Dim cnn As New ADODB.ConnectionDim rst As New ADODB.RecordsetPrivate Sub Calendar1_Click() 日历txt_date.Text = Me.Calendar1.ValueEnd SubPrivate Sub cmdfind_Click() 查询程序Dim sQSql As StringIf (Trim(Combo1(0)) = "") Or (Trim(Combo1(1)) = "") ThenMsgBox "请设置查询条件!", vbOKOnly + vbExclamation, "警告"Exit Sub 根据出发地和目的地查询ElsesQSql = "select * from find where fplace = '" & Trim(Combo1(0).Text) & "' and fdes = '" & Trim(Combo1(1).Text) & "'" 查询语句Adodc1.RecordSource = sQSql 显示查询结果Adodc1.RefreshDataGrid1.ReBindEnd IfEnd SubPrivate Sub Cmdout_Click() 退出Me.Hidesystem.Show 重新显示首页End SubPrivate Sub Command1_Click() 调用订票窗体book.Showfind.HideEnd SubPrivate Sub Command2_Click() 显示全部航班Dim s As Strings = "select * from find"Adodc1.RecordSource = sAdodc1.RefreshDataGrid1.ReBindEnd SubPrivate Sub Form_Load() 初始化combobox控件 Dim sSql As StringDim txtSQL As StringDim MsgText As StringDim mrc As ADODB.RecordsetFor i = 0 To 1Combo1(i).ClearNext itxtSQL = "select DISTINCT fplace from find"Set mrc = ExecuteSQL(txtSQL, MsgText)If Not mrc.EOF ThenDo While Not mrc.EOFCombo1(0).AddItem Trim(mrc.Fields(0))mrc.MoveNextLoopElseMsgBox "请先进行航线信息设置!", vbOKOnly + vbExclamation, "警告"Exit SubEnd Ifmrc.ClosetxtSQL = "select DISTINCT fdes from find"Set mrc = ExecuteSQL(txtSQL, MsgText)If Not mrc.EOF ThenDo While Not mrc.EOFCombo1(1).AddItem Trim(mrc.Fields(0))mrc.MoveNextLoopElseMsgBox "请先进行航线信息设置!", vbOKOnly + vbExclamation, "警告"Exit SubEnd Ifmrc.CloseEnd SubPrivate Sub txt_date_GotFocus()Me.Calendar1.Visible = TrueMe.Calendar1.Top = 480Me.Calendar1.Left = 2760End SubPrivate Sub txt_date_LostFocus()Me.Calendar1.Visible = FalseEnd SubPublic Function ExecuteSQL(ByVal SQL As String, MsgString As String) 初始化ExecuteSQLAs ADODB.RecordsetDim cnn As ADODB.ConnectionDim rst As ADODB.RecordsetDim sTokens() As StringOn Error GoTo ExecuteSQL_ErrorsTokens = Split(SQL)Set cnn = New ADODB.Connectioncnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=D:\数据库.mdb;Persist Security Info=False"If InStr("INSERT,DELETE,UPDATE", _UCase$(sTokens(0))) Thencnn.Execute SQLMsgString = sTokens(0) & _" query successful"ElseSet rst = New ADODB.Recordsetrst.Open Trim$(SQL), cnn, _adOpenKeyset, _adLockOptimisticSet ExecuteSQL = rstMsgString = "查询到" & rst.RecordCount & _" 条记录 "End IfExecuteSQL_Exit:Set rst = NothingSet cnn = NothingExit FunctionExecuteSQL_Error:MsgString = "查询错误: " & _Err.DescriptionResume ExecuteSQL_ExitEnd Function4.订票:Dim cnn As New ADODB.ConnectionDim rst As New ADODB.RecordsetPrivate Sub init_ado() 初始化cnn和rstDim strcnnSet cnn = New ADODB.Connectionstrcnn = "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=D:\数据库.mdb;Persist Security Info=False"cnn.Open strcnnSet rst = New ADODB.Recordsetrst.CursorType = adOpenKeysetrst.LockType = adLockOptimisticEnd SubPrivate Sub cmd_insert_Click() 订票,即添加Dim xin As Stringinit_adoxin = "select * from book where fdate='" & Val(txtdate.Text) & "' and fname='" & Val(txtname.Text) & "' and fline='" & Val(txtline.Text) & "'and password='" & Val(pass.Text) & "'"rst.Open xin, cnn, , , adCmdTextrst.AddNewrst!fdate = txtdaterst!fline = txtlinerst!fname = txtnamerst!Password = passrst.UpdateAdodc1.RefreshDataGrid1.ReBindtxtdate.Text = ""txtline.Text = ""txtname.Text = ""pass.Text = ""txtdate.SetFocusMsgBox "预订成功!", , "提示"End SubPrivate Sub cmd_refresh_Click() 更新数据Adodc1.RefreshEnd SubPrivate Sub Cmdout_Click() 退出Unload Mesystem.ShowEnd SubPrivate Sub Form_Load()MsgBox "输入提示:每一项为必填内容(格式说明:航班:1 姓名和身份证不能为空)!", , "提示"End SubPrivate Sub Calendar1_Click()txtdate.Text = Me.Calendar1.ValueEnd SubPrivate Sub txtdate_GotFocus()Me.Calendar1.Visible = TrueMe.Calendar1.Top = 120Me.Calendar1.Left = 2640End SubPrivate Sub txtdate_LostFocus()Me.Calendar1.Visible = FalseEnd Sub5.退票:Dim cnn As New ADODB.ConnectionPrivate Sub Calendar1_Click()tdate.Text = Me.Calendar1.ValueEnd SubPrivate Sub cmdback_Click() 退票,即删除Dim s As Strings = "delete * from book where password ='" & Val(tpass.Text) & "'"cnn.Execute sAdodc1.RefreshDataGrid1.ReBindMsgBox "成功退票!", , "提示"End SubPrivate Sub Command2_Click()Unload Mesystem.ShowEnd SubPrivate Sub Form_Load()cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\数据库.mdb;Persist Security Info=False"MsgBox "请输入您的退票信息(格式说明:航班:1 姓名和身份证不能为空)!", , "提示"End SubPrivate Sub tdate_GotFocus()Me.Calendar1.Visible = TrueMe.Calendar1.Top = 240Me.Calendar1.Left = 2280End SubPrivate Sub tdate_LostFocus()Me.Calendar1.Visible = FalseEnd Sub七、设计总结1、设计心得通过将近两周的时间来实现这个“航空预订票系统”,我学习到了很多知识,同时也对我的专业有了更进一步的认识和了解。
航空客运定票系统课程设计报告1需求分析1.1用列表的方式存放航班信息包括表一:终点站名,航班号,飞机号,日期(包括年月日星期),乘员定额,已订票的客户名单,等候替补的客户名单;表二:已订票的客户,包括:姓名,订票数,舱位等级(1,2,3)表三:等候替补的客户名单,包括:姓名,所需票数1.2 功能描述1.查询:输入终点站名,经过查询后,输出查询结果(有:显示该航班信息;无:提示没有信息);2. 订票:提示用户输入航班号或终点站名和订票数,经查找后,输出结果(若有余票,则为客户办理订票手续,提示舱位(1,2,3)选择,订票成功;若已满员或余票少余订票额,则需重新询问客户是否排队等候。
若需要,可登记排队候补,插入候补队列);若订票成功,则输出用户姓名,航班号,终点站名,订票数,座位号,日期。
3. 退票:根据客户提出的情况(日期、航班号或终点站名),为客户办理退票手续。
4.其他:若有用户退票成功,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户,直到队尾结束。
(订票:先把客户的信息创建,附值,然后与航班里的余票比较,乎合就向订票表中手插入;订票不成功就向等候表中插入;退票:先把客户的票额减去退票数,然后把相应航班的余票修改,再去查询等候表)1.3 对性能的规定1. 精度输入输出的数据有整型,字符串。
2. 时间特性要求每月时行更新处理一次。
1.4 输入输出要求系统航班信息包括终点站名,航班号,日期,乘客姓名,星期几,这些是字符串;飞机号,乘员定额,余票数,已订票数,舱位等级,座位号,订票数,这些是整型。
给出相应的操作提示,若进行误操作,则给出对应的提示。
2概要设计2.1功能需求(航班查询流程)2.2功能模型(数据流图)2.3机票预订系统图2.4状态模型(状态图)预定状态图2.5 ER图2.6数据结构,属性,函数定义属性类型名称终点站名String endPlace航班号String airNum日期String date星期几String week乘客姓名String name飞机号int planeNum乘员定额int sum余票数int left已订票数int booked舱位等级int seatRoom 座位号int seat main()search(String endPlace) 实现按终点站名查找,若有,则输出航班信息,余票数等,若没有则提示没有book(StringendPlace,int need) 实现按终点站名,订票数进行定票,返回订票结果returns(Stringdate,int airNum) 退票功能,按日期,航班号来退票welcome() 输出相关操作提示信息,如:1.查询;2.定票;3.退票;4.退出toTop() 调用些函数返回顶层操作3详细设计算法实现的源程序,源程序要按照写程序的规则来编写。
航空订票系统课程设计一、课程目标知识目标:1. 让学生理解航空订票系统的基本概念,掌握其功能模块和工作原理。
2. 使学生掌握数据库查询、数据传递和数据处理的基本方法。
3. 帮助学生了解航空公司的运营策略和机票定价机制。
技能目标:1. 培养学生运用所学知识设计简单的航空订票系统,具备实际操作能力。
2. 培养学生分析问题、解决问题的能力,学会在实际项目中运用数据库技术。
3. 提高学生的团队协作能力,学会在项目中分工合作,共同完成任务。
情感态度价值观目标:1. 激发学生对计算机科学的兴趣,培养其主动学习的热情。
2. 培养学生的责任心,使其认识到严谨、细致的工作态度在项目实施中的重要性。
3. 增强学生的自信心,使其相信通过努力可以掌握复杂的计算机技术。
本课程针对高年级学生,结合航空订票系统课程特点,注重理论与实践相结合,旨在提高学生的实际操作能力和解决问题的能力。
课程目标具体、可衡量,以便学生和教师能够清晰地了解课程的预期成果,并为后续的教学设计和评估提供依据。
二、教学内容1. 航空订票系统概述:介绍航空订票系统的基本概念、发展历程和功能模块,结合课本第二章内容,让学生对航空订票系统有整体的认识。
2. 数据库查询与处理:讲解数据库的基本原理,以课本第四章内容为基础,教授SQL查询语句、数据传递和数据处理方法,为设计航空订票系统奠定基础。
3. 航空公司运营策略与机票定价机制:分析航空公司的运营策略,结合课本第五章内容,介绍机票定价机制,帮助学生了解行业背景。
4. 航空订票系统设计:根据课本第六章内容,详细讲解航空订票系统的设计方法,包括系统架构、模块划分、功能实现等,指导学生进行实际操作。
5. 实践项目:组织学生分组进行航空订票系统设计实践,结合前述章节内容,完成以下任务:a. 设计并实现一个简单的航空订票系统;b. 编写系统需求分析、设计说明书;c. 进行系统测试,确保系统功能的正确性和稳定性。
6. 教学进度安排:共安排10个课时,具体如下:a. 第1-2课时:航空订票系统概述;b. 第3-4课时:数据库查询与处理;c. 第5-6课时:航空公司运营策略与机票定价机制;d. 第7-8课时:航空订票系统设计;e. 第9-10课时:实践项目指导与展示。
XXXXXXXXX计算机技术系项目名称:航空客运订票系统学生姓名:XX学号:班级:10801指导教师:年月日目录1.系统需求分析 (3)1.1问题分析 (3)1.2任务意义 (3)2. 数据结构设计及用法说明 (4)3. 详细设计和编码 (5)3.1.主菜单 (5)3.2.录入航空信息 (5)3.3输出航空信息 (6)3.4订票 (7)3.5退票 (7)4. 实验结果 (9)4.1菜单函数的功能测试 (9)4.2录入函数的功能测试 (9)4.3查询航班函数的功能测试 (11)4.4订票功能地测试 (12)致谢 (17)参考文献 (18)附录:源程序清单 (19)1.系统需求分析1.1 问题分析这次的课程设计是设计一个航空系统。
由于存储的数量较大且不固定,因此选择用链表来保存基本信息:终点站名、航班号、飞机号、飞行时间、乘员定额、余票量、已经订票的客户名单(包括姓名、订票量)、等候替补的客户名单(包括姓名、所需票量)等等。
由于在航线这个主链表上,每个航班上的已经订票名单这个链表和等候替补的名单这个链表队列,所以建立一个十字交叉链表,在纵行上开辟一个链表存储所有航班的基本信息,再在各个航班节点横向展开一个链表和一个链表队列,展开的链表存储已经订票的客户名单,展开的链表队列存储等候替补的客户名单。
同时,由于预约人数无法预计,队列也应以链表作存储结构。
系统主要实现的操作和功能是:添加航线、查询航线、订票功能、退票功能。
要实现这些功能,首先要使程序能实现查找功能,在查找出到有效信息的前提之下,通过链表的赋值,更新信息和删除退票人信息,满足客户的要求。
1.2 任务意义飞机场每天要接受大量的订票退票服务,对于这些数量巨大的数据,需要一个专门的软件来进行管理和操作。
软件至少需要具备的基本功能包括:接受订票,处理退票,查询航班信息等等。
面对这些实际问题,航空客运系统的制作无疑要全面的考察一个学生的知识及能力。
在全面理解客户的需求下面,来进行设计出最能够满足客户的程序出来,并且能够根据不同的要求来将其进行改动,最能考察到对代码活用的程度。
(完整word版)飞机订票系统实验报告实验题目:订票系统实验目的:1.了解并掌握数据结构的设计方法,具备初步的独立分析和设计能力;2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
实验要求:●任务:通过此系统可以实现如下功能:●录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)●查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;●订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;●退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
●修改航班信息:当航班信息改变可以修改航班数据文件实验主要步骤:航班端(一)输入航班信息,add()增加航班信息,并保存到save().(二)修改信息,在xiugai()函数里,输入要修改的航班号,选择修改的内容,如修改时间,地点并保存。
客户端(一)输入起始站和终点站,在两者都符合的条件下在search ()函数里查找,并输出航班信息。
(二)订票:用search(),判断是否有符合的航班,有则输出并进行订票,还有输入客户信息。
(三)退票:调用search(),用它的返回值判断是否有符合的航班,有则输入,并删除客户信息。
1)在主函数里先了调用chushihua(),确定有hangban.dat 文件,并让客户或航班端选择相应的模块。
2)定义订票业务函数,在这个函数中首先调用了search 函数查找需要订票的航班,用search函数的返回值判断是否有该航班。
课程设计报告课程名称:数据结构与算法题目名称:航空客运订票系统2011 年 6 月10 日目录一、设计目的 (2)二、问题描述 (3)三、需求分析 (3)四、概要设计 (4)1、算法思路 (4)2、工作分配 (4)3、程序模块 (4)五、详细设计 (7)1.数据定义 (7)1.1 已定票客户 (7)1.2 未订票客户 (8)1.3 航线定义 (8)2.函数设计 (9)2.1 录入航线信息 (9)2.2查询航线信息 (10)2.3订票功能 (11)2.4退票功能 (17)2.5主函数 (21)六、测试数据 (23)七、总结 (24)航空客运订票系统一、设计目的我们之所以选择做航空订票系统这个课题,主要是因为当今时代的需求。
随着科技与经济的发展,越来越多的人选择乘飞机,这跟我国的经济增长有很大关系,人们在追求快节奏的生活方式,所以做飞机无疑成了首选。
而且随着网络的盛行,航空订票系统就显得尤为重要,我们开发这个系统主要是为了方便大家,让大家能够快速、清晰、准确地了解航班信息,而不至于像以前那样排队等候,从而避免耽搁乘客大量的等待时间。
二、问题描述航空客运订票的业务活动包括:查询航线,预订客票,办理退票等。
顾客只要在网上登陆了这个系统并输入相应的航班信息和飞行时间等信息,就可以了解当天的航班信息,方便乘客合理的安排自己的时间。
顾客可以通过这个系统了解到当天将到地点的详细航班信息,包括:航班号、飞机号以及余票额等相关信息。
三、需求分析(1)每条航线所涉及带的信息有:终点站名、航班号、飞机号、飞行日期、余票量、已定票客户名单(包括姓名、订票量、仓位等级1,2,或3)以及等候替补的客户名单(包括姓名、所需票量);(2)作为示意系统,全部数据可以存放在内存中。
(3)系统能实现的操作功能如下:①查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行、余票额;②承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班的票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。
若需要,可登记排队候补;③承办退票业务:根据客户提供的情况(姓名、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的需求,则为他办理订票手续,否则,依次询问其他排队候补客户。
四、概要设计1、算法思路数据用数组存储以及结构体等通过设置关键字并用一定的数据结构对其进行一定的数据排序。
输入航班信息,进行存储及按要求的查找。
在这期间,我们需要书写四个基本函数:即录入函数、查找函数、订票函数及退票函数。
用if 条件语句实现条件的选择,并对子函数进行相关的调用。
按要求输出用户所需信息,实现简单而便捷的快速查询。
2、工作分配3、程序模块(1)登陆界面图3-1(2)程序的模块为录入功能:原始数据的输入(通过文件输入航线的基本信息)。
查询功能:根据客户需要,查询相关航线。
订票功能:满足客户的订票任务。
退票功能:根据客户的不同情况,支持客户的退票请求。
退出功能:退出系统。
图3-2 输入1,通过文件进行航线原始数据的输入图3-3输入2,通过输入终点站名查询航线信息图3-4输入3,通过输入终点站名,进行订票图3-5输入4,通过输入退票客户信息进行退票图3-6 输入5,退出订票系统五、详细设计1.数据定义1.1 已定票客户struct yidingpiaokehu{char name[M];//顾客名int ordernum;//订票量int rank;//仓位等级struct yidingpiaokehu *next;// };typedef struct yidingpiaokehu *linklist;1.2 未订票客户struct weidingpiaokehu{char name[M]; //姓名int ordernum; //所需票量struct weidingpiaokehu *next; //同一类型的指针};typedef struct weidingpiaokehu *pointer; //为订票客户的结构体struct node{pointer front; //指向未订票客服的第一个客户pointer rear; //指向未订票客户的最后一个客户};typedef struct node linkqueue; //指向未订票客户的指针结构体1.3 航线定义struct lnode{char zhongdianzhan[M];//终点站名char hangbanhao[M];//航班号char feijihao[5];//飞机号int day;//飞行时间int capacity;//成员定额int leftticket;//余票量int seat[M];linklist yd;//已定票客户的头指针linkqueue wd;//为订票客户的头指针和尾指针};typedef struct lnode hangxian;2. 函数设计2.1 录入航线信息void insertairline(hangxian l[],int n){ifstream fin("航线3.txt");for(int i=1;i<=n;i++){fin>>l[i].zhongdianzhan;fin>>l[i].hangbanhao;fin>>l[i].feijihao;fin>>l[i].day;fin>>l[i].capacity;fin>>l[i].leftticket;//初始化时余票量等于乘员定额l[i].yd=(linklist)malloc(sizeof(struct yidingpiaokehu));//为每条航线上的已定票客户开辟存储空间l[i].yd->next=null;l[i].wd.front=l[i].wd.rear=(pointer)malloc(sizeof(struct weidingpiaokehu));//为每条航线上的未定票客户开辟存储空间l[i].wd.front->next=null;for(int j=1;j<=l[i].leftticket;j++)l[i].seat[j]=0;}}2.2查询航线信息void chaxungongneng(hangxian l[],int n){char c[M];cout<<"请输入终点站名:"<<endl;cin>>c;while(i<=n){if(!strcmp(c,l[i].zhongdianzhan)){cout<<"输出航线信息:"<<endl;cout<<"航班号:"<<l[i].hangbanhao<<" "<<"飞机号:"<<l[i].feijihao<<" "<<"飞行日期:"<<l[i].day<<" "<<"余票额:"<<l[i].leftticket<<endl;break;}else i++;}if(i>=n+1)cout<<"对不起没有你要查询的航线!";}2.3订票功能void dingpiao(hangxian l[],int i,int num){p=(linklist)malloc(sizeof(struct yidingpiaokehu)); cout<<"请输入客户姓名:";cin>>p->name;cout<<endl<<"请输入仓位等级:";cin>>p->rank;p->ordernum=num;p->next=l[i].yd->next;l[i].yd->next=p;l[i].leftticket-=num;int x=num;cout<<endl<<"您所订票的座位号是";while(x!=0){for(int j=1;j<=M;j++){if(l[i].seat[j]==0){l[i].seat[j]=1;cout<<j<<" ";}else continue;break;}x--;}cout<<endl<<"订票成功!";cout<<endl;}void denghoudingpiao(hangxian l[],int i){pointer p;p=(pointer)malloc(sizeof(struct weidingpiaokehu));cout<<endl<<"请输入客户姓名:";cin>>p->name;cout<<endl<<"请输入预定票量:";cin>>p->ordernum;p->next=null;//---------------插入队列l[i].wd.rear->next=p;l[i].wd.rear=p;cout<<endl<<"等候订票成功!"<<endl;}void dingpiaogongneng(hangxian l[],int n) {char c[M];int num;int m,p;do{cout<<endl<<"请输入终点站:";cin>>c;int i=1;while(i<=n){if(!strcmp(c,l[i].zhongdianzhan)){{cout<<endl<<"输出查询航班信息:"<<endl;cout<<"终点站:"<<l[i].zhongdianzhan<<" "<<"航班号:"<<l[i].hangbanhao<<" "<<"飞机号:"<<l[i].feijihao<<" "<<"飞行日期:"<<l[i].day<<" "<<"余票额:"<<l[i].leftticket<<endl;do{cout<<"请输入订票数额";cin>>num;cout<<endl;if(num<=l[i].leftticket){dingpiao(l,i,num);//---------------------------------------转入订票;return;}else{cout<<"对不起,余票额不足!"<<endl;cout<<"是否还需订票"<<endl;cout<<"是请按1,等候订票请按2,退出请按0";cin>>p;}}while(p==1);if(p==2)denghoudingpiao(l,i);//---------------------------------------------------插入等候队列;else break;}return;}else i++;}if(i>=n+1){cout<<"对不起,没有您要查找的航班!"<<endl;cout<<"是否要查找其他航班信息?"<<endl;cout<<"是请按1,否请按0"<<endl;cin>>m;}}while(m==1);}2.4退票功能int tuipiao(hangxian l[],int i){char name[M];int c;cout<<endl<<"请输入退票客户姓名";cin>>name;cout<<endl<<"请输入退票客户所定票的座位号:";cin>>c;linklist p,q;p=l[i].yd->next;while(p!=null){q=p;if(!strcmp(name,p->name)){q->next=p->next;p->next=null;free(p);l[i].seat[c]=0;l[i].leftticket++;cout<<endl<<"退票成功!";break;}else p=p->next;}if(p==null){cout<<endl<<"不存在退票客户!";return 0;}else return 1;}void houbudingpiao(hangxian l[],int i){pointer q;linklist p;q=l[i].wd.front->next;p=(linklist)malloc(sizeof(struct yidingpiaokehu));if(q==null)cout<<endl<<"没有排队等候客户!"<<endl;while(q!=null){if(q->ordernum<=l[i].leftticket){strcpy(p->name,q->name);p->ordernum=q->ordernum;p->next=l[i].yd->next;l[i].yd->next=p;l[i].leftticket-=q->ordernum;int x=q->ordernum;cout<<endl<<"候补客户"<<q->name<<"订票的座位号是";while(x!=0){for(int j=1;j<=M;j++){if(l[i].seat[j]==0){l[i].seat[j]=1;cout<<j<<" ";}else continue;break;}x--;}l[i].wd.front->next=q->next;free(q);//-------------------------释放了q之后,如果不做q=l[i].wd.front->next,while循环就不能进行下去,q=l[i].wd.front->next;}elseq=q->next;}}void tuipiaogongneng(hangxian l[],int n){char c[M];int day;cout<<endl<<"请输入退票航班:";cout<<endl<<"请输入退票日期:";cin>>day;int i=1;while(strcmp(l[i].hangbanhao,c))i++;if(i>n) cout<<"输入航班号错误!";else if(tuipiao(l,i)){cout<<endl<<"为排队候补客户办理订票"<<endl;houbudingpiao(l,i);}}2.5主函数void main(){hangxian l[M];int m;cout<<"输入航线条数:";cout<<endl;int n;do{cout<<endl;cout<<"****************************"<<endl;cout<<"欢迎使用航空客运订票系统:"<<endl;cout<<"* 1.录入航线信息*"<<endl;cout<<"* 2.查询航线信息*"<<endl;cout<<"* 3.订票功能*"<<endl;cout<<"* 4.退票功能*"<<endl;cout<<"* 5.退出*"<<endl;cout<<"* 请选择*"<<endl;cout<<"****************************"<<endl;cin>>n;if(n==1)insertairline(l,m);if(n==2)chaxungongneng(l,m);if(n==3)dingpiaogongneng(l,m);if(n==4)tuipiaogongneng(l,m);}while(n>=1&&n<=4);}六、测试数据航线信息:beijing 0001 10001 1 10 10shanghai 0002 10002 2 10 10guangzhou 0003 10003 3 10 10订票客户信息:Wangyi 1 1Wanger 1 2Wangsan 1 3Wangsi 1 3Wangwu 1 1Wangliu 1 2另外当订票已满时再订票的话,可以通过转入等候订票退票完成时,系统将会转入为等候订票客户订票七、总结1. 不足经过小组同学的努力,我们也终于结束了这次的课程设计,虽然最后的检验已经通过了,但是其中仍显现出许多的不足。