民航机场售票管理系统Word格式文档下载.docx
《民航机场售票管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《民航机场售票管理系统Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。
SDK,SoftwareDevelopmentKit的缩写,中文即“软件开发工具包”。
广义上指辅助开发某一类软件的相关文档、范例和工具的集合。
SDK是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合,一般而言SDK即开发Windows平台下的应用程序所使用的SDK。
它可以简单的为某个程序设计语言提供应用程序接口API的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。
一般的工具包括用于调试和其他用途的实用工具。
SDK还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。
本系统是用传统的WINDOWSSDK编程方式,通过调用ODBCAPI来实现C++与数据库之间的链接。
1.2.2SQLServer2005数据库
SQLServer是一个关系数据库管理系统。
它最初是由MicrosoftSybase和Ashton-Tate三家公司共同开发的,于1988年推出了第一个OS/2版本。
在WindowsNT推出后,Microsoft与Sybase在SQLServer的开发上就分道扬镳了,Microsoft将SQLServer移植到WindowsNT系统上,专注于开发推广SQLServer的WindowsNT版本。
Sybase则较专注于SQLServer在UNIX操作系统上的应SQLServer安装界面用。
SQLServer2005通过在可伸缩性、数据集成、开发工具和强大的分析等方面的革新更好的确立了微软在BI领域的领导地位。
SQLServer2005能够把关键的信息及时的传递到组织内员工的手中,从而实现了可伸缩的商业智能。
从CEO到信息工作者,员工可以快速的、容易的处理数据,以更快更好的做出决策。
SQLServer2005全面的集成、分析和报表功能使企业能够提高他们已有应用的价值,即便这些应用是在不同的平台上。
1.2.3ODBCAPI数据库连接技术
ODBC是一种使用SQL的程序设计接口。
使用ODBC让应用程序的编写者避免了与数据源相联的复杂性。
这项技术目前已经得到了大多数DBMS厂商们的广泛支持。
ODBC是一种使用SQL的程序设计接口。
MicrosoftDeveloperStudio为大多数标准的数据库格式提供了32位ODBC驱动器。
这些标准数据格式包括有:
SQLServer,Access,Paradox,dBase,FoxPro,Excel,Oracle以及MicrosoftText。
如果用户希望使用其他数据格式,用户需要相应的ODBC驱动器及DBMS。
ODBCAPI是一个内容丰富的数据库编程接口,包括60多个函数、SQL数据类型以及常量的声明。
ODBCAPI是独立于DBMS和操作系统的,而且它与编程语言无关。
ODBCAPI以X/Open和ISO/IEC中的CLI规范为基础,ODBC3.0完全实现了这两种规范,并添加了基于视图的数据库应用程序开发人员所需要的共同特性,例如可滚动光标。
ODBCAPI中的函数由特定DBMS驱动程序的开发人员实现,应用程序用这些驱动程序调用函数,以独立于DBMS的方式访问数据。
ODBCAPI涉及了数据源连接与管理、结果集检索、数据库管理、数据绑定、事务操作等内容,目前的最高版本是3.0。
通常使用ODBCAPI开发数据库应用程序需要经过如下步骤:
•连接数据源。
•分配语句句柄。
•准备并执行SQL语句。
•获取结果集。
•提交事务。
•断开数据源连接并释放环境句柄。
第2章需求分析
2.1.任务概述
2.1.1系统目标
本系统需要满足以下几个系统设计目标。
1)实用性原则:
真正为用户的实际工作服务,给民航机场售票业务带来方便。
2)友好性原则:
本民航机场售票管理系统的用户是各大机场的售票人员,所以系统操作上要求简单、方便、快捷,便于用户使用。
2.1.2用户特点
本系统面向各大民航机场,因为在每年的寒假、暑假、重要的假期,会有大量的用户订购飞机票,所以会在节假日的开始与结束时,本系统会出现较大的负荷。
其它时间符合比较均衡。
2.2.系统的功能需求
2.2.1系统角色功能需求
本系统只有一种角色:
管理员。
管理员负责添加、删除客机信息、客户信息、航线信息、舱位信息以及票务信
2.2.2功能模块
本系统主要负责管理模块,各个子模块功能需求如下:
1)机票预订信息管理模块
管理员可以添加机票预订信息,并可以对添加的机票预订信息进行添加、查询、删除。
2)客户信息管理模块
管理员可以批量添加客户信息,并可以对添加的客户信息进行添加、删除。
3)航线信息管理模块
管理员可以批量添加航线信息,并可以对添加的航线信息进行添加、删除。
4)客机信息管理模块
管理员可以批量添加客机信息,并可以对添加的客机信息进行添加、删除。
5)舱位信息管理模块
管理员只可以修改飞机舱位信息。
2.3.系统的性能需求
为了保证系统能够长期、安全、稳定、可靠、高效的运行,系统应该满足以下的性能需求:
1)系统的开放性和系统的可扩充性
系统在开发过程中,应该充分考虑以后的可扩充性。
例如飞机信息属性添加、修改;
客户信息属性添加、修改等模块也会不断的更新和完善。
所有这些,都要求系统提供足够的手段进行功能的调整和扩充。
而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。
通过软件的修补、替换完成系统的升级和更新换代。
2)系统的易用性和易维护性
系统是直接面对使用人员的,而有些使用人员往往对计算机并不是非常熟悉。
这就要求系统能够提供良好的用户接口,易用的人机交互界面。
要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;
针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。
系统中涉及到的数据是高校实验室相当重要的信息,因此系统为不同角色的用户提供了方便的管理后台进行数据管理,特别为系统管理员提供了数据备份,日常安全管理,防止系统意外崩溃等功能。
3)系统的响应速度
系统设计中摒弃大量数据冗余,提出了优化数据库的解决方案,大量使用存储过程,大大提高系统响应时间和速度。
系统在日常处理中的响应速度为秒级,达到实时要求,以及时反馈信息。
严格保证操作人员不会因为速度问题而影响工作效率。
2.4.系统的数据需求
通过对系统功能需求的分析,可以初步确定该系统的基本数据需求。
由各个功能模块可以进一步确定具体的数据需求,具体数据需求如下:
1)机票预订模块数据需求
该模块主要管理客户订票,需要表示的数据有:
订票数据:
应包含机票编号、机票价格
客户数据:
客户编号、客户姓名
航线数据:
航线编号、起始城市、终点城市、出发日期
舱位数据:
舱位类型编号
该模块主要管理客户自身信息,需要表示的数据有:
客户编号、客户姓名、客户性别、客户证件号、客户电话。
该模块主要管理航线自身信息,需要表示的数据有:
航线编号、起始城市、终点城市、出发时间、到达时间、飞机编号、经济舱价格、头等舱价格。
该模块主要管理客机自身信息,需要表示的数据有:
飞机编号、飞机类型、经济舱座位数、头等舱座位数。
该模块主要管理舱位自身信息,需要表示的数据有:
舱位类型编号、舱位类型名称、是否有报刊、是否有饮料、是否有食物、是否可取消、是否可打折
第3章系统总体设计
3.1.系统总体设计
第4章数据库设计
4.1.数据库概念设计
4.1.1订票信息实体E-R图
4.1.2客户信息实体E-R图
4.1.3航线信息实体E-R图
4.1.4客机信息实体E-R图
4.1.5舱位等级实体E-R图
4.1.6实体间关系E-R图
4.2.数据库逻辑设计
现在需要将上面的数据库概念结构转化为SQLServer2005数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。
民航机场售票管理系统数据库中各个表格的设计结果如下面表格所示。
每个表格表示在数据库中的一个表。
4.2.1AIR_BOOK_TABLE(订票管理表)
列名
数据类型
可否为空
说明
TicketNo
int
否
机票编号
CustomerNo
客户编号
CustomerName
nvarchar(10)
客户姓名
AirLineNo
航线编号
StartCity
出发城市
EndCity
nvarchar(50)
终点城市
TicketDate
出发日期
ServiceType
舱位类型
TicketPrice
机票价格
4.2.2AIR_PLANE_TABLE(飞机管理表)
PlaneNo
飞机编号
PlaneType
nvarchar(15)
飞机型号
CommonNo
经济舱座位数
FirstNo
头等舱座位数
4.2.3AIR_SEAT_TABLE(舱位管理表)
ServiceNo
ServiceName
舱位类型名称
IsNewsPaper
nvarchar(7)
是否有报纸
IsDrink
是否有饮料
IsFood
是否有食物
CanCancel
是否可取消
CanDiscount
是否可打折
4.2.4AIR_GUEST_TABLE(客户管理表)
GuestNo
GuestName
GuestSex
nvarchar(4)
客户性别
GuestID
nvarchar(20)
客户证件号
GuestTele
客户电话
4.2.5AIR_LINE_TABLE(航线管理表)
nchar(10)
起始城市
StartTime
datetime
出发时间
EndTime
到达时间
CommonPrice
经济舱价格
FirstPrice
头等舱价格
第5章详细设计
5.1.页面设计
5.1.1“登陆”界面
通过用户输入的用户名及密码,如果用户名/密码输入错误,则会提示是否重新输入,若放弃输入,则该系统会自动退出。
图表5-1图表5-2
5.1.2程序主界面
系统登陆成功后,则会看到主界面,该系统的各功能可以从菜单栏中选择。
图表5-3
5.1.3“机票预订信息管理”界面
图表5-4
5.1.4“客户信息管理”界面
图表5-5
5.1.5“航线信息管理”界面
图表5-6
5.1.6“客机信息管理”界面
图表5-7
5.1.7“舱位信息管理”界面
在菜单上按“舱位信息管理”按钮后,会弹出“舱位信息管理”对话框。
管理者可以在这个管理界面中实现对飞机舱位信息的修改。
图表5-8
5.1.8“关于”界面
在菜单上按“关于”按钮后,会弹出“关于”对话框,它显示了作者的信息。
图表5-9
5.2.编码设计
5.2.1与数据库建立的链接
用ODBCAPI与数据库建立连接需要经过如下几步:
分配环境句柄->
设置ODBC版本号->
分配连接句柄->
“用户名/密码”登陆数据库。
我创建了函数ODBC_CONNECT来管理系统与数据库的链接,该函数会在主程序执行时被调用。
BOOLODBC_CONNECT(constchar*DSN_NAME,constchar*USER_NAME,constchar*USER_PASSWORD)
{
//分配环境句柄
nResult=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&
henv);
if((nResult!
=SQL_SUCCESS)&
&
(nResult!
=SQL_SUCCESS_WITH_INFO))
returnFALSE;
//设置ODBC版本号
nResult=SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);
//分配连接背景
nResult=SQLAllocHandle(SQL_HANDLE_DBC,henv,&
hdbc);
//连接数据库
nResult=SQLConnect(hdbc,(SQLCHAR*)DSN_NAME,SQL_NTS,(SQLCHAR*)USER_NAME,SQL_NTS,(SQLCHAR*)USER_PASSWORD,SQL_NTS);
returnTRUE;
}
5.2.2获取数据库中特定表的某元组
是用ODBCAPI从数据库中取出特定表中的某一个元组,需要经过如下操作:
分配句柄->
执行SQL语句->
获取语句执行后返回的数据的属性的个数->
将每一个属性与本地变量绑定->
循环取数据,每次一个元组,并做相应处理->
释放语句执行句柄.
为实现该功能,我编写了ODBC_DISPLAYLIST函数,它会在每次产生子对话框时被调用,它也会在每次用户更新数据库后被调用(因为显示在程序界面上的数据要和数据库中的数据同步)。
BOOLODBC_DISPLAYLIST(constchar*SQLSCENTENCE,HWND&
hwndDlg,intControlID)
//分配句柄
nResult=SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&
hstmt);
//执行SQL语句
nResult=SQLExecDirect(hstmt,(unsignedchar*)SQLSCENTENCE,SQL_NTS);
//获取语句执行后返回的数据的属性的个数,保存在nCols变量中
SQLNumResultCols(hstmt,&
nCols);
//将每一个属性与本地变量绑定
for(nCount=0;
nCount<
nCols;
nCount++)
SQLBindCol(hstmt,(UWORD)(nCount+1),SQL_C_CHAR,data[nCount],MAXDATALEN,(long*)&
dwDataLen[nCount]);
//循环取数据,每次一个元组,并做相应处理(在此是用这些填充列表框)
while(SQL_SUCCESS==SQLFetch(hstmt))
{
memset(DATA_TEMP,0,sizeof(DATA_TEMP));
for(nCount=0;
if(dwDataLen[nCount]!
=SQL_NULL_DATA)
{
wsprintf(DATA_ENUM,"
%-30s"
data[nCount]);
lstrcat(DATA_TEMP,DATA_ENUM);
}
//向列表框中填充数据
SendDlgItemMessage(hwndDlg,ControlID,LB_ADDSTRING,0,(LPARAM)DATA_TEMP);
}
//为列表框添加滚动条
SendDlgItemMessage(hwndDlg,ControlID,LB_SETHORIZONTALEXTENT,1500,0);
//释放语句执行句柄
SQLCloseCursor(hstmt);
SQLFreeStmt(hstmt,SQL_UNBIND);
SQLFreeHandle(SQL_HANDLE_STMT,hstmt);
5.2.3从数据库中删除、向数据库中添加信息
数据库信息的添加、删除分别是执行SQL语句的“INSERTINTO”、“DELETEFROM”,所以我编写了ODBC_EXECSQLDIRT函数来实现程序对SQL语句的执行,统一了插入、删除算法的编写,都是经过:
获取变量值->
构造SQL语句->
完毕。
该函数将在每次用户向数据库中“插入”、“删除”数据时执行。
BOOLODBC_EXECSQLDIRT(constchar*SQLSCENTENCE)
nResult=SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&
if((nResult!
=SQL_SUCCESS)&
(nResult!
=SQL_SUCCESS_WITH_INFO))
nResult=SQLExecDirect(hstmt,(unsignedchar*)SQLSCENTENCE,SQL_NTS);
=SQL_SUCCESS_WITH_INFO)&
=SQL_NO_DATA))
SQLFreeHandle(SQL_HANDLE_STMT,hstmt);
hstmt=NULL;
hstmt=NULL;
5.2.4与数据库断开连接
DBCAPI与数据库建立连接仅需要释放句柄即可,为此,我编写了ODBC_DISCONNECT函数来实现管理系统与数据库之间连接的断开。
该函数将在程序退出之前被调用。
voidODBC_DISCONNECT()
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
SQLFreeHandle(SQL_HANDLE_ENV,henv);
第6章结论与展望
整个数据库课程设计过程中,使我的专业基础知识进一步的得到了提高,让我更深刻地认识了“数据库”、“SDK”等知识,虽然在课程设计过程中遇到了很多问题,但最终在同学和网络的帮助下基本完成了预订的目标,学到了平时很难学到的专业和实践知识。
在开本系统过程中,我感受最深的就是如何让自己在较短的时间内掌握一个自己并不熟悉的事物,因为之前开发带有可视化界面的程序都是用的SDK编程方式(都是些小程序),所以接到数据库课设题目时候我还是想采用SDK编程来实现“民航机场售票管理系统”,经过查阅资料,SDK编程只有通过调用ODBCAPI才能与数据库建立连接,凭借着以前写SDK程序的经验,参考了ODBCAPIREFERENCE手册,在多次试验中,成功实现了与数据库“建立连接”、“操作数据库”等功能。
本系统界面比较简单,因为自己的SDK编程功力不足,以及对该系统的考虑不是很充分,导致了该管理系统功能比较单一,只是大体地实现了功能而已。
比如像“列表控件”这