数据库课程设计航空售票管理系统.docx
《数据库课程设计航空售票管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计航空售票管理系统.docx(37页珍藏版)》请在冰豆网上搜索。
![数据库课程设计航空售票管理系统.docx](https://file1.bdocx.com/fileroot1/2023-2/24/e9ea8cf2-6680-4a3c-8eb0-a7c36a484259/e9ea8cf2-6680-4a3c-8eb0-a7c36a4842591.gif)
数据库课程设计航空售票管理系统
课程设计
课程名称数据库系统课程设计
题目名称
学生学院
专业班级
学号
学生姓名
指导教师
2013年1月
评价标准
分数比例(%)
成绩
论文
论文结构包含:
1、相关技术介绍、需求分析、
2、概念结构设计(涉及的实体至少三个以上)、
3、逻辑结构设计(有完整性约束说明)、
4、数据库物理设计、
5、数据库完整性设计(违反实体、参照完整性时的解决办法,比如触发器、存储过程等)
5、数据库安全性设计、
6、数据库实施、系统测试方案和测试报告、
7、系统的主要功能和使用说明、系统安装说明。
要求论文完整、内容详细,格式规范。
40
程序
1、系统运行正确;
2、功能完善:
有增、删、改、查功能,输入、输出功能;
3、有基本的统计、报表功能
4、有多表连接查询、自身连接查询、字符串匹配查询、模糊查询、分组查询等。
5、工作量充分;
6、系统实现技术的难度。
30
数据
库设
计
E-R图设计正确;
数据库逻辑结构设计规范化;
数据库物理设计合理。
30
总评成绩
优
良
中
及格
不及格
总分
1绪论
1.1课题背景及现实意义
随着科技的发展和人们生活水平的日益提高,人们在不断追求更加快捷的交通方式以满足人们快节奏的生活方式,航空系统在交通系统中已扮演着一个越来越重要的角色。
然而,交通的快捷离不开信息的快捷。
随着随着计算机的发展和普及,人们的生活方式发生了巨大的改变,计算机在代替和延伸脑力劳动方面发挥着越来越重要的作用。
在交通系统中,有大量的数据需要被处理,而这些工作有人来完成几乎是不可能的,而交给计算机处理,就可以很好地满足我们的需求。
航空售票管理系统可以根据乘客和管理人员的要求,进行方便快速的查询、购票、退票和管理等工作。
本文介绍了简易航空售票管理系统的实现过程。
1.2航空票务管理系统简介
1.2.1定义
航空票务管理系统中主要包括了用户的基本信息(用户名、密码、权限),客户信息(姓名、性别、身份证号、联系电话、备注等),航班信息(航班编号、出发城市、到达城市等)。
可以添加、查询、修改、删除各表的基本信息,满足客户购买机票、退票等多种需求。
一切的统计和计算都计算机代为管理了,航空票务管理系统对企业的合理化管理起到了很大的作用,它为企业信息化的建设打响了头炮,企业的信息化建设已成为现代各个企业发展的需要。
1.2.2主要功能
本系统主要功能有:
(1)系统登录(用户名与密码)
(2)客户信息(客户信息修改与添加、查询、删除)
(3)航班信息(航班信息的增加、撤销、修改)
(4)订单信息(查看订单的情况,退票)
(5)购买机票(选择对应的机票并且购买)
(6)关于(显示版权信息)
1.2.3重要性
实践证明,一个企业中管理与效益是息息相关的,实现数据规范化、自动化的电脑管理,是一个管理规范、运作高效的企事业单位的必然要求。
随着现代科技的进步,用计算机来进行票务管理也成为现代化企业运作必不可少的一部分。
使用计算机来进行票务的管理的主要有以下几个方面好处:
(1)大大降低了工作人员的工作量,提高了工作效率;
(2)节省成本,包括人力资源;
(3)安全准确的购票、管理航班的作用;
1.3开发技术介绍
《航空票务管理系统》的开发平台和工具为:
后台数据库使用SQLServer2008,前台开发工具使用VS2010。
1、VS2010是一个功能强大的可视化应用程序开发工具,用于Windows环境下32位的应用程序的开发,是计算机界公认的最优秀的应用开发工具之一。
在提供可视化的编程方式的同时,VS2010也适用于编写直接对系统底层操作的程序,生成代码的质量也优于其它的开发工具。
在VS2010环境下,利用Microsoft的基本类库MFC(MicrosoftFoundationClassLibrary),可以使用完全的面向对象的方法来进行Windows应用程序的开发,使得Windows程序员从大量的复杂劳动中解救出来,体会到真正的程序语言的强大功能和良好的灵活性[2]。
VS2010编程是一个面向对象的程序设计方法。
同传统的结构化程序设计方法相比,它缩短软件的研制时间,提高软件的开发效率,使程序员可以更好地理解和管理庞大而复杂的程序。
面向对象的程序设计吸取了结构化程序设计的精华,它利用了人们根据对事物分类和抽象的倾向,引入了类和对象的概念,具有封装性(数据抽象)、继承和多态的特点。
与结构化程序设计不同的是,面向对象程序设计是用类抽象代表现实的实体,用类之间的继承关系表示程序设计的抽象过程。
函数只是对数据的操作,没有数据的概念,而类是数据和数据操作的集合,由于面向对象的程序设计方法非常近现实,所以越来越流行。
VS2010中集成了大量的最新技术,如ActiveX、COM等技术,程序开发人员可以紧紧地把握住软件开发技术发展的方向,开发出功能强大的应用程序。
VS2010还提供了丰富的技术资源,MSDN(MicrosoftDevelopNetwork)提供了强大的联机帮助支持,同时还可以通过访问Microsoft的网上站点来获得最新的技术文档。
2、SQLServer是一个关系数据库管理系统,SQLServer是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理。
SQLServer数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,方便安全可靠地构建和管理用于业务的高可用和高性能的数据应用程序。
SQLServer特点[5]:
(1)真正的客户机/服务器体系结构。
(2)图形化用户界面,使系统管理和数据库管理更加直观、简单。
(3)丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。
(4)SQLServer与WindowsNT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。
SQLServer也可以很好地与MicrosoftBackOffice产品集成。
(5)具有很好的伸缩性,可跨越多种平台使用。
2系统需求分析设计
2.1需求分析的目的
软件的需求分析必须要有对原业务的一个深入了解、提取、抽象、升华的过程,管理软件需求分析尤其如此。
软件的需求分析是从用户的业务中提取出软件系统能够帮助用户解决的业务问题,通过对用户业务问题的分析,规划出我们的软件产品。
这个步骤是对用户业务需求的一个升华,是一个把用户业务管理流程优化,转化为软件产品,从而提升管理而实现的质的飞跃,这一步是否成功,直接关系到开发出来的软件产品能否得到用户认可,顺利交付给客户,客户能否真正运用我们的产品帮助他解决业务或管理问题。
按照软件工程对软件开发过程的描述,需求阶段细分为需求调研和需求分析两个小阶段,需求调研需要充分细致的了解客户目标,用户业务内容、流程等,这是一个对需求的采集过程,是进行需求分析的基础准备。
2.2系统需求分析
2.2.1系统功能需求
航空票务管理系统中主要要解决的是:
1、用户在登录应用程序界面时,检查用户的合法性,并根据用户的权限为其分配功能。
2、本系统可以由售票员、经理、总经理几个身份进入,不同身份拥有不同权限。
例如,只有总经理可以在航班管理中修改和撤销航班,只有经理以上才能退票。
而售票员只能售票。
3、系统管理员可以通过应用程序对用户信息进行统一管理,进行各种信息的修改与操作。
4、应用程序内部要可以通过SQL语句对数据库内的数据进行更新、插入(增加)、修改和删除等操作。
5、当系统管理员对相关信息进行操作时,系统要自动检测输入的数据是否合理,并弹出相应的提示信息。
6、应用程序中要有该程序的相关简介和使用说明,帮助系统管理员和用户更好地使用该程序。
2.2.2软件运行环境
操作系统:
WindowsXp、Windows7
Cpu:
IntelCeleron448MHz或更高配置
内存:
256M或更大
硬盘:
100M或更大空间
2.3数据流图
2.3.1数据流图介绍
数据流图也称为数据流程图dateflowdiagram,DFD,是一种便于用户理解和分析系统数据流程的图形工具,摆脱了系统和具体内容,精确的在逻辑上描述系统的功能、输入、输出和数据存储等,是系统逻辑模型的重要组成部分。
数据流图的基本组成成分:
(1)数据流:
是由一组固定成分的数据组成,表示数据的流向。
值得注意的是,数据流图中描述的是数据流,而不是控制流。
除了流向数据存储或从数据存储流出的数据不必命名外,每个数据流必须要有一个合适的名字,以反映该数据流的含义。
(2)加工:
加工描述了输入数据流到输出数据之间的变换,也就是输入数据流经过什么处理后变成了输出数据。
每个加工都有一个名字和编号。
编号能反映该加工位于分层的数据流图的哪个层次和哪张图中,能够看出它是由哪个加工分解出来的子加工。
(3)数据存储:
数据存储表示暂时存储的数据。
每个数据存储都有一个名字。
(4)外部实体:
外部实体是存在于软件系统之外的人员或组织,指出数据所需要的发源地或系统所产生的数据的归属地。
2.3.2系统数据流图
管理信息
数
存取据
获取库
客户订购信息文
件
图2.1数据流图
图2.2数据流图
3系统整体设计
3.1系统分析与设计
基于上面的分析,按照软件工程的思想,对航空票务管理系统进行功能分析:
(1)实现系统登录功能;
(2)输入客户基本信息,包括姓名、性别、身份证等;
(3)浏览和修改航班信息;
(4)购买机票;
(5)查询订单和退票;
(6)查询航班信息
3.2系统功能模块设计图
通过各种系统的分析,得到了航空票务管理系统的主要功能模块及其关系,如图3.1所示:
图3.1系统功能模块设计图
3.3数据库设计
一个成功的管理系统,是由:
[50%的业务+50%的软件]所组成,而50%的成功软件又有[25%的数据库+25%的程序]所组成,数据库设计的好坏是一个关键。
如果把企业的数据比做生命所必需的血液,那么数据库的设计就是应用中最重要的一部分。
基于上述原因,系统的数据库采用熟悉的MSSQL2008,并以简单、高效为基本原则对系统数据库进行了分析和设计。
3.3.1数据库概念设计
由于E-R模型与人们认识现实世界的相似形,因此在描述数据库的概念结构或全局逻辑结构时,采用E-R图这种图形化的表示有非常大的好处,一是图形化表示的简单性;二是图形化表示的清晰性[6]。
通过详细的研究和分析,按照企业的一般的要求和运作程序,得到基本的实体关系图如图3.2所示.
图3.2E-R图
3.3.2数据库逻辑设计
基于之前的详细模块及功能设计,系统需要设计到下列各表,这些表共同存储着系统所需要的数据。
在设计数据库表的过程中,主要遵循以下几条原则:
1、数据库设计一个表只存储一个实体或对象的相关信息,不同的实体存储在不同的数据表中;2、扩充信息和动态变化的信息一定要分开在不同的表里;3、尽量避免出现多对多这样的表关系系统。
因此需要建立以下几个数据库:
员工信息表、出勤信息表、工资信息表、用户表。
由于开发时使用的数据量较小,因此这些表都集中在同一个数据库中。
(1)用户信息表中包括用户名、密码、权限字段。
具体设置如表3.1所示。
表3.1用户信息表
字段名
数据类型
说明
用户
Varchar(18)
字段大小为18(主键)
密码
Varchar(18)
字段大小为18
权限
int
不允许NULL
图3.3用户表设计
(2)客户信息表中包括姓名、性别、身份证号、客户电话、备注等字段。
具体设置如表3.2所示。
表3.2客户信息表
字段名
数据类型
说明
姓名
Varchar(20)
notnull
性别
Varchar(4)
notnull
身份证号
Varchar(18)
(主键)
客户电话
Varchar(11)
备注
Varchar(50)
图3.4客户信息设计
(3)航班信息表中包括航班编号、出发城市、到达城市、出发日期、机票价格、备注等字段。
具体设置如表3.3所示。
表3.3工资信息表
字段名
数据类型
说明
航班编号
Varchar(12)
(主键)
出发城市
Varchar(50)
notnull
到达城市
Varchar(50)
notnull
出发日期
Varchar(50)
notnull
机票价格
int
notnull
备注
Varchar(50)
图3.5航班信息设计
(4)订单信息表中包括订单号、航班编号、身份证号等字段。
具体设置如表3.4所示。
表3.4订单信息表
字段名
数据类型
说明
订单号
Varchar(10)
(主键)
身份证号
Varchar(18)
外键
航班编号
Varchar(12)
外键
购买票数
Int
notnull
购买日期
Varchar(50)
notnull
售票员
Varchar(18)
外键
备注
Varchar(50)
图3.6订单信息设计
图3.7数据库关系图
(5)外键设置
图3.8外键设置
图3.9航班编号外键设置
图3.10身份证号外键设置
图3.11用户外键设置
4详细设计
4.1数据库连接
采用ADO方式,应用程序可通过ADO直接与数据库连接;
在创建应用程序实例初始化时,进行数据库连接。
在登陆框初始化时,执行sql查询。
相关的连接程序如下:
BOOLCADOtestApp:
:
InitInstance()
{
AfxEnableControlContainer();
AfxOleInit();
m_pConnection.CreateInstance(__uuidof(Connection));
//在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
//因为它有时会经常出现一些想不到的错误
try
{
m_pConnection->Open("driver={SQLServer};Server=.;Database=SL;UID=;PWD=",
"","",adModeUnknown);
//Server后是服务器的计算机名,可以用.表示本地,Database后是数据库名,
//这里使用的windows验证,没有设置用户名和密码,
}
catch(_com_errore)
{
AfxMessageBox("数据库连接失败!
");
returnFALSE;
}
连接成功后应在相应的对话框中完成初始化工作(以登录界面为例):
BOOLCAirHoldingSystemDlg:
:
OnInitDialog()
{
CDialogEx:
:
OnInitDialog();
SkinH_Attach();//调用dll皮肤文件,换一层皮肤
//SetCursor((HCURSOR)GetDlgItem(IDC_PWD));
//GetDlgItem(IDC_PWD)->SetFocus();
//MessageBox("a");
m_User="李锦樑";//初始化用户名是为了方便调试
m_Password="123";
UpdateData(FALSE);
//将“关于...”菜单项添加到系统菜单中。
//IDM_ABOUTBOX必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<0xF000);
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
{
BOOLbNameValid;
CStringstrAboutMenu;
bNameValid=strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if(!
strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
}
//设置此对话框的图标。
当应用程序主窗口不是对话框时,框架将自动
//执行此操作
SetIcon(m_hIcon,TRUE);//设置大图标
SetIcon(m_hIcon,FALSE);//设置小图标
//TODO:
在此添加额外的初始化代码
returnTRUE;//除非将焦点设置到控件,否则返回TRUE
}
初始化后,便可进行登陆操作
图4.1
4.2举例航班管理代码
4.2.1航班管理界面初始化
初始化ListCtrl控件,显示相关航班信息
找到初始化函数,并写入相关代码
图4.2MFC类向导找初始化函数
BOOLCFlight:
:
OnInitDialog()
{
CDialogEx:
:
OnInitDialog();
if(root{
GetDlgItem(IDC_NEW)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_REMOVE)->ShowWindow(SW_HIDE);
}
m_List.InsertColumn(0,"航班编号",LVCFMT_CENTER,85);
m_List.InsertColumn(1,"出发城市",LVCFMT_CENTER,85);
m_List.InsertColumn(2,"到达城市",LVCFMT_CENTER,85);
m_List.InsertColumn(3,"机票价格",LVCFMT_CENTER,85);
m_List.InsertColumn(4,"出发日期",LVCFMT_CENTER,85);
m_List.InsertColumn(5,"备注",LVCFMT_CENTER,85);
UpdateData(false);
m_pConnection.CreateInstance(__uuidof(Connection));
m_pRecordset.CreateInstance(__uuidof(Recordset));
//在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
//因为它有时会经常出现一些想不到的错误
try
{
//打开本地SqlServer库student
m_pConnection->Open("driver={SQLServer};Server=.;Database=AirHolding;UID="";PWD=""",
"","",adModeUnknown);
//Server后是服务器的计算机名,Database后是数据库名
//这里使用的windows验证,没有设置用户名和密码,
//如果是windows和SQLserver混合验证,UID="";PWD=""要写入相应的用户名和密码
}
catch(_com_errore)
{
AfxMessageBox("数据库连接失败!
");
returnFALSE;
}
//TODO:
Addyourcontrolnotificationhandlercodehere
try
{
m_pRecordset->Open("SELECT*FROM航班信息",//查询Good表中所有字段
theApp.m_pConnection.GetInterfacePtr(),//获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error*e)
{
AfxMessageBox(e->ErrorMessage());
}
//m_List.InsertItem(4,"ab");
//m_List.InsertItem(5,"ab");
if(!
m_pRecordset->adoEOF)
m_pRecordset->MoveFirst();
while(!
m_pRecordset->adoEOF)
{
_variant_tprice=m_pRecordset->GetCollect("机票价格");
price.bstrVal;
intline=m_List.GetItemCount();
m_List.InsertItem(line,(char*)(_bstr_t)(m_pRecordset->GetCollect("航班编号")));
m_List.SetItemText(line,1,(char*)(_bstr_t)(m_pRecordset->GetCollect("出发城市")));
m_List.SetItemText(line,2,(char*)(_bstr_t)(m_pRecordset->GetCollect("到达城市")));
m_List.SetItemText(line,3,(char*)(_bstr_t)(m_pRecordset->GetCollect("机票价格")));
m_List.SetItemText(line,4,(char*)(_bstr_t)(m_pRecordset->GetCollect("出发日期")));
_variant_tstr=m_pRecordset->GetCollect("备注");
if(str.vt==VT_NULL)
m_List.SetItemText(line,5,"无");
else
m_List.SetItemText(line,5,(char*)(_bstr_t)str);
m_pRecordset->MoveNext();
}
//TODO:
在此添加额外的初始化
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
//异常:
OCX属性页应返回FALSE
}
初始化成功后,得如下界面:
图4.3航班管理界面
4.2.3新增航班的实现
对多用户数据库程序来说,不同的用户应有不同的权限。
比如管理员可以无任何限制,有的用户只有查询的权限没有修改的权限,有的用户