还剩39页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
第一章引言自20世纪70年代以来数据库技术得到迅速发展.目前世界上已经有数百万个数据库系统在运行其应用已经深入到社会生活的各个领域从企业管理银行管理资源管理经济预测一直到信息检索档案管理普查统计等.我国20世纪90年代初在全国范围内装备了12个以数据库为基础的大型计算机系统这些系统分布在邮电计委银行电力铁路气象民航情报公安军事航天和财税等行业.现在数据库技术还在不断发展并且不断的与其它计算机技术相互渗透.数据库技术与网络通信技术相结合产生了分布式数据库系统.数据库技术与面象对象技术相结合产生了面向对象数据库系统等各种数据库系统. 在人类迈向21世纪知识经济的时候信息变为经济发展的战略资源信息技术已成为社会生产力重要的组成部分.人们充分认识到数据库是信息化社会中信息资源管理与开发利用的基础.对于一个国家数据库的建设规模使用水平已成为衡量该国信息化程度的重要标志.因此数据库的学习是非常重要的.随着现代社会信息化产业的深入发展人们越来越重视对信息资源的开发、利用和管理根据得到的信息进行决策.这就要求现代化管理人员每天都要处理大量信息而计算机的诞生、发展就为处理大量信息带来了方便随着计算机的不断发展网络技术和数据库技术的普遍应用用户的功能更加细致、完善并且提高了系统开发的效率.这就要求系统开发者要以最快的速度开发出功能最完善的系统而现在普遍使用的面向对象法使信息系统的应用深入到社会的各个领域在面向对象的设计中VB是用的较多的编程语言的一种它是Microsft公司推出的Windows应用程序开发环境它是一种用于数据库结构设计和应用程序开发的功能强大的面向对象的微机数据库软件它采用了可视化、面向对象的程序设计方法这种方法提高了系统的模块性和紧凑性.它具有可视化编程环境的“所见即所得”功能等进行读写操作.许多行业在应用其进行数据管理和办公自动化等方面都取得了卓越的成效受到广大用户的欢迎
1.1 本课题的研究意义计算机已经成为我们学习和工作的得力助手今天,计算机的价格已经十分低廉,性能却有了长足的进步它已被应用许多领域,计算机之所以如此流行的原因主要有以下几个方面首先,计算机可以代替人工进行许多繁杂的劳动;其次,计算机可以节省许多资源;第三,计算机可以大大的提高人们的工作效率;第四,计算机可以使敏感文档更加安全,等等现在我国的宾馆客房的管理水平还停留在低水平的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被以计算机为基础的信息管理所取代我作为一个计算机信息管理的专科生,希望可以在这方面有所贡献改革的总设计师邓小平同志说过“科学技术是第一生产力”,我希望能用我三年的所学编写一个实用的程序来帮助现代高档宾馆客房进行更有效的管理归纳起来,好处大约有以下几点1.可以很方便的了解客房信息,方便、高效;2.只需一到二名信息录入员即可操作系统,节省大量人力;3.可以迅速查到顾客与客房信息
1.2宾馆客房管理系统论文的目的、内容及主要贡献
1.
2.1 目的本系统开发的主要目的就是要使宾馆客房管理实现计算机管理,使管理员能够有序的管理客户以及客房信息的更新、查询、删除,使企业运用现代化技术创造更多更高的经济效益
1.
2.2 内容宾馆客房管理系统的主要任务是用计算机对客房信息进行日常的管理,如住宿管理、客户管理、挂帐管理以及系统设置等,迅速准确地完成对客户和客房信息的提取,针对系统服务对象的具体要求,设计了宾馆客房管理系统宾馆客房管理系统主要有以下几大功能
1.住宿管理包括住宿登记追加押金退宿结帐;
2.客房信息管理客房的信息是会经常变化的所以要对客房信息进行必要的查询设置查看;
3.挂帐管理对每位客户的挂帐信息进行查询及管理客户结额;
4.查询统计对客房进行住宿查询,退宿查询,宿费提醒;
5.日结对客房进行登记预约报表,客房销售报表,客房销售统计;
6.系统设置对系统进行操作员设置,密码设置,初始化,权限设置
1.
2.3 主要贡献宾馆客房管理系统是一个大部分宾馆不可缺少的部分它的内容对于宾馆的决策者和管理者来说都至关重要所以客房管理系统应该能够为管理员提供充足的信息和快捷的查询手段但一直以来人们使用传统人工的方式管理客房信息,这种管理方式存在着许多缺点如:效率低、可行性差另外时间一长将产生大量的信息和数据这对于查找、更新和维护都带来了不少的困难随着科学技术的不断提高计算机科学日渐成熟其强大的功能已为人们深刻认识它已进入人类社会的各个领域并发挥着越来越重要的作用作为计算机管理的一部分使用计算机对客房信息进行管理具有着手工管理所无法比拟的优点.例如:查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等这些优点能够极大地提高客房管理的效率也是企业的科学化、正规化管理与世界接轨的重要条件,特别是中国加入WTO以后,互联网上的交易日益频繁,开发这样一个客房管理系统将会使现代企业更加游刃有余的进行客房管理信息的管理第二章宾馆客房管理系统的研究现状及设计目标
2.1 宾馆客房管理系统研究课题的特点及优缺点 随着我国国民经济建设的蓬勃发展和具有中国特色的社会主义市场经济体制的迅速完善,各个行业都在积极使用现代化的手段,不断改善服务质量,提高工作效率,这些都在很大程度上给企业提出越来越严峻的挑战,对企业体系无论是在行政职能、企业管理水平以及优质服务上都提出更高的要求建设一个科学高效的信息管理系统是解决这一问题的必由之路宾馆客房管理是该企业运用现代化技术创造更多更高的经济效益的主要因素之一宾馆客房管理作为企业一种管理也是如此,由于宾馆客房管理有时信息繁多,如果没有一个完整的管理系统来进行管理,那么势必会给管理人员带来种种麻烦,因此类似宾馆客房管理系统之类的系统软件的开发就显得很重要宾馆客房管理系统可以使管理员很方便的对客房信息进行操作概括起来主要有1.可以方便客房管理信息的设置添加查询;2.只需一到二名录入员即可操作系统,节省大量人力;3.可以迅速查到客户和客房信息;4.可以方便注册新用户但是由于本人的水平有限,考虑问题不够全面,有些功能还不够完善,如订房信息,结算信息等等,还需要更进一步的设计
2.2 现行研究中存在的问题及解决方法
2.
2.1 数据库系统的选择原则
1.数据库系统采用易于集成的,开放的技术
2.产品质量优异,可靠性高,适于长期运行,能支持关键应用
3.数据安全,保安型高
4.能提供分布式数据库功能
5.支持多种开发环境,软件开发容易
6.扩充性和升级能力强
2.
2.2 开发方法的选择管理信息系统的开发方法有生命周期法、原型法和面向对象的开发方法等生命周期法(LifeCycleMethod)是20世纪60年代发展起来的一种应用广泛且比较成熟的管理系统开发方法,它的基本思想是将系统的开发工作从开始到结束划分为若干个阶段,每个阶段都有明确的任务,而系统开发出来后,并不意味着生命周期的结束,而意味着根据组织的需要对系统的修改和重建的开始;原型法PrototypingMethod是20世纪80年代发展起来的,旨在改变生命周期法的缺点的一种系统开发方法,该法的开发思路是首先根据用户的要求,由用户和开发者共同确定系统的基本要求和主要功能,利用系统快速生成工具,建立一个系统模型,再在此基础上与用户交流,将模型不断补充、修改、完善,如此反复,最终直至用户和开发者都比较满意为止,从而形成一个相对稳定、较为理想的管理信息系统;面向对象(ObjectOriented)的开发方法于20世纪80年代开始兴起的,是一种基于问题对象的自底向上的一种系统开发方法,这种方法的特点是以对象为基础,对象是分析问题和解决问题的核心基于以上三种方法的特点和各自的优缺点,本企业工资管理系统利用软件工程化思想和方法,总体上是采用结构化生命法进行系统分析和设计的,而系统实现等步骤则采用了原型法和面对对象的方法
2.3 宾馆客房管理系统的设计目标根据实际需要建立一个计算机的客房管理系统,解决传统的手工绘图与信息登记这个系统已达到减少工作量以及人员的数量提高工作效率和速度的目的.为实现此目的要求实现的功能如下:
1.用户登录界面
2.住宿管理
3.客房管理
4.挂帐管理
5.查询统计
6.日结
7.系统设置
8.退出其层次图如下第三章 要解决的几个关键问题
3.1 研究设计中要解决的关键问题
3.
1.1 编程环境的选择微软公司的VisualBasic
6.0是Windows应用程序开发工具,是目前最为广泛的、易学易用的面向对象的开发工具VisualBasic提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性故而,实现本系统VB是一个相对较好的选择
3.
1.2 数据库的实现Access就是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索Access的优点在于它能使用数据表示图或自定义窗体收集信息数据表示图提供了一种类似于Excel的电子表格,可以使数据库一目了然另外,Access允许创建自定义报表用于打印或输出数据库中的信息Access也提供了数据存储库,可以使用桌面数据库文件把数据库文件置于网络文件服务器,与其他网络用户共享数据库Access是一种关系数据库工具,关系数据库是已开发的最通用的数据库之一如上所述,Access作为关系数据库开发具备了许多优点,可以在一个数据包中同时拥有桌面数据库的便利和关系数据库的强大功能
3.
1.3 DATA与数据库的结合 DATA控件在数据库中的信息与将信息显示给用户看的VisualBasic程序之间架起了一座桥梁我们可以设置DATA控件的各个属性,告诉它要调用哪个数据库的哪个部分缺省情况下,DATA控件根据数据库中的一个或多个数据表建立一个dynaset-type(动态集合)类型的记录集合一个记录集合是动态的也就意味着,当原来的数据表中的容改变了以后,该记录集合中的记录也会随之改变DATA控件还提供了用来浏览不同记录的各种跳转按钮将DATA控件放置在窗体中之后,我们还必须在该控件与要处理的数据库之间建立联系
3.2 实现中采用的关键技术的分析
3.
2.1 数据库的概念数据库是一种存储数据并对数据进行操作的工具数据库的作用在于组和表达信息,简而言之,数据库就是信息的集合计算机的数据库可以分为两类非关系数据库(flat-file)和关系数据库(relational)关系数据库中包含了多个数据表的信息,数据库含有各个不同部分的术语,象记录、域等
3.
2.2 数据库的特点
1.表中的每一个单元的内容只有一个值
2.所有字段的名称都不相同
3.记录的前后次序和字段的左右次序可以变化,不受限制
4.数据库中的表的上下次序不受限制
5.表中不应有内容完全相同的记录
6.表中的每一个字段都必须有相同的数据类型
3.
2.3 新建一个数据库创建任何一个数据库的第一步是仔细的规划数据库,设计必须是灵活的、有逻辑的创建一个数据库结构的过程被认为是数据模型设计 1.标识需要的数据; 2.收集被标识的字段到表中; 3.标识主关键字字段; 4.绘制一个简单的数据图表; 5.规范数据; 6.标识指定字段的信息; 7.创建物理表
3.
2.4 修改已建立的数据库数据库的修改分为添加、编辑和删除记录这三种操作均可由VisualBasic创建的程序来完成
3.
2.5 实现数据库之间的联系数据库之间的关系指明两个库之间共享一个共同的关键字值一个连接是指一种虚拟的表,这种表是在当用户要求从相互关联的各个不同的表中获取信息时建立的,关键字段用于在相互连接的不同表中查找匹配的记录一个更高级的连接形式称为自连接这种连接是指一个表被连接到它自己的一个字段,或在不同的纪录中由重复数据的组合字段数据库中有三种不同类型的关键字主关键字、组合关键字和外关键字在表中使用的关键字类型用于描述库表示什么以及在数据库中如何与其它的库建立关系第四章系统结构与模型
4.1系统设计实现的策略和算法描述对连续运行的客房管理体系进行系统的数字化分析,将人工管理模拟系统提升为数字化管理系统,需要运用宾馆管理学的系统管理、组织行为学、整分合原理、工程项目控制等理论予以创造性地实践,确定信息化战略的对策,统一规划、分步实施◆需求分析
4.
1.1设计的总策略与总思路1系统工程的原则系统工程把它所需要控制的对象看作是一个系统,运用系统的观点,以控制论、信息论、概率论为其方法论基础,并以电子计算机为运算手段,对系统实施管理这种管理科学和技术,可以运用于各种不同性质、不同规模的管理对象客房是一个系统,而组织管理这个客房系统的科学方法就是客房系统工程1以顾客为本的系统原则顾客为本的原则宾馆服务的对象是顾客从服务顾客的宗旨出发,只有体现顾客为本理念的系统才具有强大的生命力和广阔前景顾客满意的原则随着人们生活水平的不断提高以及对服务的要求越来越高,人们开始在意起宾馆的服务态度、住宿环境等软环境质量甚至把宾馆是否能够为自己提供便捷满意的服务作为选择住宿宾馆的主要目的方便顾客住宿的原则把顾客和客房繁多复杂的住宿模式整合为简捷的流程,坚持以顾客为中心,体现简化顾客住宿的流程、缩短顾客办住宿手续的时间和提供细致体贴的服务信息2优势业务活动原则客房管理流程向规范程序转化业务信息拆分整合从顾客、宾馆和社会三个面向出发,深入对优势业务全过程房间、房态和结算三个主要信息流向进行流程分析和作业分析,编制程序图和过程图,管理的规范化、程序化工作流程的改动,可以引起减员增效的效应3住院管理系统各功能模块的设计策略与思路1住宿管理这部分是整个系统关键部分它要求内容与数据的准确性很高存储的绝对完整.在设计中以数据类型的一致和算法的准确为首要策略.2客房管理部分这部分是该系统的核心之一.对客房信息的准确设置查询房态查看是重中之重.设计中我充分运用了系统整体的原则保证以上功能的完整性.3挂帐管理单元数据信息存储的完备性是最高要求4查询统计部分这部分对数据的准确性要求也很高5日结报表形式显示数据6系统设置.这一部分关系到系统使用的合法性安全性主要策略是增加系统登录和注册过程中关键字的设置出错信息的提示.系统登录部分要求输入信息的绝对正确性.完整性注册部分除此之外还要求注册信息的唯一性即不可重复性.
4.
1.2系统算法描述1算法概述算法是为实现某个计算过程而规定的基本动作的执行序列它必须满足下列性质输入性、输出性、有穷性、确定性、可行性非数值型问题越来越引起关注如文献检索、MIS、等等2算法分析衡量一个算法的好坏,除其“正确性”外,还应考虑执行算法所消耗的时间执行算法所耗费的存储空间,其中主要考虑辅存量的大小其他诸如算法是否易读,是否易于调试、测试等.3本系统的算法描述本系统用到的算法主要是排序所谓排序,就是要整理文件中的记录,使之按关键字递增或递减次序排列起来其确切定义如下1被排序对象--文件(由一组记录组成) 记录则由若干个数据项或域组成其中有一项可用来标识一个记录,称为关键字项该数据项的值称为关键字Key 2排序运算的依据--关键字 用来作排序运算依据的关键字,可以是数字类型,也可以是字符类型
4.2系统编程模型及数据结构
4.
2.1编程模型概述反应于软件的开发模型软件的开发模型给出了软件开发活动各阶段之间的关系为软件开发提供原则和方法软件开发模型主要是“瀑布模型”,“原型模型”,“螺旋模型”,“变换模型”,“组合模型”该住院管理系统程序的开发设计采用了“瀑布模型”它包括●可行性研究●需求分析●概要设计●详细设计●系统测试●运行维护●数据分析
4.
2.2数据结构概述1数据结构数据结构由某一数据对象及该对象中所有数据成员之间的关系组成在数据结构的讨论中重点研究的是“结构”,而把组成结构的那些元素抽象成一个“结点”结点是数据结构中的基本单位2数据字典数据字典的定义 数据字典是关于数据的信息的集合,对数据流程图中的各个元素做完整的定义与说明,是数据流程图的补充工具数据流图和数据字典共同构成系统的逻辑模型 数据字典的内容 ●数据流 ●数据项●数据结构●数据存储●处理逻辑●外部实体3系统的数据结构和数据字典●本系统数据结构本系统用到的主要E-R图为如下客房信息实体间有关属性图挂帐实体间有关属性图住宿实体间有关属性图实体之间关系E-R图以系统用到的主要数据表为依据,这是对主要数据表的汇总省去了各个表中重复的数据项.“关键字”和“索引”的设置是整个系统功能顺利实现的重要保证Psw用户信息表关键字:用户名密码.索引:设“用户名”为普通索引.Room客房信息表关键字:房间号房间类型房态使用设置.索引:设配置、营业日期、价格为普通索引.Zhusu住宿信息表关键字:凭证号码索引:“:凭证号码”其他数据表“关键字”和“索引”设置与以上雷同.本系统的数据字典列名数据类型可否为空宽度房间号VarcharNOTNULL10房间类型VarcharNOTNULL20价格numricNOTNULL6房态VarcharNOTNULL50标志VarcharNOTNULL50备注VarcharNOTNULL50配置VarcharNOTNULL40使用设置VarcharNOTNULL20营业日期DatetimeNULL10列名数据类型可否为空宽度凭证号码VarcharNOTNULL14姓名VarcharNOTNULL8证件名称VarcharNOTNULL10证件号码VarcharNOTNULL14详细地址VarcharNOTNULL40出差事由VarcharNULL房间号VarcharNOTNULL10客房类型VarcharNOTNULL40联系电话VarcharNOTNULL11客房价格NumericNOTNULL6住宿时间DatetimeNOTNULL10住宿天数VarcharNOTNULL3宿费numericNOTNULL10列名数据类型可否为空宽度姓名VarcharNOTNULL8身份证号VarcharNOTNULL14联系电话VarcharNOTNULL11详细地址VarcharNOTNULL40工作单位VarcharNOTNULL40客房类型VarcharNOTNULL20房间价格NumericNOTNULL6预住日期DatetimeNOTNULL3预住天数VarcharNOTNULL3预付金额NumericNOTNULL4备注VarcharNULL40日期DatetimeNULL8操作员VarchaNOTNULL10时间DatetimeNOTNULL5证件名称VarcharNOTNULL8第五章系统实现技术开发环境本系统是用微软公司开发的中文版VisualFoxPro
6.0开发而成.它为各类专业人员或非专业人员提供了一个可视化的工作平台.操作简单易学易用.另外它的语言语法结构和我们常用的VisualBasic有相通之处这更加促进了开发者使用本软件的信心.运行环境Windows2000中文版或更高版本或WindowsNT
4.0中文版或更高版本.
5.1各模块的系统实现方法系统的模块设计是整个系统的核心部分.各模块的分步执行经组合构成了系统功能的总目标.以下为该系统主要模块的实现过程.1系统登录这一部分关系到系统使用的合法性安全性.主要策略是增加系统登录过程中关键字的设置出错信息的提示.只有在用户和密码都正确的情况下才能成功进入本系统.如下为登录界面:2主界面用户登录后就可以对本系统进行操作如下图:3顾客住宿登记界面顾客不登记是不能进行住宿的登记包括姓名联系地址房间号码客房价格等该界面可以完全显示已登记顾客的基本详细信息.4客房设置该界面可以让顾客及管理员很清楚的了解个客房的状态包括房间号、房间配置、房间类型、价格、使用设置等等如下图5客户结款该界面用来显示客户在本宾馆住宿费用信息包括住宿金额、欠款金额客户姓名等3系统设置包括操作员、设置密码设置、初始化设置等
1.操作员设置用来注册新的操作员.如下图:
2.密码设置,用来对操作的密码进行修改,如下图:
3.初始化设置,清空所选表数据或全部数据
5.2宾馆客房管理数据流程图如下所示第六章性能测试与分析
6.1软件测试目的软件产品与其他产品不同,其最大的成本是检测软件错误,修正错误的成本,以及为了发现这些错误所进行的设计程序和运行测试程序的成本关于软件测试目标,人们在长期的工作时间中逐渐有了一个统一的认识一般说,其第一目标是预防错误但是实现这一点是很难的,毕竟这当中绝大都是人的创造性活动所谓“人无完人”,所以不出现错误是不可能的因此软件测试的第二目标只能是发现错误软件错误的表现形态是多种多样的,并且,不同的错误可以有同样的表现形态,因此,即使知道了一个程序的错误,也可能不知道错误是什么这样要实现测试的第二目标“发现错误”就需要研究软件测试的理论,技术,方法
6.2软件测试实例的研究和选择测试实例的研究和选择与测试技术紧密相连软件测试技术大体上可分为两大类白盒测试技术(典型的是路径测试技术)和黑盒测试技术(又称为功能测试技术)白盒测试技术依据的是程序的逻辑结构,黑盒测试技术依据的是软件行为的描述黑盒测试技术包括事务处理流程技术,状态测试技术,定义域测试技术等路径测试策略路径测试语句测试分枝测试条件组合测试.事务处理流程测试技术,是系统行为的一种表示方法,为功能测试建立了程序的动作模式其中使用了控制流程的概念成分,例如链支,结点等应该说,不论是结构测试,还是功能测试,基于结点,链支的图形表示技术都的一种强有力的概念工具其基本步骤定义有用的图形模式,设计必要的测试用例以覆盖之恰当合理的测试技术对完成软件测试是很重要的,要采用“适应性”原则
6.3测试环境与测试条件软件测试环境是进行软件测试所必需的工作平台和前提条件,包括硬件环境和软件环境,硬件环境指进行测试所必需的服务器、客户端、网络连接设备,以及打印机/扫描仪等辅助硬件设备所构成的环境;软件环境则指被测软件运行时的操作系统、数据库及其他应用软件等构成的环境软件由数据和程序两个最基本的要素组成,对数据进行软件测试,就是在检查用户输入的信息、返回结果以及中间计算结果是否正确主要根据下列原则来进行等价分配,以合理减少测试实例边界条件、次边界条件和无效数据
6.4系统实例测试 功能测试功能测试的主要内容是按实际操作的数据向系统的各个功能模块输入数据,检测输出结果是否符合预期要求系统登录操作员:输入系统管理员密码:输入111住宿管理住宿登记:输入:张银汉云南省大理,1688等点击:登记追加押金:输入:3624221983091087215天1000元等点击:登记客房管理客房设置:输入:1688标房200入住客房查询:输入:1688挂帐管理挂帐查询:武汉博信科技有限公司客户结款:武汉博信科技有限公司支票支票查询统计住宿查询:张银汉退宿查询:张银汉点击:查询宿费提醒:张银汉3624221983091087211688200系统设置操作员设置:输入操作员:张银汉输入密码:111输入确认:111单击:确认密码设置:输入操作员:系统管理员输入原密码:111输入新密码:123单击:确认结束语时间过得飞快一个多月的毕业设计就有结束了在这一个多月里我学到了许多书本上没有涉及到的东西同时也综合了自己过去学过的知识.提高了自行分析、提出方案、进行设计、软件测试等能力,虽然这次的设计是我的第一次尝试还没有投入到实际应用中但这次的设计过程可以说是一次知识综合运用的过程同时也是对我的知识和能力进行考核的过程.在这次的设计过程中我采用了以前学过的VisualBasic
6.0编程语言我一边做一边复习让我学到了不少曾遗忘的知识提高了应用水平改变了以往只学不练的习惯给自己的设计交上了一份满意的答卷.在这次的毕业设计中,我深深地体会到进行软件开发不是一件简单的事情,它需要设计者具有全面的专业知识、缜密的思维、严谨的工作态度以及较高的分析问题、解决问题的能力而我在很多方面还有欠缺在毕业设计期间我的指导老师申玉斌老师给了我很多的帮助和辅导在即将毕业之际我衷心的感谢申老师给我的关心和帮助!三年的大学生活即将结束我特别珍惜这三年时光因为这三年是我的学生生活中重要的一段这三年是我的人生里程碑中重要的一部分我想这三年也将成为我日后回忆中重要的一程.三年的大学生活发生了好多让我感动的事情这些感动是不能用文字言尽只能用心去体会留在心底让它随着时间的流失酝酿成一种让我一辈子都能回味的美酒.我们会永远记住曾经教导过我们、帮助过我们、关心过我们的老师.在此我要再次感谢尊敬的老师们你们让我们获得了用金钱也衡量不了的宝贵知识为我的今后发展开辟了一条良好的道路致谢经过一个多月的努力,我们的设计和论文终于大功告成在深深呼吸后,我们终于知道自己的担子确实松了不少在设计前,我们总觉得毕业设计很简单可一旦动起手来,就没有坐在那儿空想那么容易了我们终于了解了古人所说的“眼高手低”的真谛所在在创作过程中,我们遇到了种种在开题报告中所没有发现的实质性的问题总是做着改着可以说,整个作品是在不断地删改中逐渐成型的有时候确实有偷懒的想法但为了能够顺利圆满地结束自己三年的大学生涯,总算克制住了自己当然,整个毕业设计的最终脱稿,离不开各方面的支持与帮助特别是指导老师申玉斌,申老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我们受益匪浅毕业设计的整个创作过程都是在与他一次次地交流中不断前进的,他无论在理论上还是在实践中,都给予我们很大的帮助,特此感谢他的耐心教导,在此向申老师至以最衷心的感谢!参考文献1.谭浩强VisualBASIC程序设计清华大学出版社
2002.
72、萨师煊、王珊《数据库系统概论(第二版)》高等教育出版社
2001.43.王汝涌管理信息系统中国财政经济
2001.74.张海藩软件工程清华大学出版社
2001.65.VisualBasic
6.0数据库系统开发实例导航人民邮电出版社
2002.4附录(源程序)(1) 主界面的创建PrivateSubForm_LoadData
1.DatabaseName=App.Path\Kfgl.MDB自动识别数据库路径EndSubPrivateSubForm_Activate设置操作员权限WithData
1.RecordsetIf.BOF=FalseThen.MoveFirst.FindFirst操作员like+Chr34+StatusBar
1.Panels
4.Text+Chr34+If.NoMatchThenElsemain.zjyj.Enabled=.Fields追加押金main.zsdj.Enabled=.Fields住宿登记main.tf.Enabled=.Fields退宿登记main.kfsz.Enabled=.Fields客房管理main.kfcx.Enabled=.Fields客房查询main.ftck.Enabled=.Fields房态查看main.gzcx.Enabled=.Fields挂帐查询main.khjk.Enabled=.Fields客户结款main.zscx.Enabled=.Fields住宿查询main.tfcx.Enabled=.Fields退宿查询main.sftx.Enabled=.Fields宿费提醒main.ysbb.Enabled=.Fields登记预收报表main.xsbb.Enabled=.Fields客房销售报表main.xstj.Enabled=.Fields客房销售统计报表main.czysz.Enabled=.Fields操作员设置main.ma.Enabled=.Fields密码设置main.csh.Enabled=.Fields初始化main.qxsz.Enabled=.Fields权限设置EndIfEndWithEndSubPrivateSubkfyd_Click调入客房预定main_kfyd.Showmain.Enabled=FalseEndSubPrivateSubImage2_ClickEndSubPrivateSubzsdj_Click调入住宿登记main_kfdj.Showmain.Enabled=FalseEndSubPrivateSubzjyj_Click调入追加押金Loadmain_zjyjmain_zjyj.Showmain.Enabled=FalseEndSubPrivateSubtf_Click调入退宿结帐main_tf.Showmain.Enabled=FalseEndSubPrivateSubkfsz_Click调入客房管理main_kfgl.Showmain.Enabled=FalseEndSubPrivateSubkfcx_Click调入客房查询main_kfcx.Showmain.Enabled=FalseEndSubPrivateSubftck_Click调入房态查看main_ftcx.Showmain.Enabled=FalseEndSubPrivateSubgzcx_Click调入挂帐查询Loadmain_gzcxmain_gzcx.Showmain.Enabled=FalseEndSubPrivateSubkhjk_Click调入客户结款Loadmain_khjkmain_khjk.Showmain.Enabled=FalseEndSubPrivateSubydfcx_Click调入预定房查询main_kfydcx.Showmain.Enabled=FalseEndSubPrivateSubzscx_Click调入住宿查询Loadmain_zscxmain_zscx.Showmain.Enabled=FalseEndSubPrivateSubtfcx_Click调入退宿查询Loadmain_tfcxmain_tfcx.Showmain.Enabled=FalseEndSubPrivateSubsftx_Click调入宿费提醒Loadmain_xftxmain_xftx.Showmain.Enabled=FalseEndSubPrivateSubysbb_Click调入登记预收报表main_ysbb.Showmain.Enabled=FalseEndSubPrivateSubxsbb_Click调入客房销售报表main_xsbb.Showmain.Enabled=FalseEndSubPrivateSubxstj_Click调入客房销售统计main_xstj.Showmain.Enabled=FalseEndSubPrivateSubczysz_Click调入操作员设置Loadmain_czyszmain_czysz.Showmain.Enabled=FalseEndSubPrivateSubma_Click调入密码设置main_mmsz.Showmain.Enabled=FalseEndSubPrivateSubcsh_Click调入初始化main_csh.Showmain.Enabled=FalseEndSubPrivateSubqxsz_Click调入权限设置main_qxsz.Showmain.Enabled=FalseEndSubPrivateSubtc_ClickEndEndSub(2)创建公用模块Module
1.bas 添加公共数据操作函数,用以执行各种SQL语句添加函数ExecuteSQL,代码如下PublicFunctionExecuteSQLByValSQLAsStringMsgStringAsString_AsADODB.Recordset‘执行SQL语句,并返回记录集对象DimcnnAsADODB.ConnectionDimrstAsADODB.RecordsetDimsTokensAsString‘异常处理OnErrorGoToExecuteSQL_Error’‘用Split函数产生一个包含各个子串的数组 sTokens=SplitSQL Setcnn=NEWADODB.Connection‘打开连接 cnn.OpenConnectString IfInStr“INSERTDELETEUPDATE”UCase$sTokens0Then Cnn.ExecuteSQL MsgString=sTokens0”querysuccessful” Else Setrst=NEWADODO.Recordset rst.OpenTrim$SQLcnnadOpenKeysetadLockOptimistic rst.MoveLast getRecordCount ‘返回记录集对象 SetExecuteSQL=rst MsgString=”查询到”rst.RecordCount”条记录” EndIfExecuteSQL_Exit: Setrst=Nothing Setcnn=Nothing ExitFunctionExecuteSQL_Error: MsgString=”查询错误:”Err.Description ResumeExecuteSQL_ExitEndFunctionPublicSubEnterToTabKeyascAsInteger‘判断是否为回车键 IfKeyasc=13Then‘Keyasc用来保存当前按键 ‘转换成Tab键 SendKeys”{TAB}” EndIfEndsub‘添加全局变量,用来记录各个窗口的读写状态,代码如下PublicflagTeditAsBoolean‘标示是否进入修改的窗体PublicflagReditAsBooleanPublicflagBeditAsBooleanPublicflagCeditAsBooleanPublicgintCmodeAsIntegerPublicgintTmodeAsInteger’记录是添加还是修改状态,1为添加,2为修改PublicgintRmodeAsIntegerPublicgintBmodeAsIntegerPublicflagSeditAsBoolean(3)系统用户管理模块的创建 用户管理模块主要实现 ·用户登陆 ·添加用户·修改用户 具体客房标准添加代码PrivateSubForm_Load‘载入窗体后,判断所处状态 DimintCountAsInteger DimMsgTextAsString DimiAsInteger IfgintTmode=1Then‘判断是否属于添加状态 Me.Caption=Me.Caption”添加” Fori=0To3 Combo1i.AddItem”否” Combo1i.AddItem”是” Combo1i.ListIndex=0 Nexti ElseIfgintTmode=2Then‘判断是否处于修改状态 Setmrc=ExecuteSqltxtSQLMsgText Ifmrc.EOF=falseThen Withmrc ForintCount=0To3 txtItemintCount=.FieldsintCount NextintCount txtItem4=.Fileds8 Fori=0To3 Combo1i.Additem”否” Combo1i.Additem”是” Combo1i.ListIndex=0 Nexti EndWith txtItem
0.Enabled=False EndIf Me.Caption=Me.caption”修改”EndIfmblChang=False EndSubPrivateSubcmd_Click’用户输入内容完毕后,单击cmdSave按钮触发Click事件 DimintCountAsInteger DimsMegAsString DimMsgTextAsString ForintCount=0To4‘判断是否输入内容 IfTrimtxtItemintCount””=””Then SelectCaseintCounCase0 sMeg=”标准编号” Case1 sMeg=”标准名称” Case2 sMeg=”房间面积” Case3 sMeg=”床位数量” Case4 sMeg=”床位单价” EndSelect sMeg=sMeg”不能为空!” MsgBoxsMegvbOkOnly+vbExclamation”警告” txtItemintCount.SetFocus ExitSub Endif NextintCount‘判断输入内容是否为数字 ForintCount=2To4 IfNotIsNumericTrimtxtItemintCountThen SelectCaseintCount Case2 sMeg=”房间面积” Case3 sMeg=”床位数量” Case4 sMeg=”床位单价” EndSelect sMeg=sMeg”请输入数字!”MsgBoxsMegvbOKOnly+vbExclamation”警告”txtItemintCount.SeFocusExitSub EndIf NextintCount IfgintTmode=1Then‘判断是否有相同ID记录 txtSQL=”select*fromroomtypewheretypeid_=’”TrimtxtItem0”’” Setmrc=ExecuteSQLtxtSQLMsgText Ifmrc.EOF=FalseThen MsgBox“已经存在此标准编号的记录!”vbOKOnly+vbExclamation”警告” txtItem
0.SetFocus ExitSub EndIf Mrc.Close EndIf txtSQL=”select*fromroomtypewheretypeid’”TrimtxtItem0”’andtypename=’”TrimtxtItem1”’” Setmrc=ExecuteSQLtxtSQLMsgText Ifmrc.EOF=FalseThen MsgBox”已经存在相同客房标准的记录!”vbOKOnly+vbExclamation“警告txtItem
1.Setfocus ExitSub EndIf txtSQL=”deletefromroomtypewheretypeid=’”TrimtxtItem0”’”‘删除已有记录 Setmrc=ExecuteSQLtxtSQLMsgText txtSQL=”select*fromroottype”‘添加新记录 Setmrc=ExecuteSQLtxtSQLMsgText mrc.AddNew ForintCount=0To3 mrc.FieldsintCount=TrimtxtItemintCount NextintCount ForintCount=0To3 mrc.FieldsintCount+4=TrimCombo1intCount NextintCount mrc.Fields8=TrimtxtItem4 mrc.Update‘更新数据库 mrc.Close ifgintTmode=1Then‘判断是否属于添加状态 MsgBox“添加纪录成功!”vbOKOnly+vbExclamtion“添加记录” ForintCount=0To4 txtItemintCount=””‘清除已经输入的内容 NextintCount ForintCount=0To3 Combo1intCount.ListIndex=0 NextintCount mblChange=False’判断是否打开窗口 ifflagTeditThen UnloadfrmRoomtype frmRoomtype.txtSQL=“select*fromroomtype” frmRoomtype.Show EndIf ElseIfgintTmode=2Then‘判断是否处于修改状态 UnloadMe IfflagTeditThen UnloadfrmRoomtype EndIf frmRoomtype.txtSQL=”select*fromroomtype” frmRoomtype.Show EndIf EndSubPrivateSubtxtItem_GotFocusIndexAsInteger’文本框获得焦点时触发该事件,即自动选中输入的内容,便于修改txtItemIndex.SelStart=0txtItemIndex.SelLength=LentxtItemIndexEndSubPrivateSubcmdExit_Click’单击按钮cmdExit取消添加信息IfmblChangeAndcmdSave.EnabledThen IfMsgBox“保存当前记录的变化吗?”vbOKCancel+vbExclamation”警告”=vbOKThen‘保存 CallcmdSave_Click EndIfEndIfUnloadMeEndSubPrivateSubtxtItem_KeyDownIndexAsIntegerKeyCodeAsIntegerShift_AsInteger‘输入完内容,单击回车键将自动进入下一个文本框,触发文本框的Keydown事件 EnterToTabKeyCodeEndSub(4)修改客房标准窗体的创建PrivateSubFrom_LoadShowTitleShowDataflagTedit=TrueEndSubPrivateSubShowTitle‘调用showTitle函数,显示表头DimiAsIntegerWithmsgList .Cols=10 .TextMatrix01=”标准编号” .TextMatrix02=”标准名称” .TextMatrix03=”房间面积” .TextMatrix04=”床位数量” .TextMatrix05=”是否有空调” .TextMatrix06=”是否有电话” .TextMatrix07=”是否有电视” .TextMatrix08=”是否有卫生间” .TextMatrix09=”房间单价” .FixedRows=1‘固定表头 Fori=0To9‘设置各列的对齐方式 .ColAlignmenti=0 Nexti .FillStyle=flexFillRepeat‘表头项居中 .Col=0 .Row=0 .RowSel=1 .ColSel=.Cols-1 .CellAlignment=4 .ColWidth0=300‘设置单元大小 .ColWidth1=1000 .ColWidth2=2000 .ColWidth3=2000 .ColWidth4=1000 .ColWidth5=1000 .ColWidth6=1000 .ColWidth7=1000 .ColWidth8=1000 .ColWidth9=1000 .Row=1EndWithEndSubPrivateSubShowData‘调用showData函数,显示记录列DimiAsInteger Setmrc=ExecuteSQLtxtSQLMsgText‘根据需要设置SQL语句,显示需要的记录 WithmsgList .Rows=1 DoWhileNotmrc.EOF .Rows=Rows+1 Fori=1Tomrc.Fields.Count SelectCasemrc.Fieldsi-
1.Type CaseadDBDate .TextMatrix.Rows-1i=Formatmrc.Fieldsi-1”””yyyy-mm-dd” CaseElse .TextMatrix.Rows-1i=mrc.Fieldsi-1”” EndSelect Nexti Mrc.MoveNext Loop EndWith mrc.CloseEndSubPrivateSubmsgList_MouseUpButtonAsIntegerShiftAsIntegerxAsSingleyAsSingle‘选择记录,然后单击鼠标右键,触发MouseUp事件 IfButton=2AndShift=0Then PopupMenufMainFrom.menuRoomtype EndIfEndSubPrivateSubmenuModifyroomtype_Click DimintCountAsInteger IfflagTeditThen ‘判断是否打开记录窗体 IffrmRoomtype.msgList.Rows1Then fintTmode=2‘设置为修改状态 intCount=frmRoomtype.msgList.Row‘记下选择记录 frmRoomtype
1.txtSQL=”select*fromroomtypewheretypeid’”TrimfrmRoomtype.msgList.TextMatrixintCount1”’” frmRoomtype
1.Show Else CallmenuAddroomtype_Click EndIf Else frmRoomtype.txtSQL=”select*fromroomtype” frmRoomtype.Show EndIfEndSubPrivateSubFrom_Resize‘窗体变化时,调整标签和表格位置,使标签处于窗体的最上方,而表格始终处于标签下方 IfMe.WindowStatevbMinimizedAndfMainFrom.WindowStatevbMinimizedThen‘边界处理 IfMe.Scaleheight10*lblTitle.HeightThen ExitSub EndIf IfMe.ScaleWidthlblTitle.Width+lblTitle.Width/2Then ExitSub EndIf lblTitle.Top=lblTitle.Height‘控制控件的位置 lblTitle.Left=Me.Width-lblTitle.Width/2 msgList.Top=lblTitle.Top+lblTitle.Height+lblTitle.Height/2 msgList.Width=Me.ScaleWidth-200 msgList.Left=Me.ScaleLeft+100 msgList.Height=Me.ScaleHeight-msgList.Top-200 EndIfEndSub(5)删除客房标准PrivateSubmenuDeleteroomtype_Click DimtxtSQLAsString DimintCountAsInteger DimmrcAsADODB.Recordset DimMsgTextAsString IfflagTeditThen‘判断是否打开记录窗体 IffrmRoomtype.msgList.Rows1Then IfMsgBox“真的要删除这条文件记录么?”,vbOKCancel+vbExclamation”警告”=vbOKThen intCount=frmRoomtype.msgList.Row txtSQL=”deletefromroomtypewheretypeid’”TrimfrmRoomtype.msgList.TextMatrixintCount1”’” Setmrc=ExecuteSQLtxtSQLMsgTextUnloadfrmRoomtype‘关闭记录窗体 frmRoomtype.txtSQL=”select*fromroomtype”‘重新选择所有记录 frmRoomtype.Show EndIf EndIf EndIfEndSub(6)客房信息管理模块的创建 客房信息管理模块主要实现如下功能 ·添加客房信息 ·修改客房信息 ·删除客房信息 ·查询客房信息 具体实现代码如下PrivateSubFrom_Load‘载入窗体时,自动添加客房信息种类 DimsSqlAsString DimintCountAsInteger DimMsgTextAsString DimmrccAsADODB.Recordset IfgintRmode=1Then‘判断是否处于添加状态 Me.Caption=me.Caption“添加” txtSQL=”selectDISTINCTtypenamefromroomtype” Setmrc=ExecuteSQLtxtSQLMsgText IfNotmrc.EOFThen DoWhileNotmrc.EOF cboItem
0.AddItemTrimmrc.Fields0 mrc.MoveNext Loop cboItem
0.ListIndex=0‘显示记录内容 Else MsgBox“请先进行客房标准设置!”vbOKOnly+vbExclamation“警告” cmdSave.Enabled=False ExitSub EndIf mrc.Close ElseIfgintRmode=2Then‘判断是否处于修改状态 Setmrcc=ExecuteSQLtxtSQLMsgText‘设置SQL语句显示当前选择记录 Ifmrcc.EOF=FalseThen Withmrcc txtItem0=.Fields0 ForintCount=1To2 IfNotIsNull.FieldsintCount+1Then‘判断内容是否为空 txtItemintCount=.FieldsintCount+1 EndIf NextintCount txtItem3=.Fields5 txtSQL=”selectDISTINCTtypenamefromroomtype” Setmrc=ExecuteSQLtxtSQLMsgText IfNotmrc.EOFThen DoWhileNotmrc.EOF cboItem
0.AddItemTrimmrc.Fields0 mrc.MoveNex Loop cboItem
0.ListIndex=0 Else MsgBox“请先进行客房标准设置!”vbOKOnly+vbExclamation“警告” cmdSave.Enabled=False ExitSub EndIf mrc.Close EndWith EndIf mrcc.Close Me.Caption=Me.Caption“修改” EndIf mblChange=FalseEndSubPrivateSubcmdSave_Click‘单击保存按钮触发事件 DimintCountAsInteger DimsMegAsString DimmrccAsADODB.Recordset DimMsgtextAsString ForintCount=0To3 IfTrimTxtItemintCount””=””Then SelectCaseintCount Case0 sMeg=“客房编号” Case1 sMeg=“客房位置” EndSelect sMeg=sMeg“不能为空!” MsgBoxsMegvbOKOnly+vbExclamation“警告” txtItemintCount.SetFocus ExitSub EndIf NextintCount IfgintRmode=1Then‘判断是否有重复记录 txtSQL=”select*fromroomswhereroomNO=‘”TrimtxtItem0”’” Setmrc=ExecuteSQLtxtSQLmsgText Ifmrc.EOF=FalseThen MsgBox“已经存在此客房编号的记录!”vbOKOnly+vbExclamation“警告” txtItem
0.SetFocus ExitSub EndIf mrc.Close EndIf IfgintRmode=2Then‘判断是否处于修改状态 txtSQL=”deletefromroomswhereroomNO=‘”TrimtxtItem0”’” Setmrc=ExecuteSQLtxtSQLMsgText EndIf txtSQL=”select*fromrooms”‘再加入新记录 Setmrc=ExecuteSQLtxtSQLMsgText mrc.AddNew‘为数据库对象添加记录 mrc.Fields0=TrimtxtItem0 mrc.Fields1=TrimtxtItem0 ForintCount=1To2 IfTrimtxtItemintCount””=””Then mrc.FieldsintCount+1=Null Else mrc.FieldsintCount+1=TrimtxtItemintCount EndI NextintCount mrc.Fields4=”” mrc.Fields5=TrimtxtItem3 mrc.Update mrc.Close IfgintRmode=1Then ForintCount=0To3 txtItemintCount=”” NextintCount mblChange=False IfflagReditThen UnloadfrmRoom frmRoom.txtSQL=”select*fromrooms”‘重新显示数据 frmRoom.Show EndIf ElseIfgintRmode=2Then UnloadMe IfflagReditThen UnloadfrmRoom EndIf frmRoom.txtSQL=”select*fromrooms” frmRoom.Show EndIfEndSub·修改客房信息PrivateSubmenuModifyroom_Click‘选择修改房间信息,触menuModifyroom的Click事件程序判断为修改状态后,首先删除原有记录,然后把新内容加入到数据库中 DimintCountAsInteger IfflagReditThen‘判断记录窗体是否打开 IffrmRoom.msgList.Rows1Then‘判断客房信息列表内容是否为空 gintRmode=2‘设置为修改状态 intCount=frmRoom.msgList.Row‘纪录当前记录位置frmRoom
1.txtSQL=”select*fromroomswhereroomNO=’”TrimfrmRoom.msgList.TextMatrixintCount1”’”frmRoom
1.Show Else CallmenuAddroom_Click‘添加记录 EndIfElse frmRoom.txtSQL=”select*fromrooms” frmRoom.ShowEndIfEndSub·删除客房信息PrivateSubmenuDeleteroom_Click DimtxtSQLAsString DimintCountAsInteger DimmrcAsADODB.Recordset DimMsgTextAsString IfflagTeditThen IffrmRoom.msgList.Rows1Then‘判断客房信息列表内容是否为空 IfMsgBox“真的要删除这条文件记录么?”vbOKCancel+vbExclamation“警告”=vbOKThen intCount=frmRoom.msgList.Row‘记载当前记录位置 txtSQL=”deletefromroomswhereroomNO=‘”TrimfrmRoom.msgList.TextMatrixintCount1”’” Setmrc=ExecuteSQLtxtSQLMsgText‘执行删除操作 UnloadfrmRoom frmRoom.txtSQL=”select*fromrooms” frmRoom.Show EndIf EndIf EndIfEndSub·查询客房信息PrivateSubFrom_Load‘载入窗体时,将自动加入所有记录的入库时间 DimiAsInteger DimjAsInteger DimsSqlAsString DimtxtSQLAsString DimMsgTextAsString DimmrcAsADODB.Recordset txtSQL=”selectDISTINCTtypenamefromroomtype”‘初始化客房种类 Setmrc=ExecuteSQLtxtSQLMsgText IfNotmrc.EOFThen DoWhileNotmrc.EOF Combo
1.AddItemTrimmrc.Fields0 Mrc.MoveNext Loop Combo
1.ListIndex=0 Else MsgBox“请先进行客房标准设置!”vbOKOnly+vbExclamation”警告” ExitSub EndIf mrc.CloseEndSubPrivateSubcmdOK_Click‘设置完查询内容和方式后,单击cmdOk按钮查询 DimsQSqlAsString IfchkItem
0.Value=vbCheckedThen sQSql=”roomNO=’”TrimtxtItem0”””’” EndIf IfchkItem
1.Value=vbCheckedThen IfTrimsQSql””=””Then sQSql=”roomtype=’”TrimCombo1”””’ Else sQSql=sQSql”androomtype=’”TrimCombo1”””’” EndIf EndIf IfTrimsQSql=””Then MsgBox“请设置查询条件!”vbOKOnly+vbExclamation“警告” ExitSub Else IfflagReditThen UnloadfrmRoom EndIf frmRoom.txtSQL=”select*fromroomswhere”sQSql frmRoom.Show EndIf Me.HideEndSub宾馆管理系统客房管理挂账管理日结退出系统设置客房设置客房查询房态查看挂账查询客户结款…客房销售统计住宿管理查询统计…住宿登记…操作员设置客房信息实体房间号配置………..营业时间挂帐信息实体挂帐单位住宿年金额…………证件号住宿信息实体凭证号码姓名………..客房类型客房信息标准客房登记客房信息管理订房订房信息管理结算信息管理客房结算闪动界面登录窗体用户密码是否正确主窗体注册窗体信息是否完整住宿管理客房管理日结系统设置退出退出系统是否退出退出开始挂帐管理查询统计。