分層開發---酒店管理系統---


相信做了這么多小項目了,我們分析題的能力有了吧,接下來我們先來看看這個項目的需求

(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 + ")");
                    }
                }
            }
           
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM