企业办公自动化管理系统课程案例_第1页
企业办公自动化管理系统课程案例_第2页
企业办公自动化管理系统课程案例_第3页
企业办公自动化管理系统课程案例_第4页
企业办公自动化管理系统课程案例_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程案例企业办公自动化管理系统通过本案例学习一下内容:1.企业办公自动化管理系统开发的基本过程2.系统需求分析和可行性分析3.系统设计的方法4.构建开发环境5.如何分析并设计数据库6.如何设计公共类7.主要功能模块的实现方法8.系统的编译与发布9.SQL server技术10. 面向对象的开发思想11.分层开发模式系统分析o一.需求分析对于企业办公自动化管理系统来说,提高企业的管理效率、方便企业职员的协助是至关重要,企业的办公环境如下:1.使用计算机网络环境属于局域网。2.公司规模50100人,人手一台计算机。3.员工上下班考勤属于人工考勤。4.实行人性化管理,允许员工自己有发表意见和想法。5

2、.员工在工作中传送和接收文件,很不方便。6.对于公司的公告、新闻和规章制度,员工了解不及时7.重要通知都是逐一打电话通知。系统分析o需求分析结论1.部门管理功能2.员工管理功能3.公告管理功能4.文件管理功能5.交流管理功能6.考勤管理功能7.规章制度管理功能8.系统管理功能二、系统设计1.系统目标根据需求分析的描述以及与用户的沟通,现制定系统实现目标如下:o系统采用人机对话方式,界面美观友好,信息查询灵活、方便,数据存储安全可靠。o灵活、快速的发送和接收文件。o实现功能强大的公告发布与管理功能。o系统最大限度地实现易维护性和易操作性o界面简洁、框架清晰、美观大方。o实现企业部门和职员的信息管

3、理功能。o通过后台查看与删除公告信息、查看公文信息。o对员工信息、职位信息与部门信息的管理。二、系统设计o业务流程图系统功能结构o企业办公自动化管理系统前台(职员)功能结构图系统功能结构o企业办公自动化管理系统前台(职员)功能结构图构建开放环境o1.web系统开发环境页面开发环境:VS2005集成开发环境开发语言:ASP.NET +C#后台数据库: SQL Server2000开发环境运行平台:XP(SP2)o2.服务器端WEB服务器:IIS6.0数据库服务器:SQL Server 2000网站服务器运行环境:.NET Framework sdk2.0o3.客户端n浏览器:IE6.0n分辨率:

4、最佳效果1024768数据库设计o系统数据库采用SQL Server2000数据库,系统数据库名称为db_OAS.数据库db_OAS中包括多张数据表。下面分别给出数据表概要说明、数据库E-R图、数据表关系图、数据表的结构。数据表概要说明o 数据表树形结构如下图:数据库E-R的分析o课堂练习: 对上表中的各个实体用E-R图进行分析。要求:1.用E-R图描述出各个实体。2.描述数据表结构。3.描述数据表之间的关系。实体描述举例o企业部门实体E-R图描述o企业部门数据表结构描述数据表的关系图试写出下列需求的SQL语句o根据输入的”用户名”“密码”查询“系统用户表”中是否有记录存在,并判断该用户是“管

5、理员”还是“普通职员”o增加部门信息;o根据ID查看某个部门信息o删除某个部门复杂SQL语句的使用 显示企业的年度优秀员工信息1.优秀员工的标准通过考勤考核(迟到和早退)2.考勤结果的前2位3.显示的信息包括:员工姓名,所在部门,照片相关资料来自SQL联机丛书使用使用 TOP 和和 PERCENT 限制结果集限制结果集oTOP 子句限制返回到结果集中的行数。oTOP n PERCENTon 指定返回的行数。如果未指定 PERCENT,n 就是返回的行数。o如果一个 SELECT 语句既包含 TOP 又包含 ORDER BY 子句,那么返回的行将会从排序后的结果集中选择。整个结果集按照指定的顺序

6、建立并且返回排好序的结果集的前 n 行。相关资料来自SQL联机丛书o用用 ORDER BY 对行进行排序对行进行排序oORDER BY 子句按查询结果中的一列或多列对查询结果进行排序,用作排序依据的列总长度可达 8,060。有关 ORDER BY 子句最大大小的更多信息,请参见 SELECT。o排序可以是升序的 (ASC),也可以是降序的 (DESC)。如果没有指定升序还是降序,就假定为 ASC。相关资料来自SQL联机丛书o聚合函数聚合函数o聚合函数对一组值执行计算并返回单一的值。除 COUNT 函数之外,聚合函数忽略空值。聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用。

7、Transact-SQL 编程语言提供下列聚合函数:oAVG MAX SUM MIN COUNT等相关资料来自SQL联机丛书o使用内联接使用内联接o内联接是用比较运算符比较要联接列的值的联接。下面的 Transact-SQL 查询是内联接的一个示例: USE pubs SELECT * FROM authors AS a INNER JOIN publishers AS p ON a.city = p.city ORDER BY a.au_lname DESC 此内联接称为相等联接。它返回两个表中的所有列,但只返回在联接列中具有相等值的行。o select ,a.dept,a.ph

8、otoPath,b.stateo from tb_employee AS a inner join o (select TOP 2 *o fromo ( select employeeName, sum(late)+sum(quit) as stateo from tb_sign group by employeeName)as aao order by state)as bo on =b.employeeNameo order by b.stateADO.NET 介绍oADO.NET 对 Microsoft SQL Server 和 XML 等数据源以及通过 OLE DB 和 X

9、ML 公开的数据源提供一致的访问。 o在创建 ADO.NET 时,Microsoft 具有以下设计目标: 1.利用当前的 ActiveX 数据类型 (ADO) 知识。 2.支持 N 层编程模型。 3. 集成 XML 支持。ADO.NET介绍o和 .net framework类库中其他所有东西一样,ADO.net不过是一组类型(TYPES)而已,他们都位于SYSTEM.DATA名字空间中。ADO.NET介绍o每一种.NET数据供应器都实现为一组类型(types);oSystem.Data.SqlClient名字空间-SQL ProvideroSystem.Data.OleDb名字空间-OLE D

10、B Providero不论选择哪种Provider,每一种都提供一套相似的类(Class)ADO.NET介绍.NET数据provider都支持的一些基础对象。它们是:oConnection:用于建立和释放连接(SqlConnection-OleDbConnection)oCommand:用于存储和执行命令,如一个SQL查询或一个存储过程,并为命令指定参数。oDataReader:对数据库中的数据提供直接、循环的只读的访问。oDataAdapter:建造于DataReader之上,用于创建和操作DataSet实体。ADO.NET介绍o客户可以通过DataReader或者DataSet来访问数据。

11、Visual Studio 中的数据命名空间 .NET Framework 中的数据和 XML 命名空间包括: oSystem.Data 由构成 ADO.NET 结构的类组成,该结构是托管应用程序的主要数据访问方法。ADO.NET 结构使您可以生成可用于有效管理来自多个数据源的数据的组件。oSystem.Data.OleDb 构成兼容数据源的 OLE DB .NET Framework 数据提供程序的类。这些类使您能连接到 OLE DB 数据源、针对数据源执行命令并读取结果。oSystem.Data.SqlClient 构成 SQL Server .NET Framework 数据提供程序的类

12、,该提供程序允许您连接到 SQL Server 7.0、执行命令并读取结果。System.Data.SqlClient 命名空间与 System.Data.OleDb 命名空间类似,但为访问 SQL Server 7.0 和更高版本进行了优化。访问数据示例o示例如何打开一连接,如何创建一个命令,以及如何利用DataReaer读取结果。o示例展示如何使用DataSets (一个DataAdapter如何用于将一个DataTable添加到一个DataSets中)访问数据示例-DataReader 1.设置一个连接 SqlConnection Cn = New SqlConnection(Serve

13、r=(local);database=db_OAS;Uid=sa;Pwd=); 2.创建一个命令 SqlCommand Cmd = Cn.CreateCommand(); Cmd.CommandText = select * from tb_department where ID=20; 3. 打开连接Cn.Open(); 4. 执行命令-将结果存入DataReader oSqlDataReader Rdr = Cmd.ExecuteReader();访问数据示例-DataReadero5.取结果并显示o try o while (Rdr.Read()o o o System.Console.

14、WriteLine(String.Format(0,1,2, o Rdr0, Rdr1, Rdr2);o o o catch (System.Exception e)o o System.Console.WriteLine(Error:0, o e.Message);o o 访问数据示例-DataReadero6.释放资源,关闭连接ofinally Rdr.Close(); Cn.Close(); 访问数据示例-DataSetsoSqlConnection Cn = new SqlConnection(Server=(local);database=db_OAS;Uid=sa;Pwd=);o

15、SqlCommand Cmd = Cn.CreateCommand();o Cmd.CommandText = select * from tb_department where ID=20;o SqlDataAdapter Da = new SqlDataAdapter();o Da.SelectCommand = Cmd;o DataSet Ds = new DataSet();o Cn.Open();o Da.Fill(Ds, tb_deparment);o Cn.Close();访问数据示例-DataSeto取数据;o try if (Ds.Tables0.Rows.Count0) D

16、ataRow row = Ds.Tables0.Rows0; System.Console.WriteLine(String.Format(0,1,2, row0, row1, row2); o catch (System.Exception e) System.Console.WriteLine(Error:0, e.Message); 访问数据示例-DataSetofinally if (Cn.State=ConnectionState.Open) Cn.Close(); o#region 利用DataSet存取查询结果; public DataSet ExecuteSelect (str

17、ing strSql, string strTableName)o o SqlConnection conn = new o SqlConnection(strConn);o SqlCommand com = conn.CreateCommand();o com.CommandText = strSql;o SqlDataAdapter da = new SqlDataAdapter();o da.SelectCommand = com;o DataSet ds = new DataSet();o conn.Open();o da.Fill(ds, strTableName);o conn.C

18、lose();o o return ds;o o#endregiono#region 增加、删除、添加SQL语句接口o public int ExecuteUpdateAndInsert(string strSql)o o SqlConnection conn = new SqlConnection(strConn);o SqlCommand com = conn.CreateCommand();o com.CommandText = strSql;o conn.Open();o int iResult=com.ExecuteNonQuery();o return iResult;o o#en

19、dregion接口的封装o class DataAccesso o const string strConn; o public DataAccess () strConn = Server=(local);database=db_OAS;Uid=sa;Pwd=; o接口1:利用DataSet存取查询结果针对SELECT语句;o接口2: 增加、删除、添加SQL语句接口 接口1:利用DataSet存取查询结果针对SELECT语句o #region 该方法执行查询命令,并返回该方法执行查询命令,并返回DataSet数据集;数据集;o public DataSet Run(string strSQL

20、, string strTableName)o o SqlConnection conn = new SqlConnection(strConn);o conn.Open();o SqlCommand com = new SqlCommand(strSQL, conn);o o SqlDataAdapter da = new SqlDataAdapter();o o da.SelectCommand = com;o DataSet ds = new DataSet();o da.Fill(ds, strTableName);o conn.Close();o return ds;o o #end

21、regiono 接口2: 增加、删除、添加SQL语句接口o public bool Run(string strSQL)o o SqlConnection con = new SqlConnection(strConn);o con.Open();o /第二种产生命令对象的方法;o SqlCommand com = new SqlCommand(strSQL, con);o if (com.ExecuteNonQuery() 0)o o con.Close();o return true;o elseo o con.Close();o return false;o o 接口的使用o1.创建数据

22、类实例;o DataAccess da = new DataAccess();o2.调用接口;oDataSet ds = da.Run(Select * from b_department, dept);ostring strSQL = insert into tb_department values(+s1+,+s2+);oda.Run(strSQL);接口的使用o要求:点击添加按钮,将部门名和描述插入到Dropdownlist控件中显示o点击查询按钮,将显示该部门的描述信息。接口的使用o数据绑定; opublic void BindDept()oo dlShow.DataSource =

23、o da.Run(Select * from tb_department, o dept);o dlShow.DataTextField = name;o dlShow.DataBind();o 接口的使用o点击添加按钮;oprotected void Button1_Click(object sender, EventArgs e)oo string s1=txtName.Text;o string s2 = txtDemo.Text;o string strSQL = oinsert into tb_department values(+s1+,+s2+);o da.Run(strSQL)

24、;o BindDept();接口的使用点击查询按钮;protected void btnShowInfo_Click(object sender, EventArgs e)o o string s1 = dlShow.SelectedValue;o string strSql = o select * from tb_department where name= + s1 + ;o DataSet ds = da.Run(strSql,dept);o if (ds.Tables0.Rows.Count0)o o LblShow.Text = 该部门介绍: + ds.Tables0.Rows02

25、.ToString();o o C#+SQL+HTMLo protected void LoadInfo()o o DataSet ds =o da.Run(select * from tb_department, dept);o Response.Write();o Response.Write();o Response.Writeo(编号部门名称部门介绍);o Response.Write();oC#+SQL+HTMLofor (int i = 0; i ds.Tables0.Rows.Count;i+ )o o Response.Write();o Response.Write(o+ds

26、.Tables0.Rowsi0.ToString()+ds.Tables0.Rowsi1.ToString()+ds.Tables0.Rowsi2.ToString()+“o );o Response.Write();o o o Response.Write();C#+SQL+HTML对连接对象执行 SQL 语句 来自MS帮助文档public abstract int ExecuteNonQuery ()o可以使用 ExecuteNonQuery 执行编录操作(例如查询数据库的结构或创建诸如表等的数据库对象),或通过执行 UPDATE、INSERT 或 DELETE 语句更改数据库中的数据。o

27、虽然 ExecuteNonQuery 不返回任何行,但是映射到参数的任何输出参数或返回值都会用数据进行填充。o对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于其他所有类型的语句,返回值为 -1。o返回值返回值-受影响的行数。 接口的使用o MyData md = new MyData();/ 创建对象 DataSet Ds = md.ExecuteSql(“select * from tb_department where ID=20”, “tb_department”); /使用接口 try if (Ds.Tables0.Rows.Count0) .

28、 catch (System.Exception e) . 接口参数控件的使用说明用户控件用户控件 BaseClass bc = new BaseClass(); if (rdoBtnAdmin.Checked) DataSet ds =bc.GetDataSet(select count(*) from tb_sysUser where userName=+txtName.Text+ and userPwd=+txtPwd.Text+and system=1,tb_employee); if (ds .Tables0.Rows.Count0) 用户控件 BaseClass bc = new

29、BaseClass(); DataSet ds = bc.GetDataSet( select ,a.dept,a.photoPath,a.job,b.state from tb_employee as a inner join( select TOP 2 * FROM (select employeeName, sum(late)+sum(quit) as state from tb_sign group by employeeName ) as aa order by state) as b on =b.employeeName order by b.state“

30、 ,tb_sign); DataList1.DataSource = ds; DataList1.DataBind();数据绑定o asp:Image ID=Image1 ImageUrl= runat=server Height=54px Width=69px /o 姓名: 部门: o 职务: 显示控件-GridView显示控件-GridViewo显示表格数据是软件开发中的一个周期性任务。ASP.NET 提供了许多工具来在网格中显示表格数据 可以使用 GridView 来完成以下操作:o通过数据源控件自动绑定和显示数据。o通过数据源控件对数据进行选择、排序、分页、编辑和删除。显示控件-Gri

31、dView通过以下方式自定义 GridView 控件的外观和行为:o指定自定义列和样式。o利用模板创建自定义用户界面 (UI) 元素。o通过处理事件将自己的代码添加到 GridView 控件的功能中。比较 GridView 和 DataGridoGridView 控件是 DataGrid 控件的后继控件。与 DataGrid 控件相似,GridView 控件旨在在 HTML 表中显示数据。o当绑定到数据源时,DataGrid 和 GridView 控件分别将 DataSource 中的一行显示为输出表中的一行。 oDataGrid 和 GridView 控件都是从 WebControl 类派生

32、的。 比较 GridView 和 DataGrid 虽然 GridView 控件与 DataGrid 控件具有类似的对象模型,但与 DataGrid 控件相比,前者还具有许多新功能和优势,包括: o更丰富的设计时功能。o改进的数据源绑定功能。o排序、分页、更新和删除的自动处理。o其他列类型和设计时列操作。o具有 PagerTemplate 属性的自定义页导航用户界面 (UI)。GridView 控件中设置数据显示格式 o可以指定 GridView 控件的行的布局、颜色、字体和对齐方式。o可以指定行中包含的文本和数据的显示。o另外,可以指定将数据行显示为项目、交替项、选择的项还是编辑模式项。 G

33、ridView 控件中设置数据显示格式使用 GridView 控件进行数据绑定 GridView 控件提供了两个用于绑定到数据的选项(具体说明参见MSDN)o使用 DataSourceID 属性进行数据绑定,此选项让您能够将 GridView 控件绑定到数据源控件 o使用 DataSource 属性进行数据绑定,此选项使您能够绑定到包括 ADO.NET 数据集和数据读取器在内的各种对象。 使用 GridView 控件进行数据绑定o protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) GridView1.Da

34、taSource = bc.GetDataSet(select * from tb_department,department); GridView1.DataKeyNames = new string ID ; GridView1.DataBind(); 使用 GridView 控件编辑和删除数据 HyperLinkField 类 来自MSDNHyperLinkField 类字段表示在数据绑定控件中显示为超链接的字段。重要属性说明:DataNavigateUrlFields 属性 获取或设置数据源中字段的名称,用于为 HyperLinkField 对象中的超链接构造 URL。DataNavi

35、gateUrlFormatString 属性 取或设置当 URL 数据绑定到数据源中的字段时,HyperLinkColumn 中的超链接的 URL 的显示格式。 DataNavigateUrlFormatString= “DeptInfoEdit2.aspx?id=0 显示编辑的二级页面显示编辑的二级页面o根据传过来的ID进行查找,并显示到页面元素中去;oif (!Page.IsPostBack ) DataSet ds = bc.GetDataSet(SELECT * FROM tb_department WHERE ID = + Request.QueryStringid.ToString

36、() + , department); if (ds.Tables0.Rows.Count 0) TxtDeptName.Text = ds.Tables0.Rows0Name.ToString(); TxtDeptMemo.Text = ds.Tables0.Rows0memo.ToString(); 理解事件冒泡o在ASP.NET框架中包含3个支持事件冒泡的标准控件(Repeater、DataList和DataGrid控件)o事件冒泡指上述这些控件能捕获其子控件的事件。当子控件产生一个事件时,事件就向上“冒泡”传给包含该子控件的容器控件(父控件),而容器控件就可以执行一个子程序来处理该事件

37、事件处理删除事件: bc.SqlExecute(DELETE FROM tb_department WHERE ID= + GridView1.DataKeyse.RowIndex.Value.ToString() + ); GridView1.DataSource = bc.GetDataSet(select * from tb_department, department); GridView1.DataBind();使用第三方控件-FreeTextBox使用第三方控件-FreeTextBoxo在页面源代码中添加:oo o使用第三方控件-FreeTextBox使用第三方控件-FreeTextBoxo通过存储过程执行pr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论