当前位置:文档之家› sql server 酒店客房管理系统设计说明书 数据库大作业课程设计说明书 (含源文件)

sql server 酒店客房管理系统设计说明书 数据库大作业课程设计说明书 (含源文件)

课程设计课程设计名称:数据库应用系统课程设计专业班级:学生姓名:学号:指导教师:课程设计时间:酒店客房管理系统1 概述一直以来人们使用传统人工的方式进行酒店客房的管理,这种管理方式存在着许多缺点,譬如:效率低、安全不高,另外时间一长,将产生大量的数据,这对于查找和维护带来了不少的困难。

社会经济的发展,人们之间的交流日益频繁,外出人数的增加,这些都对酒店客房的管理提出了更高的要求,传统的管理方式已经不能够胜任这种工作了。

鉴于这种情况,开发一个酒店客房管理系统,能够通过计算机和数据库满足对客房基本信息的管理工作。

应包括以下几个功能:1、开房登记:根据客人的要求为其分配合适的房间,记录客人的基本信息。

2、退房结账:当客人提出退房请求时,工作人员能及时为其结账,并更改此房间的状态。

3、房间状态:工作人员能够查看房间的状态,是否有客人居住或者有客人预订,以方便对客房的管理。

4、预订房间:如果客房比较紧张,客人又因某种情况不能及时去开房,这时为了方便这类客人,应该提供预订房间这种服务。

5、预订入住:为已经预订过房间的客人办理登记入住。

6、解除预订:当客人因某种情况不再需要预订的客房时,应当允许其进行解除预订。

7、查看相关的信息:在住客人、预订客人、历史客人信息的查询。

通过以上几个功能,降低工作人员的工作量,提高效率,以实现对客房和客人信息的管理。

2 需求分析工作人员登入酒店管理系统后,开始对客房进行管理,工作流程图如下:图1、工作流程图下面是数据字典:Price varchar 5 否价格TextBox cerType varchar 10 否证件类型TextBox cerNum varchar 20 是证件号码TextBox Phone varchar 20 否联系电话TextBox inDate varchar 20 否入住日期TextBox outDate varchar 20 否预计离开日期TextBox表2、预订信息字段名数据类型长度主键否描述控件类型name varchar 8 否客人姓名TextBoxsex char 4 否性别TextBox cerType varchar 10 否证件类型TextBox cerNum varchar 20 是证件号码TextBox Phone varchar 20 否联系电话TextBox表3、客人信息字段名数据类型长度主键否描述控件类型roomId varchar 8 是房号TextBox roomType varchar 10 否房间类型TextBox price varchar 5 否价格TextBox money varchar 4 否押金TextBox roomState varchar 10 否房间状态TextBox表4、房间信息上表可以看出,此系统有九个功能:1、开房登记:根据客人的要求为其分配合适的房间,记录客人的基本信息。

2、退房结账:当客人提出退房请求时,工作人员能及时为其结账,并更改此房间的状态。

3、房间状态:工作人员能够查看房间的状态,是否有客人居住或者有客人预订,以方便对客房的管理。

4、预订房间:如果客房比较紧张,客人又因某种情况不能及时去开房,这时为了方便这类客人,应该提供预订房间这种服务。

5、预订入住:为已经预订过房间的客人办理登记入住。

6、解除预订:当客人因某种情况不再需要预订的客房时,应当允许其进行解除预订。

7、查看相关的信息:在住客人、预订客人、历史客人信息的查询。

3 概念结构设计此部分生成基本E-R 图,可以由局部的ER 模型合并成全局的ER 模型,注意ER 模型的规范性,图表的编号。

下面是局部的E-R 图:图2、客人E-R 图图3、房间E-R 图图4、住店E-R 图住 店预计离开日期 入住日期 结账离开日期 应付金额房 间房号 押金 房状态 房类型价格 客 人姓名 性别 证件类型证件号码 联系电话图5 、预订E-R图图6、简化的完整E-R图4逻辑结构设计运行环境:WindowsXP下,开发语言:.NET和C#这部分将E-R模型转换为关系模式,指明所满足的范式并给出理由。

客人(姓名,性别,证件类型,证件号码,联系电话)房间(房号,房间类型,价格,押金,房号状态)住店(房号,证件号码,入住日期,预计离开日期,结账离开日期,应付金额)预订(房号,证件号码,入住日期,预计离开日期)以上四个关系模式属于第三范式,因为不存在非主属性。

5源代码及系统截图包括程序流程图,数据库链接方法等,还应当对系统主要功能进行截图。

登录界面的截图及代码:图7、登录界面public partial class Login : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}protected void Login_Click(object sender, EventArgs e){string userName = TextBox3.Text;string userPwd = TextBox4.Text;string selectStr = "Select * from 用户 where 用户名 ='" + userName + "'";SqlConnection conn = newSqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);SqlCommand cmd = new SqlCommand(selectStr, conn);conn.Open();SqlDataReader sdr = cmd.ExecuteReader();if (sdr.Read()){if (sdr.GetString(1) == userPwd){Session["userName"] = userName;conn.Close();Response.Redirect("main.aspx");}else{Label1.Text = "您输入的密码错误,请检查后重新输入!"; }}else{Label1.Text = "该用户不存在或用户名输入错误,请检查后重新输入!";}conn.Close();}}主界面的截图及代码:图8、主界面截图public partial class main : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}protected void Button1_Click1(object sender, EventArgs e) {Response.Redirect("getIn.aspx");}protected void Button2_Click(object sender, EventArgs e) {Response.Redirect("getOut.aspx");}protected void Button3_Click(object sender, EventArgs e) {Response.Redirect("roomState.aspx");}protected void Button4_Click(object sender, EventArgs e) {Response.Redirect("reservation.aspx");}protected void Button5_Click(object sender, EventArgs e) {Response.Redirect("reservationIn.aspx");}protected void Button6_Click(object sender, EventArgs e) {Response.Redirect("reliefReser.aspx");}protected void Button7_Click(object sender, EventArgs e) {Response.Redirect("inClient.aspx");}protected void Button8_Click(object sender, EventArgs e) {Response.Redirect("reserClient.aspx");}protected void Button9_Click(object sender, EventArgs e) {Response.Redirect("leaveClient.aspx");}protected void Button10_Click(object sender, EventArgs e) {Response.Redirect("ModifyPwd.aspx");}protected void Button11_Click(object sender, EventArgs e){Response.Redirect("Login.aspx");}}判断是否还有剩下房间界面的代码:public partial class getInNo : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){string selectStr = "";selectStr = "Select * from 房间 where 房间状态 = '空' ";SqlConnection conn = newSqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);SqlCommand selectCmd = new SqlCommand(selectStr, conn);conn.Open();SqlDataReader sdr = selectCmd.ExecuteReader();if (sdr.Read()){sdr.Close();Response.Redirect("getInYes.aspx"); }else{Response.Redirect("getInNo.aspx");}conn.Close();}}开房界面的截图及代码:图9、开房界面的截图public partial class kaifang : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}protected void Button1_Click(object sender, EventArgs e){SqlConnection conn = newSqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);SqlCommand insertCmd = new SqlCommand("insert into 住店(客人姓名,证件号码,房号,入住日期,预计离开日期)values(@name,@num,@roomId,@inDate,@outDate)", conn);SqlCommand insertCmd1 = new SqlCommand("insert into 客人(姓名,性别,证件类型,证件号码,联系电话)values(@name,@sex,@cerType,@cerNum,@phone)", conn);insertCmd.Parameters.Add("@name", SqlDbType.VarChar, 15);insertCmd.Parameters.Add("@num", SqlDbType.VarChar, 20);insertCmd.Parameters.Add("@roomId", SqlDbType.VarChar, 20); insertCmd.Parameters.Add("@inDate", SqlDbType.VarChar, 20); insertCmd.Parameters.Add("@outDate", SqlDbType.VarChar, 20);insertCmd.Parameters["@name"].Value = txtName.Text;insertCmd.Parameters["@num"].Value = txtCerNum.Text;insertCmd.Parameters["@roomId"].Value = txtRoomId.Text;insertCmd.Parameters["@inDate"].Value = txtInDate.Text;insertCmd.Parameters["@outDate"].Value = txtOutDate.Text;insertCmd1.Parameters.Add("@name", SqlDbType.VarChar, 15);insertCmd1.Parameters.Add("@sex", SqlDbType.VarChar, 6);insertCmd1.Parameters.Add("@cerType", SqlDbType.VarChar, 20); insertCmd1.Parameters.Add("@cerNum", SqlDbType.VarChar, 20); insertCmd1.Parameters.Add("@phone", SqlDbType.VarChar, 20);insertCmd1.Parameters["@name"].Value = txtName.Text;insertCmd1.Parameters["@sex"].Value = txtSex.Text;insertCmd1.Parameters["@cerType"].Value = txtCerType.Text;insertCmd1.Parameters["@cerNum"].Value = txtCerNum.Text;insertCmd1.Parameters["@phone"].Value = txtPhone.Text;conn.Open();int flag = insertCmd.ExecuteNonQuery();insertCmd1.ExecuteNonQuery();if (flag > 0){Label1.Text = "成功提交客人信息!";}else{Label1.Text = "提交客人信息失败,查看输入是否正确!";}conn.Close();upDate();}private void upDate(){string roomId = txtRoomId.Text.Trim();string selectStr = "";string updateStr = "";selectStr = "Select * from 房间 where 房号 = '"+ roomId + "'"; updateStr = "update 房间 set 房间状态 = '已住' where 房号 ='" + roomId + "'";SqlConnection conn = newSqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);SqlCommand selectCmd = new SqlCommand(selectStr, conn);conn.Open();SqlDataReader sdr = selectCmd.ExecuteReader();if (sdr.Read()){sdr.Close();SqlCommand updateCmd = new SqlCommand(updateStr, conn);updateCmd.ExecuteNonQuery();}conn.Close();}protected void Button2_Click1(object sender, EventArgs e){Response.Redirect("main.aspx");}}退房结账界面的截图及代码:图10、退房结账界面截图public partial class tuifang : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}protected void Button2_Click(object sender, EventArgs e){string roomId = TextBox1.Text;string selectStr = "select 客人姓名,证件号码,房号,入住日期,预计离开日期,结账离开日期,应付金额 from 住店 where 房号 = '"+ roomId + "' and 状态 is null";SqlConnection conn = newSqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);SqlCommand cmd = new SqlCommand(selectStr,conn);conn.Open();SqlDataReader dr = cmd.ExecuteReader();if ( dr.Read() ){dr.Close();GridView1.Visible = true;Button1.Visible = true;Button3.Visible = true;}else{Label1.Text = "此人已经退过房了!";}dr.Close();conn.Close();}protected void Button1_Click(object sender, EventArgs e){string roomId = TextBox1.Text.Trim();string selectStr = "";string updateStr = "";selectStr = "Select * from 房间 where 房号 = '"+ roomId + "'"; updateStr = "update 房间 set 房间状态 = '空' where 房号 ='"+ roomId + "'";SqlConnection conn = newSqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);SqlCommand selectCmd = new SqlCommand(selectStr, conn);conn.Open();SqlDataReader sdr = selectCmd.ExecuteReader();if (sdr.Read()){sdr.Close();SqlCommand updateCmd = new SqlCommand(updateStr, conn);updateCmd.ExecuteNonQuery();}Label1.Text = "成功退房!";conn.Close();upDate1();update();}private void update(){string roomId = TextBox1.Text.Trim();string selectStr = "";string updateStr = "";selectStr = "Select * from 住店 where 房号 = '"+ roomId + "'"; updateStr = "update 住店 set 状态 = '已退房' where 房号 ='" + roomId + "' ";SqlConnection conn = newSqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);SqlCommand selectCmd = new SqlCommand(selectStr, conn);conn.Open();SqlDataReader sdr = selectCmd.ExecuteReader();if (sdr.Read()){sdr.Close();SqlCommand updateCmd = new SqlCommand(updateStr, conn);updateCmd.ExecuteNonQuery();}conn.Close();}private void upDate1(){string roomId = TextBox1.Text.Trim();SqlConnection conn = newSqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);SqlCommand cmd = conn.CreateCommand();string money;string date;conn.Open();int i;for (i = 0; i < GridView1.Rows.Count; i++){date =((TextBox)GridView1.Rows[i].FindControl("txtOutDate")).Text.Trim();money =((TextBox)GridView1.Rows[i].FindControl("txtPayMent")).Text.Trim();mandText = "update 住店 set 结账离开日期 = '" + date + "', 应付金额 = '" + money + "' where 房号 = '" + roomId + "'";cmd.ExecuteNonQuery();}conn.Close();}protected void Button3_Click(object sender, EventArgs e){Response.Redirect("main.aspx");}}查看房间状态的截图及代码:图11、房间状态查看界面截图public partial class roomState : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}protected void Button1_Click1(object sender, EventArgs e){GridView1.Visible = false;string roomId = txtRoomId.Text.Trim();string sqlStr = "select * from 房间 where 房号 = '"+ roomId + "'";SqlConnection conn = newSqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);SqlCommand cmd = new SqlCommand(sqlStr, conn);conn.Open();SqlDataReader sdr = cmd.ExecuteReader();GridView2.DataSource = sdr;GridView2.DataBind();conn.Close();}protected void Button2_Click(object sender, EventArgs e){Response.Redirect("main.aspx");}}预订房间页面的代码:public partial class reservation : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){string selectStr = "";selectStr = "Select * from 房间 where 房间状态 = '空' ";SqlConnection conn = newSqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);SqlCommand selectCmd = new SqlCommand(selectStr, conn);conn.Open();SqlDataReader sdr = selectCmd.ExecuteReader();if (sdr.Read()){sdr.Close();Response.Redirect("reservationYes.aspx"); }else{Response.Redirect("reservationNo.aspx");}conn.Close();}}成功预订房间的截图及代码:图12、预订房间界面截图public partial class yudingRoom : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}protected void Button1_Click(object sender, EventArgs e){SqlConnection conn = newSqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);SqlCommand insertCmd = new SqlCommand("insert into 预订(客人姓名,性别,房号,房间类型,价格,证件类型,证件号码,联系电话,入住日期,预计离开日期)values(@name,@sex,@roomId,@roomType,@price,@cerType,@cerNum,@phoneNum ,@inDate,@outDate)", conn);insertCmd.Parameters.Add("@name", SqlDbType.VarChar, 15);insertCmd.Parameters.Add("@sex", SqlDbType.VarChar, 20);insertCmd.Parameters.Add("@roomId", SqlDbType.VarChar, 4);insertCmd.Parameters.Add("@roomType", SqlDbType.VarChar, 4); insertCmd.Parameters.Add("@price", SqlDbType.VarChar, 20);insertCmd.Parameters.Add("@cerType", SqlDbType.VarChar, 20); insertCmd.Parameters.Add("@cerNum", SqlDbType.VarChar, 20); insertCmd.Parameters.Add("@phoneNum", SqlDbType.VarChar, 20); insertCmd.Parameters.Add("@inDate", SqlDbType.VarChar, 20); insertCmd.Parameters.Add("@outDate", SqlDbType.VarChar, 20);insertCmd.Parameters["@name"].Value = txtName.Text;insertCmd.Parameters["@sex"].Value = txtSex.Text;insertCmd.Parameters["@roomId"].Value = txtRoomId.Text;insertCmd.Parameters["@roomType"].Value = txtRoomType.Text; insertCmd.Parameters["@price"].Value = txtPrice.Text;insertCmd.Parameters["@cerType"].Value = txtCerType.Text;insertCmd.Parameters["@cerNum"].Value = txtCerNum.Text;insertCmd.Parameters["@phoneNum"].Value = txtPhoneNum.Text; insertCmd.Parameters["@inDate"].Value = txtInDate.Text;insertCmd.Parameters["@outDate"].Value = txtOutDate.Text;conn.Open();int flag = insertCmd.ExecuteNonQuery();if (flag > 0){Label1.Text = "成功预订房间!";}else{Label1.Text = "预订房间失败,查看输入是否正确!";}conn.Close();upDate();}private void upDate(){string roomId = txtRoomId.Text.Trim();string selectStr = "";string updateStr = "";selectStr = "Select * from 房间 where 房号 = '"+ roomId + "'"; updateStr = "update 房间 set 房间状态 = '预订' where 房号 ='" + roomId + "'";SqlConnection conn = newSqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);SqlCommand selectCmd = new SqlCommand(selectStr, conn);conn.Open();SqlDataReader sdr = selectCmd.ExecuteReader();if (sdr.Read()){sdr.Close();SqlCommand updateCmd = new SqlCommand(updateStr, conn);updateCmd.ExecuteNonQuery();}conn.Close();}protected void Button2_Click(object sender, EventArgs e){Response.Redirect("main.aspx");}protected void txtCerType_TextChanged(object sender, EventArgs e) {}protected void txtCerNum_TextChanged(object sender, EventArgs e) {}}预订入住界面的截图及代码:图13、预订入住界面截图public partial class yudingin : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}protected void Button2_Click(object sender, EventArgs e){string selectStr1 = "insert into 客人(姓名,性别,证件类型,证件号码,联系电话) select 客人姓名,性别,证件类型,证件号码,联系电话 from 酒店客房管理系统.dbo.预订";string selectStr2 = "insert into 住店(客人姓名,证件号码,房号,入住日期,预计离开日期) select 客人姓名,证件号码,房号,入住日期,预计离开日期 from 酒店客房管理系统.dbo.预订";SqlConnection conn = newSqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);SqlCommand cmd1 = new SqlCommand(selectStr1, conn);SqlCommand cmd2 = new SqlCommand(selectStr2, conn);conn.Open();cmd1.ExecuteNonQuery();int flag = cmd2.ExecuteNonQuery();if (flag > 0){Label1.Text = "成功提交客人信息!";}else{Label1.Text = "提交客人信息失败,查看输入是否正确!";}conn.Close();upDate();delete();}private void upDate(){string roomId = txtRoomId.Text.Trim();string selectStr = "";string updateStr = "";selectStr = "Select * from 房间 where 房号 = '"+ roomId + "'"; updateStr = "update 房间 set 房间状态 = '已住' where 房号 ='" + roomId + "'";SqlConnection conn = newSqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);SqlCommand selectCmd = new SqlCommand(selectStr, conn);conn.Open();SqlDataReader sdr = selectCmd.ExecuteReader();if (sdr.Read()){sdr.Close();SqlCommand updateCmd = new SqlCommand(updateStr, conn); updateCmd.ExecuteNonQuery();}conn.Close();}private void delete(){string roomId = txtRoomId.Text.Trim();string selectStr = "";selectStr = "delete 预订 where 房号 = '"+ roomId +"'";SqlConnection conn = newSqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);SqlCommand selectCmd = new SqlCommand(selectStr, conn);conn.Open();selectCmd.ExecuteNonQuery();conn.Close();}protected void Button3_Click(object sender, EventArgs e){Response.Redirect("main.aspx");}}解除预订房间页面的截图及代码:图14、解除预订界面的截图public partial class jiechuyuding : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}protected void Button2_Click(object sender, EventArgs e){string roomId = TextBox1.Text.Trim();string selectStr = "";selectStr = "delete 预订 where 房号 = '" + roomId + "'";SqlConnection conn = newSqlConnection(ConfigurationManager.ConnectionStrings["酒店客房管理系统ConnectionString"].ConnectionString);SqlCommand selectCmd = new SqlCommand(selectStr, conn);conn.Open();selectCmd.ExecuteNonQuery();conn.Close();Label1.Text = "成功取消预订!";}protected void Button3_Click(object sender, EventArgs e){Response.Redirect("main.aspx");}}信息列表界面的截图:图15、在住客人列表图16、预订客人列表图17、历史客人列表参考文献[1] 张浦生,《SQL Server 2005 数据库应用技术》,清华大学出版社,2008[2] 黄树生,《数据库原理及应用》,电子工业出版社,2008[3] 尹志宇、郭晴,《数据库原理与应用教程》,清华大学出版社,2010[4] 周新会,《ASP 通用模块及典型系统开发》,人民邮电出版社,2006[5] 王峰,《数据库网站设计教程》,清华大学出版社,2010心得体会经过一周的努力,数据库课程设计终于做完了。

相关主题