版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 前言</b></p><p> 為了提高圖書(shū)管理的工作效率,及時(shí)有效地了解各種信息,特開(kāi)發(fā)此“小型圖書(shū)管理系統(tǒng)”。該系統(tǒng)本著簡(jiǎn)單、實(shí)用、方便的宗旨,為管理人員、讀者提供快捷有效的軟件平臺(tái),從而,提高圖書(shū)管理工作效率,節(jié)省大量人力和時(shí)間,提高了圖書(shū)館的信息化程度。</p><p> 本系統(tǒng)具有易學(xué)、易用的特點(diǎn),用戶可以很快掌握其操作方法
2、,方便、快捷完成各項(xiàng)工作,正確無(wú)誤地進(jìn)行各種信息的處理工作。</p><p> 本系統(tǒng)是由本人在楊成、郗亞輝老師的指導(dǎo)下開(kāi)發(fā)完成的。為了這次畢業(yè)設(shè)計(jì)本人做了大量的準(zhǔn)備和努力,但由于本人知識(shí)和能力有限,系統(tǒng)難免存在許多不完善的地方甚至漏洞,敬請(qǐng)各位老師不吝提出寶貴建議,本人將不勝感激!</p><p><b> 一、系統(tǒng)分析</b></p><p
3、><b> 1.1系統(tǒng)功能分析</b></p><p> 系統(tǒng)開(kāi)發(fā)的總體任務(wù)是實(shí)現(xiàn)各種信息的系統(tǒng)化、歸范化。圖書(shū)管理是圖書(shū)館管理工作的重要組成部分,為了提高圖書(shū)管理工作的效率,利用計(jì)算機(jī)和數(shù)據(jù)庫(kù)技術(shù)設(shè)計(jì)開(kāi)發(fā)了圖書(shū)管理系統(tǒng)是圖書(shū)管理工作的迫切需要。</p><p> 本系統(tǒng)的主要功能如下:</p><p> 有關(guān)讀者基本信息的輸入,
4、包括讀者編號(hào)、讀者類別、讀者姓名、讀者性別、工</p><p> 作單位、家庭住址、電話號(hào)碼、電子郵件、辦證日期、備注等。</p><p> 讀者基本信息的查詢、修改,包括讀者編號(hào)、讀者姓名、讀者類別、讀者性別、工</p><p> 作單位、家庭住址、電話號(hào)碼、電子郵件、辦證日期、備注等。</p><p> 圖書(shū)信息的輸入,包括書(shū)籍編
5、號(hào)、書(shū)籍名稱、書(shū)籍類別、作者姓名、出版社、出</p><p> 日期、書(shū)籍價(jià)格、書(shū)籍類別、登記日期、備注信息等。</p><p> 圖書(shū)信息的查詢、修改,包括書(shū)籍編號(hào)、書(shū)籍名稱、書(shū)籍類別、作者姓名、出版社</p><p> 名稱、出版日期、書(shū)籍價(jià)格、書(shū)籍類別、登記日期、備注信息等。</p><p> 借書(shū)信息的輸入,包括借書(shū)信息編號(hào)、
6、讀者編號(hào)、讀者姓名、書(shū)籍編號(hào)、書(shū)籍名稱、</p><p><b> 借書(shū)日期、備注等。</b></p><p> 借書(shū)信息的查詢、修改,包括借書(shū)信息編號(hào)、讀者編號(hào)、讀者姓名、書(shū)籍編號(hào)、書(shū)</p><p> 籍名稱、借書(shū)日期、備注等。</p><p> 還書(shū)信息的輸入、查詢和修改,包括還書(shū)信息編號(hào)、讀者編號(hào)、讀者姓
7、名、書(shū)籍編</p><p><b> 號(hào)、書(shū)籍名稱等。</b></p><p> 還書(shū)信息的查詢和修改,包括還書(shū)信息編號(hào)、讀者編號(hào)、讀者姓名、書(shū)籍編</p><p><b> 號(hào)、書(shū)籍名稱等。</b></p><p><b> 二、系統(tǒng)設(shè)計(jì)</b></p>
8、<p><b> 2.1總體設(shè)計(jì)</b></p><p> 結(jié)構(gòu)結(jié)構(gòu)設(shè)計(jì)主要包括運(yùn)行模式選擇、操作系統(tǒng)選擇、數(shù)據(jù)庫(kù)管理系統(tǒng)選擇、系統(tǒng)功能結(jié)構(gòu)設(shè)計(jì)。</p><p> 選用單機(jī)模式,有一臺(tái)奔騰以上的微型計(jì)算機(jī),操作系統(tǒng)選擇windows 98/2000,開(kāi)發(fā)工具選擇powerbuilder8.0,數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)選擇powerbuilder8
9、.0自帶Sybase SQL anywhere 7.0。</p><p><b> 2.2詳細(xì)設(shè)計(jì)</b></p><p> 詳細(xì)設(shè)計(jì)主要包括用戶界面設(shè)計(jì)和數(shù)據(jù)庫(kù)設(shè)計(jì)。</p><p><b> 用戶界面設(shè)計(jì)</b></p><p> 用戶運(yùn)行該系統(tǒng)時(shí),首先出現(xiàn)一個(gè)登錄窗口,提示輸入用戶名
10、或編號(hào)、密碼,輸入正確進(jìn)入系統(tǒng)主窗口,如圖:(2-1)</p><p><b> 圖2-1</b></p><p> 主窗口的上部是菜單和工具欄,系統(tǒng)中的受所有功能通過(guò)選擇菜單項(xiàng)或單擊工具欄中的圖標(biāo)即可。通過(guò)選擇各個(gè)菜單項(xiàng)或工具欄圖標(biāo),分別進(jìn)入各個(gè)具體界面,實(shí)現(xiàn)不同的操作功能。</p><p><b> 數(shù)據(jù)庫(kù)設(shè)計(jì)</b&
11、gt;</p><p><b> 數(shù)據(jù)庫(kù)需求分析</b></p><p> 系統(tǒng)的數(shù)據(jù)流程圖如下:</p><p> 針對(duì)上述圖書(shū)管理工作過(guò)程的內(nèi)容和數(shù)據(jù)流程圖分析,設(shè)計(jì)如下所述的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)。</p><p> 讀者信息,包括的數(shù)據(jù)項(xiàng)有:讀者編號(hào)、讀者類別、讀者姓名、讀者性別、工</p>&l
12、t;p> 作單位、家庭住址、電話號(hào)碼、電子郵件、辦證日期、備注等。</p><p> 圖書(shū)信息,包括數(shù)據(jù)項(xiàng)有:書(shū)籍編號(hào)、書(shū)籍名稱、書(shū)籍類別、作者姓名、出版社、</p><p> 出版日期、書(shū)籍價(jià)格、書(shū)籍類別、登記日期、備注信息等。</p><p> 借書(shū)信息,包括數(shù)據(jù)項(xiàng)有:借書(shū)信息編號(hào)、讀者編號(hào)、讀者姓名、書(shū)籍編號(hào)、書(shū)</p><p
13、> 籍名稱、借書(shū)日期、備注等。</p><p> 用戶表信息,包括的數(shù)據(jù)項(xiàng)有:讀者編號(hào)、讀者姓名、權(quán)限。</p><p> 圖書(shū)類別信息,包括的數(shù)據(jù)項(xiàng)有:類別編號(hào)、圖書(shū)類別。</p><p><b> 數(shù)據(jù)庫(kù)概念設(shè)計(jì)</b></p><p> 根據(jù)上面設(shè)計(jì),規(guī)劃出的實(shí)體有:讀者信息實(shí)體、書(shū)籍信息實(shí)體、借閱
14、信息實(shí)體、用戶實(shí)體、讀者信息實(shí)體。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ù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)</b></p><p> 圖書(shū)管理系統(tǒng)各個(gè)表設(shè)計(jì)如下:</p><p><b> ?。▓D書(shū)信息表)</b></p><p><b> ?。〞?shū)籍類別表)</b></p><p><b> ?。ń栝喰畔⒈恚?lt;/
16、b></p><p><b> (讀者信息表)</b></p><p><b> ?。ㄓ脩舯恚?lt;/b></p><p><b> ?。ǜ鱾€(gè)表的主鍵)</b></p><p><b> 三、系統(tǒng)實(shí)施</b></p><p>
17、 在系統(tǒng)中主要實(shí)現(xiàn)對(duì)圖書(shū)信息、讀者信息、借閱信息以及用戶表中數(shù)據(jù)的增、刪、改、查詢等功能。</p><p><b> 3.1建立應(yīng)用對(duì)象</b></p><p> 設(shè)置SQLCA的屬性以及數(shù)據(jù)庫(kù)的連接參數(shù)</p><p> 應(yīng)用對(duì)象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> //錯(cuò)誤處理</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> //打開(kāi)啟動(dòng)窗口</b></p><p> open(w_start)</p><p><b
21、> idle(10)</b></p><p> 在事件中加入如下腳本:</p><p> disconnect using sqlca;</p><p><b> ?。?2登錄界面窗口</b></p><p> 對(duì)于該信統(tǒng)用戶分為三類:系統(tǒng)管理員、數(shù)據(jù)管理員、普通用戶。</p>&
22、lt;p> 登錄窗口w_login的主要是驗(yàn)證用身份并確定權(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ù)庫(kù)用戶口令表格中對(duì)應(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ù)庫(kù)中保存的口令和用戶輸入的口令作比較</p><p> IF G_PWD=CORREC
27、T_PSWD THEN</p><p> //輸入正確,打開(kāi)主窗口</p><p> OPEN(W_MAIN)</p><p> CLOSE(W_LOGIN)</p><p><b> ELSE</b></p><p> //不正確,在3次以內(nèi)可重新輸入,超過(guò)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("警告","輸入的用戶口令有誤,請(qǐng)重新輸入")</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啟動(dòng)界面設(shè)計(jì)</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> ?。?4 屏幕保護(hù)界面</p><p> (w_screen)</p><p><b> 3.4 菜單
33、設(shè)計(jì)</b></p><p><b> 菜單項(xiàng)代碼如下:</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ù)庫(kù)用戶口令表格中對(duì)應(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ù)庫(kù)中保存的口令和用戶輸入的口令作比較</p><p> IF G_PWD=CORRECT_PSWD THEN</p><p> //輸入正確,打開(kāi)主窗口</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)可重新輸入,超過(guò)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("警告","輸入的用戶口令有誤,請(qǐng)重新輸入")</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("警告","兩次輸入的口令不一致,請(qǐng)重新輸入")</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("警告","輸入的原口令不正確,請(qǐng)重新輸入")</p><p><b>
55、END IF</b></p><p><b> ELSE</b></p><p> //修改數(shù)據(jù)庫(kù)中的該用戶的口令</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)修改,請(qǐ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> //移動(dòng)窗口到屏幕中間</p><p> Move((l_scrwidth - this.width)/2,(l_scrheight - this.height)/2)</p><p><b> //打開(kāi)窗口刷新</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> //到當(dāng)前行</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> //得到當(dāng)前記錄</b></p><p> G_RowNumber=dw_1.
64、getrow()</p><p> //將當(dāng)前記錄中的員工號(hào)取出賦值給全局變量emp_no</p><p> deleterow(dw_1,g_rownumber)</p><p><b> int a </b></p><p> a=MessageBox("提示","確實(shí)要?jiǎng)h除嗎?
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> //彈出一個(gè)對(duì)話框警告</p><p> messagebox("錯(cuò)誤!!!","數(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ù)當(dāng)前行行數(shù)</p><p> integ
75、er row_current </p><p> //數(shù)據(jù)窗口向前滾動(dòng)一條記錄</p><p> row_current=dw_1.ScrollPriorRow()</p><p> //如果已經(jīng)到達(dá)第一條記錄,則彈出一個(gè)對(duì)話框警告</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ù) 當(dāng)前行</p><p> integer row_current </p><p> //數(shù)據(jù)窗口向后滾動(dòng)一條紀(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> ////彈出一個(gè)對(duì)話框警告</p><p> //messagebox("錯(cuò)誤!!!","數(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、彈出一個(gè)對(duì)話框警告</p><p> messagebox("錯(cuò)誤!!!","數(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> //到當(dāng)前行</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> //得到當(dāng)前記錄</b><
87、;/p><p> G_RowNumber=dw_1.getrow()</p><p> //將當(dāng)前記錄中的員工號(hào)取出賦值給全局變量emp_no</p><p> deleterow(dw_1,g_rownumber)</p><p><b> int a </b></p><p> a=Me
88、ssageBox("提示","確實(shí)要?jiǎng)h除嗎?",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> //到當(dāng)前行</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> //得到當(dāng)前記錄</b></p><p> G_RowNumber=dw_1.getrow()</p><p> //將當(dāng)前
103、記錄中的員工號(hào)取出賦值給全局變量emp_no</p><p> deleterow(dw_1,g_rownumber)</p><p><b> int a </b></p><p> a=MessageBox("提示","確實(shí)要?jiǎng)h除嗎?",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> //彈出一個(gè)對(duì)話框警告</p><p> messagebox("錯(cuò)誤!!!","數(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> //到當(dāng)前行</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> 刪除://得到當(dāng)前記錄</p><p> G_RowNumber=dw_1.getrow()</p><p> //將當(dāng)前記錄中的員工號(hào)取出賦值給全局變量emp_no</p><p> deleterow(dw_1,
111、g_rownumber)</p><p><b> int a </b></p><p> a=MessageBox("提示","確實(shí)要?jiǎng)h除嗎?",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> //彈出一個(gè)對(duì)話框警告</p><p> messagebox("錯(cuò)誤!!!","數(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ù)當(dāng)前行行數(shù)</p><p> integer row_current </p><p> //數(shù)據(jù)窗口向前滾動(dòng)一條記錄</p><p> row_current=dw_1.ScrollPriorRow()</p><p> //如果已經(jīng)到達(dá)第一條記錄,則彈出一個(gè)
117、對(duì)話框警告</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ù) 當(dāng)前行</p><p> integer row_current </p><p> //數(shù)據(jù)窗口向后滾動(dòng)一條紀(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> //彈出一個(gè)對(duì)話框警告</p><p> messagebox("錯(cuò)誤!!!","數(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> //到當(dāng)前行</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> //得到當(dāng)前記錄</b></p><p> G_RowNumber=dw_1.getrow()</p><p> //將當(dāng)前記錄中的員工號(hào)取出賦值給全局變量em
126、p_no</p><p> deleterow(dw_1,g_rownumber)</p><p><b> int a </b></p><p> a=MessageBox("提示","確實(shí)要?jiǎng)h除嗎?",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> //定義兩個(gè)變量</b></p><p> int MCount //修改后沒(méi)有保存的行數(shù)</p><p> int UpdateOrNot //是否修改</p><p> //得到修改后沒(méi)有保存的行數(shù)</p>
129、<p> MCount=w_books.dw_1.ModifiedCount()</p><p> if MCount=0 then</p><p> //沒(méi)有未保存的修改</p><p> close(w_books)</p><p> elseif Mcount>0 then</p><p
130、> //詢問(wèn)是否保存所做的修改</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> //彈出一個(gè)對(duì)話框警告</p><p> messagebox("錯(cuò)誤!!!","數(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> 修改書(shū)籍界面如下:</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> //到當(dāng)前行</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> //得到當(dāng)前記錄</b></p><p> G_RowNumber=dw_1.getrow()</p><p> //將當(dāng)前記錄中的員工號(hào)取出賦值給全局變量emp_no</p>
138、<p> deleterow(dw_1,g_rownumber)</p><p><b> int a </b></p><p> a=MessageBox("提示","確實(shí)要?jiǎng)h除嗎?",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> //彈出一個(gè)對(duì)話框警告</p><p> messagebox("錯(cuò)誤!!!
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)--圖書(shū)管理系統(tǒng)
- 圖書(shū)管理系統(tǒng) 畢業(yè)設(shè)計(jì)
- 圖書(shū)管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---圖書(shū)管理系統(tǒng)
- 圖書(shū)管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)-----圖書(shū)管理系統(tǒng)
- 畢業(yè)設(shè)計(jì)-----圖書(shū)管理系統(tǒng)
- 圖書(shū)管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---圖書(shū)管理系統(tǒng)
- 圖書(shū)管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----圖書(shū)管理系統(tǒng)
- 畢業(yè)設(shè)計(jì)---圖書(shū)管理系統(tǒng)
- 畢業(yè)設(shè)計(jì)-----圖書(shū)管理系統(tǒng)
- 圖書(shū)管理系統(tǒng)(畢業(yè)設(shè)計(jì))
- 圖書(shū)管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì) 圖書(shū)管理系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----圖書(shū)管理系統(tǒng)設(shè)計(jì)
- 圖書(shū)管理系統(tǒng)畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)圖書(shū)管理系統(tǒng)
- 畢業(yè)設(shè)計(jì)(論文)-圖書(shū)管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論