企业办公自动化管理系统案例.ppt

上传人:小飞机 文档编号:5218787 上传时间:2023-06-14 格式:PPT 页数:77 大小:701.50KB
返回 下载 相关 举报
企业办公自动化管理系统案例.ppt_第1页
第1页 / 共77页
企业办公自动化管理系统案例.ppt_第2页
第2页 / 共77页
企业办公自动化管理系统案例.ppt_第3页
第3页 / 共77页
企业办公自动化管理系统案例.ppt_第4页
第4页 / 共77页
企业办公自动化管理系统案例.ppt_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《企业办公自动化管理系统案例.ppt》由会员分享,可在线阅读,更多相关《企业办公自动化管理系统案例.ppt(77页珍藏版)》请在三一办公上搜索。

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

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

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

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

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

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

7、VG MAX SUM MIN COUNT等,相关资料来自SQL联机丛书,使用内联接内联接是用比较运算符比较要联接列的值的联接。下面的 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 此内联接称为相等联接。它返回两个表中的所有列,但只返回在联接列中具有相等值的行。,select a.name,a.dept,a.photoPath,b.state from tb_employee AS a i

8、nner 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 a.name=b.employeeName order by b.state,ADO.NET 介绍,ADO.NET 对 Microsoft SQL Server 和 XML 等数据源以及通过 OLE DB 和 XML 公开的数据源提供一致的访问。在创建 ADO.NET 时,Microsoft 具有以下设计目标:1.利用

9、当前的 ActiveX 数据类型(ADO)知识。2.支持 N 层编程模型。3.集成 XML 支持。,ADO.NET介绍,和.net framework类库中其他所有东西一样,ADO.net不过是一组类型(TYPES)而已,他们都位于SYSTEM.DATA名字空间中。,ADO.NET介绍,每一种.NET数据供应器都实现为一组类型(types);名字空间-SQL Provider名字空间-OLE DB Provider不论选择哪种Provider,每一种都提供一套相似的类(Class),ADO.NET介绍,.NET数据provider都支持的一些基础对象。它们是:Connection:用于建立和释

10、放连接(SqlConnection-OleDbConnection)Command:用于存储和执行命令,如一个SQL查询或一个存储过程,并为命令指定参数。DataReader:对数据库中的数据提供直接、循环的只读的访问。DataAdapter:建造于DataReader之上,用于创建和操作DataSet实体。,ADO.NET介绍,客户可以通过DataReader或者DataSet来访问数据。,Visual Studio 中的数据命名空间,.NET Framework 中的数据和 XML 命名空间包括:System.Data 由构成 ADO.NET 结构的类组成,该结构是托管应用程序的主要数据访

11、问方法。ADO.NET 结构使您可以生成可用于有效管理来自多个数据源的数据的组件。构成兼容数据源的 OLE DB.NET Framework 数据提供程序的类。这些类使您能连接到 OLE DB 数据源、针对数据源执行命令并读取结果。构成 SQL Server.NET Framework 数据提供程序的类,该提供程序允许您连接到 SQL Server 7.0、执行命令并读取结果。命名空间与 命名空间类似,但为访问 SQL Server 7.0 和更高版本进行了优化。,访问数据示例,示例如何打开一连接,如何创建一个命令,以及如何利用DataReaer读取结果。示例展示如何使用DataSets(一个

12、DataAdapter如何用于将一个DataTable添加到一个DataSets中),访问数据示例-DataReader,1.设置一个连接 SqlConnection Cn=New SqlConnection(Server=(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 SqlDataReader R

13、dr=Cmd.ExecuteReader();,访问数据示例-DataReader,5.取结果并显示 try while(Rdr.Read()System.Console.WriteLine(String.Format(0,1,2,Rdr0,Rdr1,Rdr2);catch(System.Exception e)System.Console.WriteLine(Error:0,e.Message);,访问数据示例-DataReader,6.释放资源,关闭连接finally Rdr.Close();Cn.Close();,访问数据示例-DataSets,SqlConnection Cn=new

14、SqlConnection(Server=(local);database=db_OAS;Uid=sa;Pwd=);SqlCommand Cmd=Cn.CreateCommand();Cmd.CommandText=select*from tb_department where ID=20;SqlDataAdapter Da=new SqlDataAdapter();Da.SelectCommand=Cmd;DataSet Ds=new DataSet();Cn.Open();Da.Fill(Ds,tb_deparment);Cn.Close();,访问数据示例-DataSet,取数据;try

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

16、eSelect(string strSql,string strTableName)SqlConnection conn=new SqlConnection(strConn);SqlCommand com=conn.CreateCommand();com.CommandText=strSql;SqlDataAdapter da=new SqlDataAdapter();da.SelectCommand=com;DataSet ds=new DataSet();conn.Open();da.Fill(ds,strTableName);conn.Close();return ds;#endregi

17、on,#region 增加、删除、添加SQL语句接口 public int ExecuteUpdateAndInsert(string strSql)SqlConnection conn=new SqlConnection(strConn);SqlCommand com=conn.CreateCommand();com.CommandText=strSql;conn.Open();int iResult=com.ExecuteNonQuery();return iResult;#endregion,接口的封装,class DataAccess const string strConn;publ

18、ic DataAccess()strConn=Server=(local);database=db_OAS;Uid=sa;Pwd=;接口1:利用DataSet存取查询结果针对SELECT语句;接口2:增加、删除、添加SQL语句接口,接口1:利用DataSet存取查询结果针对SELECT语句,#region 该方法执行查询命令,并返回DataSet数据集;public DataSet Run(string strSQL,string strTableName)SqlConnection conn=new SqlConnection(strConn);conn.Open();SqlCommand

19、com=new SqlCommand(strSQL,conn);SqlDataAdapter da=new SqlDataAdapter();da.SelectCommand=com;DataSet ds=new DataSet();da.Fill(ds,strTableName);conn.Close();return ds;#endregion,接口2:增加、删除、添加SQL语句接口,public bool Run(string strSQL)SqlConnection con=new SqlConnection(strConn);con.Open();/第二种产生命令对象的方法;SqlC

20、ommand com=new SqlCommand(strSQL,con);if(com.ExecuteNonQuery()0)con.Close();return true;else con.Close();return false;,接口的使用,1.创建数据类实例;DataAccess da=new DataAccess();2.调用接口;DataSet ds=da.Run(Select*from b_department,dept);string strSQL=insert into tb_department values(+s1+,+s2+);da.Run(strSQL);,接口的使

21、用,要求:点击添加按钮,将部门名和描述插入到Dropdownlist控件中显示点击查询按钮,将显示该部门的描述信息。,接口的使用,数据绑定;public void BindDept()dlShow.DataSource=da.Run(Select*from tb_department,dept);dlShow.DataTextField=name;dlShow.DataBind();,接口的使用,点击添加按钮;protected void Button1_Click(object sender,EventArgs e)string s1=txtName.Text;string s2=txtDe

22、mo.Text;string strSQL=insert into tb_department values(+s1+,+s2+);da.Run(strSQL);BindDept();,接口的使用,点击查询按钮;protected void btnShowInfo_Click(object sender,EventArgs e)string s1=dlShow.SelectedValue;string strSql=select*from tb_department where name=+s1+;DataSet ds=da.Run(strSql,dept);if(ds.Tables0.Row

23、s.Count0)LblShow.Text=该部门介绍:+ds.Tables0.Rows02.ToString();,C#+SQL+HTML,protected void LoadInfo()DataSet ds=da.Run(select*from tb_department,dept);Response.Write();Response.Write();Response.Write(编号部门名称部门介绍);Response.Write();,C#+SQL+HTML,for(int i=0;i);Response.Write(+ds.Tables0.Rowsi0.ToString()+ds.

24、Tables0.Rowsi1.ToString()+ds.Tables0.Rowsi2.ToString()+“);Response.Write();Response.Write();,C#+SQL+HTML,对连接对象执行 SQL 语句 来自MS帮助文档,public abstract int ExecuteNonQuery()可以使用 ExecuteNonQuery 执行编录操作(例如查询数据库的结构或创建诸如表等的数据库对象),或通过执行 UPDATE、INSERT 或 DELETE 语句更改数据库中的数据。虽然 ExecuteNonQuery 不返回任何行,但是映射到参数的任何输出参数

25、或返回值都会用数据进行填充。对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于其他所有类型的语句,返回值为-1。返回值-受影响的行数。,接口的使用,MyData md=new MyData();/创建对象 DataSet Ds=md.ExecuteSql(“select*from tb_department where ID=20”,“tb_department”);/使用接口 try if(Ds.Tables0.Rows.Count0).catch(System.Exception e).,接口参数,控件的使用说明,用户控件,用户控件,BaseClas

26、s 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 BaseClass();DataSet ds=bc.GetDataSet(select a.name,a.dept,a.photoPath,a

27、.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 a.name=b.employeeName order by b.state“,tb_sign);DataList1.DataSource=ds;DataList1.DataBind();,数据绑定,runat=server Height=54px

28、 Width=69px/姓名:部门:职务:,显示控件-GridView,显示控件-GridView,显示表格数据是软件开发中的一个周期性任务。ASP.NET 提供了许多工具来在网格中显示表格数据 可以使用 GridView 来完成以下操作:通过数据源控件自动绑定和显示数据。通过数据源控件对数据进行选择、排序、分页、编辑和删除。,显示控件-GridView,通过以下方式自定义 GridView 控件的外观和行为:指定自定义列和样式。利用模板创建自定义用户界面(UI)元素。通过处理事件将自己的代码添加到 GridView 控件的功能中。,比较 GridView 和 DataGrid,GridVie

29、w 控件是 DataGrid 控件的后继控件。与 DataGrid 控件相似,GridView 控件旨在在 HTML 表中显示数据。当绑定到数据源时,DataGrid 和 GridView 控件分别将 DataSource 中的一行显示为输出表中的一行。DataGrid 和 GridView 控件都是从 WebControl 类派生的。,比较 GridView 和 DataGrid,虽然 GridView 控件与 DataGrid 控件具有类似的对象模型,但与 DataGrid 控件相比,前者还具有许多新功能和优势,包括:更丰富的设计时功能。改进的数据源绑定功能。排序、分页、更新和删除的自动处

30、理。其他列类型和设计时列操作。具有 PagerTemplate 属性的自定义页导航用户界面(UI)。,GridView 控件中设置数据显示格式,可以指定 GridView 控件的行的布局、颜色、字体和对齐方式。可以指定行中包含的文本和数据的显示。另外,可以指定将数据行显示为项目、交替项、选择的项还是编辑模式项。,GridView 控件中设置数据显示格式,使用 GridView 控件进行数据绑定,GridView 控件提供了两个用于绑定到数据的选项(具体说明参见MSDN)使用 DataSourceID 属性进行数据绑定,此选项让您能够将 GridView 控件绑定到数据源控件 使用 DataSo

31、urce 属性进行数据绑定,此选项使您能够绑定到包括 ADO.NET 数据集和数据读取器在内的各种对象。,使用 GridView 控件进行数据绑定,protected void Page_Load(object sender,EventArgs e)if(!IsPostBack)GridView1.DataSource=bc.GetDataSet(select*from tb_department,department);GridView1.DataKeyNames=new string ID;GridView1.DataBind();,使用 GridView 控件编辑和删除数据,HyperL

32、inkField 类 来自MSDN,HyperLinkField 类字段表示在数据绑定控件中显示为超链接的字段。重要属性说明:DataNavigateUrlFields 属性 获取或设置数据源中字段的名称,用于为 HyperLinkField 对象中的超链接构造 URL。DataNavigateUrlFormatString 属性 取或设置当 URL 数据绑定到数据源中的字段时,HyperLinkColumn 中的超链接的 URL 的显示格式。DataNavigateUrlFormatString=“DeptInfoEdit2.aspx?id=0,显示编辑的二级页面,显示编辑的二级页面,根据传

33、过来的ID进行查找,并显示到页面元素中去;if(!Page.IsPostBack)DataSet ds=bc.GetDataSet(SELECT*FROM tb_department WHERE ID=+Request.QueryStringid.ToString()+,department);if(ds.Tables0.Rows.Count 0)TxtDeptName.Text=ds.Tables0.Rows0Name.ToString();TxtDeptMemo.Text=ds.Tables0.Rows0memo.ToString();,理解事件冒泡,在ASP.NET框架中包含3个支持事件

34、冒泡的标准控件(Repeater、DataList和DataGrid控件)事件冒泡指上述这些控件能捕获其子控件的事件。当子控件产生一个事件时,事件就向上“冒泡”传给包含该子控件的容器控件(父控件),而容器控件就可以执行一个子程序来处理该事件,事件处理,删除事件:bc.SqlExecute(DELETE FROM tb_department WHERE ID=+GridView1.DataKeyse.RowIndex.Value.ToString()+);GridView1.DataSource=bc.GetDataSet(select*from tb_department,department

35、);GridView1.DataBind();,使用第三方控件-FreeTextBox,使用第三方控件-FreeTextBox,在页面源代码中添加:,使用第三方控件-FreeTextBox,使用第三方控件-FreeTextBox,通过存储过程执行protected void BtnSave_Click(object sender,EventArgs e)bc.ExecProcNotice(txtTitle.Text,FreeTextBox1.Text,SessionLoginName.ToString(),存储过程的设计,插入公告;CREATE PROCEDURE insert_tb_noti

36、ce(noticeTitle varchar(40),noticePerson varchar(20),noticeContent text)AS insert into db_OAS.dbo.tb_notice(noticeTitle,noticePerson,noticeContent)values(noticeTitle,noticePerson,noticeContent)GO,执行存储过程的代码分析,执行存储过程-专门用于FreeTextBox public Boolean ExecProcNotice(string strTitle,string strContent,string

37、 strName)SqlConnection conn=new SqlConnection(ConfigurationManager.AppSettingsconStr);conn.Open();SqlCommand com=new SqlCommand(insert_tb_notice,conn);com.CommandType=CommandType.StoredProcedure;/标题 SqlParameter pTitle=new SqlParameter(noticeTitle,SqlDbType.VarChar,40);pTitle.Value=strTitle;com.Para

38、meters.Add(pTitle);,/内容 SqlParameter pContent=new SqlParameter(noticeContent,SqlDbType.VarChar,0);pContent.Value=strContent;com.Parameters.Add(pContent);/发布者 SqlParameter pName=new SqlParameter(noticePerson,SqlDbType.VarChar,20);pName.Value=strName;com.Parameters.Add(pName);,if(com.ExecuteNonQuery()0)conn.Close();return true;else conn.Close();return false;,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号