民航售票管理系统实验报告.docx_第1页
民航售票管理系统实验报告.docx_第2页
民航售票管理系统实验报告.docx_第3页
民航售票管理系统实验报告.docx_第4页
民航售票管理系统实验报告.docx_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库课程设计民航售票管理系统安徽大学计算机科学与技术1班陈 斌E11314079陈柚霖E11314033刘昊霖E113140312016-9-20目录一、目的及要求21.实验目的22.实验要求2二、实验环境3三、实验内容与步骤31.系统需求分析32.概念结构设计73.逻辑结构设计134.数据库与应用系统的实施和维护16四、小组成员分工47五、总结48一、 目的及要求1. 实验目的(1) 通过本次课程设计,熟练掌握一种开发语言(如C#)和一种数据库系统软件(如SQLserver2014)的使用。(2) 加深对软件工程的理解,训练编写程序的良好习惯。包括:认真编写需求分析文档、做好系统功能和数据库设计、学会自己进行程序的算法、数据结构设计。(3) 培养良好的程序设计风格(模块划分、接口设计、程序界面、应用系统设计)和习惯(程序备份、版本更新与控制),提高软件测试、调试的能力与技巧。(4) 通过本次课程设计,应该达到具有独立完成小型应用系统设计的能力,具备编写较为规范的软件设计文档的能力。2. 实验要求民航售票管理系统主要分为机场、航空公司和客户三方的服务。航空公司提供航线和飞机的资料,机场则对在本机场起飞和降落的航班和机票进行管理,而客户能得到的服务应该有航班线路和剩余票数的查询,以及网上订票等功能。客户又可以分为两类,一类是普通客户,对于普通客户只有普通的查询功能和订票功能,没有相应的机票优惠,另一种是经常旅客,需要办理注册手续,但增加了里程积分功能和积分优惠政策。机场还要有紧急应对措施,在航班出现延误时,要发送相应的信息。本系统至少能完成如下查询功能:(1) 查某代售地某月售出的票数和金额。(2) 查航空公司拥有多少航班。(3) 查某天某航空还剩多少票或座位。(4) 查某天某航空还剩商务舱座位以及经济舱座位票价。(5) 查某航空公司拥有多少售票点、某月售出总金额以及某航线售出票数。二、 实验环境本系统开发平台及运行环境如下:系统开发平台:Microsoft Visual Studio 2015系统开发语言:C#数据库管理软件:SQL Server 2014运行平台:Windows10 教育版运行环境:Microsoft.NET Framework SDK v4.5三、 实验内容与步骤1. 系统需求分析(1) 信息要求:指用户需要从数据库中获得信息的内容与性质。数据库中需要存储哪些数据。本系统是针对民航售票进行管理,主要涉及航空公司信息、客户信息、飞机信息、航线信息、航班信息、订票信息等多种数据信息。用户名和密码信息:字段名数据类型长度主键否描述Usernamevarchar16是用户名Passwordvarchar16密码Userclasschar1用户类别航空公司信息:字段名数据类型长度主键否描述Aidvarchar16是编号Anamevarchar64名称Aaddrvarchar64地址Acontvarchar32联系方式机场信息:字段名数据类型长度主键否描述APidvarchar16是编号APnamevarchar64名称APaddrvarchar64地址APcontvarchar32联系方式客户信息:字段名数据类型长度主键否描述Cidvarchar16是编号Cnamevarchar16姓名Ccontchar11联系方式IsSpecchar1特殊客户?Pointsint里程积分飞机信息:字段名数据类型长度主键否描述Pidvarchar16是编号Typevarchar32型号SeatsNumint座位数Aidvarchar16外键航空公司编号座位信息:字段名数据类型长度主键否描述Sidvarchar16是编号Levelchar1座位等级Pidvarchar16外键飞机编号IsChoosechar1是否被选航线信息:字段名数据类型长度主键否描述Lidvarchar16是编号SPositionvarchar32起点EPositionvarchar32终点Distancereal里程Aidvarchar16外键航空公司编号航班信息:字段名数据类型长度主键否描述Fidvarchar16是编号Ftimedatetime时间Pidvarchar16外键飞机编号Lidvarchar16外键航线编号APidvarchar16外键机场编号Levelchar1座位等级Pricereal票价订票信息:字段名数据类型长度主键否描述BidintIdentity(1,1)是编号Fidvarchar16外键航班编号Cidvarchar16外键客户编号Sidvarchar16外键座位编号Payreal购票金额Btimedatetime购票时间(2) 处理要求:用户需要完成什么处理功能,对处理的响应时间有什么要求(给出功能模块图)。民航售票管理系统主要满足三类用户的要求,这三类用户分别是航空公司管理员、机场管理员和客户(分为普通客户和经常旅客)。航空公司管理员提供航线和飞机的资料,机场管理员则对在本机场起飞和降落的航班和机票进行管理,而客户能得到的服务应该有航班线路和剩余票数的查询,以及网上订票等功能。具体的需求分析如下:1) 航空公司管理员: 提供飞机基本信息 提供航班基本信息 查询售票点信息、某月售出总金额以及某航线售出票数2) 机场管理员: 对本机场的航班信息进行管理 对本机场的机票信息进行管理 查询某月售票数量和金额3) 客户: 查询航班信息 机票订购 里程积分优惠(经常旅客)功能模块图如下所示:图1 功能模块图(3) 安全性与完整性要求。数据库的安全性是指保护数据库,防止不合法的使用所造成的数据泄露和破坏。数据库系统中保证数据安全性的主要措施是进行存取控制,即规定不同用户对于不同数据对象所允许执行的操作,并控制各用户只能存取他有权(操作权力)存取的数据。存取控制机制分为自主存取控制(DAC)与强制存取控制(MAC),主要包括两部分:一是定义用户权限,并将用户权限登记到数据字典中;二是合法权限检查。数据库完整性指数据的(逻辑而非物理)正确性和相容性。为了防止数据库中存在不合语义的数据,防止错误数据的输入和输出。数据库完整性技术包括完整性约束条件与完整性检查两部分。完整性约束条件指为维护数据库的完整性,DBMS提供加在数据库数据之上的语义约束条件,作为数据库模式的一部分存入数据库。完整性检查意味检查数据库是否满足完整性约束条件的机制。完整性约束条件作用的对象可以是关系、元组、列三种。其中列约束主要是列的类型、取值范围、精度、排序等的约束条件。元组的约束是元组中各个字段间的联系的约束。关系的约束是若干元组间、关系集合上以及关系之间的联系的约束。完整性约束条件涉及这三类对象,其状态可以是静态的,也可以是动态的。完整性约束条件一般分为实体完整性、参考完整性自定义完整性。定义实体完整性约束条件要考虑修改关系中主码的问题;定义参考完整性约束条件要考虑外码能否接受空值问题、在被参照关系中删除元组的问题(级联删除或受限删除)、在参照关系中插入元组时的问题。2. 概念结构设计根据分析,民航售票管理系统包含航空公司、机场、客户、飞机、座位、航线、航班及机票8个实体,各个实体的局部E-R图如下所示,其中航空公司编号是航空公司实体的主码,机场编号是机场实体的主码,客户编号是客户实体的主码,飞机编号是飞机实体的主码,座位编号是座位实体的主码,航线编号是航线实体的主码,航班编号是航班实体的主码,机票编号是机票实体的主码。图2 航空公司实体及属性图3机场实体及属性图4客户实体及属性图5 飞机实体及属性图6 座位实体及属性图7 航线实体及属性图8 航班实体及属性图9 机票实体及属性(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) 用户子模式设计。将概念模型转换为全局逻辑模型后,还应该根据局部应用需求,结合具体DBMS的特点设,计用户的外模式。机场管理员查某代售地某月售出的票数和金额,建立相应视图:视图1(机场编号,机场名称,月售票数,月售票金额);客户查航空公司拥有多少航班,建立相应视图:视图2(航空公司编号,航空公司名称,航班总数);客户查某天某航空还剩多少票或座位,建立相应视图:视图3(航空公司编号,航空公司名称,剩余票数,剩余座位数);客户查某天某航空还剩商务舱座位以及经济舱座位票价,建立相应视图:视图4(航空公司编号,航空公司名称,航班编号,座位等级,票价);航空公司管理员查某航空公司拥有多少售票点、某月售出总金额以及某航线售出票数,建立相应视图:视图5(航空公司编号,航空公司名称,售票点总数,月售总金额);视图6(航空公司编号,航空公司名称,航线编号,售出票数);(7) 对不同级别用户定义不同的视图保证系统安全性。客户只能查看航空公司、机场等基本信息,及票价信息、座位信息,个人基本信息;航空公司管理员可以查看涉及该航空公司的所有信息(如售票统计信息等),机场管理员可以查看涉及该机场的所有信息(如该机场售票统计信息等)。4. 数据库与应用系统的实施和维护(1) 应用程序的编码和调试。(2) 给出截图(标明图号)简单阐述该模块的基本功能。给出该模块的设计思路,针对难点部分进行详细地阐述。首先是登录模块:输入用户名和密码,选择登录用户,点击登录。链接数据库,检查数据库中是否存在该用户,以及密码是否正确,如果错误,提示用户名或密码错误,否则进入相应的用户界面。相关代码: / 判断用户名和密码是否正确 / / 用户名 / 密码 / 用户类型(1为航空公司管理员,2为机场管理员,3为经常旅客) private bool IsLogin(string name, string pwd, int type) bool b = false; using (SqlConnection con = new SqlConnection(strCon) string sql; if (type = 1) sql = select count(*) from Admins where ADid=name and ADpass=pwd and Aid is not null; else if (type = 2) sql = select count(*) from Admins where ADid=name and ADpass=pwd and APid is not null; else sql = select count(*) from Users where Cid=name and Cpass=pwd; using (SqlCommand cmd = new SqlCommand(sql, con) try con.Open(); /给sql中的参数赋值 SqlParameter s1 = new SqlParameter(name, name); SqlParameter s2 = new SqlParameter(pwd, pwd); cmd.Parameters.Add(s1); cmd.Parameters.Add(s2); int n = Convert.ToInt32(cmd.ExecuteScalar(); if (n 0) b = true; catch (Exception ex) MessageBox.Show(ex.Message); connectDatabase = false; return b; 管理员模块:登录航空公司管理员账号,进入航空公司管理员界面,管理员首先向数据库中添加相应的数据信息。飞机信息录入:点击飞机信息录入,可以进行添加飞机信息操作。可以自动导入文件,也可以手动添加相关信息。以导入文件为例:点击导入文件按钮,选择相应文件,点击打开。如果格式不正确,则给出相应提示,否则导入相应信息,点击提交,将数据存入数据库中。同理,座位信息、航线信息均可按此方法导入数据库中。相关代码为:/提交private void button4_Click(object sender, EventArgs e) /提交前检查是否有信息,没有则提示用户至少添加一行数据 if (dataGridView1.Rows.Count = 0) MessageBox.Show(请至少添加一行数据, 提示, MessageBoxButtons.OK, MessageBoxIcon.Asterisk); else int tag = 0; using (SqlConnection con = new SqlConnection(strCon) try con.Open(); /检查是否有不完整信息 for (int i = 0; i dataGridView1.RowCount; i+) for (int j = 0; j dataGridView1.ColumnCount; j+) if (string)dataGridView1.Rowsi.Cellsj.Value = null) MessageBox.Show(存在不完整信息,请检查录入信息, 提示); return; for (int i = 0; i 0) tag+; if (tag = dataGridView1.RowCount) MessageBox.Show(提交成功!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information); /DialogResult diares = MessageBox.Show(要清除当前表格中的数据吗?, 提示, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning); /if (diares = DialogResult.Yes) / dataGridView1.Rows.Clear(); catch (Exception ex) MessageBox.Show(ex.Message, 提示, MessageBoxButtons.OK); 此外,航空公司管理员可以查询相关信息。点击查询统计,会弹出相关子菜单,可以查询相应的信息。由于现在数据库中还没有相关航班信息及售票信息,暂时还不能查询到相关信息,等航班信息录入及旅客购票操作完成后再进行查询即可查询到相关信息。登录机场管理员账号,进入机场管理员界面,管理员首先向数据库中添加相应的数据信息。航班信息录入:点击导入文件,导入相关航班信息:相关代码为:/提交private void button4_Click(object sender, EventArgs e) /提交前检查是否有信息,没有则提示用户至少添加一行数据 if (dataGridView1.Rows.Count = 0) MessageBox.Show(请至少添加一行数据, 提示, MessageBoxButtons.OK, MessageBoxIcon.Asterisk); else int tag = 0; using (SqlConnection con = new SqlConnection(strCon) try con.Open(); /检查是否有不完整信息 for (int i = 0; i dataGridView1.RowCount; i+) for (int j = 0; j dataGridView1.ColumnCount; j+) if (string)dataGridView1.Rowsi.Cellsj.Value = null) MessageBox.Show(存在不完整信息,请检查录入信息, 提示); return; for (int i = 0; i 0) tag+; if (tag = dataGridView1.RowCount) MessageBox.Show(提交成功!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information); /DialogResult diares = MessageBox.Show(要清除当前表格中的数据吗?, 提示, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning); /if (diares = DialogResult.Yes) / dataGridView1.Rows.Clear(); catch (Exception ex) MessageBox.Show(ex.Message, 提示, MessageBoxButtons.OK); 机场管理员也可以查询该机场售出票数及金额(由于当前旅客还未进行购票操作,暂时查询不到相关信息)。旅客账号注册模块:点击登录界面的注册键,进入注册界面: 输入相关信息点击立即注册即可:如果信息不完整,或前后密码不一致,或者用户名已被注册都会提示错误信息: 相关代码为:private void btnRegisterNow_Click(object sender, EventArgs e) string username = txtUserName.Text.Trim();/用户名 string password = txtUserPassword.Text.Trim();/用户密码 string confirmpwd = txtConfirmPassword.Text.Trim();/确认密码 string name = txtName.Text.Trim();/用户姓名 string usertel = txttel.Text.Trim();/用户手机 if (password != confirmpwd) MessageBox.Show(密码不一致,请重新输入, 提示); return; if (username = | password = | confirmpwd = | name = | usertel = ) MessageBox.Show(请输入完整信息, 提示); return; if (password.Length 16) MessageBox.Show(密码长度大于16,请重新输入, 提示); return; if (password.Length 0) DialogResult diares = MessageBox.Show(注册成功!一定要记住自己的密码呦_, 恭喜您, MessageBoxButtons.OK); if (diares = DialogResult.OK) this.Close(); else MessageBox.Show(注册失败!, 提示, MessageBoxButtons.YesNo, MessageBoxIcon.Warning); return; catch (Exception ex) MessageBox.Show(ex.Message); 旅客模块:输入用户名和密码,点击登录,进入旅客界面:输入起始地和目的地并点击查询即可查询到相关航班信息:座位等级H商务舱,L经济舱。点击确认购票进入座位选择界面:选择座位后点击预定:点击确定:订票成功后,此座位已经不能被预定了(S201座位已经不能被预定):航班信息查询相关代码为:/查询航班信息void selectFlight(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论