如果乙個系統已經設計開發成型,現在使用者要求在這個系統上增加檔案資訊管理部分,主要功能包括歸檔、歸檔保管、資訊檢索查詢、銷毀以及審核等功能,一般情況下,如何設計和實現呢?
一般的做法是在更改原來的系統表結構,增加相關的檔案系統的字段,然後再程式設計實現,這樣的做法需要對原來系統進行比較大的改造,原系統或者檔案資訊系統的更改都會引起連鎖反應,無疑這樣做的工作量會很大。
我的做法是不對原系統進行任何改動,只是單獨增加有關檔案資訊的表,通過對歸檔的表的靈活處理來實現歸檔和查詢,這樣一來,很大程度上增加了系統的靈活性,是一種基於資料拍照式的設計。
一、設計思路
⒈建立了乙個檔案目錄表,在知道檔案目錄表下要歸檔的原資料表後,用資料視窗裝載該錶的記錄,根據歸檔要求進行篩選,具體歸檔時,在檔案列表裡插入一條記錄,對滿足要求的記錄進行打包,然後根據查詢要求更新查詢索引表(檔案號碼與相關查詢欄位的關係表),填寫歸檔記錄的相關屬性,並把打包後的二進位制檔案更新至該記錄。
⒉具體查詢時,根據查詢字段,提出具體的檔案號碼,進而提出具體的檔案記錄,然後把該二進位制檔案釋放到本地硬碟,用資料視窗裝載,根據查詢要求定位到具體記錄。
具體流程如下:
這裡有兩個很重要的問題。
1 如何避免重複歸檔?
因為歸檔記錄已經打包,與原表無關了,我們的解決方法是:根據歸檔二進位制檔案對應的資料表名稱以及相關主關鍵字段設定,把已經歸檔的記錄從原表中刪除(這裡只是在歸檔顯示時刪除,對原表記錄不做任何改動)。
2 如何儲存歸檔的實際記錄?
在pb裡,資料視窗的資料可以另存為一種以psr結尾的報表檔案格式,程式裡用讀取該檔案內容後在存入檔案列表的image欄位,在還原資料記錄時,只需要把image欄位還原為本地的psr檔案,並裝載入資料視窗,那麼儲存的原資料就會顯現出來。
二、具體表設計
⑴ 在檔案系統裡增加表來對原系統所用的表及字段進行登記,相當於在檔案系統裡把要歸檔表的情況做了個快照,在具體實現時的表名稱依次是:datableall(記錄所要歸檔的表的英文名稱和漢字名稱)、datablefieldset(記錄歸檔原表的主關鍵字段設定),還有篩選表及字段設定表dafilter_tablefield,索引表及字段設定dasy_tablefiledset。
⑵ 檔案計畫表(dajh)。
⑶ 建立檔案目錄表(daml)以及具體目錄下歸檔所對應的表(datableset)。
⑷ 為了加快查詢檔案速度,必須建立依據具體查詢所對應的檢索記錄表,比如為了在檔案系統部分裡依據人員姓名或者身份證號碼快速查詢到具體檔案號碼進而調出具體電子檔案,需要建立人員姓名、身份證號碼、檔案號碼這三個欄位的索引記錄表(daindex_member),等等.
這一部分可依據查詢要求進行相應表的建立,具體程式設計可以用動態游標來處理初始沒有考慮而其後又增加的歸檔要求。
⑸ 建立檔案記錄列表(dalist),用於儲存具體的歸檔記錄。
表及字段設定
......
三、程式介面
部分:四、**實現
見《電腦程式設計技巧與維護》2023年6月上半月。
我是如何開發乙個連鎖企業的資訊系統的,NO 2
我是如何開發乙個連鎖企業的資訊系統的,no.2 連鎖企業的資訊系統的開發,一般要經歷系統分析 系統設計 系統實施 系統評價和系統維護等五個階段。第乙個階段系統分析我們已經做完了,接下來是進入第二個階段 系統設計。這個階段主要是在需求調查的基礎上對公司進行分析,描述系統的資料流程,還有就是設計使用使用...
編寫乙個通用的Makefile檔案
1.1在這之前,我們需要了解程式的編譯過程 a.預處理 檢查語法錯誤,展開巨集,包含標頭檔案等 b.編譯 c s c.彙編 s o 1.2體驗在vc下程式的編譯 a.先編譯,在鏈結 b.修改了哪個檔案,就單獨編譯此檔案,在鏈結 c.修改了哪個標頭檔案,就單獨編譯使用該標頭檔案的原始檔,在鏈結 1.3...
乙個通用的makefile(一)
最近在編寫android編譯系統時,需要遍歷每乙個目錄下每乙個資料夾下的makefile,網上的方法有些繁瑣 就直接貼上自己遍歷子目錄深度為1 for temporary 之後會繼續更新 下面是我的乙個簡單例項工程 資料夾目錄層次 獲取當前目錄下的子目錄名字 2 subdir shell ls l ...