Web课程设计 酒店管理系统.doc
如有侵权,请联系网站删除,仅供学习与交流Web课程设计 酒店管理系统【精品文档】第 15 页洛 阳 理 工 学 院课 程 设 计 报 告 课程名称 Web程序设计课程设计 设计题目 酒店管理系统 专 业 计算机科学与技术 班 级 学 号 姓 名 完成日期 课 程 设 计 任 务 书设计题目: 酒店管理系统 _设计内容与要求:(1)数据库设计要符合范式要求。(2)能对客户入住资料进行添加、删除、修改操作。(3)提供订单查询功能,输入订单号,能查找出订单的相关信息。能对订单进行添加、删除、修改操作。(4)用户权限控制,服务员能对订单和客户资料进行修改,管理员用户修改登录密码。 指导教师: 年月 日课 程 设 计 评 语 成绩: 指导教师: 年 月 日目录第1章 需求分析11.1 需求分析11.2 可行性分析11.2.1经济可行性分析11.2.1技术可行性分析1第2章 数据库设计22.1 数据库概念结构设计22.1.1 实体关系图22.1.2 系统总体E-R图32.2 数据表设计42.2.1 数据库表设计4第3章 概要设计63.1 系统架构设计63.2 系统功能设计63.2.1 系统功能模块63.2.2 系统处理流程7第4章 详细设计与实现84.1 系统首页84.2 酒店日常管理界面104.3 预订房间界面104.4 订单查询界面124.5 大堂入住界面164.6 结账退房界面174.7 系统管理员登陆界面22第5章 总结24 第1章 需求分析1.1 需求分析酒店管理系统是我们常说的MIS(Management Information System管理信息系统)的一种,在强调管理,强调信息的现代社会中它越来越得到普及,酒店管理系统的主要目标是实现对酒店内部各种管理的电子化合自动化,提高酒店的办公效率,为高质量的酒店管理提供服务,提供保证。在酒店业竞争越来越激烈的今天,努力在市场竞争中脱颖而出,已经成为每位酒店经营者所追求的的目标。酒店如何才能提高服务质量,其管理力显得越来越重要。由于使用了先进的数据管理技术,酒店管理系统对提高酒店的管理能力将会起到比较重大的作用。整个系统的基本设计目标是实现系统界面友好美观、简单易用、功能全面并有较高的安全性。本系统需要实现酒店常用的房间预订、入住记录查询、房间管理等功能,并帮助酒店建立客户数据库和入住记录数据库,能够方便的进行查询,并在系统的易用性和安全性两方面进行相应的完善。该系统有以下特点:功能强大:该软件以中小型酒店为应用对象,结合中小型酒店客房当前和未来发展的管理需求提供实用先进的客房管理模式,提高酒店客房管理的效益。用户界面操作简洁:系统的每个功能充分考虑到使用人员计算机知识较少的特点,软件系统由各种具体的功能模块组成,全部使用业务人员最熟悉的业务流程、提示用语和操作方式,即使不熟悉此软件的人也能熟练使用本软件完成业务处理。系统性能稳定:严格按照规范的软件工程管理,充分利用面向对象技术,采用sql为后台数据库。从技术上和应用广泛性上保证了系统的稳定性、广泛性和先进性。1.2 可行性分析1.2.1经济可行性分析模拟酒店管理系统的开发从长远的角度来看,投资可以完全收回,并可以节省管理费用,避免了人工填单操作所带来的一系列不必要的麻烦,节省了用户和相关工作人员的时间,能够很好地提高工作效率,改进决策质量。同时也对酒店的灵活管理有了很大的提升,有利于提高酒店的运营和服务效率,其开发前景良好并能产生很好的经济和社会效益。1.2.1技术可行性分析本系统采用ASP.NET开发技术及SQL SERVER 2008开发平台,该系统是数据库应用程序,数据项之间的关系虽然很复杂,但是都可以很清楚的用关系数据库模式表示出来,采用数据库的操作没有难度。就规模来说,酒店管理系统应属于小型数据库应用程序,在课程设计期间可以完成从系统需求分析到系统测试的所有工作,不存在开发时间限制的问题。由于酒店管理系统不属于大的数据库系统并且没有严格的实时性要求,只要普通系统配置就可运行。对于酒店管理系统的开发就没有特殊的要求。第2章 数据库设计2.1 数据库概念结构设计2.1.1 实体关系图通过需求分析可以得出数据库之间的实体关系图如下:图 2-1 客户实体关系图图 2-2 订单实体关系图图 2-3 入住记录实体关系图图 2-4 管理员实体关系图图 2-5 服务员实体关系图2.1.2 系统总体E-R图图 2-6 系统总体E-R图2.2 数据表设计2.2.1 数据库表设计表2-1 客户表序号列名数据类型长度备注说明1客户标识nchar10主键2姓名nchar20NOT NULL3性别nchar2NOT NULL4证件nchar20NOT NULL表2-2 房间表序号列名数据类型长度备注说明1房间号nchar10主键2房间类别nchar10NOT NULL3房间位置nchar504房间描述nchar100 5备注nchar50表2-3 入住记录表表序号列名数据类型长度备注说明1入主流水号nchar10主键2房间号nchar10NOT NULL3客户标识nchar10外键4入住人姓名nchar20NOT NULL5入住人证件nchar20NOT NULL6入住时间DatetimeNOT NULL7退房时间Datetime8消费nchar109押金nchar10表2-4 管理员表序号列名数据类型长度备注说明1姓名Char 9主键2性别Varchar10NOT NULL3工号Varchar16NOT NULL4密码Varchar100表2-5 服务员表序号列名数据类型长度备注说明1姓名Char 9主键2性别Varchar10NOT NULL3工号Varchar16NOT NULL4密码Varchar100第3章 概要设计3.1 系统架构设计B/S模式(Browse/Server浏览器/服务器)模式是在C/S模式发展到一定阶段的产物,它以Web技术为基础,将传统C/S模式中的服务器部分细分为数据库服务器和Web服务器,从而变成3层结构。B/S架构是Intranet上的一个典型的分布式信息系统。B/S模式的优点主要是:(1)用户的操作使用简单,B/S模式的客户端只须安装一个提供友好界面的通用浏览器,如Internet Explorer等,不需要对客户进行额外培训;(2) B/S结构具有可伸缩性,在网络环境允许的条件下,可以尽可能多地增加浏览器和服务器,不受原有网络资源的影响;(3)易于开发、安装和维护,B/S结构只需对服务器端的应用平台进行开发和集成,减少了开发、安装和维护费用。以目前的技术看,局域网建立B/S结构的网络应用,并通过工Internet/Intranet模式下数据库应用,相对易于把握,成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN, WAN,Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。本系统采用ASP. NET构造程序框架,数据库采用SQL Server2008为数据库3.2 系统功能设计3.2.1 系统功能模块本系统包括系统管理和酒店管理两个部分,其功能如下:(1)系统管理:修改管理员登录密码,修改管理密码;(2)酒店管理:预订房间,订单查询,大堂入住,退房。如图3-1所示:图 3-1 系统功能结构图3.2.2 系统处理流程用户使用本系统时,根据不同的身份使用不同的功能,客户使用时无需登录,可直接进行房间预订和订单查询,管理人员须登录后才能使用各项管理功能。系统处理流程如图3-2所示。图 3-2 系统流程图第4章 详细设计与实现4.1 系统首页系统首页设置为登陆页,用户权限不同,操作数据库的权限也不同,管理员登陆成功后能进入到sysadmin.aspx界面进行修改密码权限,服务员登陆后能进入到service.aspx界面,进行酒店的日常管理。如图4-1所示:图 4-1 系统流程图 关键后台代码:protected void Button1_Click(object sender, EventArgs e)string sf = DropDownList1.SelectedValue.ToString();string strcon, strsql, msg;strcon = ConfigurationManager.ConnectionStrings"HotelConnectionString".ConnectionString;if (sf = "管理员")strsql = "select * from 管理员 where 工号 = '" + txtName.Text.Trim() + "' and 密码 = '" + txtPwd.Text.Trim() + "' "elsestrsql = "select * from 服务员 where 工号 = '" + txtName.Text.Trim() + "' and 密码 = '" + txtPwd.Text.Trim() + "' "SqlConnection con = new SqlConnection(strcon);DataTable dt = new DataTable();/创建一个数据表dtSqlDataAdapter Cmd = new SqlDataAdapter(strsql, con);msg = "yes"tryCmd.Fill(dt);/执行命令catch (Exception ex) /如果try出错,则捕获错误msg = "no" +ex.Message.ToString().Trim();finallycon.Close();if (msg = "yes")if (dt.Rows.Count > 0)if (sf = "管理员")Session"admin" = txtName.Text.Trim();/将用户名记入sessionSession"pwd" = txtPwd.Text.Trim();Response.Redirect("sysadmin.aspx");elseSession"service" = txtName.Text.Trim();Session"pwd" = txtPwd.Text.Trim();Response.Redirect("service.aspx");elseScriptManager.RegisterStartupScript(this, this.GetType(), "click", "<script>alert('用户名或密码错误!');</script>", false);elseScriptManager.RegisterStartupScript(this, this.GetType(), "click", "<script>alert('数据库连接或访问失败!');</script>", false);4.2 酒店日常管理界面在服务员登陆后进入到service.aspx页面,这个页面放了4个Linkbutton连接4个界面分别对应酒店日常管理的四个基本功能:预订房间、订单查询、大堂入住、结账退房。界面如图4-2所示图 4-2 系统流程图4.3 预订房间界面在service.aspx界面点击预订房间进入房间预订界面,这个界面使用Command对象实现对数据库表dbo.订单的插入操作。预定界面如图4-3所示图 4-3 系统流程图关键后台代码:protected void Page_Load(object sender, EventArgs e)Label1.Text = Session"service".ToString();protected void Buttonok1_Click(object sender, EventArgs e)string msg;string sqlconnstr = ConfigurationManager.ConnectionStrings"HotelConnectionString".ConnectionString;SqlConnection sqlconn = new SqlConnection(sqlconnstr);/建立Command对象SqlCommand sqlcommand = new SqlCommand();sqlcommand.Connection = sqlconn;/把SQL语句赋给Command对象sqlcommand.CommandText = "insert into 订单(订单号,预定时间,入住时间,房间类型,房间数,房间号,入住人,联系人,联系电话) values (订单号,预定时间,入住时间,房间类型,房间数,房间号,入住人,联系人,联系电话)"sqlcommand.Parameters.AddWithValue("订单号",TextBox1.Text);sqlcommand.Parameters.AddWithValue("预定时间",TextBox2.Text);sqlcommand.Parameters.AddWithValue("入住时间",TextBox3.Text);sqlcommand.Parameters.AddWithValue("房间类型",TextBox4.Text);sqlcommand.Parameters.AddWithValue("房间数",TextBox5.Text);sqlcommand.Parameters.AddWithValue("房间号",TextBox6.Text);sqlcommand.Parameters.AddWithValue("入住人",TextBox7.Text);sqlcommand.Parameters.AddWithValue("联系人",TextBox8.Text);sqlcommand.Parameters.AddWithValue("联系电话",TextBox9.Text);trysqlconn.Open();/打开连接sqlcommand.ExecuteNonQuery();/执行命令msg = "添加成功"catch (Exception ex) /如果try出错,则捕获错误msg = "添加失败"+ex.Message.ToString().Trim();finallysqlconn.Close();ScriptManager.RegisterStartupScript(this, this.GetType(), "click", "<script>alert('" + msg + "');</script>", false);protected void Buttoncancel_Click(object sender, EventArgs e)TextBox1.Text = ""TextBox2.Text = ""TextBox3.Text = ""TextBox4.Text = ""TextBox5.Text = ""TextBox6.Text = ""TextBox7.Text = ""4.4 订单查询界面订单查询界面使用了一个GridView控件使用数据绑定的方式实现输入订单号来查询订单,并在使用设置控件的CommandField类型来实现服务员对订单的修改和删除操作。订单查询界面如图4-4所示:图4-4 订单查询界面 关键后台代码:protected void Page_Load(object sender, EventArgs e)if (!Page.IsPostBack) bindgrid();Label1.Text = Session"service".ToString();void bindgrid()/刷新gridview的数据string strcon, strsql, msg;DataTable dt = new DataTable();strcon = ConfigurationManager.ConnectionStrings"HotelConnectionString".ConnectionString;strsql = "select * from 订单 order by 订单号 "SqlConnection con = new SqlConnection(strcon);/定义新的数据连接控件并初始化SqlDataAdapter cmd = new SqlDataAdapter(strsql, con);msg = "成功"trycon.Open();/打开连接cmd.Fill(dt);/填充数据集catch (Exception ex) /如果try出错,则捕获错误msg = "数据访问出错"/ +ex.Message.ToString().Trim();finallycon.Close();if (msg = "成功")GridView1.DataSource = dt;GridView1.DataBind();elseScriptManager.RegisterStartupScript(this, this.GetType(), "click", "<script>alert('" + msg + "');</script>", false);protected void TextBox1_TextChanged(object sender, EventArgs e)protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)GridView1.PageIndex = e.NewPageIndex;bindgrid();protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)GridView1.EditIndex = -1;bindgrid();protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)string strcon, strsql, msg;strcon = ConfigurationManager.ConnectionStrings"HotelConnectionString".ConnectionString;strsql = "delete from 订单 where 订单号='" + GridView1.DataKeyse.RowIndex.Value.ToString() + "'"SqlConnection con = new SqlConnection(strcon);/定义新的数据连接控件并初始化SqlCommand com = new SqlCommand(strsql, con);msg = "删除成功"trycon.Open();/打开连接com.ExecuteNonQuery();/执行命令catch (Exception ex) /如果try出错,则捕获错误msg = "删除失败"/ +ex.Message.ToString().Trim();finallycon.Close();if (msg = "删除成功")bindgrid();elseScriptManager.RegisterStartupScript(this, this.GetType(), "click", "<script>alert('" + msg + "');</script>", false);protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)GridView1.EditIndex = e.NewEditIndex;/EditIndex:获取或设置要编辑的行的索引。bindgrid();protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)string sqlconnstr = ConfigurationManager.ConnectionStrings"HotelConnectionString".ConnectionString;string msg;SqlConnection sqlconn = new SqlConnection(sqlconnstr);/提交行修改trysqlconn.Open();SqlCommand Comm = new SqlCommand();Comm.Connection = sqlconn;Comm.CommandText = "update 订单 set 订单号=订单号,预定时间=预定时间,入住时间=入住时间,房间类型=房间类型,房间数=房间数,入住人=入住人,联系人=联系人,联系电话=联系电话,备注=备注where 订单号=订单号"Comm.Parameters.AddWithValue("订单号", GridView1.DataKeyse.RowIndex.Value.ToString();Comm.Parameters.AddWithValue("预定时间", (TextBox)GridView1.Rowse.RowIndex.Cells1.Controls0).Text);Comm.Parameters.AddWithValue("入住时间", (TextBox)GridView1.Rowse.RowIndex.Cells2.Controls0).Text);Comm.Parameters.AddWithValue("房间类型", (TextBox)GridView1.Rowse.RowIndex.Cells3.Controls0).Text);Comm.Parameters.AddWithValue("房间数", (TextBox)GridView1.Rowse.RowIndex.Cells4.Controls0).Text);Comm.Parameters.AddWithValue("房间号", (TextBox)GridView1.Rowse.RowIndex.Cells5.Controls0).Text);Comm.Parameters.AddWithValue("入住人", (TextBox)GridView1.Rowse.RowIndex.Cells6.Controls0).Text);Comm.Parameters.AddWithValue("联系人", (TextBox)GridView1.Rowse.RowIndex.Cells7.Controls0).Text);Comm.Parameters.AddWithValue("联系电话", (TextBox)GridView1.Rowse.RowIndex.Cells8.Controls0).Text);Comm.Parameters.AddWithValue("备注", (TextBox)GridView1.Rowse.RowIndex.Cells9.Controls0).Text);Comm.ExecuteNonQuery();msg = "退房成功"sqlconn.Close();sqlconn = null;Comm = null;catch (Exception ex)msg="数据库更新出错"GridView1.EditIndex = -1;bindgrid();protected void Button1_Click(object sender, EventArgs e)string strcon, strsql, msg;DataSet ds = new DataSet();strcon = ConfigurationManager.ConnectionStrings"HotelConnectionString".ConnectionString;strsql = "select * from 订单 where 订单号 like '%" + TextBox1.Text.Trim() + "%' order by 订单号 "SqlConnection con = new SqlConnection(strcon);/定义新的数据连接控件并初始化SqlDataAdapter cmd = new SqlDataAdapter(strsql, con);msg = "成功"trycon.Open();/打开连接cmd.Fill(ds, "inorder");/填充数据集catch (Exception ex) /如果try出错,则捕获错误msg = "数据访问出错"finallycon.Close();if (msg = "成功")GridView1.DataSource = ds.Tables"inorder".DefaultView;GridView1.DataBind();elseScriptManager.RegisterStartupScript(this, this.GetType(), "click", "<script>alert('" + msg + "');</script>", false);4.5 大堂入住界面大堂入住界面是客户没有事先预定,直接到就酒店大堂办理入住的界面,实现对数据库表dbo.入住记录的插入。界面如图4-5所示:图4-5 大堂入住界面关键后台代码:protected void Button1_Click(object sender, EventArgs e)string strcon, strsql, msg;strcon = ConfigurationManager.ConnectionStrings"HotelConnectionString".ConnectionString;strsql = "insert into 入住记录(入住流水号,房间号,客户标识,入住人姓名,入住人证件,入住时间,押金) values ('" +TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "','" + TextBox4.Text + "','" + TextBox5.Text + "','" + TextBox6.Text + "','" + TextBox7.Text + "')"SqlConnection con = new SqlConnection(strcon);/定义新的数据连接控件并初始化SqlCommand com = new SqlCommand(strsql, con);msg = "添加成功"trycon.Open();/打开连接com.ExecuteNonQuery();/执行命令catch (Exception ex) /如果try出错,则捕获错误msg = "添加失败"finallycon.Close();ScriptManager.RegisterStartupScript(this, this.GetType(), "click", "<script>alert('" + msg + "');</script>", false);protected void Buttoncancel_Click(object sender, EventArgs e)TextBox1.Text = ""TextBox2.Text = ""TextBox3.Text = ""TextBox4.Text = ""TextBox5.Text = ""TextBox6.Text = ""TextBox7.Text = ""4.6 结账退房界面结账退房界面,实现了驶入房间号查询入住记录表,在GridView控件中显示查询结果,点击退房按钮更新表中数据。如图4-6所示:图 4-6 结账退房界面关键后台代码:protected void Page_Load(object sender, EventArgs e)if (!Page.IsPostBack) bindgrid();Label1.Text = Session"service".ToString();void bindgrid()/刷新gridview的数据string strcon, strsql, msg;DataTable dt = new DataTable();strcon = ConfigurationManager.ConnectionStrings"HotelConnectionString".ConnectionString;strsql = "select * from 入住记录 order by 入住流水号 "SqlConnection con = new SqlConnection(strcon);/定义新的数据连接控件并初始化SqlDataAdapter cmd = new SqlDataAdapter(strsql, con);msg = "成功"trycon.Open();/打开连接cmd.Fill(dt);/填充数据集catch (Exception ex) /如果try出错,则捕获错误msg = "数据访问出错"/ +ex.Message.ToString().Trim();finallycon.Close();if (msg = "成功")GridView1.DataSource = dt;GridView1.DataBind();elseScriptManager.RegisterStartupScript(this, this.GetType(), "click", "<script>alert('" + msg + "');</script>", false);protected void Button1_Click(object sender, EventArgs e)string strcon, strsql, msg;DataSet ds = new DataSet();strcon = ConfigurationManager.ConnectionStrings"HotelConnectionString".ConnectionString;strsql = "select * from 入住记录 where 房间号 like '%" + TextBox1.Text.Trim() + "% 'order by 房间号 "SqlConnection con = new SqlConnection(strcon);/定义新的数据连接控件并初始化SqlDataAdapter cmd = new SqlDataAdapter(strsql, con);msg = "成功"trycon.Open();/打开连接cmd.Fill(ds,"intoRecord");/填充数据集 / 注意:查询结果若是空集,不属于出错情形catch (Exception ex) /如果try出错,则捕获错误msg = "数据访问出错"finallycon.Close();if (msg = "成功")GridView1.DataSource = ds.Tables"intoRecord".DefaultView;GridView1.DataBind();elseScriptManager.RegisterStartu