
本項(xiàng)目采用PowerBuilder12.6作為IDE,PowerBuilder(簡稱PB)是一種快速應(yīng)用程序開發(fā)工具(RAD),和Delphi、Visual Basic齊名。
(資料圖)
本項(xiàng)目開發(fā)的圖書管理系統(tǒng)可以作為演示系統(tǒng),或者作為一個(gè)PB入門項(xiàng)目,用于PB練手或者老項(xiàng)目維護(hù)時(shí)對PB的溫習(xí)。
gitee開放源碼地址為:???https://gitee.com/radarfyh/library_manager.git??
本項(xiàng)目用于演示,系統(tǒng)需求說明書暫時(shí)不編寫。
系統(tǒng)采用C/S架構(gòu),Server采用Oracle數(shù)據(jù)庫,Client采用PB提供的Window和DataWindow對象。總體業(yè)務(wù)架構(gòu)設(shè)計(jì)如下圖:
oracle數(shù)據(jù)庫的安裝請參考如下文章:???完美方案:win7/win10下正確安裝oracle 10g??
Oracle數(shù)據(jù)庫管理系統(tǒng)可以采用10g或者11g,這兩個(gè)版本有何區(qū)別,請參考如下文章:???Oracle 10g和11g比較??
總體設(shè)計(jì)說明書暫時(shí)不編寫。
數(shù)據(jù)庫建模采用ER方法,實(shí)體劃分:用戶、圖書,圖書分類操作結(jié)果單獨(dú)設(shè)計(jì)一個(gè)關(guān)系:圖書分類,用戶和圖書的關(guān)系形成借還記錄。
(1)數(shù)據(jù)庫邏輯設(shè)計(jì)(采用PowerDesigner工具)如下圖:
(2)數(shù)據(jù)庫物理設(shè)計(jì)(采用PowerDesigner工具)如下圖:
PB訪問Oracle數(shù)據(jù)庫采用OCI接口,如果PB連接Oracle數(shù)據(jù)庫出現(xiàn)問題,請參考如下文章試試:???32位IDE訪問Oracle 數(shù)據(jù)庫錯(cuò)誤的解決??
數(shù)據(jù)庫設(shè)計(jì)說明書暫時(shí)不編寫。
(1)數(shù)據(jù)庫腳本導(dǎo)出和修改
使用PowerDesigner可以導(dǎo)出Oracle腳本,導(dǎo)出之前需要做如下設(shè)置,注意我使用Oracle 11g,所以下面假定使用11g。
選擇菜單“Change current DBMS ...”,打開change the target dbms窗口,在其中設(shè)置目標(biāo)數(shù)據(jù)庫為oracle 11g,如下圖:選擇菜單“Edit Current DBMS ...”,在General選項(xiàng)卡的左邊樹中選擇Oracle Version 11G-->Script-->Sql-->Format-->CaseSensitivityUsingQuote,然后點(diǎn)選No,如下圖:選擇菜單“Generate Database...”,在General選項(xiàng)卡中設(shè)置腳本文件導(dǎo)出文件夾和名稱,最后點(diǎn)確定就會(huì)導(dǎo)出SQL建庫腳本,如下圖:導(dǎo)出的SQL腳本沒有表空間、用戶、授權(quán)腳本,需要加上。索引、非空列、默認(rèn)值、主鍵、外鍵均需檢查是否正確,再增加一些測試記錄,形成最終的腳本放在SQL目錄下。
(2)數(shù)窗設(shè)計(jì)
本項(xiàng)目采用PB作為IDE,中間層采用DataWindow(簡稱:數(shù)窗或者DW),DataWindow是PB提供的中間層對象,作為數(shù)據(jù)庫和窗口之間的聯(lián)系紐帶。數(shù)窗設(shè)計(jì)如下:
dw_type 分類管理對象瀏覽編輯圖書分類記錄,如下圖:
關(guān)鍵屬性包括:Freeform風(fēng)格、QuickSelect數(shù)據(jù)源、選擇t_type表的所有列、ID升序排列、邊框樣式采用ShadowBox。
dw_book 圖書管理對象瀏覽編輯圖書記錄,如下圖:
關(guān)鍵屬性包括:Grid 風(fēng)格、QuickSelect數(shù)據(jù)源、選擇 t_book 表的所有列、不設(shè)排序、邊框樣式采用Raised、列標(biāo)題背景為Button Face、typeid列的Style Type=DropDownDW、typeid列的DataWindow=dw_book_type、typeid列的Display Column=id、typeid列的Data Column=id、company列的屬性和typeid列的屬性類似設(shè)置。
還有兩個(gè)子對象:dw_book_type,dw_book_company,前者(dw_book_type)用作圖書分類列的數(shù)據(jù)源,如下圖:
關(guān)鍵屬性包括:Tabular 風(fēng)格、QuickSelect數(shù)據(jù)源、選擇t_type表的所有列、ID升序排列、邊框樣式采用ShadowBoxtype表的所有列、ID升序排列、邊框樣式采用ShadowBox。
后者(dw_book_company)用作出版社列的數(shù)據(jù)源,如下圖:
關(guān)鍵屬性包括:Tabular 風(fēng)格、External數(shù)據(jù)源(外部數(shù)據(jù)源定義為ID/string/5和title/string/20,斜杠分隔的第一個(gè)數(shù)據(jù)是列名,第二個(gè)是數(shù)據(jù)類型,第三個(gè)是長度)、列標(biāo)題背景為Button Face、列對象的Display ONLY屬性值為TRUE、列對象的Show Focus Rectangle設(shè)為false。
dw_user 用戶管理對象瀏覽編輯用戶記錄,如下圖:
關(guān)鍵屬性包括:Freeform風(fēng)格、QuickSelect數(shù)據(jù)源、選擇t_user表的所有列、ID升序排列、邊框樣式采用ShadowBox。
dw_log 借還管理對象記錄借還操作,如下圖:
關(guān)鍵屬性設(shè)置參見源代碼,不在此列出。
有兩個(gè)子對象:dw_log_book 和 dw_log_user,前者(dw_log_book )用作圖書單列的數(shù)據(jù)源,如下圖:
其關(guān)鍵屬性設(shè)置參見源代碼,不在此列出。
后者(dw_log_user)用作用戶單列的數(shù)據(jù)源,如下圖:
dw_log_user關(guān)鍵屬性設(shè)置參見源代碼,不在此列出。
查詢類對象包括:dw_query_user 和 dw_query_log前者(dw_query_user )用作用戶查詢選擇,如下圖:注意這里需要?jiǎng)?chuàng)建一個(gè)query對象,命名為q_user,數(shù)據(jù)源就關(guān)聯(lián)這個(gè)query對象,其他關(guān)鍵屬性設(shè)置參見源代碼,不在此列出。
后者(dw_query_log)用于選擇指定用戶的借書記錄,如下圖:
dw_query_log關(guān)鍵屬性設(shè)置參見源代碼,不在此列出。
PB支持可視化窗口界面設(shè)計(jì),這是他能快速開發(fā)應(yīng)用程序的原因之一。下圖是窗口設(shè)計(jì)總圖:
具體設(shè)計(jì)參見源碼。
PB是事件驅(qū)動(dòng)的,所以幾乎所有代碼都在控件的事件中。具體事件的代碼編寫參見源碼,其中有詳細(xì)的注釋。
執(zhí)行后主界面如下圖:
分類管理界面如下圖:
用戶管理界面如下圖:
圖書管理界面如下圖:
借書管理界面如下圖:
記錄查詢界面如下圖:
關(guān)于界面如下圖:
gitee開放源碼地址為:??https://gitee.com/radarfyh/library_manager.git??
標(biāo)簽: 關(guān)鍵屬性 邊框樣式 屬性設(shè)置