分层开发

相信做了这么多小项目了,我们分析题的能力有了吧,接下来我们先来看看这个项目的需求

(1)该软件系统能涵盖酒店现有的房间入住服务业务

(2)让顾客可以查询酒店提供的房间类型,价位和空闲房间的信息,从而减少顾客和前台的沟通时间成本

案例覆盖技能点:

(1)分层开发思想(2)搭建三层架构(3)ADO.NET中存储过程的使用(4)实体类的使用(5)异常处理

问题分析:

(1)房间入住登记的功能(2)基础信息的维护功能(3)入住查看功能(4)退房功能(5)房间状态查看功能

先看看效果:

房间管理效果图:

顾客入住登记效果图:

查看入住和退房效果图:

分析完这个,你的脑袋里有没有一个简单的图,接下来要开始写代码了。

首先创建实体类

复制代码
    /// <summary>
    /// 房间信息 Model
    /// </summary>
    public class GuestRecord
    {
        private int guestID;  //顾客的ID
        public int GuestID
        {
            get { return guestID; }
            set { guestID = value; }
        }

        private string identityID;//身份证号
        public string IdentityID
        {
            get { return identityID; }
            set { identityID = value; }
        }

        private string guestName;//顾客姓名
        public string GuestName
        {
            get { return guestName; }
            set { guestName = value; }
        }

        private int roomID; //房间ID
        public int RoomID
        {
            get { return roomID; }
            set { roomID = value; }
        }

        private int resideID;  //入住状态ID
        public int ResideID
        {
            get { return resideID; }
            set { resideID = value; }
        }

        private DateTime resideDate; //入住日期
        public DateTime ResideDate
        {
            get { return resideDate; }
            set { resideDate = value; }
        }

        private DateTime leaveDate; //退房日期
        public DateTime LeaveDate
        {
            get { return leaveDate; }
            set { leaveDate = value; }
        }

        private decimal deposit; //押金
        public decimal Deposit
        {
            get { return deposit; }
            set { deposit = value; }
        }

        private decimal totalMoney; //房款
        public decimal TotalMoney
        {
            get { return totalMoney; }
            set { totalMoney = value; }
        }
    }
复制代码
复制代码
    /// <summary>
    /// 入住状态Model
    /// </summary>
    public class ResideState
    {
        private int resideId; //房间状态ID
        public int ResideId
        {
            get { return resideId; }
            set { resideId = value; }
        }

        private string resideName; //入住状态
        public string ResideName
        {
            get { return resideName; }
            set { resideName = value; }
        }
    }
复制代码
复制代码
     /// <summary>
    /// 房间信息描述Model
    /// </summary>
    public class Room
    {
        private int roomID;
        public int RoomID
        {
            get { return roomID; }
            set { roomID = value; }
        }

        private int bedNum;
        public int BedNum
        {
            get { return bedNum; }
            set { bedNum = value; }
        }

        private string description;
        public string Description
        {
            get { return description; }
            set { description = value; }
        }

        private int roomStateID;
        public int RoomStateID
        {
            get { return roomStateID; }
            set { roomStateID = value; }
        }

        private int guestNum;
        public int GuestNum
        {
            get { return guestNum; }
            set { guestNum = value; }
        }

        private int roomTypeID;
        public int RoomTypeID
        {
            get { return roomTypeID; }
            set { roomTypeID = value; }
        }
    }
复制代码
复制代码
     /// <summary>
    /// 房间状态 Model
    /// </summary>
    public class RoomState
    {
        private int roomStateID;
        public int RoomStateID
        {
            get { return roomStateID; }
            set { roomStateID = value; }
        }

        private string roomStateName;
        public string RoomStateName
        {
            get { return roomStateName; }
            set { roomStateName = value; }
        }
    }
复制代码
复制代码
     /// <summary>
    /// 房间类型 Model
    /// </summary>
    public class RoomType
    {
        private int typeID;
        public int TypeID
        {
            get { return typeID; }
            set { typeID = value; }
        }

        private string typeName;
        public string TypeName
        {
            get { return typeName; }
            set { typeName = value; }
        }

        private decimal typePrice;
        public decimal TypePrice
        {
            get { return typePrice; }
            set { typePrice = value; }
        }
    }
复制代码

数据访问层DAL:

复制代码
     /// <summary>
    /// 房间信息访问层
    /// </summary>
    public class GuestRecordDAL
    {
        //添加客户信息
        public bool IGuest(GuestRecord guest)
        {
            bool flag = false;
            string sql = "usp_insertGuestRecord";
            CommandType type = CommandType.StoredProcedure;
            SqlParameter[] paras =
                {
                 new SqlParameter("@identityID",guest.IdentityID),
                 new SqlParameter("@guestName",guest.GuestName),
                 new SqlParameter("@roomID",guest.RoomID),
                 new SqlParameter("@ResideDate",guest.ResideDate),
                 new SqlParameter("@deposit",guest.Deposit)
                };
            int count = SQLHelper.ExecuteNonQuery(sql, type, paras);
            if (count > 0)
            {
                flag = true;
            }
            return flag;
        }
        //查询信息
        public DataTable SRoom()
        {
            string sql = @"select GuestId,GuestName,IdentityId,ResideDate,Deposit,ResideName,LeaveDate,TotalMoney,RoomStateName,GuestNum,TypePrice
                         from GuestRecord,Room,RoomState,ResideState,RoomType
                         where GuestRecord.ResideID=ResideState.ResideID
                         and GuestRecord.Roomid=Room.roomid and Room.RoomTypeId=RoomType.TypeId
                         and room.RoomStateID=RoomState.RoomStateId";
            DataTable table = SQLHelper.ExecuteDataTable(sql);
            return table;
        }
         //根据条件查询
        public DataTable SRoom(string time1, string time2,int resideid)
        {
            string sql = @"select GuestId,GuestName,IdentityId,ResideDate,Deposit,ResideName,LeaveDate,TotalMoney,RoomStateName,GuestNum,TypePrice
                         from GuestRecord,Room,RoomState,ResideState,roomType
                         where GuestRecord.ResideID=ResideState.ResideID
                         and GuestRecord.Roomid=Room.roomid and Room.RoomTypeId=RoomType.TypeId
                         and room.RoomStateID=RoomState.RoomStateId 
                         and ResideDate between '" + time1+ "' and '" + time2 + "' and GuestRecord.Resideid="+resideid+" ";
           
            DataTable table = SQLHelper.ExecuteDataTable(sql);
            return table;
        }
        //修改客户的房间信息
        public bool URoom(GuestRecord guest)
        {
            bool flag = false;
            string sql = "refund_Room";
            CommandType type = CommandType.StoredProcedure;
            SqlParameter[] paras = 
                {
                   new SqlParameter("@GuestID",guest.GuestID),
                   new SqlParameter("@requirePay",guest.TotalMoney),
                   new SqlParameter("@LeaveDate",guest.LeaveDate)
                };
            int count= SQLHelper.ExecuteNonQuery(sql,type,paras);
           if(count>0)
            {
                flag = true;
            }
            return flag;
        }
    }
复制代码

一个工具类:

复制代码
 public class MyTool
    {
        /// <summary>
        /// DataSetToList
        /// </summary>
        /// <typeparam name="T">转换类型</typeparam>
        /// <param name="dataSet">数据源</param>
        /// <param name="tableIndex">需要转换表的索引</param>
        /// <returns></returns>
        public List<T> DataTableToList<T>(DataTable dt)
        {
            //确认参数有效
            if (dt == null )
                return null;
            List<T> list = new List<T>();

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                //创建泛型对象
                T _t = Activator.CreateInstance<T>();
                //获取对象所有属性
                PropertyInfo[] propertyInfo = _t.GetType().GetProperties();
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    foreach (PropertyInfo info in propertyInfo)
                    {
                        //属性名称和列名相同时赋值
                        if (dt.Columns[j].ColumnName.ToUpper().Equals(info.Name.ToUpper()))
                        {
                            if (dt.Rows[i][j] != DBNull.Value)
                            {
                                info.SetValue(_t, dt.Rows[i][j], null);
                            }
                            else
                            {
                                info.SetValue(_t, null, null);
                            }
                            break;
                        }
                    }
                }
                list.Add(_t);
            }
            return list;
        }
    }
复制代码
复制代码
     /// <summary>
    /// 入住状态访问层
    /// </summary>
    public class ResideStateDAL
    {
        //查询房间入住状态
        public DataTable SRoom()
        {
            string sql = "select * from ResideState";
            DataTable table = SQLHelper.ExecuteDataTable(sql);
            return table;
        }
    }
复制代码
复制代码
     /// <summary>
    /// 房间信息访问层
    /// </summary>
    /// 描述   房间状态  房间类型
    public class RoomDAL
    {
        //查询房间信息
        public DataTable Room()
        {
            string sql = @"select RoomID, BedNum, RoomStateName, TypeName, Description, GuestNum from Room,RoomType,RoomState where 
                           Room.RoomTypeID=RoomType.TypeId 
                           and Room.RoomStateID=RoomState.RoomStateID";
            DataTable table=SQLHelper.ExecuteDataTable(sql);
            return table;
        }

        //根据房间号查询
        public DataTable Room(Room room)
        {
            string sql = @"select RoomID, BedNum, RoomStateName, TypeName, Description, GuestNum from Room,RoomType,RoomState where 
                           Room.RoomTypeID=RoomType.TypeId 
                           and Room.RoomStateID=RoomState.RoomStateID  
                           and RoomID =@roomid";
            SqlParameter para = new SqlParameter("@roomid",room.RoomID);
            DataTable table = SQLHelper.ExecuteDataTable(sql,para);
            return table;
        }

        //修改房间信息
        public bool URoom(Room room)
        {
            bool flag = false;
            string sql = "usp_updateRoom";
            CommandType type = CommandType.StoredProcedure;
            SqlParameter[] paras =
                {
                 new SqlParameter("@roomID",room.RoomID),
                 new SqlParameter("@bedNum",room.BedNum),
                 new SqlParameter("@description",room.Description),
                 new SqlParameter("@roomTypeID",room.RoomTypeID)
                 };
             
            int count= SQLHelper.ExecuteNonQuery(sql,type,paras);
            if(count>0)
            {
                flag = true;
            }
            return flag;
        }

        //删除房间信息
        public bool DRoom(int roomid)
        {
            bool flag = false;
            string sql = "usp_deleteRoomById";
            CommandType type = CommandType.StoredProcedure;
            SqlParameter para = new SqlParameter("@roomID",roomid);
            int count=SQLHelper.ExecuteNonQuery(sql,type,para);
            if(count>0)
            {
                flag = true;
            }
            return flag;
        }

        //添加房间信息
        public bool IRoom(Room room)
        {
            bool flag = false;
            string sql = "usp_insertRoom";
            CommandType type = CommandType.StoredProcedure;
            SqlParameter[] paras =
            {
                new SqlParameter("@bedNum",room.BedNum),
                new SqlParameter("@description",room.Description),
                new SqlParameter("@roomTypeID",room.RoomTypeID)
            };
           int count= SQLHelper.ExecuteNonQuery(sql,type,paras);
            if(count>0)
            {
                flag = true;
            }
            return flag;
        }
    }
复制代码
复制代码
     /// <summary>
    /// 房间状态访问层
    /// </summary>
    ///入住  空闲   维修 

    public class RoomStateDAL
    {
        //查询空闲房间
        public List<Room> SRoom()
        {
            string sql = "select roomid,BedNum from Room where roomstateid=2";
            DataTable table =SQLHelper.ExecuteDataTable(sql);
            MyTool tool = new MyTool();

            return tool.DataTableToList<Room>(table);
        }
    }
复制代码
复制代码
      /// <summary>
     /// 房间类型访问层
    /// </summary>
    /// 价格  类型 
    public class RoomTypeDAL
    {
        //查询全部房间价格
        public DataTable Room()
        {
            string sql = "select * from RoomType";
            DataTable table= SQLHelper.ExecuteDataTable(sql);
            return table;
        }

        //根据房间类型查询
        public DataTable Room(RoomType type)
        {
           
            string sql = "select * from RoomType where TypeName like '%'+@name+'%'";
            SqlParameter para = new SqlParameter("@name",type.TypeName);
            DataTable table= SQLHelper.ExecuteDataTable(sql,para);
            return table;

        }

        //插入房间类型
        public bool IRoom(RoomType types)
        {
            bool flag = false;
            string sql = "usp_insertRoomType";
            CommandType type = CommandType.StoredProcedure;
            SqlParameter[] paras =
            {
                new SqlParameter("@TypeName",types.TypeName),
                new SqlParameter("@TypePrice",types.TypePrice)
            };
           int count= SQLHelper.ExecuteNonQuery(sql,type,paras);
            if(count>0)
            {
                flag = true;
            }
            return flag;
        }

        //修改房间类型
        public bool URoom(RoomType types)
        {
            bool flag = false;
            string sql = "usp_updateRoomType";
            CommandType type = CommandType.StoredProcedure;
            SqlParameter[] paras = {
                new SqlParameter("@typeID",types.TypeID),
                new SqlParameter("@typeName",types.TypeName),
                new SqlParameter("@typePrice",types.TypePrice)
            };
            int count =SQLHelper.ExecuteNonQuery(sql,type,paras);
            if(count>0)
            {
                flag = true;
            }
            return flag;
        }

        //删除房间类型
        public bool DRoom(int typeid)
        {
            bool flag = false;
            string sql = "usp_deleteRoomTypeById";
            CommandType type = CommandType.StoredProcedure;
            SqlParameter para = new SqlParameter("@typeID",typeid);
            int count=SQLHelper.ExecuteNonQuery(sql,type,para);
            if(flag)
            {
                flag = true;
            }
            return flag;
        }

        //查询房间号和入住状态
        public List<Room> Romm(int typeid)
        {
            string sql = "select roomid,roomstateid from room where roomtypeid="+typeid+"";
            DataTable table=SQLHelper.ExecuteDataTable(sql);
            MyTool tool = new MyTool();
            return tool.DataTableToList<Room>(table);
        }
    }
复制代码
复制代码
public static  class SQLHelper
    {
      //用静态的方法调用的时候不用创建SQLHelper的实例
      //Execetenonquery
     // public static string Constr = "server=HAPPYPIG\SQLMODEL;database=shooltest;uid=sa;pwd=6375196;";
      public static string Constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
      public static int id;
      /// <summary>
      /// 执行NonQuery命令
      /// </summary>
      /// <param name="cmdTxt"></param>
      /// <param name="parames"></param>
      /// <returns></returns>
      public static int ExecuteNonQuery(string cmdTxt, params SqlParameter[] parames)
      {
          return ExecuteNonQuery(cmdTxt, CommandType.Text, parames);
      }
      //可以使用存储过程的ExecuteNonquery
      public static int ExecuteNonQuery(string cmdTxt, CommandType cmdtype, params SqlParameter[] parames)
      {
          //判断脚本是否为空 ,直接返回0
          if (string.IsNullOrEmpty(cmdTxt))
          {
              return 0;
          }
          using (SqlConnection con = new SqlConnection(Constr))
          {
              using (SqlCommand cmd = new SqlCommand(cmdTxt, con))
              {
                  if (parames != null)
                  {
                      cmd.CommandType = cmdtype;
                      cmd.Parameters.AddRange(parames);
                  }
                  con.Open();
                  return cmd.ExecuteNonQuery();
              }
          }
      }
      public static SqlDataReader ExecuteDataReader(string cmdTxt, params SqlParameter[] parames)
      {
          return ExecuteDataReader(cmdTxt, CommandType.Text, parames);
      }
      //SQLDataReader存储过程方法
      public static SqlDataReader ExecuteDataReader(string cmdTxt, CommandType cmdtype, params SqlParameter[] parames)
      {
          if (string.IsNullOrEmpty(cmdTxt))
          {
              return null;
          }
          SqlConnection con = new SqlConnection(Constr);

          using (SqlCommand cmd = new SqlCommand(cmdTxt, con))
          {
              cmd.CommandType = cmdtype;
              if (parames != null)
              {
                  
                  cmd.Parameters.AddRange(parames);
              }
              con.Open();
              //把reader的行为加进来。当reader释放资源的时候,con也被一块关闭
              return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
          }

      }
      public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parames)
      {
          return ExecuteDataTable(sql, CommandType.Text, parames);
      }
      //调用存储过程的类,关于(ExecuteDataTable)
      public static DataTable ExecuteDataTable(string sql, CommandType cmdType, params SqlParameter[] parames)
      {
          if (string.IsNullOrEmpty(sql))
          {
              return null;
          }
          DataTable dt = new DataTable();
          using (SqlDataAdapter da = new SqlDataAdapter(sql, Constr))
          {
              da.SelectCommand.CommandType = cmdType;
              if (parames != null)
              {
                  da.SelectCommand.Parameters.AddRange(parames);
              }
              da.Fill(dt);
              return dt;
          }
      }
    
      /// <summary>
      /// ExecuteScalar
      /// </summary>
      /// <param name="cmdTxt">第一个参数,SQLServer语句</param>
      /// <param name="parames">第二个参数,传递0个或者多个参数</param>
      /// <returns></returns>
      public static object ExecuteScalar(string cmdTxt, params SqlParameter[] parames)
      {
          return ExecuteScalar(cmdTxt, CommandType.Text, parames);
      }
      //可使用存储过程的ExecuteScalar
      public static object ExecuteScalar(string cmdTxt, CommandType cmdtype, params SqlParameter[] parames)
      {
          if (string.IsNullOrEmpty(cmdTxt))
          {
              return null;
          }
          using (SqlConnection con = new SqlConnection(Constr))
          {
              using (SqlCommand cmd = new SqlCommand(cmdTxt, con))
              {
                  cmd.CommandType = cmdtype;
                  if (parames != null)
                  {
                      cmd.Parameters.AddRange(parames);
                  }
                  con.Open();
                return   cmd.ExecuteScalar();
              }
          }
          
      }
      //调用存储过程的DBHelper类(关于ExeceutScalar,包含事务,只能处理Int类型,返回错误号)
      public static object ExecuteScalar(string cmdTxt, CommandType cmdtype,SqlTransaction sqltran, params SqlParameter[] parames)
      {
           if (string.IsNullOrEmpty(cmdTxt))
          {
              return 0;
          }
          using (SqlConnection con = new SqlConnection(Constr))
          {
              int sum = 0;
              using (SqlCommand cmd = new SqlCommand(cmdTxt, con))
              {
                  cmd.CommandType=cmdtype;
                  if (parames != null)
                  {
                      cmd.Parameters.AddRange(parames);
                  }
                  con.Open();
                  sqltran = con.BeginTransaction();
                  try
                  {
                      cmd.Transaction = sqltran;
                      sum=Convert.ToInt32( cmd.ExecuteScalar());
                      sqltran.Commit();
                  }
                  catch (SqlException ex)
                  {
                      sqltran.Rollback();
                  }
                  return sum;
              }
          }
      }
    }
复制代码

业务逻辑层BLL:

复制代码
     ///业务逻辑判断
    public class GuestRecordBLL
    {
        GuestRecordDAL dal = new GuestRecordDAL();
        //增加
        public bool IGuest(GuestRecord guest)
        {
            return dal.IGuest(guest);
        }
         //查询
        public DataTable SRoom()
        {
            return dal.SRoom();
        }
        //根据条件查询
        public DataTable SRoom(string time1, string time2, int resideid)
        {
            return dal.SRoom(time1, time2, resideid);
        }
        //删除
        public bool URoom(GuestRecord guest)
        {
            return dal.URoom(guest);
        }
    }
复制代码
复制代码
 public class ResideStateBLL
    {
        ResideStateDAL dal = new ResideStateDAL();
        public DataTable SRoom()
        {
            return dal.SRoom();
        }
    }
复制代码
复制代码
 public class RoomBLL
    {
        RoomDAL dal = new RoomDAL();
        public DataTable Room()
        {
            return dal.Room();
        }

        public DataTable Room(Room room)
        {
            return dal.Room(room);
        }

        public bool URoom(Room room)
        {
            return dal.URoom(room);
        }

        public bool DRoom(int roomid)
        {
            return dal.DRoom(roomid);
        }

        public bool IRoom(Room room)
        {
            return dal.IRoom(room);
        }
    }
复制代码
复制代码
public class RoomStateBLL
    {
        RoomStateDAL dal = new RoomStateDAL();
        public List<Room> SRoom()
        {
            return dal.SRoom();
        }
    }
复制代码
复制代码
 public class RoomTypeBLL
    {
        RoomTypeDAL dal = new RoomTypeDAL();
        public DataTable Room()
        {
            return dal.Room();
        }

        public DataTable Room(RoomType type)
        {
            return dal.Room(type);
        }

        public bool IRoom(RoomType type)
        {
            return dal.IRoom(type);
        }

        public bool URoom(RoomType types)
        {
            return dal.URoom(types);
        }

        public bool DRoom(int typeid)
        {
            return dal.DRoom(typeid);
        }

        public List<Room> Romm(int typeid)
        {
           return dal.Romm(typeid);
        }
    }
复制代码

表示层UI:
房间管理窗体:

复制代码
 public partial class FrmInfo : Form
    {
        public FrmInfo()
        {
            InitializeComponent();
        }
        RoomBLL bll = new RoomBLL();
        Room room = new Room();
        RoomTypeBLL tbl = new RoomTypeBLL();
        private void FrmInfo_Load(object sender, EventArgs e)
        {
            cbo01.ValueMember = "TypeId";
            cbo01.DisplayMember = "TypeName";
            cbo01.DataSource=tbl.Room();
            dgvList.DataSource = bll.Room();
        }

        private void btncx_Click(object sender, EventArgs e)
        {
           if(txt01.Text=="")
            {
                dgvList.DataSource = bll.Room();
            }
           else
            {
                room.RoomID = Convert.ToInt32(txt01.Text);
                dgvList.DataSource = bll.Room(room);
            }
           
        }

        private void 修改ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            txt02.Text = dgvList.SelectedRows[0].Cells[1].Value.ToString();
            cbo01.Text = dgvList.SelectedRows[0].Cells[3].Value.ToString();
            txt03.Text = dgvList.SelectedRows[0].Cells[4].Value.ToString();
        }

        private void btn02_Click(object sender, EventArgs e)
        {
            if (txt02.Text == "" || txt03.Text =="")
            {
                MessageBox.Show("请填写完整的信息");
            }
            else
            {
                room.RoomID = Convert.ToInt32(dgvList.SelectedRows[0].Cells[0].Value);
                room.BedNum = Convert.ToInt32(txt02.Text);
                room.Description = txt03.Text;
                room.RoomTypeID = Convert.ToInt32(cbo01.SelectedValue);
                bool flag = bll.URoom(room);
                if (flag)
                {
                    MessageBox.Show("修改成功");
                    dgvList.DataSource = bll.Room();
                    foreach (Control item in gb02.Controls)
                    {
                        if (item is TextBox)
                        {
                            item.Text = "";
                        }
                        cbo01.Text = "标准间";
                    }
                }
            }
           
        }
        int roomid;
        private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            roomid = Convert.ToInt32(dgvList.SelectedRows[0].Cells[0].Value);
            bool flag=bll.DRoom(roomid);
            if(flag)
            {
                MessageBox.Show("删除成功");
                dgvList.DataSource = bll.Room();
                foreach (Control item in gb02.Controls)
                {
                    if (item is TextBox)
                    {
                        item.Text = "";
                    }
                    cbo01.Text = "标准间";
                }
            }
        }

        private void 新增ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (txt02.Text == "" || txt03.Text == "")
            {
                MessageBox.Show("请填写完整的信息");
            }
            else
            {
                room.BedNum = Convert.ToInt32(txt02.Text);
                room.Description = txt03.Text;
                room.RoomTypeID = Convert.ToInt32(cbo01.SelectedValue);
                bool flag = bll.IRoom(room);
                if (flag)
                {
                    MessageBox.Show("添加成功");
                    dgvList.DataSource = bll.Room();
                    foreach (Control item in gb02.Controls)
                    {
                        if (item is TextBox)
                        {
                            item.Text = "";
                        }
                        cbo01.Text = "标准间";
                    }
                }
            }
          
        }

        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
复制代码

入住信息和退房窗体:

复制代码
 public partial class FrmRoom : Form
    {
        public FrmRoom()
        {
            InitializeComponent();
        }
        ResideStateBLL bll = new ResideStateBLL();
        GuestRecordBLL rbl = new GuestRecordBLL();
        GuestRecord guest = new GuestRecord();
        private void FrmRoom_Load(object sender, EventArgs e)
        {
            cbo01.Items.Add("全部");
            cbo01.SelectedIndex = 0;
            cbo01.ValueMember = "ResideId";
            cbo01.DisplayMember = "ResideName";
            cbo01.DataSource=bll.SRoom();

            dgvList.DataSource = rbl.SRoom();
        }

        private void btn01_Click(object sender, EventArgs e)
        {
            if (cbo01.Text == "全部")
            {
                dgvList.DataSource = rbl.SRoom();
            }
            else
            {
                string time1 = (dt01.Value).ToString();
                string time2 = (dt02.Value).ToString();
                int id = Convert.ToInt32(cbo01.SelectedValue);
                dgvList.DataSource = rbl.SRoom(time1, time2, id);
            }
            
        }

        private void btn02_Click(object sender, EventArgs e)
        {
            
            guest.GuestID= Convert.ToInt32(dgvList.SelectedRows[0].Cells[0].Value);
            guest.LeaveDate = ldate;
            guest.TotalMoney = Convert.ToDecimal(txt01.Text);
            bool flag =rbl.URoom(guest);
            txt01.Text = "";
            if (flag)
            {
                dgvList.DataSource = rbl.SRoom();
            }
          
        }
        DateTime ldate;
      
        private void dgvList_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if(dgvList.SelectedRows[0].Cells[5].Value.ToString().Trim()=="未结账")
            {
                DateTime rdate = Convert.ToDateTime(dgvList.SelectedRows[0].Cells[3].Value);
                ldate = DateTime.Today;
                int day = ldate.Subtract(rdate).Days;
                int price = Convert.ToInt32(dgvList.SelectedRows[0].Cells[10].Value);
                txt01.Text = (day * price).ToString();
            }
            else
            {
                MessageBox.Show("已经结账");
            }
           
        }
    }
复制代码

树状结构查看房间状态:

复制代码
 public partial class FrmRType : Form
    {
        public FrmRType()
        {
            InitializeComponent();
        }
        RoomTypeBLL bll = new RoomTypeBLL();
        private void FrmRType_Load(object sender, EventArgs e)
        {
            TreeNode tn = new TreeNode("房间类型");
            DataTable table= bll.Room();
            foreach (DataRow item in table.Rows)
            {
                TreeNode node = new TreeNode();
                node.Text = item["TypeName"].ToString();
                node.Tag = item["TypeId"];
                tn.Nodes.Add(node);
            }
            tvList.Nodes.Add(tn);
        }

        private void tvList_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if(tvList.SelectedNode.Level==0)
            {
                return;
            }
            if(tvList.SelectedNode.Level==1)
            {
               int id= Convert.ToInt32(tvList.SelectedNode.Tag);
               List<Room> list=bll.Romm(id);
                lvList.Items.Clear();
                foreach (Room  item in list)
                {
                    ListViewItem iten = new ListViewItem();
                    iten.Text = item.RoomID.ToString();
                    iten.Tag = item;
                    lvList.Items.Add(iten);
                }
            }

        }
    }
复制代码

房间类型管理:

复制代码
    public partial class FrmType : Form
    {
        public FrmType()
        {
            InitializeComponent();
        }
        RoomTypeBLL bll = new RoomTypeBLL();
        RoomType type = new RoomType();
        private void FrmType_Load(object sender, EventArgs e)
        {
            dgvList.DataSource = bll.Room();
        }

        private void btncx_Click(object sender, EventArgs e)
        {
            if(txt01.Text=="")
            {
                dgvList.DataSource = bll.Room();
            }
            else
            {   
                type.TypeName = txt01.Text;
                dgvList.DataSource = bll.Room(type);
            }   
        }

        private void btn02_Click(object sender, EventArgs e)
        {
            if (txt02.Text == ""||txt03.Text=="")
            {
                MessageBox.Show("请选择要修改的文本");
            }
            else
            {
                type.TypeID = Convert.ToInt32(dgvList.SelectedRows[0].Cells[0].Value);
                type.TypeName = txt02.Text;
                type.TypePrice = Convert.ToDecimal(txt03.Text);
                bool flag = bll.URoom(type);
                if (flag)
                {
                    MessageBox.Show("修改成功");
                    dgvList.DataSource = bll.Room();
                    foreach (Control item in gb02.Controls)
                    {
                        if (item is TextBox)
                        {
                            item.Text = "";
                        }
                    }
                }
            }
           
        }

        private void 新增ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (txt02.Text == "" || txt03.Text == "")
            {
                MessageBox.Show("请填写完整的信息");
            }
            else
            {
                type.TypeName = txt02.Text;
                type.TypePrice = Convert.ToInt32(txt03.Text);
                bool flag = bll.IRoom(type);
                if (flag)
                {
                    MessageBox.Show("添加成功");
                    dgvList.DataSource = bll.Room();
                    foreach (Control item in gb02.Controls)
                    {
                        if (item is TextBox)
                        {
                            item.Text = "";
                        }

                    }
                }
            }
           
        }

        private void 修改ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            txt02.Text = dgvList.SelectedRows[0].Cells[1].Value.ToString();
            txt03.Text= dgvList.SelectedRows[0].Cells[2].Value.ToString();
        }

        private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            int typeid = Convert.ToInt32(dgvList.SelectedRows[0].Cells[0].Value);
           
            bool flag=bll.DRoom(typeid);
            if(flag)
            {
                MessageBox.Show("删除成功");
                dgvList.DataSource = bll.Room();
                foreach (Control item in gb02.Controls)
                {
                    if (item is TextBox)
                    {
                        item.Text = "";
                    }

                }
            }
        }

        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
复制代码

顾客入店登记窗体:

复制代码
 public partial class FrmUser : Form
    {
        public FrmUser()
        {
            InitializeComponent();
        }
        RoomStateBLL bll = new RoomStateBLL();
        GuestRecordBLL gbl = new GuestRecordBLL();
        private void FrmUser_Load(object sender, EventArgs e)
        {
            cbo01.DisplayMember = "Roomid";
            List<Room> list=bll.SRoom();
            foreach (Room item in list)
            {
                cbo01.Items.Add(item.RoomID+"号房(床位:"+item.BedNum+")");
            }
        }

        private void btn01_Click(object sender, EventArgs e)
        {
            if(txt01.Text==""||txt02.Text==""||txt03.Text=="")
            {
                MessageBox.Show("请填写完整的信息");
            }
            else
            {
                GuestRecord guest = new GuestRecord();
                guest.IdentityID = txt01.Text;
                guest.GuestName = txt02.Text;
                guest.Deposit = Convert.ToDecimal(txt03.Text);
                int length=cbo01.Text.IndexOf("号");
                guest.RoomID = Convert.ToInt32(cbo01.Text.Substring(0,length));
                guest.ResideDate = Convert.ToDateTime(dt01.Text);
                bool flag = gbl.IGuest(guest);
                if (flag)
                {
                    MessageBox.Show("登记成功");
                    foreach (Control item in gb01.Controls)
                    {
                        if (item is TextBox)
                        {
                            item.Text = "";
                        }
                        cbo01.Text = "";
                        dt01.Text = "";
                    }
                    cbo01.Items.Clear();
                    cbo01.DisplayMember = "Roomid";
                    List<Room> list = bll.SRoom();
                    foreach (Room item in list)
                    {
                        cbo01.Items.Add(item.RoomID + "号房(床位:" + item.BedNum + ")");
                    }
                }
            }
           
        }
    }
复制代码
原文地址:https://www.cnblogs.com/xieweikai/p/6826552.html