网络编程 实验三.docx
《网络编程 实验三.docx》由会员分享,可在线阅读,更多相关《网络编程 实验三.docx(17页珍藏版)》请在冰豆网上搜索。
![网络编程 实验三.docx](https://file1.bdocx.com/fileroot1/2022-12/7/5f3986c1-d1d4-406a-962a-a21d73104a17/5f3986c1-d1d4-406a-962a-a21d73104a171.gif)
网络编程实验三
武汉工程大学
计算机科学与工程学院
《网络编程》实验报告[3]
专业班级
双特01
实验地点
软件工程503机房
学生学号
0805060128
指导教师
胡宏银
学生姓名
詹秋芬
实验时间
第12周周二1~2节
实验项目
酒店管理系统(基于ASP.NET的网站设计与实现)
实验类别
操作性()验证性()设计性(√)综合性()其它()
实验目的及要求
目的:
1、掌握ASP.NET网站设计方法
2、掌握如何利用所学知识编程实现网站
3、了解测试网站方法与技术
要求:
1、设计的网站要求实现一般功能、能通过浏览器访问
2、实验报告内容包括:
系统设计、主要代码、测试报告
3、如果要实现一个比较完善的系统,可以2-3人一组
类别
评分标准
分值
得分
合计
上机表现
积极出勤、遵守纪律
认真完成设计任务
30分
报告质量
操作规范、功能正确
填写完整、体现收获
70分
说明:
评阅教师:
日期:
20年月日
一、实验内容:
设计、实现、测试网站,以下题目任选一个:
(1)学生信息管理系统
(2)论坛系统
(3)博客系统
(4)个人自定:
要求是web程序
注:
此网站设计的题目是酒店管理系统,由我自定的,下面将详细介绍本系统的具体设计、实现和测试网站过程:
二、实验步骤
1、设计系统
(1)新建一个数据库:
首先设计该系统所需的数据库表,在设计数据库表结构之前,要创建一个Access数据库,本系统使用的数据库名为HotelManageSys.mdb。
(2)在数据库中新建表:
在完成数据库的建立后,接下来在数据库中建立表,本系统一共使用了五个数据库表,分别是:
用户信息表(Users)、客房类型信息表(RoomType)、客房基本信息表(GuestRoom)、酒店入住信息表(Occupy)和房间当前状态表(RoomState)。
其中,用户信息表用来保存使用该系统的酒店员工的基本信息;客房类型信息表用来保存酒店所有客房类型基本信息;客房基本信息表用来保存酒店所有客房的基本信息;酒店入住信息表保存了酒店历来的全部入住信息;客房状态信息表用来记录酒店客房当前的状态,即是否已外租信息,帮助系统区分各客房状态。
(3)设计网站的总体结构:
酒店管理系统的网站结构分为两层,包括后台管理层和前台管理层。
后台管理层主要面向系统权限为酒店总管理员的用户,当用户以酒店总管理员身份登录后,将被引导至该层。
前台管理层则主要是面向系统权限为酒店前台服务人员的用户,登录后将被引导至该层。
(4)新建并实现页面的设计:
根据以上介绍的网站结构,得出系统需要开发如下页面:
酒店管理系统首页(default.aspx)、客房信息添加页面(roomadd.aspx)、客房信息修改页面(roommodify.aspx)、客房类型信息维护页面(roomtypemanage.aspx)、客房类型信息添加页面(roomtypeadd.aspx)、客房类型信息修改页面(roomtypemodify.aspx)、客房经营管理页面(roomlist.aspx)、订房操作页面(roomorder.aspx)、退房操作页面(roomcheckout.aspx)。
然后,依次在所建网站“酒店管理系统”中添加如上页面,并在各个页面中添加相应的控件来实现页面的完整布局。
2、实现系统
界面的设计是系统实现的骨架,数据库的连接于封装构成了填写动态代码的基础。
因此,摆弄些基本的功能代码的基础已经准备好了,下面就是在这些骨架中,根据数据库的连接和封装,来填写内容——动态代码了。
(1)酒店管理系统首页实现:
现在就为刚才所设计的首页编写后台支持类(default.aspx.cs),用于处理页面的事件,这里的主要事件是登录按钮的单击事件,以完成对用户名、密码信息的提交和验证工作。
核心代码如下所示:
protectedvoidbtn_login_Click(objectsender,EventArgse)
{
stringstrconn=ConfigurationSettings.AppSettings["dsn"];
OleDbConnectioncn=newOleDbConnection(strconn);
cn.Open();
stringmyaccess="select*fromUserswhereUID='"+tbx_uid.Text+"'andUPassword='"+tbx_upassword.Text+"'";
OleDbCommandcm=newOleDbCommand(myaccess,cn);
OleDbDataReaderdr=cm.ExecuteReader();
if(dr.Read())
{
lbl_message.Text="";
Session["UID"]=dr["UID"].ToString();
Session["upower"].ToString();
lbl_message.Text="欢迎您!
"+Session["UID"];
if(Session["UPower"].TOString()=="1")
{
Response.Redirect("roommanage.aspx");
}
elseif(Session["UPower"].ToString()==2)
{
Response.Redirect("roomlist.aspx");
}
else
{
lbl_message.Text="对不起,您的用户名/密码不正确,请重新输入";
}
cn.Close();
}
}
}
(2)客房信息维护页面实现:
客房信息维护页面的后台支持类为:
roommanage.aspx.cs,它负责对页面的事件进行处理,核心代码如下所示:
//在页面的page_load()事件中,对DataGrid控件的数据绑定函数BindGrid()方法进行调用,代码如下:
PrivatevoidPage_Load(objectsender,System.EventArgse)
{
if(!
IsPostBack)BindGrid();
}
//下面是BindGrid()方法的实现过程:
PublicvoidBindgrid()
{
stringstrconn=ConfigurationSettings.AppSettings["dsn"];
OleDbConnectioncn=newOleDbConnection(strconn);
OleDbDataAdapterda=newOleDbDataAdapter("guestroomlist",cn);
DataSetds=newOleDbDataSet();
da.Fill(ds);
dgd_roomlist.DataSource=ds;
dgd_roomlist.DataBind();
cn.Close();
}
//下面方法用于响应页面中DataGrid控件dgd_roomlist的删除事件:
publicvoidDataGrid_Delete(Objectsender,DataGridCommandEventArgsE)
{
stringstrconn=ConfigurationSettings.AppSettings["dsn"];
OleDbConnectioncn=newOleDbConnection(strconn);
cn.Open();
OleDbCommandcm=newOleDbCommand("guestroomdelete",cn);
cm.CommandType=CommandType.StoredProcedure;
cm.Parameters.Add("@RID",OleDbType.VarChar);
cm.Parameters["@RID"].Value=E.Item.Cells[0].Text.ToString();
cm.ExecuteNonQuery();
cn.Close();
cn.Open();
OleDbCommandcm0=newOleDbCommand("roomstatedelete",cn);
cm0.CommandType=CommandType.StoredProcedure;
cm0.Parameters.Add("@SRID",OleDbType.VarChar);
cm0.Parameters["@SRID"].Value=E.Item.Cells[0].Text.ToString();
cm0.ExecuteNonQuery();
cn.Close();
Response.Redirect("roommanage.aspx");
dgd_roomlist.EditIndex=-1;
BindGrid();
}
//下面方法用于响应页面中“开始”按钮的单击事件:
protectedvoidbtn_search_Click(objectsender,EventArgse)
{
intvarrid=0;
try
{
varrid=Convert.ToInt32(tbx_rid.Text.ToString());
}
catch
{
Response.Write("输入房号有误,请返回!
");
Response.End();
}
Response.Redirect("roommmodify.aspx?
rid="+varrid);
}
(3)客房信息添加页面实现:
客房信息添加页面的后台支持类为:
roomadd.aspx.cs,它负责对页面的事件进行处理,核心代码如下所示:
publicpartialclassRoomManage:
System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!
IsPostBack)BindGrid();
}
publicvoidBindGrid()
{
stringstrconn=ConfigurationSettings.AppSettings["dsn"];
OleDbConnectioncn=newOleDbConnection(strconn);
OleDbDataAdapterda=newOleDbDataAdapter("guestroomlist",cn);
DataSetds=newDataSet();
da.Fill(ds);
dgd_roomlist.DataSource=ds;
dgd_roomlist.DataBind();
cn.Close();
}
publicvoidDataGrid_Delete(Objectsender,DataGridCommandEventArgsE)
{
stringstrconn=ConfigurationSettings.AppSettings["dsn"];
OleDbConnectioncn=newOleDbConnection(strconn);
cn.Open();
OleDbCommandcm=newOleDbCommand("guestroomdelete",cn);
cm.CommandType=CommandType.StoredProcedure;
cm.Parameters.Add("@RID",OleDbType.VarChar);
cm.Parameters["@RID"].Value=E.Item.Cells[0].Text.ToString();
cm.ExecuteNonQuery();
cn.Close();
cn.Open();
OleDbCommandcm0=newOleDbCommand("roomstatedelete",cn);
cm0.CommandType=CommandType.StoredProcedure;
cm0.Parameters.Add("@SRID",OleDbType.VarChar);
cm0.Parameters["@SRID"].Value=E.Item.Cells[0].Text.ToString();
cm0.ExecuteNonQuery();
cn.Close();
Response.Redirect("roommanage.aspx");
dgd_roomlist.EditIndex=-1;
BindGrid();
}
protectedvoidbtn_search_Click(objectsender,EventArgse)
{
intvarrid=0;
try
{
varrid=Convert.ToInt32(tbx_rid.Text.ToString());
}
catch
{
Response.Write("输入房号有误,请返回!
");
Response.End();
}
Response.Redirect("roommmodify.aspx?
rid="+varrid);
}
publicvoidctv_rid_SercerValidate(objectsource,System.Web.UI.WebControls.ServerValidateEventArgsargs)
{
stringstrconn=ConfigurationSettings.AppSettings["dsn"];
OleDbConnectioncn=newOleDbConnection(strconn);
cn.Open();
stringmyaccess="select*fromGuestRoomwhererid='"+tbx_rid.Text+"'";
OleDbCommandcm=newOleDbCommand(myaccess,cn);
OleDbDataReaderdr=cm.ExecuteReader();
if(dr.Read())
{
args.IsValid=false;
}
else
{
args.IsValid=true;
}
cn.Close();
}
}
(4)客房信息修改页面实现:
客房信息修改页面的后台支持类为:
roommodify.aspx.cs,它负责对页面的事件进行处理,核心代码如下所示:
publicpartialclassRoomModify:
System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!
IsPostBack)
{
stringstrconn=ConfigurationSettings.AppSettings["dsn"];
OleDbConnectioncn0=newOleDbConnection(strconn);
cn0.Open();
stringmyaccess="select*fromRoomType";
OleDbCommandcm0=newOleDbCommand(myaccess,cn0);
OleDbDataReaderdr0=cm0.ExecuteReader();
while(dr0.Read())
{
ddl_rtype.Items.Add(newListItem(dr0["tname"].ToString(),dr0["tid"].ToString()));
}
cn0.Close();
OleDbConnectioncn=newOleDbConnection(strconn);
cn.Open();
OleDbCommandcm=newOleDbCommand("guestroomdetail",cn);
cm.CommandType=CommandType.StoredProcedure;
cm.Parameters.Add("@RID",OleDbType.VarChar);
cm.Parameters["@RID"].Value=Request.QueryString["rid"].ToString();
OleDbDataReaderdr=cm.ExecuteReader();
if(dr.Read())
{
lbl_rid.Text=dr["rid"].ToString();
tbx_rposition.Text=dr["rposition"].ToString();
tbx_rdescribe.Text=dr["rdescribe"].ToString();
ddl_rtype.Items.FindByValue(dr["rtype"].ToString()).Selected=true;
}
else
{
Response.Write("对不起,没有该房间信息");
Response.End();
}
}
}
protectedvoidbtn_modify_Click(objectsender,EventArgse)
{
if(Page.IsValid)
{
stringstrconn=ConfigurationSettings.AppSettings["dsn"];
OleDbConnectioncn=newOleDbConnection(strconn);
cn.Open();
OleDbCommandcm=newOleDbCommand("guestroommodify",cn);
cm.CommandType=CommandType.StoredProcedure;
cm.Parameters.Add("@RID",OleDbType.VarChar);
cm.Parameters.Add("@RType",OleDbType.VarChar);
cm.Parameters.Add("@RPosition",OleDbType.VarChar);
cm.Parameters.Add("@RDescribe",OleDbType.VarChar);
cm.Parameters["@RID"].Value=lbl_rid.Text.ToString();
cm.Parameters["@RType"].Value=Convert.ToInt32(ddl_rtype.SelectedItem.Value.ToString());
cm.Parameters["@RPosition"].Value=tbx_rposition.Text.ToString();
cm.Parameters["@RDescribe"].Value=tbx_rdescribe.Text.ToString();
cm.ExecuteNonQuery();
cn.Close();
Response.Redirect("roommanage.aspx");
}
}
protectedvoidbtn_delete_Click(objectsender,EventArgse)
{
stringstrconn=ConfigurationSettings.AppSettings["dsn"];
OleDbConnectioncn=newOleDbConnection(strconn);
cn.Open();
OleDbCommandcm=newOleDbCommand("guestroomdelete",cn);
cm.CommandType=CommandType.StoredProcedure;
cm.Parameters.Add("@RID",OleDbType.VarChar);
cm.Parameters["@RID"].Value=lbl_rid.Text.ToString();
cm.ExecuteNonQuery();
cn.Close();
cn.Open();
OleDbCommandcm0=newOleDbCommand("rooomstatedelete",cn);
cm0.CommandType=CommandType.StoredProcedure;
cm0.Parameters.Add("@SRID",OleDbType.VarChar);
cm0.Parameters["@SRID"].Value=lbl_rid.Text.ToString();
cm0.ExecuteNonQuery();
cn.Close();
Response.Redirect("roommanage.aspx");
}
}
(5)客房经营管理页面实现:
客房经营管理页面的后台支持类为:
roomlist.aspx.cs,它负责对页面的事件进行处理,核心代码如下所示:
publicpartialclassRoomList:
System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
BindList();
}
publicvoidBindList()
{
stringstrconn=ConfigurationSettings.AppSettings["dsn"];
OleDbConnectioncn=newOleDbConnection(strconn);
OleDbDataAdapterda1=newOleDbDataAdapter("guestroomstate",cn);
DataSetds1=newDataSet();
da1.Fill(ds1);
dlt_roomlist.DataSource=ds1;
dlt_roomlist.DataBind();
cn.Close();
}
}
(6)订房操作页面实现:
订房操作页面的后台支持类为:
roomorder.aspx.cs,它负责对页面的事件进行处理,核心代码如下所示:
publicpartialclassRoomLeftList:
System.Web.UI.Page
{
protected