【正文】
Box(提示 ,確實(shí)要?jiǎng)h除嗎 ?,Question!, YesNoCancel!, 3) if a=1 then ( Clicked!) else () end if 保存: if update(dw_1,true,false)=1 then //保存修改成功,提交修改 () mit。 是否保存所做的修改 ?, Question!, amp。 messagebox(提示 !!!,數(shù)據(jù)更新成功 !!!) end if if update(dw_1,true,false)=2 then //保存修改失敗,取消所作的修改 rollback。 是否保存所做的修改 ?, Question!, amp。 MESSAGEBOX(注意 ,你的口令已經(jīng)修改,請(qǐng)牢記 ) //提交修改,關(guān)閉口令修改窗口 COMMIT。 3 .2 登錄界面窗口 對(duì)于該信統(tǒng)用戶分為三類:系統(tǒng)管理員、數(shù)據(jù)管理員、普通用戶。UID=dba。 讀者信息實(shí)體 書(shū)籍信息實(shí)體 讀者編號(hào) 讀者姓名 讀者地址 書(shū)籍名稱 書(shū)籍編號(hào) 出版社 。 圖書(shū)類別信息,包括的數(shù)據(jù)項(xiàng)有:類別編號(hào)、圖書(shū)類別。 讀者信息,包括的數(shù)據(jù)項(xiàng)有: 讀者編號(hào)、讀者類別、讀者姓名、讀者性別、工 作單位、家庭住址、電話號(hào)碼、電子郵件、辦證日期、備注等。 詳細(xì)設(shè)計(jì) 詳細(xì)設(shè)計(jì)主要包括用戶界面設(shè)計(jì)和數(shù)據(jù)庫(kù)設(shè)計(jì)。 還書(shū)信息的輸入、查詢和修改,包括還書(shū)信息編號(hào)、讀者編號(hào)、讀者姓名、書(shū)籍編 號(hào)、書(shū)籍名稱等。 圖書(shū)信息的輸入,包括書(shū)籍編號(hào)、書(shū)籍名稱、書(shū)籍類別、作者姓名、出版社、出 日期、書(shū)籍價(jià)格、書(shū)籍類別、登記日期、備注信息等。為了這次畢業(yè)設(shè)計(jì)本人做了大量的準(zhǔn)備和努力,但由于本人知識(shí)和能力有限,系統(tǒng)難免存在許多不完善的地方甚至漏洞, 敬請(qǐng)各位老師不吝提出寶貴建議,本人將不勝感激 ! 一、系統(tǒng)分析 系統(tǒng)功能分析 系統(tǒng)開(kāi)發(fā)的總體任務(wù)是實(shí)現(xiàn)各種信息的系統(tǒng)化、歸范化。前言 為了提高圖書(shū)管理的工作效率,及時(shí)有效地了解各種信息,特開(kāi)發(fā)此“小型圖書(shū)管理系統(tǒng)”。 本系統(tǒng)是由本人在楊成、郗亞輝老師的指導(dǎo)下開(kāi)發(fā)完成的。 讀者基本信息的查詢、修改,包括讀者編號(hào)、讀者姓名、讀者類別、讀者性別、工 作單位、家庭住址、電話號(hào)碼、電子郵件、辦證日期、備注等。 借書(shū)信息的查 詢、修改,包括借書(shū)信息編號(hào)、讀者編號(hào)、讀者姓名、書(shū)籍編號(hào)、書(shū) 籍名稱、借書(shū)日期、備注等。 選用單機(jī)模式,有一臺(tái)奔騰以上的微型計(jì)算機(jī),操作系統(tǒng)選擇 windows 98/2020, 開(kāi)發(fā)工具選擇 ,數(shù)據(jù)庫(kù)管理系統(tǒng)( DBMS)選擇 自帶 Sybase SQL anywhere 。 ? 數(shù)據(jù)庫(kù)設(shè)計(jì) ? 數(shù)據(jù)庫(kù)需求分析 系統(tǒng)的數(shù)據(jù)流程圖如下: 讀者信息登記 基本信息錄入 基本信息 錄入 書(shū)籍 信息登記 借閱 讀者數(shù)據(jù) 書(shū)籍?dāng)?shù)據(jù) 借閱信息 針對(duì)上述圖書(shū)管理工作過(guò)程的內(nèi)容和數(shù)據(jù)流程圖分析,設(shè)計(jì)如下所述的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)。 用戶表信息,包括的數(shù)據(jù)項(xiàng)有:讀者編號(hào) 、讀者姓名、權(quán)限。 。DSN=guoshusheng。 //錯(cuò)誤處理 if 0 then MessageBox (Cannot Connect to Database, ) return end if //打開(kāi)啟動(dòng)窗口 open(w_start) idle(10) 在事件中加入如下腳本: disconnect using sqlca。 //將數(shù)據(jù)庫(kù)中保存的口令和用戶輸入的口令作比較 IF G_PWD=CORRECT_PSWD THEN //輸入正確,打開(kāi)主窗口 OPEN(W_MAIN) //setredraw(false) CLOSE(W_LOGIN_re) ELSE //不正確,在 3 次以內(nèi)可重新輸入,超過(guò) 3 次結(jié)束程序 IF G_INPUT_TIME 3 THEN MESSAGEBOX(警告 ,輸入用戶口令的次數(shù)太多! ) CLOSE(W_LOGIN_re) ELSE MESSAGEBOX(警告 ,輸入的用戶口令有誤,請(qǐng)重新輸入 ) END IF END IF end if if G_right1 then =false end if 修改用戶信息界面如下: 確定按鈕代碼如下: //輸入次數(shù)加 1 G_INPUT_TIME =G_INPUT_TIME+1 //判斷兩次輸入的新口令是否一致 IF THEN IF G_INPUT_TIME 3 THEN MESSAGEBOX(警告 ,輸入的次數(shù)太多! ) CLOSE(W_CHANGE_PASSWORD) ELSE MESSAGEBOX(警告 ,兩次輸入的口令不一致,請(qǐng)重新輸入 ) END IF ELSE //判斷輸入的原口令是否正確 IF G_PWD THEN IF G_INPUT_TIME 3 THEN MESSAGEBOX(警告 ,輸入的次數(shù)太多! ) CLOSE(W_CHANGE_PASSWORD) ELSE MESSAGEBOX(警告 ,輸入的原口令不正確,請(qǐng)重新輸入 ) END IF ELSE //修改數(shù)據(jù)庫(kù)中的該用戶的口令 UPDATE user_info SET user_pwd=: WHERE user_id=:G_USER or username=:G_USER。 //彈出一個(gè)對(duì)話框警告 messagebox(錯(cuò)誤 !!!,數(shù)據(jù)更新失敗 !!!) end if colsequery 事件如下 : integer li_rc // Accept the last data entered into the datawindow () //Check to see if any data has changed IF () 0 THEN li_rc = MessageBox(提示 , amp。 // //彈出一個(gè)對(duì)話框警告 // messagebox(錯(cuò)誤 !!!,數(shù)據(jù)更新失敗 !!!) //end if if update(dw_1,true,false)=1 then //保存修改成功,提交修改 () mit。 YesNoCancel!, 3) //User chose to updata and close window IF li_rc = 1 THEN ( Clicked!) RETURN 0 //User chose to close window without updating ELSEIF li_rc = 2 THEN RETURN 0 //User canceled ELSE RETURN 1 END IF ELSE // No changes to the data, window will just close RETURN 0 END IF 退出: integer li_rc // Accept the last data entered into the datawindow () //Check to see if any data has changed IF () 0 THEN li_rc = MessageBox(提示 , amp。 //彈出一個(gè)對(duì)話框警告 messagebox(錯(cuò)誤 !!!,數(shù)據(jù)更新失敗 !!!) end if closequery 事件如前。 messagebox(提示 !!!,數(shù)據(jù)更新成功 !!!) else //保存修改失敗,取消所作的修改 rollback。 close(w_books) end if end if 修改書(shū)籍界面如下: : 添加: //insert a row in the end of dw_1 g_RowNumber=(0) //dw_1 get the focus () //到當(dāng)前行 (G_RowNumber) //the first column get the focus (1) 刪除: //得到當(dāng)前記錄 G_RowNumber=() //將當(dāng)前記錄中的員工號(hào)取出賦值給全局變量 emp_no deleterow(dw_1,g_rownumber) int a a=MessageBox(提示 ,確實(shí)要?jiǎng)h除嗎 ?,Question!, YesNoCancel!, 3) if a=1 then ( Clicked!) else () end if 保存: if update(dw_1,true,false)=1 then //保存修改成功,提交修改 () mit。 elseif =書(shū)名 then lookforItem1=bookname lookforwhat1=39。 elseif =出版社 then lookforItem1=bookpub lookforwhat1=39。 elseif =是否借出 then lookforItem1=putup lookforwhat1=39。 lookforCondition1=lookforItem1+lookforHow1+lookforwhat1 elseif =登記日期 then lookforItem1=bookindate lookforwhat1= elseif =出版日期 then lookforItem1=bookpubdate lookforwhat1= elseif =價(jià)格 then lookforItem1=price lookforwhat1= end if lookforCondition1=lookforItem1+lookforHow1+lookforwhat1 //定義參數(shù):查詢條件綜合結(jié)果 string LookforCondition2 //定義參數(shù):要查詢的列 string lookforItem2 //定義參數(shù):查詢的符號(hào) string lookforHow2 //定義參數(shù):要查詢的內(nèi)容 string lookforWhat2 string operator1,operator2,operator3 //查詢符號(hào)的選擇 lookforHow2= //查詢子段和查詢內(nèi)容的選擇 if =書(shū)號(hào) then lookforItem2 =bookid lookforwhat2=39。 elseif =種類 then lookforItem2=booktype lookforwhat2=39。 elseif =作者 then lookforItem2=bookauthor lookforwhat2=39。 el