企業(yè)辦公自動化管理系統(tǒng)案例.ppt
《企業(yè)辦公自動化管理系統(tǒng)案例.ppt》由會員分享,可在線閱讀,更多相關《企業(yè)辦公自動化管理系統(tǒng)案例.ppt(77頁珍藏版)》請在裝配圖網上搜索。
課程案例—企業(yè)辦公自動化管理系統(tǒng),通過本案例學習一下內容: 1.企業(yè)辦公自動化管理系統(tǒng)開發(fā)的基本過程 2.系統(tǒng)需求分析和可行性分析 3.系統(tǒng)設計的方法 4.構建開發(fā)環(huán)境 5.如何分析并設計數據庫 6.如何設計公共類 7.主要功能模塊的實現(xiàn)方法 8.系統(tǒng)的編譯與發(fā)布 9.SQL server技術 10. 面向對象的開發(fā)思想 11.分層開發(fā)模式,系統(tǒng)分析,一.需求分析 對于企業(yè)辦公自動化管理系統(tǒng)來說,提高企業(yè)的管理效率、 方便企業(yè)職員的協(xié)助是至關重要,企業(yè)的辦公環(huán)境如下: 1.使用計算機網絡環(huán)境屬于局域網。 2.公司規(guī)模50—100人,人手一臺計算機。 3.員工上下班考勤屬于人工考勤。 4.實行人性化管理,允許員工自己有發(fā)表意見和想法。 5.員工在工作中傳送和接收文件,很不方便。 6.對于公司的公告、新聞和規(guī)章制度,員工了解不及時 7.重要通知都是逐一打電話通知。,系統(tǒng)分析,需求分析結論 1.部門管理功能 2.員工管理功能 3.公告管理功能 4.文件管理功能 5.交流管理功能 6.考勤管理功能 7.規(guī)章制度管理功能 8.系統(tǒng)管理功能,二、系統(tǒng)設計,1.系統(tǒng)目標 根據需求分析的描述以及與用戶的溝通,現(xiàn)制定系統(tǒng)實現(xiàn)目標如下: 系統(tǒng)采用人機對話方式,界面美觀友好,信息查詢靈活、方便,數據存儲安全可靠。 靈活、快速的發(fā)送和接收文件。 實現(xiàn)功能強大的公告發(fā)布與管理功能。 系統(tǒng)最大限度地實現(xiàn)易維護性和易操作性 界面簡潔、框架清晰、美觀大方。 實現(xiàn)企業(yè)部門和職員的信息管理功能。 通過后臺查看與刪除公告信息、查看公文信息。 對員工信息、職位信息與部門信息的管理。,二、系統(tǒng)設計,業(yè)務流程圖,系統(tǒng)功能結構,企業(yè)辦公自動化管理系統(tǒng)前臺(職員)功能結構圖,系統(tǒng)功能結構,企業(yè)辦公自動化管理系統(tǒng)前臺(職員)功能結構圖,構建開放環(huán)境,1.web系統(tǒng)開發(fā)環(huán)境 頁面開發(fā)環(huán)境:VS2005集成開發(fā)環(huán)境 開發(fā)語言:ASP.NET +C# 后臺數據庫: SQL Server2000 開發(fā)環(huán)境運行平臺:XP(SP2) 2.服務器端 WEB服務器:IIS6.0 數據庫服務器:SQL Server 2000 網站服務器運行環(huán)境:.NET Framework sdk2.0 3.客戶端 瀏覽器:IE6.0 分辨率:最佳效果1024768,數據庫設計,系統(tǒng)數據庫采用SQL Server2000數據庫,系統(tǒng)數據庫名稱為db_OAS.數據庫db_OAS中包括多張數據表。下面分別給出數據表概要說明、數據庫E-R圖、數據表關系圖、數據表的結構。,數據表概要說明,數據表樹形結構如下圖:,數據庫E-R的分析,課堂練習: 對上表中的各個實體用E-R圖進行分析。 要求: 1.用E-R圖描述出各個實體。 2.描述數據表結構。 3.描述數據表之間的關系。,實體描述舉例,企業(yè)部門實體E-R圖描述,企業(yè)部門數據表結構描述,數據表的關系圖,試寫出下列需求的SQL語句,根據輸入的”用戶名”“密碼”查詢“系統(tǒng)用戶表”中是否有記錄存在,并判斷該用戶是“管理員”還是“普通職員” 增加部門信息; 根據ID查看某個部門信息 刪除某個部門,復雜SQL語句的使用— 顯示企業(yè)的年度優(yōu)秀員工信息,1.優(yōu)秀員工的標準通過考勤考核(遲到和早退) 2.考勤結果的前2位 3.顯示的信息包括: 員工姓名,所在部門,照片,相關資料—來自SQL聯(lián)機叢書,使用 TOP 和 PERCENT 限制結果集 TOP 子句限制返回到結果集中的行數。 TOP n [PERCENT] n 指定返回的行數。如果未指定 PERCENT,n 就是返回的行數。 如果一個 SELECT 語句既包含 TOP 又包含 ORDER BY 子句,那么返回的行將會從排序后的結果集中選擇。整個結果集按照指定的順序建立并且返回排好序的結果集的前 n 行。,相關資料—來自SQL聯(lián)機叢書,用 ORDER BY 對行進行排序 ORDER BY 子句按查詢結果中的一列或多列對查詢結果進行排序,用作排序依據的列總長度可達 8,060。有關 ORDER BY 子句最大大小的更多信息,請參見 SELECT。 排序可以是升序的 (ASC),也可以是降序的 (DESC)。如果沒有指定升序還是降序,就假定為 ASC。,相關資料—來自SQL聯(lián)機叢書,聚合函數 聚合函數對一組值執(zhí)行計算并返回單一的值。除 COUNT 函數之外,聚合函數忽略空值。聚合函數經常與 SELECT 語句的 GROUP BY 子句一同使用。 Transact-SQL 編程語言提供下列聚合函數: AVG MAX SUM MIN COUNT等,相關資料—來自SQL聯(lián)機叢書,使用內聯(lián)接 內聯(lián)接是用比較運算符比較要聯(lián)接列的值的聯(lián)接。 下面的 Transact-SQL 查詢是內聯(lián)接的一個示例: USE pubs SELECT * FROM authors AS a INNER JOIN publishers AS p ON a.city = p.city ORDER BY a.au_lname DESC 此內聯(lián)接稱為相等聯(lián)接。它返回兩個表中的所有列,但只返回在聯(lián)接列中具有相等值的行。,,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 公開的數據源提供一致的訪問。 在創(chuàng)建 ADO.NET 時,Microsoft 具有以下設計目標: 1.利用當前的 ActiveX 數據類型 (ADO) 知識。 2.支持 N 層編程模型。 3. 集成 XML 支持。,ADO.NET介紹,和 .net framework類庫中其他所有東西一樣,ADO.net不過是一組類型(TYPES)而已,他們都位于SYSTEM.DATA名字空間中。,ADO.NET介紹,每一種.NET數據供應器都實現(xiàn)為一組類型(types); System.Data.SqlClient名字空間---SQL Provider System.Data.OleDb名字空間---OLE DB Provider 不論選擇哪種Provider,每一種都提供一套相似的類(Class),ADO.NET介紹,.NET數據provider都支持的一些基礎對象。它們是: Connection:用于建立和釋放連接(SqlConnection--OleDbConnection) Command:用于存儲和執(zhí)行命令,如一個SQL查詢或一個存儲過程,并為命令指定參數。 DataReader:對數據庫中的數據提供直接、循環(huán)的只讀的訪問。 DataAdapter:建造于DataReader之上,用于創(chuàng)建和操作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 數據源、針對數據源執(zhí)行命令并讀取結果。 System.Data.SqlClient — 構成 SQL Server .NET Framework 數據提供程序的類,該提供程序允許您連接到 SQL Server 7.0、執(zhí)行命令并讀取結果。System.Data.SqlClient 命名空間與 System.Data.OleDb 命名空間類似,但為訪問 SQL Server 7.0 和更高版本進行了優(yōu)化。,訪問數據示例,示例如何打開一連接,如何創(chuàng)建一個命令,以及如何利用DataReaer讀取結果。 示例展示如何使用DataSets (一個DataAdapter如何用于將一個DataTable添加到一個DataSets中),訪問數據示例--DataReader,1.設置一個連接 SqlConnection Cn = New SqlConnection(“Server=(local);database=db_OAS;Uid=sa;Pwd=“); 2.創(chuàng)建一個命令 SqlCommand Cmd = Cn.CreateCommand(); Cmd.CommandText = “select * from tb_department where ID=20“; 3. 打開連接Cn.Open(); 4. 執(zhí)行命令--》將結果存入DataReader SqlDataReader Rdr = Cmd.ExecuteReader();,訪問數據示例--DataReader,5.取結果并顯示 try { while (Rdr.Read()) { System.Console.WriteLine(String.Format(“{0},{1},{2}“, Rdr[0], Rdr[1], Rdr[2])); } } 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.Tables[0].Rows.Count0) { DataRow row = Ds.Tables[0].Rows[0]; System.Console.WriteLine(String.Format(“{0},{1},{2}“, row[0], row[1], row[2])); } } 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 該方法執(zhí)行查詢命令,并返回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.創(chuàng)建數據類實例; 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.Tables[0].Rows.Count0) { LblShow.Text = “該部門介紹:“ + ds.Tables[0].Rows[0][2].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.Tables[0].Rows[i][0].ToString()+““+ds.Tables[0].Rows[i][1].ToString()+““+ds.Tables[0].Rows[i][2].ToString()+““ ); Response.Write(““); } Response.Write(““);,C#+SQL+HTML,,對連接對象執(zhí)行 SQL 語句 –來自MS幫助文檔,public abstract int ExecuteNonQuery () 可以使用 ExecuteNonQuery 執(zhí)行編錄操作(例如查詢數據庫的結構或創(chuàng)建諸如表等的數據庫對象),或通過執(zhí)行 UPDATE、INSERT 或 DELETE 語句更改數據庫中的數據。 雖然 ExecuteNonQuery 不返回任何行,但是映射到參數的任何輸出參數或返回值都會用數據進行填充。 對于 UPDATE、INSERT 和 DELETE 語句,返回值為該命令所影響的行數。對于其他所有類型的語句,返回值為 -1。 返回值---受影響的行數。,接口的使用,MyData md = new MyData();// 創(chuàng)建對象 DataSet Ds = md.ExecuteSql(“select * from tb_department where ID=‘20’”, “tb_department”); //使用接口 try { if (Ds.Tables[0].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 .Tables[0].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,顯示表格數據是軟件開發(fā)中的一個周期性任務。ASP.NET 提供了許多工具來在網格中顯示表格數據 可以使用 GridView 來完成以下操作: 通過數據源控件自動綁定和顯示數據。 通過數據源控件對數據進行選擇、排序、分頁、編輯和刪除。,顯示控件--GridView,通過以下方式自定義 GridView 控件的外觀和行為: 指定自定義列和樣式。 利用模板創(chuàng)建自定義用戶界面 (UI) 元素。 通過處理事件將自己的代碼添加到 GridView 控件的功能中。,比較 GridView 和 DataGrid,GridView 控件是 DataGrid 控件的后繼控件。與 DataGrid 控件相似,GridView 控件旨在在 HTML 表中顯示數據。 當綁定到數據源時,DataGrid 和 GridView 控件分別將 DataSource 中的一行顯示為輸出表中的一行。 DataGrid 和 GridView 控件都是從 WebControl 類派生的。,比較 GridView 和 DataGrid,雖然 GridView 控件與 DataGrid 控件具有類似的對象 模型,但與 DataGrid 控件相比,前者還具有許多新功能 和優(yōu)勢,包括: 更豐富的設計時功能。 改進的數據源綁定功能。 排序、分頁、更新和刪除的自動處理。 其他列類型和設計時列操作。 具有 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.Tables[0].Rows.Count 0) { TxtDeptName.Text = ds.Tables[0].Rows[0][“Name“].ToString(); TxtDeptMemo.Text = ds.Tables[0].Rows[0][“memo“].ToString(); } },理解事件冒泡,在ASP.NET框架中包含3個支持事件冒泡的標準控件(Repeater、DataList和DataGrid控件) 事件冒泡指上述這些控件能捕獲其子控件的事件。當子控件產生一個事件時,事件就向上“冒泡”傳給包含該子控件的容器控件(父控件),而容器控件就可以執(zhí)行一個子程序來處理該事件,事件處理,刪除事件: bc.SqlExecute(“DELETE FROM tb_department WHERE ID=“ + GridView1.DataKeys[e.RowIndex].Value.ToString() + ““); GridView1.DataSource = bc.GetDataSet(“select * from tb_department“, “department“); GridView1.DataBind();,使用第三方控件--FreeTextBox,使用第三方控件--FreeTextBox,在頁面源代碼中添加: ,使用第三方控件--FreeTextBox,使用第三方控件--FreeTextBox,通過存儲過程執(zhí)行 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,執(zhí)行存儲過程的代碼分析,執(zhí)行存儲過程--專門用于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); //發(fā)布者 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; } },- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 企業(yè) 辦公自動化 管理 系統(tǒng) 案例
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://zhongcaozhi.com.cn/p-2522666.html