企業辦公軟件設計文檔javascript
1引言 java
1.1編寫目的node
OA辦公自動化系統詳細設計是設計的第三個階段,這個階段的主要任務是在OA辦公自動化系統概要設計書基礎上,對概要設計中產生的功能模塊進行過程描述,設計功能模塊的內部細節,包括算法和詳細數據結構,爲編寫源代碼提供必要的說明。
概要設計解決了軟件系統整體結構設計的問題,包括整個軟件系統的結構、模塊劃分、模塊功能和模塊間的聯繫等。詳細設計則要解決如何實現各個模塊的內部功能,即模塊設計。具體的說,模塊設計就是要爲已經產生的OA辦公自動化各子系統設計詳細的算法。但這並不等同於系統實現階段用具體的語言編碼,它只是對實現細節做精確的描述,這樣編碼階段就能夠將詳細設計中對功能實現的描述,直接翻譯、轉化爲用某種程序設計語言書寫的程序。算法
1.2背景數據庫
爲了能跟上現代社會社會生活中高效率的工做節奏,根據企業需求編寫了OA辦公自動化系統,以達到提升企業工做效率的目的。安全
3程序登陸功能設計服務器
3.1程序描述數據結構
改程序時OA辦公自動化的入口,體現了程序的安全性
(1)功能類型:查詢數據
(2)功能描述:提升系統的安全性
(3)前提業務:無
(4)後繼業務:04(日程管理)
(5)功能約束:權限約束(6)操做權限:系統管理員,登陸用戶。 app
3.2功能函數
(1)錄入項檢測使用javascript和後臺代碼實現(各項必須非空)(2)在Login.aspx.cs中只提交用戶名和密碼;
數據處理:1.登陸驗證,2.記錄登陸用戶信息
3.3性能
確保系統能正確運行和進行高效訪問。
3.4輸入項
3.5輸出項
頁面能正確的跳轉到日程管理模塊下的我的便籤頁面下。
3.6算法
1.登陸驗證
1 UserInfo user; 2 LoginLog log = new LoginLog(); 3 log.UserId = txtUserId.Value; 4 log.LoginTime = DateTime.Now; 5 log.LoginUserIp = Request.UserHostAddress.ToString(); 6 if (this.txtUserId.Value.Trim().Length == 0) 7 { 8 this.Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('用戶名不能爲空!');</script>"); 9 txtUserId.Focus(); 10 return; 11 } 12 if (this.txtPassword.Value.Trim().Length == 0) 13 { 14 this.Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('密碼不能爲空!');</script>"); 15 txtPassword.Focus(); 16 return; 17 } 18 19 string login = this.txtUserId.Value.ToString(); 20 bool yes = UserInfoManager.IsUserIdExist(login); 21 if (yes) 22 { 23 log.LoginDesc = "用戶登陸失敗,用戶名或密碼不正確。"; 24 log.IfSuccess = 0; 25 LoginLogManager.AddLoginLog(log); 26 27 this.Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('用戶名或密碼不正確!');</script>"); 28 } 29 else 30 { 31 this.Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('您輸入的用戶名不存在,請從新輸入!');</script>"); 32 this.txtUserId.Value = ""; 33 this.txtUserId.Focus(); 34 }
1 UserInfo user; 2 LoginLog log = new LoginLog(); 3 //獲取用戶登陸名 4 log.UserId = txtUserId.Value; 5 //獲取登陸時間 6 log.LoginTime = DateTime.Now; 7 log.LoginUserIp = Request.UserHostAddress.ToString(); 8 log.LoginDesc = "用戶登陸成功"; 9 log.IfSuccess = 1; 10 //數據驗證成功着將數據傳入查詢方法進行數據操做 11 LoginLogManager.AddLoginLog(log); 12 //獲取當前登陸用戶 13 Session["CurrentUser"] = user; 14 //判斷用戶角色進行頁面轉換 15 if (user.RoleInfo.RoleId == 1) 16 { 17 Response.Redirect("~/ManualSign/ManualSign.aspx"); 18 } 19 else 20 { 21 Response.Redirect("~/ScheduleManage/PersonNote/PersonNote.aspx"); 22 }
3.8接口
本模塊式系統的啓動模塊,他須要用戶交互輸入用戶ID、密碼;它調用系統的主控制模塊。
3.10註釋設計
模塊首部的註釋:用戶驗證程序。對調用函數的註釋:調用加密函數MD5
3.11限制條件
當系統第一次使用時,具備統一的用戶ID和密碼;管理員帳號和*******。在三次驗證錯誤後,系統將自動關閉。
3.12測試計劃
初次安裝該系統後,測試初始用戶ID和密碼可否正確登陸到系統;正確登錄後,對用戶名和密碼進行更改;採用剛修改過的用戶ID和密碼登錄,應該可以正確登陸。
4.程序主頁設計
4.1程序描述
(1)功能類型:查詢、添加、修改數據
(2)功能描述:按照要求對數據進行查找、添加、修改
(3)前提業務:登陸用戶爲系統管理員
(4)後繼業務:密碼修改、從新登陸、
(5)功能約束:權限約束
(6)操做權限:登陸用戶
4.2功能
1.從新登陸,迴轉到登陸頁面進行從新輸入數據進行登陸;
2.修改密碼,經過Session獲取當前登陸用戶信息,根據用戶信息進行密碼修改;
3.我的便籤盒添加便籤在日程管理有講解;
4.3性能
能進行數據的高效訪問
4.4輸入項
注:添加便籤和修改便籤輸入項在日程管理中有說明
4.5輸出項
我的日程信息
4.6 流程邏輯
圖3從新登陸
圖4修改密碼
注:添加和修改便籤在日程管理中有說明;
4.7接口
圖5接口
4.9註釋設計
1.加在模塊首部的註釋;
2.加在各分枝點處的註釋;
3.對各變量的功能、範圍、缺省條件等所加的註釋;
4.對使用的邏輯所加的註釋
4.10限制條件
修改密碼時,需先輸入原始的密碼,驗證正確後方可進行從新設置密碼的操做。
4.11測試計劃
主要對主頁設計的幾個模塊進行測試,用戶界面測試:測試對象控件或訪問入口正確,符合用戶需求;界面風格統一,界面美觀,直觀。操做有好,人性化,易操做。
5程序日程管理設計
5.1程序描述
(1)功能類型:查看、添加、修改、刪除數據
(2)功能描述:按照要求對數據進行查查看、添加、修改並刪除
(3)前提業務:登陸用戶爲系統管理員
(4)後繼業務:031(個人日程)032(部門日程)033(個人便籤)
(5)功能約束:權限約束
(6)操做權限:系統管理員、通常登陸用戶,
5.2功能
1.利用樹形控件加載出功能頁面的連接
2.在個人日程子模塊中添加日程是在時間列表控件中點擊連接進行跳轉
5.3性能
確保系統能高效的進行數據訪問
5.4輸入項
表5添加個人日程安排
5.5輸出項
查看:顯示數據庫中存在的數據
刪除:顯示刪除後數據庫中存在的數據
添加:將數據天津啊進入數據庫在顯示添加後的數據信息
修改:對數據庫中本來存在的某條數據進行修改後在進行展現
5.6算法
1 HyperLink link = new HyperLink(); 2 link.ImageUrl = "~/images/add_Schedule.gif"; 3 link.ToolTip = "新增我的日程"; 4 link.NavigateUrl = "SaveMySchedule.aspx?userid=" + user.UserId + "&today=" +day.Date.ToShortDateString(); 5 tc.Controls.Add(link);
5.7流程邏輯
圖6部門日程
圖7個人日程
圖8個人便籤
圖9接口
表8日程信息表
5.10註釋設計
1.加在模塊首部的註釋;
2.加在各分枝點處的註釋;
3.對各變量的功能、範圍、缺省條件等所加的註釋;
4.對使用的邏輯所加的註釋
5.11限制條件
在界面上控制輸入輸出,服務器端若是出錯也會也會返回出錯信息
5.12測試計劃
對日程設計進行項目跟蹤測試,對輸入信息和輸出信息進行對比,找出其中可能出現的異常,對此進行改善。
6程序4系統管理設計
6.1程序描述
(1)功能類型:查看、添加、修改、刪除數據(2)功能描述:按照要求對數據進行查查看、添加、修改並刪除(3)前提業務:登陸用戶爲系統管理員
(4)後繼業務:051 角色管理 052 登錄日誌 053操做日誌 054 菜單排序
(5)功能約束:權限約束
(6)操做權限:系統管理員
6.2功能
圖10功能圖
組織機構部門設置、用戶管理、流程管理、表單管理、公文模版管理、角色管理、系統設置、系統日誌、數據備份和恢復管理
6.3性能
系統能高效的進行數據訪問和各項操做的更改
6.4輸入項
表9輸入功能圖
6.5輸出項
角色管理:輸出角色信息;登陸日誌:輸出相應時間內的登陸日誌
操做日誌:輸出相應時間內的操做日誌
菜單排序:輸出經過上下移動後的樹形菜單排序狀況
6.6算法
1.分配角色權限中關於複選框選擇的問題,怎樣處理好選擇一個模塊時選擇其下的子模塊而不選中其餘模塊的子模塊,須要使用用戶自定義控件來完成,在後臺代碼顯示方法中這樣寫
//獲得全部父級點信息
IList sysFuns = SysFunManager.GetAllParentNodeInfo();
//根據父節點獲得對應子節點生成用戶控件,而後循環插入到PlaceHolder容器中
1 foreach (SysFun sysFun in sysFuns) 2 { 3 //獲得父節點Id 4 string nodeId = sysFun.NodeId.ToString(); 5 //獲得父節點名稱 6 string displayName = sysFun.DisplayName; 7 //實例化用戶控件 8 SysManage_RoleManage_WebUserControl roleCotrol = (SysManage_RoleManage_WebUserControl)LoadControl(@"RoleUserControl.ascx"); 9 //實例化隱藏區域,用以存父節點Id 10 HtmlInputHidden hidParentMeu = (HtmlInputHidden)roleCotrol.FindControl("hidParentMenu"); 11 hidParentMeu.Value = nodeId; 12 //實例化隱藏區域,用以存儲角色Id 13 HtmlInputHidden hidRoleId = (HtmlInputHidden)roleCotrol.FindControl("hidRoleId"); 14 hidRoleId.Value = roleId.ToString(); 15 16 //實例化用戶控件中的CheckBox 17 CheckBox chkParentMenu = (CheckBox)roleCotrol.FindControl("chkParentMenu"); 18 19 //顯示父菜單名稱 20 chkParentMenu.Text = displayName; 21 22 if (arrRoleParentNodes.Contains(nodeId)) 23 { 24 chkParentMenu.Checked = true; 25 } 26 //把父節點生成的用戶控件追加打破PlaceHolder容器中 27 phRoleDistribute.Controls.Add(roleCotrol); 28 }
2.查看登陸日誌和操做日誌時,開始時間和結束時間的獲取使用javascript代碼來實現
1 function fillstring(str) 2 { 3 if(str.length==1) 4 { 5 str = "0" + str; 6 } 7 return(str); 8 } 9 function quickseldate(type) 10 { 11 var begintime,endtime; 12 var oneminute = 60*1000; 13 var onehour = 60*oneminute; 14 var oneday = 24*onehour; 15 var oneweek = 7*oneday; 16 17 var todayDate = new Date(); 18 var date = todayDate.getDate(); 19 var month= todayDate.getMonth() +1; 20 var year= todayDate.getYear(); 21 var day = todayDate.getDay(); 22 if(navigator.appName == "Netscape") 23 { 24 year = 1900 + year; 25 } 26 27 //--> 28 29 if(type=="day") 30 { 31 begintime = year.toString() + "-" + fillstring(month.toString()) + "-" + 32 33 fillstring(date.toString()); 34 endtime = begintime; 35 } 36 else if(type=="week") 37 { 38 var daytoMon = day-1; 39 if(day==0) 40 daytoMon = 6; 41 42 todayDate.setTime(todayDate.getTime()-daytoMon*oneday); 43 date = todayDate.getDate(); 44 month= todayDate.getMonth() +1; 45 year= todayDate.getYear(); 46 day = todayDate.getDay(); 47 48 begintime = year.toString() + "-" + fillstring(month.toString()) + "-" + 49 50 fillstring(date.toString()); 51 52 todayDate.setTime(todayDate.getTime()+6*oneday); 53 54 date = todayDate.getDate(); 55 month= todayDate.getMonth() +1; 56 year= todayDate.getYear(); 57 58 endtime = year.toString() + "-" + fillstring(month.toString()) + "-" + 59 60 fillstring(date.toString()); 61 } 62 else if(type=="month") 63 { 64 var dateto1 = date-1; 65 66 todayDate.setTime(todayDate.getTime()-dateto1*oneday); 67 date = todayDate.getDate(); 68 month= todayDate.getMonth() +1; 69 year= todayDate.getYear(); 70 day = todayDate.getDay(); 71 72 begintime = year.toString() + "-" + fillstring(month.toString()) + "-" + 73 74 fillstring(date.toString()); 75 76 todayDate.setMonth(month); 77 todayDate.setTime(todayDate.getTime()-oneday); 78 79 date = todayDate.getDate(); 80 month= todayDate.getMonth() +1; 81 year= todayDate.getYear(); 82 83 endtime = year.toString() + "-" + fillstring(month.toString()) + "-" + 84 85 fillstring(date.toString()); 86 87 } 88 89 document.getElementById("<% =txtBeginTime.ClientID %>").value = begintime; 90 document.getElementById("<% =txtEndTime.ClientID %>").value = endtime;
6.7流程邏輯
1.角色管理
圖11角色管理圖
2.登陸日誌
圖12登陸日誌圖
圖13操做日誌
圖14菜單排序
6.8接口
圖15接口圖形
表10登陸日誌信息表
6.10註釋設計
1.加在模塊首部的註釋;
2.加在各分枝點處的註釋;
3.對各變量的功能、範圍、缺省條件等所加的註釋;
4.對使用的邏輯所加的註釋
6.11限制條件
全部用戶的權限都通過嚴格的設置,不能進行權限外的操做。用戶組分爲三組:管理員,用戶,遊客。
6.12測試計劃
系統集成測試,各個單元模塊合併的接口測試,對整個產品進行全面的測試,要符合客戶的需求,包括軟件,硬件。
本次文檔編寫企業管理的主要功能的設計與實現。