图解understand分析一个asp.net办公系统源码
源碼下載;
http://pan.baidu.com/s/1o7OEMc6
321.rar
?
總結結構;業(yè)務層,數據庫訪問工廠,實體層,數據庫訪問接口,sqlserver數據庫訪問層,展現層(oaPro);
?
業(yè)務層;主要是對各個表的操作;
?
通訊錄業(yè)務類;主要是增刪改查;
?
通訊錄業(yè)務類代碼情況;
?
資產管理業(yè)務類;增刪改查;
?
資產管理業(yè)務類代碼情況;
?
文件業(yè)務類;增刪改查;
?
文件業(yè)務類代碼情況;
?
業(yè)務層其他類類似;
?
數據庫訪問工廠層;
?
返回訪問各個表的接口對象;
數據緩存類;
?
實例化一個接口對象的代碼如下;
?
/// <summary>/// 通過反射機制,實例化addresslist接口對象/// </summary>///<returns>addresslist接口對象/returns>public static IaddresslistDAL addresslistDALInstance(){string CacheKey = DALFactory._path + ".addresslistDAL";object objType = DALFactory.GetInstance(CacheKey);return (IaddresslistDAL)objType;}
GetInstance方法代碼如下;
?
?
/// <summary>/// 通過反射機制,實例化接口對象/// </summary>/// <param name="CacheKey">接口對象名稱(鍵)</param>///<returns>接口對象/returns>private static object GetInstance(string CacheKey){object objType = DataCache.GetCache(CacheKey);if (objType == null){try{objType = Assembly.Load(DALFactory._path).CreateInstance(CacheKey);DataCache.SetCache(CacheKey, objType);}catch (Exception ex){throw ex;}}return objType;}
用接口對象名稱創(chuàng)建實例并返回;同時緩存接口對象名稱和創(chuàng)建的實例;
?
數據緩存類設置和獲取緩存代碼如下;
?
/// <summary>/// 獲得緩存對象/// </summary>/// <param name="CacheKey">鍵</param>/// <returns>緩存對象</returns>public static object GetCache(string CacheKey){System.Web.Caching.Cache objCache = HttpRuntime.Cache;return objCache[CacheKey];}/// <summary>/// 設置緩存對象/// </summary>/// <param name="CacheKey">鍵</param>/// <param name="objObject">要被緩存的對象</param>public static void SetCache(string CacheKey, object objObject){System.Web.Caching.Cache objCache = HttpRuntime.Cache;objCache.Insert(CacheKey, objObject);}
是通過System.Web.Caching.Cache類來實現;
?
?
實體層;與數據庫結構對應;
?
部門表department
id,部門名稱
權限表popedom
id,權限
操作表operate
id 用戶id(外鍵),權限id(外鍵)
用戶表users
id,用戶名,用戶密碼,所在部門id(外鍵),檔案(員工)Id(外鍵),狀態(tài),最后登陸ip,登陸時間,登陸次數,email(密碼綁定),
所在群id(外鍵)
文件類別表filetype
id,文件類別名稱
文件表file
id,文件名,文件類別Id(外鍵),所屬部門Id(外鍵),發(fā)送人ID,接收人ID(外鍵),是否共享,備注,是否回執(zhí),
讀否,閱讀次數,發(fā)布時間,狀態(tài)
文件回復表filerevert
id,回復內容,文件id(外鍵),回復人ID(外鍵),回復時間
消息表message
id,標題,內容,接受人id(外鍵),發(fā)送人id,群組id(外鍵),發(fā)布時間,是否回執(zhí)
群組表group
id,群名
公文表document
id,部門id(外鍵),群id(外鍵),接收人id(外鍵),標題,附件,下載次數,閱讀次數,點擊次數,發(fā)布時間,發(fā)布人id
通知表sendword
id,標題,內容,部門id(外鍵),發(fā)布人id(外鍵),發(fā)布時間,瀏覽次數,狀態(tài)
新聞表news
id,標題,內容,部門id(外鍵),發(fā)布人id(外鍵),發(fā)布時間,狀態(tài)
論壇表bbs
id,標題,內容,頭像,作者,發(fā)布時間,部門id(外鍵),回復次數,查看次數
論壇回復表bbsrevert
id,論壇id(外鍵),回復內容,回復時間,回復人(外鍵)
工作日志表worklog
id,標題,內容,發(fā)送人id(外鍵),發(fā)送時間,狀態(tài),點擊次數,批閱人id,批閱內容,批閱時間
日程計劃表timeorder
id,日程日期,標題,內容,發(fā)送人id(外鍵),發(fā)送日期,狀態(tài),是否批閱,批閱人id ,批閱內容,批閱時間
總結類型表sumuptype
id,類型
工作總結表worksumup
id,總結類型id(0年總結,2月總結)(外鍵),總結年份,總結月份,常規(guī)工作,下一步工作計劃,建議,總結時間,狀態(tài),總結人id(外鍵)
審批表examine
id,申請事由,詳細說明,備注,申請人(外鍵),申請時間,狀態(tài),審批(接收)人,審批意見,審批時間,部門id(外鍵),
籍貫表native
id,籍貫
戶口所在地表province
id,省名
政治面貌表visage
id,政治面貌
民族表nation
id,民族
學歷表learn
id,學歷
檔案表employee
id,檔案編號,姓名,曾用名,性別,出生日期,婚姻狀況,籍貫id(外鍵n_id),民族id(外鍵na_id),戶口所在地表id(外鍵),身高,體重,政治面貌id(外鍵),
身份證號,健康狀況,血型,目前電話,手機,電子郵件,畢業(yè)院校,專業(yè),學歷id(外鍵),畢業(yè)日期,學位,外語語種,外語水平,
獲得證書(外語),計算機水平:獲得證書(電腦):計算機擅長:普通話水平:家庭地址:郵編:現住址:家庭電話:
住址郵編:家庭情況:檔案存放地:職稱,何時參加工作:何時到本單位工作:累計工齡:本單位工齡:所在部門id(外鍵) ,職務:
備 注:錄入人id:錄入時間:照片
考勤表attendance
id,日期,上午時間,下午時間,姓名id(用戶表外鍵),部門id(外鍵)
資產管理表assetmanage
id,資產名稱: ?編號: ?計量單位: ?數量: ?規(guī)格型號: ? 出廠編號: ?技術證書號: ?購買價格: ?安裝費: ?折舊: ?凈值: ?
生產單位: ?生產年月: ?交付使用日期: ?預計使用年限: ?請購人或部門: ?保管人或部門: ?用途: ?使用部門id(外鍵): ?使用地點: ?
使用狀態(tài): ?錄入人id: ?備注: 錄入時間,是否報廢
通訊錄表addresslist
id,姓名id(外鍵):部門id(外鍵): 職 務:手 機:小靈通:辦公電話:分 機:傳 真: Email:Q Q,Msn:地 址:備 注:?
一個實體類的結構如下;
?
數據庫訪問接口層;主要是定義訪問表的接口;
?
論壇表訪問接口;定義了以下類型方法的接口;
文件表訪問接口;
?
數據庫訪問層;針對各個表的具體訪問;
?
訪問bbs表,有如下方法;
?
繼承自接口并具體實現;一共有如下類型的方法;
?
添加方法;有兩種;普通插入和帶事務的插入;
?
更新方法,兩種,普通和帶事務;
?
刪除方法,根據id,根據實體對象,帶和不帶事務;
?
select方法;根據行返回實體,根據數據閱讀者返回實體,根據id返回實體,根據id、子表、父表返回實體;
?
論壇表的父表是部門表;論壇表的子表是論壇回復表;
?
查詢方法;返回全部記錄,是否與父/子表關聯的情況下返回全部記錄,根據查詢條件返回記錄,等;
?
其他查詢方法;
?
根據sql命令返回記錄;
?
展現層;內容很多;
?
再將展現層用understand單獨建一個項目;過濾器要手動添加*.aspx,否則此類文件不會被加入;
?
?
打開一個aspx文件看下,支持不友好,不折疊代碼,也無任何分析;
?
看一個展現層的具體代碼;刪除公文的操作;
?
COM.OA.Entity.users loginuser = Session["loginuser"] as COM.OA.Entity.users;if (loginuser == null){Response.Write("<script language='javascript'>parent.document.location.href='../login.aspx'</script>");}else{//取傳遞的參數docidint docid = Int32.Parse(this.Request.QueryString["docid"].ToString());int flag = documentBLL.Delete(docid);if (flag == 0){this.ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", "<script>alert('公文刪除失敗!!');</script>");}this.Response.Write(string.Format(GetRedirect.WINALERT, "公文刪除成功!"));this.Response.Write(string.Format(GetRedirect.REDIRECT, "gw_sendnote.aspx"));}}
首先判斷是否登錄,未登錄跳到登錄頁;
?
傳遞id,調用公文業(yè)務層的刪除方法刪除公文;
刪除失敗彈出對話框提示;成功在頁面上提示;
此項目前端主要是純asp.net;未用其他前端組件;除了一個叫FreeTextBox的組件;
?
《新程序員》:云原生和全面數字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的图解understand分析一个asp.net办公系统源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javap使用实例图解
- 下一篇: Spring.NET 学习总结