酒店房间管理系统的数据库设计

写得较仓促,许多功能仍需完善。


1.文档说明

                本文档主要包括数据库详细设计和界面详细设计讲解。

2系统需求概述

          2.1 系统目标:

        实现一个酒店管理系统,提供酒店房间管理、客户信息管理、预订与入住管理等功能。

2.2 系统功能需求:

        本系统的用户分为管理员和客户两类。管理员负责酒店的日常运营管理,包括房间信息管理、客户信息管理、预订与入住管理等。客户用户具有查询房间、预订房间、入住退房的权限。

2.3 系统功能的划分:

        用户通过身份验证后进入主界面。管理员用户可以选择以下功能:房间管理、客户信息管理、入住管理以及其他功能。客户用户可以选择以下功能:房间查询、预订房间、入住退房。

2.4 系统功能描述:
2.4.1 房间查询的功能描述:

        客户可以通过系统查询房间的空闲与占用状态,以及房间类型、价格等相关信息。管理员可以进行更详细的房间管理,包括添加新房间、修改房间信息和删除房间等操作。

2.4.2 客户信息管理的功能描述:

        管理员具有管理客户信息和添加客户的权限。管理员可以添加新客户的个人信息,包括姓名、联系方式等,并可以进行客户信息的修改和删除操作。

2.4.3 预订与入住管理的功能描述:

        客户可以通过系统预订酒店房间,并提供入住日期和离店日期等信息。管理员在客户预订后进行确认,并分配空闲房间给客户。客户入住后,管理员会更新房间的状态和客户入住信息。

第二部分    系统总体结构

                本系统采用了传统的3层架构实现,如下图所示:

第三部分 系统设计

类图

系统中主要的、关键实体类关系图(ER图)如下:

第四部分 数据库设计

1.逻辑设计

数据库关系图:

2.表设计

一共按功能建立了六个基本表用于酒店房间系统管理详细设计如下:

基本房间、用户信息表

基本用户、管理员登录信息表

基本用户、管理员操作表

第五部分 界面设计

5.1 登录界面

 

5.1.1 账号密码匹配错误提示

 

5.1.2 登录成功提示

管理员和用户密码均为123,用于测试功能。

5.2 管理员界面

5.2.1 房间信息查看

在界面表格中可查看全部房间的房间编号、房间号、房间类型、房间状态、房间价格的信息。示例中给出了四个酒店房间,有着不同的属性信息。

5.2.2 窗口背景设计

使用了美观的背景,有助于管理者放松心情,更高效地管理工作。

5.2.3 房间信息查询

可根据房间编号查询具体房间信息。

5.2.4 新增房间功能

5.2.5 更新房间功能

5.2.5 删除房间功能

5.2.6 清空功能

一键清空填写栏的信息,利于操作。

5.2.7跳转功能

处理申请和用户信息跳转,分别在下面的5.3和5.4介绍。

5.3 申请处理界面

5.3.1 分配房间功能

左上角的格子是入住申请,管理员视情况分配房间。

5.3.2 退房审批

删除申请表的同时,更新房间状态。

5.4 用户信息查询界面

可以查询历史住户信息。

5.5 用户界面

5.5.1 背景和图片

舒适的背景图和界面操作,配合右下角的动态可爱图片,能让用户提高对酒店管理的信任度和好感。

5.5.2申请入住

用户根据自己的需要选择房间,并填写相关信息,提交申请。在管理员确认后即可入住酒店房间。

5.5.3申请退房

在用户居住完后发出退房申请,在管理员确认后即可退房,统一结账。

第六部分 功能实现设计

6.1 SQL数据库建立表

一共按功能建立了六个基本表用于酒店房间系统管理的SQL建立表语句如下:

基本房间、用户信息表

基本用户、管理员登录信息表

基本用户、管理员操作表

6.2 在C++中链接SQL数据库

右键WindowsFormsApp新建项,取名为database.cs。

  通过获取数据和更新数据两个行为,可将在C++窗体中的输入转化成sql语句传入,数据库接受后返回数据。

using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace StudentdormManaSys
{
    internal class database
    {
        private static string connStr = @"data source=.;database = Hotel; integrated security = true";
        private static SqlConnection conn = new SqlConnection(connStr);

        public static DataSet 获取数据(string sqlStr)//sqlStr是需要执行的sql语句
        {
            try
            {
                conn.Open();
                SqlDataAdapter myAdapter = new SqlDataAdapter(sqlStr, conn);
                DataSet myDataSet = new DataSet();
                //MessageBox.Show("打开数据库成功", "提示");
                myDataSet.Clear();
                myAdapter.Fill(myDataSet);
                conn.Close();
                if (myDataSet.Tables[0].Rows.Count != 0)
                {
                    return myDataSet;
                }
                else
                {
                    return null;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("打开数据库失败", "提示");
                return null;
            }
        }
        public static void 更新(string sqlStr)
        {
            try
            {
                conn.Open();
                SqlCommand myCmd = new SqlCommand(sqlStr, conn);
                myCmd.CommandType = CommandType.Text;
                myCmd.ExecuteNonQuery();
                conn.Close();
            }
            catch
            {
                MessageBox.Show("更新据库失败", "提示");
                return;
            }
        }
    }
}

6.3 设计按钮事件

Form1.cs

using StudentdormManaSys;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }

        //登录界面
        //用户登录界面显示
        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            if (Userlogin.Checked == true)
            {
                Ulogin.Show();
                Mlogin.Hide();
                managerlogin.Checked = false;
            }
        }

        //管理员登录界面显示
        private void managerlogin_CheckedChanged(object sender, EventArgs e)
        {
            if (managerlogin.Checked == true)
            {
                Mlogin.Show();
                Ulogin.Hide();
                Userlogin.Checked = false;
            }
        }

        //打开窗口默认事件打开用户登录界面
        private void Form1_Load(object sender, EventArgs e)
        {
            Userlogin.Checked = true;
            logintype.Show();
            logintype.BackColor = Color.FromArgb(78, 234, 242, 240);
            Ulogin.Show();
            Ulogin.BackColor = Color.FromArgb(78, 234, 242, 240);
            Mlogin.Hide();
            Mlogin.BackColor = Color.FromArgb(78, 234, 242, 240);
            button1.BackColor = Color.FromArgb(78, 234, 242, 240);
            uidpassword.Clear();
            midpassword.Clear();
        }

        //对账号密码进行验证
        private void button1_Click(object sender, EventArgs e)
        {
            string connstring = @"Data Source = .;Database = Hotel;integrated security = true";
            SqlConnection conn = new SqlConnection(connstring);
            try
            {
                conn.Open();
                if (Userlogin.Checked == true)
                {
                    string uid = uidaccount.Text.Trim();
                    string sql_find_uid = "select pass from Userlogin where uid='" + uid + "'";//查找账号
                    DataSet s1 = new DataSet();//new一个对象
                    s1 = database.获取数据(sql_find_uid);//传入查询语句
                    if (s1 == null)
                    {
                        MessageBox.Show("该账号不存在");
                    }
                    else
                    {
                        //MessageBox.Show(s1);
                        string ss1= s1.Tables[0].Rows[0]["pass"].ToString();
                        if (ss1.Trim().Equals(uidpassword.Text.Trim()))
                        {
                            MessageBox.Show("登录成功");
                            //跳转到用户界面
                            Form2 childrenForm = new Form2();
                            childrenForm.Owner = this;
                            childrenForm.Show();
                        }
                        else
                        {
                            MessageBox.Show("密码错误");
                        }
                    }

                }
                else
                {
                    string mid = midaccount.Text.Trim();
                    string sql_find_mid = "select mpass from ManagerLogin where mid=" + mid ;//查找账号
                    DataSet s2 = new DataSet();//new一个对象
                    s2 = database.获取数据(sql_find_mid);//传入查询语句

                    if (s2 == null)
                    {
                        MessageBox.Show("该账号不存在");
                    }
                    else
                    {
                        string ss2 = s2.Tables[0].Rows[0]["mpass"].ToString();
                        if (ss2.Trim().Equals(midpassword.Text.Trim()))
                        {
                            MessageBox.Show("登录成功");
                            //跳转到管理界面
                            Form4 childrenForm = new Form4();
                            childrenForm.Owner = this;
                            childrenForm.Show();
                        }
                        else
                        {
                            MessageBox.Show("密码错误");
                        }
                    }

                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("数据库连接异常!" + ex.Message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            finally
            {
                conn.Close();
            }


        }

        private void button2_Click(object sender, EventArgs e)
        {
            //跳转到管理界面
            Form4 childrenForm = new Form4();
            childrenForm.Owner = this;
            childrenForm.Show();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            //跳转到用户界面
            Form2 childrenForm = new Form2();
            childrenForm.Owner = this;
            childrenForm.Show();
        }

        private void label5_Click(object sender, EventArgs e)
        {

        }
    }  
}

Form2

using StudentdormManaSys;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
            房间更新();
        }

        private void Form2_Load(object sender, EventArgs e)
        {

        }
        private void 房间更新()//宿舍信息中宿舍信息表更新
        {
            DataSet ds = new DataSet();
            ds = database.获取数据("select * from Room where bed =0");

            if (ds != null)
            {
                dataGridView1.DataSource = ds.Tables[0];
                dataGridView1.Columns["rid"].HeaderText = "房间编号";
                dataGridView1.Columns["rnum"].HeaderText = "房间号";
                dataGridView1.Columns["btype"].HeaderText = "房间类型";
                dataGridView1.Columns["bed"].HeaderText = "房间状态";
                dataGridView1.Columns["price"].HeaderText = "房间价格";
            }
            else
            {
                dataGridView1.DataSource = null;
            }
        }

        private void button1_Click(object sender, EventArgs e)//申请入住按钮
        {
            if (uidtxt.Text.Trim().Equals("")|| unametxt.Text.Trim().Equals("")|| sextxt.Text.Trim().Equals("") || phonetxt.Text.Trim().Equals("") || wridtxt.Text.Trim().Equals("") )
            {
                MessageBox.Show("信息请输入完整!", "提示");
            }
            else
            {
                try
                {
                    string sqlStr1 = "insert into Resident values(" + uidtxt.Text.Trim() + ",'" + unametxt.Text.Trim() + "','" + sextxt.Text.Trim() + "'," + phonetxt.Text.Trim() + ")";
                    string sqlStr2 = "insert into Application values(" + uidtxt.Text.Trim() + "," + wridtxt.Text.Trim() + ",'入住')";
                    database.更新(sqlStr1);
                    database.更新(sqlStr2);
                    MessageBox.Show("申请成功!", "提示");
                }
                catch
                {
                    MessageBox.Show("操作失败请重试", "提示");
                }
            }


        }

        private void button2_Click(object sender, EventArgs e)//申请退房按钮
        {
            if (uidtxt.Text.Trim().Equals(""))
            {
                MessageBox.Show("请填写用户账号!", "提示");
            }
            else
            {
                try
                {
                    string sqlStr2 = "insert into Application values(" + uidtxt.Text.Trim() + ",0,'退房')";
                    database.更新(sqlStr2);
                    MessageBox.Show("申请成功!", "提示");
                }
                catch
                {
                    MessageBox.Show("操作失败请重试", "提示");
                }
            }
        }
    }
}

Form3

using StudentdormManaSys;
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 WindowsFormsApp1
{
    public partial class Form4 : Form
    {
        public Form4()
        {
            InitializeComponent();
            房间更新();
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }
        private void 房间更新()
        {
            DataSet ds = new DataSet();
            ds = database.获取数据("select * from Room");

            if (ds != null)
            {
                dataGridView1.DataSource = ds.Tables[0];
                dataGridView1.Columns["rid"].HeaderText = "房间编号";
                dataGridView1.Columns["rnum"].HeaderText = "房间号";
                dataGridView1.Columns["btype"].HeaderText = "房间类型";
                dataGridView1.Columns["bed"].HeaderText = "房间状态";
                dataGridView1.Columns["price"].HeaderText = "房间价格";
            }
            else
            {
                dataGridView1.DataSource = null;
            }
        }

        private void 新增房间表_Click(object sender, EventArgs e)
        {
            /*            string rid = ridtxt.Text.Trim();
            string rnum = rnumtxt.Text.Trim();
            string btype = btypetxt.Text.Trim();
            string bed = bedtxt.Text.Trim();
            string price = pricetxt.Text.Trim();*/

            if (ridtxt.Text.Trim().Equals("") || rnumtxt.Text.Trim().Equals("") || btypetxt.Text.Trim().Equals("") || bedtxt.Text.Trim().Equals("") || pricetxt.Text.Trim().Equals(""))
            {
                MessageBox.Show("信息请输入完整!", "提示");
            }
            else
            {
                try
                {
                    string sqlStr2;
                    sqlStr2 = "insert into Room values('" + ridtxt.Text.Trim() + "','" + rnumtxt.Text.Trim() + "','" + btypetxt.Text.Trim() + "','" + bedtxt.Text.Trim() + "','" + pricetxt.Text.Trim() + "')";
                    database.更新(sqlStr2);
                    MessageBox.Show("添加成功!" , "提示");
                    房间更新();
                }
                catch
                {
                    MessageBox.Show("操作失败!", "提示");
                }
            }
        }

        private void 更新房间表_Click(object sender, EventArgs e)
        {
            if (ridtxt.Text.Trim().Equals("") || rnumtxt.Text.Trim().Equals("") || btypetxt.Text.Trim().Equals("") || bedtxt.Text.Trim().Equals("") || pricetxt.Text.Trim().Equals(""))
            {
                MessageBox.Show("信息请输入完整!", "提示");
            }
            else
            {
                try
                {
                    string sqlStr2;
                    sqlStr2 = "update Room set rid='" + ridtxt.Text.Trim() + "',rnum='" + rnumtxt.Text.Trim() + "',btype='" + btypetxt.Text.Trim() + "',bed='" + bedtxt.Text.Trim() + "',price='" + pricetxt.Text.Trim() + "' where rid='" + ridtxt.Text.Trim() + "'";
                    database.更新(sqlStr2);
                    MessageBox.Show("修改成功!" , "提示");
                    房间更新();
                }
                catch
                {
                    MessageBox.Show("操作失败!", "提示");
                }
            }
        }

        private void 删除房间表_Click(object sender, EventArgs e)
        {
            if (ridtxt.Text.Trim().Equals(""))
            {
                MessageBox.Show("请输入要删除的编号!", "提示");
            }
            else
            {
                try
                {
                    string sqlStr2;
                    sqlStr2 = "delete from Room where rid='" + ridtxt.Text.Trim() + "'";
                    database.更新(sqlStr2);
                    MessageBox.Show("删除成功!" , "提示");
                    房间更新();
                }
                catch
                {
                    MessageBox.Show("操作失败!", "提示");
                }
            }
        }

        private void 清空_Click(object sender, EventArgs e)
        {
            ridtxt.Text = "";
            rnumtxt.Text = "";
            btypetxt.Text = "";
            bedtxt.Text = "";
            pricetxt.Text = "";
            房间更新();
        }

        private void 查询房间表_Click(object sender, EventArgs e)
        {
            DataSet ds = new DataSet();
            //select * from Room where rid= + rid + and rnum = + +
            ds = database.获取数据("select * from Room where rid="+ridtxt.Text.Trim());

            if (ds != null)
            {
                dataGridView1.DataSource = ds.Tables[0];
                dataGridView1.Columns["rid"].HeaderText = "宿舍id";
            }
            else
            {
                MessageBox.Show("查询为空!", "提示");
                dataGridView1.DataSource = null;

            }
        }

        private void button6_Click(object sender, EventArgs e)
        {
            //跳转到管理界面
            Form5 childrenForm = new Form5();
            childrenForm.Owner = this;
            childrenForm.Show();
        }

        private void 用户信息_Click(object sender, EventArgs e)
        {
            //跳转到用户信息
            用户信息 childrenForm = new 用户信息();
            childrenForm.Owner = this;
            childrenForm.Show();
        }

        private void button7_Click(object sender, EventArgs e)
        {
            //跳转到处理申请
            Form5 childrenForm = new Form5();
            childrenForm.Owner = this;
            childrenForm.Show();
        }
    }
}

Form4

using StudentdormManaSys;
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 WindowsFormsApp1
{
    public partial class Form5 : Form
    {
        public Form5()
        {
            InitializeComponent();
            处理表更新();
        }
        
        private void 处理表更新()
        {
            DataSet ds1,ds2,ds3 = new DataSet();

            ds1 = database.获取数据("select * from Application where condition='入住'");//想入住
            ds2 = database.获取数据("select * from Room where bed = 0");
            ds3= database.获取数据("select * from Application where condition='退房'");//想退房

            if (ds1 != null) { dataGridView1.DataSource = ds1.Tables[0]; }
            else { dataGridView1.DataSource = null; }
            if (ds2 != null){dataGridView2.DataSource = ds2.Tables[0];}
            else{dataGridView2.DataSource = null;}
            if (ds3 != null) { dataGridView3.DataSource = ds3.Tables[0]; }
            else { dataGridView3.DataSource = null; }

        }

        private void Button1_Click(object sender, EventArgs e)//分配房间按钮
        {
            
            string sqlStr1; string sqlStr2; string sqlStr3;
            //房间表 房间状态变成已经居住 变成1
            sqlStr1 = "update Room set bed ='1' where rid='"+ridtxt.Text.Trim()+"';";
            //房间入住登记表 登记信息
            sqlStr2 = "insert Into UserRoom Values ('"+ridtxt.Text.Trim()+"','"+uidtxt.Text.Trim()+"');";
            //申请表 删除申请
            sqlStr3 = "delete from Application where uid='" + uidtxt.Text.Trim() + "';";
            database.更新(sqlStr1);
            database.更新(sqlStr2);
            database.更新(sqlStr3);
            MessageBox.Show("分配成功!", "提示");

            处理表更新();
        }

        private void 退房审批_Click(object sender, EventArgs e)
        {
            string sqlStr1; string sqlStr2; string sqlStr3;
            //房间状态改变 变成0 根据uid
            sqlStr1 = "update Room set bed ='0' where rid=(select UserRoom.rid from Room,UserRoom where Room.rid=UserRoom.rid AND uid = "+uidtxt.Text.Trim()+")" ;

            //房间入住登记表 删除 根据uid
            sqlStr2 = "delete from UserRoom where rid=(select UserRoom.rid from Room,UserRoom where Room.rid=UserRoom.rid AND uid = " + uidtxt.Text.Trim() + ")";
            
            //申请表中的申请 删除
            sqlStr3 = "delete from Application where uid='" + uidtxt.Text.Trim() + "';";
            database.更新(sqlStr1);
            database.更新(sqlStr2);
            database.更新(sqlStr3);
            MessageBox.Show("退房审批成功!", "提示");
            处理表更新();
        }

    }
}

Form5

using StudentdormManaSys;
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 WindowsFormsApp1
{
    public partial class 用户信息 : Form
    {
        public 用户信息()
        {
            InitializeComponent();
            用户更新();

        }
        private void 用户更新()
        {
            DataSet ds = new DataSet();
            ds = database.获取数据("select * from Resident");

            if (ds != null)
            {
                dataGridView1.DataSource = ds.Tables[0];
                dataGridView1.Columns["uid"].HeaderText = "用户账号";
                dataGridView1.Columns["uname"].HeaderText = "姓名";
                dataGridView1.Columns["sex"].HeaderText = "性别";
                dataGridView1.Columns["phone"].HeaderText = "电话号码";
            }
            else
            {
                dataGridView1.DataSource = null;
            }
        }
    }
}

  • 53
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值