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

上传人:xt****7 文档编号:2522666 上传时间:2019-11-27 格式:PPT 页数:77 大小:1.34MB
返回 下载 相关 举报
企业办公自动化管理系统案例.ppt_第1页
第1页 / 共77页
企业办公自动化管理系统案例.ppt_第2页
第2页 / 共77页
企业办公自动化管理系统案例.ppt_第3页
第3页 / 共77页
点击查看更多>>
资源描述
课程案例企业办公自动化管理系统,通过本案例学习一下内容: 1.企业办公自动化管理系统开发的基本过程 2.系统需求分析和可行性分析 3.系统设计的方法 4.构建开发环境 5.如何分析并设计数据库 6.如何设计公共类 7.主要功能模块的实现方法 8.系统的编译与发布 9.SQL server技术 10. 面向对象的开发思想 11.分层开发模式,系统分析,一.需求分析 对于企业办公自动化管理系统来说,提高企业的管理效率、 方便企业职员的协助是至关重要,企业的办公环境如下: 1.使用计算机网络环境属于局域网。 2.公司规模50100人,人手一台计算机。 3.员工上下班考勤属于人工考勤。 4.实行人性化管理,允许员工自己有发表意见和想法。 5.员工在工作中传送和接收文件,很不方便。 6.对于公司的公告、新闻和规章制度,员工了解不及时 7.重要通知都是逐一打电话通知。,系统分析,需求分析结论 1.部门管理功能 2.员工管理功能 3.公告管理功能 4.文件管理功能 5.交流管理功能 6.考勤管理功能 7.规章制度管理功能 8.系统管理功能,二、系统设计,1.系统目标 根据需求分析的描述以及与用户的沟通,现制定系统实现目标如下: 系统采用人机对话方式,界面美观友好,信息查询灵活、方便,数据存储安全可靠。 灵活、快速的发送和接收文件。 实现功能强大的公告发布与管理功能。 系统最大限度地实现易维护性和易操作性 界面简洁、框架清晰、美观大方。 实现企业部门和职员的信息管理功能。 通过后台查看与删除公告信息、查看公文信息。 对员工信息、职位信息与部门信息的管理。,二、系统设计,业务流程图,系统功能结构,企业办公自动化管理系统前台(职员)功能结构图,系统功能结构,企业办公自动化管理系统前台(职员)功能结构图,构建开放环境,1.web系统开发环境 页面开发环境:VS2005集成开发环境 开发语言:ASP.NET +C# 后台数据库: SQL Server2000 开发环境运行平台:XP(SP2) 2.服务器端 WEB服务器:IIS6.0 数据库服务器:SQL Server 2000 网站服务器运行环境:.NET Framework sdk2.0 3.客户端 浏览器:IE6.0 分辨率:最佳效果1024768,数据库设计,系统数据库采用SQL Server2000数据库,系统数据库名称为db_OAS.数据库db_OAS中包括多张数据表。下面分别给出数据表概要说明、数据库E-R图、数据表关系图、数据表的结构。,数据表概要说明,数据表树形结构如下图:,数据库E-R的分析,课堂练习: 对上表中的各个实体用E-R图进行分析。 要求: 1.用E-R图描述出各个实体。 2.描述数据表结构。 3.描述数据表之间的关系。,实体描述举例,企业部门实体E-R图描述,企业部门数据表结构描述,数据表的关系图,试写出下列需求的SQL语句,根据输入的”用户名”“密码”查询“系统用户表”中是否有记录存在,并判断该用户是“管理员”还是“普通职员” 增加部门信息; 根据ID查看某个部门信息 删除某个部门,复杂SQL语句的使用 显示企业的年度优秀员工信息,1.优秀员工的标准通过考勤考核(迟到和早退) 2.考勤结果的前2位 3.显示的信息包括: 员工姓名,所在部门,照片,相关资料来自SQL联机丛书,使用 TOP 和 PERCENT 限制结果集 TOP 子句限制返回到结果集中的行数。 TOP n PERCENT n 指定返回的行数。如果未指定 PERCENT,n 就是返回的行数。 如果一个 SELECT 语句既包含 TOP 又包含 ORDER BY 子句,那么返回的行将会从排序后的结果集中选择。整个结果集按照指定的顺序建立并且返回排好序的结果集的前 n 行。,相关资料来自SQL联机丛书,用 ORDER BY 对行进行排序 ORDER BY 子句按查询结果中的一列或多列对查询结果进行排序,用作排序依据的列总长度可达 8,060。有关 ORDER BY 子句最大大小的更多信息,请参见 SELECT。 排序可以是升序的 (ASC),也可以是降序的 (DESC)。如果没有指定升序还是降序,就假定为 ASC。,相关资料来自SQL联机丛书,聚合函数 聚合函数对一组值执行计算并返回单一的值。除 COUNT 函数之外,聚合函数忽略空值。聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用。 Transact-SQL 编程语言提供下列聚合函数: AVG 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 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,ADO.NET 介绍,ADO.NET 对 Microsoft SQL Server 和 XML 等数据源以及通过 OLE DB 和 XML 公开的数据源提供一致的访问。 在创建 ADO.NET 时,Microsoft 具有以下设计目标: 1.利用当前的 ActiveX 数据类型 (ADO) 知识。 2.支持 N 层编程模型。 3. 集成 XML 支持。,ADO.NET介绍,和 .net framework类库中其他所有东西一样,ADO.net不过是一组类型(TYPES)而已,他们都位于SYSTEM.DATA名字空间中。,ADO.NET介绍,每一种.NET数据供应器都实现为一组类型(types); System.Data.SqlClient名字空间-SQL Provider System.Data.OleDb名字空间-OLE DB Provider 不论选择哪种Provider,每一种都提供一套相似的类(Class),ADO.NET介绍,.NET数据provider都支持的一些基础对象。它们是: Connection:用于建立和释放连接(SqlConnection-OleDbConnection) Command:用于存储和执行命令,如一个SQL查询或一个存储过程,并为命令指定参数。 DataReader:对数据库中的数据提供直接、循环的只读的访问。 DataAdapter:建造于DataReader之上,用于创建和操作DataSet实体。,ADO.NET介绍,客户可以通过DataReader或者DataSet来访问数据。,Visual Studio 中的数据命名空间,.NET Framework 中的数据和 XML 命名空间包括: System.Data 由构成 ADO.NET 结构的类组成,该结构是托管应用程序的主要数据访问方法。ADO.NET 结构使您可以生成可用于有效管理来自多个数据源的数据的组件。 System.Data.OleDb 构成兼容数据源的 OLE DB .NET Framework 数据提供程序的类。这些类使您能连接到 OLE DB 数据源、针对数据源执行命令并读取结果。 System.Data.SqlClient 构成 SQL Server .NET Framework 数据提供程序的类,该提供程序允许您连接到 SQL Server 7.0、执行命令并读取结果。System.Data.SqlClient 命名空间与 System.Data.OleDb 命名空间类似,但为访问 SQL Server 7.0 和更高版本进行了优化。,访问数据示例,示例如何打开一连接,如何创建一个命令,以及如何利用DataReaer读取结果。 示例展示如何使用DataSets (一个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 Rdr = 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 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 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 ExecuteSelect (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; #endregion,#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; public 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 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(); /第二种产生命令对象的方法; SqlCommand 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);,接口的使用,要求:点击添加按钮,将部门名和描述插入到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 = txtDemo.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.Rows.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.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 不返回任何行,但是映射到参数的任何输出参数或返回值都会用数据进行填充。 对于 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) ,接口参数,控件的使用说明,用户控件,用户控件,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 BaseClass(); DataSet ds = bc.GetDataSet( “ select a.name,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 a.name =b.employeeName order by b.state“ ,“tb_sign“); DataList1.DataSource = ds; DataList1.DataBind();,数据绑定, runat=“server“ Height=“54px“ Width=“69px“ / 姓名: 部门: 职务: ,显示控件-GridView,显示控件-GridView,显示表格数据是软件开发中的一个周期性任务。ASP.NET 提供了许多工具来在网格中显示表格数据 可以使用 GridView 来完成以下操作: 通过数据源控件自动绑定和显示数据。 通过数据源控件对数据进行选择、排序、分页、编辑和删除。,显示控件-GridView,通过以下方式自定义 GridView 控件的外观和行为: 指定自定义列和样式。 利用模板创建自定义用户界面 (UI) 元素。 通过处理事件将自己的代码添加到 GridView 控件的功能中。,比较 GridView 和 DataGrid,GridView 控件是 DataGrid 控件的后继控件。与 DataGrid 控件相似,GridView 控件旨在在 HTML 表中显示数据。 当绑定到数据源时,DataGrid 和 GridView 控件分别将 DataSource 中的一行显示为输出表中的一行。 DataGrid 和 GridView 控件都是从 WebControl 类派生的。,比较 GridView 和 DataGrid,虽然 GridView 控件与 DataGrid 控件具有类似的对象 模型,但与 DataGrid 控件相比,前者还具有许多新功能 和优势,包括: 更丰富的设计时功能。 改进的数据源绑定功能。 排序、分页、更新和删除的自动处理。 其他列类型和设计时列操作。 具有 PagerTemplate 属性的自定义页导航用户界面 (UI)。,GridView 控件中设置数据显示格式,可以指定 GridView 控件的行的布局、颜色、字体和对齐方式。 可以指定行中包含的文本和数据的显示。 另外,可以指定将数据行显示为项目、交替项、选择的项还是编辑模式项。,GridView 控件中设置数据显示格式,使用 GridView 控件进行数据绑定,GridView 控件提供了两个用于绑定到数据的 选项(具体说明参见MSDN) 使用 DataSourceID 属性进行数据绑定,此选项让您能够将 GridView 控件绑定到数据源控件 使用 DataSource 属性进行数据绑定,此选项使您能够绑定到包括 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 控件编辑和删除数据,HyperLinkField 类 来自MSDN,HyperLinkField 类字段表示在数据绑定控件 中显示为超链接的字段。 重要属性说明: DataNavigateUrlFields 属性 获取或设置数据源中字段的名称,用于为 HyperLinkField 对象中的超链接构造 URL。 DataNavigateUrlFormatString 属性 取或设置当 URL 数据绑定到数据源中的字段时,HyperLinkColumn 中的超链接的 URL 的显示格式。 DataNavigateUrlFormatString= “DeptInfoEdit2.aspx?id=0“,显示编辑的二级页面,显示编辑的二级页面,根据传过来的ID进行查找,并显示到页面元素中去; if (!Page.IsPostBack ) DataSet ds = bc.GetDataSet(“SELECT * FROM tb_department WHERE ID =“ + Request.QueryString“id“.ToString() + “, “department“); if (ds.Tables0.Rows.Count 0) TxtDeptName.Text = ds.Tables0.Rows0“Name“.ToString(); TxtDeptMemo.Text = ds.Tables0.Rows0“memo“.ToString(); ,理解事件冒泡,在ASP.NET框架中包含3个支持事件冒泡的标准控件(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“); GridView1.DataBind();,使用第三方控件-FreeTextBox,使用第三方控件-FreeTextBox,在页面源代码中添加: ,使用第三方控件-FreeTextBox,使用第三方控件-FreeTextBox,通过存储过程执行 protected void BtnSave_Click(object sender, EventArgs e) bc.ExecProcNotice(txtTitle.Text,FreeTextBox1.Text,Session“LoginName“.ToString() ,存储过程的设计,插入公告; CREATE PROCEDURE insert_tb_notice ( 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 strName) SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings“conStr“); 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.Parameters.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; ,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!