返回顶部
首页 > 资讯 > 数据库 >【C#项目】酒店管理系统-WinForm+MySQL
  • 292
分享到

【C#项目】酒店管理系统-WinForm+MySQL

c#mysql数据库 2023-09-30 13:09:23 292人浏览 薄情痞子
摘要

文章目录 前言实现步骤 一、系统分析1、需求分析(1)用户管理(2)客人信息管理(3)客房信息管理(4)客房预定信息管理 2、系统设计3、数据库设计 二、

文章目录


前言

结合.net三层机构的开发思想,完成一个C/S结构的、实际可以使用的酒店管理系统。涉及编程方面的重要技巧,如ADO.NET技术、数据验证技术、参数传递、数据显示控件及容器控件。

实现步骤

  • 酒店管理系统的系统分析。
  • 用户管理模块的设计和实现。
  • 酒店基础信息设置模块的设计和实现。
  • 酒店业务管理模块的设计和实现。

一、系统分析

用途:帮助酒店管理的工具
功能1:添加、删除、修改住房信息。
功能2:添加、删除、修改客人信息。

1、需求分析

需求分析是开发应用系统的第一步,通过需求分析可以了解客户需要什么样的程序,需要完成什么功能。通过需求说明书描述系统的总体要求,并且作为各方面沟通的依据,也为下一步工作提供基准。系统开发人员要按照需求说明文档完成相应的功能实现。可以找一下标准的需求说明书文档参考。

酒店管理系统用于管理和维护酒店的基本信息,酒店管理人员登录系统后可以拥有该系统的所有功能,方便进行酒店内部管理。改系统使用数据库存放数据。

以下为需求分析的结果——系统功能设计图。

(1)用户管理

可登录本系统的人员管理。信息必须在用户数据中才可以登录。
功能:
用户信息的查询、增加、删除、修改。

(2)客人信息管理

功能:
客人住房情况管理(客人姓名、入住房间、入住时间、离开时间)。
根据客人名称对客房预定信息进行查询。

(3)客房信息管理

功能:
客房类型管理(客房类型分中、高、低)。
客房使用情况(空闲、入住、维修、自用)。
根据客房类型对房间进行统一定价,并设置某类客房是否可以加床以及加床的价格。
每一个房间的属性,如房号、类型、价格、床位数、对该客房的描述。
根据客房信息名称、客房房间号对信息进行查找。

(4)客房预定信息管理

客房属性:房号、类型、床位数、价格、使用情况描述。
客房使用状态:空闲、入住、维修、自用。
根据客房的房号进行信息查找。

2、系统设计

本系统的总体架构采用三层架构模式,分为表示层、业务逻辑层、数据访问层。其中表示层负责界面的显示,提供用户交互操作界面。业务逻辑层是表示层和数据访问层之间的桥梁,主要负责数据的处理和传递。数据访问层主要实现对数据的读取和保存操作。

该系统较为简单,没有使用接口和反射技术。三个模块之间使用对象或者数据集进行通信。
每一层使用程序集实现,三层架构的程序不可跨层调用。

三层系统架构图:
在这里插入图片描述

3、数据库设计

实体关系概念模型设计(E-R图)
在这里插入图片描述
数据表设计
在这里插入图片描述

客人信息表(Guest):

在这里插入图片描述

客人类型表(GuestCateGory):

在这里插入图片描述

客房信息表(Room)

在这里插入图片描述

客房类型表(RoomType)

在这里插入图片描述

数据表的E-R模型视图

在这里插入图片描述

二、实体类设计

在之前做的图书馆管理系统中,表示层界面的数据是直接从数据库中读取的数据,这种方式容易把数据结构暴露在表示层和业务逻辑层,不利于数据安全

实体类具有面向兑现的基本特性,是业务对象的基础。在三层结构之间通过实体类传递数据有很大的灵活性,有助于项目的维护和扩展,更体现三层结构的优势。

本项目根据系统功能和数据库的设计,将五个数据表分别转换为五个实体类。

Guest实体类
2、GuestCategory实体类
3、Room实体类
4、RoomType实体类
5、HotelUser实体类

1、HotelUser实体类

HotelUser实体类对应于数据库中的HotelUser数据表,将其转化成面向对象的标识形式。

一般实体类中都包含字段和属性。如果属性是可读可写,就可以采用重构的方式快速完成实体类的创建。但是如果属性只能可读或者可写,就需要手动创建类。

HotelUser实体类的类图:

在这里插入图片描述

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace HotelManageLib{    [Serializable]    public class HotelUser    {        private static int userID;//用户ID        private static string userName = String.Empty;//用户名        private static string passWord = String.Empty;//用户密码        ///         /// 用户ID        ///         public int UserID        {            get { return userID; }            set { userID = value; }        }        ///         /// 用户名        ///         public string UserName        {            get { return userName; }            set { userName = value; }        }        ///         /// 用户密码        ///         public string Password        {            get { return password; }            set { password = value; }        }        public HotelUser() { }    }}
2、Guest实体类

在这里插入图片描述

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace HotelManageLib{    [Serializable]    public class Guest    {        ///         /// 客人ID        ///         private static int guestId;//客人Id,int类型        public int GuestID        {            get { return guestId; }            set { guestId = value; }        }        ///         /// 客人姓名        ///         private static string guestName;//客人姓名        public string GuestName        {            get { return guestName; }            set { guestName = value; }        }        ///         /// 客人类别        ///         private static int guestTypeId;//客人类别        public int GuestTypeID        {            get { return guestTypeId; }            set { guestTypeId = value; }        }        ///         /// 客人性别        ///         private static string guestSex;//客人性别        public string GuestSex        {            get { return guestSex; }            set { guestSex = value; }        }        ///         /// 电话        ///         private static string guestMobile;//电话        public string GuestMobile        {            get { return guestMobile; }            set { guestMobile = value; }        }        ///         /// 房间号        ///         private static int guestRoomId;//房间号,int类型        public int GuestRoomID        {            get { return guestRoomId; }            set { guestRoomId = value; }        }        ///         /// 入住时间        ///         private static DateTime guestArriveTime;//入住时间,时间类型        public DateTime GuestArriveTime        {            get { return guestArriveTime; }            set { guestArriveTime = value; }        }        ///         /// 离开时间        ///         private static DateTime guestLeaveTime;//离开时间,时间类型        public DateTime GuestLeaveTime        {            get { return guestLeaveTime; }            set { guestLeaveTime = value; }        }    }}
3、GuestType实体类

在这里插入图片描述

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace HotelManageLib{    [Serializable]    public class GuestType    {        ///         /// 客人类型ID        ///         private static int typeId;//客人类型ID        public int TypeID        {            get { return typeId; }            set { typeId = value; }        }        ///         /// 类型名称        ///         private static string typeName;//类型名称        public string TypeName        {            get { return typeName; }            set { typeName = value; }        }        public GuestType()        { }    }}
4、Room实体类

在这里插入图片描述

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace HotelManageLib{    [Serializable]    public class Room    {        protected static int roomId;//房间号Id        protected static string number = String.Empty;//房间号        protected static int typeId;//房间类型ID        protected static int bedNumber;//床位数        protected static string description = String.Empty;//房间描述        protected static string state = String.Empty;//房间状态        protected static int guestNumber;//入住客人数        public Room()        { }        ///         /// 房间号ID        ///         public int RoomID        {            get { return roomId; }            set { roomId = value; }        }        ///         /// 房间号        ///         public string Number        {            get { return number; }            set { number = value; }        }        ///         /// 房间类型ID        ///         public int TypeID        {            get { return typeId; }            set { typeId = value; }        }        ///         /// 床位数        ///         public int BedNumber        {            get { return bedNumber; }            set { bedNumber = value; }        }        ///         /// 房间描述        ///         public string Description        {            get { return description; }            set { description = value; }        }        ///         /// 房间状态        ///         public string State        {            get { return state; }            set { state = value; }        }        ///         /// 入住客人数        ///         public int GuestNumber        {            get { return guestNumber; }            set { guestNumber = value; }        }    }}
5、RoomType实体类

在这里插入图片描述

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace HotelManageLib{    [Serializable]    public class RoomType    {        protected static int typeId;//房间类型ID        protected static string typeName;//房间类型名        protected static string typePrice;//房间类型价格        protected static string addBedPrice;//添加床位的价格        protected static string isAddBed;//是否添加床位        protected static string remark;//备注        public RoomType()        { }        ///         /// 房间类型ID        ///         public int TypeID        {            get { return typeId; }            set { typeId = value; }        }        ///         /// 房间类型名        ///         public string TypeName        {            get { return typeName; }            set { typeName = value; }        }        ///         /// 房间类型价格        ///         public string TypePrice        {            get { return typePrice; }            set { typePrice = value; }        }        ///         /// 添加床位价格        ///         public string AddBedPrice        {            get { return addBedPrice; }            set { addBedPrice = value; }        }        ///         /// 是否添加床位        ///         public string IsAddBed        {            get { return isAddBed; }            set { isAddBed = value; }        }        ///         /// 备注        ///         public string Remark        {            get { return remark; }            set { remark = value; }        }    }}

三、界面设计

1、用户登录界面

在这里插入图片描述

2、主界面

在这里插入图片描述

3、客人信息界面

在这里插入图片描述

4、客房信息界面

在这里插入图片描述

5、客房类型设置界面

在这里插入图片描述

6、用户管理界面

在这里插入图片描述

四、实现数据访问层

1、数据库通用操作类

通信模块:

public static class DBModule{    public static string ServerIP = "***.***.***.***";    public static string ServerPort = "33**";    public static string ServerUser = "#####";    public static string ServerPassword = "******";    public static string ServerDBName = "hotelmanage";}

操作模块:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using Mysql.Data.mysqlClient;using System.Data;public class MysqlHelper{    private MySqlConnection myConnection;    private string mErrorString;    //构造函数    public MySQLHelper(string strServerIP, string strServerPort, string strServerUser, string strPassword, string strDBName)    {        string strConnectionString = String.FORMat("server={0}; port={1}; user id={2}; password={3}; database={4}",             strServerIP, strServerPort, strServerUser, strPassword, strDBName);        myConnection = new MySqlConnection(strConnectionString);    }    //测试连接    public bool ConnectionTest()    {        bool result = false;        try        {            if (myConnection.State == System.Data.ConnectionState.Closed)            {                myConnection.Close();                result = true;            }        }        catch (MySqlException ex)        {            mErrorString = ex.ToString();        }        return result;    }    ///     /// 执行查询语句,用DataTable返回结果,调用前要传入DataTable的实例化对象作为参数    ///     /// 查询命令    /// 返回数据表    ///     public bool ExcuteQuerySql(string strQuery, ref DataTable dt)    {        if (dt == null)        {            mErrorString = "传入的DataTable为null";            return false;        }        bool result = false;        try        {            MySqlCommand myCommand = new MySqlCommand(strQuery);            myCommand.Connection = myConnection;            if (myConnection.State == ConnectionState.Closed)            {                myConnection.Open();            }            dt.Load(myCommand.ExecuteReader());            result = true;        }        catch (MySqlException ex)        {            mErrorString = String.Format("ExcuteQuery {0} failed.", ex.ToString());            return false;        }        finally        {            myConnection.Close();        }        return result;    }    ///     /// 执行带参数的查询语句,使用前传入参数、DataTable实例化对象    ///     /// 查询语句    ///     ///     ///     public bool ExcuteQuerySql(string strQuery, MySqlParameter[] param, ref DataTable dt)    {        if (dt == null)        {            mErrorString = "传入的DataTable为null.";            return false;        }        bool result = false;        try        {            MySqlCommand myCommand = new MySqlCommand(strQuery);            myCommand.Connection = myConnection;            if (myConnection.State == ConnectionState.Closed)            {                myConnection.Open();            }            for (int i = 0; i < param.Length; i++)            {                myCommand.Parameters.Add(param[i]);            }            dt.Load(myCommand.ExecuteReader());            result = true;        }        catch (MySqlException ex)        {            mErrorString = String.Format("ExcuteQuery {0} failed", strQuery) + ex.Message;            return false;        }        finally        {            myConnection.Close();        }        return result;    }    //执行非查询语句    public int ExcuteSql(string SqlCmdText)    {        int row = -1;        try        {            MySqlCommand myCommand = new MySqlCommand(SqlCmdText);            myCommand.CommandText = SqlCmdText;            myCommand.Connection = myConnection;            if (myConnection.State == ConnectionState.Closed)            {                myConnection.Open();            }            row = myCommand.ExecuteNonQuery();        }        catch (MySqlException ex)        {            mErrorString = String.Format("ExcuteNonQuery {0} failed", SqlCmdText);        }        return row;    }    //执行非查询语句    public int ExcuteSql(string[] SqlCmdText)    {        try        {            if (myConnection.State == ConnectionState.Closed)            {                myConnection.Open();            }            for (int i = 0; i < SqlCmdText.Length; i++)            {                MySqlCommand myCommand = new MySqlCommand(SqlCmdText[i]);                myCommand.CommandText = SqlCmdText[i];                myCommand.Connection = myConnection;                myCommand.ExecuteNonQuery();            }        }        catch (MySqlException ex)        {            mErrorString = String.Format("ExcuteNonQuery {0} failed", SqlCmdText) + ex.Message;            return -1;        }        return -1;    }    //执行带参数的非查询语句    public int ExcuteSql(string SqlCmdText, MySqlParameter[] param)    {        int row = -1;        try        {            MySqlCommand myCommand = new MySqlCommand(SqlCmdText);            myCommand.CommandText = SqlCmdText;            myCommand.Connection = myConnection;            if (myConnection.State == ConnectionState.Closed)            {                myConnection.Open();            }            for (int i = 0; i < param.Length; i++)            {                myCommand.Parameters.Add(param[i]);            }            row = myCommand.ExecuteNonQuery();        }        catch (MySqlException ex)        {            mErrorString = String.Format("ExecuteNonQuery {0} failed", SqlCmdText) + ex.Message;            return row = -1;        }        return row;    }    public string GetErrInfo()    {        return mErrorString;    }}
2、用户管理数据访问

用户管理的数据访问(HotelUserService.cs)需要实现对用户(用户表)的增、删、改、查操作,使用实体对象传递数据,使用IList传递实体对象集合。此类中包含的方法有如下几种:

AddHotelUser(Hotel hotelUser):用户对象作为参数,实现添加新用户的功能。
DeleteHotelUser(Hotel hotelUser):用户对象作为参数,实现删除用户的操作。
DeleteHotelUserByUserID(int userID):根据用户ID删除用户的方法。
ModifyHotelUser(Hotel hotelUser):用户对象作为参数,实现对用户信息的更新。

GetAllHotelUsers():获取所有用户信息。
GetHotelUserByUserID(int userID):根据用户ID查询用户信息。
GetHotelUserByName(string userName):根据用户名查询用户信息。

用户管理数据访问类HotelUserService.cs代码:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using MySql.Data;using System.Data;using System.windows.Forms;namespace HotelManageLib{    [Serializable]    public class HotelUserService    {        //建立MySQL连接        MySQLHelper sqlHelper = new MySQLHelper(DBModule.ServerIP, DBModule.ServerPort, DBModule.ServerUser, DBModule.ServerPassword, DBModule.ServerDBName);        //公用数据表,用来进行操作后刷新数据        static DataTable dtAllUsers = new DataTable();//获取全部用户信息        public static int aaa = 1;                ///         /// 添加用户        ///         ///         ///         public static  HotelUser AddHotelUser(HotelUser hotelUser)        {            string sql = "insert into user (UserName, Password) values ('" + hotelUser.UserName + "', '" + hotelUser.Password + "');";//定义插入sql语句            int newID = 0;            DataTable dt = new DataTable();            try            {    //执行添加语句                int returnValue = MySQLHelper.ExcuteSql(sql);                if (returnValue == 0)                {                    //获取最新一条数据的ID                    string sqlNew = "select max(UserId) from user;";                    bool QueryFlag = MySQLHelper.ExcuteQuerySql(sqlNew, ref dt);                    if (QueryFlag == true)                    {                        newID = Convert.ToInt32(dt.Rows[0][0]);                    }                    else                    {                        Console.WriteLine("执行" + sqlNew + "查询最新用户ID失败");//异常写入日志                    }                }                else                {                    Console.WriteLine("执行" + sql + "添加用户信息失败");//异常写入日志                }            }            catch (Exception ex)            {                //异常写入日志                Console.WriteLine(ex.ToString());                throw ex;            }            return GetHotelUserByUserId(newID);//返回查询对象        }        ///         /// 删除用户        ///         ///         public static void DeleteHotelUser(HotelUser hotelUser)        {            HotelUser hotelUserTmp = new HotelUser();            //根据用户名查询对应的用户ID            string sql = "select UserID from user where UserName='" + hotelUser.UserName + "';";            //查询用户信息            if (hotelUser.UserName != string.Empty)            {                hotelUserTmp = GetHotelUserByUserName(hotelUser.UserName);//查询此用户                if (hotelUserTmp != null)                {                    DeleteHotelUserByUserId(hotelUserTmp.UserID);//根据此用户的用户ID删除信息                }                else                {                    MessageBox.Show("没有该用户信息,不能删除");                }            }            else            {                MessageBox.Show("要删除的用户名为空,不能删除该用户信息");            }        }        ///         /// 通过用户ID删除用户        ///         ///         public static void DeleteHotelUserByUserId(int userId)        {            //先查询是否有此ID的用户            HotelUser hotelUser = new HotelUser();            hotelUser = GetHotelUserByUserId(userId);            if (hotelUser != null)            {                string sql = "delete from user where UserID = " + userId + ";";                DataTable dt = new DataTable();                try                {                    //执行删除语句                    int returnValue = MySQLHelper.ExcuteSql(sql);                    if (returnValue == 1)                    {                        //添加后更新全部数据                        GetAllHotelUsers();                        MessageBox.Show("通过此用户ID" + userId.ToString() + "删除用户信息成功");                    }                    else                    {                        //异常写入日志                        Console.WriteLine("执行" + sql + "删除用户信息失败");                    }                }                catch (Exception ex)                {                    //异常写入日志                    Console.WriteLine(ex.ToString());                    MessageBox.Show(ex.ToString());                }            }            else            {                MessageBox.Show("输入ID" + userId.ToString() + "的用户不存在,不能删除");            }        }        ///         /// 修改用户信息        ///         ///         public static DataTable ModifyHotelUser(HotelUser hotelUser)        {            string sql = "update user set UserName='" + hotelUser.UserName + "', Password='" + hotelUser.Password + "' where UserId=" + Convert.ToInt32(hotelUser.UserID) + ";";            DataTable dt = new DataTable();            try            {                //执行添加语句                int returnValue = MySQLHelper.ExcuteSql(sql);                if (returnValue == 1)                {                    dt = GetAllHotelUsers();        }                else                {                    //异常写入日志                    Console.WriteLine("执行" + sql + "添加用户信息失败");                }            }            catch (Exception ex)            {                //异常写入日志                Console.WriteLine(ex.ToString());                throw ex;            }            return dt;        }        ///         /// 获取所有用户信息        ///         ///         public static DataTable GetAllHotelUsers()        {            string sql = "select * from user;";            try            {                //执行添加语句                bool returnValue = MySQLHelper.ExcuteQuerySql(sql, ref dtAllUsers);            }            catch (Exception ex)            {                //异常写入日志                Console.WriteLine(ex.ToString());                throw ex;            }            return dtAllUsers;        }        ///         /// 通过用户ID获取用户信息        ///         ///         ///         public static HotelUser GetHotelUserByUserId(int userId)        {            HotelUser hotelUser = new HotelUser();            string sql = "select * from user where UserID = " + userId + ";";            DataTable dt = new DataTable();            try            {                //执行查询语句                bool returnValue = MySQLHelper.ExcuteQuerySql(sql, ref dt);                if (returnValue == true)                {                    //添加后更新DataGridView                    if (dt.Rows.Count > 0)                    {                        hotelUser.UserID = Convert.ToInt32(dt.Rows[0][0]);//第0列为用户ID                        hotelUser.UserName = dt.Rows[0][1].ToString();//第1列为用户名                        hotelUser.Password = dt.Rows[0][2].ToString();//第2列为用户密码                    }                    else                    {                        hotelUser = null;                        //异常写入日志                        //Console.WriteLine("执行" + sql + "根据用户ID查询用户信息失败");                        MessageBox.Show("执行" + sql + "根据用户ID查询用户信息失败");                    }                }                else                {                    //异常写入日志                    //Console.WriteLine("执行" + sql + "根据用户ID查询用户信息失败");                    MessageBox.Show("执行" + sql + "根据用户ID查询用户信息失败");                }            }            catch (Exception ex)            {                //异常写入日志                Console.WriteLine(ex.ToString());                MessageBox.Show(ex.ToString());            }            return hotelUser;        }        ///         /// 通过用户名获取用户信息        ///         ///         ///         public static HotelUser GetHotelUserByUserName(string userName)        {            HotelUser hotelUser = new HotelUser();            string sql = "select * from user where UserName='" + userName + "';";            DataTable dt = new DataTable();            try            {                //执行添加语句                bool returnValue = MySQLHelper.ExcuteQuerySql(sql, ref dt);                if (returnValue == true)                {                    if (dt.Rows.Count > 0)                    {                        hotelUser.UserID = Convert.ToInt32(dt.Rows[0][0]);//第0列为用户ID                        hotelUser.UserName = dt.Rows[0][1].ToString();//第1列为用户名                        hotelUser.Password = dt.Rows[0][2].ToString();//第2列为用户密码                    }                    else                    {                        hotelUser = null;                        //异常写入日志                        Console.WriteLine("执行" + sql + "根据用户ID查询用户信息失败");                    }                }                else                {                    //异常写入日志                    Console.WriteLine("执行" + sql + "添加用户信息失败");                }            }            catch (Exception ex)            {                //异常写入日志                Console.WriteLine(ex.ToString());                throw ex;            }            return hotelUser;        }    }}
3、客房信息数据访问

客房信息数据访问类(RoomService.cs)与用户管理类相似,其中方法是对客房信息数据库进行增、删、改、查操作,操作方式、参数略有不同。
此类中包含的方法如下几种:

AddRoom(Room room):客房对象作为参数,实现增加客房信息。
DeleteRoomById(int roomId):根据客房ID删除客房信息。
ModifyRoom(Room room):客房对象作为参数,实现修改客房信息。

GetAllRooms():查询所有客房信息。
GetRoomById(int roomId):根据客房ID查询客房信息(客房实体对象)。
GetRoomListByRoomNumber(string roomNumber):根据客房编号查询同编号的客房集合。
GetRoomByRoomNumber(string roomNumber):根据客房编号查询客房信息。

在这里插入代码片
4、客房类型数据访问

客房类型访问类(RoomTypeService.cs)实现客房类型的数据库操作,方法与客房信息的操作类似,实现对客房类型信息的增删改查。此类中实现方法如下:

AddRoomType(RoomType roomType):客房类型对象作为参数,实现增加客房类型。
DeleteRoomType(int roomTypeId):根据客房类型ID删除客房类型信息。
ModifyRoomType(RoomType roomType):客房类型对象作为参数,实现客房类型信息修改。

GetAllRoomTypes():得到所有房间类型。
GetRoomTypeListByTypeName(string typeName):根据客房类型名称得到客房类型列表。
GetTypeNameByTypeId(int typeID):根据客房类型ID得到客房类型名字。
GetRoomTypeByTypeID(int typeId):根据客房类型ID得到客房实体对象。

5、客人管理数据访问

客人管理类(GuestService.cs)实现对客人信息的数据库操作,方法与客房信操作类似,实现对客人信息的增删改查。此类中实现方法如下:

AddGuest(Guest guest):客人对象作为参数,实现增加客人信息。
DeleteGuest(int guestId):根据客人ID删除客人信息。
ModifyGuest(Guest guest):客人对象作为参数,实现修改客人信息。

GetAllGuest():获取所有客人信息。
GetGuestByGuestName(string guestName):根据客人名字获取客人信息。
GetGuestListBySql(string safeSql):根据sql语句获取客人信息列表。

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using MySql.Data;using System.Data;using System.Windows.Forms;namespace HotelManageLib{    [Serializable]    public class GuestService    {        //建立MySQL连接        MySQLHelper sqlHelper = new MySQLHelper(DBModule.ServerIP, DBModule.ServerPort, DBModule.ServerUser, DBModule.ServerPassword, DBModule.ServerDBName);        //公用数据表,用来进行操作后刷新数据        static DataTable dtAllGuests = new DataTable();//获取全部用户信息        ///         /// 添加用户        ///         ///         ///         public static Guest AddGuest(Guest guest)        {            string sql = "insert into guest (GuestName, GuestTypeID, GuestSex, GuestMobile, RoomID, GuestArriveTime, GuestLeaveTime) values ('" +                guest.GuestName +                 "', " + guest.GuestTypeID +   //int不需要引号                ", '" + guest.GuestSex +                "', '" + guest.GuestMobile +                "', " + guest.GuestRoomID +     //int不需要引号                ", '" + guest.GuestArriveTime +                 "', '" + guest.GuestLeaveTime +                 "');";//定义插入sql语句            int newID = 0;            DataTable dt = new DataTable();            try            {                //执行添加语句                int returnValue = MySQLHelper.ExcuteSql(sql);                if (returnValue == 0)                {                    //获取最新一条数据的ID                    string sqlNew = "select max(GuestID) from guest;";                    bool QueryFlag = MySQLHelper.ExcuteQuerySql(sqlNew, ref dt);                    if (QueryFlag == true)                    {                        newID = Convert.ToInt32(dt.Rows[0][0]);                    }                    else                    {                        Console.WriteLine("执行" + sqlNew + "查询最新客人ID失败");//异常写入日志                    }                }                else                {                    Console.WriteLine("执行" + sql + "添加客人信息失败");//异常写入日志                }            }            catch (Exception ex)            {                //异常写入日志                Console.WriteLine(ex.ToString());                MessageBox.Show("插入客人信息失败" + ex.ToString());            }            return GetGuestByGuestId(newID);//返回查询对象        }        ///         /// 删除客人        ///         ///         public static void DeleteGuest(Guest guest)        {            Guest guestTmp = new Guest();            //根据用户名查询对应的用户ID            string sql = "select GuestID from guest where GuestName='" + guest.GuestName + "';";            //查询用户信息            if (guest.GuestName != string.Empty)            {                guestTmp = GetGuestByGuestName(guest.GuestName);//查询此用户                if (guestTmp != null)                {                    DeleteGuestByGuestId(guestTmp.GuestID);//根据此用户的用户ID删除信息                }                else                {                    MessageBox.Show("没有该客人信息,不能删除");                }            }            else            {                MessageBox.Show("要删除的客人名为空,不能删除该客人信息");            }        }        ///         /// 通过客人ID删除客人        ///         ///         public static void DeleteGuestByGuestId(int guestId)        {            //先查询是否有此ID的用户            Guest guest = new Guest();            guest = GetGuestByGuestId(guestId);            if (guest != null)            {                string sql = "delete from guest where GuestID = " + guestId + ";";                DataTable dt = new DataTable();                try                {                    //执行删除语句                    int returnValue = MySQLHelper.ExcuteSql(sql);                    if (returnValue == 1)                    {                        //添加后更新全部数据                        GetAllGuests();                        MessageBox.Show("通过此客人ID" + guestId.ToString() + "删除客人信息成功");                    }                    else                    {                        //异常写入日志                        Console.WriteLine("执行" + sql + "删除客人信息失败");                        MessageBox.Show("执行" + sql + "删除客人信息失败");                    }                }                catch (Exception ex)                {                    //异常写入日志                    Console.WriteLine(ex.ToString());                    MessageBox.Show(ex.ToString());                }            }            else            {                MessageBox.Show("输入ID" + guestId.ToString() + "的客人不存在,不能删除");            }        }        ///         /// 修改客人信息        ///         ///         public static DataTable ModifyGuest(Guest guest)        {            string sql = "update guest set GuestName='" + guest.GuestName +                "', GuestTypeID=" + guest.GuestTypeID +    //int无需单引号                ", GuestSex='" + guest.GuestSex +                "', GuestMobile='" + guest.GuestMobile +                "', GuestRoomID=" + guest.GuestRoomID +     //int无需单引号                ", GuestArriveTime='" + guest.GuestArriveTime +                "', GuestLeaveTime='" + guest.GuestLeaveTime +                "' where GuestID=" + Convert.ToInt32(guest.GuestID) + ";";            DataTable dt = new DataTable();            try            {                //执行添加语句                int returnValue = MySQLHelper.ExcuteSql(sql);                if (returnValue == 1)                {                    dt = GetAllGuests();                }                else                {                    //异常写入日志                    Console.WriteLine("执行" + sql + "添加用户信息失败");                    MessageBox.Show("执行" + sql + "添加用户信息失败");                }            }            catch (Exception ex)            {                //异常写入日志                Console.WriteLine(ex.ToString());                MessageBox.Show("修改客户信息失败" + ex.ToString());            }            return dt;        }        ///         /// 获取所有客人信息        ///         ///         public static DataTable GetAllGuests()        {            string sql = "select * from guest;";            try            {                //执行添加语句                bool returnValue = MySQLHelper.ExcuteQuerySql(sql, ref dtAllGuests);            }            catch (Exception ex)            {                //异常写入日志                Console.WriteLine(ex.ToString());                MessageBox.Show("获取所有客人信息失败" + ex.ToString());            }            return dtAllGuests;        }        ///         /// 通过客人ID获取客人信息        ///         ///         ///         public static Guest GetGuestByGuestId(int guestId)        {            Guest guest = new Guest();            string sql = "select * from guest where GuestID = " + guestId + ";";            DataTable dt = new DataTable();            try            {                //执行查询语句                bool returnValue = MySQLHelper.ExcuteQuerySql(sql, ref dt);                if (returnValue == true)                {                    if (dt.Rows.Count > 0)                    {                        //获取客人属性                        guest.GuestID = Convert.ToInt32(dt.Rows[0][0]); ;                        guest.GuestName = dt.Rows[0][1].ToString();                        guest.GuestTypeID = Convert.ToInt32(dt.Rows[0][2]);                        guest.GuestSex = dt.Rows[0][3].ToString();                        guest.GuestMobile = dt.Rows[0][4].ToString();                        guest.GuestRoomID = Convert.ToInt32(dt.Rows[0][5]);                        guest.GuestArriveTime = Convert.ToDateTime(dt.Rows[0][6].ToString());                        guest.GuestLeaveTime = Convert.ToDateTime(dt.Rows[0][7].ToString());                    }                    else                    {                        guest = null;                        //异常写入日志                        //Console.WriteLine("执行" + sql + "根据用户ID查询用户信息失败");                        MessageBox.Show("执行" + sql + "根据用户ID查询用户信息失败");                    }                }                else                {                    //异常写入日志                    //Console.WriteLine("执行" + sql + "根据用户ID查询用户信息失败");                    MessageBox.Show("执行" + sql + "根据用户ID查询用户信息失败");                }            }            catch (Exception ex)            {                //异常写入日志                Console.WriteLine(ex.ToString());                MessageBox.Show(ex.ToString());            }            return guest;        }        ///         /// 通过客人名获取客人信息        ///         ///         ///         public static Guest GetGuestByGuestName(string guestName)        {            Guest guest = new Guest();            string sql = "select * from guest where GuestName='" + guestName + "';";            DataTable dt = new DataTable();            try            {                //执行添加语句                bool returnValue = MySQLHelper.ExcuteQuerySql(sql, ref dt);                if (returnValue == true)                {                    if (dt.Rows.Count > 0)                    {                        //获取客人属性                        guest.GuestID = Convert.ToInt32(dt.Rows[0][0]); ;                        guest.GuestName = dt.Rows[0][1].ToString();                        guest.GuestTypeID = Convert.ToInt32(dt.Rows[0][2]);                        guest.GuestSex = dt.Rows[0][3].ToString();                        guest.GuestMobile = dt.Rows[0][4].ToString();                        guest.GuestRoomID = Convert.ToInt32(dt.Rows[0][5]);                        guest.GuestArriveTime = Convert.ToDateTime(dt.Rows[0][6].ToString());                        guest.GuestLeaveTime = Convert.ToDateTime(dt.Rows[0][7].ToString());                    }                    else                    {                        guest = null;                        //异常写入日志                        Console.WriteLine("执行" + sql + "根据用户ID查询用户信息失败");                        MessageBox.Show("执行" + sql + "根据用户ID查询用户信息失败");                    }                }                else                {                    //异常写入日志                    Console.WriteLine("执行" + sql + "添加用户信息失败");                    MessageBox.Show("执行" + sql + "根据用户ID查询用户信息失败");                }            }            catch (Exception ex)            {                //异常写入日志                Console.WriteLine(ex.ToString());                throw ex;            }            return guest;        }    }}
6、客人类型数据访问

客人类型数据访问(GuestTypeService.cs)实现对客人类型信息的数据库操作。
此类中包含方法如下:

GetAllGuestType():查询所有客人类型。
GetGuestTypeByTypeId(int typeId):根据客人类型ID查询客人信息。
GetGuestTypeListBySql(string safeSql):根据Sql语句查询客人类型集合。

在这里插入代码片

五、实现业务逻辑层

业务逻辑层负责数据的传递,概括实现业务逻辑层的步骤为:
(1)在业务逻辑类中引用数据访问层、实体层的命名空间。
(2)实例化实体对象。
(3)调用数据访问功能。
(4)实现业务逻辑。

1、用户管理业务逻辑类

用户管理业务逻辑类(HotelUserManage.cs)用来处理用户管理的业务逻辑,在用户管理数据访问层(HotelUserService.cs)类和用户管理界面之间进行数据传递。

用户管理业务逻辑类(HotelUserManage.cs)代码:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using HotelManageLib;using System.Data;namespace HotelManage{    class HotelUserManage    {        //新增用户        public static void AddHotelUser(HotelUser hotelUser)        {            HotelUserService.AddHotelUser(hotelUser);        }        //删除用户        public static void DeleteHotelUser(HotelUser hotelUser)        {            HotelUserService.DeleteHotelUser(hotelUser);        }        //根据用户ID删除用户        public static void DeleteHotelUserById(int userId)        {            HotelUserService.DeleteHotelUserByUserId(userId);        }        //修改用户        public static DataTable ModifyHotelUser(HotelUser hotelUser)        {            DataTable dt = new DataTable();            dt = HotelUserService.ModifyHotelUser(hotelUser);            return dt;        }        //得到用户列表        public static DataTable GetAllHotelUsers()        {            return HotelUserService.GetAllHotelUsers();        }        //根据用户ID得到用户列表        public static HotelUser GetHotelUserByUserID(int userId)        {            return HotelUserService.GetHotelUserByUserId(userId);        }        //根据用户名得到用户列表        public static HotelUser GetHotelUser(string userName)        {            return HotelUserService.GetHotelUserByUserName(userName);        }    }}
2、客房信息管理业务逻辑类

客房信息管理业务逻辑类(RoomManage.cs)负责在客房信息管理数据访问和客房信息界面之间进行数据访问,通过调用RoomService.cs中的方法进行业务处理。同样具有增删改查功能。

待写
3、客房类型业务逻辑类

客房类型业务逻辑类RoomTypeManage.cs负责在客房类型数据访问层和客房类型界面之间进行数据访问,通过调用RoomTypeService.cs中的方法进行业务处理。同样具有增删改查功能。

在这里插入代码片
4、客房管理业务逻辑类

客人信息管理业务逻辑类GuestManage.cs负责在客人信息数据访问层和客人信息界面之间进行数据访问,通过调用GuestService.cs中的方法进行业务处理。同样具有增删改查功能。

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using HotelManageLib;using System.Data;namespace HotelManage{    class GuestManage    {        //新增客人        public static void AddGuest(Guest guest)        {            GuestService.AddGuest(guest);        }        //删除客人        public static void DeleteGuest(Guest guest)        {            GuestService.DeleteGuest(guest);        }        //根据客人ID删除客人        public static void DeleteGuestById(int guestId)        {            GuestService.DeleteGuestByGuestId(guestId);        }        //修改客人        public static DataTable ModifyGuest(Guest guest)        {            DataTable dt = new DataTable();            dt = GuestService.ModifyGuest(guest);            return dt;        }        //得到客人列表        public static DataTable GetAllGuests()        {            return GuestService.GetAllGuests();        }        //根据客人ID得到客人列表        public static Guest GetGuestByGuestID(int guestId)        {            return GuestService.GetGuestByGuestId(guestId);        }        //根据客人名得到客人列表        public static Guest GetGuest(string guestName)        {            return GuestService.GetGuestByGuestName(guestName);        }    }}
5、客人类型业务逻辑类

客人类型管理业务逻辑类GuestTypeManage.cs负责在客人类型数据访问和客人类型界面之间进行数据访问,通过调用GuestTypeService.cs中的方法进行业务处理。功能有查询等。

在这里插入代码片

六、实现表示层业务逻辑

1、用户登录
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using HotelManageLib;namespace HotelManage{    public partial class FrmLogin : Form    {        public FrmLogin()        {            InitializeComponent();        }        MainForm mainFrm = new MainForm();        private void btnLogin_Click(object sender, EventArgs e)        {            //输入合法性判断            if (Volidity())//合法性通过            {                //定义查询语句                string sql = String.Format("select * from user where UserName='{0}' and Password='{1}'",                this.txtUserName.Text.Trim(), this.txtPassword.Text.Trim());                MySQLHelper sqlHelper = new MySQLHelper(DBModule.ServerIP, DBModule.ServerPort, DBModule.ServerUser, DBModule.ServerPassword, DBModule.ServerDBName);                DataTable dt = new DataTable();                bool queryFlag = MySQLHelper.ExcuteQuerySql(sql, ref dt);                if (queryFlag == false)                {                    MessageBox.Show("登录失败,没有找到该用户");                }                if (dt.Rows.Count > 0)                {                    mainFrm.Show();                    this.Hide();                }                else                {                    MessageBox.Show("用户名或密码错误,请重新输入");                }            }        }        private void btnCancel_Click(object sender, EventArgs e)        {            this.Close();        }        ///         /// 验证合法性        ///         private bool Volidity()        {            if (this.txtUserName.Text != string.Empty && this.txtPassword.Text != string.Empty)            {                return true;            }            else            {                MessageBox.Show("用户名或密码不能为空");            }            return false;        }    }}
2、主界面
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace HotelManage{    public partial class MainForm : Form    {        public  DialogResult result;//声明对话框返回对象        public MainForm()        {            InitializeComponent();        }        private void Form1_Load(object sender, EventArgs e)        {            //FrmLogin frmLogin = new FrmLogin();            //frmLogin.Show();        }        private void tsmExit_Click(object sender, EventArgs e)        {            if (MessageBox.Show("确认退出系统?", "提示信息", MessageBoxButtons.OKCancel) == System.Windows.Forms.DialogResult.OK)            {                System.Environment.Exit(0);            }        }        ///         /// 查询子窗体是否存在        ///         ///         ///         public bool CheckChildFrm(string childfrmname)        {            foreach (Form childFrm in this.MdiChildren)//遍历子窗体            {                if (childFrm.Name == childfrmname)//如果子窗体存在                {                    if (childFrm.WindowState == FormWindowState.Minimized)                    {                        childFrm.WindowState = FormWindowState.Normal;                    }                    childFrm.Activate();//激活该窗体                    return true;        //存在返回true                }            }            return false;//不存在返回false        }        private void tsbRoomInfo_Click(object sender, EventArgs e)        {            if (this.CheckChildFrm("FrmRoomInfo") == true)            {                return;            }            FrmRoomInfo frmRoomInfo = new FrmRoomInfo();            frmRoomInfo.MdiParent = this;//设置当前窗体的子窗体            frmRoomInfo.Show();        }        private void tsbRoomType_Click(object sender, EventArgs e)        {            if (this.CheckChildFrm("FrmRoomType") == true)            {                return;            }            FrmRoomType frmRoomType = new FrmRoomType();            frmRoomType.MdiParent = this;//设置当前窗体的子窗体            frmRoomType.Show();        }        private void tsbGuestInfo_Click(object sender, EventArgs e)        {            if (this.CheckChildFrm("FrmGuestInfo") == true)            {                return;            }            FrmGuestInfo frmGuestInfo = new FrmGuestInfo();            frmGuestInfo.MdiParent = this;//设置当前窗体的子窗体            frmGuestInfo.Show();        }        private void tsbUserManage_Click(object sender, EventArgs e)        {            if (this.CheckChildFrm("FrmUserManage") == true)            {                return;            }            FrmUserManage frmUserManage = new FrmUserManage();            frmUserManage.MdiParent = this;//设置当前窗体的子窗体            frmUserManage.Show();        }    }}
3、客房类型设置
4、可房信息设置
5、用户管理
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using HotelManageLib;namespace HotelManage{    public partial class FrmUserManage : Form    {        public FrmUserManage()        {            InitializeComponent();        }        private HotelUser hotelUser;        private int userId;        private void tsbExit_Click(object sender, EventArgs e)        {            this.Close();        }        private void tsbCancel_Click(object sender, EventArgs e)        {            this.Close();        }        private void tsbAdd_Click(object sender, EventArgs e)        {            lbPassword.Visible = true;            lbUserName.Visible = true;            txtUserName.Visible = true;            txtPassword.Visible = true;            lbUserName.Text = "用户名";            if (txtUserName.Text != string.Empty && txtPassword.Text != string.Empty)            {                HotelUser hotelUser = new HotelUser();                hotelUser.UserName = txtUserName.Text;                hotelUser.Password = txtPassword.Text;                HotelUserManage.AddHotelUser(hotelUser);                lbPassword.Visible = false;                lbUserName.Visible = false;                txtUserName.Visible = false;                txtPassword.Visible = false;                MessageBox.Show("新增用户成功!");                DataTable dt = new DataTable();                dt = HotelUserManage.GetAllHotelUsers();//获取更新所有用户信息                dataGridView1.DataSource = dt;            }            else            {                return;            }            txtUserName.Text = string.Empty;            txtPassword.Text = string.Empty;        }        private void tsbDelete_Click(object sender, EventArgs e)        {            lbUserName.Text = "用户ID";            lbUserName.Visible = true;            txtUserName.Visible = true;            lbPassword.Visible = false;            txtPassword.Visible = false;            if (txtUserName.Text == string.Empty)            {                MessageBox.Show("请输入要删除的用户ID");            }            else            {                //删除用户信息  通过ID                HotelUserManage.DeleteHotelUserById(Convert.ToInt32(txtUserName.Text));                //更新数据显示                DataTable dt = new DataTable();                dt = HotelUserManage.GetAllHotelUsers();//获取更新所有用户信息                dataGridView1.DataSource = dt;            }        }        private void tsbUpdate_Click(object sender, EventArgs e)        {            //更新用户名和用户密码            lbPassword.Visible = true;            lbUserName.Visible = true;            txtUserName.Visible = true;            txtPassword.Visible = true;            lbUserName.Text = "用户名";            //查询所有用户信息,将用户ID绑定到combox中            DataTable dt = new DataTable();            dt = HotelUserManage.GetAllHotelUsers();            for (int i = 0; i < dt.Rows.Count; i++)            {                cmbUserId.Items.Add((dt.Rows[i][0].ToString()));            }            cmbUserId.Text = dt.Rows[0][0].ToString();            //选择用户ID            MessageBox.Show("请选择要修改的用户ID");        }        private void tsbSave_Click(object sender, EventArgs e)        {            //查询用户信息            DataTable dt = new DataTable();            dt = HotelUserManage.GetAllHotelUsers();            if (dt.Rows.Count > 0)            {                dataGridView1.DataSource = dt;                 //保存信息                MessageBox.Show("信息保存成功");            }            else            {                MessageBox.Show("用户信息为空或者查询所有用户信息失败!");            }        }        private void cmbUserId_SelectedIndexChanged(object sender, EventArgs e)        {            //查询用户ID对应信息            if (cmbUserId.Text != string.Empty)            {                HotelUser hotelUserTmp = new HotelUser();                hotelUserTmp = HotelUserManage.GetHotelUserByUserID(Convert.ToInt32(cmbUserId.Text));                if (hotelUserTmp != null)                {                    txtUserName.Text = hotelUserTmp.UserName;                    txtPassword.Text = hotelUserTmp.Password;                }                else                {                    MessageBox.Show("根据当前ID查询的用户信息为空");                }            }        }        private void tsbUpdate_DoubleClick(object sender, EventArgs e)        {                    }        private void lbPassword_Click(object sender, EventArgs e)//密码label单击为保存修改信息        {            //根据用户ID查询用户信息            HotelUser hotelUser = new HotelUser();            hotelUser = HotelUserManage.GetHotelUserByUserID(Convert.ToInt32(cmbUserId.Text));            if (hotelUser != null)            {                hotelUser.UserName = txtUserName.Text;                hotelUser.Password = txtPassword.Text;            }            else            {                MessageBox.Show("根据用户ID查询的用户信息为空");            }            DataTable dt = new DataTable();            dt = HotelUserManage.ModifyHotelUser(hotelUser);            if (dt.Rows.Count > 0)            {                MessageBox.Show("更新成功", "提示信息", MessageBoxButtons.OK);                dataGridView1.DataSource = dt;            }            else            {                MessageBox.Show("更新失败", "提示信息", MessageBoxButtons.OK);            }        }    }}
6、客人管理
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using HotelManageLib;using System.Text.RegularExpressions;namespace HotelManage{    public partial class FrmGuestInfo : Form    {        public FrmGuestInfo()        {            InitializeComponent();        }        private void tsbCancel_Click(object sender, EventArgs e)        {            this.Close();        }        private void tsbExit_Click(object sender, EventArgs e)        {            this.Close();        }        private void btnQuery_Click(object sender, EventArgs e)        {            //根据客人姓名查询客人信息            Guest guest = new Guest();            DataTable dt = new DataTable();            if (txtGuestName.Text != string.Empty)            {                guest = GuestManage.GetGuest(txtGuestName.Text);                if (guest != null)                {                    //把查询的客人信息装在DataGridView中                    dt.Columns.Add("客人姓名", typeof(string));                    dt.Columns.Add("客人类别", typeof(int));                    dt.Columns.Add("性别", typeof(string));                    dt.Columns.Add("电话", typeof(string));                    dt.Columns.Add("房间编号", typeof(int));                    dt.Columns.Add("到达时间", typeof(DateTime));                    dt.Columns.Add("离开时间", typeof(DateTime));                    DataRow dr = dt.NewRow();                    dr["客人姓名"] = guest.GuestName;                    dr["客人类别"] = guest.GuestTypeID;                    dr["性别"] = guest.GuestSex;                    dr["电话"] = guest.GuestMobile;                    dr["房间编号"] = guest.GuestRoomID;                    dr["到达时间"] = guest.GuestArriveTime;                    dr["离开时间"] = guest.GuestLeaveTime;                    dt.Rows.Add(dr);                    dataGridView1.DataSource = dt;                }                else                {                    MessageBox.Show("没有查询到姓名为:" + txtGuestName.Text + "的客人信息");                    dataGridView1.DataSource = null;//清空dataGridView1                }            }            else            {                MessageBox.Show("输入的客人姓名为空");                dataGridView1.DataSource = null;//清空dataGridView1            }        }        private void tsbSave_Click(object sender, EventArgs e)        {            //查询所有客人信息            DataTable dt = new DataTable();            dt = GuestManage.GetAllGuests();            if (dt.Rows.Count > 0)            {                dataGridView1.DataSource = dt;            }            else            {                MessageBox.Show("没有客人信息可以保存");            }        }        private void tsbAdd_Click(object sender, EventArgs e)        {            pnlGuestInfo.Visible = true;            Guest guest = new Guest();            if (Validity(txtName.Text) && Validity(cmbGuestType.Text) && Validity(txtGuestSex.Text) && Validity(txtGuestPhone.Text)                && Validity(txtGuestRoomId.Text) && Validity(txtArriveTime.Text) && Validity(txtLeaveTime.Text))            {                //将所有客人信息赋给对象,使用客人对象插入数据                guest.GuestName = txtName.Text;                if (IsNumeric(cmbGuestType.Text) == true)                {                    guest.GuestTypeID = Convert.ToInt32(cmbGuestType.Text);                }                else                {                    MessageBox.Show("客人类型不是数字,请重新输入");                    cmbGuestType.Text = string.Empty;                }    guest.GuestSex = txtGuestSex.Text;                guest.GuestMobile = txtGuestPhone.Text;                if (IsNumeric(txtGuestRoomId.Text) == true)                {                    guest.GuestRoomID = Convert.ToInt32(txtGuestRoomId.Text);                }                else                {                    MessageBox.Show("房间类型不是数字,请重新输入");                    txtGuestRoomId.Text = string.Empty;                }    guest.GuestArriveTime = Convert.ToDateTime(txtArriveTime.Text);                guest.GuestLeaveTime = Convert.ToDateTime(txtLeaveTime.Text);                GuestManage.AddGuest(guest);//插入客人信息            }            else            {                MessageBox.Show("请输入全部客人信息");            }        }        //判断输入字符串为空的合法性验证        public bool Validity(string str)        {            if (str != string.Empty)            {                return true;            }            else            {                MessageBox.Show("字符串" + str + "为空");                return false;            }        }        //判断字符串是否是数字        public bool IsNumeric(string str)        {            bool isMatch = Regex.IsMatch(str, @"^\d+$");//正则表达式匹配            return isMatch;        }        private void tsbDelete_Click(object sender, EventArgs e)        {                        //根据客人姓名            if (txtGuestName.Text != string.Empty)            {                //删除用户信息  通过ID                Guest guest = new Guest();                //根据用户名查询用户信息                guest = GuestManage.GetGuest(txtGuestName.Text);                if (guest != null)                {                    GuestManage.DeleteGuestById(guest.GuestID);                    DataTable dtTemp = new DataTable();                    dtTemp = GuestManage.GetAllGuests();//刷新表格                    dataGridView1.DataSource = dtTemp;                }                else                {                    MessageBox.Show("此客人名的客人信息不存在");                }                //更新数据显示                DataTable dt = new DataTable();                dt = GuestManage.GetAllGuests();//获取更新所有用户信息                dataGridView1.DataSource = dt;            }            else            {                MessageBox.Show("请输入要删除的客人姓名");            }        }    }}

总结

本文实现一个酒店管理系统,也是简化版的系统。重点在于使用三层架构、面向对象的思想进行软件开发设计的全流程设计,实现起来具体难度不大,工作量也不小(2-3周)。

除了设计过程有难度之外,数据库的增、删、改、查操作也是容易出问题的,在这个项目中由于使用了外键,所以增加了出错的概率。在这个项目中,我对于数据库的操作和外键的设置和使用有了更深的体会。另外对于UI的设计也是一门学问,这里虽然没有认真去美化,但实际上很有必要做到合理、美观的UI。

由于时间关系,在完成本项目的整个设计后,发现总共有5条从表示层到业务逻辑层到数据访问层的对象操作流要实现,通过UI界面也可以看到,5个界面都是不同对象的增删改查。

所以我主要实现了“用户管理”、“客人信息管理”这两条业务线,全部功能实现贯通。其余的三条业务线“客人类型管理”、“客房信息管理”、“客房类型管理”就没有去实现了,基本是前两条业务线的复制粘贴。有感兴趣的小伙伴也可以自行去实现。

总的来说,我认为我完成了自主设计的酒店管理系统,希望以后设计软件系统把这种规范化的思想融入进去。设计有趣,实现枯燥,二者都需要脚踏实地去做。

来源地址:https://blog.csdn.net/qq_38628970/article/details/129156225

您可能感兴趣的文档:

--结束END--

本文标题: 【C#项目】酒店管理系统-WinForm+MySQL

本文链接: https://www.lsjlt.com/news/421887.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作