相信做了這么多小項目了,我們分析題的能力有了吧,接下來我們先來看看這個項目的需求
(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 + ")"); } } } } }