1、1、引言当今社会竞争日益激烈,公司会议也不断增多,会议信息量也不断增大,公司经常需要会议进行 沟通,解决问题以及制定决策,而现在公司会议管理效率很低,容易出错,所以利用信息化管理会议经成为公司的急切需要。本实验利用ASP.NET技术进行会议管理系统的设计与实现,处理会议信息以及相关项目管理功能,更方便了用户和管理者的使用。信息化处理是当今社会不可避免的趋势,单一的手工操作已经不能满足规模日益增大的企业。随着计算机技术的发展,以及计算机在企业单位中的应用普及,计算机强大的功能已为人们深刻认识。2、可行性研究报告2.1问题描述本会议室管理系统包括各种会议室的信息,用户可以根据需要申请、修改、删除会
2、议室:1)用户需先注册一个账号,通过注册的账号登陆会议室管理系统进行操作。2)申请相应的会议室后,如果需要继续使用,可以申请会议室。3)也可以删除申请的会议室。 管理员可以查询会议室、处理用户申请、删除用户以及查看编辑用户结账信息:1)管理员登陆会议管理系统,查询会议室的情况(空闲或占用)。2)管理员可以处理用户申请,为用户分配会议室。3)管理员可以删除用户基本信息。4)管理员处理用户结账信息。2.2可行性研究的前提2.2.1要求功能:对用户管理、对会议室管理、对会议室申请管理。性能:方便快捷的实现申请、修改、删除各功能。输出:客户信息、会议室信息、申请信息输入:客户信息、会议室信息、申请信息
3、2.2.2可行性研究方法目的是用最小的代价在尽可能的时间内确定问题是否能解决。1)技术可行性研究本软件利用Visual C# 作为开发的语言工具,SQL server作为数据库开发工具。技术评价:在现有的软件和硬件条件可以满足我们的需求,并且通过学习可以使用C#语言实现本系统,本系统管理对象单一,数据变化性频繁,计算并不难,因此采用数据库管。2)经济可行性研究 本系统开发工具Visual C# 2005软件和SQL server数据库软件本开发小组已经拥有,不再需要购买,本系统的开发成本较低,从经济方面来说,可以开发。 3 需求分析3.1任务概述需求分析是软件定义时期的最后一个阶段,它的基本任
4、务是准确的回答:系统必须做什么?需求分析通常提出对系统的功能需求、性能需求、可靠性和可用性需求等多种需求。会议室的合理分配不仅利于公司资源最大程度的利用,而且有利于提高会议质量,解决了因资源竞争产生的一系列问题避免冲突。会议管理是一项需要重视的工作,本软件可以让会议室的利用率进一步提高,管理员方便管理,避免管理中容易出现的一些错误。使用本软件要求用户熟悉Windows 操作,并且有一定的软件操作基础。预计本软件将会在一些小的会议室租赁公司中得到广泛使用。3.2性能要求1)系统安全、可靠2)功能齐全3)界面清晰大方,操作简单4)易于维护和扩充3.3数据流图 顶层数据流图如图3.1所示:0层数据流
5、图如3.2所示:3.4数据字典数据字典是开发者与用户相互沟通的有效途径之一。它能形象的向用户描述开发者的意图,使用户明白数据库可能具有的项目数据字典是各类数据描述的集合,它是进行详细的数据收集和数据分析后所获得的主要成果。数据字典卡片:名字:客户信息别名:描述:客户的个人信息,用于对客户的确认定义:客户信息=客户+工作单位+电话+密码位置:输入到会议系统管理员端名字:申请会议室客户清单别名:描述:已申请会议室的客户的记录定义:申请会议室客户清单=客户信息的合集位置:输入到会议系统管理员端5 名字:会议室申请信息别名:描述:客户申请的会议室时间和类型,用于确定客户使用的会议室定义:会议室申请信息
6、=申请会议室时间+会议室类型位置:传输到会议系统管理员端名字:会议室申请通知信息别名:描述:客户的会议室信息,根据客户的使用时间和类型确定的定义:会议室申请通知信息=客户的申请时间+会议室类型位置:传输到会议系统管理员端名字:已租出会议室信息别名:描述:会议室出租情况的信息定义:已租出会议室信息=已处理的会议室申请位置:输出到打印机名字:客户使用会议室记录别名:描述:已申请的客户在会议室出租公司的记录定义:客户使用会议室记录=客户ID+会议室信息位置:输出到会议系统管理员端名称:管理员表别名:描述:对管理员的描述定义:管理员用户名密码位置:输出到会议系统管理员端4 概要设计4.1定义可行性:用
7、最小的代价在尽可能段的时间内确定问题是否能解决,是否值得解决,但并不直接解决问题。即在较高层次上以抽象方式进行需求分析和设计。技术可行性:对要开发的项目的功能、性能和限制条件进行分析,确定在现有资源条件下,技术风险有多大,项目是否能实现。社会可行性:开发项目是否会在社会上、政治上引起侵权、破坏或其他责任问题。系统流程图:用图形符号描述组成系统的各个元素以及信息在这些部件之间的流动情况。数据流图(DFD):用来描绘软件系统的逻辑模型的工具,它描绘数据在软件系统中流动和被处理的逻辑过程。数据源点/终点:正方形表示用于反映数据流图与外部实体之间的联系。数据字典:用来定义数据流图中各个元素具体含义,它
8、的一种准确的,无二异性的说明方式,为系统的分析、设计和维护提供了有关元素的详细描述。4.2任务概述本系统旨在开发一个实用的会议室管理系统,利用信息化手段辅助管理,达到提升管理效率的目的。4.3总体设计通过详细调查社区管理信息,充分了解了系统的概况,明确管理员和用户的各种需求,确定本次设计的会议管理系统包括如图4.1所示的几大功能: 5 详细设计5.1编写目的 软件详细设计就是在软件总体设计的基础上,考虑如何实现定义的软件系统。直到对系统中的每个模块给出了足够详细的过程描述。在详细设计以后,程序员仍将根据详细设计的过程编写出实际的程序代码。详细设计的目标是确定应该怎样具体实现所需求的系统,也就是
9、说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。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转换为关系模型。关系模型为(其中加下划线的为主码):会议室(会议编号,类型,价格,状态)预订(编号,会议室类型,时间,电话,公司名称)管理员(用户名,密码)用户(编号,姓名,电
10、话,密码,公司名称)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.S
11、qlClient;publicpartialclass_Default : System.Web.UI.Pageprotectedvoid 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(alert(请输入用户名或密码!);); else SqlCo
12、nnection 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.W
13、rite(alert(登录失败!);); 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 Syst
14、em.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.Pageprotectedvoid Page_Load(object sender,EventArgs e) protectedvoid BtnOk_Click(object sender,EventArgs e) SqlConnect
15、ion 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)/如果数据中没有
16、记录或有多条记录则抱错 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.Confi
17、guration;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.Pageprotectedvoid Page_Load(object s
18、ender,EventArgs e) publicvoid BtnOk_Click(object sender,EventArgs e) if (Txtyh.Text =) | (Txtgs.Text =) | (Txtsj.Text =) | (Txtlxdh.Text =) |(Txthyslx.Text =) Response.Write(alert(不能为空!); else SqlConnection mycon =newSqlConnection(Class1.con); mycon.Open();SqlDataAdapter myadapter =newSqlDataAdapter
19、(select max(编号)as编号 from预定表 , mycon);DataSet myds =newDataSet(); myadapter.Fill(myds,ydb);Int32 li1 =Convert.ToInt32(myds.Tablesydb.Rows00);Int32 li2 = li1 + 2; mycon.Close();SqlConnection mycon1 =newSqlConnection(Class1.con); mycon1.Open();SqlCommand mycom1 = mycon1.CreateCommand(); mycom1.CommandT
20、ext =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); myc
21、on2.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 (f
22、lag1 0) & (flag2 0) Response.Write(alert(添加申请成功!); else Response.Write(alert(添加申请成功!); 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.WebCont
23、rols.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient;publicpartialclass_Default : System.Web.UI.Pageprotectedvoid Page_Load(object sender,EventArgs e) 14protectedvoid BtnOk_Click(Object sender,EventArgs e) string StrYhm = TxtYhm.Text.Trim();string StrMm = TxtMm.Text.Trim();if (
24、StrYhm = | StrMm =) Response.Write(alert(请输入用户名或密码!);); 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 f
25、lag = myread.Read();if (flag) Response.Redirect(main.aspx); else Response.Write(alert(登录失败!);); 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
26、 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.PagepublicString str,str1,str2;protectedvo
27、id 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(alert(请输入数据!); if (str1!=) & (str2=) str =select会议室ID,类型,价格,状态 from会议室表 where会议室ID= + st
28、r1 +; 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 =;/无输入时绑
29、定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(
30、);/有输入时板顶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(); publicv
31、oid 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
32、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.Pageprotectedvoid Page_Load(object sender,EventA
33、rgs e) if (!IsPostBack) bind(); publicvoid GridView1_RowEditing(object sender,GridViewEditEventArgs e) GridView1.EditIndex = e.NewEditIndex; bind(); publicvoid GridView1_PageIndexChanging(object sender,GridViewPageEventArgs e) GridView1.PageIndex = e.NewPageIndex; bind(); publicvoid GridView1_RowCan
34、celingEdit(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(); my
35、adapter.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.Rowse.RowIndex.Cel
36、ls4.Controls0).Text.ToString().Trim() +,申请状态= +(TextBox)(GridView1.Rowse.RowIndex.Cells6.Controls0).Text.ToString().Trim() + where编号= +Convert.ToInt16(GridView1.DataKeyse.RowIndex.Value.ToString() +;SqlCommand sqlcom =newSqlCommand(sqlstr, sqlcon); sqlcon.Open();Int32 flag1 = sqlcom.ExecuteNonQuery(
37、);/执行sql语句,并返回获得值 sqlcon.Close();19SqlConnection sqlcon1 =newSqlConnection(Class1.con);string sqlstr1 =update结账表 set会议室ID= + (TextBox)(GridView1.Rowse.RowIndex.Cells4.Controls0).Text.ToString().Trim() +,结账状态= +(TextBox)(GridView1.Rowse.RowIndex.Cells6.Controls0).Text.ToString().Trim() + where编号= +Co
38、nvert.ToInt16(GridView1.DataKeyse.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
39、=+(TextBox)(GridView1.Rowse.RowIndex.Cells4.Controls0).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(alert(处理成功!); GridView1.EditI
40、ndex = -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.
41、UI.WebControls.WebParts;publicpartialclassDeleteyh : System.Web.UI.Pageprotectedvoid 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