企業(yè)辦公自動化管理系統(tǒng)案例.ppt
《企業(yè)辦公自動化管理系統(tǒng)案例.ppt》由會員分享,可在線閱讀,更多相關《企業(yè)辦公自動化管理系統(tǒng)案例.ppt(77頁珍藏版)》請在裝配圖網(wǎng)上搜索。
課程案例企業(yè)辦公自動化管理系統(tǒng),通過本案例學習一下內容: 1.企業(yè)辦公自動化管理系統(tǒng)開發(fā)的基本過程 2.系統(tǒng)需求分析和可行性分析 3.系統(tǒng)設計的方法 4.構建開發(fā)環(huán)境 5.如何分析并設計數(shù)據(jù)庫 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.使用計算機網(wǎng)絡環(huán)境屬于局域網(wǎng)。 2.公司規(guī)模50100人,人手一臺計算機。 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)目標 根據(jù)需求分析的描述以及與用戶的溝通,現(xiàn)制定系統(tǒng)實現(xiàn)目標如下: 系統(tǒng)采用人機對話方式,界面美觀友好,信息查詢靈活、方便,數(shù)據(jù)存儲安全可靠。 靈活、快速的發(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# 后臺數(shù)據(jù)庫: SQL Server2000 開發(fā)環(huán)境運行平臺:XP(SP2) 2.服務器端 WEB服務器:IIS6.0 數(shù)據(jù)庫服務器:SQL Server 2000 網(wǎng)站服務器運行環(huán)境:.NET Framework sdk2.0 3.客戶端 瀏覽器:IE6.0 分辨率:最佳效果1024768,數(shù)據(jù)庫設計,系統(tǒng)數(shù)據(jù)庫采用SQL Server2000數(shù)據(jù)庫,系統(tǒng)數(shù)據(jù)庫名稱為db_OAS.數(shù)據(jù)庫db_OAS中包括多張數(shù)據(jù)表。下面分別給出數(shù)據(jù)表概要說明、數(shù)據(jù)庫E-R圖、數(shù)據(jù)表關系圖、數(shù)據(jù)表的結構。,數(shù)據(jù)表概要說明,數(shù)據(jù)表樹形結構如下圖:,數(shù)據(jù)庫E-R的分析,課堂練習: 對上表中的各個實體用E-R圖進行分析。 要求: 1.用E-R圖描述出各個實體。 2.描述數(shù)據(jù)表結構。 3.描述數(shù)據(jù)表之間的關系。,實體描述舉例,企業(yè)部門實體E-R圖描述,企業(yè)部門數(shù)據(jù)表結構描述,數(shù)據(jù)表的關系圖,試寫出下列需求的SQL語句,根據(jù)輸入的”用戶名”“密碼”查詢“系統(tǒng)用戶表”中是否有記錄存在,并判斷該用戶是“管理員”還是“普通職員” 增加部門信息; 根據(jù)ID查看某個部門信息 刪除某個部門,復雜SQL語句的使用 顯示企業(yè)的年度優(yōu)秀員工信息,1.優(yōu)秀員工的標準通過考勤考核(遲到和早退) 2.考勤結果的前2位 3.顯示的信息包括: 員工姓名,所在部門,照片,相關資料來自SQL聯(lián)機叢書,使用 TOP 和 PERCENT 限制結果集 TOP 子句限制返回到結果集中的行數(shù)。 TOP n PERCENT n 指定返回的行數(shù)。如果未指定 PERCENT,n 就是返回的行數(shù)。 如果一個 SELECT 語句既包含 TOP 又包含 ORDER BY 子句,那么返回的行將會從排序后的結果集中選擇。整個結果集按照指定的順序建立并且返回排好序的結果集的前 n 行。,相關資料來自SQL聯(lián)機叢書,用 ORDER BY 對行進行排序 ORDER BY 子句按查詢結果中的一列或多列對查詢結果進行排序,用作排序依據(jù)的列總長度可達 8,060。有關 ORDER BY 子句最大大小的更多信息,請參見 SELECT。 排序可以是升序的 (ASC),也可以是降序的 (DESC)。如果沒有指定升序還是降序,就假定為 ASC。,相關資料來自SQL聯(lián)機叢書,聚合函數(shù) 聚合函數(shù)對一組值執(zhí)行計算并返回單一的值。除 COUNT 函數(shù)之外,聚合函數(shù)忽略空值。聚合函數(shù)經(jīng)常與 SELECT 語句的 GROUP BY 子句一同使用。 Transact-SQL 編程語言提供下列聚合函數(shù): 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 等數(shù)據(jù)源以及通過 OLE DB 和 XML 公開的數(shù)據(jù)源提供一致的訪問。 在創(chuàng)建 ADO.NET 時,Microsoft 具有以下設計目標: 1.利用當前的 ActiveX 數(shù)據(jù)類型 (ADO) 知識。 2.支持 N 層編程模型。 3. 集成 XML 支持。,ADO.NET介紹,和 .net framework類庫中其他所有東西一樣,ADO.net不過是一組類型(TYPES)而已,他們都位于SYSTEM.DATA名字空間中。,ADO.NET介紹,每一種.NET數(shù)據(jù)供應器都實現(xiàn)為一組類型(types); System.Data.SqlClient名字空間-SQL Provider System.Data.OleDb名字空間-OLE DB Provider 不論選擇哪種Provider,每一種都提供一套相似的類(Class),ADO.NET介紹,.NET數(shù)據(jù)provider都支持的一些基礎對象。它們是: Connection:用于建立和釋放連接(SqlConnection-OleDbConnection) Command:用于存儲和執(zhí)行命令,如一個SQL查詢或一個存儲過程,并為命令指定參數(shù)。 DataReader:對數(shù)據(jù)庫中的數(shù)據(jù)提供直接、循環(huán)的只讀的訪問。 DataAdapter:建造于DataReader之上,用于創(chuàng)建和操作DataSet實體。,ADO.NET介紹,客戶可以通過DataReader或者DataSet來訪問數(shù)據(jù)。,Visual Studio 中的數(shù)據(jù)命名空間,.NET Framework 中的數(shù)據(jù)和 XML 命名空間包括: System.Data 由構成 ADO.NET 結構的類組成,該結構是托管應用程序的主要數(shù)據(jù)訪問方法。ADO.NET 結構使您可以生成可用于有效管理來自多個數(shù)據(jù)源的數(shù)據(jù)的組件。 System.Data.OleDb 構成兼容數(shù)據(jù)源的 OLE DB .NET Framework 數(shù)據(jù)提供程序的類。這些類使您能連接到 OLE DB 數(shù)據(jù)源、針對數(shù)據(jù)源執(zhí)行命令并讀取結果。 System.Data.SqlClient 構成 SQL Server .NET Framework 數(shù)據(jù)提供程序的類,該提供程序允許您連接到 SQL Server 7.0、執(zhí)行命令并讀取結果。System.Data.SqlClient 命名空間與 System.Data.OleDb 命名空間類似,但為訪問 SQL Server 7.0 和更高版本進行了優(yōu)化。,訪問數(shù)據(jù)示例,示例如何打開一連接,如何創(chuàng)建一個命令,以及如何利用DataReaer讀取結果。 示例展示如何使用DataSets (一個DataAdapter如何用于將一個DataTable添加到一個DataSets中),訪問數(shù)據(jù)示例-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();,訪問數(shù)據(jù)示例-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); ,訪問數(shù)據(jù)示例-DataReader,6.釋放資源,關閉連接 finally Rdr.Close(); Cn.Close(); ,訪問數(shù)據(jù)示例-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();,訪問數(shù)據(jù)示例-DataSet,取數(shù)據(jù); 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); ,訪問數(shù)據(jù)示例-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數(shù)據(jù)集; 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(); /第二種產(chǎn)生命令對象的方法; SqlCommand com = new SqlCommand(strSQL, con); if (com.ExecuteNonQuery() 0) con.Close(); return true; else con.Close(); return false; ,接口的使用,1.創(chuàng)建數(shù)據(jù)類實例; 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控件中顯示 點擊查詢按鈕,將顯示該部門的描述信息。,接口的使用,數(shù)據(jù)綁定; 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,對連接對象執(zhí)行 SQL 語句 來自MS幫助文檔,public abstract int ExecuteNonQuery () 可以使用 ExecuteNonQuery 執(zhí)行編錄操作(例如查詢數(shù)據(jù)庫的結構或創(chuàng)建諸如表等的數(shù)據(jù)庫對象),或通過執(zhí)行 UPDATE、INSERT 或 DELETE 語句更改數(shù)據(jù)庫中的數(shù)據(jù)。 雖然 ExecuteNonQuery 不返回任何行,但是映射到參數(shù)的任何輸出參數(shù)或返回值都會用數(shù)據(jù)進行填充。 對于 UPDATE、INSERT 和 DELETE 語句,返回值為該命令所影響的行數(shù)。對于其他所有類型的語句,返回值為 -1。 返回值-受影響的行數(shù)。,接口的使用,MyData md = new MyData();/ 創(chuàng)建對象 DataSet Ds = md.ExecuteSql(“select * from tb_department where ID=20”, “tb_department”); /使用接口 try if (Ds.Tables0.Rows.Count0) catch (System.Exception e) ,接口參數(shù),控件的使用說明,用戶控件,用戶控件,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();,數(shù)據(jù)綁定, runat=“server“ Height=“54px“ Width=“69px“ / 姓名: 部門: 職務: ,顯示控件-GridView,顯示控件-GridView,顯示表格數(shù)據(jù)是軟件開發(fā)中的一個周期性任務。ASP.NET 提供了許多工具來在網(wǎng)格中顯示表格數(shù)據(jù) 可以使用 GridView 來完成以下操作: 通過數(shù)據(jù)源控件自動綁定和顯示數(shù)據(jù)。 通過數(shù)據(jù)源控件對數(shù)據(jù)進行選擇、排序、分頁、編輯和刪除。,顯示控件-GridView,通過以下方式自定義 GridView 控件的外觀和行為: 指定自定義列和樣式。 利用模板創(chuàng)建自定義用戶界面 (UI) 元素。 通過處理事件將自己的代碼添加到 GridView 控件的功能中。,比較 GridView 和 DataGrid,GridView 控件是 DataGrid 控件的后繼控件。與 DataGrid 控件相似,GridView 控件旨在在 HTML 表中顯示數(shù)據(jù)。 當綁定到數(shù)據(jù)源時,DataGrid 和 GridView 控件分別將 DataSource 中的一行顯示為輸出表中的一行。 DataGrid 和 GridView 控件都是從 WebControl 類派生的。,比較 GridView 和 DataGrid,雖然 GridView 控件與 DataGrid 控件具有類似的對象 模型,但與 DataGrid 控件相比,前者還具有許多新功能 和優(yōu)勢,包括: 更豐富的設計時功能。 改進的數(shù)據(jù)源綁定功能。 排序、分頁、更新和刪除的自動處理。 其他列類型和設計時列操作。 具有 PagerTemplate 屬性的自定義頁導航用戶界面 (UI)。,GridView 控件中設置數(shù)據(jù)顯示格式,可以指定 GridView 控件的行的布局、顏色、字體和對齊方式。 可以指定行中包含的文本和數(shù)據(jù)的顯示。 另外,可以指定將數(shù)據(jù)行顯示為項目、交替項、選擇的項還是編輯模式項。,GridView 控件中設置數(shù)據(jù)顯示格式,使用 GridView 控件進行數(shù)據(jù)綁定,GridView 控件提供了兩個用于綁定到數(shù)據(jù)的 選項(具體說明參見MSDN) 使用 DataSourceID 屬性進行數(shù)據(jù)綁定,此選項讓您能夠將 GridView 控件綁定到數(shù)據(jù)源控件 使用 DataSource 屬性進行數(shù)據(jù)綁定,此選項使您能夠綁定到包括 ADO.NET 數(shù)據(jù)集和數(shù)據(jù)讀取器在內的各種對象。,使用 GridView 控件進行數(shù)據(jù)綁定,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 控件編輯和刪除數(shù)據(jù),HyperLinkField 類 來自MSDN,HyperLinkField 類字段表示在數(shù)據(jù)綁定控件 中顯示為超鏈接的字段。 重要屬性說明: DataNavigateUrlFields 屬性 獲取或設置數(shù)據(jù)源中字段的名稱,用于為 HyperLinkField 對象中的超鏈接構造 URL。 DataNavigateUrlFormatString 屬性 取或設置當 URL 數(shù)據(jù)綁定到數(shù)據(jù)源中的字段時,HyperLinkColumn 中的超鏈接的 URL 的顯示格式。 DataNavigateUrlFormatString= “DeptInfoEdit2.aspx?id=0“,顯示編輯的二級頁面,顯示編輯的二級頁面,根據(jù)傳過來的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控件) 事件冒泡指上述這些控件能捕獲其子控件的事件。當子控件產(chǎn)生一個事件時,事件就向上“冒泡”傳給包含該子控件的容器控件(父控件),而容器控件就可以執(zhí)行一個子程序來處理該事件,事件處理,刪除事件: 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,通過存儲過程執(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) 案例
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
鏈接地址:http://m.italysoccerbets.com/p-2522666.html