语言 :C#
工具:Visual Studio 2019, Microsoft SQL Server Management Studio 18
数据库:SQL Server 15.0.2
OS:Windows 10
框架说明
WinForm 是 Windows Form 的简称,是基于 .NET Framework 平台的客户端(PC软件)开发技术,一般使用 C# 编程。
.NET Framework 是一种技术,支持生成和运行 Windows 应用及 Web 服务。
.NET Framework 包括公共语言运行时 (CLR) 和 .NET Framework 类库。 公共语言运行时是 .NET Framework 的基础。 可将运行时看作一个在执行时管理代码的代理,它提供内存管理、线程管理和远程处理等核心服务,并且还强制实施严格的类型安全以及可提高安全性和可靠性的其他形式的代码准确性。 事实上,代码管理的概念是运行时的基本原则。 以运行时为目标的代码称为托管代码,而不以运行时为目标的代码称为非托管代码。 类库是一个综合性的面向对象的可重用类型集合,可使用它来开发多种应用,这些应用包括传统的命令行或图形用户界面 (GUI) 应用,还包括基于 ASP.NET 提供的最新创新的应用(如 Web Forms 和 XML Web service)。
Tcoder-l3est/Hotel-Management-Database-System: 数据库课设—酒店管理系统 (github.com)
C#教程:C#入门经典教程,值得收藏 (biancheng.net)
NET Framework Class Library — .NET Framework 类库
.NET Framework 类库是一个与公共语言运行时紧密集成的可重用的类型集合。 该类库是面向对象的,并提供某些类型,可供你自己的托管代码从中派生功能。 这不但使 .NET Framework 类型易于使用,而且还减少了学习 .NET Framework 的新功能所需要的时间。 此外,第三方组件与 .NET Framework 中的类无缝集成。
例如,.NET Framework 集合类实现一组用于开发自己的集合类的接口。 你的集合类与 .NET Framework 中的类无缝地混合。
正如你对面向对象的类库所希望的那样,.NET Framework 类型使你能够完成一系列常见编程任务,包括字符串管理、数据收集、数据库连接以及文件访问。 除这些常规任务之外,类库还包括支持多种专用开发方案的类型。 可以使用 .NET Framework 开发下列类型的应用和服务:
- Console 应用。 请参阅生成控制台应用程序。
- Windows GUI 应用(Windows 窗体)。 请参阅 Windows 窗体。
- Windows Presentation Foundation (WPF) 应用。 请参阅 Windows Presentation Foundation。
- ASP.NET 应用。 请参阅使用 ASP.NET 的 Web 应用程序。
- Windows 服务。 请参阅 Windows 服务应用程序简介。
- 使用 Windows Communication Foundation (WCF) 的面向服务的应用。 请参阅使用 WCF 的面向服务的应用程序。
- 使用 Windows Workflow Foundation (WF) 的启用工作流程的应用。 请参阅Windows Workflow Foundation。
Windows 窗体类是一组综合性的可重用的类型,它们大大简化了 Windows GUI 的开发。 如果要编写 ASP.NET Web 窗体应用,可使用 Web 窗体类。
**管理员(经理)权限:**具有该系统的最高权限以及所有权限,可以对系统进行管理,可对数据库进行系统所提供的所有操作,特别地,负责员工和房间管理。权限具体陈述如下:
1、房间管理:包括房间各种属性的增加、查询、修改和删除。
2、员工信息管理:添加、查询、修改、删除所有员工的信息。
3、客户管理:包括客户信息的添加、查询、修改、删除等。
4、系统数据处理:数据查询,包括查看当前在馆书籍信息、当前所有违章罚款信息、所有被预约图书信息等。
5、预约入住操作:预约时需要输入客户身份证号和姓名以及手机号。如果该用户未预约,则选择合适房间并充值后可以预约,提示“预约成功”;如果该用户已经预约或者入住,则弹出窗口提示并禁止操作。
6、入住登记操作:入住时需要输入客户身份证号和姓名以及手机号。如果该用户未预约,则选择合适房间并充值后可以入住,提示“入住成功”;如果该用户已经预约,则必须按预约的房间来入住,否则提示并且禁止,并且检查是否超时,决定是否退还定金;如果该用户已入住,则禁止重复入住。
7、退房登记操作:退房时首先查看正在进行的业务订单。如果是正在入住的订单,则进行超时查询后进行下一步处理;如果未超时,则直接退房即可,相应的信息插入到历史订单并且入住订单中删除该订单;如果超时,则需要交纳额外的超时罚款之后,再退房。最后提示:“退房成功!”。
**员工权限:**使用系统的预约-入住-退房功能以及房间查询、客户管理。(无员工管理权限)具体权限如下:
1、房间查询:包括房间各种属性的查询。
2、客户管理:包括客户信息的添加、查询、修改、删除等。
3、系统数据处理:数据查询,包括查看当前在馆书籍信息、当前所有违章罚款信息、所有被预约图书信息等。
4、预约入住操作:预约时需要输入客户身份证号和姓名以及手机号。如果该用户未预约,则选择合适房间并充值后可以预约,提示“预约成功”;如果该用户已经预约或者入住,则弹出窗口提示并禁止操作。
5、入住登记操作:入住时需要输入客户身份证号和姓名以及手机号。如果该用户未预约,则选择合适房间并充值后可以入住,提示“入住成功”;如果该用户已经预约,则必须按预约的房间来入住,否则提示并且禁止,并且检查是否超时,决定是否退还定金;如果该用户已入住,则禁止重复入住。
6、退房登记操作:退房时首先查看正在进行的业务订单。如果是正在入住的订单,则进行超时查询后进行下一步处理;如果未超时,则直接退房即可,相应的信息插入到历史订单并且入住订单中删除该订单;如果超时,则需要交纳额外的超时罚款之后,再退房。最后提示:“退房成功!”。
在表“客户”中,对主键客户编号做了索引,作为该表的主索引。每次进行相应操作,都是根据客户编号来的,所以设置为主索引。并且客户编号是递增的。
其次在房间信息表中,对主键房间做了索引,作为该表的主索引。每次进行相应操作,都是根据房间号来查询房间的各种信息,所以设置为主索引。
该酒店管理系统共面对酒店内部两种角色使用:管理员(经理),员工(前台)。
管理员系统通过CS框架实现,具有预约入住,入住登记,退房登记,房间管理,员工管理,客户管理、订单管理七大功能;
员工系统通过CS框架实现,具有预约入住,入住登记,退房登记,房间查询,员工查询,客户管理、订单管理七大功能;
系统通过检测输入的数据的位数、内容,检查是否符合数据库变量类型的要求,例如限制身份证号位数必须为18位,手机号必须是11位等,能够很好地保障数据库的统一。
功能模块具体实现可见文档
(1)在经理主界面,点击房间管理,即可进入房间管理主界面。
(2)点击房间查询母功能,选择查询子功能:全部房间,已入住房间,未入住房间,已预约房间,未预约房间,实现对房间状态的了解。
(3)点击类型查询母功能,选择查询子功能:普通房间,VIP房间,VVIP房间,大床房,双人间,有窗房间,无窗房间,实现对房间类型的查询。
(4)点击房间修改母功能,选择子功能:添加房间,修改房间,删除房间;
(4)添加房间:输入房间号,房间类型,价格,床型,窗型,系统默认添加时预约状态以及入住状态都是‘否’,实现房间的添加。系统会自动检查输入是否规范。
(5)修改房间:可以通过在查询时选中房间,输入更新后信息,来修改指定房间;也可以,直接输入房间号,房间类型,价格,床型,窗型,来修改房间信息。系统会自动检查输入是否规范。
(6)删除房间:选中房间后,点击删除房间,即可实现删除功能。
(1)点击员工管理功能按钮,进入员工管理界面;
(2)员工界面自动对经理(管理员)展示所有员工的全部信息,包括:员工号,员工姓名,员工性别,员工身份证号,员工职位,员工工资,员工登录密码,员工手机号。
(3)点击增加新员工按钮,进入添加员工界面,输入新员工全部信息,即可添加成功。如果增添的是员工职位是经理,则会自动记录在经理实体表中。系统会自动检查输入是否规范。
(4)点击修改员工信息按钮,进入修改员工信息子界面,并且默认修改的员工为原来界面选中的员工,输入新的员工信息,即修改成功。系统会自动检查输入是否规范。
(5)点击删除员工按钮,根据选中的员工,进行相应的删除
(1) 在主页面点击客户管理功能按钮,进入客户管理功能界面。
(2) 查看所有客户信息
(3) 点击增加新客户,进入增加客户子界面,输入客户的姓名,身份证,手机号,余额,类别后,点击增加按钮,即可增加成功。(系统自动实现客户编号的递增生成,自动设置客户的初始状态为‘未入住’,无需手动输入)
(4) 在客户管理界面选中某客户后,点击修改客户信息,即可进入修改客户子界面,显示当前修改的客户的编号,管理员输入对应修改的数值后,点击修改,即修改成功。(不可以从此界面修改客户状态,否则会引起数据的不一致)
(5) 在客户管理界面选中某客户后,点击删除客户按钮,确认删除后,即可删除成功。
(6) 客户充值功能:选中客户,点击客户充值,即可进入客户充值界面,系统自动锁定充值的客户,输入充值金额,点击充值,即可充值成功。(设置奖励机制,单次充值满一定金额可以升级客户类别,不同的客户类别享有不同的折扣,可以适应酒店的个性化营销策略)
(7) 修改折扣功能:配套于客户充值,点击进入修改客户类别折扣子功能界面,输入对应客户类别的折扣,便可修改客户享受的折扣力度。
(8) 客户管理界面,提供基于姓名、身份证号、客户的类别进行模糊查询,输相应的信息后点击对应按钮,即可查询。
(9) 刷新功能:点击刷新即可获得当前最新信息。
(1)在经理主界面点击订单管理,选择当前订单,即可进入当前订单管理界面。
(2)当前订单管理界面,点击查看订单,可以选择查看正在预约还未入住、正在入住还未退房的订单信息。
(3)订单修改功能:点击订单修改中的修改预约订单,即可进入订单修改界面,此界面可以修改预约的房间号、预约入住时间、以及入住天数,实现预约信息的修改。
(4)取消预约功能:在订单管理中选中订单,然后点击取消预约订单功能,系统自动检测是否是预约订单,如果不是,则无法取消,如果是,经过再次确认后,即可取消预约订单。并且一旦取消预约订单,则定金无法退还。
(5)刷新功能:点击刷新即可获得当前最新信息。
(6)若在经理主界面点击订单管理,选择历史订单,即可进入历史订单管理界面。
(7)历史订单界面,展示已经完成的订单,包括历史订单编号、客户编号、房间号、入住时间、退房时间、超时缴费、总消费,历史订单作为重要的酒店经营数据,只能查看,不能删改,也不能主动添加,只能在完成一个业务后由系统自动添加。
(1) 经理(管理员)主页面选择预约入住功能,即进入预约入住登录界面
(2) 输入客户的姓名,身份证号,手机号。系统根据身份证号检查客户是否第一次预约、入住本酒店,如果是,系统自动更新用户数据到数据库,增加新用户;然后检查是否已预约、入住,防止重复入住。并且对于可能出现变更的姓名和手机号,系统会自动更新。
(3) 输入信息后,点击下一步,进入预约入住-选择房间界面,该界面可以按类别查询空房间,包括普通房间、VIP、VVIP房间,并且还可以查看已预约、已入住房间。
(4) 该界面根据不同的用户信息,自动展示,当前客户编号,当前客户类别,当前客户预约状态,当前客户入住状态,以及享受的折扣。
(5) 输入预约房间号、预约日期、入住天数后,系统首先检查房间可入住,之后需缴纳总订单金额的10%作为定金,若后续按时入住,定金将退还,否则将额外扣除这部分费用。如果余额不够,则充值后继续入住。此外,系统会检索输入的房间号是否存在等各种规范数据的操作。
(6) 点击预约 系统更新数据库表的信息,若成功,则显示预约成功,否则预约失败。
(7) 客户充值功能:选中客户,点击客户充值,即可进入客户充值界面,系统自动锁定充值的客户,输入充值金额,点击充值,即可充值成功。(设置奖励机制,单次充值满一定金额可以升级客户类别,不同的客户类别享有不同的折扣,可以适应酒店的个性化营销策略)
(1)经理(管理员)主页面选择退房登记功能,即进入退房登记功能界面。
(2)退房登记主界面展示当前处于入住或者预约状态的订单,包括:当前订单号,客户编号,房间号,入住时间,预计退房时间,订单状态
(3)点击查看订单,还可以分类选择查看全部订单、入住订单、预约订单。
(4)在订单表中选中订单后,点击退房,系统首先检测是否是正在入住的订单(如果是预约订单则无法退房),之后系统自动检测,预约退房时间是否早于当前退房时间,如果是,则无需超时缴费,系统更新客户、订单、房间信息后。即退房成功;否则如果超时,则需缴纳超时缴费,超时缴费是根据超时天数以及房间价格相乘得到,没有折扣,以作为罚款,只有余额充足并且缴纳罚款后方可退房!此功能,便于酒店客房的个性化管理,非常实用!
(8) 客户充值功能:选中客户,点击客户充值,即可进入客户充值界面,系统自动锁定充值的客户,输入充值金额,点击充值,即可充值成功。(设置奖励机制,单次充值满一定金额可以升级客户类别,不同的客户类别享有不同的折扣,可以适应酒店的个性化营销策略)
(9)刷新功能:点击刷新即可获得当前最新信息。
(1)在员工主界面,点击房间查询按钮,即可进入房间查询功能主界面。
(2)点击房间查询母功能,选择查询子功能:全部房间,已入住房间,未入住房间,已预约房间,未预约房间,实现对房间状态的了解。
(3)点击类型查询母功能,选择查询子功能:普通房间,VIP房间,VVIP房间,大床房,双人间,有窗房间,无窗房间,实现对房间类型的查询。
(4)员工没有对房间进行增删改的权限,只能够查询。
(1)经理(管理员)主页面选择入住登记功能,即进入入住登记功能界面。
(2)入住登记界面先要由工作人员输入客户的姓名,身份证号以及手机号,根据身份证号,检查用户是否第一次入住,如果是系统自动更新用户数据库,增加新用户;并且检查,用户是否已经提前预约,用户现在是否在入住,以保证按预约入住和禁止重复入住。对于可能出现变更的姓名和手机号,系统会自动更新
(3)输入信息后,自动进入入住登记-选择房间界面,该界面可以按类别查询空房间,包括VIP房间,VVIP空房间,普通空房间,还可以查看已预约房间,已入住房间。
(4)该界面根据不同用户自动展示:当前客户编号,当前客户类别,当前客户预约状态,当前客户入住状态,以及享受的折扣。
(5)输入房间号,以及入住天数,系统自动检查用户是否按预约房间入住,如果不是,则无法入住;并且检查已入住用户,无法重复入住;此外,若是预约用户,系统自动检测,预约入住时间是否早于当前入住登记时间,如果是,则退还定金到客户余额,如果不是,则提示,预约超时不退还。
(6)符合入住条件的客户,系统会自动计算入住所需费用,以及客户余额,如果账户余额不足,则无法入住,需要及时充值。足够,在余额中扣除对应费用后,系统自动更新数据库表的信息成功后,即入住成功!
(7)客户充值功能:选中客户,点击客户充值,即可进入客户充值界面,系统自动锁定充值的客户,输入充值金额,点击充值,即可充值成功。(设置奖励机制,单次充值满一定金额可以升级客户类别,不同的客户类别享有不同的折扣,可以适应酒店的个性化营销策略)
(1)在主页面点击客户管理功能按钮,进入客户管理功能界面。
(2)查看所有客户信息
(3)点击增加新客户,进入增加客户子界面,输入客户的姓名,身份证,手机号,余额,类别后,点击增加按钮,即可增加成功。(系统自动实现客户编号的递增生成,自动设置客户的初始状态为‘未入住’,无需手动输入)
(4)在客户管理界面选中某客户后,点击修改客户信息,即可进入修改客户子界面,显示当前修改的客户的编号,管理员输入对应修改的数值后,点击修改,即修改成功。(不可以从此界面修改客户状态,否则会引起数据的不一致)
(5)在客户管理界面选中某客户后,点击删除客户按钮,确认删除后,即可删除成功。
客户充值功能:选中客户,点击客户充值,即可进入客户充值界面,系统自动锁定充值的客户,输入充值金额,点击充值,即可充值成功。(设置奖励机制,单次充值满一定金额可以升级客户类别,不同的客户类别享有不同的折扣,可以适应酒店的个性化营销策略)
(6)修改折扣功能:配套于客户充值,点击进入修改客户类别折扣子功能界面,输入对应客户类别的折扣,便可修改客户享受的折扣力度。
(7)客户管理界面,提供基于姓名、身份证号、客户的类别进行模糊查询,输相应的信息后点击对应按钮,即可查询。
(8)刷新功能:点击刷新即可获得当前最新信息。
(1)在经理主界面点击订单管理,选择当前订单,即可进入当前订单管理界面。
(2)当前订单管理界面,点击查看订单,可以选择查看正在预约还未入住、正在入住还未退房的订单信息。
(3)订单修改功能:点击订单修改中的修改预约订单,即可进入订单修改界面,此界面可以修改预约的房间号、预约入住时间、以及入住天数,实现预约信息的修改。
(4)取消预约功能:在订单管理中选中订单,然后点击取消预约订单功能,系统自动检测是否是预约订单,如果不是,则无法取消,如果是,经过再次确认后,即可取消预约订单。并且一旦取消预约订单,则定金无法退还。
(5)刷新功能:点击刷新即可获得当前最新信息。
(6)若在经理主界面点击订单管理,选择历史订单,即可进入历史订单管理界面。
(7)历史订单界面,展示已经完成的订单,包括历史订单编号、客户编号、房间号、入住时间、退房时间、超时缴费、总消费,历史订单作为重要的酒店经营数据,只能查看,不能删改,也不能主动添加,只能在完成一个业务后由系统自动添加。
(1)经理(管理员)主页面选择预约入住功能,即进入预约入住登录界面
(2)输入客户的姓名,身份证号,手机号。系统根据身份证号检查客户是否第一次预约、入住本酒店,如果是,系统自动更新用户数据到数据库,增加新用户;然后检查是否已预约、入住,防止重复入住。并且对于可能出现变更的姓名和手机号,系统会自动更新。
(3)输入信息后,点击下一步,进入预约入住-选择房间界面,该界面可以按类别查询空房间,包括普通房间、VIP、VVIP房间,并且还可以查看已预约、已入住房间。
(4)该界面根据不同的用户信息,自动展示,当前客户编号,当前客户类别,当前客户预约状态,当前客户入住状态,以及享受的折扣。
(5)输入预约房间号、预约日期、入住天数后,系统首先检查房间可入住,之后需缴纳总订单金额的10%作为定金,若后续按时入住,定金将退还,否则将额外扣除这部分费用。如果余额不够,则充值后继续入住。此外,系统会检索输入的房间号是否存在等各种规范数据的操作。
(6)点击预约 系统更新数据库表的信息,若成功,则显示预约成功,否则预约失败。
(7)客户充值功能:选中客户,点击客户充值,即可进入客户充值界面,系统自动锁定充值的客户,输入充值金额,点击充值,即可充值成功。(设置奖励机制,单次充值满一定金额可以升级客户类别,不同的客户类别享有不同的折扣,可以适应酒店的个性化营销策略)
(1)经理(管理员)主页面选择入住登记功能,即进入入住登记功能界面。
(2)入住登记界面先要由工作人员输入客户的姓名,身份证号以及手机号,根据身份证号,检查用户是否第一次入住,如果是系统自动更新用户数据库,增加新用户;并且检查,用户是否已经提前预约,用户现在是否在入住,以保证按预约入住和禁止重复入住。对于可能出现变更的姓名和手机号,系统会自动更新
(3)输入信息后,自动进入入住登记-选择房间界面,该界面可以按类别查询空房间,包括VIP房间,VVIP空房间,普通空房间,还可以查看已预约房间,已入住房间。
(4)该界面根据不同用户自动展示:当前客户编号,当前客户类别,当前客户预约状态,当前客户入住状态,以及享受的折扣。
(5)输入房间号,以及入住天数,系统自动检查用户是否按预约房间入住,如果不是,则无法入住;并且检查已入住用户,无法重复入住;此外,若是预约用户,系统自动检测,预约入住时间是否早于当前入住登记时间,如果是,则退还定金到客户余额,如果不是,则提示,预约超时不退还。
(6)符合入住条件的客户,系统会自动计算入住所需费用,以及客户余额,如果账户余额不足,则无法入住,需要及时充值。足够,在余额中扣除对应费用后,系统自动更新数据库表的信息成功后,即入住成功!
(7)客户充值功能:选中客户,点击客户充值,即可进入客户充值界面,系统自动锁定充值的客户,输入充值金额,点击充值,即可充值成功。(设置奖励机制,单次充值满一定金额可以升级客户类别,不同的客户类别享有不同的折扣,可以适应酒店的个性化营销策略)
(1)经理(管理员)主页面选择退房登记功能,即进入退房登记功能界面。
(2)退房登记主界面展示当前处于入住或者预约状态的订单,包括:当前订单号,客户编号,房间号,入住时间,预计退房时间,订单状态
(3)点击查看订单,还可以分类选择查看全部订单、入住订单、预约订单。
(4)在订单表中选中订单后,点击退房,系统首先检测是否是正在入住的订单(如果是预约订单则无法退房),之后系统自动检测,预约退房时间是否早于当前退房时间,如果是,则无需超时缴费,系统更新客户、订单、房间信息后。即退房成功;否则如果超时,则需缴纳超时缴费,超时缴费是根据超时天数以及房间价格相乘得到,没有折扣,以作为罚款,只有余额充足并且缴纳罚款后方可退房!此功能,便于酒店客房的个性化管理,非常实用!
(5)客户充值功能:选中客户,点击客户充值,即可进入客户充值界面,系统自动锁定充值的客户,输入充值金额,点击充值,即可充值成功。(设置奖励机制,单次充值满一定金额可以升级客户类别,不同的客户类别享有不同的折扣,可以适应酒店的个性化营销策略)
(6)刷新功能:点击刷新即可获得当前最新信息。
入住登记,输入信息后,会自动检索,之后在入住时,会同时对客户、房间、订单表做修改,需要保证ACID特性;通过采用从数据库直接读取某行数据以及从界面的表中读取数据,实现前期数据的处理;后期execute的sql必须要每一条都执行成功,写在一个sql中,从而保证了原子性。多个表都修改,保证了一致性。
[1] Abraham Silberschatz,Henry F.Korth,《数据库系统概念》,机械工业出版社,2008。
[2] 王华杰,黄山 《精通C#数据库编程》,科学出版社,2003
[3] Chirs H.Pappas,William H.Murray 《C#Windows编程》,人民邮电出版社,2002
[4] 刘勇,周学军,《SQL Server 2000基础教程》,人民邮电出版社,2007。