民航售票管理系统实验报告
数据结构航空客运订票系统实验报告

一.实验目的1.掌握使用VC++上机调试队列的基本方法;2.掌握队列的基本操作:初始化,出队列,入队列等运算在顺序和链式存储结构上的实现。
3.了解队列的抽象数据类型定义4.熟练掌握链队列的定义,熟练掌握链队列表的基本算法及时间性能二.实验内容航班订票系统航空客运订票业务包括:查询航线,客票预订,办理退票等。
设计一个航空客运订票系统。
三.实验步骤(可选)typedef struct pas{CString nam;int bok;int lev;}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& l){l.bas=(flyinfo*)malloc(sizeof(flyinfo)*10); l.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::OnInitDialog(){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].lef=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;p1.nam="jack";p1.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;pa1.bok=2;pa1.lev=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 & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){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_flight=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.lev=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;dlg.DoModal();}五.实验中出现的问题、解决方法和心得体会1.通过本次实验,基本上了解了链队列的存储结构及其算法的实现,了解了链队列的特点以及链队列抽象出的数据类型的定义,基本上掌握了链队列基本算法如何实现,包括如何实现建立,查找,插入,删除,合并,销毁,数据排序等操作。
飞机售票系统课程设计报告

飞机售票系统课程设计报告一、课程目标知识目标:1. 让学生理解飞机售票系统的基本概念、功能及工作原理。
2. 让学生掌握飞机售票系统中涉及的航空公司、航班、座位、票价等基本知识点。
3. 让学生了解飞机售票系统在实际应用中的数据处理和存储方法。
技能目标:1. 培养学生运用所学知识分析和设计飞机售票系统的能力。
2. 培养学生使用编程语言或工具实现飞机售票系统基本功能的能力。
3. 培养学生通过实际操作,掌握飞机售票系统的使用方法。
情感态度价值观目标:1. 培养学生对计算机科学和技术领域的兴趣,激发他们探索航空业信息化的热情。
2. 培养学生具备团队协作精神,学会与他人共同解决问题。
3. 培养学生关注社会发展,认识到信息技术在航空业中的重要作用。
课程性质分析:本课程为信息技术或计算机科学与技术相关课程的实践环节,旨在让学生将所学理论知识运用到实际项目中,提高他们的实践能力。
学生特点分析:学生为高中年级学生,具备一定的计算机操作和编程基础,对新鲜事物充满好奇心,善于团队合作。
教学要求:1. 结合课本知识,注重理论与实践相结合,提高学生的动手能力。
2. 注重培养学生的创新意识和解决问题的能力。
3. 强调团队协作,提高学生的沟通与协作能力。
二、教学内容1. 基本概念:介绍飞机售票系统的定义、功能、发展历程及在航空业中的重要性。
关联教材章节:第一章 计算机售票系统概述2. 系统架构:讲解飞机售票系统的整体架构,包括客户端、服务器端、数据库等组成部分。
关联教材章节:第二章 售票系统架构与设计3. 数据库设计:学习飞机售票系统中涉及的表结构设计,如航班信息、座位信息、旅客信息等。
关联教材章节:第三章 数据库设计4. 功能模块:详细介绍飞机售票系统的各个功能模块,如查询航班、预订机票、支付、退改签等。
关联教材章节:第四章 售票系统功能模块设计5. 编程实践:指导学生使用编程语言(如Python、Java等)或工具(如Visual Basic、Access等)实现飞机售票系统的基本功能。
航空购票系统实训报告

一、实训背景随着我国航空事业的快速发展,航空客运订票系统在航空公司的运营中发挥着越来越重要的作用。
为了更好地了解和掌握航空购票系统的设计、开发和运行,我们小组进行了为期一个月的航空购票系统实训。
二、实训目的1. 熟悉航空购票系统的基本原理和功能;2. 掌握航空购票系统的设计和开发方法;3. 提高团队合作能力和实践能力;4. 为今后的工作积累经验。
三、实训内容1. 系统需求分析在实训过程中,我们首先对航空购票系统进行了需求分析。
通过查阅相关资料和与航空公司的技术人员沟通,我们了解到航空购票系统主要包括以下功能:(1)航班信息查询:用户可以查询到航班号、起飞时间、到达时间、机型、票价等信息;(2)机票预订:用户可以选择航班、座位、票价等,进行机票预订;(3)订单管理:用户可以查看、修改、取消订单;(4)支付管理:用户可以选择在线支付或线下支付;(5)个人信息管理:用户可以查看、修改个人信息;(6)客服中心:用户可以咨询航班、订票等问题。
2. 系统设计根据需求分析,我们制定了以下系统设计:(1)系统架构:采用B/S架构,前端使用HTML、CSS、JavaScript等技术,后端使用Java语言和SSM框架(Spring、SpringMVC、MyBatis)进行开发;(2)数据库设计:使用MySQL数据库,存储航班信息、用户信息、订单信息等;(3)功能模块设计:将系统分为航班信息模块、机票预订模块、订单管理模块、支付管理模块、个人信息管理模块和客服中心模块。
3. 系统实现在系统实现过程中,我们遵循以下步骤:(1)前端开发:使用HTML、CSS、JavaScript等技术,完成航班信息查询、机票预订、订单管理、个人信息管理等功能模块的前端页面设计;(2)后端开发:使用Java语言和SSM框架,完成航班信息查询、机票预订、订单管理、支付管理、个人信息管理等功能模块的后端逻辑实现;(3)数据库设计:使用MySQL数据库,创建数据表,存储航班信息、用户信息、订单信息等;(4)系统集成:将前端页面和后端逻辑进行集成,实现整个系统的功能。
专业课程设计报告报告I报告_民航票务管理及售票系统

- 专业课程设计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、通过分析实验要求的功能,确定所需函数,两者结合来分析所需的算法及算法该如何实现。
软件工程导论实验报告 航空订票系统

本科实验报告课程名称:软件工程导论实验项目:航空订票系统实验地点:******专业班级:*******学号:******* 学生姓名:*******指导教师:*******2012年05月21 日可行性分析报告1项目背景机票预订工作的记录、查询、核对等工作量十分庞大,同时,操作相对简单且重复率很高,因此,可以利用计算机的管理信息系统进行这些繁杂而又简单的工作,以提高机票预定的工作效率、准确性、管理水平和服务质量。
因此开发机票预订系统。
本机票预订系统是在现代社会生活节奏不断加快,对机票预订工作的自动化和准确化要求也日益强烈的背景下,为了实现机票预订工作的网络化,以及实现网络查询和统计一体化而开发的管理信息系统。
该系统为机票预订管理员提供了一个个性化的界面,并且机票预订管理员只需一次登录就可以使用所有服务;将订票旅客需要的各种服务集中起来,订票旅客可以很方便地进行自身信息和航班、票价情况查询。
总之,从基本订票信息的录入到订票信息的查询,再到最终的信息核准打印机票,都可以通过这个系统完成。
本系统采用最新的计算机技术,界面友好、操作方便,管理员可以针对不同需求分类、排序、查询、统计,方便订票旅客和其他部门根据自己的需求准确、快速地查询订票及航班信息。
2可行性研究的前提1)要求:主要功能:为游客提供机票预定服务,方便旅游局的售票工作,提高旅游局的服务质量和服务效率性能要求:机场提供的信息必须及时的反映在旅游局的工作平台上。
售票系统的定单必须无差错的存储在机场的主服务器上。
对服务器上的数据必须进行及时正确的刷新。
输出要求:数据完整,详实。
输出要求:简捷,快速,实时。
安全与保密要求:服务器的管理员享有对机场航班信息库及机票信息库和定票信息库的管理与修改。
售票员只享有对订票信息库的部分修改(写入与读出)。
2)目标:系统实现后,大大提高旅游局的机票预定服务效率。
降低售票服务中的错误发生率,减少信息交流的烦琐过程及其带来的开销。
航空售票系统系统实施报告

这类错误主要是数据库设置不正确,或sql server异常引起的,我们只要取消本次操作,提醒用户检查数据库问题就可。
如果出现不可能处理的问题,可以直接与公司的技术支持人员联系。
五、实验总结
航空售票管理信息系统对航空相关单位进行包括机票订购在内的许多信息管理有着极其重要的作用,就一般的实用软件来说,它的设计内容繁多、功能重叠、操作复杂,比如订票和修改票务信息某些功能模块重叠等。本开发小组正是通过广泛调研,对同类的相关系统掌握了一定的资料的基础上,制定开发出来的。为了更好的完善本系统,在实施管理阶段特制定本实施报告,以求彻底完善本系统
2.4.3输入输出文件软件运过程中通过文本框进行文件的输入输出。
2.4.4输出报告
若输入要输出的条件正确的话会弹出相应的提示框提示是否成功或者正确等。
软件运行过程中可能雏形的出物及处理如下:
(1)输入信息出错
在数据库内找不到输入的信息,输入信息有误,导致操作失败。
(2)出错处理对策
检查重新输入的信息是否符合要求。
本次实验做的事系统实施,系统实施是开发信息系统的最后一个阶段,将系统设计的结果在计算机上实现,将原来纸面上的、类似于设计图式的新系统方案转换成可执行的应用软件。主要的任务是:实现系统设计阶段提出的物理模型,按照实施方案完成一个可以实际运行的信息系统,交付用户使用。系统实施有以下几个前提条件:具有完整的系统分析和设计文档;了解系统的整体情况。系统实施的任务主要有五个方面:系统环境的建立;建立数据库系统;程序设计;系统测试;系统评价并且通过本次试验我熟悉程序框图图的画法,以及制作软件安装盘、和系统帮助文档的方法,这在以前的编程和系统设计中是没有涉及到的,通过本次实验扩充了我的知识面。
航空订票测试实验报告(3篇)

第1篇一、实验目的本次实验旨在通过设计和实施一系列测试用例,验证航空订票系统的功能性和稳定性,确保系统在实际运行中能够满足用户的需求,提高系统的可靠性和用户体验。
二、实验环境1. 操作系统:Windows 102. 浏览器:Google Chrome3. 航空订票系统:自行开发或使用开源订票系统4. 测试工具:Selenium WebDriver三、实验内容1. 系统功能测试(1)航线查询功能测试目的:验证用户能否通过终点站名查询到相应的航班信息。
测试步骤:a. 输入终点站名,点击查询按钮;b. 检查查询结果是否包含航班号、飞机号、星期几飞行、最近一天航班的日期和余票额等信息;c. 检查查询结果是否按照时间顺序排列。
(2)订票功能测试目的:验证用户能否根据航班号和订票数额成功预订机票。
测试步骤:a. 选择航班,输入订票数额;b. 点击预订按钮;c. 检查是否成功预订机票,包括座位号、舱位等级等信息;d. 若余票不足,验证系统是否提示用户重新选择或登记排队候补。
(3)退票功能测试目的:验证用户能否根据日期和航班成功退票,并处理排队候补情况。
测试步骤:a. 输入日期和航班号,点击退票按钮;b. 检查是否成功退票;c. 检查排队候补情况,验证系统是否优先处理排队客户。
2. 系统性能测试(1)并发用户测试测试目的:验证系统在高并发用户情况下的稳定性和响应速度。
测试步骤:a. 使用JMeter工具模拟多个用户同时访问系统;b. 记录并发用户数量、响应时间、系统资源占用等信息;c. 分析测试结果,评估系统性能。
(2)压力测试测试目的:验证系统在极限负载情况下的稳定性和响应速度。
测试步骤:a. 使用JMeter工具模拟极限负载情况;b. 记录系统资源占用、错误率等信息;c. 分析测试结果,评估系统性能。
3. 系统兼容性测试(1)浏览器兼容性测试测试目的:验证系统在不同浏览器上的运行效果。
测试步骤:a. 在Chrome、Firefox、IE等浏览器上分别运行系统;b. 检查系统界面、功能、响应速度等是否正常;c. 分析测试结果,评估系统兼容性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[键入文档标题][键入文档副标题]安徽大学计算机科学与技术1班陈斌E陈柚霖E刘昊霖E2016-9-20目录一、目的及要求1.实验目的(1)通过本次课程设计,熟练掌握一种开发语言(如C#)和一种数据库系统软件(如SQL?server?2014)的使用。
(2)加深对软件工程的理解,训练编写程序的良好习惯。
包括:认真编写需求分析文档、做好系统功能和数据库设计、学会自己进行程序的算法、数据结构设计。
(3)培养良好的程序设计风格(模块划分、接口设计、程序界面、应用系统设计)和习惯(程序备份、版本更新与控制),提高软件测试、调试的能力与技巧。
(4)通过本次课程设计,应该达到具有独立完成小型应用系统设计的能力,具备编写较为规范的软件设计文档的能力。
2.实验要求民航售票管理系统主要分为机场、航空公司和客户三方的服务。
航空公司提供航线和飞机的资料,机场则对在本机场起飞和降落的航班和机票进行管理,而客户能得到的服务应该有航班线路和剩余票数的查询,以及网上订票等功能。
客户又可以分为两类,一类是普通客户,对于普通客户只有普通的查询功能和订票功能,没有相应的机票优惠,另一种是经常旅客,需要办理注册手续,但增加了里程积分功能和积分优惠政策。
机场还要有紧急应对措施,在航班出现延误时,要发送相应的信息。
本系统至少能完成如下查询功能:(1)查某代售地某月售出的票数和金额。
(2)查航空公司拥有多少航班。
(3)查某天某航空还剩多少票或座位。
(4)查某天某航空还剩商务舱座位以及经济舱座位票价。
(5)查某航空公司拥有多少售票点、某月售出总金额以及某航线售出票数。
二、实验环境本系统开发平台及运行环境如下:系统开发平台:Microsoft Visual Studio 2015系统开发语言:C#数据库管理软件:SQL Server 2014运行平台:Windows10 教育版运行环境: Framework SDK三、实验内容与步骤1.系统需求分析(1)信息要求:指用户需要从数据库中获得信息的内容与性质。
数据库中需要存储哪些数据。
本系统是针对民航售票进行管理,主要涉及航空公司信息、客户信息、飞机信息、航线信息、航班信息、订票信息等多种数据信息。
(2)处理要求:用户需要完成什么处理功能,对处理的响应时间有什么要求(给出功能模块图)。
民航售票管理系统主要满足三类用户的要求,这三类用户分别是航空公司管理员、机场管理员和客户(分为普通客户和经常旅客)。
航空公司管理员提供航线和飞机的资料,机场管理员则对在本机场起飞和降落的航班和机票进行管理,而客户能得到的服务应该有航班线路和剩余票数的查询,以及网上订票等功能。
具体的需求分析如下:1)航空公司管理员:①提供飞机基本信息②提供航班基本信息③查询售票点信息、某月售出总金额以及某航线售出票数2)机场管理员:①对本机场的航班信息进行管理②对本机场的机票信息进行管理③查询某月售票数量和金额3)客户:①查询航班信息②机票订购③里程积分优惠(经常旅客)功能模块图如下所示:图1 功能模块图(3)安全性与完整性要求。
数据库的安全性是指保护数据库,防止不合法的使用所造成的数据泄露和破坏。
数据库系统中保证数据安全性的主要措施是进行存取控制,即规定不同用户对于不同数据对象所允许执行的操作,并控制各用户只能存取他有权(操作权力)存取的数据。
存取控制机制分为自主存取控制?(DAC)与强制存取控制(MAC),主要包括两部分:??一是定义用户权限,并将用户权限登记到数据字典中;二是合法权限检查。
数据库完整性指数据的(逻辑而非物理)正确性和相容性。
为了防止数据库中存在不合语义的数据,防止错误数据的输入和输出。
数据库完整性技术包括完整性约束条件与完整性检查两部分。
完整性约束条件指为维护数据库的完整性,DBMS提供加在数据库数据之上的语义约束条件,作为数据库模式的一部分存入数据库。
完整性检查意味检查数据库是否满足完整性约束条件的机制。
完整性约束条件作用的对象可以是关系、元组、列三种。
其中列约束主要是列的类型、取值范围、精度、排序等的约束条件。
元组的约束是元组中各个字段间的联系的约束。
关系的约束是若干元组间、关系集合上以及关系之间的联系的约束。
完整性约束条件涉及这三类对象,其状态可以是静态的,也可以是动态的。
?完整性约束条件一般分为实体完整性、参考完整性?自定义完整性。
定义实体完整性约束条件要考虑修改关系中主码的问题;定义参考完整性约束条件要考虑外码能否接受空值问题、在被参照关系中删除元组的问题(级联删除或受限删除)、在参照关系中插入元组时的问题。
2.概念结构设计根据分析,民航售票管理系统包含航空公司、机场、客户、飞机、座位、航线、航班及机票8个实体,各个实体的局部E-R图如下所示,其中航空公司编号是航空公司实体的主码,机场编号是机场实体的主码,客户编号是客户实体的主码,飞机编号是飞机实体的主码,座位编号是座位实体的主码,航线编号是航线实体的主码,航班编号是航班实体的主码,机票编号是机票实体的主码。
图2 航空公司实体及属性图3机场实体及属性图4客户实体及属性图5 飞机实体及属性图6 座位实体及属性图7 航线实体及属性8 航班实体及属性图(1)逐一设计分ER图,合并分ER图,生成基本ER图。
根据需求分析的结果可以看到,在民航售票管理系统中一个航空公司可以提供多条航线、多架飞机,飞机拥有多个座位,一个机场可以安排多个航班,一个航班对应一架飞机、涉及一条航线、可以有多个客户选择乘坐,一个客户可以订购多张机票,一张机票对应一个座位。
由以上分析可得各个局部的E-R图,如下所示(忽略各个实体的属性):图10 航空公司与飞机及航线之间的E-R图图11 飞机与航班之间的E-R图图12 航班与航线之间的E-R图图13 机场与航班之间的E-R图图14 客户与航班之间的E-R图图15 客户与机票之间的E-R图图16 飞机与座位之间的E-R图图17 座位与机票之间的E-R图(2)若在合并中存在属性冲突、命名冲突以及结构冲突,给出解决办法,若存在不必要的冗余,则消除并给出设计方法。
合并分E-R图并不是单纯地将各个分E-R图画在一起,而是必须消除各个分E-R图中的不一致,以形成一个能为全系统中所有用户共同理解和接受的统一的概念模型。
各个分E-R图之间的冲突包括3种:属性冲突、命名冲突以及结构冲突。
经过分析,将航空公司、机场、客户、飞机、座位、航线、航班及机票之间进行关联。
因此,合并各个分E-R图,生成基本E-R图,如下所示:图18 民航管理系统基本E-R图(3)基本ER图中要求标明主码、外码、联系类型。
基本E-R图中,各实体的主码用下划线加粗显示,外码倾斜加粗表示,联系类型表明于连接线上。
3.逻辑结构设计(1)给出由ER得到的关系模型,并注明转换过程中应用的规则。
E-R图向关系数据模型转换的基本规则如下:1)一个实体转换为一个关系模式,实体的属性就是关系的属性,实体的键就是关系的键;2)一个联系转化为一个关系模式,与该联系相连的各个实体的键以及联系的属性为该关系的属性,该关系的键分为3种情况:①1:1联系:任一相连实体的键都可以作为该关系的主键。
②1:n联系:n端(多端)实体的键作为该关系的主键。
③m:n联系:各端实体的键的组合为该关系的主键。
其中,1:1联系可以和联系的任意一端实体的关系模式合并,将联系的属性和另一端关系模式的键加入该关系模式即可;1:n联系则需要和多端的关系模式合并,在多端关系模式中加入联系的属性和1端关系模式的键即可;m:n联系不能与实体合并,必须转换为单独的关系模式。
根据E-R图向关系数据模型转换的相关规则,将图18所示的E-R图转换为关系数据模型,得到民航售票管理系统的关系模式如下:航空公司(编号,名称,地址,联系方式),应用规则1)。
航线(编号,航空公司编号,起点,终点,里程),应用规则2)-②1:n联系。
飞机(编号,航空公司编号,型号,座位数),应用规则2)-②1:n联系。
机场(编号,名称,地址,联系方式),应用规则1)。
航班(编号,飞机编号,航线编号,机场编号,时间,座位等级,票价),应用规则2)-①1:1联系及规则2)-②1:n联系。
座位(编号,飞机编号,等级,被选?),应用规则2)-②1:n联系。
客户(编号,姓名,联系方式,特殊客户?,积分),应用规则1)。
机票(编号,座位编号,航班编号,客户编号,金额),应用规则2)-①1:1联系及规则2)-②1:n联系。
(2)数据模型的优化。
数据库的逻辑设计的结果不是唯一的。
为了进一步提高数据库应用系统的性能,还应该根据应用需要适当地修改、调整数据模型的结构,这就是数据模型的优化。
关系数据模型的优化通常以规范化理论为指导。
(3)确定数据依赖。
分别写出每个关系内部属性的以及不同关系模式属性间的数据依赖。
根据需求分析可知:1.航空公司关系模式的数据依赖:{编号->名称,编号->地址,编号->联系方式};2.航线关系模式的数据依赖:{编号->航空公司编号,编号->起点,编号->终点,编号->里程};3.飞机关系模式的数据依赖:{编号->航空公司编号,编号->型号,编号->座位数};4.机场关系模式的数据依赖:{编号->名称,编号->地址,编号->联系方式};5.航班关系模式的数据依赖:{编号->飞机编号,编号->航线编号,编号->机场编号,编号->时间,(编号,座位等级)->票价};6.座位关系模式的数据依赖:{编号->飞机编号,编号->等级,编号->被选?};7.客户关系模式的数据依赖:{编号->姓名,编号->联系方式,编号->特殊客户?,编号->积分};8.机票关系模式的数据依赖:{编号->座位编号,编号->航班编号,编号->客户编号,编号->金额};(4)对各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。
采用分析方法,根据数据项之间逻辑关系的说明,已经消除了各个关系模式之间的数据冗余联系。
(5)按照数据依赖的理论确定个关系模式分别属于第几范式。
根据各个范式的定义:1)航空公司关系模式属于BCNF,因为该关系模式的码是航空公司编号,且每一个决定因素都包含码,所以∈BCNF;2)航线关系模式属于BCNF,因为该关系模式的码是航线编号,且每一个决定因素都包含码,所以∈BCNF;3)飞机关系模式属于BCNF,因为该关系模式的码是飞机编号,且每一个决定因素都包含码,所以∈BCNF;4)机场关系模式属于BCNF,因为该关系模式的码是机场编号,且每一个决定因素都包含码,所以∈BCNF;5)航班关系模式属于1NF,因为该关系模式的码是(编号,座位等级),存在非主属性部分依赖于码,所以∈1NF;6)座位关系模式属于BCNF,因为该关系模式的码是座位编号,且每一个决定因素都包含码,所以∈BCNF;7)客户关系模式属于BCNF,因为该关系模式的码是客户编号,且每一个决定因素都包含码,所以∈BCNF;8)机票关系模式属于BCNF,因为该关系模式的码是机票编号,且每一个决定因素都包含码,所以∈BCNF;(6)用户子模式设计。