数据库课程设计航空售票管理系统.doc
《数据库课程设计航空售票管理系统.doc》由会员分享,可在线阅读,更多相关《数据库课程设计航空售票管理系统.doc(22页珍藏版)》请在咨信网上搜索。
成 绩 课 程 设 计 课程名称 数据库系统课程设计 题目名称 学生学院 专业班级 学 号 学生姓名 指导教师 2013 年 1 月 评价标准 分数比例(%) 成绩 论文 论文结构包含: 1、相关技术介绍、需求分析、 2、概念结构设计(涉及的实体至少三个以上)、 3、逻辑结构设计(有完整性约束说明)、 4、数据库物理设计、 5、数据库完整性设计(违反实体、参照完整性时的解决办法,比如触发器、存储过程等) 5、数据库安全性设计、 6、数据库实施、系统测试方案和测试报告、 7、系统的主要功能和使用说明、系统安装说明。 要求论文完整、内容详细,格式规范. 40 程序 1、 系统运行正确; 2、功能完善:有增、删、改、查功能,输入、输出功能; 3、有基本的统计、报表功能 4、有多表连接查询、自身连接查询、字符串匹配查询、模糊查询、分组查询等。 5、工作量充分; 6、系统实现技术的难度。 30 数据 库设 计 E-R图设计正确; 数据库逻辑结构设计规范化; 数据库物理设计合理. 30 总评成绩 优 良 中 及格 不及格 总分 19 目录 1绪论1 1。1课题背景及现实意义1 1。2航空票务管理系统简介1 1。2。1 定义1 1。2.2 主要功能1 1。2。3 重要性1 1。3 开发技术介绍2 2 系统需求分析设计4 2.1需求分析的目的4 2.2 系统需求分析4 2.2.1 系统功能需求4 2.2。2 软件运行环境4 2。3数据流图5 2。3。1 数据流图介绍5 2。3.2 系统数据流图5 3 系统整体设计7 3.1 系统分析与设计7 3.2 系统功能模块设计图7 3。3 数据库设计7 4详细设计15 4.1 数据库连接15 4.2举例航班管理代码17 4。2。1 航班管理界面初始化17 4。2。3新增航班的实现21 4。2。4撤销航班的实现23 4。2。5修改航班的实现26 4。3购买机票28 4.3。1 选择机票并确认购买28 4。3.2 填写客户信息29 4.4其他界面与功能30 5 课程设计小结33 参考文献34 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开发技术介绍 《航空票务管理系统》的开发平台和工具为:后台数据库使用SQL Server 2008,前台开发工具使用VS2010。 1、VS2010是一个功能强大的可视化应用程序开发工具,用于Windows环境下32位的应用程序的开发,是计算机界公认的最优秀的应用开发工具之一。在提供可视化的编程方式的同时,VS2010也适用于编写直接对系统底层操作的程序,生成代码的质量也优于其它的开发工具。在VS2010环境下,利用Microsoft的基本类库MFC(Microsoft Foundation Class Library),可以使用完全的面向对象的方法来进行Windows应用程序的开发,使得Windows程序员从大量的复杂劳动中解救出来,体会到真正的程序语言的强大功能和良好的灵活性[2]. VS2010编程是一个面向对象的程序设计方法.同传统的结构化程序设计方法相比,它缩短软件的研制时间,提高软件的开发效率,使程序员可以更好地理解和管理庞大而复杂的程序。 面向对象的程序设计吸取了结构化程序设计的精华,它利用了人们根据对事物分类和抽象的倾向,引入了类和对象的概念,具有封装性(数据抽象)、继承和多态的特点。与结构化程序设计不同的是,面向对象程序设计是用类抽象代表现实的实体,用类之间的继承关系表示程序设计的抽象过程.函数只是对数据的操作,没有数据的概念,而类是数据和数据操作的集合,由于面向对象的程序设计方法非常近现实,所以越来越流行. VS2010中集成了大量的最新技术,如ActiveX、COM等技术,程序开发人员可以紧紧地把握住软件开发技术发展的方向,开发出功能强大的应用程序。 VS2010还提供了丰富的技术资源,MSDN(Microsoft Develop Network)提供了强大的联机帮助支持,同时还可以通过访问Microsoft的网上站点来获得最新的技术文档。 2、SQL Server是一个关系数据库管理系统,SQL Server是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理.SQL Server数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,方便安全可靠地构建和管理用于业务的高可用和高性能的数据应用程序。 SQL Server特点[5]: (1)真正的客户机/服务器体系结构。 (2)图形化用户界面,使系统管理和数据库管理更加直观、简单。 (3)丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地. (4)SQL Server与Windows NT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等.SQL Server也可以很好地与Microsoft BackOffice产品集成。 (5)具有很好的伸缩性,可跨越多种平台使用。 2 系统需求分析设计 2.1需求分析的目的 软件的需求分析必须要有对原业务的一个深入了解、提取、抽象、升华的过程,管理软件需求分析尤其如此。 软件的需求分析是从用户的业务中提取出软件系统能够帮助用户解决的业务问题,通过对用户业务问题的分析,规划出我们的软件产品。这个步骤是对用户业务需求的一个升华,是一个把用户业务管理流程优化,转化为软件产品,从而提升管理而实现的质的飞跃,这一步是否成功,直接关系到开发出来的软件产品能否得到用户认可,顺利交付给客户,客户能否真正运用我们的产品帮助他解决业务或管理问题。 按照软件工程对软件开发过程的描述,需求阶段细分为需求调研和需求分析两个小阶段,需求调研需要充分细致的了解客户目标,用户业务内容、流程等,这是一个对需求的采集过程,是进行需求分析的基础准备. 2。2 系统需求分析 2。2.1系统功能需求 航空票务管理系统中主要要解决的是: 1、 用户在登录应用程序界面时,检查用户的合法性,并根据用户的权限为其分配功能。 2、 本系统可以由售票员、经理、总经理几个身份进入,不同身份拥有不同权限。例如,只有总经理可以在航班管理中修改和撤销航班,只有经理以上才能退票。而售票员只能售票. 3、 系统管理员可以通过应用程序对用户信息进行统一管理,进行各种信息的修改与操作。 4、 应用程序内部要可以通过SQL语句对数据库内的数据进行更新、插入(增加)、修改和删除等操作。 5、 当系统管理员对相关信息进行操作时,系统要自动检测输入的数据是否合理,并弹出相应的提示信息. 6、 应用程序中要有该程序的相关简介和使用说明,帮助系统管理员和用户更好地使用该程序。 2。2.2软件运行环境 操作系统:Windows Xp、Windows 7 Cpu: Intel Celeron 448MHz或更高配置 内存: 256M或更大 硬盘: 100M或更大空间 2.3 数据流图 2.3。1数据流图介绍 数据流图也称为数据流程图date flow diagram , 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) not null 性别 Varchar(4) not null 身份证号 Varchar(18) (主键) 客户电话 Varchar (11) 备注 Varchar(50) 图3.4 客户信息设计 (3)航班信息表中包括航班编号、出发城市、到达城市、出发日期、机票价格、备注等字段.具体设置如表3。3所示。 表3。3 工资信息表 字段名 数据类型 说明 航班编号 Varchar(12) (主键) 出发城市 Varchar(50) not null 到达城市 Varchar(50) not null 出发日期 Varchar(50) not null 机票价格 int not null 备注 Varchar(50) 图3。5 航班信息设计 (4)订单信息表中包括订单号、航班编号、身份证号等字段.具体设置如表3。4所示。 表3。4 订单信息表 字段名 数据类型 说明 订单号 Varchar(10) (主键) 身份证号 Varchar(18) 外键 航班编号 Varchar(12) 外键 购买票数 Int not null 购买日期 Varchar(50) not null 售票员 Varchar(18) 外键 备注 Varchar(50) 图3.6 订单信息设计 图3。7 数据库关系图 (5)外键设置 图3。8 外键设置 图3.9 航班编号外键设置 图3。10 身份证号外键设置 图3。11 用户外键设置 4 详细设计 4。1 数据库连接 采用ADO方式,应用程序可通过ADO直接与数据库连接; 在创建应用程序实例初始化时,进行数据库连接。在登陆框初始化时,执行sql查询。 相关的连接程序如下: BOOL CADOtestApp::InitInstance() { AfxEnableControlContainer(); AfxOleInit(); m_pConnection。CreateInstance(__uuidof(Connection)); //在ADO操作中建议语句中要常用try...catch()来捕获错误信息, //因为它有时会经常出现一些想不到的错误 try { m_pConnection->Open(”driver={SQL Server};Server=.;Database=SL;UID=;PWD=”, "”,””,adModeUnknown); //Server后是服务器的计算机名,可以用。表示本地,Database后是数据库名, //这里使用的windows验证,没有设置用户名和密码, } catch(_com_error e) { AfxMessageBox("数据库连接失败!"); return FALSE; } 连接成功后应在相应的对话框中完成初始化工作(以登录界面为例): BOOL CAirHoldingSystemDlg::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) { BOOL bNameValid; CString strAboutMenu; 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: 在此添加额外的初始化代码 return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } 初始化后,便可进行登陆操作 图4.1 4.2 举例航班管理代码 4.2。1航班管理界面初始化 初始化ListCtrl控件,显示相关航班信息 找到初始化函数,并写入相关代码 图4.2 MFC类向导找初始化函数 BOOL CFlight::OnInitDialog() { CDialogEx::OnInitDialog(); if(root 〈 MANAGER1) { 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 { //打开本地 Sql Server库student m_pConnection—〉Open(”driver={SQLServer}; Server=.;Database=AirHolding;UID=””;PWD=”””, ””,"",adModeUnknown); //Server后是服务器的计算机名,Database后是数据库名 //这里使用的windows验证,没有设置用户名和密码, //如果是windows和SQL server混合验证,UID=””;PWD=”"要写入相应的用户名和密码 } catch(_com_error e) { AfxMessageBox(”数据库连接失败!”); return FALSE; } // TODO: Add your control notification handler code here 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_t price = m_pRecordset—〉GetCollect(”机票价格"); price.bstrVal; int line=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_t str = 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: 在此添加额外的初始化 return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } 初始化成功后,得如下界面: 图4。3 航班管理界面 4.2.3新增航班的实现 对多用户数据库程序来说,不同的用户应有不同的权限。比如管理员可以无任何限制,有的用户只有查询的权限没有修改的权限,有的用户只可以输入数据不能查询等等.所以新增航班这一功能只有拥有总经理的权限才能使用,否则此按钮将被隐藏起来,如图4。4,与4.3形成对比。 图4.4 售票员航班管理界面 图4。5新增航班信息界面 //新增航班 void CFlight::OnBnClickedNew() {// 弹出新增航班对话框 CAddFlight addFlight; addFlight.DoModal(); Refresh();// 这是用户刷新listCtrl列表的,下面有代码 // TODO: 在此添加控件通知处理程序代码 } 图4。6 新增航班编号111 4。2.4撤销航班的实现 同样地,撤销航班只有总经理权限才能使用。 //撤销航班 void CFlight::OnBnClickedRemove() { int i = (int)m_List。GetFirstSelectedItemPosition() - 1; if(i == -1) { ::MessageBox(NULL,"请先选中要撤销的航班。”,”提示”,0); // MessageBox("请先选中要撤销的航班","提示",MB_OK); return; } if(MessageBox(”是否撤销该航班?",”确认",MB_YESNO) != IDYES) { return; } m_pRecordset—〉MoveFirst(); while(!m_pRecordset—>adoEOF) { _variant_t str1 = m_List.GetItemText(i,0); _variant_t str = m_pRecordset-〉GetCollect(”航班编号"); if(str == str1) { try { m_pRecordset-〉Delete(adAffectCurrent); m_pRecordset-〉Update(); ::MessageBox(NULL,"撤销航班成功!”,”提示”,0); // MessageBox(”撤销航班成功!”); Refresh(); UpdateData(false); } catch (_com_error& e) { AfxMessageBox(e。Description()); } return; } m_pRecordset-〉MoveNext(); } // TODO: 在此添加控件通知处理程序代码 } //Refresh() void CFlight::Refresh(void) { m_List.DeleteAllItems(); // 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_pRecordset—〉Requery(); m_pRecordset->MoveFirst(); while(!m_pRecordset—〉adoEOF) { _variant_t price = m_pRecordset-〉GetCollect(”机票价格”); price。bstrVal; int line=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_t str = 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(); } } 4。2。5修改航班的实现 图4。7。修改航班 //修改航班 void CFlight::OnBnClickedUpdate() { int i = (int)m_List。GetFirstSelectedItemPosition() - 1; if(i == -1) { ::MessageBox(NULL,"请先选中要修改的航班”,”提示",0); return; } m_pRecordset->MoveFirst(); while(!m_pRecordset—>adoEOF) { _variant_t str1 = m_List。GetItemText(i,0); _variant_t str = m_pRecordset—>GetCollect(”航班编号”); if(str == str1) { try { // 修改航班对话框 CUpdateFlight updateFlight; updateFlight。flightID = m_pRecordset->GetCollect("航班编号”); updateFlight。origin = m_pRecordset—〉GetCollect("出发城市”); updateFlight.arrival = m_pRecordset—〉GetCollect(”到达城市”); updateFlight.date = m_pRecordset—〉GetCollect(”出发日期"); _variant_t t = m_pRecordset—>GetCollect(”机票价格”); updateFlight。price = t.intVal; _variant_t temp = m_pRecordset->GetCollect(”备注”); if(temp。vt == VT_NULL) updateFlight。noteInfo = ”无”; else updateFlight。noteInfo = m_pRecordset->GetCollect(”备注"); updateFlight。DoModal(); Refresh(); UpdateData(false); } catch (_com_error& e) { AfxMessageBox(e.Description()); } return; } m_pRecordset—>MoveNext(); } // updateFlight // TODO: 在此添加控件通知处理程序代码 } 图4。8 修改航班111的价格为588 4。3购买机票 4.3.1选择机票并确认购买 图4.9选择机票 4。3。2填写客户信息 图4。10 填写客户信息并购买机票 4。4其他界面与功能 购票后,可以到订单查询中查询以及退票等操作,退票要求有经理以上的权限,按钮才会显示出来: 图4.11订单信息 查询订单号158 图4。12订单查询 如果是总经理,可以对此退票: 图4.13 点击显示所有,发现订单已经被取消 图4.14 关于界面: 图4。15 5课程设计小结 这次课程设计我写的是航空票务管理系统,因为时间安排不合理,还有好多想到的功能都没来得及增加,这是我感觉最遗憾的。 曾经我写过一个管理系统是基于ODBC的,但是这次用的是ADO编程,我感觉ADO比ODBC方便多了,但是还是在连接数据库上花了一整天的时间。 数据库设计的比较简单,只有四个表,因为时间仓促,我不敢把表写的太复杂,但是这个表是我经过反复修改琢磨写出来的,一开始订票信息表是由身份证号和航班编号一齐作为主码的,原以为是可行的,但实际开发时发现如果这样的话,会导致同一个人,不能买同一航班的票两次,这明显与显示不符合,因此又增加了订单号,并单独以此为主码。此数据库设计起码满足BCNF范式以上. 通过这次数据库课程设计,虽然只有短短的一周不到的时间,我掌握了连接数据库的方法,这是我学到的最大的东西.不足的地方是对ADO的函数认识还不是很多,只有简单的几个,有些感觉能用函数实现的,也是要我自己编写找出来,比较死板。_CommandPtr也没有用,总感觉可以使用它的execute指令来查询sql,但我却没有去用,反而是自己编写了一个Select函数,通过每次关闭_Recordset对象再打开的时候查询,这是我感觉最死板的地方。 另外就是这个是MFC基于对话框的工程,如果再给我写一次,我就绝对不会用基于对话框了,因为我感觉基于对话框的不够美观- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 航空 售票 管理 系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文