首页 > 编程语言 >C#酒店管理系统

C#酒店管理系统

时间:2024-03-28 18:03:23浏览次数:22  
标签:酒店 管理系统 C# 信息 预约 客户 管理员 模块

一、摘 要

在科技高速发展的今天,一切商业行为都能跟计算机取得联系,这不仅仅是为了不落后于时代,不被主流所淘汰,更是为了更好的借助计算机来实现更大的商业利益。随着更多人接受电子商务,以及年轻一代享受电脑带来的方便、迅速,酒店行业也不例外的加入了电子商务的行列。现代化的酒店是集客房、餐饮、通讯、娱乐,商务文化及其他的各种服务与设施为一体化的消费场所。酒店在正常的运营中需要对客房资源、顾客信息、日志信息等进行管理,但是酒店组织庞大,服务项目多,信息量大,要想提高效率,降低成本,提高服务质量和管理水平,进而促进经济效益,必须借助计算机来进行现代化的信息管理。酒店管理系统正是为此而设计的。
酒店管理系统主要是运用C#语言进行开发,基于MVC设计模式、三层架构制作,用MySQL建立系统的后台数据库。根据对用户需求的研究,酒店管理系统主要从系统管理员登录、预约管理、客房管理、用户管理、酒店日志等五大模块进行开发,每一个模块都进行了详尽的功能分析。
关键词:酒店管理;C#;MySQL;MVC设计模式;三层架构;PC端

二、需求分析

酒店管理系统是以酒店管理员为基础建立的,是管理酒店客房业务的重要方法、手段、技术、和操作过程的集合,管理员可以对顾客的基本信息进行定期的更新和删除,酒店管理系统力求给用户方便快捷的途径去管理这些繁琐的数据,为酒店带来方便,实现信息化。

3.1 功能需求分析

通过对酒店需求的调研与分析,为此系统定义了管理员的角色。管理员主要是对预约管理、客房管理、客户管理、酒店日志等功能模块的管理,包括对酒店预约的增删改查,客房信息,客户信息等的查询等。酒店管理系统用例图如图3-1所示。
在这里插入图片描述

3.1.1 预约系统模块

对于酒店系统管理来说,管理员首先必登录系统,管理员登录成功后才能进行其他操作。对于预约系统模块,酒店管理员可以增加、修改、删除、查询预约信息,同时还可以对预约信息进行处理,对确定入住的预约信息通过确定按钮添加到客户管理模块,取消预约的信息进行删除处理。预约系统模块用例分析如图3-2所示。
在这里插入图片描述

3.1.2 客户管理模块

已登录的管理员可以进行客户信息的管理,当预约模块中确定入住时,客户信息会自动增加,同时在客户信息管理模块中还能对客户信息进行修改、增加、查询等操作。客户信息管理模块用例分析如图3-3所示。
在这里插入图片描述

3.1.3 客房管理模块

已登录的管理员可以查看并管理客房,在客房管理中,可以查看客房内居住的哪位客户,同时对客房进行入住、退房管理,还可以查看和刷新不同房间类型居住情况,客房管理模块左侧是查看客房的房间属性,即可住情况、已住房情况、脏房情况和是否在维修。同时,不同的房间属性对应着不同的颜色标记(可住房为浅绿色、已住房为深绿色、脏房为灰色、维修中为蓝色)客房管理模块用例分析如图3-4所示。
在这里插入图片描述

3.1.4 日志查看模块

管理员登录进酒店管理程序后可以查看酒店所有发生的事件,例如预约信息、预约取消信息、酒店客户入住及退房信息、房间居住信息、客户退房时收付款信息、管理员操作信息。日志查看模块用例分析如图3-5所示。
在这里插入图片描述

三、系统设计

本章主要根据需求分析阶段的准备工作对酒店管理系统进行了详细设计。详细划分了管理系统的各个模块,介绍了酒店管理系统的设计思想和各功能模块的实现逻辑。

4.1 界面设计原则

对于PC端而言,屏幕资源足够,在进行设计时不仅要考虑实用性,还要考虑系统界面美观性以及软件操作的便利性,在界面设计中,美观性方面我们采用了渐变色背景,就算长时间实用酒店管理系统也不会使眼睛过于疲惫,同时简洁美观的图片提示也让人眼前一亮;软件操作便利性方面,所有的功能都有文字提示,并且重要模块还有利于辨认的图标显示,按钮也清晰明了。
产品的界面易于管理员学习,并且易于使用,同时包含所有的功能的访问,能够清晰的表达,可以让管理员使用起来不存在困难,这样就会适合任何层次的用户。

4.2 功能详细设计

酒店管理系统的具体功能主要分为预约管理、客房管理、客户管理、酒店日志四大模块,酒店管理系统功能模块图如图4-1所示。
在这里插入图片描述

4.2.1 酒店管理系统主页面

当管理员成功登录酒店管理系统后,会进入酒店管理系统主页面,主页面包括四个主要模块的按钮,同时预约系统模块为默认主页面的一部分,在页面上方显示着酒店管理系统、admin【管理员】、当前时间、该系统作者的滚动条。

4.2.2 登录模块

进入酒店管理登录界面,酒店管理员只能选择登录方式访问酒店管理系统,初次使用酒店管理页面时,账户密码由酒店管理者设定,然后登录,登录成功后管理员可以对里面的功能进行操作,注册登录时序图如图4-2所示。
在这里插入图片描述

4.2.3 预约系统模块

预约系统模块主要功能如下:
(1) 预约功能:预约功能暂时只能使用到店、电话及web端预约。预约会给客户定下一个预约编号,并且记录预约人的号码、姓名、预订人数,同时选择房间类型,房间类型包括标准单人间、标准双人间、豪华单人间、豪华双人间、情侣套房、总统套房,并且能够获取实时日期。预约功能时序图如图4-3所示。
(2) 处理预约信息:管理员点击预约日期下的四个按钮可以实现预约信息的添加、删除、修改及查询,在成功预约的信息中,点击入住按钮后,会弹出确认客户是否入住的提示框,点击确定在客户信息页面会显示出管理员处理的预约信息。处理预约信息时序图如图4-4所示。
在这里插入图片描述

4.2.4 客房管理模块

客房管理模块中的主要功能为:
(1) 对客房属性处理及客户信息的查看:在客房管理模式下,当有客户入住或者退房时,管理员使用鼠标右键单击选择想要入住或要退的房间,会出现入住和退房的选项,管理员点击之后会变更客房属性,右键单击后还会出现查看客户信息的选项,管理员点击后能够看到详细的客户信息。鼠标左键点击房间时,会在房间属性下方出现房间各种属性(例如:房间号码,客户编号、入住时间、所在区域、房间状态)。
(2) 不同客房类型分类查看:在客房管理模式下,点击不同的客房类型,能够看到当前客房的使用数量,在管理员处理过客房信息后,管理员点击在客房类型后的刷新按钮,客房信息会发生改变,例如当客户退房后,客户居住的房间会由已住房的浅绿色变成脏房的灰色。查询不同客房数量时序图如图4-5所示。
(3) 实现退房功能:当管理员点击退房选择后,页面会弹出退房结算页面,退房结算页面包含客户结算页面和客户详细信息,在客户结算页面中会有客户编号、姓名、入住时间、入住房间号、已住天数,同时还有移动支付和银联支付两个按钮进行选择支付方式。退房结算时序图如图4-6所示。
在这里插入图片描述
在这里插入图片描述

4.2.5 客户管理模块

客户管理模块主要功能如下:
(1) 添加客户信息:以登录的管理员处理同意入住的预约信息时,当点击入住后,客户信息会自动获取将要入住的客户姓名和电话,客户编号后的刷新按钮可以获取一个随机数作为客户编号,填写完其他入住信息后,点击添加按钮,在和客户信息栏上方会显示出新添加的客户信息。非预约客户在填写完客户信息栏的内容后也能够成功添加。
(2) 查询和修改客户信息:当酒店入住客户过多时,在所有的客户信息里查找单个人的信息就会变得很困难,所以我们还设置了客户信息查询功能,在客户信息栏中输入想要查询的客户证件号码,就会在客户信息栏上方的显示视图中显示出想要查询出来的客户信息,同时也能够修改相应的客户信息。查询客户信息时序图如图4-7所示。
在这里插入图片描述

4.2.6 日志信息模块

日志信息模块主要功能如下:
(1)查询管理员的登录和部分查看日志:当管理员进行登录时,该系统会自动获取当前登录时间,并保存在日志信息数据库中,防止出现恶意登录事件,同时由于在酒店中身份证号码是敏感信息,所以的当管理员查看客户信息中的身份证编号时,该操作记录到管理员操作日志中。
(2)查询退房日志:当有客户退房时,该系统会获取房间号、客户编号、房间类型、消费单价、缴费时间、总金额、结算状态。防止客户不能成功结算,同时还便于后期酒店计算是否盈利,作为一种消费凭证,同时还设有删除按钮,可以删除出错的日志文件。退房日志查看时序图如图4-8所示。
(3) 删除日志功能:如果发现错误的日志信息时,管理员可以直接删除该信息,同时当日志信息过多时且日志信息对酒店没有作用时,可以直接清空。

四、系统实现

本章节主要论述了酒店管理系统的前端和后台各个模块的业务逻辑功能的实现。首先概述各个模块要完成的功能,然后结合流程图和伪代码详细介绍了实现细节,且每个功能都给出了运行效果图。

5.1 登录模块

管理员登录模块最基本的作用是为了验证酒店管理员身份,只有经过身份确认的管理员才能对酒店管理系统进行相关操作。在用户登录界面点击登录按钮,信息与数据库内的信息匹配时,成功登录,进入主界面。账户不匹配时,弹出搜索不到该用户的提示框,密码不匹配时,弹出该用户密码错误提示框。具体的登录流程图如图5-1所示。
在这里插入图片描述
5.1.1 登录功能实现
用登录界面初始用户名文本框、密码文本框的数据为数据库中管理员的用户名、密码,可直接点击登录按钮进入主菜单。

private void FrmLogin_Load(object sender, EventArgs e)
        {
            txtWorkerId.Text = "admin";
            txtWorkerPwd.Text = "1111";
            AnimateWindow(this.Handle, 800, AW_BLEND | AW_CENTER | AW_ACTIVATE);
     }

文本框内容规范校验通过点击登录按钮事件触发,如果文本框不符合规范则给出错误信息提示框。
代码如下:

if (txtWorkerId.Text == "")
{
    MessageBox.Show("请输入账号!", "输入提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
    txtWorkerId.Focus();
    return false;
  }
  if (txtWorkerPwd.Text == "")
  {
     MessageBox.Show("请输入密码!", "输入提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
     txtWorkerPwd.Focus();
     return false;
  }
 return true;

最后在单击“登录”按钮时,文本框与密码框内容与login表信息相匹配,先匹配用户名,如果没匹配到这个用户名,则提示“用户名错误”;通过用户名匹配密码,如果匹配成功则进入主界面,否则提示“密码错误”。用户登录的界面如图5-2所示。
在这里插入图片描述

5.2 主界面模块

主界面模块主要包括四个窗体的跳转方式、滚动条以及一个容器,容器内存放其他的窗体,未运行时效果如图5-3所示:
在这里插入图片描述
此外,还增加的一个ContextMenuStrip组件,可以实现锁屏、检查更新、关于我们、退出系统的功能。

5.3 客户预约模块

主界面中点击“预约管理“图片可跳转到用户预约模块,该窗体包含若干文本框、下拉列表、日期框,CRUD的图片,以及一个gridview。

5.3.1 后端功能实现

点击预约管理之后,从数据库中取数据放入gridview中;有CRUD按钮进行对reser表的增删改查操作,客户预约页面展示如图5-4所示:
在这里插入图片描述

5.3.2 前端功能实现

通过从后端提取的gridview表格中获取鼠标惦记的当前行的索引,并将该行的数据存入各文本框中,核心代码如下:

private void dgvBou_CellClick(object sender, DataGridViewCellEventArgs e)
{
txtReserNo.Text=dgvBou.SelectedRows[0].Cells["clReserId"].Value.ToString();
txtCustoName.Text=dgvBou.SelectedRows[0].Cells["clCustoName"].Value.ToString();
txtCustoTel.Text = dgvBou.SelectedRows[0].Cells["clCustoTel"].Value.ToString();
cboReserWay.Text=dgvBou.SelectedRows[0].Cells["clReserWay"].Value.ToString();
cboRoomType.Text=dgvBou.SelectedRows[0].Cells["clReserRoom"].Value.ToString();
ReserCash.Text = dgvBou.SelectedRows[0].Cells["clReserCash"].Value.ToString();
dtpBouDate.Text=dgvBou.SelectedRows[0].Cells["clReserDate"].Value.ToString();
txtReserNum.Text=dgvBou.SelectedRows[0].Cells["clReserPerson"].Value.ToString();        
}

此外,该窗体有两个静态变量分别存入姓名和电话两个字段,点击gridview的入住按钮会将这两个变量传递给用户管理窗体,核心代码如下:

public static string name;
public static string tel;
if (e.ColumnIndex == this.dgvBou.Columns["movein"].Index)
{
if (MessageBox.Show("确定要给此客户办理入住吗?", "重要提示!", MessageBoxButtons.OKCancel,MessageBoxIcon.Exclamation)== System.Windows.Forms.DialogResult.OK)
{
     	  int rows = dgvBou.CurrentRow.Index; //得到当前行的索引
         name = dgvBou.Rows[rows].Cells[1].Value.ToString();
         tel = dgvBou.Rows[rows].Cells[2].Value.ToString();
      }
}

5.4 客户管理模块

5.4.1 后端功能实现

点击用户管理之后,通过连接查询(userinfo、usertype、passporttype)从数据库中取数据放入gridview中;有CRU按钮进行对userinfo表的增改查操作,用户管理页面展示如下图所示:
在这里插入图片描述

5.5.1 房间信息

在这里插入图片描述

5.5.2 入住信息

在这里插入图片描述

5.5.3 退房信息

在这里插入图片描述

5.6 日志模块

在这里插入图片描述

六、联系与交流

q:969060742 完整代码、sql、报告

标签:酒店,管理系统,C#,信息,预约,客户,管理员,模块
From: https://blog.csdn.net/m0_58065010/article/details/137079216

相关文章

  • C语言入门基础及环境(2)
    P4C程序快速入门和机制分析一、快速入门路径:e:\文档\visualstudio2010\Projects设置字体:自我感觉这个看起来很舒服调试标志设置:二、C程序运行机制编辑:编写我们的.C文件,就是源代码//开发项目#include<stdio.h>//引入头文件,后面还会详细介绍voidmain(){......
  • C语言历程和VC 6.0的安装(1)
    P1什么是程序一、C语言的概述指令:程序:为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合。P2C语言发展历程一、发展历程C语言是目前世界上使用非常广泛的编程语言(2018)诞生小故事:发展历程图:二、C语言的特点P3C程序开发环境搭建一、工......
  • 【项目实战】记一次因单元测试注解@BeforeEach 和@Before错误使用导致的空指针异常
    一、错误说明在项目开发过程中,我们可能会遇到因单元测试注解@BeforeEach和@Before错误使用导致的空指针异常。在使用JUnit5框架时,错误地使用了@Before注解,导致在每个测试方法执行前没有正确初始化对象,从而引发空指针异常。二、报错内容为了解决这个问题,需要了解这两个注......
  • 【数据库】PostgreSQL中使用`SELECT DISTINCT`和`SUBSTRING`函数实现去重查询
    在PostgreSQL中,我们可以使用SELECTDISTINCT和SUBSTRING函数来实现对某个字段进行去重查询。本文将介绍如何使用这两个函数来实现对resource_version字段的去重查询。1.SELECTDISTINCT语句SELECTDISTINCT语句用于从表中选择不重复的记录。如果没有指定列名,则会选择所有列。在......
  • 探索多种数据格式:JSON、YAML、XML、CSV等数据格式详解与比较
    1.数据格式介绍数据格式是用于组织和存储数据的规范化结构,不同的数据格式适用于不同的场景。常见的数据格式包括JSON、YAML、XML、CSV等。数据可视化|一个覆盖广泛主题工具的高效在线平台(amd794.com)https://amd794.com/jsonformat2.JSON(JavaScriptObjectNotation)......
  • docker常用命令
    最后修改时间2024-03-28操作系统Linuxversion5.15.0-86-generic(buildd@lcy02-amd64-086)(gcc(Ubuntu11.4.0-1ubuntu1~22.04)11.4.0,GNUld(GNUBinutilsforUbuntu)2.38)#96-UbuntuSMPWedSep2008:23:49UTC2023一些docker常用指令查看镜像列表sudodocker......
  • 【CSS浮动属性】别再纠结布局了!一文带你玩转CSS Float属性
    在网页设计的世界里,CSS浮动属性(float)就像一把双刃剑。它能够让元素脱离文档流,实现灵活的布局,但如果处理不当,也可能引发一系列布局问题。今天,我们就来深入探讨这把“剑”的正确使用方法,让你的页面布局既美观又稳定。一、什么是CSS浮动属性浮动属性是CSS中的一个定位属性,它允许元......
  • docker 安装jenkins和gitlab
    安装jenkins#下载镜像dockerpulljenkins/jenkins#创建文件夹mkdir-p/home/jenkins_home#权限chmod777/home/jenkins_home#启动dockerrun-d-uroot-p9095:8080-p50000:50000--namejenkins-v/home/jenkins_home:/var/jenkins_home-v/etc/localtime:/etc......
  • docker创建nginx
    操作系统Linuxversion5.15.0-86-generic(buildd@lcy02-amd64-086)(gcc(Ubuntu11.4.0-1ubuntu1~22.04)11.4.0,GNUld(GNUBinutilsforUbuntu)2.38)#96-UbuntuSMPWedSep2008:23:49UTC2023查找nginx1.24sudodockersearchnginx:1.24拉nginx1.24sudodock......
  • AtCoder Beginner Contest 346
    AtCoderBeginnerContest346比赛链接A-AdjacentProduct思路:b[i]=a[i]*a[i+1]Code#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#defineall(x)x.begin()+1,x.end()voidsolve(){ intn; cin>>n; std::vector<in......