资源描述
1、引言
当今社会竞争日益激烈,公司会议也不断增多,会议信息量也不断增大,公司经常需要会议进行 沟通,解决问题以及制定决策,而现在公司会议管理效率很低,容易出错,所以利用信息化管理会议经成为公司的急切需要。本实验利用ASP.NET技术进行会议管理系统的设计与实现,处理会议信息以及相关项目管理功能,更方便了用户和管理者的使用。信息化处理是当今社会不可避免的趋势,单一的手工操作已经不能满足规模日益增大的企业。随着计算机技术的发展,以及计算机在企业单位中的应用普及,计算机强大的功能已为人们深刻认识。
2、可行性研究报告
2.1
问题描述
本会议室管理系统包括各种会议室的信息,用户可以根据需要申请、修改、删除会议室:
1)用户需先注册一个账号,通过注册的账号登陆会议室管理系统进行操作。
2)申请相应的会议室后,如果需要继续使用,可以申请会议室。
3)也可以删除申请的会议室。
管理员可以查询会议室、处理用户申请、删除用户以及查看编辑用户结账信息:
1)管理员登陆会议管理系统,查询会议室的情况(空闲或占用)。
2)管理员可以处理用户申请,为用户分配会议室。
3)管理员可以删除用户基本信息。
4)管理员处理用户结账信息。
2.2可行性研究的前提
2.2.1要求
功能:对用户管理、对会议室管理、对会议室申请管理。
性能:方便快捷的实现申请、修改、删除各功能。
输出:客户信息、会议室信息、申请信息
输入:客户信息、会议室信息、申请信息
2.2.2可行性研究方法目的是用最小的代价在尽可能的时间内确定问题是否能解决。
1)技术可行性研究本软件利用Visual C# 作为开发的语言工具,SQL server作为数据库开发工具。技术评价:在现有的软件和硬件条件可以满足我们的需求,并且通过学习可以使用C#语言实现本系统,本系统管理对象单一,数据变化性频繁,计算并不难,因此采用数据库管。
2)经济可行性研究
本系统开发工具Visual C# 2005软件和SQL server数据库软件本开发小组已经拥有,不再需要购买,本系统的开发成本较低,从经济方面来说,可以开发。
3 需求分析
3.1任务概述
需求分析是软件定义时期的最后一个阶段,它的基本任务是准确的回答:系统必须做什么?需求分析通常提出对系统的功能需求、性能需求、可靠性和可用性需求等多种需求。会议室的合理分配不仅利于公司资源最大程度的利用,而且有利于提高会议质量,解决了因资源竞争产生的一系列问题避免冲突。会议管理是一项需要重视的工作,本软件可以让会议室的利用率进一步提高,管理员方便管理,避免管理中容易出现的一些错误。使用本软件要求用户熟悉Windows 操作,并且有一定的软件操作基础。预计本软件将会在一些小的会议室租赁公司中得到广泛使用。
3.2性能要求
1)系统安全、可靠
2)功能齐全
3)界面清晰大方,操作简单
4)易于维护和扩充
3.3数据流图 顶层数据流图如图3.1所示:
0层数据流图如3.2所示:
3.4
数据字典数据字典是开发者与用户相互沟通的有效途径之一。它能形象的向用户描述开发者的意图,使用户明白数据库可能具有的项目数据字典是各类数据描述的集合,它是进行详细的数据收集和数据分析后所获得的主要成果。数据字典卡片:
名字:客户信息
别名:
描述:客户的个人信息,用于对客户的确认
定义:客户信息=客户ID+工作单位+电话+密码
位置:输入到会议系统管理员端
名字:申请会议室客户清单
别名:
描述:已申请会议室的客户的记录
定义:申请会议室客户清单=客户信息的合集
位置:输入到会议系统管理员端
5
名字:会议室申请信息
别名:
描述:客户申请的会议室时间和类型,用于确定客户使用的会议室
定义:会议室申请信息=申请会议室时间+会议室类型
位置:传输到会议系统管理员端
名字:会议室申请通知信息
别名:
描述:客户的会议室信息,根据客户的使用时间和类型确定的
定义:会议室申请通知信息=客户的申请时间+会议室类型
位置:传输到会议系统管理员端
名字:已租出会议室信息
别名:
描述:会议室出租情况的信息
定义:已租出会议室信息=已处理的会议室申请
位置:输出到打印机
名字:客户使用会议室记录
别名:
描述:已申请的客户在会议室出租公司的记录
定义:客户使用会议室记录=客户ID+会议室信息
位置:输出到会议系统管理员端
名称:管理员表
别名:
描述:对管理员的描述
定义:管理员=用户名+密码
位置:输出到会议系统管理员端
4 概要设计
4.1定义
可行性:用最小的代价在尽可能段的时间内确定问题是否能解决,是否值得解决,但并不直接解决问题。即在较高层次上以抽象方式进行需求分析和设计。
技术可行性:对要开发的项目的功能、性能和限制条件进行分析,确定在现有资源条件下,技术风险有多大,项目是否能实现。
社会可行性:开发项目是否会在社会上、政治上引起侵权、破坏或其他责任问题。
系统流程图:用图形符号描述组成系统的各个元素以及信息在这些部件之间的流动情况。
数据流图(DFD):用来描绘软件系统的逻辑模型的工具,它描绘数据在软件系统中流动和被处理的逻辑过程。
数据源点/终点:正方形表示
用于反映数据流图与外部实体之间的联系。
数据字典:用来定义数据流图中各个元素具体含义,它的一种准确的,无二异性的说明方式,为系统的分析、设计和维护提供了有关元素的详细描述。
4.2任务概述
本系统旨在开发一个实用的会议室管理系统,利用信息化手段辅助管理,达到提升管理效率的目的。
4.3总体设计
通过详细调查社区管理信息,充分了解了系统的概况,明确管理员和用户的各种需求,确定本次设计的会议管理系统包括如图4.1所示的几大功能:
5 详细设计
5.1编写目的
软件详细设计就是在软件总体设计的基础上,考虑如何实现定义的软件系统。直到对系统中的每个模块给出了足够详细的过程描述。在详细设计以后,程序员仍将根据详细设计的过程编写出实际的程序代码。详细设计的目标是确定应该怎样具体实现所需求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。
5.2数据库设计
5.1.1会议管理系统E-R图
E-R图如图5.1所示:
5.2.1关系模型
关系模型的逻辑结构是一组关系模式的集合。将E-R图转换为关系模式就是要将实体型、实体的属性和实体性之间的联系转换为关系模式。据以上E-R图以及实体集间1:1联系,m:n联系,m:n联系的转换规则,可以将E-R转换为关系模型。关系模型为(其中加下划线的为主码):
会议室(会议编号,类型,价格,状态)
预订(编号,会议室类型,时间,电话,公司名称)
管理员(用户名,密码)
用户(编号,姓名,电话,密码,公司名称)
5.3前台主要界面
5.3.1登陆界面
首先连接数据库进入登录窗口,登录窗口如5.2所示:
using System;
using System.Data;using
System.Configuration;using
System.Web;using
System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using
System.Web.UI.HtmlControls;using System.Data.SqlClient;publicpartialclass_Default : System.Web.UI.Page{protectedvoid
Page_Load(object sender,EventArgs e)
{9 }protectedvoid BtnOk_Click(Object sender,EventArgs e) {string StrYhm = TxtYhm.Text.Trim();string StrMm = TxtMm.Text.Trim();if (StrYhm =="" || StrMm =="") {
Response.Write("<script>alert('请输入用户名或密码!');</script>"); }else {SqlConnection mycon =newSqlConnection(Class1.con); mycon.Open();SqlCommand mycom = mycon.CreateCommand(); mycom.CommandText ="select用户ID,密码 from用户表 where用户ID='"+StrYhm+"'and密码='"+StrMm+"'";SqlDataReader myread = mycom.ExecuteReader();bool flag = myread.Read();if (flag) { Response.Redirect("main.aspx"); }else { Response.Write("<script>alert('登录失败!');</script>"); } mycon.Close(); mycom.Dispose(); } }protectedvoid BtnCancel_Click(Object sender,EventArgs e) { TxtYhm.Text =""; TxtMm.Text =""; }}
5.3.2用户注册界面用户注册如图5.3所示:
using System;
using System.
Collections;using
System.Configuration;using
System.Data;using System.Data.SqlClient;using
System.Web;using
System.Web.Security;using
System.Web.UI;using
System.Web.UI.HtmlControls;using
System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;publicpartialclasszhuce : System.Web.UI.Page{protectedvoid
Page_Load(object sender,EventArgs e)
{ }protectedvoid BtnOk_Click(object sender,EventArgs e)
{SqlConnection
mycon =newSqlConnection(Class1.con);
mycon.Open();SqlCommand
mycom = mycon.CreateCommand();
mycom.CommandText="insertinto
用户表 values('"+TxtYhid.Text.Trim()+"','"+TxtDh.Text.Trim()+"','" + TxtGsm.Text.Trim() +"','" + TxtMm.Text.Trim() +"')";Int32 flag1 = mycom.ExecuteNonQuery();
//执行sql语句,并返回获得值11if (flag1 > 0)//如果数据中没有记录或有多条记录则抱错
{ Response.Redirect("Default.aspx"); }else { Label1.Text ="添加失败"; }
mycon.Close();
mycom.Dispose(); }protectedvoid BtnCancel_
Click(object sender,EventArgs e) { TxtYhid.Text =""; TxtDh.Text =""; TxtGsm.Text =""; TxtMm.Text =""; }}
5.3.3用户申请会议室用户申请会议室如图5.4所示:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Web;using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
publicpartialclassAddsq
: System.Web.UI.Page{protectedvoid Page_Load(object sender,EventArgs e) { }publicvoid BtnOk_Click(object sender,EventArgs e)
{if ((Txtyh.Text =="") || (Txtgs.Text =="") || (Txtsj.Text =="") || (Txtlxdh.Text =="")
||(Txthyslx.Text =="")) { Response.Write("<script>alert('不能为空!')</script>"); }else
{SqlConnection mycon =newSqlConnection(Class1.con); mycon.Open();SqlDataAdapter myadapter =newSqlDataAdapter("select max(编号)as编号 from预定表 ", mycon);DataSet myds =newDataSet(); myadapter.Fill(myds,"ydb");
Int32 li1 =Convert.ToInt32(myds.Tables["ydb"].Rows[0][0]);Int32 li2 = li1 + 2; mycon.Close();
SqlConnection mycon1 =newSqlConnection(Class1.con); mycon1.Open();SqlCommand mycom1 = mycon1.CreateCommand(); mycom1.CommandText ="insert into预定表 (编号,用户ID,公司名,时间,电话,会议室类型,申请状态)values('" + li2 +"','" + Txtyh.Text.Trim() +"','" + Txtgs.Text.Trim() +"','" + Txtsj.Text.Trim() +"','"+ Txtlxdh.Text.Trim() +"','" + Txthyslx.Text.Trim() +"','未处理')";Int32 flag1 = mycom1.ExecuteNonQuery(); mycon1.Close();SqlConnection mycon2 =newSqlConnection(Class1.con); mycon2.Open();SqlCommand mycom2 = mycon2.CreateCommand(); mycom2.CommandText ="insert into结账表 (编号,用户ID,公司名,时间,会议室类型,价格,结账状态)values('" + li2 +"','" + Txtyh.Text.Trim() +"','" + Txtgs.Text.Trim() +"','" + Txtsj.Text.Trim() +"','"+ Txthyslx.Text.Trim() +"','2000','未结账')";Int32 flag2 = mycom2.ExecuteNonQuery(); mycon2.Close();if ((flag1 > 0) && (flag2 > 0))
{ Response.Write("<script>alert('添加申请成功!')</script>"); }else { Response.Write("<script>alert('添加申请成功!')</script>"); } }
5.4系统后台主要界面
5.4.1后台登陆
后台登陆如图5.5所示:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;publicpartialclass_Default :
System.Web.UI.Page{protectedvoid
Page_Load(object sender,EventArgs e)
{ }14protectedvoid BtnOk_Click(Object sender,EventArgs e)
{string StrYhm = TxtYhm.Text.Trim();string StrMm = TxtMm.Text.Trim();if (StrYhm =="" || StrMm =="")
{ Response.Write("<script>alert('请输入用户名或密码!');</script>"); }else
{SqlConnection mycon =newSqlConnection(Class1.con);
mycon.Open();SqlCommand mycom = mycon.CreateCommand();
mycom.CommandText ="select管理员ID,密码 from管理员表 where管理员ID='" + StrYhm +"'and密码='" + StrMm +"'";SqlDataReader myread = mycom.ExecuteReader()
;bool flag = myread.Read();
if (flag) { Response.Redirect("main.aspx");
}else { Response.Write("<script>alert('登录失败!');
</script>");
} mycon.Close();
mycom.Dispose();
} }protectedvoid BtnCancel_Click(Object sender,EventArgs e) { TxtYhm.Text ="";
TxtMm.Text ="";
}
5.4.2查询会议室查询
会议室如图5.6所示:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;publicpartialclassChaxun :
System.Web.UI.Page{publicString str,str1,str2;protectedvoid Page_Load(object sender,EventArgs e)
{if (!IsPostBack) { bind1(); } }protectedvoid BtnOk_Click(object sender,EventArgs e)
{ str1 = TxtHysid.Text.Trim();
str2 = TxtHyslx.Text.Trim();if ((str1=="") && (str2=="")) { Response.Write("<script>alert('请输入数据!')</script>");
}if ((str1!="") && (str2=="")) { str ="select会议室ID,类型,价格,状态 from会议室表 where会议室ID='" + str1 +"'"; bind(str);
}if((str1=="") && (str2!=""))
{ str="select会议室ID,类型,价格,状态 from会议室表 where类型='"+str2+"'";
bind(str);
}if ((str1!="") && (str2!="")) { str ="select会议室ID,类型,价格,状态 from会议室表 where会议室ID='" + str1 +"' and类型='"+ str2 +"'"; bind(str); } }protectedvoid BtnCancel_Click(object sender,EventArgs e) { TxtHysid.Text ="";
TxtHyslx.Text ="";
}//无输入时绑定publicvoid bind1() {SqlConnection mycon =newSqlConnection(Class1.con);
mycon.Open();
//where状态 ='闲置'SqlDataAdapter myadapter =newSqlDataAdapter("select会议室ID,类型,价格,状态 from会议室表 ",mycon);DataSet myds =newDataSet();
myadapter.Fill(myds,"ydb");
this.GridView1.DataSource=myds;
this.GridView1.DataBind();
mycon.Close();
}//有输入时板顶publicvoid bind(String st) {SqlConnection mycon1 =newSqlConnection(Class1.con);
mycon1.Open();SqlDataAdapter myadapter1 =newSqlDataAdapter(st, mycon1);DataSet myds1 =newDataSet();
myadapter1.Fill(myds1,"ydb1");
this.GridView1.DataSource = myds1;
this.GridView1.DataBind();
mycon1.Close();
}publicvoid GridView1_PageIndexChanging(object sender,GridViewPageEventArgs e) {this.GridView1.PageIndex = e.NewPageIndex;
if ((TxtHysid.Text.Trim() =="") && (TxtHyslx.Text.Trim() =="")) { bind1();
}else { bind(str);
}
}
}
5.4.3
处理用户申请
用户申请如图5.7所示:
处理申请如图5.8所示:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
publicpartialclassModifysq : System.Web.UI.Page{protectedvoid Page_Load(object sender,EventArgs e)
{if (!IsPostBack) { bind(); }
}publicvoid GridView1_RowEditing(object sender,GridViewEditEvent
Args e)
{
GridView1.EditIndex = e.NewEditIndex;
bind();
}publicvoid GridView1_PageIndexChanging(object sender,GridViewPageEventArgs e) { GridView1.PageIndex = e.NewPageIndex;
bind();
}publicvoid GridView1_RowCancelingEdit(object sender,GridViewCancelEditEventArgs e) { GridView1.EditIndex = -1;
bind();
}publicvoid bind() {SqlConnection mycon =newSqlConnection(Class1.con); mycon.Open();SqlDataAdapter myadapter =newSqlDataAdapter("select编号,用户ID,公司名,时间,会议室ID,会议室类型,申请状态 from预定表", mycon);DataSet myds =newDataSet(); myadapter.Fill(myds,"ydb");this.GridView1.DataSource = myds;this.GridView1.DataBind();
mycon.Close();
}
protectedvoid
GridView1_RowUpdating(object sender,GridViewUpdateEventArgs e) {SqlConnection sqlcon =newSqlConnection(Class1.con);
string sqlstr ="update预定表 set会议室ID='" + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim() +"',申请状态='" +((TextBox)(GridView1.Rows[e.RowIndex].Cells[6].Controls[0])).Text.ToString().Trim() +"' where编号='" +Convert.ToInt16(GridView1.DataKeys[e.RowIndex].Value.ToString()
) +"'";
SqlCommand sqlcom =newSqlCommand(sqlstr, sqlcon);
sqlcon.Open();Int32 flag1 = sqlcom.ExecuteNonQuery();
//执行sql语句,并返回获得值 sqlcon.Close();1
9SqlConnection sqlcon1 =newSqlConnection(Class1.con);
string sqlstr1 ="update结账表 set会议室ID='" + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim() +"',结账状态='" +((TextBox)(GridView1.Rows[e.RowIndex].Cells[6].Controls[0])).Text.ToString().Trim() +"' where编号='" +Convert.ToInt16(GridView1.DataKeys[e.RowIndex].Value.ToString()) +"'";
SqlCommand sqlcom1 =newSqlCommand(sqlstr1, sqlcon1); sqlcon1.Open();
Int32 flag2 = sqlcom1.ExecuteNonQuery();
//执行sql语句,并返回获得值 sqlcon1.Close()
;SqlConnection sqlcon2 =newSqlConnection(Class1.con);
string sqlstr2 ="update会议室表 set状态='占用 ' where会议室ID='"+((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim()+"'";
SqlCommand sqlcom2 =newSqlCommand(sqlstr2, sqlcon2); sqlcon2.Open();
Int32 flag3 = sqlcom2.ExecuteNonQuery();
//执行sql语句,并返回获得值 sqlcon2.Close();if ((flag1 > 0) && (flag2 > 0) && (flag3 > 0)) { Response.Write("<script>alert('处理成功!')</script>");
} GridView1.EditIndex = -1; bind();
}
}
5.4.4删除用户信息
删除用户信息如图5.9所示:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
publicpartialclassDeleteyh : System.Web.UI.Page{protectedvoid Page_Load(object sender,EventArgs e)
{if (!Page.IsPostBack) { bind();
}
}publicvoid bind() {SqlConnection mycon =newSqlConnection(Class1.con);
mycon.Open();
SqlDataAdapter myadapter =newSqlDataAdapter("select用户ID,公司名,电话 from用户表", my
展开阅读全文