回顾数据结构航空订票系统课程设计报告.doc
- 格式:doc
- 大小:292.50 KB
- 文档页数:30
数据结构课程设计实验报告设计题目__________________________________________________________________ 设计者__________________________________________________________________ 指导老师__________________________________________________________________ 班级___________________________________________________________________ 学号____________________________________________________________________一、设计要求任务通过此系统可以实现如下功能:1.录入航班信息:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据定)2.查询航班:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,确定航班是否满仓);3.订票:(订票情况可以存在一个数据文件中,结构自己设定);4.退票:可退票,退票后修改相关数据文件;5.修改航班信息6.退出程序客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;二、设计概要主界面选择操作项目1.录入航班信息通过单链表这种数据结构,设置了剩余票数,航班号,出发地点,到达地点,起飞日期,出发时间,到达时间,票价。
2.订票输入旅客的姓名,证件号,航班号,和订票张数。
程序中自动查询输入要定的航班号,如果没有则叫其重新输入,有则执行:票数足够则订票成功,票数不充足叫其选择其它航班。
此也采用单链表的数据结构。
《数据库设计与开发Ⅱ》课程设计报告航空订票系统学院:班级:学号:姓名:完成时刻:目录一.需求分析 (1)1.引言 (1)2.项目概述 (1)3.需求规定 (2)4.运行环境规定 (4)二.系统结构数据设计 (5)三.视图设计 (8)图 (8)2.关系模式 (9)3.数据流程图 (10)四.逻辑结构设计 (11)1.数据表描述 (11)2.程序描述 (12)3.功能描述 (13)五.系统设计 (19)1.系统功能分析 (19)2.系统功能模块设计 (19)六.项目总结 (20)1.本项目设计的长处 (20)2.项目实现流程 (20)3.心得体会 (20)一、需求分析1.引言编写本套航空订票系统的《软件规格说明书》的目的在于按照软件需求说明书中的任务概述,需求规定等计划设计出一套可执行软件的结构模型。
编写目的(1)便于用户、分析人员和软件设计人员进行理解和交流(2)希望系统的外部项(旅客、旅行社、航空公司)均支持目标软件系统的确认。
按照需求规格说明书中确立的可测试标准进行测试,并取得确认。
(3)控制系统进化进程项目背景随着社会的进展,人民生活水平的不断提高,人们出行的交通工具也跟从社会的进展而进展起来了。
乘飞机出行的人愈来愈多。
所以这方面的市场超级大。
所以“机票预订系统”的开发是势在必行。
通过对各方面人士对该系统功能的意见的调查,咱们在此基础上肯定了旅客与各航空公司所需要的“机票预订系统”。
同时咱们会不断更新该系统的功能来知足不断进展的市场需求。
项目描述为各旅行社把预订机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时刻、旅行目的地等)输入到该系统,系统为旅客安排航班。
当旅客交付了预定金后,系统印出取票通知和帐单交款取票,系统查对无误即印出机票给旅客。
另外为了航空公司能够随时掌握各航向飞机的乘载情形,而能够按期进行查询统计,以便适当调整概念软件需求:IEEE软件工程标准辞汇表(1997年)中概念软件需求为:(1)用户解决问题或达到目标所需的条件或权能(Capability)。
数据结构课程设计---航空订票系统数据结构课程设计航空订票系统一、设计目的:编写一个航空订票系统,可以在系统中录入并修改各个航班的具体情况,帮助乘客准确的查询个航班的最新信息(包括航班号、航班的起始时间和地点。
票价)和各个项目业务的及时办理(包括订票、退票等)。
二、任务:航空客运定票的业务活动包括:查询航线、客票预定和办理退票等。
试设计一个航空客运定票系统,以使上述业务可以借助计算机来完成。
三、功能要求:1) 录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)2) 查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;3) 订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;4) 退票:可退票,退票后修改相关数据文件;5) 客户资料:有姓名,证件号,订票数量及航班情况,订单要有编号;6) 修改航班信息:当航班信息改变可以修改航班数据文件。
四、设计程序:#include<stdio.h>#include<string.h>#include<stdlib.h>#define N 100//最大容量typedef struct Flight//航班信息{char FlightNumber[6];//航班号char SPlace[10];//起始地char DPlace[10];//目的地char Stime[5];//起飞时间char Etime[5];//降落时间int price;//票价int RemnantSeat;//剩余座位数}Flight;typedef struct Order//订单信息{int OrderNumber;//订单编号char PName[10];//乘客姓名char ID[20];//身份证号char FlightNumber[6];//航班号int num;//订票数量}Order;Flight fl[N];Order od[N];int i,j;//两个常用角标变量int lenf=0;//航班数int leno=0;//订单数char ch;//获取用户选择的变量char filenamef[]="flight.txt";//航班文件名char filenameo[]="order.txt";//订单文件名void save()//保存信息{FILE *fp;if((fp=fopen(filenamef,"w"))!=NULL)//打开文件保存航班信息{for(i=0;i<lenf;i++)//写入文件{fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%d\t%d\n",fl[i].FlightNumber,fl[i].S Place,fl[i].DPlace,fl[i].Stime,fl[i].Etime,fl[i].price,fl[i].Remnant Seat);}fclose(fp);//关闭文件}if((fp=fopen(filenameo,"w"))!=NULL)//打开文件保存订单信息{for(i=0;i<leno;i++)//写入文件{fprintf(fp,"%d\t%s\t%s\t%s\t%d\n",od[i].OrderNumber,od[i].PName,od[i ].ID,od[i].FlightNumber,od[i].num);}fclose(fp);//关闭文件}}void load()//读取信息{FILE *fp;if((fp=fopen(filenamef,"r"))!=NULL)//打开文件读取航班信息{i=0;while(!feof(fp))//读取文件{fscanf(fp,"%s%s%s%s%s%d%d",&fl[i].FlightNumber,&fl[i].SPlace,&fl[i]. DPlace,&fl[i].Stime,&fl[i].Etime,&fl[i].price,&fl[i].RemnantSeat);if(!feof(fp))i++;}lenf=i;//航班数量fclose(fp);//关闭文件}if((fp=fopen(filenameo,"r"))!=NULL)//打开文件读订单信息{i=0;while(!feof(fp))//读取文件{fscanf(fp,"%d%s%s%s%d",&od[i].OrderNumber,&od[i].PName,&od[i].ID,&od [i].FlightNumber,&od[i].num);if(!feof(fp))i++;}leno=i;//订单数量fclose(fp);//关闭文件}}int check(char s[])//检查是否重复{int g=0;for(;g<lenf;g++)if(strcmp(fl[g].FlightNumber,s)==0 && g!=i)//对比是否相同相同就说明重复了return g;//表示重复了return -1;//遍历了整个数组都没发现重复的表示没有重复}void input()//录入信息{system("cls");//清屏for(i=lenf;i<N;i++){printf("请输入航班号:");gets(fl[i].FlightNumber);while(check(fl[i].FlightNumber)!=-1)//检查是否重复{printf("航班号重复,请重新输入:");gets(fl[i].FlightNumber);}printf("请输入下列信息:\n");printf("出发地:");gets(fl[i].SPlace);printf("目的地:");gets(fl[i].DPlace);printf("起飞时间:");gets(fl[i].Stime);printf("降落时间:");gets(fl[i].Etime);printf("票价:");scanf("%d",&fl[i].price);printf("剩余座位数:");scanf("%d",&fl[i].RemnantSeat);getchar();//消除回车lenf++;//航班数加1printf("航班信息录入完成! 是否继续录入下一列航班信息?(y/n):");while(1){ch=getchar();getchar();//消除上一步产生的回车符if(ch=='y' || ch=='Y' || ch=='n' || ch=='N')break;elseprintf("请重新输入:");}if(ch=='n' || ch=='N')break;}save();//保存}void modify()//修改信息{char s[20];system("cls");//清屏printf("请输入要修改的航班号:");gets(s);for(i=0;i<lenf;i++)//查询是否存在输入的信息if(strcmp(fl[i].FlightNumber,s)==0)break;//存在结束循环if(i==lenf){printf("没有您输入航班信息,请按回车返回");getchar();return;}printf("请输入新的航班号:");gets(fl[i].FlightNumber);while(check(fl[i].FlightNumber)==1)//检查是否重复 {printf("航班号重复,请重新输入:");gets(fl[i].FlightNumber);}printf("请更新下列信息:\n");printf("出发地:");gets(fl[i].SPlace);printf("目的地:");gets(fl[i].DPlace);printf("起飞时间:");gets(fl[i].Stime);printf("降落时间:");gets(fl[i].Etime);printf("票价:");scanf("%d",&fl[i].price);printf("剩余座位数:");scanf("%d",&fl[i].RemnantSeat);getchar();//消除回车save();//保存printf("修改成功!\n");system("pause");//任意键继续}void book() // 订票{system("cls");//清屏i=leno;printf("请输入您的姓名:");gets(od[i].PName);printf("请输入您的身份证号:");gets(od[i].ID);printf("请输入订票的航班号:");gets(od[i].FlightNumber);for(j=0;j<lenf;j++)if(strcmp(fl[j].FlightNumber,od[i].FlightNumber)==0 )//对比是否相同break;if(j==lenf)// 表示航班不存在{printf("航班号不存在!请按回车返回");getchar();return;}printf("请输入订票数量:");scanf("%d",&od[i].num);fl[j].RemnantSeat-=od[i].num;//新的剩余票数printf("请输入订单编号:");scanf("%d",&od[i].OrderNumber);getchar();//消除回车leno++;//订单数加1save();//保存到文件printf("定票成功。
数据结构课程设计报告设计题目:航空客运订票系统院系年级学生学号指导教师2015年11月26日目录一、课程设计目的 3二、需求分析 3三、概要设计1.设计步骤 42.系统整体结构图 53.功能模块及调用关系说明 5四、详细设计和源代码1.实现概要设计中定义数据的存储结构 62.查询航线信息功能的算法设计73.订票功能的算法设计94.退票功能的算法设计125.录入功能的算法设计 146.总航线预览功能的程序源代码15五、调试分析1.各功能的具体实例分析162.实验过程中出现的问题及解决方法 20六、课程设计总结20七、参考资料21一、课程设计目的(1) 熟练使用 C 语言编写程序,解决实际问题;(2) 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;(3) 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;(4) 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;航空订票系统:(1)熟练掌握链表存储结构及其建立过程和常用操作;(2)熟练掌握队列的建立过程和常用操作;(3)学会自己调试程序的方法并掌握一定的技巧。
二、需求分析问题描述:航空客运订票的业务活动包括:查询航线、客票预订和办理退票等。
试设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。
设计任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;订票:(订票情况可以存在一个数据文件中,结构自己设定)根据客户提出的要求(日期、航班号、订票数额)查询该航班票额情况,若尚有余额,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需要重新询问客户要求。
目录总体设计 (2)概要设计 (2)详细设计 (3)调试分析 (7)测试数据及截图 (7)时间复杂度分析 (11)问题思考 (11)算法的改进设想 (11)课设总结体会 (11)附录 (13)程序说明 (13)源代码 (13)主要参考文献 (26)总体设计通过此系统可以实现如下功能:1).录入:可以录入航班情况(数据存储在一个数据文件中)2).查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;3).订票:(订票情况存在一个数据文件中)可以订票,如果该航班已经无票,可以提供相关可选择航班;4).退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
5).修改航班信息:当航班信息改变可以修改航班数据文件概要设计每个模块的算法设计说明如下:(1)录入模块:查找单链表的链尾,在链头插入一个“航班信息”的新结点。
(2)浏览模块:顺着单链表输出航班信息。
(3)修改模块:输入密码,确认是否有权限对航班信息进行修改,有则进行修改,否则不能修改。
提供两种修改方式:添加航班和对已有的航班信息进行改动(修改和删除),1添加航线,0对已有的航班信息进行改动(修改和删除)。
对已有的航班信息进行改动(修改和删除):顺着单链表查找,若找到则进行相关操作。
(4)查询模块:提供两种查方式:按航号和起飞抵达城市查询,0代表按航号查询,1代表按起飞抵达城市查询。
顺着单链表查找,如果与航班号(起飞抵达城市)一致,输出相关信息并询问乘客是否要订票,若订进入订票模块;否则,查询不成功。
(5)订票模块:查找乘客要订的航班号,判断此航班是否有空位,有则输入乘客有关信息,订票成功;否则查找这个月此乘客起飞城市和降落城市的有空位航班,供乘客选择,若有则订票,若无则订票不成功并把此乘客的信息录入此航班等候订票队列中,退出订票。
一.实验目的1.掌握使用VC+吐机调试队列的基本方法;2.掌握队列的基本操作:初始化,出队列,入队列等运算在顺序和链式存储结构上的实现。
3.了解队列的抽象数据类型定义4.熟练掌握链队列的定义,熟练掌握链队列表的基本算法及时间性能二.实验内容航班订票系统航空客运订票业务包括:查询航线,客票预订,办理退票等。
设计一个航空客运订票系统。
三.实验步骤(可选)typedef struct pas{CString nam;int bok;intlev;}pas;typedef struct wai{CString nam;int ned;}wai;typedef struct lpa{ pas man;struct lpa *next;}lpa,*ppa;typedef struct qnode{//非队候队列wai ren;struct qnode* next;}qnode,*ptrq;typedef struct flyinfo{CString des;CString fli;CString air;CString day;int tol;int lef;ppa chk;ptrq pwa;int flg;}flyinfo;typedef struct{ptrq front;ptrq rear;}linkq;void initq(linkq &q){q. front=q .rear=new qnode;q. front->next=NULL;}void rudui(linkq & q,wai man) {ptrq p;p=new qnode;p->ren .nam=man .nam;p->ren .ned=man .ned;p->next=NULL;q. rear->next=p;q. rear=p;}void chudui(linkq & q,wai & man) {if(q. front==q. rear)return;ptrq p;p=q. front->next;man .nam=p->ren .nam;man .ned=p->ren .ned;q. front->next=p->next;if(p==q.rear)q. front=q. rear;delete p;}/*typedef struct {flyinfo *bas;int len;}slist;void initlist(slist & I){I. bas=(flyinfo*)malloc(sizeof(flyinfo)*10);I. len=0;}*/void initchk(ppa &lis){lis=new lpa;lis->next=NULL;}void addpas(ppa & lis,pas miz){ppa pl=new lpa;ppa p=lis;while(p!=NULL)p=p->next;pl->man=miz;p=pl;pl->next=NULL;}void dele(ppa & lis,pas miz) {ppa p,q;p=q=lis;for(;q!=NULL;){if(q->man.nam==miz. nam){p->next=q->next;delete p;break;}p=q;q=q->next;}}flyinfo fly[10];linkq q[10];//paiduippa lis[10];//订票客户链表int fg=0;int fnum=0;BOOL CMyDlg::OnlnitDialog(){CDialog::OnInitDialog();//initlist(fly);initchk(lis[0]);initq(q[0]);initchk(lis[1]);initq(q[1]);fly[1] ・des=" 上海";fly[1] .air="CV902";fly[1] ・day=" 星期二";fly[1] ・fli="XXDDD";fly[1] ・tol=300;fly[1]・l ef=5;fly[0] ・des=" 南京";fly[0] .air="CV902";fly[0] ・day=" 星期三";fly[0] ・fli="XXODD";fly[0] ・tol=300;fly[0] ・lef=5;wai p1,p2;pl .nam="jack";pl. ned=10;p2・nam="rose";p2・ned=30;rudui(q[0],p1);rudui(q[0],p2);rudui(q[1],p1);rudui(q[1],p2);pas pa1,pa2;pal ・bok=2;pa1 ・l ev=1;pa1 ・nam="leke";pa2・bok=2;pa2 ・lev=1;pa2 .nam="bake";addpas(lis[0],pa1);addpas(lis[1],pa2);〃m_des=fly[0] ・des;// Add "About ・・・" menu item to system menu.// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & OxFFFO) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) {CString strAboutMenu;strAboutMenu ・LoadString(IDS_ABOUTBOX);if (!strAboutMenu ・lsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING , IDM_ABOUTBOX, strAboutMenu);}}void CMyDlg::OnBUTTONdingpiao(){fg=0;//biaozhi dingpiaoCAboutDlg dlg;dlg .DoModal();void CMyDlg::OnBUTTONnext() {if(fnum<=0){fnum++;m_air=fly[fnum] .air;m_des=fly[fnum] .des;m_flight=fly[fnum] .fli;m_total=fly[fnum] ・tol;m_left=fly[fnum] ・lef;m_day=fly[fnum] .day;UpdateData(false);}elseMessageBox("last!");} void CMyDlg::OnBUTTONup() { if(fnum>0){fnum--; m_air=fly[fnum] .air; m_des=fly[fnum] .des; m_f light=fly[fnum] .fli;m_total=fly[fnum] .tol; m_left=fly[fnum] .lef; m_day=fly[fnum] .day; UpdateData(false); } elseMessageBox("first!");}void CAboutDlg::OnOK(){UpdateData();pas pa;pa.l ev=m_levl;pa. bok=m_number;pa. nam=m_name;if(fg==0){addpas(lis[fnum],pa); MessageBox(‘ 订票成功!"); }elseif(fg==1){dele(lis[fnum],pa); MessageBox(‘ 退票成功!");} else{wai pd;pd・nam=m_name;pd・ned=m_number;rudui(q[fnum],pd);MessageBox('登记成功!"); }CDialog::OnOK();} void CMyDlg::OnButtonout(){fg=1;CAboutDlg dlg;dlg .DoModal();}void CMyDlg::OnBUTTONwait(){fg=2;CAboutDlg dlg;dig ・DoModal();五.实验中出现的问题、解决方法和心得体会1.通过本次实验,基本上了解了链队列的存储结构及其算法的实现,了解了链队列的特点以及链队列抽象出的数据类型的定义,基本上掌握了链队列基本算法如何实现,包括如何实现建立,查找,插入,删除,合并,销毁,数据排序等操作。
数据结构课程设计订票系统一、课程目标知识目标:1. 理解并掌握数据结构中的线性表、栈、队列等基本概念及应用场景;2. 学会使用链表、顺序表等实现订票系统中旅客信息的存储与管理;3. 掌握查找、排序等算法在订票系统中的应用,提高数据检索效率。
技能目标:1. 能够运用所学数据结构知识,设计并实现一个简单的订票系统;2. 培养学生分析问题、解决问题的能力,提高编程实践技能;3. 学会使用调试工具,对订票系统进行测试与优化。
情感态度价值观目标:1. 培养学生团队合作精神,提高沟通与协作能力;2. 增强学生对数据结构在实际应用中的认识,激发学习兴趣;3. 培养学生严谨、认真的学习态度,养成良好编程习惯。
分析课程性质、学生特点和教学要求:本课程为数据结构课程设计,旨在让学生将所学理论知识与实际应用相结合,提高解决实际问题的能力。
学生处于高年级阶段,已具备一定的编程基础和逻辑思维能力。
教学要求注重实践操作,引导学生运用所学知识解决实际问题。
二、教学内容1. 线性表、栈、队列基本概念及操作:结合教材第二章内容,使学生掌握线性表、栈、队列的定义、特点及基本操作。
- 线性表的实现(链表与顺序表)- 栈的概念、实现及应用- 队列的概念、实现及应用2. 数据存储与管理:结合教材第四章内容,让学生学会使用数据结构对订票系统中旅客信息进行存储与管理。
- 旅客信息的数据结构设计- 数据存储(文件、数据库等)3. 查找与排序算法:结合教材第五章内容,培养学生运用查找与排序算法优化订票系统的能力。
- 常见查找算法(顺序查找、二分查找等)- 常见排序算法(冒泡排序、快速排序等)4. 订票系统设计与实现:结合教材实际案例,指导学生设计并实现一个简单的订票系统。
- 系统需求分析- 功能模块划分- 编程实现与测试5. 课程进度安排:- 第1周:线性表、栈、队列基本概念及操作- 第2周:数据存储与管理- 第3周:查找与排序算法- 第4周:订票系统设计与实现及优化教学内容注重理论与实践相结合,以教材为基础,确保学生能够系统地掌握数据结构知识,并将其应用于实际项目中。
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 任务意义飞机场每天要接受大量的订票退票服务,对于这些数量巨大的数据,需要一个专门的软件来进行管理和操作。
软件至少需要具备的基本功能包括:接受订票,处理退票,查询航班信息等等。
面对这些实际问题,航空客运系统的制作无疑要全面的考察一个学生的知识及能力。
在全面理解客户的需求下面,来进行设计出最能够满足客户的程序出来,并且能够根据不同的要求来将其进行改动,最能考察到对代码活用的程度。
航空订票系统(数据库课程设计)《数据库系统原理》课程设计报告航空订票系统学院:班级:学号:姓名:完成时间:目录一、需求分析--------------------------------------------------------------11、引言-------------------------------------------------------------------------------------------12、项目概述-------------------------------------------------------------------------------------23、需求规定-------------------------------------------------------------------------------------24、运行环境规定-------------------------------------------------------------------------------4二、视图设计--------------------------------------------------------------41、E-R 图----------------------------------------------------------------------------------------42、关系模式-------------------------------------------------------------------------------------53、物理数据模型描述-------------------------------------------------------------------------54、数据流程图----------------------------------------------------------------------------------6三、逻辑结构设计--------------------------------------------------------71、数据表描述----------------------------------------------------------------------------------72、表间联系-------------------------------------------------------------------------------------8四、系统设计--------------------------------------------------------------81、系统功能分析-------------------------------------------------------------------------------82、系统功能模块设计-------------------------------------------------------------------------9五、项目总结--------------------------------------------------------------101、本项目设计的优点-------------------------------------------------------------------------102、项目实现流程-------------------------------------------------------------------------------103、心得体会-------------------------------------------------------------------------------------10一、需求分析1、引言1.1编写目的(1)便于用户、分析人员和软件设计人员进行理解和交流(2)希望系统的外部项(旅客、旅行社、航空公司)均支持目标软件系统的确认。
数据结构课程设计报告班级:指导老师日期:2014年12月【需求分析】2.航空订票系统试设计一个航空订票系统,基本要求如下:每条航班所涉及的信息有:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,乘员定额,余票量,订定票的客户名单(包括姓名,订票量,舱位等级(头等舱、公务舱、经济仓)以及等候替补的客户名单(包括姓名、所需数量)。
采用链式存储结构。
要求:系统能实现的操作和功能如下:(1)航班信息管理。
(2)查询航线,按以下几种方式查询:①按航班号查询;②按起点站查询;③按终点站查询;④按日期查询;每种查询方式中,查询后输出如下信息:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,余票量。
(3)承办订票业务:根据客户提出的要求(航班号,订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少于订票额,则需重新询问客户要求。
若需要,可登记排队候补。
(4)承办退票业务:根据客户提出的情况(日期,航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。
【设计】2.1 设计思想(1)数据结构设计①.‘航班信息数据结构’采用链式储存结构,并且设置链接‘订票乘客名单域’和‘排队等候名单域’的借口。
设计如下:/*航班信息数据结构 */typedef struct Airp{char airnum[10];//航班号char planenum[10];//机型char departure[10];//起飞机场char terminal[10];//降落机场char weekday[5];//日期struct time uptim;//起飞时间time downtim;// 降落时间time flytim;// 飞行时间int price;//价格int tkt_ful;//乘员定额int tkt_sur;//余票量Book_list *book;//订票客户名单Wait_list wait;//等待候补客户名单Airp *next;}lineinfo;//②‘订票乘客名单域’采用链式存储结构,以单链表形成名单列表。
青岛理工大学数据结构课程设计报告题目:飞机订票系统院(系):学生姓名:班级:学号:起迄日期:指导教师:2010—2011年度第 2 学期一、需求分析1.问题描述:设计一个模拟飞机订票系统,通过此系统可以录入、查询、修改航班情况,完成用户订票和退票功能,并且可以保存客户和航班的资料。
2.基本功能1,录入航班信息。
没个航班的信息包括:航班号,起飞、抵达城市,座位总数,剩余座位数。
数据由使用者输入。
数据存储在txt文件中,采用线性表的链式结构。
2,加载航班和客户信息。
可以自动加载保存在txt文件中的航班和客户的信息。
3,查询航班。
可以通过输入航班号,查询该航班的所有信息。
可以通过输入起飞抵达的城市,查询航班的信息。
4,订票。
客户的信息包括:姓名,证件号,所订票的航班号,座号。
用户输入要订票的航班号,如果该航班未满,则订票成功,并记录客户的信息。
如果该航班已满,则订票失败,输出所有未满的航班信息,供用户选择。
5,退票。
删除退票用户的订票信息,相应的航班的剩余票数增加1。
6,修改航班信息。
用户输入要修改的航班号,和要修改的内容,修改该航班的相应信息。
7,保存操作。
把当前的航班信息,和用户信息分别保存在txt文件中。
8,输出所有客户信息。
按一定的格式输出用户的姓名,证件号码,航班号,座号。
9,输出所有航班信息。
按一定的格式输出所有的航班的航班号,起飞抵达城市,座位总数,剩余座位数。
0,退出系统。
3.输入输出在控制台下,根据提示输入要完成功能的标号,然后在提示下选择性的输入航班号、起飞抵达地、证件号码,或者姓名等。
系统会根据用户的输入输出相应的航班信息或者用户信息。
二、概要设计1.设计思路:对于航班和用户,分别定义不同的数据结构,并且采用线性表的链式结构进行存储。
然后根据要完成的功能,分模块用函数实现。
所用到的算法主要有:链表的创建,增加,遍历,插入,删除。
2.数据结构设计:采用的逻辑结构是线性结构。
存储结构是链式结构。
《数据结构》课程设计报告一、订票系统【需求分析】本订票系统要能够实现航班情况的录入功能、航班的查询功能、订票功能、退票功能以及管理本系统的功能即能够修改航班信息。
具体分析如下:1、录入功能可以录入航班信息,如录入航班号,到达城市,起飞时间,飞机票数,票价。
2、查询功能可以查询航班的各项信息,如可以查询起降时间,起飞抵达城市,航班票价,确定航班是否满仓,航班号。
3、订票功能可以订票并且记录下乘客的相关信息如记录下乘客,,所订航班的航班号以及所订的票数。
4、退票功能可以退票并且记录乘客的相关信息以及退票信息。
5、修改功能可以根据需要由管理员对航班信息进行修改更正。
【概要设计】1、算法设计:每个模块的算法设计说明如下:(1)录入模块:查找单链表的链尾,在链尾插入一个“航班信息”的新结点。
(2)查询模块:提供两种查方式:按航号和按航线查询,1代表按航号查询,2代表按航线查询。
0则表示退出查询。
顺着单链表查找,如果与航班号(航线)一致,输出相关信息,否则,查询不成功。
(3)订票模块:查找乘客要订的航班号,判断此航班是否有空位,有则输入乘客有关信息,订票成功,否则失败。
(4)退票模块:输入要退票的乘客以及证件,查找乘客资料的链表中是否有这位乘客,有则删去此结点,并在空位加上1,无则退票失败。
(5)修改模块:输入密码,确认是否有权限对航班信息进行修改,有则在航班信息链表中查找要修改的结点,进行修改,否则不能修改。
2.存储结构设计:(1)航班的信息:为了便于查找和修改,航班的情况存储结构采用单链表,每个元素表示一个航班的情况,包括航班号、起飞达到的时间、空座和目的的、票价以及限座七个数据项:typedef struct flightnode{char air_num[10]; /*航班号*/char start_time[15]; /*起飞时间*/char end_time[15]; /*到达时间*/char end_place[30]; /*目的地*/int total; /*限座*/int left; /*空座*/int price; /*票价*/struct flightnode *next; /*指向个结点*/}flightnode;(2)旅客的资料:为了便于插入、删除和修改,其采用单链表存储结构,每个数据元素typedef struct passengernode{ /*定义乘客资料结点*/char name[20];char ID_num[20];char air_num[20];int seat_num;struct passengernode *next;}passengernode;【详细设计】本系统源程序如下:#include<stdio.h>#include<stdlib.h>#define OK 1#define ERROR 0typedef struct flightnode{ /*定义航班信息结点*/char air_num[10];char start_time[15];char end_time[15];char end_place[30];int total;int left;int price;struct flightnode *next;}flightnode;typedef struct passengernode{ /*定义乘客资料结点*/char name[20];char ID_num[20];char air_num[20];int seat_num;struct passengernode *next;}passengernode;flightnode *head_flight(); /*生成航班信息的头结点*/passengernode *head_passenger(); /*生成乘客资料的头结点*/int CreatFlight(flightnode **l); /*生成航班信息链表*/int CreatPassenger(passengernode **l); /*生成乘客资料链表*/int InsertFlight(flightnode **p,char *air_num,char *start_time,char *end_place,int total,int left,int price); /*插入航班信息的结点*/int InsertPassenger(passengernode **p,char *name,char *ID_num,char *air_num,int seat_num); /*插入乘客资料的结点*/flightnode *modefy_airline(flightnode *l,char *air_num); /*修改航班信息的函数*/int BookTicket(flightnode*a,char *air_num,passengernode *c,char *name,char *ID_num); /*订票函数*/int CancelTicket(passengernode *c,flightnode*l,char *name,char *ID_num); /*退票函数*/ int SearchFlight(flightnode*head); /*查询航班信息函数*/int SearchPassenger(passengernode *head); /*查询乘客信息函数*/void main() /*主函数*/{int p=2; /*p==1时进入主菜单,p==0时退出系统*/passengernode *cus=head_passenger();flightnode *air=head_flight();char name[20],air_num[20],ID_num[30],mima[20],ch;char t[20]="zhengjianze"; /*管理员密码*/clrscr();CreatFlight(&air);CreatPassenger(&cus);while(p==2){printf("\n welcome to the airline system!\n\n please choose the serves below and press the number:\n\n");printf("================================================================\n\n");printf(" 1 -> Book Ticket \n");printf(" 2 -> Cancel Ticket \n");printf(" 3 -> Search Information \n");printf(" 4 -> Exit \n\n");printf("================================================================\n");switch(ch=getch()){case '1':{printf("\n *-------------Booking Ticket-------------*\n"); /*进入订票功能*/ printf("Please input a airline number and press enter for OK:");scanf("%s",air_num);printf("Please input your name and press enter for OK:");scanf("%s",name);printf("Please input your ID number and press enter for OK:");scanf("%s",ID_num);BookTicket(air,air_num,cus,name,ID_num);getch();};break;case '2':{printf(" *-----------------------Canceling Ticket--------------------*\n"); /*进入退票功能*/printf("Please input the cancel name for booking ticket:");scanf("%s",name);printf("Please input the ID for booking ticket:");scanf("%s",ID_num); CancelTicket(cus,air,name,ID_num);};break;case '3':{printf("*---------------Search Information---------------------*\n"); /*进入信息查询功能*/printf(" 1 -> flight information \n" );printf(" 2 -> passenger information\n ");printf(" other -> exit \n");printf("*------------------------------------------------------*\n");if((ch=getch())=='1') /*航班信息查询*/{printf("*------------------ flight information -----------------*\n");SearchFlight(air);}else if(ch=='2'){ /*乘客资料查询*/printf("\n please input the key:");scanf("%s",mima); /*输入管理员密码*/if(strcmp(mima,t)==0){printf("\n*---------------passenger information ---------------*\n\n"); SearchPassenger(cus);}else printf("sorry,the key is wrong");getch();}}break;case '4':{getch(); /*退出系统*/p=0;}break;}}}flightnode *head_flight(){flightnode *a;a=(flightnode *)malloc(sizeof(flightnode));if(a==NULL)a->next=NULL;return a;}passengernode *head_passenger(){passengernode *c;c=(passengernode*)malloc(sizeof(passengernode));if(c==NULL)c->next=NULL;return c;}int CreatFlight(flightnode **l){flightnode *p=*l;int i=0;char *air_num[3]={"flight01","flight02","flight03"};char *start_time[3]={" 08:00"," 12:00"," 16:30"};char *end_place[3]={"Guangzhou","Shenzhen","Shantou"}; /*初始化航班信息*/int total[3]={100,100,100};int price[3]={300,200,250};int left[3]={23,54,76};for(i=0;i<3;i++)InsertFlight(&p,air_num[i],start_time[i],end_place[i],total[i],left[i],price[i]); /*插入航班信息*/return OK;}int CreatPassenger(passengernode **l){passengernode *p=*l;int i=0;char *name[3]={"liming","Ximing","Chongliang"};char *ID_num[3]={"3105006052","3105006054","3105006051"}; /*初始化乘客资料*/ char *air_num[3]={"flight01","flight02","flight03"};int seat_num[3]={12,5,8};for(i=0;i<3;i++)InsertPassenger(&p,name[i],ID_num[i],air_num[i],seat_num[i]); /*插入乘客资料*/ return OK;}int InsertFlight(flightnode **p,char *air_num,char *start_time,char *end_place,int total,int left,int price){flightnode *q;q=(flightnode*)malloc(sizeof(flightnode));strcpy(q->air_num,air_num);strcpy(q->start_time,start_time);strcpy(q->end_place,end_place);q->total=total;q->left=left;q->price=price;q->next=NULL;(*p)->next=q;(*p)=(*p)->next; /*航班信息链的尾插法*/return OK;}int InsertPassenger(passengernode **p,char *name,char *ID_num,char *air_num,int seat_num){passengernode *q;q=(passengernode*)malloc(sizeof(passengernode));strcpy(q->name,name);strcpy(q->ID_num,ID_num);strcpy(q->air_num,air_num);q->seat_num=seat_num;q->next=NULL;(*p)->next=q;(*p)=(*p)->next; /*乘客资料链表的尾插法*/return OK;}flightnode *modefy_airline(flightnode *l,char *air_num)flightnode *p;p=l->next;for(;p!=NULL;p=p->next){if(strcmp(air_num,p->air_num)==0){p->left++;return l;}printf("NO the airline!");return 0;}}int BookTicket(flightnode *a,char *air_num,passengernode *c,char *name,char *ID_num){flightnode *p=a;passengernode *q=c->next;p=a->next;for(;q->next!=NULL;q=q->next);for(;p!=NULL;p=p->next){if(strcmp(p->air_num,air_num)==0){if(p->left>0){printf(" \nSuccessful for Booking ticket.\n\n Y our flight: %s\n Your seat number : %d ",p->air_num,(p->total-p->left+1));printf("\n *-----------------------------------------*");InsertPassenger(&q,name,ID_num,air_num,p->total-p->left+1);p->left--; return OK;}else{printf("seat is full");return 0;}}/*if(strcmp)*/ }printf("Sorry,there isn't the plane,please check the airline number!");printf("\n *-----------------------------------------*");}int CancelTicket(passengernode *c,flightnode *l,char *name,char *ID_num){passengernode *p,*pr;char air_num[20];pr=c;p=pr->next;while(p!=NULL)if(strcmp(p->name,name)==0&&strcmp(p->ID_num,ID_num)==0){strcpy(air_num,p->air_num);l=modefy_airline(l,air_num);pr->next=p->next;p=pr->next;printf("successful for canceling ticket.");printf("\n *-----------------------------------------------------------------*");return OK;}pr=pr->next;p=pr->next;}printf("Sorry,there isn't the customer!");printf("\n *--------------------------------------------------------*");return ERROR;}int SearchFlight(flightnode *head){flightnode *p=head->next;printf(" Flight Start_time Arrival_place Price T otal Left_seat\n\n");for(;p!=NULL;p=p->next){printf(" %s %-10s %-9s %-7d%-6d %-6d\n",p->air_num,p->start_time,p->end_plac e,p->price,p->total,p->left);printf("\n");}printf(" *----------------------------------------------------------*\n\n");return OK;}int SearchPassenger(passengernode *head){struct passengernode *q=head->next;printf(" Name ID Flight Seat_number\n\n");for(;q!=NULL;q=q->next){printf("%-12s %-8s %-5s %d\n",q->name,q->ID_num,q->air_num,q->seat_num);print f("\n");}printf("\n *----------------------------------------------------------*");return OK;}【调试分析】1、调试结果:(1)系统主菜单界面:(2)进入订票的界面:(3)查询信息的界面:选择1,查询航班信息的界面:选择2,输入密码,查询乘客的信息的界面:新增乘客,查询乘客信息:密码错误时:(4)进入退票的界面:名字或者证件错误时:2、时间复杂度分析:本程序运行所耗费的时间主要在于循环语句,for和while语句,其时间复杂度应该为O(n)。
课程设计报告课程名称:数据结构与算法题目名称:航空客运订票系统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)系统能实现的操作功能如下:①查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行、余票额;②承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班的票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。
数据结构课程设计报告题目:航班订票系统学生姓名:温裕学号: 201520180704班级: 1521807指导教师:许志文2016年12月23目录第1章功能需求描述 (3)1.1 题目要求 (3)1.2 功能列表与说明 (6)第2章设计描述 (4)2.1 任务分解说明 (4)2.2 数据结构设计说明 (4)第4章开发过程描述 (15)4.1 编译过程错误分析 (15)4.3运行结果及说明 (15)第5章设计心得体会 (17)第1章功能需求描述1.1 题目要求任务:通过此系统可以实现如下功能:1)、录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)2)、查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;3)、订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;4)、退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
5)、修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:学生自己根据系统功能要求自己设计。
请在最后的上交资料中指明你用到的存储结构;测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明;1.2 功能列表与说明系统共设有7个功能并以菜单方式工作,上图为功能列表图。
功能分别包括以下7个方面:(1)航班录入:每条航线所涉及的信息有:航班号、起飞时间、降落时间、抵达城市、航班票价、票价折扣、航班满仓人数、剩余票数、飞行日期。
矿产资源开发利用方案编写内容要求及审查大纲
矿产资源开发利用方案编写内容要求及《矿产资源开发利用方案》审查大纲一、概述
㈠矿区位置、隶属关系和企业性质。
如为改扩建矿山, 应说明矿山现状、
特点及存在的主要问题。
㈡编制依据
(1简述项目前期工作进展情况及与有关方面对项目的意向性协议情况。
(2 列出开发利用方案编制所依据的主要基础性资料的名称。
如经储量管理部门认定的矿区地质勘探报告、选矿试验报告、加工利用试验报告、工程地质初评资料、矿区水文资料和供水资料等。
对改、扩建矿山应有生产实际资料, 如矿山总平面现状图、矿床开拓系统图、采场现状图和主要采选设备清单等。
二、矿产品需求现状和预测
㈠该矿产在国内需求情况和市场供应情况
1、矿产品现状及加工利用趋向。
2、国内近、远期的需求量及主要销向预测。
㈡产品价格分析
1、国内矿产品价格现状。
2、矿产品价格稳定性及变化趋势。
三、矿产资源概况
㈠矿区总体概况
1、矿区总体规划情况。
2、矿区矿产资源概况。
3、该设计与矿区总体开发的关系。
㈡该设计项目的资源概况
1、矿床地质及构造特征。
2、矿床开采技术条件及水文地质条件。