圖書館管理系統(tǒng)的讀者與圖書管理子系統(tǒng)論文正文-無憂無慮畢設(shè)網(wǎng)_第1頁
圖書館管理系統(tǒng)的讀者與圖書管理子系統(tǒng)論文正文-無憂無慮畢設(shè)網(wǎng)_第2頁
圖書館管理系統(tǒng)的讀者與圖書管理子系統(tǒng)論文正文-無憂無慮畢設(shè)網(wǎng)_第3頁
圖書館管理系統(tǒng)的讀者與圖書管理子系統(tǒng)論文正文-無憂無慮畢設(shè)網(wǎng)_第4頁
圖書館管理系統(tǒng)的讀者與圖書管理子系統(tǒng)論文正文-無憂無慮畢設(shè)網(wǎng)_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 本文配套程序下載地址 : 無憂無慮畢設(shè)網(wǎng) ()-大學(xué)生畢業(yè)設(shè)計(jì)站 ,免費(fèi)畢業(yè)設(shè)計(jì)論文 ,無憂無慮畢設(shè)網(wǎng) 大學(xué)生畢業(yè)設(shè)計(jì) ,出售各類畢業(yè)設(shè)計(jì)源碼 ,論文 ,程序源碼 ,網(wǎng)站源碼 ,免費(fèi)視頻教程 ,我們將竭誠為您服務(wù)! 目錄 前言 1 第一章 需求分析 2 1.1 需求概述 .2 1.2 需求分析及功能模塊分析 .2 1.2.1 各模塊功能 .3 1.2.2 系統(tǒng)流程圖 . .3 1.2.3 圖書查詢流程 .4 1.3 系統(tǒng) E-R 圖 .5 1.4 數(shù)據(jù)字典 .7 第二章 數(shù)據(jù)庫的建立 .8 2.1 后臺數(shù)據(jù)庫設(shè)計(jì) . .8 2.2 數(shù)據(jù)庫的建立 .8 第三章 前臺軟件設(shè)計(jì) .12 3.1 軟件的界面設(shè)計(jì) .12 3.2 登陸窗體的設(shè)計(jì) .13 3.3 主窗體界面設(shè)計(jì) .16 3.4 新用戶添加模塊 .19 3.5 新書添加模塊 .21 3.6 還書模塊 .22 3.7 讀者檔案管理模塊 .24 3.8 逾期清單 . .25 第四章 調(diào)試及測試分析 .26 4.1 軟 件測試概述 .26 4.2 軟件測試的目的 .26 4.3 軟件測試的方法 .26 第五章 結(jié)論 . .28 參考文獻(xiàn) .29 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 1 致謝 . .30 附錄 A.31 前 言 現(xiàn)在,科學(xué)技術(shù)的飛速發(fā)展把人類社會推向了一個(gè)嶄新的時(shí)代 計(jì)算機(jī)網(wǎng)絡(luò) 時(shí)代。這已是無可爭議的事實(shí); 計(jì)算機(jī)網(wǎng)絡(luò) 對社會經(jīng)濟(jì)發(fā)展的巨大推動(dòng)作用,使其與物質(zhì)能源一起并列為現(xiàn)代社會的三大支柱,這已在全社會達(dá)到共識。隨著對 計(jì)算機(jī) 作為一種資源來管理 的需求日益加強(qiáng), 計(jì)算機(jī) 研究領(lǐng)域出現(xiàn)了一種新的管理思想和模式 計(jì)算機(jī)信息 管理。 隨著科學(xué)技術(shù)的不斷提高 ,計(jì)算機(jī)科學(xué)日漸成熟 ,其強(qiáng)大的功能已為人們深刻認(rèn)識 ,它已進(jìn)入人類社會的各個(gè)領(lǐng)域并發(fā)揮著越來越重要的作用 。傳統(tǒng) 的管理已經(jīng)不能適應(yīng)時(shí)代的發(fā)展,尤其是它浪費(fèi)了大量的人力和物力,在信息時(shí)代這種傳統(tǒng)的管理方法必然被計(jì)算機(jī)為基礎(chǔ)的 圖書 管理 系統(tǒng) 所取代。為了注重時(shí)間和效率 ,實(shí)現(xiàn)自動(dòng)化 , 我們的圖書館應(yīng)該開發(fā)一個(gè)圖書管理系統(tǒng) 的讀者與圖書管理子系統(tǒng) 。 作為數(shù)據(jù)庫系統(tǒng)的開發(fā), c+ builder 6 是一個(gè)非常理想 的 選擇。 c+ builder 6 因簡單易學(xué)、功能強(qiáng)大、編譯速度快而從眾多的軟件開發(fā)工具中脫穎而出。它提供了靈活的可視化設(shè)計(jì)工具,將可視化界面與面向?qū)ο蠹夹g(shù)完善、緊密地結(jié)合起來,并封裝了 Windows 編程的復(fù)雜性。程序的規(guī)模小到簡單的個(gè)人數(shù)據(jù)庫應(yīng)用,大到復(fù)雜的 高校 的多層次分布式系統(tǒng),都可以使用 c+ builder 6 進(jìn)行開發(fā),其友好的集成開發(fā)界面,可視化的雙向開發(fā)模式,良好的數(shù)據(jù)庫應(yīng)用支持高效的程序開發(fā)和程序運(yùn)行,備受廣大程序開發(fā)人員的好評。尤其是 c+ builder 6 對數(shù)據(jù)庫應(yīng)用的強(qiáng)大支持,大大提高了 數(shù)據(jù)庫應(yīng)用軟件開發(fā)的效率,縮短了開發(fā)周期,深受廣大數(shù)據(jù)庫應(yīng)用程序設(shè)計(jì)人員的喜愛。 c+ builder 6 為數(shù)據(jù)庫應(yīng)用開發(fā)人員提供了豐富的數(shù)據(jù)庫開發(fā)組件,使數(shù)據(jù)庫應(yīng)用開發(fā)功能更強(qiáng)大,控制更靈活,編譯后的程序運(yùn)行速度更快。 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 2 第一章 需求分析 1.1 需求概述 圖書數(shù)據(jù)的組織圖書管理系統(tǒng)的需求主要體現(xiàn)在以下幾個(gè)方面: (1) 改善圖書各子庫之間圖書數(shù)據(jù)的組織方式,滿足學(xué)生對圖書數(shù)據(jù)的不同查詢處理和信息資源共享的需求,使圖書各子庫之間實(shí)現(xiàn)更好的分工。 (2) 提高圖書各子庫自動(dòng)化水平、提 高工作效率、減少勞動(dòng)強(qiáng)度、提高圖書館管理機(jī)制、能更好地管理圖書、能更好地為學(xué)生服務(wù)。 (3) 系統(tǒng)的建立應(yīng)本著先進(jìn)的管理技術(shù),實(shí)用性強(qiáng),除了能方便地實(shí)現(xiàn)增加、查詢、匯總、打印等功能外,更要求系統(tǒng)的穩(wěn)定、可靠、高效及可維護(hù),最終實(shí)現(xiàn)更好地組織數(shù)據(jù)、滿足學(xué)生需求。 1.2 需求分析及功能模塊分析 圖書管理系統(tǒng)的讀者與圖書管理子系統(tǒng)主要有讀者類型設(shè)置、讀者檔案管理、過期續(xù)證管理、圖書類型設(shè)置、圖書征訂、圖書驗(yàn)收這六大功能模塊 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 3 圖 1.1 圖書管理系統(tǒng)功能模塊框圖 1.2.1 各功能模塊功能 讀者類型設(shè)置 -對借閱圖書的用戶,如學(xué)生、教師等進(jìn)行分類管理。 讀者檔案管理 -對讀者的資料進(jìn)行錄入、查詢以及維護(hù)。 過期續(xù)證管理 -對用戶借閱過期的圖書進(jìn)行續(xù)證管理。 圖書類型設(shè)置 -對圖書的種類資料進(jìn)行添加、修改、刪除等操作。 圖書征訂 -對圖書購入的流通去向進(jìn)行登記跟蹤。 圖書驗(yàn)收 -對借閱用戶的歸還的時(shí)間和日期進(jìn)行登記注冊 1.2.2 系統(tǒng)流程圖 圖書管理系統(tǒng)的流程圖所示。 圖書管理系統(tǒng) 讀者管理子系統(tǒng) 圖書管理子系統(tǒng) 讀者類別設(shè)置 讀者檔案設(shè)置 圖書管理 流通管理 圖書類別設(shè)置 圖書檔案管理 圖 書 征 訂 圖 書 歸 還 逾 期 清 單 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 4 圖 1.2.1 圖書管理系統(tǒng)流程圖 1.2.3 圖書查詢流程 如圖所示: 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 5 圖 1.2.2 圖書查詢流程圖 1.3 系統(tǒng) E-R 圖 1.3.1 讀者實(shí)體 E-R 圖 讀者 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 6 圖 1.3.1 讀者實(shí)體 E-R 圖 1.3.2 圖書實(shí)體 E-R 圖 圖 1.3.2 圖書實(shí)體 E-R 圖 1.3.3 圖書管理子系統(tǒng) 初步 E-R 圖: 圖書 書 號 書 名 作 者 藏 處 書 價(jià) 出版社 出版日期 版次 類別 狀態(tài) 名字 系別 標(biāo)志 年齡 性別 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 7 n 1 n 1 借書日期 1 還書日期 1 圖 1.3.3 圖書管理子系統(tǒng) E-R 圖 1.3.4 總體 E-R 圖 圖 1.3.4 總體的 E-R 圖 1.4 數(shù)據(jù)字典 書刊管理子系統(tǒng) 用戶 圖書 借閱 1 n 用戶 圖書 1 n 還書 合法用戶 圖書 借閱 注冊 歸還 讀者 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 8 字段中文名稱 字段名 類型 長度 說明 編號 BOOK_NO C 16 全館書刊的統(tǒng)一編號,可作為識別標(biāo)志 書名 BOOK_NAME C 50 書刊名稱 作者 WRI_NAME C 10 作者的姓名 出版社 PUB_HOUSE C 50 出版社的名稱 出版日期 PUB_DATE D 本版的出版日期 版次 PUB_TIMES I 4 類別 BOOK_VAR C 20 按本館圖書的分類方法分類 借閱者 REA_NO C 8 讀者的標(biāo)志號 庫存地點(diǎn) SAVE_PLACE I 16 讀者管理子系統(tǒng) 讀者信息字典 字段中文名稱 字段名 類型 長度 說明 姓名 NAME C 8 讀者姓名 ID REA_NO C 8 讀者 ID 號 性別 SEX C 2 年齡 AGE I 2 系別 DEPART C 20 讀者所屬系別 借閱信息字典 字段中文名稱 字段名 類型 長度 說明 ID REA_NO C 8 讀者 ID 號 借書本數(shù) Book_num I 8 借書總冊數(shù) 借書信息 書 編號 Book_no C 16 書的編號 借書日期 BOOK_DATE C 16 第二章 數(shù)據(jù)庫的建立 2.1、后臺數(shù)據(jù)庫設(shè)計(jì) 后臺數(shù)據(jù)庫設(shè)計(jì)是軟件開發(fā)比較重要的一部分,它直接影響了軟件界面的設(shè)南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 9 計(jì)。所以,后臺數(shù)據(jù)庫的合理搭建能夠幫助我們更輕松的進(jìn)行軟件設(shè)計(jì) 2.2 數(shù)據(jù)庫的建立 數(shù)據(jù)庫建表 圖 2.1 數(shù)據(jù)庫根目錄 為圖書管理信息數(shù)據(jù)庫建立 3 張基本表,它們分別是用戶表、圖書表、借閱表。 圖 2.2 數(shù)據(jù)庫表 用戶表的字段設(shè)計(jì): 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 10 圖 2.3 數(shù)據(jù)庫用戶表 (其中用戶編號字段做為用戶標(biāo)識) 圖書表的字段設(shè)計(jì) : 圖 2.4 數(shù)據(jù)庫圖書表 借閱表的字段設(shè)計(jì): 圖 2.5 數(shù)據(jù)庫借閱表 為了達(dá)到數(shù)據(jù)庫的基本要求(數(shù)據(jù)完整性),對用戶表的性別進(jìn)行 CEHCKIN約束,對用戶表、圖書表和借閱表的主鍵進(jìn)行外鍵約束。 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 11 圖 2.6 用戶表 CEHCKIN 約束 圖 2.7 借閱與圖書外鍵約束 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 12 圖 2.8 借閱與用戶外鍵約束 第三章 前臺軟件設(shè)計(jì) 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 13 3.1 軟件的界面設(shè)計(jì) 軟件的模塊較多,界面設(shè)計(jì)基本沒有用到別的軟件,采用 C+Builder 自主的控件組合設(shè)置完成,有些圖片采用 XP 自帶的畫圖軟件制作。 主界面示例: 圖 3.1 圖書管理系統(tǒng)主窗體 第四章 軟件 單元模塊設(shè)計(jì) 4.1、 登陸模塊 圖 3.1 圖書管理系統(tǒng)的主窗體 3.2 登陸窗體的 設(shè)計(jì) 登陸界面設(shè)計(jì): 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 14 圖 3.2 登陸界面 控件設(shè)計(jì)及部分代碼: 登陸界面由 3 個(gè) Label 控件、 1 個(gè) ADOQuery 控件、 2 個(gè) Edit 控件、2 個(gè) BitButton 控件組成。 Label 用做標(biāo)識,提示用戶如何使用軟件; Image 控件為了使軟件界面更加友好; ADOQuery 控件作為連接數(shù)據(jù)庫的紐帶; Edit 控件的作用是接收用戶輸入; BitButton 控件的作用是登陸和離開系統(tǒng)。 ADOQuery 控件不需要寫代碼,因?yàn)榈顷懡缑嬷皇菫榱藦臄?shù)據(jù)庫中檢查輸入帳號的 信息, Borland 已經(jīng)集成了這些功能,修改 ADO Query 的屬性ConnectinString 為 Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=圖書管理信息數(shù)據(jù)庫 ;Data Source=.: 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 15 圖 3.3 ADOQuery 設(shè)置圖 和 SQL 屬性為: 圖 3.4 SQL 屬性 完成從數(shù)據(jù)庫的用戶表檢索登陸的信息。 登陸界面的主要代碼集中在 ”登陸 ”按鈕上,下面是“登陸”按鈕的核心代碼: if (!ADOQuery1-Active) ADOQuery1-Active = true;/如果 ADOQuery 沒有啟用,啟用它 if (uid = | pwd = ) ShowMessage(請輸入正確的用戶名和密碼 !); /輸入的用戶名和密碼不能為空 else ADOQuery1-First();/將 ADOQuery 的記錄指針移動(dòng)帶表頭 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 16 for (;iRecordCount;i+)/循環(huán) if (uid=ADOQuery1-FieldByName(帳號 )-AsString) /如果輸入帳號等于數(shù)據(jù)庫帳號 if(ADOQuery1-FieldByName(密碼 )-AsString=pwd) /輸入密碼等于數(shù)據(jù)庫密碼 3.3 主窗體模 塊界面設(shè)計(jì): 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 17 圖 3.5 主窗體模塊界面圖 主窗體主要由 1 個(gè) Menu 控件、 1 個(gè) Label 控件、 1 個(gè) ADOQuery 控件、 1 個(gè)DataSource 控件、 1 個(gè) DBGrid 控件和 1 個(gè) DBNavigate 控件組成。 Menu 控件用于菜單的設(shè)計(jì)、 ADOQuery 控件連接數(shù)據(jù)庫、 Label 控件用來顯示登陸角色、 DataSource 控件作為數(shù)據(jù)源池、 DBGrid 用來顯示數(shù)據(jù)源中數(shù)據(jù)、DBNavigate 對 DBGrid 進(jìn)行一些基本操作。 菜單的設(shè)計(jì)如圖: 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 18 圖 3.6 菜單設(shè)計(jì)圖 數(shù)據(jù)的連接和顯示: 將 ADOQuery1 的 ConnectionString 屬 性 改 為 :“ Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=圖書管理信息數(shù)據(jù)庫 ;Data Source=.”連接上后臺數(shù)據(jù)庫,然后將 DataSource 的 DataSet 屬性選擇為 ADOQuery1,把 DBGrid 的DataSource 改 為 DataSource1 , 同 樣 把 DBNavigater 的 DataSource 改為DataSource1。這樣數(shù)據(jù)庫和軟件關(guān)聯(lián)上了。 主窗體的部分代碼: 為了在主窗體顯示時(shí)讓用戶看不見 DBGrid 等控件,并且對登陸的用戶角色有所表示,在 Form2(主窗體 )的 OnShow 中做了一些初始化,其代碼詳見程序清單。 剩下的代碼都是對 Menu 的操作,點(diǎn)擊按鈕后打開新窗口或執(zhí)行查詢功能,(代碼比較多,可以參看圖 2-13 可以知道下面的代碼段是哪個(gè)菜單的響應(yīng)) 代碼很多地方都使用到了另外的窗體,所以應(yīng)該在 Form2 的源文件加上頭文件。 其中的和主窗體連接的各個(gè)子窗體的代碼大致相同,主要集中在下面的核心代碼南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 19 上: ADOQuery1-Close(); ADOQuery1-SQL-Clear(); ADOQuery1-SQL-Add(select 用戶 .帳號 ,用戶 .用戶名 ,借閱 .借閱書號 ,圖書 .書名 ,借閱日期 ,應(yīng)還日期 from 用戶 ,圖書 ,借閱 where 帳號 = + m_id + and 借閱 .帳 號 = 用戶 .帳號 and 圖書 .書號 = 借閱 .借閱書號 ); /這是一句 SQL 代碼 由于 Form2 是登陸窗體和其他窗體的紐帶,經(jīng)常要引用到其他的單元、窗體,所以,用到什么窗體就包含該窗體的頭文件。 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 20 3.4 新用戶添加模塊 新用戶添加模塊界面設(shè)計(jì): 圖 3.7 新用戶添加模塊界面 新用戶添加由一些 Label 控件和 Edit 控件組成 ,作為接收用戶輸入, ”*”號其實(shí)也是 Label 控件,為了數(shù)據(jù)的校驗(yàn),性別和數(shù)據(jù)庫權(quán)限是 ComboBox 控件,由于在數(shù)據(jù)庫中約束 性別為男或女,所以這里將起下拉列表改為這兩項(xiàng),數(shù)據(jù)庫權(quán)限改為普通和管理員兩種。 ADOQuery1 控件的設(shè)置與前面的設(shè)置相同, 2 個(gè) BitButton 控件的 Caption屬性修改如圖示。 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 21 此模塊的代碼基本在提交新用戶按鈕中實(shí)現(xiàn),其核心代碼代碼如下:DOQuery1-SQL-Add(insert into 用戶 values(+Edit1-Text+,+Edit3-Text+,+Edit2-Text+,+ComboBox1-Text+,+Edit4-Text+,+Edit5-Text+,+Edit6-Text+,+Edit7-Text+,+ComboBox2-Text+); /這是一句 SQL 代碼,將起添加進(jìn) ADO if (ADOQuery1-ExecSQL()/如果代碼執(zhí)行成功 ShowMessage(您已經(jīng)成功的注冊為用戶 );/顯示注冊成功 ADOQuery1-Close();/關(guān)閉 ADO 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 22 3.5 新書添加模塊 新書添加模塊界面設(shè)計(jì): 圖 3.8 新書添加模塊界面 新書入庫模塊由一些 Label 控件和 Edit 控件所組成,大致的方法和屬性和新用戶模塊基本相同。為了方便用戶,用戶在對 ComboBox1 進(jìn)行類別選擇后,書號邊的 Edit6 控件前會自動(dòng)為書號修改前綴,實(shí)現(xiàn)代碼如下: ADO 控件也是一樣連接到數(shù)據(jù)庫,只是 BitButton 的 Caption 屬性有所變化。 代碼也基本集中在提交新書按鈕上,代碼如下: 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 23 ADOQuery1-SQL-Add(select * from 圖書 ); if(ADOQuery1-FieldByName( 書號)-AsString!=(Label8-Caption+Edit6-Text) ADOQuery1-SQL-Add(insert into 圖書 values(+Label8-Caption+Edit6-Text+,+Edit1-Text+,+Edit2-Text+,+ComboBox1-Text+,+Edit4-Text+,:a);/一句 SQL 代碼,添加圖書用的,參數(shù)a 的值在后面給 ADOQuery1-Parameters-ParamByName(a)-Value = Edit5-Text;/給a 賦值 3.6 還書模塊 還書模塊的界面設(shè)計(jì) : 圖 3.9 還書模塊的界面 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 24 還書模塊由 1 個(gè) Image 控件 ,2 個(gè) Label 控件 ,4 個(gè) BitButton 控件 ,2DataSource 控件 ,3 個(gè) ADOQuery 控件 ,2 個(gè) DBGrid 控件 。 DataSource 控件用來和 ADOQuery1 和 ADOQuery2 連接 ,分別做為檢索帳號和書號用,而 ADOQuery3 用來實(shí)現(xiàn)借閱功能。兩個(gè) DBGrid 控件分別與DataSource1 和 DataSource2 連接,顯示檢索信息,這與借書模塊基本相同。 還書模塊主要體現(xiàn)在倆個(gè)檢索按鈕和還書按鈕上, 其中帳號檢索的核心代碼如下: ADOQuery1-SQL-Add(select 用戶名 ,數(shù)據(jù)庫身份 as 權(quán)限 from 用戶 where 帳號 = +Edit1-Text+) 檢索書號的代碼和賬號檢索的大致相似: ADOQuery2-SQL-Add(select 書號 ,書名 ,出版社 from 圖書 where 書號 = +Edit2-Text+); 還書按鈕代碼相對復(fù)雜: ADOQuery1-SQL-Add(select 用戶名 ,數(shù)據(jù)庫身份 as 權(quán)限 from 用戶 where 帳號 = +Edit1-Text+); ADOQuery2-SQL-Add(select 書號 ,書名 ,出版社 from 圖書 where 書號 = +Edit2-Text+); ADOQuery3-SQL-Add(select * from 借閱 where 帳號 = :a and 借閱書號 = :b); ADOQuery3-SQL-Add(delete from 借閱 where 帳號 = :a and 借閱書號 = :b);/刪除借閱的信息 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 25 3.7 讀者檔案管理模塊 讀者檔案管理模塊設(shè)計(jì): 圖 3.10 讀者檔案管理界面 讀者檔案管理模塊是由一些 Edit、 BitButton、 label,2 個(gè) DataSource 控件、 1個(gè) DBGrid、 4 個(gè) ComboBox 等一些控件組成 . 其中 DataSource1、 DataSource2 分別在其 DateSet 中與 Table1、 Table1 進(jìn)行連接。 在 DBGrid 的事件欄里與 DataSource1 連接。 讀者檔案管理模塊的主要代碼集中于幾個(gè)日期的控件上,其中由以出生日期為代表,其核心代碼如下: if(EditDBEdit7-Text.Length()=0) dtPickerBirthday-Date = dtPickerBirthday-Date.CurrentDate(); 其余如登記日期、有限日期等與出生日期的核心代碼大致相似,在此不贅述詳見程序清單。 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 26 3.8 逾期清單模塊 逾期清單模塊設(shè)計(jì): 圖 3.11 逾期清單界面 逾期清單模塊是由一些 Label、 Edit、 Table,另外還有 DBGrid、 BitButton、Datasource 控件組成。 其中在 Datasource 控件的 Dataset 屬性欄里和 Table1 關(guān)聯(lián)起來。 逾期清單的主要代碼集中在搜索按鍵上,其核心代碼如下: if(szFilter.Length()0) szFilter += and ; szFilter += m_szFilter; 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 27 第四章 調(diào)試及測試分析 4.1 軟件測試概述 軟件測試是在軟件交付用戶使用或投入運(yùn)行前 ,對軟件需求規(guī)格說明、設(shè)計(jì) 規(guī)格說明和編碼的最終復(fù)審,是軟件質(zhì)量保證的關(guān)鍵步驟。軟件測試是為了發(fā)現(xiàn) 錯(cuò)誤而執(zhí)行程序的過程。軟件測試在軟件生命周期中橫跨兩個(gè)階段 :通常在編寫 出每一個(gè)模塊之后就需要對它做必要的測試 (稱為單元測試 )。編碼和單元測試屬 于軟件生命周期中的同一個(gè)階段。在結(jié)束這個(gè)階段后對軟件系統(tǒng)還要進(jìn)行各種綜 合測試,如集成測試、系統(tǒng)測試、性能測試和配置測試等,這是軟件生命周期的 另一個(gè)獨(dú)立階段,即測試階段。 4.2 軟件測試的目的 1. 測試的最終目的是為了避免錯(cuò)誤的發(fā)生,確保應(yīng)用程序能夠正常高效 的運(yùn) 2. 好的測試用例在于發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯(cuò)誤 ; 3. 成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測試 ; 4. 好的測試工程師應(yīng)該做到不僅發(fā)現(xiàn)問題,還能夠幫助開發(fā)人員分析問題。 4.3 軟件測試的方法 黑盒測試也稱功能測試或數(shù)據(jù)驅(qū)動(dòng)測試,它是在已知產(chǎn)品所應(yīng)具有的功能, 通過測試來檢測每個(gè)功能是否都能正常使用,在測試時(shí),把程序看作一個(gè)不能打 開的黑盒子,在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下,測試者在程序接 口進(jìn)行測試,它只檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用,程序 電子科技大學(xué)碩士學(xué)位論文 是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)而產(chǎn)生正確的輸出信息,并且保持外部信息 (如數(shù)據(jù)庫或文件 )的完整性。黑盒測試方法主要有等價(jià)類劃分、邊值分析、因一果圖、錯(cuò)誤推測等,主要用于軟件確認(rèn)測試?!昂诤小狈ㄖ喜娇沾髮W(xué)科技學(xué)院學(xué)士學(xué)位論文 28 眼于程序外部結(jié)構(gòu)、不考慮內(nèi)部邏輯結(jié)構(gòu)、針對軟件界面和軟件功能進(jìn)行測試?!昂诤小狈ㄊ歉F舉輸入測試,只有把所有可能的輸入都作為測試情況使用,才能以這種方法查出程序中所有的錯(cuò)誤。實(shí)際上測試情況有無窮多個(gè),人們不僅要測試所有合法的輸入,而且還要對那些不合法但是可能的輸入進(jìn)行測試。白盒測試也稱結(jié)構(gòu)測試或邏輯驅(qū)動(dòng)測試,它是知道產(chǎn)品內(nèi)部工 作過程,可通過測試來檢測產(chǎn)品內(nèi)部動(dòng)作是否按照規(guī)格說明書的規(guī)定正常進(jìn)行,按照程序內(nèi)部的結(jié)構(gòu)測試程序,檢驗(yàn)程序中的每條通路是否都有能按預(yù)定要求正確工作,而不顧它的功能, 白盒測試的主要方法有邏輯驅(qū)動(dòng)、基路測試等,主要用于軟件驗(yàn)證 “白盒”法全面了解程序內(nèi)部邏輯結(jié)構(gòu)、對所有邏輯路徑進(jìn)行測試。“白盒” 法是窮舉路徑測試。在使用這一方案時(shí),測試者必須檢查程序的內(nèi)部結(jié)構(gòu),從檢 查程序的邏輯著手,得出測試數(shù)據(jù)。貫穿程序的獨(dú)立路徑數(shù)是天文數(shù)字。但即使 每條路徑都測試了仍然可能有錯(cuò)誤。第一,窮舉路徑測試決不能查出程序 違反了 設(shè)計(jì)規(guī)范,即程序本身是個(gè)錯(cuò)誤的程序。第二,窮舉路徑測試不可能查出程序中 因遺漏路徑而出錯(cuò)。第三,窮舉路徑測試可能發(fā)現(xiàn)不了一些與數(shù)據(jù)相關(guān)的錯(cuò)誤。 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 29 第五章 結(jié)論 在方芳老師的指導(dǎo)下。本次設(shè)計(jì),就要畫上一個(gè)句號了??墒牵瑢ξ襾碚f, 這次設(shè)計(jì)的本身所產(chǎn)生的影響,還遠(yuǎn)遠(yuǎn)沒有結(jié)束,我從本次設(shè)計(jì)中學(xué)到了許多課 本上沒有的知識。在這幾個(gè)月中。通過自己的學(xué)習(xí)和努力 :通過各位老師的指導(dǎo) 和教育,使我不僅僅在知識水平和解決實(shí)際問題的能力上有了很大的提高。還從 思想的深處體 會到,要把自己的所學(xué)變成現(xiàn)實(shí)時(shí)所將面對的種種難題。 通過本次課程設(shè)計(jì),本人對 C+Builder 有了更進(jìn)一步的了解。通過了本次的設(shè)計(jì),我們能夠更加熟悉的運(yùn)用 C+Builder,對于我們了解和研究軟件開 發(fā)有了很大的幫助,為我們以后的學(xué)習(xí)打下了較好的基礎(chǔ)。但是由于水平的限制使本系統(tǒng)有一定缺陷,功能不強(qiáng),在本次課程設(shè)計(jì)中也出現(xiàn)不少的問題。由于對C+Builder 的實(shí)際操作還不是很熟悉,因此在設(shè)計(jì)過程中有些地方我們?nèi)匀贿€不是很明確。還有另外一個(gè)較麻煩的問題就是數(shù)據(jù)庫與程序文件的加殼和安全問題。 總的來說,本次 的課程設(shè)計(jì)還算成功。盡管有些小細(xì)節(jié)不能很好的運(yùn)行但是 設(shè)計(jì)的大方向是正確的,我們編寫程序的思想還算比較清晰,這對于我們以后的 系統(tǒng)設(shè)計(jì)中有很大的幫助。在此,我們再次對方芳老師表示衷心的感謝 !也對 培養(yǎng)我們的南昌航空大學(xué)表示最忠心的謝意 ! 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 30 參考文獻(xiàn) 1. 宋靜 . 學(xué)生信息管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) J. 計(jì)算機(jī)與數(shù) 字工程 ,2008( 8) 2.陸衛(wèi)忠、劉文亮 ,C+ Builder6 程序設(shè)計(jì)教程 M,北京 :科學(xué)出版社 ,2005 3.侯識忠 ,數(shù)據(jù)結(jié)構(gòu)算法 C+ Builder6.0 程序集 M,北京 :中國水利水電出版 4.李進(jìn) .軟件工程導(dǎo)論 M, 北京 :清華大學(xué)出版社, 1998.1 5.郭盈發(fā) ,張紅娟 .數(shù)據(jù)庫原理 M.西安 :西安電子科技大學(xué) ,2002 6. 美 O Neil, P. DATABASE Principles Programming and Performance . ( second edition1) M北京 : 高等教育出版社 , 2001 7.陳禹 .管理信息系統(tǒng) M.北京 :中國人民大學(xué)出版社 , 1998 8. 袁永林、寧義 .數(shù)據(jù)庫管理與開發(fā) M.北京 :清華大學(xué)出版社 2007 9. 苗雪蘭 .數(shù)據(jù)庫系統(tǒng)原理及應(yīng)用教程 J.機(jī)械工業(yè)出版社 ,2007 年 10. 美 Mcleod . Management Information SystemM.北京 :中國人民大學(xué)出版社, 1998 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 31 致謝 經(jīng)過幾個(gè)月的 構(gòu)思與設(shè)計(jì),在指導(dǎo)老師方老師的精心指導(dǎo)和安排下,本系統(tǒng) 已經(jīng)設(shè)計(jì)完畢。其使用功能基本符合在實(shí)際工作的需要,具有一定的實(shí)用性。但 是由于時(shí)間比較倉促,加上本人軟件設(shè)計(jì)經(jīng)驗(yàn)的不足。因此,在分析問題、解決 問題時(shí)顯得不夠嚴(yán)密、完善,還需要在以后的工作中不斷地改進(jìn)和完善。 在這次的設(shè)計(jì)過程中,讓我深深地體現(xiàn)到進(jìn)行軟件開發(fā)不是一件簡單的事情, 它需要設(shè)計(jì)者具有全面的專業(yè)知識、填密的思維、嚴(yán)謹(jǐn)?shù)墓ぷ鲬B(tài)度以及較高的分 析問題、解決問題的能力,而我在很多方面還有欠缺。最后,我要衷心感謝老師 在我的設(shè)計(jì)過程中給予我的極大幫助 ,使我能夠及時(shí)、順利地完成此次的畢業(yè)設(shè) 計(jì)。同時(shí),也要感謝我的指導(dǎo)老師方老師在本系統(tǒng)的設(shè)計(jì)過程中給予我的無微不 至的支持和幫助。 最后,感謝南昌航空大學(xué)、感謝科技學(xué)院對我的培養(yǎng),讓我圓滿完成研究 生學(xué)業(yè),謝謝 ! 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 32 附錄 A 程序清單 void _fastcall TForm1:BitBtn2Click(TObject *Sender) Form1-Close();/關(guān)閉登陸窗口 登陸界面的主要代碼集中在 ”登陸 ”按鈕上: void _fastcall TForm1:BitBtn1Click(TObject *Sender) try String uid,pwd;/定義了 2 個(gè)字符串變量用做接收用戶輸入信息 BOOL m_logon=false;/定義一個(gè)布爾變量判斷是否允許登陸 int i=1;/做后面的循環(huán)判斷用 uid = Edit1-Text;/提取用戶帳號存入 uid 變量 pwd = Edit2-Text;/提取用戶密碼存入 pwd 變量 if (!ADOQuery1-Active) ADOQuery1-Active = true;/如果 ADOQuery 沒有啟用,啟用它 if (uid = | pwd = ) ShowMessage(請輸入正確的用戶名和密碼 !); /輸入的用戶名和密碼不能為空 else ADOQuery1-First();/將 ADOQuery 的記錄指針移動(dòng)帶表頭 for (;iRecordCount;i+)/循環(huán) if (uid=ADOQuery1-FieldByName(帳號 )-AsString) /如果輸入帳號等于數(shù)據(jù)庫帳號 if(ADOQuery1-FieldByName(密碼 )-AsString=pwd) /輸入密碼等于數(shù)據(jù)庫密碼 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 33 ShowMessage(登陸成功 !);/登陸成功 m_logon = true;/置允許登陸為 真 m_name = ADOQuery1-FieldByName(用戶名 )-AsString; m_grand = ADOQuery1-FieldByName( 數(shù)據(jù)庫身份)-AsString; m_id = ADOQuery1-FieldByName(帳號 )-AsString; /上面的 3 個(gè) m_變量是全局變量,獲取當(dāng)前登陸的用戶帳號,用戶名 /和數(shù)據(jù)庫權(quán)限 break;/如果驗(yàn)證帳號成功就退出循環(huán) else ShowMessage(密碼錯(cuò)誤 !);/密碼錯(cuò)誤 break;/退出循環(huán) else ADOQuery1-Next();/帳號不匹配就將記錄指針 +1,再判斷 if(i=ADOQuery1-RecordCount) ShowMessage(帳號或密碼錯(cuò)誤 !); /如果全查完了還沒有匹配記錄,則帳號錯(cuò)誤 if (m_logon = true)/如果允許登陸 ADOQuery1-Close();/節(jié)省資源關(guān)閉 ADO Form2-Show();/顯示軟件主窗體 Form1-Hide();/隱藏登陸窗體 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 34 catch(Exception &e)/接收錯(cuò)誤 ShowMessage(e.Message);/顯示錯(cuò)誤信息 / 下面的是全局變量的定義,全局變量必須在在登陸窗口的 H 頭文件和 CPP 中都定義才能使用,使用時(shí)只需要包含定義全局變量的窗體頭文件就可以了: 頭文件代碼: #include #include #include /- class TForm1 : public TForm 。 /省略了部分代碼 /- extern PACKAGE TForm1 *Form1; extern AnsiString m_name,m_grand,m_id;/定義全局變量的地方 /- #endif 源文件定義: /- #include 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 35 #pragma hdrstop #include Unit1.h #include Unit2.h/由于要使用主窗體 Form2,所以包含其頭文件 /- #pragma package(smart_init) #pragma resource *.dfm TForm1 *Form1; AnsiString m_name,m_grand,m_id;/定義全局變量 /- /后面是實(shí)現(xiàn)代碼,省略。 void _fastcall TForm2:FormShow(TObject *Sender) if (m_grand = 管理員 )/m_grand 是全局變量在 unit1.h 中定義 ShowMessage(您將以管理員身份登陸本系統(tǒng),您沒有權(quán)限限制,請小心使用 ); /顯示用戶登陸身份 Form2-N7-Enabled = true;/讓 N7 菜單有效 Form2-N2-Enabled = true; Form2-N4-Enabled = true; /以上都去掉對菜單的限制,達(dá)到權(quán)限無限制 else ShowMessage(您將以會員身份登陸本系統(tǒng),您有權(quán)限制,無法進(jìn)行圖書,用戶的管理 ); Form2-N7-Enabled = false; Form2-N2-Enabled = false; Form2-N4-Enabled = false; /以上限制了軟件的部分功能,達(dá)到權(quán)限限制 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 36 Label1-Caption = 當(dāng)前登陸帳戶的信息:用戶名 :+m_name+ 權(quán)限 :+m_grand; /動(dòng)態(tài)修改 Label1 的 Caption 屬性 由于 Form2 是主窗體,我們要求登陸后關(guān)閉 Form1 能直接退出程序,于是在 Form2 的 OnClose 響應(yīng)中寫: void _fastcall TForm2:FormClose(TObject *Sender, TCloseAction &Action) Form1-Close(); 剩下的代碼都是對 Menu 的操作,點(diǎn)擊按鈕后打開新窗口或執(zhí)行查詢功能,代碼如下:(代碼比較多,可以參看圖 4-5 可以知道下面的代碼段是哪個(gè)菜單的響應(yīng)) void _fastcall TForm2:N18Click(TObject *Sender) /點(diǎn)擊退出系統(tǒng)菜單時(shí)觸發(fā) Form1-Close();/退出程序 /- void _fastcall TForm2:N16Click(TObject *Sender)/點(diǎn)擊注銷菜單時(shí)觸發(fā) Form1-Edit1-Clear();/清空 Form1 的 Edit1 控件內(nèi)容 Form1-Edit2-Clear();/清空 Form1 的 Edit2 控件內(nèi)容 Form2-N7-Checked = false; Form2-N6-Checked = false; Form2-N11-Checked = false; /把帶復(fù)選標(biāo)記的菜單都初始化 Form2-DBGrid1-Visible = false;/把 DBGrid 變?yōu)椴豢梢?Form2-Hide();/Form2 隱藏 Form1-Show();/Form1 顯示 Form1-Edit1-SetFocus();/Form1 的 Edit1 獲得輸入焦點(diǎn) /- 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 37 void _fastcall TForm2:N4Click(TObject *Sender)/點(diǎn)擊新用戶注冊菜單時(shí)觸發(fā) Form3-ShowModal();/Form3 以模態(tài)對話框方式顯示 /代碼很多地方都使用到了另外的窗體,所以應(yīng)該在 Form2 的源文件加上頭文件包含 /- void _fastcall TForm2:N7Click(TObject *Sender)/點(diǎn)擊讀者檔案管理菜單時(shí)觸發(fā) if(N7-Checked)/如果 N7 已經(jīng)選中 ADOQuery1-Close();/關(guān)閉 ADOQuery1,節(jié)省系統(tǒng)資源 DBGrid1-Visible=false;/關(guān)閉 DBGrid1 顯示 DBNavigator1-Visible = false;/關(guān)閉 DBNavigater1 顯示 N7-Checked = false;/去掉 N7 選擇 else Form2-N7-Checked = false;/ Form2-N6-Checked = false;/ Form2-N11-Checked = false;/ /上面 3 句做一個(gè)初始化工作,讓軟件在同一個(gè)時(shí)間只能有一個(gè)菜單被設(shè)置選擇標(biāo)記 ADOQuery1-Close();/關(guān)閉 ADO ADOQuery1-SQL-Clear();/清空 ADO 的 SQL 代碼 ADOQuery1-SQL-Add(select * from 用戶 );/加如 SQL 代碼 ADOQuery1-Open();/激活 ADO DBGrid1-Visible=true;/顯示 DBGrid1 DBNavigator1-Visible = true;/顯示 DBNavigater1 DBNavigator1-Enabled = true; 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 38 /讓 DBNavigater1 可用,后面有地方需要不可用 DBNavigater1 N7-Checked = true;/設(shè)置 N7 選中 /- void _fastcall TForm2:N8Click(TObject *Sender)/點(diǎn)擊新圖書入庫菜單時(shí)觸發(fā) Form4-ShowModal();/讓 Form4 以模態(tài)對話框方式顯示 /- void _fastcall TForm2:N11Click(TObject *Sender)/點(diǎn)擊圖書檔案管理菜單時(shí)觸發(fā) if(N11-Checked) ADOQuery1-Close(); DBGrid1-Visible=false; DBNavigator1-Visible = false; N11-Checked = false; else Form2-N7-Checked = false; Form2-N6-Checked = false; Form2-N11-Checked = false; ADOQuery1-Close(); ADOQuery1-SQL-Clear(); ADOQuery1-SQL-Add(select * FROM 圖書 ); ADOQuery1-Open(); DBGrid1-Visible=true; DBNavigator1-Visible = true; 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 39 DBNavigator1-Enabled = true; N11-Checked = true; /上面代碼的意思和用戶管理的差不多 /- void _fastcall TForm2:N12Click(TObject *Sender)/點(diǎn)擊圖書借閱菜單時(shí)觸發(fā) Form5-ShowModal();/Form5 以模態(tài)對話框顯示 /- void _fastcall TForm2:N14Click(TObject *Sender)/點(diǎn)擊圖書還書菜單時(shí)觸發(fā) Form6-ShowModal();/Form6 以模態(tài)對話框顯示 /- void _fastcall TForm2:N6Click(TObject *Sender)/點(diǎn)擊查詢當(dāng)前用戶信息菜單時(shí)觸發(fā) if(N6-Checked) ADOQuery1-Close(); DBGrid1-Visible=false; DBNavigator1-Visible = false; N6-Checked = false; else Form2-N7-Checked = false; Form2-N6-Checked = false; Form2-N11-Checked = false; ADOQuery1-Close(); 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 40 ADOQuery1-SQL-Clear(); ADOQuery1-SQL-Add(select 用戶 .帳號 ,用戶 .用戶名 ,借閱 .借閱書號 ,圖書 .書名 ,借閱日期 ,應(yīng)還日期 from 用戶 ,圖書 ,借閱 where 帳號 = + m_id + and 借閱 .帳號 = 用戶 .帳號 and 圖書 .書號 = 借閱 .借閱書號 ); /這是一句 SQL 代碼 ADOQuery1-Open(); DBGrid1-Visible=true; DBNavigator1-Visible = true; DBNavigator1-Enabled = false; N6-Checked = true; /代碼的意思和用戶管理菜單的意思大致相同 /- void _fastcall TForm3:BitBtn1Click(TObject *Sender) try bool m_registEnable = false;/定義 BOOL 變量是否允許注冊 ADOQuery1-Close();/關(guān)閉 ADO ADOQuery1-SQL-Clear();/清空 ADO 的 SQL ADOQuery1-SQL-Add(select * from 用戶 );/設(shè)置 SQL ADOQuery1-Open();/打開 ADO ADOQuery1-First();/將 ADO 記錄移動(dòng)到表頭 if(Edit1-Text = | Edit1-Text.Length()20)/Edit1 不能為空且長度不大于 20 ShowMessage(請輸入正確的帳號 ); else if(Edit2-Text = ) ShowMessage(請輸入您的用戶名 );/Edit2 不能為空 else if(Edit3-Text = ) ShowMessage(請確定密碼 輸入 );/Edit3 不能為空 else if(ComboBox1-Text=) ShowMessage( 請選擇性別);/ComboBox1 不能為空 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 41 else m_registEnable = true;/當(dāng)必填資料全填了,允許注冊 while(m_registEnable & !ADOQuery1-Eof)/允許注冊且沒有指到表尾 if(ADOQuery1-FieldByName(帳號 )-AsString!=Edit1-Text) /當(dāng)當(dāng)前記錄帳號不等于 Edit1 的 Text 內(nèi)容,指針 +1 ADOQuery1-Next(); else ShowMessage(對不起,您的帳號已經(jīng)被注冊了 ); /當(dāng)當(dāng)前帳號等于 Edit1 的內(nèi)容時(shí),顯示已經(jīng)注冊 break;/退出循環(huán) if(ADOQuery1-Eof)/當(dāng)所有記錄都找過了才會指到表尾 ADOQuery1-Close();/關(guān)閉 ADO ADOQuery1-SQL-Clear();/清空 ADO 的 SQL 代碼 ADOQuery1-SQL-Add(insert into 用戶 values(+Edit1-Text+,+Edit3-Text+,+Edit2-Text+,+ComboBox1-Text+,+Edit4-Text+,+Edit5-Text+,+Edit6-Text+,+Edit7-Text+,+ComboBox2-Text+); /這是一句 SQL 代碼,將起添加進(jìn) ADO if (ADOQuery1-ExecSQL()/如果代碼執(zhí)行成功 ShowMessage(您已經(jīng)成功的注冊為 用戶 );/顯示注冊成功 ADOQuery1-Close();/關(guān)閉 ADO catch(Exception &e)/接收異常 ShowMessage(e.Message);/異常處理 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 42 /- void _fastcall TForm3:BitBtn2Click(TObject *Sender) Form3-Close();/關(guān)閉用戶注冊窗體 /- void _fastcall TForm3:FormShow(TObject *Sender) /為了再次開啟注冊窗口時(shí)初始化一些信息 Edit1-Text = ;/Edit1 清空 Edit2-Text = ;/Edit2 清空 Edit3-Text = ;/Edit3 清空 Edit4-Text = ;/Edit4 清空 Edit5-Text = ;/Edit5 清空 Edit6-Text = ;/Edit6 清空 ComboBox1-ItemIndex = -1;/ ComboBox1 不選擇 ComboBox2- ItemIndex = -1; / ComboBox2 不選擇 /- void _fastcall TForm4:ComboBox1Change(TObject *Sender) if(ComboBox1-Text = 計(jì)算機(jī) ) Label8-Caption = CN; else if(ComboBox1-Text = 經(jīng) 濟(jì) ) Label8-Caption = EN; else if(ComboBox1-Text = 考試 ) Label8-Caption = KN; else if(ComboBox1-Text = 學(xué)習(xí) ) Label8-Caption = SN; else if(ComboBox1-Text = 研究生類 ) Label8-Caption = YN; ADO 控件也是一樣連接到數(shù)據(jù)庫,只是 BitButton 的 Caption 屬性有所變化。 代碼也基本集中在提交新書按鈕上,代碼如下: void _fastcall TForm4:BitBtn1Click(TObject *Sender) 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 43 try bool m_bookEnable = false;/定義 BOOL類型變量是否允許加入新書 ADOQuery1-Close(); ADOQuery1-SQL-Clear(); ADOQuery1-SQL-Add(select * from 圖書 ); ADOQuery1-Open(); ADOQuery1-First();/將 ADO 記錄指針移動(dòng)到表首 if(Edit1-Text = | Edit1-Text.Length()20) ShowMessage(請輸入正確的書名 ); else if(Edit5-Text = ) ShowMessage(請輸入書價(jià) ); else if(Edit6-Text = ) ShowMessage(請輸入書號 ); else if(ComboBox1-Text =) ShowMessage(請選擇圖書類別 ); else if(Edit4-Text.Length()20 | Edit5-Text.Length()20 | Edit6-Text.Length()10) ShowMessage(請仔細(xì)輸入信息 ); else m_bookEnable = true;/當(dāng)書的信息全部填寫正確,允許注冊 while(m_bookEnable & !ADOQuery1-Eof) if(ADOQuery1-FieldByName( 書號)-AsString!=(Label8-Caption+Edit6-Text) ADOQuery1-Next(); else ShowMessage(書號重復(fù) 了 ); break; /上面的語句判斷是否有重復(fù)的書號 if(ADOQuery1-Eof)/沒有就執(zhí)行 ADOQuery1-Close(); ADOQuery1-SQL-Clear(); ADOQuery1-SQL-Add(insert into 圖書 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 44 values(+Label8-Caption+Edit6-Text+,+Edit1-Text+,+Edit2-Text+,+ComboBox1-Text+,+Edit4-Text+,:a);/一句 SQL 代碼,添加圖書用的,參數(shù)a 的值在后面給 ADOQuery1-Parameters-ParamByName(a)-Value = Edit5-Text;/給a 賦值 if (ADOQuery1-ExecSQL()/如 果 SQL 執(zhí)行成功就顯示成功對話框 ShowMessage(您已經(jīng)成功的添加新書 ); ADOQuery1-Close();/關(guān)閉 ADO catch(Exception &e) ShowMessage(e.Message);/接收異常 /- void _fastcall TForm4:BitBtn2Click(TObject *Sender) Form4-Close(); /關(guān)閉 Form4 窗體 /- void _fastcall TForm4:FormShow(TObject *Sender)/為 Form4 再次開啟做初始化 Edit1-Text = ; Edit2-Text = ; Edit4-Text = ; Edit5-Text = ; Edit6-Text = ; ComboBox1-ItemIndex = -1; 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 45 /- void _fastcall TForm6:FormShow(TObject *Sender)/這些代碼和借書模塊的意思相同 DBGrid1-Visible = false; DBGrid2-Visible = false; Edit1-Enabled = true; Edit1-Text = ; Edit2-Text = ; if(m_grand = 管理員 ) Edit1-SetFocus(); Edit1-Enabled = true; else Edit1-Text = m_id; Edit1-Enabled = false; Edit2-SetFocus(); 還書模塊的代碼如下: void _fastcall TForm6:BitBtn4Click(TObject *Sender)/取消按鈕的代碼 Form6-Close();/關(guān)閉窗體 /- void _fastcall TForm6:BitBtn1Click(TObject *Sender)/帳號檢索的代碼 /和借書模塊的基本相同 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 46 if (Edit1-Text != ) DBGrid1-Visible = false; ADOQuery1-Close(); ADOQuery1-SQL-Clear(); ADOQuery1-SQL-Add(select 用戶名 ,數(shù)據(jù)庫身份 as 權(quán)限 from 用戶 where 帳號 = +Edit1-Text+); ADOQuery1-Open(); if (ADOQuery1-ExecSQL() DBGrid1-Visible = true; else ShowMessage(錯(cuò)誤的帳號 ); else ShowMessage(請輸入帳號 ); /- void _fastcall TForm6:BitBtn2Click(TObject *Sender)/檢索書號的代碼 /和借書模塊的基本相同 if (Edit2-Text != ) DBGrid2-Visible = false; ADOQuery2-Close(); ADOQuery2-SQL-Clear(); ADOQuery2-SQL-Add(select 書號 ,書名 ,出版社 from 圖書 where 書號 = +Edit2-Text+); ADOQuery2-Open(); if (ADOQuery2-ExecSQL() DBGrid2-Visible = true; 南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文 47 else ShowMessage(錯(cuò)誤的書號 ); else ShowMessage(請輸入書號 ); /- void _fastcall TForm6:BitBtn3Click(TObject *Sender)/還書按鈕代碼 bool m_bool = false;/定義和部分代碼和借書的模塊相同 bool m_boolsame = false; String m_samename; String m_samebook; if (Edit1-Text != ) ADOQuery1-Close(); ADOQuery1-SQL-Clear(); ADOQuery1-SQL-Add(select 用戶名 ,數(shù)據(jù)庫身份 as 權(quán)限 from 用戶 where 帳號 = +Edit1-Text+); ADOQuery1-Open(); if (!ADOQuery1-ExecSQL() ShowMessage(錯(cuò)誤的帳號 ); else if (Edit2-Text != ) ADOQuery2-Close(); ADOQuery2-SQL-Clear(); ADOQuery2-SQL-Add(select 書號 ,書名 ,出版社 from 圖書 where 書號 = +Edit2-Text+); ADOQuery2-Open(); 南昌航空大

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論