版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 前言</b></p><p> 為了提高圖書管理的工作效率,及時有效地了解各種信息,特開發(fā)此“小型圖書管理系統(tǒng)”。該系統(tǒng)本著簡單、實用、方便的宗旨,為管理人員、讀者提供快捷有效的軟件平臺,從而,提高圖書管理工作效率,節(jié)省大量人力和時間,提高了圖書館的信息化程度。</p><p> 本系統(tǒng)具有易學(xué)、易用的特點,用戶可以很快掌握其操作方法
2、,方便、快捷完成各項工作,正確無誤地進行各種信息的處理工作。</p><p> 本系統(tǒng)是由本人在楊成、郗亞輝老師的指導(dǎo)下開發(fā)完成的。為了這次畢業(yè)設(shè)計本人做了大量的準備和努力,但由于本人知識和能力有限,系統(tǒng)難免存在許多不完善的地方甚至漏洞,敬請各位老師不吝提出寶貴建議,本人將不勝感激!</p><p><b> 一、系統(tǒng)分析</b></p><p
3、><b> 1.1系統(tǒng)功能分析</b></p><p> 系統(tǒng)開發(fā)的總體任務(wù)是實現(xiàn)各種信息的系統(tǒng)化、歸范化。圖書管理是圖書館管理工作的重要組成部分,為了提高圖書管理工作的效率,利用計算機和數(shù)據(jù)庫技術(shù)設(shè)計開發(fā)了圖書管理系統(tǒng)是圖書管理工作的迫切需要。</p><p> 本系統(tǒng)的主要功能如下:</p><p> 有關(guān)讀者基本信息的輸入,
4、包括讀者編號、讀者類別、讀者姓名、讀者性別、工</p><p> 作單位、家庭住址、電話號碼、電子郵件、辦證日期、備注等。</p><p> 讀者基本信息的查詢、修改,包括讀者編號、讀者姓名、讀者類別、讀者性別、工</p><p> 作單位、家庭住址、電話號碼、電子郵件、辦證日期、備注等。</p><p> 圖書信息的輸入,包括書籍編
5、號、書籍名稱、書籍類別、作者姓名、出版社、出</p><p> 日期、書籍價格、書籍類別、登記日期、備注信息等。</p><p> 圖書信息的查詢、修改,包括書籍編號、書籍名稱、書籍類別、作者姓名、出版社</p><p> 名稱、出版日期、書籍價格、書籍類別、登記日期、備注信息等。</p><p> 借書信息的輸入,包括借書信息編號、
6、讀者編號、讀者姓名、書籍編號、書籍名稱、</p><p><b> 借書日期、備注等。</b></p><p> 借書信息的查詢、修改,包括借書信息編號、讀者編號、讀者姓名、書籍編號、書</p><p> 籍名稱、借書日期、備注等。</p><p> 還書信息的輸入、查詢和修改,包括還書信息編號、讀者編號、讀者姓
7、名、書籍編</p><p><b> 號、書籍名稱等。</b></p><p> 還書信息的查詢和修改,包括還書信息編號、讀者編號、讀者姓名、書籍編</p><p><b> 號、書籍名稱等。</b></p><p><b> 二、系統(tǒng)設(shè)計</b></p>
8、<p><b> 2.1總體設(shè)計</b></p><p> 結(jié)構(gòu)結(jié)構(gòu)設(shè)計主要包括運行模式選擇、操作系統(tǒng)選擇、數(shù)據(jù)庫管理系統(tǒng)選擇、系統(tǒng)功能結(jié)構(gòu)設(shè)計。</p><p> 選用單機模式,有一臺奔騰以上的微型計算機,操作系統(tǒng)選擇windows 98/2000,開發(fā)工具選擇powerbuilder8.0,數(shù)據(jù)庫管理系統(tǒng)(DBMS)選擇powerbuilder8
9、.0自帶Sybase SQL anywhere 7.0。</p><p><b> 2.2詳細設(shè)計</b></p><p> 詳細設(shè)計主要包括用戶界面設(shè)計和數(shù)據(jù)庫設(shè)計。</p><p><b> 用戶界面設(shè)計</b></p><p> 用戶運行該系統(tǒng)時,首先出現(xiàn)一個登錄窗口,提示輸入用戶名
10、或編號、密碼,輸入正確進入系統(tǒng)主窗口,如圖:(2-1)</p><p><b> 圖2-1</b></p><p> 主窗口的上部是菜單和工具欄,系統(tǒng)中的受所有功能通過選擇菜單項或單擊工具欄中的圖標即可。通過選擇各個菜單項或工具欄圖標,分別進入各個具體界面,實現(xiàn)不同的操作功能。</p><p><b> 數(shù)據(jù)庫設(shè)計</b&
11、gt;</p><p><b> 數(shù)據(jù)庫需求分析</b></p><p> 系統(tǒng)的數(shù)據(jù)流程圖如下:</p><p> 針對上述圖書管理工作過程的內(nèi)容和數(shù)據(jù)流程圖分析,設(shè)計如下所述的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)。</p><p> 讀者信息,包括的數(shù)據(jù)項有:讀者編號、讀者類別、讀者姓名、讀者性別、工</p>&l
12、t;p> 作單位、家庭住址、電話號碼、電子郵件、辦證日期、備注等。</p><p> 圖書信息,包括數(shù)據(jù)項有:書籍編號、書籍名稱、書籍類別、作者姓名、出版社、</p><p> 出版日期、書籍價格、書籍類別、登記日期、備注信息等。</p><p> 借書信息,包括數(shù)據(jù)項有:借書信息編號、讀者編號、讀者姓名、書籍編號、書</p><p
13、> 籍名稱、借書日期、備注等。</p><p> 用戶表信息,包括的數(shù)據(jù)項有:讀者編號、讀者姓名、權(quán)限。</p><p> 圖書類別信息,包括的數(shù)據(jù)項有:類別編號、圖書類別。</p><p><b> 數(shù)據(jù)庫概念設(shè)計</b></p><p> 根據(jù)上面設(shè)計,規(guī)劃出的實體有:讀者信息實體、書籍信息實體、借閱
14、信息實體、用戶實體、讀者信息實體。E-R圖如圖所示:</p><p><b> 。。。</b></p><p><b> 。。。</b></p><p><b> 。。。</b></p><p><b> ?。?E-R圖)</b></p>
15、<p><b> 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計</b></p><p> 圖書管理系統(tǒng)各個表設(shè)計如下:</p><p><b> ?。▓D書信息表)</b></p><p><b> ?。〞悇e表)</b></p><p><b> ?。ń栝喰畔⒈恚?lt;/
16、b></p><p><b> (讀者信息表)</b></p><p><b> ?。ㄓ脩舯恚?lt;/b></p><p><b> (各個表的主鍵)</b></p><p><b> 三、系統(tǒng)實施</b></p><p>
17、 在系統(tǒng)中主要實現(xiàn)對圖書信息、讀者信息、借閱信息以及用戶表中數(shù)據(jù)的增、刪、改、查詢等功能。</p><p><b> 3.1建立應(yīng)用對象</b></p><p> 設(shè)置SQLCA的屬性以及數(shù)據(jù)庫的連接參數(shù)</p><p> 應(yīng)用對象OPEN事件腳本如下:</p><p> // Profile guoshush
18、eng</p><p> SQLCA.DBMS = "ODBC"</p><p> SQLCA.AutoCommit = False</p><p> SQLCA.DBParm = "ConnectString='DSN=guoshusheng;UID=dba;PWD=sql'"</p>&
19、lt;p><b> CONNECT;</b></p><p><b> //錯誤處理</b></p><p> if sqlca.sqlcode <> 0 then</p><p> MessageBox ("Cannot Connect to Database", sqlca
20、.sqlerrtext)</p><p><b> return</b></p><p><b> end if</b></p><p><b> //打開啟動窗口</b></p><p> open(w_start)</p><p><b
21、> idle(10)</b></p><p> 在事件中加入如下腳本:</p><p> disconnect using sqlca;</p><p><b> 3.2登錄界面窗口</b></p><p> 對于該信統(tǒng)用戶分為三類:系統(tǒng)管理員、數(shù)據(jù)管理員、普通用戶。</p>&
22、lt;p> 登錄窗口w_login的主要是驗證用身份并確定權(quán)限,如圖所示:</p><p> 其登錄按鈕代碼如下:</p><p> if sle_1.text = "" then</p><p> //pop a message box</p><p> messagebox("PayAtten
23、tion!","The user name cant be null")</p><p> //sle_1 get the focus</p><p> sle_1.setfocus()</p><p> elseif sle_2.text = "" then</p><p> //p
24、op a message box</p><p> messagebox("PayAttention!","The password cant be null")</p><p> //sle_2 get the focus</p><p> sle_2.setfocus()</p><p>&l
25、t;b> else</b></p><p> G_INPUT_TIME =G_INPUT_TIME+1</p><p> G_USER = sle_1.text</p><p> G_PWD =sle_2.text</p><p> //取出數(shù)據(jù)庫用戶口令表格中對應(yīng)用戶的口令</p><p>
26、; SELECT user_PWD ,purview INTO :CORRECT_PSWD,:G_right FROM USER_info </p><p> WHERE user_id=:G_USER or username=:G_USER;</p><p> //將數(shù)據(jù)庫中保存的口令和用戶輸入的口令作比較</p><p> IF G_PWD=CORREC
27、T_PSWD THEN</p><p> //輸入正確,打開主窗口</p><p> OPEN(W_MAIN)</p><p> CLOSE(W_LOGIN)</p><p><b> ELSE</b></p><p> //不正確,在3次以內(nèi)可重新輸入,超過3次結(jié)束程序</p&g
28、t;<p> IF G_INPUT_TIME >3 THEN</p><p> MESSAGEBOX("警告","輸入用戶口令的次數(shù)太多!")</p><p> CLOSE(W_LOGIN)</p><p><b> ELSE</b></p><p>
29、 MESSAGEBOX("警告","輸入的用戶口令有誤,請重新輸入")</p><p><b> END IF</b></p><p><b> END IF</b></p><p><b> end if</b></p><p>
30、; close(w_start)</p><p> (W_login) </p><p><b> 3.3啟動界面設(shè)計</b></p><p> OPEN事件代碼如下:</p><p><b> prog++</b></p><p> hpb_1.po
31、sition=prog</p><p> st_2.text=string(prog)+"%"</p><p> if prog=100 then</p><p><b> timer(0)</b></p><p> w_start.visible=false</p><p
32、> open(w_login)</p><p><b> end if</b></p><p><b> w_start</b></p><p> 3.4 屏幕保護界面</p><p> (w_screen)</p><p><b> 3.4 菜單
33、設(shè)計</b></p><p><b> 菜單項代碼如下:</b></p><p> opensheet (w_login_re,w_main,6,layered!)</p><p> opensheet (w_change_password,w_main,6,layered!)</p><p> op
34、ensheet (w_user,w_main,6,layered!)</p><p> close(w_main) </p><p> opensheet (w_readers,w_main,6,layered!)</p><p> opensheet (w_readers_grid,w_main,6,layered!)</p><p>
35、; opensheet (w_readers_find,w_main,6,layered!)</p><p> opensheet (w_books,w_main,6,layered!)</p><p> opensheet (w_books_grid,w_main,6,layered!)</p><p> opensheet (w_books_find,w
36、_main,6,layered!)</p><p> opensheet (w_borrow,w_main,6,layered!) </p><p> opensheet (w_return,w_main,6,layered!)</p><p> opensheet (w_borrow_find,w_main,6,layered!)</p>&l
37、t;p> opensheet (w_store,w_main,6,layered!)</p><p> opensheet (w_kucun,w_main,6,layered!)</p><p> W_MAIN.ArrangeSheets(CASCADE!)</p><p> W_MAIN.ArrangeSheets(LAYER!)</p>
38、<p> close(w_about)</p><p> close(w_books)</p><p> close(w_books_find)</p><p> close(w_books_grid)</p><p> close(w_borrow)</p><p> close(w_bor
39、row_find)</p><p> close(w_change_password)</p><p> close(w_kucun)</p><p> close(w_login)</p><p> close(w_login_re)</p><p> close(w_readers)</p>
40、<p> close(w_readers_find)</p><p> close(w_readers_grid)</p><p> close(w_return)</p><p> close(w_user)</p><p> opensheet (w_about,w_main,6,original!)</p&g
41、t;<p><b> 重新登錄界面如下:</b></p><p><b> 確定按鈕代碼如下:</b></p><p> string correct_pswd</p><p> if sle_1.text = "" then</p><p> //pop
42、 a message box</p><p> messagebox("PayAttention!","The user name cant be null")</p><p> //sle_1 get the focus</p><p> sle_1.setfocus()</p><p> e
43、lseif sle_2.text = "" then</p><p> //pop a message box</p><p> messagebox("PayAttention!","The password cant be null")</p><p> //sle_2 get the focus
44、</p><p> sle_2.setfocus()</p><p><b> else</b></p><p> G_INPUT_TIME =G_INPUT_TIME+1</p><p> G_USER = sle_1.text</p><p> G_PWD =sle_2.text&l
45、t;/p><p> //取出數(shù)據(jù)庫用戶口令表格中對應(yīng)用戶的口令</p><p> SELECT user_PWD ,purview INTO :CORRECT_PSWD,:G_right FROM USER_info </p><p> WHERE user_id=:G_USER or username=:G_USER;</p><p>
46、 //將數(shù)據(jù)庫中保存的口令和用戶輸入的口令作比較</p><p> IF G_PWD=CORRECT_PSWD THEN</p><p> //輸入正確,打開主窗口</p><p> OPEN(W_MAIN)</p><p> //setredraw(false)</p><p> CLOSE(W_LOGI
47、N_re)</p><p><b> ELSE</b></p><p> //不正確,在3次以內(nèi)可重新輸入,超過3次結(jié)束程序</p><p> IF G_INPUT_TIME >3 THEN</p><p> MESSAGEBOX("警告","輸入用戶口令的次數(shù)太多!"
48、;)</p><p> CLOSE(W_LOGIN_re)</p><p><b> ELSE</b></p><p> MESSAGEBOX("警告","輸入的用戶口令有誤,請重新輸入")</p><p><b> END IF</b></p
49、><p><b> END IF</b></p><p><b> end if</b></p><p> if G_right<>1 then </p><p> m_main.m_1.m_13.enabled=false</p><p><b>
50、 end if</b></p><p> 修改用戶信息界面如下:</p><p><b> 確定按鈕代碼如下:</b></p><p><b> //輸入次數(shù)加1</b></p><p> G_INPUT_TIME =G_INPUT_TIME+1</p><
51、p> //判斷兩次輸入的新口令是否一致</p><p> IF SLE_2.TEXT <>SLE_3.TEXT THEN</p><p> IF G_INPUT_TIME >3 THEN</p><p> MESSAGEBOX("警告","輸入的次數(shù)太多!")</p><p&
52、gt; CLOSE(W_CHANGE_PASSWORD)</p><p><b> ELSE</b></p><p> MESSAGEBOX("警告","兩次輸入的口令不一致,請重新輸入")</p><p><b> END IF</b></p><p&g
53、t;<b> ELSE</b></p><p> //判斷輸入的原口令是否正確</p><p> IF SLE_1.TEXT <>G_PWD THEN</p><p> IF G_INPUT_TIME >3 THEN</p><p> MESSAGEBOX("警告",&qu
54、ot;輸入的次數(shù)太多!")</p><p> CLOSE(W_CHANGE_PASSWORD)</p><p><b> ELSE</b></p><p> MESSAGEBOX("警告","輸入的原口令不正確,請重新輸入")</p><p><b>
55、END IF</b></p><p><b> ELSE</b></p><p> //修改數(shù)據(jù)庫中的該用戶的口令</p><p> UPDATE user_info</p><p> SET user_pwd=:sle_2.text</p><p> WHERE user_
56、id=:G_USER or username=:G_USER;</p><p> MESSAGEBOX("注意","你的口令已經(jīng)修改,請牢記")</p><p> //提交修改,關(guān)閉口令修改窗口</p><p><b> COMMIT;</b></p><p> CLOSE
57、(W_CHANGE_PASSWORD)</p><p><b> END IF</b></p><p><b> END IF</b></p><p> OPEN事件代碼如下:</p><p> //將全局變量-輸入用戶名和口令的次數(shù)賦初值0</p><p> G_
58、INPUT_TIME=0</p><p><b> //定義變量</b></p><p> Environment l_env</p><p> int l_ScrWidth,l_ScrHeight</p><p><b> //關(guān)閉窗口刷新</b></p><p>
59、 setRedraw(false)</p><p> //取得屏幕的高度和寬度</p><p> GetEnvironment(l_env)</p><p> l_ScrWidth=PixelsToUnits(l_env.ScreenWidth,XpixelsToUnits!)</p><p> l_ScrHeight=Pixels
60、ToUnits(l_env.ScreenHeight,YpixelsToUnits!)</p><p> //移動窗口到屏幕中間</p><p> Move((l_scrwidth - this.width)/2,(l_scrheight - this.height)/2)</p><p><b> //打開窗口刷新</b></p&
61、gt;<p> setredraw(true)</p><p><b> 用戶管理界面如下:</b></p><p><b> 添加按鈕代碼如下:</b></p><p> //insert a row in the end of dw_1</p><p> g_RowNum
62、ber=dw_1.InsertRow(0)</p><p> //dw_1 get the focus</p><p> dw_1.SetFocus()</p><p><b> //到當前行</b></p><p> dw_1.ScrollToRow(G_RowNumber) </p><
63、p> //the first column get the focus</p><p> dw_1.SetColumn(1)</p><p><b> 刪除按鈕代碼如下:</b></p><p><b> //得到當前記錄</b></p><p> G_RowNumber=dw_1.
64、getrow()</p><p> //將當前記錄中的員工號取出賦值給全局變量emp_no</p><p> deleterow(dw_1,g_rownumber)</p><p><b> int a </b></p><p> a=MessageBox("提示","確實要刪除嗎?
65、",Question!, YesNoCancel!, 3)</p><p> if a=1 then </p><p> cb_3.triggerevent( Clicked!)</p><p><b> else </b></p><p> dw_1.retrieve()</p>&l
66、t;p><b> end if</b></p><p><b> 保存按鈕代碼如下:</b></p><p> if update(dw_1,true,false)=1 then</p><p> //保存修改成功,提交修改</p><p> dw_1.resetupdate()&l
67、t;/p><p><b> commit;</b></p><p> messagebox("提示!!!","數(shù)據(jù)更新成功!!!")</p><p><b> else</b></p><p> //保存修改失敗,取消所作的修改</p>&l
68、t;p><b> rollback;</b></p><p> //彈出一個對話框警告</p><p> messagebox("錯誤!!!","數(shù)據(jù)更新失敗!!!")</p><p><b> end if</b></p><p> cols
69、equery事件如下:</p><p> integer li_rc</p><p> // Accept the last data entered into the datawindow</p><p> dw_1.AcceptText()</p><p> //Check to see if any data has chang
70、ed </p><p> IF dw_1.ModifiedCount() > 0 THEN</p><p> li_rc = MessageBox("提示", &</p><p> "是否保存所做的修改?", Question!, &</p><p> YesNoCanc
71、el!, 3)</p><p> //User chose to updata and close window</p><p> IF li_rc = 1 THEN </p><p> cb_3.triggerevent( Clicked!)</p><p><b> RETURN 0</b></p&g
72、t;<p> //User chose to close window without updating</p><p> ELSEIF li_rc = 2 THEN</p><p><b> RETURN 0</b></p><p> //User canceled</p><p><b&g
73、t; ELSE</b></p><p> RETURN 1 </p><p><b> END IF</b></p><p><b> ELSE</b></p><p> // No changes to the data, window will just close<
74、;/p><p> RETURN 0 </p><p><b> END IF</b></p><p> 添加讀者信息界面如下:</p><p><b> 前一條:</b></p><p> //定義參數(shù)當前行行數(shù)</p><p> integ
75、er row_current </p><p> //數(shù)據(jù)窗口向前滾動一條記錄</p><p> row_current=dw_1.ScrollPriorRow()</p><p> //如果已經(jīng)到達第一條記錄,則彈出一個對話框警告</p><p> if row_current=1 then</p><p>
76、; MessageBox("警告","已經(jīng)是最前一條記錄")</p><p><b> end if</b></p><p><b> 后一條:</b></p><p> //定義參數(shù) 表的總行數(shù)</p><p> integer row_count
77、 </p><p> //定義參數(shù) 當前行</p><p> integer row_current </p><p> //數(shù)據(jù)窗口向后滾動一條紀錄</p><p> row_current=dw_1.ScrollNextRow()</p><p><b> //得到表的總行數(shù)</b&g
78、t;</p><p> row_count=dw_1.RowCount()</p><p> //判斷是否是最后一條記錄</p><p> if row_current= row_count then</p><p> MessageBox("警告","已經(jīng)是最后一條記錄")</p>
79、<p><b> end if</b></p><p><b> 保存:</b></p><p> //if update(dw_1,true,false)=1 then</p><p> ////保存修改成功,提交修改</p><p> //dw_1.resetupda
80、te()</p><p> //commit;</p><p> //messagebox("提示!!!","數(shù)據(jù)更新成功!!!")</p><p><b> //else</b></p><p> ////保存修改失敗,取消所作的修改</p><
81、p> //rollback;</p><p> ////彈出一個對話框警告</p><p> //messagebox("錯誤!!!","數(shù)據(jù)更新失敗!!!")</p><p><b> //end if</b></p><p> if update(dw_1
82、,true,false)=1 then</p><p> //保存修改成功,提交修改</p><p> dw_1.resetupdate()</p><p><b> commit;</b></p><p> messagebox("提示!!!","數(shù)據(jù)更新成功!!!")&
83、lt;/p><p><b> end if </b></p><p> if update(dw_1,true,false)=2 then</p><p> //保存修改失敗,取消所作的修改</p><p><b> rollback;</b></p><p> //
84、彈出一個對話框警告</p><p> messagebox("錯誤!!!","數(shù)據(jù)更新失敗!!!")</p><p><b> end if</b></p><p><b> 添加:</b></p><p> //insert a row in the
85、 end of dw_1</p><p> g_RowNumber=dw_1.InsertRow(0)</p><p> //dw_1 get the focus</p><p> dw_1.SetFocus()</p><p><b> //到當前行</b></p><p> dw_1
86、.ScrollToRow(G_RowNumber) </p><p> //the first column get the focus</p><p> dw_1.SetColumn(1)</p><p><b> 刪除:</b></p><p><b> //得到當前記錄</b><
87、;/p><p> G_RowNumber=dw_1.getrow()</p><p> //將當前記錄中的員工號取出賦值給全局變量emp_no</p><p> deleterow(dw_1,g_rownumber)</p><p><b> int a </b></p><p> a=Me
88、ssageBox("提示","確實要刪除嗎?",Question!, YesNoCancel!, 3)</p><p> if a=1 then </p><p> cb_3.triggerevent( Clicked!)</p><p><b> else </b></p><
89、p> dw_1.retrieve()</p><p><b> end if</b></p><p> closequery事件:</p><p> integer li_rc</p><p> // Accept the last data entered into the datawindow<
90、;/p><p> dw_1.AcceptText()</p><p> //Check to see if any data has changed </p><p> IF dw_1.ModifiedCount() > 0 THEN</p><p> li_rc = MessageBox("提示", &
91、;</p><p> "是否保存所做的修改?", Question!, &</p><p> YesNoCancel!, 3)</p><p> //User chose to updata and close window</p><p> IF li_rc = 1 THEN </p>&
92、lt;p> cb_3.triggerevent( Clicked!)</p><p><b> RETURN 0</b></p><p> //User chose to close window without updating</p><p> ELSEIF li_rc = 2 THEN</p><p>
93、;<b> RETURN 0</b></p><p> //User canceled</p><p><b> ELSE</b></p><p> RETURN 1 </p><p><b> END IF</b></p><p><
94、b> ELSE</b></p><p> // No changes to the data, window will just close</p><p> RETURN 0 </p><p><b> END IF</b></p><p><b> 退出:</b>&
95、lt;/p><p> integer li_rc</p><p> // Accept the last data entered into the datawindow</p><p> dw_1.AcceptText()</p><p> //Check to see if any data has changed </p>
96、;<p> IF dw_1.ModifiedCount() > 0 THEN</p><p> li_rc = MessageBox("提示", &</p><p> "是否保存所做的修改?", Question!, &</p><p> YesNoCancel!, 3)</
97、p><p> //User chose to updata and close window</p><p> IF li_rc = 1 THEN </p><p> cb_3.triggerevent( Clicked!)</p><p><b> RETURN 0</b></p><p>
98、; //User chose to close window without updating</p><p> ELSEIF li_rc = 2 THEN</p><p><b> RETURN 0</b></p><p> //User canceled</p><p><b> ELSE<
99、/b></p><p> RETURN 1 </p><p><b> END IF</b></p><p><b> ELSE</b></p><p> // No changes to the data, window will just close</p><
100、;p> RETURN 0 </p><p><b> END IF</b></p><p> 修改讀者信息界面如下:</p><p> 添加://insert a row in the end of dw_1</p><p> g_RowNumber=dw_1.InsertRow(0)</p>
101、;<p> //dw_1 get the focus</p><p> dw_1.SetFocus()</p><p><b> //到當前行</b></p><p> dw_1.ScrollToRow(G_RowNumber) </p><p> //the first column get
102、the focus</p><p> dw_1.SetColumn(1)</p><p><b> 刪除:</b></p><p><b> //得到當前記錄</b></p><p> G_RowNumber=dw_1.getrow()</p><p> //將當前
103、記錄中的員工號取出賦值給全局變量emp_no</p><p> deleterow(dw_1,g_rownumber)</p><p><b> int a </b></p><p> a=MessageBox("提示","確實要刪除嗎?",Question!, YesNoCancel!, 3)&l
104、t;/p><p> if a=1 then </p><p> cb_3.triggerevent( Clicked!)</p><p><b> else </b></p><p> dw_1.retrieve()</p><p><b> end if</b>&l
105、t;/p><p><b> 保存:</b></p><p> if update(dw_1,true,false)=1 then</p><p> //保存修改成功,提交修改</p><p> dw_1.resetupdate()</p><p><b> commit;</
106、b></p><p> messagebox("提示!!!","數(shù)據(jù)更新成功!!!")</p><p><b> else</b></p><p> //保存修改失敗,取消所作的修改</p><p><b> rollback;</b></
107、p><p> //彈出一個對話框警告</p><p> messagebox("錯誤!!!","數(shù)據(jù)更新失敗!!!")</p><p><b> end if</b></p><p> closequery事件如前。</p><p><b>
108、 退出:</b></p><p> close(parent)</p><p><b> 修改讀者信息界面:</b></p><p> 添加://insert a row in the end of dw_1</p><p> g_RowNumber=dw_1.InsertRow(0)</p&g
109、t;<p> //dw_1 get the focus</p><p> dw_1.SetFocus()</p><p><b> //到當前行</b></p><p> dw_1.ScrollToRow(G_RowNumber) </p><p> //the first column get
110、 the focus</p><p> dw_1.SetColumn(1)</p><p> 刪除://得到當前記錄</p><p> G_RowNumber=dw_1.getrow()</p><p> //將當前記錄中的員工號取出賦值給全局變量emp_no</p><p> deleterow(dw_1,
111、g_rownumber)</p><p><b> int a </b></p><p> a=MessageBox("提示","確實要刪除嗎?",Question!, YesNoCancel!, 3)</p><p> if a=1 then </p><p> cb_3
112、.triggerevent( Clicked!)</p><p><b> else </b></p><p> dw_1.retrieve()</p><p><b> end if</b></p><p> 保存:if update(dw_1,true,false)=1 then<
113、;/p><p> //保存修改成功,提交修改</p><p> dw_1.resetupdate()</p><p><b> commit;</b></p><p> messagebox("提示!!!","數(shù)據(jù)更新成功!!!")</p><p>&l
114、t;b> else</b></p><p> //保存修改失敗,取消所作的修改</p><p><b> rollback;</b></p><p> //彈出一個對話框警告</p><p> messagebox("錯誤!!!","數(shù)據(jù)更新失敗!!!"
115、)</p><p><b> end if</b></p><p><b> 退出:</b></p><p> close(parent)</p><p><b> 添加讀者信息界面:</b></p><p><b> 前一條:<
116、;/b></p><p> //定義參數(shù)當前行行數(shù)</p><p> integer row_current </p><p> //數(shù)據(jù)窗口向前滾動一條記錄</p><p> row_current=dw_1.ScrollPriorRow()</p><p> //如果已經(jīng)到達第一條記錄,則彈出一個
117、對話框警告</p><p> if row_current=1 then</p><p> MessageBox("警告","已經(jīng)是最前一條記錄")</p><p><b> end if</b></p><p><b> 后一條:</b></p
118、><p> //定義參數(shù) 表的總行數(shù)</p><p> integer row_count </p><p> //定義參數(shù) 當前行</p><p> integer row_current </p><p> //數(shù)據(jù)窗口向后滾動一條紀錄</p><p> row_current=
119、dw_1.ScrollNextRow()</p><p><b> //得到表的總行數(shù)</b></p><p> row_count=dw_1.RowCount()</p><p> //判斷是否是最后一條記錄</p><p> if row_current= row_count then</p>
120、<p> MessageBox("警告","已經(jīng)是最后一條記錄")</p><p><b> end if</b></p><p><b> 保存:</b></p><p> if update(dw_1,true,false)=1 then</p>
121、<p> //保存修改成功,提交修改</p><p> dw_1.resetupdate()</p><p><b> commit;</b></p><p> messagebox("提示!!!","數(shù)據(jù)更新成功!!!")</p><p><b>
122、else</b></p><p> //保存修改失敗,取消所作的修改</p><p><b> rollback;</b></p><p> //彈出一個對話框警告</p><p> messagebox("錯誤!!!","數(shù)據(jù)更新失敗!!!")</p&g
123、t;<p><b> end if</b></p><p><b> 添加:</b></p><p> //insert a row in the end of dw_1</p><p> g_RowNumber=dw_1.InsertRow(0)</p><p> //dw
124、_1 get the focus</p><p> dw_1.SetFocus()</p><p><b> //到當前行</b></p><p> dw_1.ScrollToRow(G_RowNumber) </p><p> //the first column get the focus</p>
125、;<p> dw_1.SetColumn(1)</p><p><b> 刪除:</b></p><p><b> //得到當前記錄</b></p><p> G_RowNumber=dw_1.getrow()</p><p> //將當前記錄中的員工號取出賦值給全局變量em
126、p_no</p><p> deleterow(dw_1,g_rownumber)</p><p><b> int a </b></p><p> a=MessageBox("提示","確實要刪除嗎?",Question!, YesNoCancel!, 3)</p><p>
127、; if a=1 then </p><p> cb_3.triggerevent( Clicked!)</p><p><b> else </b></p><p> dw_1.retrieve()</p><p><b> end if</b></p><p>
128、;<b> 退出:</b></p><p><b> //定義兩個變量</b></p><p> int MCount //修改后沒有保存的行數(shù)</p><p> int UpdateOrNot //是否修改</p><p> //得到修改后沒有保存的行數(shù)</p>
129、<p> MCount=w_books.dw_1.ModifiedCount()</p><p> if MCount=0 then</p><p> //沒有未保存的修改</p><p> close(w_books)</p><p> elseif Mcount>0 then</p><p
130、> //詢問是否保存所做的修改</p><p> UpdateOrNot=MessageBox("保存修改","您修改了數(shù)據(jù)窗口中的數(shù)據(jù),現(xiàn)在是否保存?",Question!,YesNoCancel!)</p><p> if UpdateOrNot=1 then</p><p><b> //保存&l
131、t;/b></p><p> if update(w_books.dw_1,true,false)=1 then</p><p> //保存修改成功,提交修改</p><p> w_books.dw_1.resetupdate()</p><p><b> commit;</b></p>&l
132、t;p><b> else</b></p><p> //保存修改失敗,取消所作的修改</p><p><b> rollback;</b></p><p> //彈出一個對話框警告</p><p> messagebox("錯誤!!!","數(shù)據(jù)保存失敗
133、")</p><p><b> end if</b></p><p> close(w_books)</p><p> elseif UpdateOrNot=2 then</p><p><b> //不保存</b></p><p><b> r
134、ollback;</b></p><p> close(w_books)</p><p><b> end if</b></p><p><b> end if </b></p><p><b> 修改書籍界面如下:</b></p><p
135、><b> ?。?lt;/b></p><p><b> 添加:</b></p><p> //insert a row in the end of dw_1</p><p> g_RowNumber=dw_1.InsertRow(0)</p><p> //dw_1 get the foc
136、us</p><p> dw_1.SetFocus()</p><p><b> //到當前行</b></p><p> dw_1.ScrollToRow(G_RowNumber) </p><p> //the first column get the focus</p><p>
137、dw_1.SetColumn(1)</p><p><b> 刪除:</b></p><p><b> //得到當前記錄</b></p><p> G_RowNumber=dw_1.getrow()</p><p> //將當前記錄中的員工號取出賦值給全局變量emp_no</p>
138、<p> deleterow(dw_1,g_rownumber)</p><p><b> int a </b></p><p> a=MessageBox("提示","確實要刪除嗎?",Question!, YesNoCancel!, 3)</p><p> if a=1 then
139、 </p><p> cb_3.triggerevent( Clicked!)</p><p><b> else </b></p><p> dw_1.retrieve()</p><p><b> end if</b></p><p> 保存:if updat
140、e(dw_1,true,false)=1 then</p><p> //保存修改成功,提交修改</p><p> dw_1.resetupdate()</p><p><b> commit;</b></p><p> messagebox("提示!!!","數(shù)據(jù)更新成功!!!&q
141、uot;)</p><p><b> else</b></p><p> //保存修改失敗,取消所作的修改</p><p><b> rollback;</b></p><p> //彈出一個對話框警告</p><p> messagebox("錯誤!!!
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計--圖書管理系統(tǒng)
- 圖書管理系統(tǒng) 畢業(yè)設(shè)計
- 圖書管理系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---圖書管理系統(tǒng)
- 圖書管理系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計-----圖書管理系統(tǒng)
- 畢業(yè)設(shè)計-----圖書管理系統(tǒng)
- 圖書管理系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---圖書管理系統(tǒng)
- 畢業(yè)設(shè)計-----圖書管理系統(tǒng)
- 圖書管理系統(tǒng)(畢業(yè)設(shè)計)
- 圖書管理系統(tǒng)畢業(yè)設(shè)計
- 圖書管理系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計----圖書管理系統(tǒng)
- 畢業(yè)設(shè)計---圖書管理系統(tǒng)
- 畢業(yè)設(shè)計 圖書管理系統(tǒng)設(shè)計
- 畢業(yè)設(shè)計----圖書管理系統(tǒng)設(shè)計
- 圖書管理系統(tǒng)畢業(yè)設(shè)計論文
- 畢業(yè)設(shè)計圖書管理系統(tǒng)
- 畢業(yè)設(shè)計(論文)-圖書管理系統(tǒng)
評論
0/150
提交評論