第一篇:酒店管理系统课程设计报告
课程设计报告
课程名称: 项目名称: 院 系: 专 业: 姓 名: 班 级: 学 号: 指导教师: 设计地点:
基于ASP.net 2.0的Web应用开发
酒店管理系统
计算机科学与工程学院
计算机科学与技术
王晨光 计科121 090312114 王剑
九章楼 N6-109
开课时间: 2014 至 2015 学年第 1 学期
常熟理工学院计算机科学与工程学院 制
目录
一、前言.........................................................................................................................1 1.1、系统开发背景...................................................................................................1 1.2、研究目的及意义................................................................................................1 1.3、系统开发工具...................................................................................................1
二、系统分析..................................................................................................................1 2.1、需求分析..........................................................................................................1 2.1.1、系统主要功能.........................................................................................1 2.1.2、系统实现目标.........................................................................................2 2.1.3、系统性能需求.........................................................................................2 2.2、可行性分析......................................................................................................2 2.2.1、技术可行性............................................................................................2 2.2.2、经济可行性............................................................................................2 2.2.3、操作可行性............................................................................................2
三、系统设计..................................................................................................................2 3.1、系统功能结构设计............................................................................................2 3.2、数据库设计......................................................................................................3 3.2.1、数据库E-R图设计..................................................................................3 3.2.2、数据库的逻辑设计..................................................................................5
四、系统详细设计与实现..................................................................................................7 4.1、用户登录..........................................................................................................7 4.2、系统主界面......................................................................................................7 4.3、客房类型管理...................................................................................................8 4.4、客房经营管理...................................................................................................9 4.5、客户信息检索.................................................................................................12 4.6、客房经营状况分析..........................................................................................12
五、课程设计小结..........................................................................................................13
一、前言 1.1、系统开发背景 随着当今世界经济和计算机的飞速发展,酒店在内部实现用户通过电话预约或亲自前往酒店预订客房,服务员人工填写客房预订表进行客房预订的传统模式已经十分落后,满足不了现代人的需要。一个成功的酒店,其经营者不仅要提供高质量的服务水平和服务质量,还要提供最完善的设备和先进的技术。从而提高客房的占有率和回头率,还要有好的工作效率,并严格的控制住成本。在现如今的信息化时代,更重要的是还必须要有一个完善的管理信息系统,便于方便客人和更好的管理酒店。1.2、研究目的及意义 随着计算机网络的发展,Internet技术越来越广泛的应用,网络覆盖的区域不断扩大,给酒店业计算机应用带来了蓬勃发展的机遇。采用全新的计算机网络和管理系统将成为提高酒店管理效率,改善服务水准的重要手段之一。所以酒店入住信息管理系统是酒店经营不可或缺的现代工具。而本系统就是为了实现酒店高效管理而设计的。1.3、系统开发工具 Visual Studio 2013、SQL Server2008、PhotoShop CC Visual Studio 2013是一套完整的开发工具集,用于生成ASP.NET Web应用程序、XML Web Services、桌面应用程序和移动应用程序。Visual Basic、Visual C++和Visual C#全部都是用相同的集成开发环境(IDE)。SQL Server 2008是一个分布式的关系数据库管理系统,具有客户机/服务器体系结构,具有易用性、适合分布式组织的可伸缩性、用于决策支持的数据库仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等优点,是一种应用广泛的数据库管理系统。PhotoShop CC是Adobe公司出品的一个二维图像处理软件,主要用于对图像进行编辑和绘制,对用到的图片进行美工,使系统界面更加美观友好。
二、系统分析 2.1、需求分析 2.1.1、系统主要功能 该系统以酒店订房业务为基础,提供科学有效的管理模式。系统主要功能设计有客房类型管理、客房信息管理、客房经营管理、客房信息检索、经营状况分析等五个部分。1 2.1.2、系统实现目标 系统界面友好美观,操作简单易行; 业务管理信息化,可随时掌握客户入住、客户退租、客房信息等情况; 采用流行的C/S方式,响应速度快,安全性高,扩充方便; 该软件应尽可能地降低使用者的劳动强度,同时提高工作质量和效率。2.1.3、系统性能需求 本着“简单易用”的原则,方便各层次人员的使用; 系统必须稳定可靠,保证营业高峰期时不出现故障。2.2、可行性分析 2.2.1、技术可行性 系统采用了C/S技术结构,使用Microsoft Visual Studio 2013开发软件,数据库服务器使用Microsoft SQL Server 2008数据库,该数据库是目前最方便的流行数据库,能够处理大量的数据。它的活动性、安全性和易用性为数据库编程提供了良好的条件。2.2.2、经济可行性 对于酒店这样的企业来说,开发一个这样的系统是非常必要的,他们完全有能力和资金来负担系统的开发成本。而且,系统开发完成投入使用之后,将大大提高工作效率,减少成本,增加收益。2.2.3、操作可行性 该系统拥有非常简洁的图形界面,并且在某些操作中附有操作说明,即使是对系统毫不了解的人来说,也是很容易接受的。因此,该酒店管理系统在技术、经济、技术上都是可行的。
三、系统设计 3.1、系统功能结构设计 采用本系统可大大减少前台服务人员(系统管理人员)的人数,前台服务员直接掌控整个系统。由于采用计算机操作,可以大大提高操作速度。本酒店管理系统主要包括以下五个模块,分别是:客房类型管理、客房信息管理、客房经营管理、客房信息检索、经营状况分析。图3.1为酒店管理系统功能结构: 2
图3.1 酒店管理系统功能结构
3.2、数据库设计 关系模型是目前应用最广泛、技术最成熟的一种数据库模型,其特点是概念简单清晰、易于被用户掌握和接受,有严格的数学基础和关系数据理论,能极大的简化数据库开发和维护工作,深受广大用户的欢迎,是现代计算机信息系统和计算机应用系统的基础和核心。3.2.1、数据库E-R图设计 酒店管理系统的核心功能主要设计7个表,分别是:RoomsCategory(客房类型表)、RoomsInfo(客房信息表)、CustomerInfo(客户信息表)、RoomOperation(客房操作表)、RoomsStatus(客房状态表)、History(历史记录表)、UserInfo(用户信息表)。RoomsCategory(客房类型):主要存储房间编号、房间名、大小、床的数量、价格、空调数、电视数。其E-R图设计如图3.2所示: 图3.2 客房类型E-R图
RoomsInfo(客房信息): 主要存储房间编号、房间类型、房间位置、房间描述。其E-R图设计3 如图3.3所示: 图3.3 客房信息E-R图 图设计如图3.4所示:
CustomerInfo(客户信息):主要存储客户身份证号、客户姓名、客户电话、客户住址。其E-R图3.4 客户信息E-R图
RoomsStatus(客房状态):主要存储房间编号、房间状态。其E-R图设计如图3.5所示: 图3.5 客房状态E-R图 E-R图设计如图3.5所示:
History(历史记录):主要存储入住时间、退租时间、房间编号、总消费、客户身份证号。其
图3.5 历史记录E-R图
RoomOperation(客房操作):主要存储房间编号、入住时间、客户身份证号、房间状态标记。其E-R图设计如图3.6所示:
图3.6 客房操作E-R图
UserInfo(用户信息):主要存储用户编号、姓名、密码、邮箱、地址、电话。其E-R图设计如图3.7所示:
图3.7 用户信息E-R图 3.2.2、数据库的逻辑设计 RoomsCategory(客房类型表)如表1所示:
表1 客房类型表
RoomsInfo(客房信息表)如表2所示: 5
表2 客房信息表 CustomerInfo(客户信息表)如表3所示:
表3 客户信息表
RoomOperation(客房操作表)如表4所示: 表4 客房操作表
RoomsStatus(客房状态表)如表5所示: 表5 客房状态表 History(历史记录表)如表6所示:
表6 历史记录表 UserInfo(用户信息表)如表7所示:
表7用户信息表 6
四、系统详细设计与实现 4.1、用户登录 用户通过输入用户编号和密码登录系统,如果密码不正确,则不允许用户登录到系统。图4.1为用户登录流程图,图4.2为用户登录界面。
图4.1 用户登录流程图
图4.2 用户登录主界面
4.2、系统主界面 用户登录成功后,进入系统主界面,主界面分为三个部分:顶端酒店照片页面、左侧导航栏和右侧显示操作界面。当点击左侧导航栏名称的时候,不需要重新打开新的窗口,而是在右侧的显示栏中显示内容。图4.3为系统主界面。7
图4.3 系统主界面
4.3、客房类型管理 用户在成功登录系统后,点击【客房经营管理】,在右侧显示栏中就会显示客房的信息和对客房进行修改的操作,有添加、编辑和删除客房信息的操作。点击【编辑】按钮,可以对客房的信息进行修改;点击【删除】按钮,可以将选中的客房从数据库中删除掉;点击【添加房间】可以添加数据库中不存在的客房类型。图4.4为客房类型管理流程图,图4.5为客房类型管理界面,图4.6为添加客房界面。图4.4 客房类型管理流程图
图4.5 客房类型管理界面
图4.6 添加客房界面
4.4、客房经营管理 系统登录成功后,点击导航栏中的【客房经营管理】,根据客户的需求,查询相应的客房是否有入住信息。如果有,则告知客户本客房已满,请选择其它的客房;如果没有,则进行订房操作。当用户接收到客户的退房申请时,用户根据客户的信息查找入住的客房,登记结算并进行退房。图4.7为客房经营管理流程图,图4.8为客房经营管理界面,图4.9为订房界面,图4.10为退房界面。
图4.7 客房经营管理流程图
图4.8 客房经营管理界面
图4.9 订房界面 10
图4.10 退房界面
当用户点击【退房】时,系统会弹出【确定要退房?】对话框进行验证,点击【取消】则不会执行退房操作;点击【确定】后,则执行退房操作,系统弹出【退房成功】对话框,点击【确定】,则退房成功,并显示消费总金额。图4.11为【确定要退房】对话框,图4.12为【退房成功】对话框,图4.12为退房信息结算界面。图4.11 【确定要退房】对话框 图4.12 【退房成功】对话框
图4.12 退房信息结算界面 11
4.5、客户信息检索 系统登录成功后,点击左侧导航栏中的【客户信息检索】,右侧显示出检索客户信息界面,可以利用“姓名”、“房间号”、“时间段”等关键字对客户入住的信息进行查询。图4.13为客户信息检索流程图,图4.14为按姓名查询客户信息,图4.15为按时间段查询客户信息。图4.13为客户信息检索流程图
图4.14 按姓名查询客户信息
图4.15 按时间段查询客户信息
4.6、客房经营状况分析 系统登录成功后,点击左侧导航栏中的【客房经营状况分析】,右侧显示出客房经营状况的界面,选择相应的时间段,点击【总收入】按钮,就可以显示出选定时间段内的收入,点击【客流量】按钮,12 就可以显示出选定时间段内的入住人数。点击【收入显示】按钮,可以显示出【标准间】、【商务套房】、【情侣套房】三种客房类型各自的收入和在总收入所占的比例。图4.16为客房经营状况分析流程图,图4.17为客房经营状况分析界面。图4.16 客房经营状况分析流程图
图4.17 客房经营状况分析界面
五、课程设计小结 本次课程设计是基于ASP.net进行Web程序开发,开发的项目系统是酒店管理系统。本次的课程设计,由于自身能力有限,难免会有一些遗漏和疏忽的地方,系统有时也不稳定,有些功能还没有真正的实现,测试运行的时候也有一些问题的存在。通过这次对酒店管理系统的设计与开发,让发更加认识到了自身学习的不足之处,但也让我对Web编程语言的了理解和应用有了更深的认识。课程设计之后,感受到了动手能力有所提高,并能够结合实际存在的问题在专业领域内进行更深人的学习。同时,通过本次的课程设计让我了解到,仅学习书本上的知识是不够的,还要有较强的实践动手能力。因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好地理解与掌握书本上的知识。
第二篇:酒店管理系统课程设计
软件开发环境与工具
课程设计
实验题目:酒店管理系统 指导老师:南丽丽
专业班级:计算机科学与技术系1105班 姓 名:陈阿艳(2011100516)
王媛(2011100529)
闫丽颖(2011100503)樊建红(2011100515)2013年 12月13日
目录
第一章…………………………………前言
1.1…………………………………………………选题背景
1.2…………………………………………………课题研究的目的和意义
1.3…………………………………………………本文的研究内容
1.4…………………………………………………国内外现状
第二章…………………………………开发环境及工具介绍 2.1………………………………………………..Visual Basic.NET简介
2.2…………………………………………............SQL Server2005 第三章…………………………………系统分析
3.1…………………………………………………..可行性分析
3.2…………………………………………………...需求分析
3.2.1…………………….酒店管理部分
3.2.1.1……………..客户管理
第四章…………………………………数据库设计
4.1…………………………………………………..数据库设计截图 4.2………………………………………………….权限设置 4.3………………………………………………….客户信息表 4.4………………………………………………….房态表 4.5………………………………………………….结算表
第五章…………………………………系统实现
5.1…………………………………………………登陆
5.2…………………………………………………客户入住
5.3…………………………………………………客户结算退房
5.4…………………………………………………以“老板”为例,展示系统功能
第六章…………………………………主要代码 第七章…………………………………总结
第1章 前 言
1.1 选题背景
酒店业是一个前景广阔而又竞争激烈的行业。改革开放以来,我国的酒店业迅速发展,已经成为一个具有相当规模的产业。由于我国的旅游业迅速发展,通过调查,我国在2020年将成为世界上第四大旅游国家;同时我国加入世界贸易组织,酒店业将完全开放,这个时候,我国的酒店业将面临着前所未有的机遇和挑战。但是,现在甚至还有一些酒店还停留在由人工操作和管理阶段,这样已经无法适应当前的发展趋势。因此,要想使酒店的工作质量和效率提高,采用先进的计算机网络 通信技术改变酒店业务模式,实现酒店业务管理的自动化已经成为一种必然。
酒店管理系统采用B/S结构。按照按国家星级宾馆标准化业务程序流式设计,会采用主流开发工具来开发,搭建比较稳定可靠安全的服务端来辅佐客户管理,并且还采用数据库mysql,会通过测试用例来达到测试效果,技术支持会采用轻量级框架struts和hibernate持久化来完成,服务器采用tomcat,通过powerdesigner来设计数据模型为最初业务流程的概念设计阶段和详细设计阶段打好基础[1]。
1.2 课题研究的目的和意义
对酒店整个来说,对酒店经营状况起决定作用的是酒店的服务管理水平。如何利用先进的管理手段来提高酒店的管理水平成为酒店业务发展的当务之急。面对信息时代的机遇和挑战,利用科技手段提高酒店的管理无疑是一条行之有效的途径。虽然计算机管理并不是酒店管理走向成功的关键元素,但它可以最大限度地发挥准确、快捷、高效等作用,对酒店的业务管理提供强有力的支持。因此,采用全新的计算机网络和酒店业务管理系统,已成为提高酒店的管理效率,使作业人员与管理系统之间灵活互动,实现流畅的工作流衔接,帮助酒店有效地进行 3 业务管理,释放最大价值。酒店业务管理系统在达到在节省人力资源成本的同时,可以提高业务效率,并能够及时、准确、迅速地满足顾客服务的需求[2]。
1.3 本文的研究内容
课程设计选题《酒店管理系统》主要研究了:酒店业务的管理(划分为,登陆界面部分,查询界面部分,入住界面部分,退房界面部分)。
1.4 国内外现状
随着我国经济体制改革的不断深化和我国经济的快速发展,我国人民的收入不断提高,消费观念也有提高,对服务质量的要求也有很大的提高。各地把旅游业当作本 地经济发展的重要支柱之一。酒店作为人们食宿、娱乐、休闲的场所而得到了快速的发展。社会上也成立了各种类型,不同规模的酒店服务企业。如何为客户提供更 加准确及时的服务,成为各个酒店竞争关键。所以酒店业务信息化建设就成为了客户衡量酒店提供商服务标准的一个准则,信息系统成为了基础。
随着Internet技术的进一步发展和普及,不能很好的适应世界经济发展的形式和我国国民经济建设的需要,市场现有的产品化的酒店业务软件系统在不断发 展中的酒店的需求。基于WEB的酒店管理系统的总体设计目标能够建立完善、高效、可靠的酒店业务信息系统,为酒店提供良好的信息环境[3]。
第2章 开发环境及工具介绍
2.1Visual Basic.NET简介
Visual Basic.NET通常缩写为VB.NET,在某些特定情况下也直接简称VB,比如在.NET这个大话题下或者与其他.NET语言一起讨论的时候。
Visual Basic.NET属Basic系语言,其语法特点是以极具亲和力的英文单词为基础标识,以及与自然语言极其相近的逻辑表达,有时候你会觉得写VB.NET代码就好像在写英文句子一样,从这个角度来说,VB.NET似乎是最高级的一门编程语言,当然在Basic系语言中VB.NET也确实是迄今为止最强大的一门编程语言。
Visual Basic.NET的应用范围包括windows桌面、web以及当下突然觉醒的正在奋力追赶的第三大移动平台Windows phone。
2.2 SQL Server2005 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在UNⅨ操作系统上的应用。
Microsoft SQL Server 2005 是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理。Microsoft SQL Server 2005数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。
第3章
系统分析
3.1 可行性分析
随着旅游业的发展,酒店、餐饮娱乐行业日趋发达,引入全方位的电脑服务和电脑管理日益流行。同时,酒店和餐厅娱乐业引入电脑服务和管理也取得了优良的经济 效益和社会效益。为此,国家建设部已于最近作出明确规定:凡星级酒店在项目审批时,其设计方案必须包括电脑管理系统,否则不予立项。可见,酒店管理电脑化 势在必行。酒店管理系统将先进的电脑技术与现代酒店服务管理完美地结合起来,实现了住宿、餐饮、娱乐全新概念的服务和管理方式。
一个成熟的酒店管理系统不仅仅是记录酒店客人的信息,提供查询,报表打印等一系列简单的工作,它能让工作人员从烦琐的手工操作中解脱,并且酒店管理系统本 身就代表着一种管理方法。随着它的深入,将带动企业的运做,为管理和决策提供支持。为了达到这个要求,它必须依靠高起点的硬件环境和软件开发工具来保证系 统的稳定和正常运行。酒店电脑系统要求24小时连续运行,数据量大,可靠性要求高,因此整个电脑系统供电采用专线方式,加配UPS(不间断供电系统),并合理接地,以便保障整套系统的正常运行[7]。
3.2 需求分析
系统需对用户登录进行管理。使用各功能模块时,系统应验证用户身份的有效性,否则要求用户登录。另外,允许用户对自己的密码进行修改。
系统应提供客房的分类管理功能,可分类制订客房面积、价格、是否配备空调等客房类型,对不同标准的客房进行有效管理。系统可实现对客房信息的添加、删除以及修改。
在进行入住/退房管理时,系统可以根据客房当前的状态自动提示可用服务(入住/退房)。如果客房没有客人入住,则该客房的可用服务为“入住”;否则,可用服务为“退房”。
系统的客户端在Windows平台下运行,服务器端可在Windows平台或UNIX平台下运行。系统还需要有较好的安全性和可扩展性[8]。
需求分析是从客户的需求中提取出软件系统能够帮助用户解决的业务问题,通过对用户业务问题的分析,规划出系统的功能模块,即定义用例。这个步骤是对理解需求的升华,直接关系到该系统的质量。
整个系统可以分为2大部分。酒店网站部分(客户服务网站)和酒店管理部分(管理员部分)。本系统只做了有关酒店管理的一部分。3.2.1 酒店管理部分
1.客房管理: 预订客房管理、客房查询、退房管理。
前台服务员的主要职能是负责订房和退房,以及查询入住的客户信息。所有该角色只可以使用部分功能,包括预定管理、客户信息查询,入住管理,退房管理功能。
第四章 数据库设计
4.1 数据库设计截图
4.2权限设置
4.3客户信息表
4.4房态表
4.5结算表
第5章 系统实现
5.1登陆
分别用三种身份登陆,所得到的权限也就不同
老板经理员工
5.2客户入住(通过添加客户信息,自动计算应付房费)
5.3客户结算退房
5.4以“老板”为例,展示系统功能
(1)查询房态
住着人的房间有:
通过房间号查某间房的房态
(2)职工管理
添加职工
设置权限
第登陆
Public Class Login
Private Sub Btn_Login_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Btn_Login.Click
Data_Access.User_info.LoginUser_info.User_id = Me.Txt_Name.Text
Data_Access.User_info.LoginUser_info.User_pwd = Me.Txt_pwd.Text
Dim s As Integer
s = Business_Logic_Layer.Data_Check.User_Check
If s = 1 Then
MsgBox(“欢迎使用假日酒店管理系统”, MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
Main_Form.Show()
Me.Close()
Else
If s =-1 Then
MsgBox(“用户名错误!”, MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
Else
MsgBox(“密码错误!”, MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
End If
End If
End Sub
6章 主要代码
Private Sub Btn_Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Btn_Cancel.Click
Me.Close()
End Sub
Private Sub Login_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles MyBase.Load
End Sub End Class
主界面
Public Class Main_Form
Private Sub Main_Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles MyBase.Load
Call Init_Tree()
End Sub
Public Sub Init_Tree()
Me.TreeV.Nodes.Clear()
Dim s As String
s = “select * from gg_Menu where isStop='0'”
Dim dr As SqlClient.SqlDataReader
dr = myCommon.getData.get_dr(s)
Dim myNode As TreeNode
While dr.Read
myNode = New TreeNode
myNode.Text = dr.Item(“MenuName”)
If Business_logic_layer.Judge.Judge_Auth(dr.Item(“Typeid”))= False Then
Continue While
End If
myNode.Name = dr.Item(“Typeid”)
If dr.Item(“isGroup”)= “0” Then
myNode.Tag = dr.Item(“Form”)
Else
myNode.Tag = “"
End If
If dr.Item(”Parid“)= ”0“ Then
Me.TreeV.Nodes.Add(myNode)
Else
If Me.TreeV.Nodes.Find(dr.Item(”Parid“), True).Length > 0 Then
Me.TreeV.Nodes.Find(dr.Item(”Parid“), True)(0).Nodes.Add(myNode)
End If
End If
End While
dr.Close()
End Sub
Private Sub TreeV_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs)Handles TreeV.AfterSelect
If e.Node.Tag = ”“ Then Exit Sub
Dim formName As String
formName = ”Hotel_Manager.“ & e.Node.Tag
Dim f As Form
'
f = CType(Activator.CreateInstance(Type.GetType(formName)), Form)
f.Show()
f.MdiParent = Me
f.WindowState = FormWindowState.Maximized
End Sub
Private Sub 退出ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles 注Á¡é销¨²ToolStripMenuItem.Click
Data_Access.User_info.LoginUser_info.User_id = ”“
Data_Access.User_info.LoginUser_info.User_name = ”“
Data_Access.User_info.LoginUser_info.User_pwd = ”“
Login.Show()
Me.Close()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Timer1.Tick
Me.Tool_lb_name.Text = ”登陆者“ & Data_Access.User_info.LoginUser_info.User_name
Me.Tool_lb_date.Text = ”日期“ & Format(Now, ”yyyy-MM-dd“)
Me.Tool_lb_time.Text = ”时间“ & Format(Now, ”long time“)
End Sub
Private Sub 退出ToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles 退出ToolStripMenuItem1.Click
Me.Close()
End Sub End Class 入住
Public Class Ruzhu_login
Private Sub Ruzhu_login_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles MyBase.Load
Me.Txt_no.Text = myCommon.getNewCode.get_NewCode
Call Init_Cbox()
End Sub
Private Sub Cbox_type_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Cbox_type.SelectedIndexChanged
Dim s As String
s = ”select * from Fang where Fang_state='空' and Fang_type='“ & Me.Cbox_type.Text & ”'“
Dim dr As SqlClient.SqlDataReader
dr = myCommon.getData.get_dr(s)
Cbox_fang_no.Items.Clear()
While dr.Read
Cbox_fang_no.Items.Add(dr!Fang_num)
Txt_yajin.Text = dr!Fang_yajin
Txt_danjia.Text = dr!Fang_price
End While
dr.Close()
End Sub
Private Sub Btn_ok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Btn_ok.Click
Dim s As String
Dim ID_Card As String
ID_Card = Me.Txt_ID.Text
Dim cAge As Integer
cAge = myCommon.getAge.get_age(ID_Card)
Dim stoptime As String
stoptime = ”0000/00/00 00:00:00“
s = ”insert into Customer values('“ & Txt_no.Text & ”','“ & Txt_name.Text & ”','“ & Cbox_sex.Text & ”','“ & cAge.ToString & ”','“ & Txt_ID.Text _
& ”','“ & Cbox_type.Text & ”','“ & Cbox_fang_no.Text & ”','“ & Now & ”','“ & stoptime & ”','“ & Txt_yajin.Text _
& ”','“ & Txt_days.Text & ”','“ & Txt_yingjiao.Text & ”','“ & Txt_yijiao.Text & ”')“
Dim s2 As String
s2 = ”update Fang set Fang_state='满' where Fang_num='“ & Cbox_fang_no.Text & ”'“
Try
myCommon.getData.cmd_ex(s)
myCommon.getData.cmd_ex(s2)
MsgBox(”添加成功!“, MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
myCommon.getNewCode.getNewSaveCode()
Catch ex As Exception
MsgBox(”添加失败!“ & ex.Message, MsgBoxStyle.Information + MsgBoxStyle.OkOnly)15
End Try
End Sub
Private Sub Btn_jisuan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Btn_jisuan.Click
Me.Txt_yingjiao.Text = Txt_danjia.Text * Txt_days.Text + Txt_yajin.Text
End Sub
Private Sub Btn_add_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Btn_add.Click
Me.Txt_no.Text = myCommon.getNewCode.get_NewCode
Txt_name.Text = ”“
Cbox_sex.Items.Clear()
Txt_ID.Text = ”“
Cbox_type.Items.Clear()
Cbox_fang_no.Items.Clear()
Txt_yajin.Text = ”“
Txt_days.Text = ”“
Txt_yingjiao.Text = ”“
Txt_yijiao.Text = ”“
Txt_address.Text = ”“
Txt_danjia.Text = ”“
Call Init_Cbox()
End Sub
Sub Init_Cbox()'为性别和房间类型进行添加
Cbox_sex.Items.Add(”男“)
Cbox_sex.Items.Add(”女“)
Cbox_type.Items.Add(”单人间“)
Cbox_type.Items.Add(”双人间“)
End Sub End Class 结算
Public Class Jiesuan
Dim str As String
Private Sub Jiesuan_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles MyBase.Load
Call Btn_show_Click(sender, e)
End Sub
Private Sub Btn_jiesuan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Btn_jiesuan.Click
Dim s As String
Dim yajin As String
Dim yijiao As String
Dim str As String
str = Now
str = Mid(str, 1, 10)
s = ”select yajin,yijiao from Customer where Start_time like '“ & str & ”%' “
Dim dr As SqlClient.SqlDataReader
dr = myCommon.getData.get_dr(s)
While dr.Read
yajin = dr!yajin + yajin
yijiao = dr!yijiao + yijiao
End While
dr.Close()
s = ”select count(*)from Jiesuan where Riqi like '“ & str & ”%' “
Dim conn As New SqlClient.SqlConnection
conn.ConnectionString = myCommon.getstrconn.get_strconn
Dim cmd As New SqlClient.SqlCommand
cmd.Connection = conn
cmd.CommandType = CommandType.Text
cmd.CommandText = s
conn.Open()
If CType(cmd.ExecuteScalar(), Integer)= 0 Then
Try
s = ”insert into Jiesuan values('“ & str & ”','“ & yijiao & ”','“ & yajin & ”','“ & yijiaoyajin & ”' where Riqi='“ & str & ”'“
myCommon.getData.cmd_ex(s)
Catch ex As Exception
MsgBox(”结算时出错误!“)
End Try
End If
End If
s = ”select * from Jiesuan where Riqi='“ & str & ”'“
Dim ds As DataSet
ds = myCommon.getData.get_ds(s)
DGView_jiesuan.DataSource = ds.Tables(0)
End Sub
Private Sub Btn_show_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Btn_show.Click
Dim s As String
s = ”select * from Jiesuan“
Dim ds As DataSet
ds = myCommon.getData.get_ds(s)
DGView_jiesuan.DataSource = ds.Tables(0)
End Sub
Private Sub Btn_jingli_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Btn_jingli.Click
Dim str As String
str = Now
str = Mid(str, 1, 10)
If Data_Access.User_info.LoginUser_info.User_job = ”经理“ Then
Dim s As String
s = ”update Jiesuan set jinglishenhe='“ & Data_Access.User_info.LoginUser_info.User_name & ”' where Riqi='“ & str & ”'“
Try
myCommon.getData.cmd_ex(s)
Call Btn_show_Click(sender, e)
Catch ex As Exception
MsgBox(”审核失败!“)
End Try
Else
MsgBox(”你没有权限!“)
End If
End Sub
Private Sub Btn_laoban_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Btn_laoban.Click
Dim str As String
str = Now
str = Mid(str, 1, 10)
If Data_Access.User_info.LoginUser_info.User_job = ”老板“ Then
Dim s As String
s = ”update Jiesuan set laobanshenhe='“ & Data_Access.User_info.LoginUser_info.User_name & ”' where Riqi='“ & str & ”'“
Try
myCommon.getData.cmd_ex(s)
Call Btn_show_Click(sender, e)
Catch ex As Exception
MsgBox(”审¦核失败!“)
End Try
Else
MsgBox(”你没有权限!“)
End If
End Sub End Class
退房
Public Class Tuifang_login
Dim dv As DataView
Private Sub Btn_chaxun_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Btn_chaxun.Click
Dim str As String
str = ”select * from Customer_Fang where Fang_no='“ & Me.Txt_fang_no.Text & ”'“
Dim ds As DataSet
ds = myCommon.getData.get_ds(str)
dv = ds.Tables(”temp“).DefaultView
DGView_tuifang.DataSource = dv
End Sub
Private Sub Btn_Tuifang_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Btn_Tuifang.Click
Dim s As String
s = ”update Fang set Fang_state='空?' where Fang_num='“ & dv.Item(0).Item(”Fang_no“).ToString & ”'“
Dim s2 As String
s2 = ”update Customer set yingjiao='“ & dv.Item(0).Item(”yingjiao“)dv.Item(0).Item(”yajin“)& ”' where Customer_no='“ & dv.Item(0).Item(”Customer_no“)& ”'“
Try
myCommon.getData.cmd_ex(s)
myCommon.getData.cmd_ex(s2)
MsgBox(”退房成功!“, MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
Catch ex As Exception
MsgBox(”退房失败!“ & ex.Message, MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
End Try
End Sub
Private Sub Panel2_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs)Handles Panel2.Paint
End Sub
查询
Private Sub Btn_Customer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Btn_Customer.Click
Show_all_coustomer()
End Sub
Private Sub Btn_Chaxun_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Btn_Chaxun.Click
Dim str As String
If Chaxun_Fang.Text <> ”“ And Chaxun_name.Text <> ”“ Then
str = ”Fang_no='“ & Chaxun_Fang.Text & ”' and Customer_name='“ & Chaxun_name.Text & ”'“
ElseIf Chaxun_Fang.Text <> ”“ And Chaxun_name.Text = ”“ Then
str = ”Fang_no='“ & Chaxun_Fang.Text & ”'“
ElseIf Chaxun_Fang.Text = ”“ And Chaxun_name.Text <> ”“ Then
str = ” Customer_name='“ & Chaxun_name.Text & ”'“
End If
Call Show_all(str)
End Sub
Private Sub Panel2_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs)Handles Panel2.Paint
End Sub End Class
管理
Public Class cManager
Sub show_Role_Auth()
Dim s As String
s = ”select * from Role_Auth_V where Role_Name<>'老板'“
Dim ds As DataSet
ds = myCommon.getData.get_ds(s)
DGView_Role_Auth.DataSource = ds.Tables(”temp“)
End Sub
Private Sub cManager_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles MyBase.Load
Dim s As String
s = ”select * from Role_Auth_V where Role_Name<>'老板'“
Dim ds As DataSet
ds = myCommon.getData.get_ds(s)
DGView_Role_Auth.DataSource = ds.Tables(”temp“)
Dim dr As SqlClient.SqlDataReader
s = ”select * from gg_Menu where MenuName<>'权限T'and MenuName<>'权限管理'“
dr = myCommon.getData.get_dr(s)
While dr.Read
Cbox_Auth.Items.Add(dr.Item(”MenuName“))
End While
dr.Close()
s = ”select * from Role where Role_Name<>'老板'“
dr = myCommon.getData.get_dr(s)
While dr.Read
Cbox_Role.Items.Add(dr.Item(”Role_Name“))
End While
dr.Close()
End Sub
Private Sub DGView_Role_Auth_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs)Handles DGView_Role_Auth.CellClick
Me.Cbox_Role.Text = DGView_Role_Auth.CurrentRow.Cells.Item(0).Value.ToString
Me.Cbox_Auth.Text = DGView_Role_Auth.CurrentRow.Cells.Item(1).Value.ToString
End Sub
Private Sub Btn_add_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Btn_add.Click
Dim s As String
Dim RoleID As String
Dim TypeID As String
s = ”select Role_id from Role where Role_name='“ & Cbox_Role.Text & ”'“
Dim dr As SqlClient.SqlDataReader
dr = myCommon.getData.get_dr(s)
While dr.Read
RoleID = dr!Role_ID
End While
dr.Close()
s = ”select TypeId from gg_Menu where MenuName='“ & Cbox_Auth.Text & ”'“
dr = myCommon.getData.get_dr(s)
While dr.Read
TypeID = dr!TypeId
End While
dr.Close()
s = ”insert into Role_Auth values('“ & RoleID & ”','“ & TypeID & ”')“
Try
myCommon.getData.cmd_ex(s)
MsgBox(”添加成功!“, MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
Catch ex As Exception
MsgBox(”添加失败!“ & ex.Message, MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
End Try
Call show_Role_Auth()
End Sub
Private Sub Btn_del_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Btn_del.Click
Dim s As String
Dim RoleID As String
Dim TypeID As String
s = ”select Role_id from Role where Role_name='“ & Cbox_Role.Text & ”'“
Dim dr As SqlClient.SqlDataReader
dr = myCommon.getData.get_dr(s)
While dr.Read
RoleID = dr!Role_id
End While
dr.Close()
s = ”select TypeId from gg_Menu where MenuName='“ & Cbox_Auth.Text & ”'“
dr = myCommon.getData.get_dr(s)
While dr.Read
TypeID = dr!TypeId
End While
dr.Close()
s = ”delete from Role_Auth where Role_ID='“ & RoleID & ”'and Type_Id='“ & TypeID & ”' “
Try
myCommon.getData.cmd_ex(s)
MsgBox(”删除成功!“, MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
Catch ex As Exception
MsgBox(”删除失败!“ & ex.Message, MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
End Try
Call show_Role_Auth()
End Sub
Private Sub DGView_Role_Auth_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs)Handles DGView_Role_Auth.CellContentClick
End Sub End Class 22
员工管理
Public Class Staff_Manager
Private Sub Btn_show_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Btn_show.Click
Dim s As String
s = ”select * from Staff where Staff_job='职员“
Dim ds As DataSet
ds = myCommon.getData.get_ds(s)
DGView_staff.DataSource = ds.Tables(0)
End Sub
Private Sub Btn_add_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Btn_add.Click
Dim s As String
s = ”insert into Staff values('“ & Txt_no.Text & ”','“ & Txt_name.Text & ”','“ & Cbox_sex.Text & ”','“ & Txt_pwd.Text _
& ”','职员'“ & Txt_address.Text & ”','“ & Txt_tel_no.Text & ”')“
Try
myCommon.getData.cmd_ex(s)
MsgBox(”添加成功!“)
Catch ex As Exception
MsgBox(”添加失败“ & ex.Message)
End Try
End Sub
Private Sub Btn_del_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Btn_del.Click
Dim s As String
s = ”delete from Staff where Staff_no='“ & Txt_no.Text & ”'“
Try
myCommon.getData.cmd_ex(s)
MsgBox(”删除成功!“)
Catch ex As Exception
MsgBox(”删除失败“ & ex.Message)
End Try
End Sub
Private Sub Btn_chaxun_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Btn_chaxun.Click 23
Dim s As String
s = ”select * from Staff where Staff_no='“ & Txt_chaxun_no.Text & ”' and Staff_job='职员'"
Dim ds As DataSet
ds = myCommon.getData.get_ds(s)
DGView_staff.DataSource = ds.Tables(0)
End Sub
Private Sub Staff_Manager_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles MyBase.Load
Call Btn_show_Click(sender, e)
End Sub
Private Sub DGView_staff_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs)Handles DGView_staff.CellClick
Txt_no.Text = DGView_staff.CurrentRow.Cells.Item(0).Value.ToString
Txt_name.Text = DGView_staff.CurrentRow.Cells.Item(1).Value.ToString
Cbox_sex.Text = DGView_staff.CurrentRow.Cells.Item(2).Value.ToString
Txt_address.Text = DGView_staff.CurrentRow.Cells.Item(5).Value.ToString
Txt_tel_no.Text = DGView_staff.CurrentRow.Cells.Item(6).Value.ToString
End Sub
Private Sub Panel2_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs)Handles Panel2.Paint
End Sub End Class
第7章 总 结
经过这段时间的精心设计,系统的基本功能已经实现,并能实践于一些业务管理过程中,但酒店业务管理系统是一个庞大的工程,要使网络交互功能的实现,脚本的设计,网页的构架,网页的美工,文字的编辑,非一朝一夕可尽善尽美的,这需要一个长期的摸索与完善过程,同时还要在实践中发现与操作者使用要求不相符合的 地方还要修改。子系统功能虽已基本实现,但仍有诸多地方需要修改。随着酒店业务的扩展,服务的增加,酒店业务管理系统也逐渐发展、完善。如果没有一套可靠的酒店业务管理系统,但凭手工操作,不仅效率低下,而且会极大地形象到酒店的服务质量。要在酒店服务中选择好适合自己酒店实际情况的业务管理系统不仅 要考虑该系统在酒店的实用性,还要考虑酒店对该系统所能够承担费用的能力,以及这个系统对操作员来说的操作难易程度。通过本次课程设计中,我们掌握了VB.NET编程技能,SQL以及JDBC连接数据库和动态页面的用法。比较全面的巩固了下面向对象的编程思想。在本次课程设计中,我们懂得了谨慎和团结的重要性,明确分工也使我们提高了实验的效率,这对我们以后的学习工作都有很大的帮助。
第三篇:酒店管理系统 (数据库课程设计)
数据库 酒店管理系统 课程设计(基于 SQL server 2000)
实现过程
1.1 通过查询分析器实现建立数据库、数据表
------------------------------创建数据库和数据表---(1)创建酒店管理系统数据库
CREATE DATABASE 酒店管理系统(2)创建客房信息表
CREATE TABLE 客房
(客房编号 CHAR(8)PRIMARY KEY,客房类型 CHAR(8)NOT NULL,价格 SMALLMONEY NOT NULL,床位数 INT NOT NULL,使用状态 CHAR(8)NOT NULL)
INSERT INTO 客房 VALUES('101','一',100,1,'在使用')INSERT INTO 客房 VALUES('102','二',200,2,'在使用')INSERT INTO 客房 VALUES('103','二',200,1,'在使用')INSERT INTO 客房 VALUES('104','三',300,2,'在使用')INSERT INTO 客房 VALUES('105','三',300,1,'未使用')
(3)创建客户信息表
CREATE TABLE 客户
(客户编号 CHAR(8)PRIMARY KEY, 客户名称 CHAR(10)NOT NULL,身份证号 CHAR(18)NOT NULL,联系地址 CHAR(25),联系电话 CHAR(10))INSERT INTO 客户 VALUES('1001','王一',12234,'江西','3245354')INSERT INTO 客户 VALUES('1002','张三',34234,'江西','2442442')INSERT INTO 客户 VALUES('1003','李四',56465,'江西','5654645')INSERT INTO 客户 VALUES('1004','王钱',65435,'江西','5676577')INSERT INTO 客户 VALUES('1005','孙志',11464,'江西','4234343')
(4)创建入住登记表
CREATE TABLE 入住登记
(客房编号 CHAR(8)FOREIGN KEY REFERENCES 客房(客房编号),客户编号 CHAR(8)FOREIGN KEY REFERENCES 客户(客户编号),预定日期 DATETIME,预定数量 INT, PRIMARY KEY(客房编号,客户编号))
INSERT INTO 入住登记 VALUES('101','1001',2010-10-10,1)INSERT INTO 入住登记 VALUES('102','1002',2010-12-10,1)INSERT INTO 入住登记 VALUES('103','1003',2010-12-26,1)INSERT INTO 入住登记 VALUES('104','1004',2010-12-9,1)--------创建查询视图---------1.2系统功能相应的查询视图:
(1)客户信息查询视图
CREATE VIEW 客户信息查询
AS SELECT * FROM 客户
(2)客房信息查询
CREATE VIEW 客房信息查询
AS SELECT
* FROM 客房
(3)入住信息查询
CREATE VIEW 入住登记信息查询 AS SELECT
* FROM 入住登记
(4)入住信息查询
CREATE VIEW 入住信息查询
AS SELECT入住登记.客房编号,客户名称,入住登记.客户编号,客房.客房类型,价格,使用状态
FROM 客房,客户,入住登记
WHERE 客房.客房编号=入住登记.客房编号 AND 入住登记.客户编号=客户.客户编号
---------------建立索引-----------------------1.3建立索引及数据入库
1.建立客房编号,价格,客户编号,客户名称的索引 创建客房表索引:
CREATE UNIQUE INDEX UKF ON 客房(客房编号,价格)
创建客户表索引:
CREATE UNIQUE INDEX UKH ON 客户(客户编号,客户名称)
创建入住表索引:
CREATE UNIQUE INDEX URZ ON 入住登记(客户编号,客房编号)2.数据入库
方法一 酒店管理系统包括客房信息表,客户信息表,入住登记信息表。采用Excel中录入数据,然后使用SQL Server 2000数据导入、导出功能直接将数据导入到相应的基本表。
方法二 在查询分析器中插入相关数据,用SQL语句插入。
----------创建存储过程----------------------1.4建立存储过程
1.4.1客房信息存储过程
插入客房信息存储过程:
CREATE PROCEDURE 插入客房信息(@KFB CHAR(8), @KFL CHAR(8), @JG SMALLMONEY, @CWS INT, @SYZT CHAR(8))AS INSERT INTO 客房 VALUES(@KFB,@KFL,@JG,@CWS,@SYZT)
修改客房信息存储过程:
CREATE PROCEDURE 修改客房信息(@KFB CHAR(8), @KFL CHAR(8), @JG SMALLMONEY, @CWS INT, @SYZT CHAR(8))AS UPDATE 客房
SET 客房类型=@KFL,价格=@JG,床位数=@CWS,使用状态=@SYZT WHERE 客房编号=@KFB 删除客房信息存储过程:
CREATE PROCEDURE 删除客房信息(@KFB CHAR(8))AS DELETE FROM 客房 WHERE 客房编号=@KFB
1.4.2客户信息存储过程
插入客户信息
CREATE PROCEDURE 插入客户信息(@KHB CHAR(8), @KFM CHAR(10), @SFZ CHAR(18), @LXDZ CHAR(25), @LXDH CHAR(10))AS INSERT INTO 客户 VALUES(@KHB,@KFM,@SFZ,@LXDZ,@LXDH)修改客户信息
CREATE PROCEDURE 修改客户信息(@KHB CHAR(8), @KFM CHAR(10), @SFZ CHAR(18), @LXDZ CHAR(25), @LXDH CHAR(10))AS UPDATE 客户
SET 客户名称=@KFM,身份证号=@SFZ,联系地址=@LXDZ,联系电话=@LXDH WHERE 客户编号=@KHB
删除客户信息
CREATE PROCEDURE 删除客户信息(@KHB CHAR(8))AS DELETE FROM 客户
WHERE 客户编号=@KHB
EXEC 删除客户信息 @KHB='10009'
3.4.3创建入住信息存储过程 插入入住信息
CREATE PROCEDURE 插入入住信息(@KFB CHAR(8), @KHB CHAR(8), @YDRQ DATETIME, @YDSL INT)AS INSERT INTO 入住登记 VALUES(@KFB,@KHB,@YDRQ,@YDSL)
修改入住信息
CREATE PROCEDURE 修改入住信息(@KFB CHAR(8), @KHB CHAR(8), @YDRQ DATETIME, @YDSL INT)AS UPDATE 入住登记
SET 客房编号=@KFB,预定日期=@YDRQ ,预定数量=@YDSL WHERE 客户编号=@KHB
删除入住信息
CREATE PROCEDURE 删除入住信息(@KHB CHAR(8))AS DELETE
FROM 入住登记
WHERE 客户编号=@KHB
1.5查询存储过程的创建
客房编号查询
CREATE PROCEDURE 客房编号查询(@KFB CHAR(8), @KFL CHAR(8)OUTPUT, @JG SMALLMONEY OUTPUT, @CWS INT OUTPUT, @SYZT CHAR(8)OUTPUT)AS SELECT @KFL=客房类型,@JG=价格,@CWS=床位数,@SYZT=使用状态 FROM 客房
WHERE 客房编号=@KFB
客户编号查询
CREATE PROCEDURE 客户编号查询(@KHB CHAR(8), @KFM CHAR(10)OUTPUT , @SFZ CHAR(18)OUTPUT, @LXDZ CHAR(25)OUTPUT, @LXDH CHAR(10)OUTPUT)AS SELECT @KFM=客户名称,@SFZ=身份证号,@LXDZ=联系地址,@LXDH=联系电话 FROM 客户
WHERE 客户编号=@KHB
入住客户编号查询
CREATE PROCEDURE 入住客户编号查询(@KFB CHAR(8)OUTPUT, @KHB CHAR(8), @YDRQ DATETIME OUTPUT, @YDSL INT OUTPUT)AS SELECT @KFB=客房编号,@YDRQ=预定日期,@YDSL=预定数量 FROM 入住登记
WHERE 客户编号=@KHB
--------建立触发器--------------1.6、建立触发器保证数据的一致性
客房使用状态的控制
CREATE TRIGGER 控制触发器
ON 入住登记 FOR INSERT AS
UPDATE 客房
SET 使用状态='使用中' WHERE 客房编号=ANY(SELECT 客房编号 FROM INSERTED)
控制入住信息删除的触发器
CREATE TRIGGER 入住删除触发器
ON 入住登记 FOR DELETE AS BEGIN DELETE FROM 客户 WHERE 客户编号=ANY(SELECT 客户编号 FROM DELETED)
UPDATE 客房
SET 使用状态='未使用' WHERE 客房编号=ANY(SELECT 客房编号 FROM DELETED)END 客户信息删除的控制
CREATE TRIGGER 客户删除触发器
ON 客户
FOR DELETE AS BEGIN DELETE FROM 入住
WHERE 客户编号=ANY(SELECT 客户编号 FROM DELETED)
UPDATE 客房
SET 使用状态='未使用' WHERE 客房编号=ANY(SELECT 客房编号 FROM DELETED)END
客房删除触发器
CREATE TRIGGER 客房删除触发器
ON 客房
FOR DELETE AS
DELETE FROM 入住
WHERE 客户编号=ANY(SELECT 客户编号 FROM DELETED)
酒店管理系统数据库脚本
------------------------数据库初始化------set nocount on set dateformat mdy go
use master
go if exists(select * from sysdatabases where name='酒店管理系统')
/*删除在master中已存*/ /*在的名为酒店管理系统的数据库*/ drop database 酒店管理系统 go--------------------------酒店管理系统的建立-create database 酒店管理系统 on primary /*设定系统主文件*/(name='酒店管理系统_data', filename='d:酒店管理系统.mdf', size=10, maxsize=50, filegrowth=5)
log on
/*创建事务日志文件*/(name='酒店管理系统_log', filename='d:酒店管理系统.ldf', size=5, maxsize=25, filegrowth=5)go
---------(注:删除查询分析器中的以上代码后,运行以下代码)-----------------建立信息表----------use 酒店管理系统
if exists(select * from sysobjects where name='客户')drop table 客户 go print 'drop table 客户' print 'create table 客户' go /*客户信息表*/ CREATE TABLE 客户
/*创建客户信息表*/(客户编号 CHAR(8)PRIMARY KEY, 客户名称 CHAR(10)NOT NULL, 身份证号 CHAR(18)NOT NULL, 联系地址 CHAR(25), 联系电话 CHAR(10))go--------------------------插入客户数据-----------------------INSERT INTO 客户 VALUES('1001','王一',12234,'江西','3245354')INSERT INTO 客户 VALUES('1002','张三',34234,'江西','2442442')INSERT INTO 客户 VALUES('1003','李四',56465,'江西','5654645')INSERT INTO 客户 VALUES('1004','王钱',65435,'江西','5676577')INSERT INTO 客户 VALUES('1005','孙志',11464,'江西','4234343')if exists(select * from sysobjects where name='客房')drop table 客房 go print 'drop table 客房' print 'create table 客房' go /*客房信息表*/ CREATE TABLE 客房
/*创建客房信息表*/(客房编号 CHAR(8)PRIMARY KEY, 客房类型 CHAR(8)NOT NULL, 价格 SMALLMONEY NOT NULL, 床位数 INT NOT NULL, 使用状态 CHAR(8)NOT NULL)go-----------------------插入客房数据----------------------INSERT INTO 客房 VALUES('101','一',100,1,'使用中')INSERT INTO 客房 VALUES('102','二',200,2,'使用中')INSERT INTO 客房 VALUES('103','二',200,1,'使用中')INSERT INTO 客房 VALUES('104','三',300,2,'使用中')INSERT INTO 客房 VALUES('105','三',300,1,'使用中')if exists(select * from sysobjects where name='入住登记')drop table 入住登记 go print 'drop table 入住登记' print 'create table 入住登记' go /*入住登记信息表*/ CREATE TABLE 入住登记
/*创建入住登记信息表*/(客房编号 CHAR(8)FOREIGN KEY REFERENCES 客房(客房编号),客户编号 CHAR(8)FOREIGN KEY REFERENCES 客户(客户编号),预定日期 DATETIME,预定数量 INT, PRIMARY KEY(客房编号,客户编号))go
---------------插入入住登记信息数据----------------------INSERT INTO 入住登记 VALUES('101','1001',2010-10-10,1)INSERT INTO 入住登记 VALUES('102','1002',2010-12-10,1)INSERT INTO 入住登记 VALUES('103','1003',2010-12-26,1)INSERT INTO 入住登记 VALUES('104','1004',2010-12-9,1)go
-----建立索引-------------------
CREATE UNIQUE INDEX UKF ON 客房(客房编号,价格)go CREATE UNIQUE INDEX UKH ON 客户(客户编号,客户名称)go CREATE UNIQUE INDEX URZ ON 入住登记(客户编号,客房编号)go
----建立触发器-------------------------建立控制触发器(保证在客房使用状态的一致性)------if exists(select * from sysobjects where name='控制触发器')drop trigger 控制触发器 GO CREATE TRIGGER 控制触发器
ON 入住登记 FOR INSERT AS
UPDATE 客房
SET 使用状态='使用中' WHERE 客房编号=ANY(SELECT 客房编号 FROM INSERTED)go
--------建立入住删除触发器(保证信息删除的一致性)----------if exists(select * from sysobjects where name='入住删除触发器')drop trigger 入住删除触发器 GO CREATE TRIGGER 入住删除触发器
ON 入住登记 FOR DELETE AS BEGIN DELETE FROM 客户
WHERE 客户编号=ANY(SELECT 客户编号 FROM DELETED)
UPDATE 客房
SET 使用状态='未使用' WHERE 客房编号=ANY(SELECT 客房编号 FROM DELETED)END go-------建立客房删除触发器(保证删除的一致性)---------if exists(select * from sysobjects where name='客房删除触发器')drop trigger 客房删除触发器 GO CREATE TRIGGER 客房删除触发器
ON 客房
FOR DELETE AS
DELETE FROM 入住
WHERE 客户编号=ANY(SELECT 客户编号 FROM DELETED)go---------创建查询视图----------------
CREATE VIEW 入住信息查询
AS SELECT 入住登记.客房编号,客户名称,入住登记.客户编号,客房.客房类型,价格,使用状态
FROM 客房,客户,入住登记
WHERE 客房.客房编号=入住登记.客房编号 AND 入住登记.客户编号=客户.客户编号 go
---------建立存储过程------------------------------客房信息插入存储过程--------------------------CREATE PROCEDURE 插入客房信息(@KFB CHAR(8), @KFL CHAR(8), @JG SMALLMONEY, @CWS INT, @SYZT CHAR(8))AS INSERT INTO 客房 VALUES(@KFB,@KFL,@JG,@CWS,@SYZT)GO
--------------------客房信息修改的存储过程---------------------CREATE PROCEDURE 修改客房信息(@KFB CHAR(8), @KFL CHAR(8), @JG SMALLMONEY, @CWS INT, @SYZT CHAR(8))AS UPDATE 客房
SET 客房类型=@KFL,价格=@JG,床位数=@CWS,使用状态=@SYZT WHERE 客房编号=@KFB go--------------------客房信息删除的存储过程---------------------CREATE PROCEDURE 删除客房信息(@KFB CHAR(8))AS DELETE FROM 客房 WHERE 客房编号=@KFB GO--------------------客户信息插入的存储过程---------------------CREATE PROCEDURE 插入客户信息(@KHB CHAR(8), @KFM CHAR(10), @SFZ CHAR(18), @LXDZ CHAR(25), @LXDH CHAR(10))AS INSERT INTO 客户 VALUES(@KHB,@KFM,@SFZ,@LXDZ,@LXDH)go--------------------客户信息修改的存储过程---------------------CREATE PROCEDURE 修改客户信息(@KHB CHAR(8), @KFM CHAR(10), @SFZ CHAR(18), @LXDZ CHAR(25), @LXDH CHAR(10))AS UPDATE 客户
SET 客户名称=@KFM,身份证号=@SFZ,联系地址=@LXDZ,联系电话=@LXDH WHERE 客户编号=@KHB GO--------------------客户信息删除的存储过程---------------------CREATE PROCEDURE 删除客户信息(@KHB CHAR(8))AS DELETE FROM 客户
WHERE 客户编号=@KHB go--------------------入住信息插入的存储过程---------------------CREATE PROCEDURE 插入入住信息(@KFB CHAR(8), @KHB CHAR(8), @YDRQ DATETIME, @YDSL INT)AS INSERT INTO 入住登记 VALUES(@KFB,@KHB,@YDRQ,@YDSL)go--------------------入住信息修改的存储过程---------------------CREATE PROCEDURE 修改入住信息(@KFB CHAR(8), @KHB CHAR(8), @YDRQ DATETIME, @YDSL INT)AS UPDATE 入住登记
SET 客房编号=@KFB,预定日期=@YDRQ ,预定数量=@YDSL WHERE 客户编号=@KHB go--------------------入住信息删除的存储过程---------------------CREATE PROCEDURE 删除入住信息(@KHB CHAR(8))AS DELETE
FROM 入住登记
WHERE 客户编号=@KHB go--------------------客房编号查询的存储过程-----------------------if exists(select * from sysobjects where name='客房编号查询')drop procedure 客房编号查询 GO CREATE PROCEDURE 客房编号查询(@KFB CHAR(8))AS SELECT 客房类型,价格,床位数,使用状态 FROM 客房
WHERE 客房编号=@KFB go--------------------客户编号查询的存储过程-----------------------if exists(select * from sysobjects where name='客户编号查询')drop procedure 客户编号查询 GO CREATE PROCEDURE 客户编号查询(@KHB CHAR(8))AS SELECT 客户编号,客户名称,身份证号,联系地址,联系电话 FROM 客户
WHERE 客户编号=@KHB go--------------------入住信息查询的存储过程-----------------------if exists(select * from sysobjects where name='入住客户编号查询')drop procedure 入住客户编号查询 GO CREATE PROCEDURE 入住客户编号查询(@KHB CHAR(8))AS SELECT 客户编号,客房编号,预定日期,预定数量 FROM 入住登记
WHERE 客户编号=@KHB
第四篇:仓库管理系统课程设计报告
仓库管理系统课程设计报告
一、概述
项目背景:
仓库管理在企业的整个供应链中起着至关重要的作用,如果不能保证正确的进货和库存控制及发货,将会导致管理费用的增加,服务质量难以得到保证,从而影响企业的竞争力。传统简单、静态的仓库管理已无法保证企业各种资源的高效利用。如今的仓库作业和库存控制作业已十分复杂化多样化,仅靠人工记忆和手工录入,不但费时费力,而且容易出错,给企业带来巨大损失。使用仓库管理系统 , 对仓库各环节实施全过程控制管理,并可对货物进行货位、批次、保质期、配送等实现系统列号管理,对整个收货、发货、补货、集货、送货等各个环节的规范化作业 , 还可以根据客户的需求制作多种合理的统计报表。仓库管理系统能帮助企业合理有效地利用仓库空间,以快速、准确、低成本的方式为客户提供最好的服务。
系统特点: 本系统是采用面向对象的设计思想进行编制,整个系统由若干个表单、报表及一个主菜单组成,由项目管理器统一管理全部程序的编写和调试.用户在操作中可以通过主菜单调用系统的各个功能.在表单设计方面尽量考虑方便用户,简化操作,绝大部分操作只需点击鼠标即可完成,力求突出系统的便利性、实用性.设计环境与工具: 在现有的DBMS(Visual FoxPro)支持下进行。
二、需求分析
问题陈述:
需完成的功能: 产品入库管理,可以填写入库单,确认产品入库;
产品出库管理,可以填写出库单,确认出库;
借出管理,凭借条借出,然后能够还库;
初始库存设置,设置库存的初始值,库存的上下警戒限;
可以进行盘库,反映每月、年的库存情况;
可以查询产品入库情况、出库情况、当前库存情况,可以按出库单、入库单,产品、时间进行查询;
三、系统结构设计
(1)系统功能结构设计(包括主要功能模块及功能模块的细化。)
本系统应能够方便的实现仓库货物存储信息的录入、修改、编辑和浏览等功能,高效地完成企业的各种产品信息的统计功能,打印出各种产品入库出库和盘库查询的信息表格,系统的各主要功能的要求如下: 信息录入功能: 仓库产品基本信息、产品入库信息、产品出库信息、产品清单资料等.浏览功能: 浏览仓库产品基本信息,浏览产品入库情况、出库情况、当前库存情况.查询功能: 产品标号,或者按验收时间查询库存设置等.报表打印功能: 打印仓库产品货单表,空白产品登记表和各种统计表.(2)数据库设计
一个数据库中包含许多表,表之间又有关联,所以设计数据库的步骤为:第一步,确定所需要的表;第二步,确定每个表所需要的字段;第三,确定各个表之间的关联关系;最后形成表的结构.定义表(包括表中的字段)、视图、索引、主关键字、确定表间的联系。
数据库要求:在数据库中至少应该包含下列数据表:
出库单表(chjy): 记录产品出库状况。
入库单表(cgdd):记录产品入库状况。
产品供应商表(gys):记录产品提供者。
公司雇员表(gy):记录来仓库存取产品的人员名单。产品表(cp):记录仓库现存状况。
库存情况表;出库台帐; 入库台帐;
借条信息表(反映借出人,借出时间,借出产品,借出数量,还库时间等)。
(3)系统流程结构图
数据流图的基本目的是利用它作为交流信息的工具,利用它将对现有系统的认识或对目标系统的设想用数据流图描绘出来,供有关人员审查确认: 数据流图的另一个主要用途是作为分析和设计的工具,帮助分析员实现总结现有系统的目标,对更详细的设计步骤提供帮助.数据流图是描绘系统的逻辑模型,以图形的形式表示出来,以下是仓库管理系统的数据流图.四、系统详细设计
(1)描述每一个功能所完成的任务,指明实现该功能的表单、菜单、报表等。
系统的功能模块设计
图1-1
系统功能模块
(2)说明主要功能的设计思想和方法(包括涉及到的数据源、关键的属性和代码等。)
设计思想分析:
将管理系统分为进库操作、出库操作、损耗操作、查询操作、报表操作、维护操作六部分。
1、入库时根据商品的具体情况进行处理,如果库中已存在此商品,就在原来的数量基础上加上进货数量,如果没有则自动新增此产品,并提醒管理员在最新报价表中加上此商品的最新报价(为了出库的正确性,某商品的最新报价的存在是其出库的前提)。如果商品已以入库,则自动在商品进出表中加上相关记录,以便于以后的核对。
2、为了达到出库价格的正确性,出库时系统自动将此商品的售价和最新报价里的价格进行比较,如果不相等则出现提示信息。另外,程序还有其他服务功能,比如如果商品数量不足或没有相关商品则出现提示信息。
3、商品的查询专门提供给广大客户使用,客户可以按商品编号和商品名称、数量、单价、进库出库信息、对库中的具体商品进行查询,查询有商品代号和商品名称两种方法,这样,客户可以轻松掌握仓库的库存情况,便于交易。
4、核对措施也是此系统中必备的,为了便于以后核对,出库的记录也将存储起来。出库单打印默认为2份,其一用交给交易对方,另一份管理员自己保存。便于核对。同样,本系统还会自动对入库情况进行记录,这样,用户能轻松掌握仓库的变化,可以随时对库存进行分析核对。
5、保密性是作为一个企业或者机构所十分重视的,给用户一个安全的环境是优秀的管理软件所必须做到做好的,本软件也做到了安全性,就是说登录时要有正确的密码,这样一来,只有系统管理员才有权更改系统里面的数据了。
6、本系统还带有自动清除测试记录功能(课本是本系统的测试数据),如果用户要正式使用仓库,只要选择操作菜单下的正式使用命令。这样就不需要用记一条条去删记录了。
(3)界面设计要合理、简明。
五、实施及测试 指出已实现的每个功能,附上运行、测试结果。
六、结束语
心得体会:
经过了这次仓库管理系统的课程设计我从中学到了很多,同时明白了做一个小型软件的步骤和流程.如何让自己设计的软件运用到具体的实际工作中,这是一个关键的环节.还有就是程序设计和运行测试中遇到的问题该如何解决,从解决问题中我也学到了许多平时课本上所没有的知识.当然,能够完成这个仓库管理系统我自己也感觉很有成就感.运用到的开发工具和软件技术: 此系统结合货物仓库管理的要求,对Visual FoxPro(VFP)数据库管理系统、SQL语言的学习和应用,主要完成货物仓库管理系统的需求分析,系统的数据库设计和实现,系统的表单设计,主控程序设计,并由此设计了数据库结构和应用程序。系统运行结果证明,本人设计的货物仓库管理系统可以满足仓库管理者完成仓库管理的日常工作,包括材料的入库,出库以及库存材料信息的管理维护等
软件还需要哪些改进:
在编写源程序代码的过程中对语言的运用还需要提高,应使写出来的程序更加简洁,易读懂,更加满足实际工作的需要.要想使做出来的程序更好的利用还需根据实际需要在今后的运用中不断的改进和完善.七、参考资料
1.Visual FoxPro 程序设计及其应用系统开发
李作纬 等
中国水利水电出版社 2.数据库应用系统开发技术
刘军
等
机械工业出版社 3.其它资料若干
第五篇:宿舍管理系统课程设计报告
青岛农业大学 理学与信息科学学院
高级语言课程设计报告
设 计 题 目 宿舍管理系统
学生专业班级班
学生姓名(学号)
设计小组其他同学姓名(学号)
指 导 教 师
完 成 时 间
设 计 地 点
2016年12月06日
一、课程设计目的和任务
《高级语言程序设计》课程设计是计算机相关专业的主要实践性教学环节。其目的在于加深对高级语言程序设计理论和基本知识的理解,掌握使用C语言进行面向过程设计的基本方法,提高运用面向过程知识解决实际问题的能力。为毕业设计和以后的工程实践打下良好的基础。
宿舍管理系统:用C语言为学生宿舍管理人员编写一个宿舍管理软件。设某宿舍有:101,102,201,202四个房间,每个房间可住学生<=4人,存储结构:学号、姓名、房间号,按房间号有序,实现学生的入住、退房和查询,按给定学号、姓名、房号查询。
二、分析与设计
1.程序的基本功能:(1).实现新生入住登记(2).修改入住学生信息(3)实现退房
(4)实现以姓名查询学生信息(5)实现以学号查询学生信息(6)实现以寝室号查询学生信息(7)实现按照寝室号从小到大排序(8)实现按学号从小到大排序(9)实现显示所有学生信息(10)实现退出程序并保存数据 2.定义的函数及说明:
此程序由11个函数构成。
Add----------添加学生信息函数(姓名、学号、宿舍号、班级)Alter----------修改学生信息函数 Delete--------删除学生信息函数
Display_All--------显示所有学生信息函数
Query_S_name---------查询函数以姓名为关键字进行查询 Query_S_number-------查询函数以学号为关键字进行查询 Query_D_number------查询函数以寝室号为关键字进行查询 Save-----存储函数
Judge_Save----退出程序时判断是否保存函数 Menu--菜单 Main---主函数
3.系统总框图:
三、系统实施
1.源程序代码:
#include
int D_number;//学生所在寝室的宿舍号 char S_class1[10];//班级
int Total;//学生总数 }Student[16];int sushehao[4]={101,102,201,202};int count[4]={0};//判断学号是否与表中所存学号重复 void S_number_Judge(Student S,int t){ int i;for(i=1;i<=(S->Total)-1;i++)
while(strcmp(S[i].S_number,S[t].S_number)==0)//strcmp字符串比较函数,两个字符逐个比较,相等返回值为
{
printf(“学号输入失败,该学号已存在,请重新输入学号!n”);
printf(“请输入学生的学号(10个字符以内):”);scanf(“%s”,S[t].S_number);
getchar();
i=1;
} } //添加学生信息函数 void Add(Student S){ int j;int flag=1;printf(“请输入学生姓名(10个字符以内):”);scanf(“%s”,S[++(S->Total)].S_name);getchar();//获取换行符
printf(“请输入学生的学号(10个字符以内):”);scanf(“%s”,S[S->Total].S_number);getchar();S_number_Judge(S,S->Total);//判断输入的学号是否与表中所存在的学号重复
while(flag){ printf(“请输入宿舍号码:”);
scanf(“%d”,&S[S->Total].D_number);for(j=0;j<4;j++){
if(S[S->Total].D_number==sushehao[j] && count[j]<4)
{
count[j]++;
flag=0;
break;
}
if(S[S->Total].D_number==sushehao[j]&&count[j]==4)
{
printf(“该宿舍已满,请重新输入n”);
break;
} } } getchar();printf(“请输入所在班级:”);scanf(“%s”,S[S->Total].S_class1);getchar();printf(“添加成功!nn”);
}//修改学生信息函数 void Alter(Student S){ int i;int flag=0;//用来判断表中是否存在所要修改的学生的信息
char number[10];printf(“请输入你要修改学生的学号:”);scanf(“%s”,number);getchar();for(i=1;i<=S->Total;i++)
if(strcmp(S[i].S_number,number)==0)
flag=i;if(!flag)
printf(“你所要修改的学生信息在表中不存在!n”);else {
printf(“新信息如下:n”);
printf(“请输入学生姓名(10个字符以内):”);
scanf(“%s”,S[flag].S_name);
getchar();
printf(“请输入学生的学号(10个字符以内):”);
scanf(“%s”,S[flag].S_number);
getchar();
S_number_Judge(S,flag);
printf(“请输入宿舍号:”);
scanf(“%d”,&S[flag].D_number);
getchar();printf(“请输入床铺号码:”);scanf(“%s”,&S[S->Total].S_bednum);getchar();printf(“请输入所在班级:”);scanf(“%s”,&S[S->Total].S_class1);getchar();
dirty=1;
printf(“修改成功!n”);} putchar('n');} //删除学生信息
void Delete(Student S){ int i,j;int flag=0;//用来判断表中是否存在所要删除的学生的信息
char number[10];printf(“请输入你要删除学生的学号:”);scanf(“%s”,number);getchar();for(i=1;i<=S->Total;i++)
if(strcmp(S[i].S_number,number)==0)
flag=i;if(!flag)
printf(“你所要删除的学生在表中不存在!”);else { for(i=flag;i
j=i+1;
strcpy(S[i].S_name,S[j].S_name);//字符串拷贝函数,格式:符数组名,字符数组名),赋值给
strcpy(S[i].S_number,S[j].S_number);
字 strcpy(S[i].D_number=S[j].D_number;
strcpy(S[i].S_bednum,S[j].S_bednum);
strcpy(S[i].S_class1,S[j].S_class1);}
(S->Total)--;
dirty=1;
printf(“删除成功!”);} printf(“nn”);} //显示所有学生信息函数
void Display_All(Student S){ int i;printf(“全体学生信息如下:n”);printf(“--------------------n”);/*格式头*/ printf(“ 房间号床位号学号姓名班级 n”);printf(“--------------------n”);for(i=1;i<=S->Total;i++)
printf(“ %-10d%-10s%-10s%-10s%-10sn”,S[i].D_number,S[i].S_bednum,S[i].S_number,S[i].S_name,S[i].S_class1);
putchar('n');} //查询函数以姓名为关键字进行查询(顺序查找)void Query_S_name(Student S){ int i,j=0;char name[10];printf(“请输入你要查找的学生的姓名(10个字符以内):”);scanf(“%s”,name);getchar();printf(“所查找学生信息如下:n”);printf(“tt-----------------n”);/*格式头*/ printf(“tt房间号床位号学号姓名班级 n”);printf(“tt-----------------n”);for(i=1;i<=S->Total;i++)
if(strcmp(name,S[i].S_name)==0)
{
printf(“tt%-10d%-10s%-10s%-10s%-10sn”,S[i].D_number,S[i].S_bednum,S[i].S_number,S[i].S_name,S[i].S_class1);j=1;
} if(!j)
printf(“n查找失败,表中不存在该学生的信息!nn”);} //查询函数以学号为关键字进行查询(折半查找)void Query_S_number(Student S){ int i,j=0;char number[10];printf(“请输入你要查找的学生的学号(10个字符以内):”);scanf(“%s”,number);getchar();printf(“所查找学生信息如下:n”);printf(“tt-----------------n”);/*格式头*/ printf(“tt房间号床位号学号姓名班级 n”);printf(“tt-----------------n”);for(i=1;i<=S->Total;i++)
if(strcmp(number,S[i].S_number)==0)
{
printf(“tt%-10d%-10s%-10s%-10s%-10sn”,S[i].D_number,S[i].S_bednum,S[i].S_number,S[i].S_name,S[i].S_class1);j=1;
} if(!j)
printf(“n查找失败,表中不存在该学生的信息!nn”);} //查询函数以寝室号为关键字进行查询(折半查找)void Query_D_number(Student S){ int i,j,m,n,base,top,mid;j=0;base=1;top=S->Total;printf(“请输入你要查询的寝室号:”);scanf(“%d”,&i);getchar();Sort_D_number(S);//将表中原数据按照寝室号从小到大排序
printf(“所查找寝室信息如下:n”);printf(“tt-----------------n”);/*格式头*/ printf(“tt房间号床位号学号姓名班级 n”);printf(“tt-----------------n”);if(i>=S[1].D_number&&i<=S[S->Total].D_number){
while(base<=top)
{
mid=(base+top)/2;
if(i==S[mid].D_number)
{
m=mid;n=mid-1;
while(S[m].D_number==i)
{
printf(“tt%-10d%-10s%-10s%-10s%-10sn”,S[m].D_number,S[m].S_bednum,S[m].S_number,S[m].S_name,S[m].S_class1);m++;
if(m>S->Total)
break;
}
if(n>0)
{
while(S[n].D_number==i)
{
printf(“tt%-10d%-10s%-10s%-10s%-10sn”,S[n].D_number,S[n].S_bednum,S[n].S_number,S[n].S_name,S[n].S_class1);n--;
if(n<1)
break;
}
}
j=1;
putchar('n');
break;
}
else if(i>S[mid].D_number)
base=mid+1;
else
top=mid-1;
} } if(!j)
printf(“n查找失败,表中不存在该寝室的信息!nn”);} //存储函数
void Save(Student S){ int i=0;FILE *fp;/*定义文件指针*/ char filename[100];/*定义文件名*/ printf(“tt输入文件名:”);/*输入文件名*/ scanf(“tt%s”,&filename);if((fp=fopen(filename,“w”))==NULL)/*打开文件*/ { printf(“tt无法打开该文件n”);system(“pause”);return;} fprintf(fp,“%dn”,S->Total);/*循环写入数据*/ while(i<(S->Total)){
fprintf(fp,“%-10d%-10s%-10s%-10s%-10sn”,S[i].D_number,S[i].S_bednum,S[i].S_number,S[i].S_name,S[i].S_class1);i++;} fclose(fp);/*关闭文件*/ printf(“写入成功!n”);/*返回成功信息*/ } //退出程序时判断是否保存函数
void Judge_Save(int i,Student S){ char ch;if(i){
printf(“表中数据已改变,是否保存后再退出(Y/N)?:”);
ch=getchar();
getchar();
while(ch!='n'&&ch!='N'&&ch!='y'&&ch!='Y')
{
printf(“请输入N(n)或者Y(y):”);
ch=getchar();
getchar();
}
if(ch=='y'||ch=='Y')
Save(S);} } //菜单
void Menu(){ system(“cls”);/*运行前清屏*/ printf(“n”);printf(“
青岛农业大学学生宿舍管理系统nn”);
printf(“ n”);printf(“ 作者:明伟、李善虎、胡蒙亨n”);printf(“n”);printf(“tt=============学生宿舍管理系统===========n”);/*菜单选择*/ printf(“tt n”);
printf(“tt 1.新生入住 n”);printf(“tt 2.修改入住学生信息 n”);printf(“tt 3.退房服务 n”);printf(“tt 4.以姓名查询学生信息 n”);printf(“tt 5.以学号查询学生信息 n”);printf(“tt 6.以寝室号查询学生信息 n”);
printf(“tt 7.查询全部学生信息 n”);printf(“tt 0.退出程序 n”);printf(“tt=========================================n”);} int main(){ int i;Student S;S->Total=0;do {
Menu();
printf(“请选择您要运行的选项按(0-9):”);
scanf(“%d”,&i);
getchar();//获取换行符
putchar('n');
switch(i)
{
case 1:Add(S);
system(“pause”);
break;
case 2:Alter(S);
system(“pause”);
break;
case 3:Delete(S);
system(“pause”);
break;
case 4:Query_S_name(S);
system(“pause”);
break;
case 5:Query_S_number(S);
system(“pause”);
break;
case 6:Query_D_number(S);
system(“pause”);
break;
case 7:Display_All(S);system(“pause”);
break;
case 0:Judge_Save(dirty,S);
exit(0);
break;
default:printf(“选择错误:请在选项到之间选择!nn”);
break;
} }while(i!=10);}(注:黑体部分为我负责的部分)2.程序运行说明(包括结果说明)程序运行说明
运行程序后,出现主菜单界面,按照主菜单上的编号进行操作即可,每输入一个编号后按回车即进入该子程序,然后按照提示输入或查询信息。结果说明:
3.存在的问题
本程序在新生入住时将宿舍号限定在101,,12,201,202.当输入的宿舍号不符合要求时只是重复出现“请输入宿舍号”而没有明确的文字提示。而且在修改入住学生信息时对宿舍号没有限制。还需进一步完善。
四、总结与体会
当看到课程设计任务时,完全找不着头绪,由于对C语言的认识和了解只是停留在表面,所以不知道从何下手。后来在不停的复习课本,在老师和同学的帮助下,逐渐找到了方向,也对设计中需要用到的方法和结构有所了解和认识,学会了如何使用,之后的一次课又经过仔细的思考了解了这个程序的基本框架,确定了程序的流程图,为程序的完成奠定了基础,接下来在写代码的过程中仍然遇到了很多问题,经过不断的查阅课本和网络,逐步解决了代码问题,在实现整个程序功能方面,有些结构和方法不会用,最后在老师的帮助下才得以顺利解决。做出来的程序在执行过程中仍然有一些问题,比如在上述“存在的问题”中提到的。设计过程确实让我认识到了自己技术上的不足,在以后的学习中应该加强这方面的学习和重视。为以后的毕业设计和就业做准备。