文档库 最新最全的文档下载
当前位置:文档库 › 民航机场售票管理方案系统

民航机场售票管理方案系统

青岛理工大学

数据库系统课程设计

院(系):计算机工程学院

专业: XXXXXXXXX

姓名: XXXXXXX

班级: XXXXXXXXX 学号: XXXXXXXXXX 题目:民航机场售票管理系统

起迄日期:_ 2011.1.3 ~ 2011.1.14 _

设计地点: 2号实验楼402 指导教师: XXXXXX

目录

第1章前言 (4)

1.1. 课题背景 (4)

1.2. 开发工具 (4)

1.2.1 Windows SDK (4)

1.2.2 SQL Server 2005数据库 (4)

1.2.3 ODBC API数据库连接技术 (5)

第2章需求分析 (6)

2.1. 任务概述 (6)

2.1.1 系统目标 (6)

2.1.2 用户特点 (6)

2.2. 系统的功能需求 (6)

2.2.1 系统角色功能需求 (6)

2.2.2 功能模块 (6)

2.3. 系统的性能需求 (7)

2.4. 系统的数据需求 (7)

第3章系统总体设计 (8)

3.1. 系统总体设计 (8)

第4章数据库设计 (9)

4.1. 数据库概念设计 (9)

4.1.1 订票信息实体E-R图 (9)

4.1.2 客户信息实体E-R图 (9)

4.1.3 航线信息实体E-R图 (10)

4.1.4 客机信息实体E-R图 (10)

4.1.5 舱位等级实体E-R图 (10)

4.1.6 实体间关系E-R图 (11)

4.2. 数据库逻辑设计 (11)

4.2.1 AIR_BOOK_TABLE(订票管理表) (11)

4.2.2 AIR_PLANE_TABLE(飞机管理表) (11)

4.2.3 AIR_SEAT_TABLE(舱位管理表) (12)

4.2.4 AIR_GUEST_TABLE(客户管理表) (12)

4.2.5 AIR_LINE_TABLE(航线管理表) (12)

第5章详细设计 (13)

5.1. 页面设计 (13)

5.1.1 “登陆”界面 (13)

5.1.2 程序主界面 (13)

5.1.3 “机票预订信息管理”界面 (14)

5.1.4 “客户信息管理”界面 (14)

5.1.5 “航线信息管理”界面 (15)

5.1.6 “客机信息管理”界面 (15)

5.1.7 “舱位信息管理”界面 (16)

5.1.8 “关于”界面 (16)

5.2. 编码设计 (17)

5.2.1 与数据库建立的链接 (17)

5.2.2 获取数据库中特定表的某元组 (17)

5.2.3 从数据库中删除、向数据库中添加信息 (18)

5.2.4 与数据库断开连接 (19)

第6章结论与展望 (20)

参考文献 (20)

第1章前言

1.1. 课题背景

现在人们更多的使用飞机作为出行交通工具,因此机票票务市场也在快速发展。人们希望机票销售手段也能相应地有所调整,并对如何能经济、方便和及时地购买到自己所需要的机票表现出极大的关注。随着社会的不断进步,国内外航空事业的飞速发展,各航空公司对票务管理的要求也在不断的提高,本系统就是针对这种日益增长的需求也进行开发的。

随着旅游业的逐渐的成熟发达,航空客运量大幅度的提高,国内国际的旅游航班的增加,这些都对航空的信息管理系统提出了更高的要求,所以要不断地完善更新航空售票系统,提高航空售票系统的工作效率。航空系统中,售票系统是很重要的一个环节,要想提高整个航空公司的工作效率,就要先提高售票系统的工作效率和安全性,故而研发此系统,此系统能够为售票工作提供方便快捷的售票服务,广大的客户可以得到更高更好的票务服务。

本系统实现一个单机版的机票售票管理系统,通过考察分析,构建出数据库,并且实现票务管理模块、客户信息管理模块和航班信息管理模块。

本系统的开发严格遵守软件工程开发的标准流程。通过对各个模块的实现来完成最后软件总体功能的实现。通过观察,进行需求分析,画出E-R图和功能模块结构图。在模块设计的同时进行单元测试,系统设计完成进行系统调试。设计完成后,编写完整的软件说明书和用户手册,最后写对自己所作设计的评价和总结。

1.2. 开发工具

1.2.1Windows SDK

SDK,Software Development Kit 的缩写,中文即“软件开发工具包”。广义上指辅助开发某一类软件的相关文档、范例和工具的集合。

SDK是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合,一般而言SDK即开发Windows 平台下的应用程序所使用的SDK。它可以简单的为某个程序设计语言提供应用程序接口API 的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。一般的工具包括用于调试和其他用途的实用工具。SDK 还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。

本系统是用传统的WINDOWS SDK编程方式,通过调用ODBC API来实现C++与数据库之间的链接。

1.2.2SQL Server 2005数据库

SQL Server 是一个关系数据库管理系统。它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2 版本。在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。Sybase 则较专注于SQL Server在UNIX 操作系统上的应SQL Server安装界面用。

SQL Server 2005 通过在可伸缩性、数据集成、开发工具和强大的分析等方面的革新更好的确立了微软在BI领域的领导地位。SQL Server 2005 能够把关键的信息及时的传递到组织内员工的手中,从而实现了可伸缩的商业智能。从CEO 到信息工作者,员工可以快速的、容易的处理数据,以更快更好的做出决策。SQL

Server 2005全面的集成、分析和报表功能使企业能够提高他们已有应用的价值,即便这些应用是在不同的平台上。

1.2.3ODBC API数据库连接技术

ODBC是一种使用SQL的程序设计接口。使用ODBC 让应用程序的编写者避免了与数据源相联的复杂性。这项技术目前已经得到了大多数DBMS 厂商们的广泛支持。ODBC 是一种使用SQL 的程序设计接口。使用ODBC 让应用程序的编写者避免了与数据源相联的复杂性。这项技术目前已经得到了大多数DBMS 厂商们的广泛支持。

Microsoft Developer Studio 为大多数标准的数据库格式提供了32 位ODBC 驱动器。这些标准数据格式包括有:SQL Server,Access,Paradox,dBase,FoxPro,Excel,Oracle 以及Microsoft Text。如果用户希望使用其他数据格式,用户需要相应的ODBC 驱动器及DBMS。

ODBC API 是一个内容丰富的数据库编程接口,包括60 多个函数、SQL 数据类型以及常量的声明。ODBCAPI 是独立于DBMS 和操作系统的,而且它与编程语言无关。ODBC API 以X/Open 和ISO/IEC 中的CLI规范为基础,ODBC 3.0 完全实现了这两种规范,并添加了基于视图的数据库应用程序开发人员所需要的共同特性,例如可滚动光标。ODBC API 中的函数由特定DBMS 驱动程序的开发人员实现,应用程序用这些驱动程序调用函数,以独立于DBMS 的方式访问数据。

ODBC API 涉及了数据源连接与管理、结果集检索、数据库管理、数据绑定、事务操作等内容,目前的最高版本是3.0。

通常使用ODBC API 开发数据库应用程序需要经过如下步骤:

?连接数据源。

?分配语句句柄。

?准备并执行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)机票预订模块数据需求

该模块主要管理客户订票,需要表示的数据有:

订票数据:应包含机票编号、机票价格

客户数据:客户编号、客户姓名

航线数据:航线编号、起始城市、终点城市、出发日期

舱位数据:舱位类型编号

2)客户信息管理模块

该模块主要管理客户自身信息,需要表示的数据有:客户编号、客户姓名、客户性别、客户证件号、客户电话。

3)航线信息管理模块

该模块主要管理航线自身信息,需要表示的数据有:航线编号、起始城市、终点城市、出发时间、到达时间、飞机编号、经济舱价格、头等舱价格。

4)客机信息管理模块

该模块主要管理客机自身信息,需要表示的数据有:飞机编号、飞机类型、经济舱座位数、头等舱座位数。

5)舱位信息管理模块

该模块主要管理舱位自身信息,需要表示的数据有:舱位类型编号、舱位类型名称、是否有报刊、是否有饮料、是否有食物、是否可取消、是否可打折

第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. 数据库逻辑设计

现在需要将上面的数据库概念结构转化为SQL Server 2005数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。

民航机场售票管理系统数据库中各个表格的设计结果如下面表格所示。每个表格表示在数据库中的一个表。4.2.1AIR_BOOK_TABLE(订票管理表)

4.2.2AIR_PLANE_TABLE(飞机管理表)

4.2.3AIR_SEAT_TABLE(舱位管理表)

4.2.4AIR_GUEST_TABLE(客户管理表)

4.2.5AIR_LINE_TABLE(航线管理表)

第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-6 5.1.6“客机信息管理”界面

图表5-7

在菜单上按“舱位信息管理”按钮后,会弹出“舱位信息管理”对话框。管理者可以在这个管理界面中实现对飞机舱位信息的修改。

图表5-8

5.1.8“关于”界面

在菜单上按“关于”按钮后,会弹出“关于”对话框,它显示了作者的信息。

图表5-9

5.2. 编码设计

5.2.1与数据库建立的链接

用ODBC API与数据库建立连接需要经过如下几步:分配环境句柄->设置ODBC版本号->分配连接句柄->“用户名/密码”登陆数据库。

我创建了函数ODBC_CONNECT来管理系统与数据库的链接,该函数会在主程序执行时被调用。

BOOL ODBC_CONNECT(const char *DSN_NAME, const char *USER_NAME, const char *USER_PASSWORD)

{

//分配环境句柄

nResult=SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);

if((nResult != SQL_SUCCESS) && (nResult != SQL_SUCCESS_WITH_INFO))

return FALSE;

//设置ODBC版本号

nResult=SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);

if((nResult != SQL_SUCCESS) && (nResult != SQL_SUCCESS_WITH_INFO))

return FALSE;

//分配连接背景

nResult=SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);

if((nResult != SQL_SUCCESS) && (nResult != SQL_SUCCESS_WITH_INFO))

return FALSE;

//连接数据库

nResult=SQLConnect(hdbc, (SQLCHAR*)DSN_NAME, SQL_NTS, (SQLCHAR*)USER_NAME, SQL_NTS, (SQLCHAR*)USER_PASSWORD, SQL_NTS);

if((nResult != SQL_SUCCESS) && (nResult != SQL_SUCCESS_WITH_INFO))

return FALSE;

return TRUE;

}

5.2.2获取数据库中特定表的某元组

是用ODBC API从数据库中取出特定表中的某一个元组,需要经过如下操作:分配句柄->执行SQL语句->获取语句执行后返回的数据的属性的个数->将每一个属性与本地变量绑定->循环取数据,每次一个元组,并做相应处理->释放语句执行句柄.

为实现该功能,我编写了ODBC_DISPLAYLIST函数,它会在每次产生子对话框时被调用,它也会在每次用户更新数据库后被调用(因为显示在程序界面上的数据要和数据库中的数据同步)。

BOOL ODBC_DISPLAYLIST(const char *SQLSCENTENCE, HWND &hwndDlg, int ControlID)

{

//分配句柄

nResult=SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

if((nResult != SQL_SUCCESS) && (nResult != SQL_SUCCESS_WITH_INFO))

return FALSE;

//执行SQL语句

nResult=SQLExecDirect(hstmt, (unsigned char*)SQLSCENTENCE, SQL_NTS);

if((nResult != SQL_SUCCESS) && (nResult != SQL_SUCCESS_WITH_INFO))

return FALSE;

//获取语句执行后返回的数据的属性的个数,保存在nCols变量中

SQLNumResultCols(hstmt, &nCols);

//将每一个属性与本地变量绑定

for(nCount=0; nCount

SQLBindCol(hstmt, (UWORD)(nCount+1), SQL_C_CHAR, data[nCount], MAXDA TALEN, (long *)&dwDataLen[nCount]);

//循环取数据,每次一个元组,并做相应处理(在此是用这些填充列表框)

while(SQL_SUCCESS==SQLFetch(hstmt))

{

memset(DATA_TEMP, 0, sizeof(DATA_TEMP));

for(nCount=0; nCount

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);

return TRUE;

}

5.2.3从数据库中删除、向数据库中添加信息

数据库信息的添加、删除分别是执行SQL语句的“INSERT INTO”、“DELETE FROM”,所以我编写了ODBC_EXECSQLDIRT函数来实现程序对SQL语句的执行,统一了插入、删除算法的编写,都是经过:获取变量值->构造SQL语句->执行SQL语句->完毕。

该函数将在每次用户向数据库中“插入”、“删除”数据时执行。

BOOL ODBC_EXECSQLDIRT(const char *SQLSCENTENCE)

{

nResult=SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

if((nResult!=SQL_SUCCESS) && (nResult!=SQL_SUCCESS_WITH_INFO))

return FALSE;

nResult=SQLExecDirect(hstmt, (unsigned char *)SQLSCENTENCE, SQL_NTS);

if((nResult!=SQL_SUCCESS) && (nResult!=SQL_SUCCESS_WITH_INFO) && (nResult!=SQL_NO_DA TA)) {

SQLFreeHandle(SQL_HANDLE_STMT, hstmt);

hstmt=NULL;

return FALSE;

}

SQLFreeHandle(SQL_HANDLE_STMT, hstmt);

hstmt = NULL;

return TRUE;

}

5.2.4与数据库断开连接

DBC API与数据库建立连接仅需要释放句柄即可,为此,我编写了ODBC_DISCONNECT函数来实现管理系统与数据库之间连接的断开。

该函数将在程序退出之前被调用。

void ODBC_DISCONNECT()

{

SQLDisconnect(hdbc);

SQLFreeHandle(SQL_HANDLE_DBC, hdbc);

SQLFreeHandle(SQL_HANDLE_ENV, henv);

}

第6章结论与展望

整个数据库课程设计过程中,使我的专业基础知识进一步的得到了提高,让我更深刻地认识了“数据库”、“SDK”等知识,虽然在课程设计过程中遇到了很多问题,但最终在同学和网络的帮助下基本完成了预订的目标,学到了平时很难学到的专业和实践知识。在开本系统过程中,我感受最深的就是如何让自己在较短的时间内掌握一个自己并不熟悉的事物,因为之前开发带有可视化界面的程序都是用的SDK编程方式(都是些小程序),所以接到数据库课设题目时候我还是想采用SDK编程来实现“民航机场售票管理系统”,经过查阅资料,SDK编程只有通过调用ODBC API才能与数据库建立连接,凭借着以前写SDK程序的经验,参考了ODBC API REFERENCE手册,在多次试验中,成功实现了与数据库“建立连接”、“操作数据库”等功能。

本系统界面比较简单,因为自己的SDK编程功力不足,以及对该系统的考虑不是很充分,导致了该管理系统功能比较单一,只是大体地实现了功能而已。比如像“列表控件”这种人机交互界面友好的控件,我并不懂怎么用SDK 来操作,所以就是用了列表框来实现。

短短2周的课程设计,设计出来的系统在各方面肯定还存在很多不足和需要改进的地方,但是我相信随着实践操作的增加而不断改进和优化,总体来说,做完一个数据库的收获不仅仅是技术上的,对事情的宏观控制也有了更加深入的看法。

参考文献

[1] 卢湘江,李向荣,晏子. MySQL高级配置和管理. 北京:清华大学出版社,2001.9

[2] 萨师煊,王珊. 数据库系统概论. 北京:高等教育出版社,2002

[3] 张海藩. 软件工程. 北京:人民邮电出版社,2006

相关文档
相关文档 最新文档