C++圖書管理系統(tǒng)

上傳人:仙*** 文檔編號(hào):28603759 上傳時(shí)間:2021-09-02 格式:DOC 頁數(shù):42 大?。?97.53KB
收藏 版權(quán)申訴 舉報(bào) 下載
C++圖書管理系統(tǒng)_第1頁
第1頁 / 共42頁
C++圖書管理系統(tǒng)_第2頁
第2頁 / 共42頁
C++圖書管理系統(tǒng)_第3頁
第3頁 / 共42頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《C++圖書管理系統(tǒng)》由會(huì)員分享,可在線閱讀,更多相關(guān)《C++圖書管理系統(tǒng)(42頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、成都理工大學(xué)工程技術(shù)學(xué)院畢業(yè)論文C+圖書管理系統(tǒng)作者姓名:江孝濤專業(yè)名稱:計(jì)算機(jī)科學(xué)與技術(shù)指導(dǎo)教師:柳 軍 講師C+圖書管理系統(tǒng)摘要本系統(tǒng)采用基于網(wǎng)絡(luò)的C/S模式將軟件分成客戶端(前臺(tái))和服務(wù)器端(后臺(tái))。前臺(tái)與后臺(tái)服務(wù)器進(jìn)行互動(dòng),前臺(tái)通過網(wǎng)絡(luò)向服務(wù)器發(fā)送數(shù)據(jù)請(qǐng)求,并處理服務(wù)器的回應(yīng)數(shù)據(jù),將數(shù)據(jù)直觀的顯示給用戶,前臺(tái)程序主要運(yùn)用的C+ Qt中的界面控件,后臺(tái)主要是接收用戶的請(qǐng)求,做出相應(yīng)的回應(yīng),并進(jìn)行數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)處理,后臺(tái)使用MySQL數(shù)據(jù)庫存儲(chǔ)數(shù)據(jù),需要建立起數(shù)據(jù)一致性和完整性強(qiáng)、數(shù)據(jù)安全性好的庫。本系統(tǒng)能對(duì)圖書實(shí)行分類管理,并能按客戶端登錄用戶實(shí)行三級(jí)權(quán)限管理:讀者、圖書管理員和操作員。

2、本系統(tǒng)分用戶登錄、圖書查詢、借還圖書,系統(tǒng)管理和日志系統(tǒng)等五大功能模塊。其中圖書查詢功能分為模糊查詢、直接查詢、多條件查詢;系統(tǒng)管理則包括讀者管理、圖書分類管理、圖書管理、逾期未還圖書管理、管理員權(quán)限帳戶管理等。其中多條件查詢、模糊查詢,圖書分類管理,同步,實(shí)時(shí)性,多文檔視圖是本系統(tǒng)的難點(diǎn)。關(guān)鍵詞 :多文檔視圖 Qt C+ C/S MySQLAbstractThe system uses the network of based on C / S mode into the software client (front) and server-side (background). Foregr

3、ound and background server interaction, reception through the network to the server to send data requests and processing server response data, the data visually displayed to the user, the foreground program main use of C+ Qt in the interface controls, background is mainly to receive the users reques

4、t make the appropriate response, and for data storage and processing, using MySQL databases to store data back-need to establish strong data consistency and integrity, data security, a good library. The system can implement classification of management books and according to a three-level client log

5、in user rights management: Readers, librarians, and operators. The system points the user login, check books, circulation, system management and logging system, the five major functional blocks. Book search function which is divided into fuzzy queries, direct query, multiple query conditions; system

6、 management include the reader management, books classification management, library management, overdue library management, account management and other administrative privileges. One more query terms, fuzzy query, library classification management, synchronization, real-time, multi-document view is

7、 the difficulty of this system.Keywords: Multi-document,Qt,C+,C/S,MySQ- IV -目錄摘要IAbstractII目錄III前言11 緒論21.1 系統(tǒng)開發(fā)背景21.2 設(shè)計(jì)目標(biāo)21.3 系統(tǒng)設(shè)計(jì)原則32 系統(tǒng)開發(fā)工具及相應(yīng)技術(shù)簡(jiǎn)介42.1 Qt簡(jiǎn)介42.2 常用開發(fā)技術(shù)比較42.2.1 ODBC42.2.2 DB252.2.3 MySQL52.3 客戶機(jī)/服務(wù)器結(jié)構(gòu)(C/S)、多線程62.3.1 C/S模式運(yùn)用62.3.2 服務(wù)器多線程編程72.4 使用MySQL數(shù)據(jù)庫82.4.1 Qt數(shù)據(jù)庫連接類82.4.2 數(shù)據(jù)庫連接8

8、2.4.3 查詢記錄92.5 系統(tǒng)運(yùn)行環(huán)境92.5.1 服務(wù)器軟硬件要求92.5.2 客戶端軟硬件要求93 需求分析103.1 功能需求103.2 功能介紹114 系統(tǒng)設(shè)計(jì)144.1 系統(tǒng)總體設(shè)計(jì)144.1.1 數(shù)據(jù)庫簡(jiǎn)介144.1.2 數(shù)據(jù)庫技術(shù)164.1.3 SQL語言基礎(chǔ)184.2 數(shù)據(jù)庫實(shí)現(xiàn)原理194.2.1 存儲(chǔ)過程(stored procedue)194.2.2 觸發(fā)器194.2.3 游標(biāo)204.3 定義系統(tǒng)表的結(jié)構(gòu)214.4 定義所需結(jié)構(gòu)體245 系統(tǒng)實(shí)現(xiàn)285.1 登錄子系統(tǒng)285.2 查詢子系統(tǒng)295.3 借還子系統(tǒng)295.3.1 借書模塊305.3.2 還書模塊305.4

9、管理子系統(tǒng)315.4.1 圖書管理模塊325.4.2 日志管理模塊33結(jié)語35致謝36參考文獻(xiàn)37前言隨著揉社會(huì)的發(fā)展,揉對(duì)知識(shí)的需求也不斷地增長(zhǎng)。在這種形勢(shì)下,書籍就漸漸地成為人們獲取并增長(zhǎng)知識(shí)的主要途徑,而圖書館就自然而然地在人們的生活中占據(jù)了一定的位置,如何科學(xué)地管理圖書館不但關(guān)系到讀者求知的方便程度,也關(guān)系到圖書館的發(fā)展,因此,開發(fā)一套完善的圖書館管理系統(tǒng)就成不可少了。圖書館在正常運(yùn)營(yíng)中總是面對(duì)大量的讀者信息、書籍信息以及兩者相互作用產(chǎn)生的借書信息、還書信息。因此需要對(duì)讀者資源、書籍資源、借書信息、還書信息進(jìn)行管理,及時(shí)了解各個(gè)環(huán)節(jié)中信息的變更,有利于提高管理效率。隨著社會(huì)的日益發(fā)展,

10、尤其是科技的迅猛發(fā)展,使得我國(guó)各項(xiàng)事業(yè)得到了前所未有的突破,不僅提高了工作效率,而且也降低了勞動(dòng)強(qiáng)度,美化了工作環(huán)境。隨著計(jì)算機(jī)廣泛地應(yīng)用在科學(xué)技術(shù)領(lǐng)域的各個(gè)方面,并逐漸進(jìn)入家庭,成為人們生活中必不可少的一部分。作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對(duì)產(chǎn)品庫存信息進(jìn)行管理,具有著人工管理無法比擬的優(yōu)點(diǎn),它檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、保密性好、壽命長(zhǎng)、成本低等,可減少更多的人力物力,這些都能夠極大地提高貨品庫存的管理效率,也是圖書信息的管理科學(xué)化、正規(guī)化的重要條件。因此,開發(fā)一個(gè)圖書信息的管理系統(tǒng)是很有必要的,具有其特有的技術(shù)意義和管理意義,為了適應(yīng)讀者對(duì)圖書的需求,同時(shí)又大大減輕圖書館

11、工作人員的工作量,全面提高圖書館的管理效率及服務(wù)質(zhì)量,以此為目的用C+開發(fā)了本圖書管理系統(tǒng)。1 緒論1.1 系統(tǒng)開發(fā)背景目前,在高校系部圖書管理中,師生查找圖書都是采用傳統(tǒng)的查詢方法,讓讀者在圖書分類架上一本本地去查找,這樣不僅很難找到自己所需要的圖書,而且費(fèi)時(shí)費(fèi)力。而圖書管理員在辦理借書登記、查詢讀者借書記錄時(shí),管理人員必須在借書記錄上一個(gè)個(gè)去查找,而要找到借書記錄并刪除該記錄是件很麻煩的事情。每當(dāng)新書入庫時(shí),圖書管理員既要填寫新書入庫卡片,又要填寫新書入庫帳目,不僅工作量大,而且,在新書入庫后要經(jīng)歷較長(zhǎng)的時(shí)間方能借出。另外,有的系部因圖書數(shù)量有限,必須對(duì)圖書實(shí)行限量借閱,因此,要實(shí)施彈性借

12、書方法是件很困難的事。為提高圖書查詢效率,減少系部圖書管理員的工作負(fù)擔(dān),有必要開發(fā)一個(gè)小型圖書管理軟件來對(duì)系部圖書實(shí)施有效管理。該系統(tǒng)必須具備以下功能:(1) 能對(duì)各類圖書實(shí)行分類管理;(2) 提供必要的讀者信息;(3) 能進(jìn)行各種高級(jí)查詢(如未還書目的查詢,已還書目的查詢等);(4) 具有圖書檢索功能;(5) 能管理登錄系統(tǒng)的圖書管理員等這樣不僅能較好地幫助讀者在最短的時(shí)間內(nèi)找到自己所需要的圖書書目、編號(hào),而且能讓圖書管理員以最高的效率辦理借閱手續(xù);(6) 讀者能夠?qū)Ξ?dāng)前圖書館的書籍進(jìn)行實(shí)時(shí)的查詢;1.2 設(shè)計(jì)目標(biāo)針對(duì)以上情況,決定組建一個(gè)基于客戶機(jī)/服務(wù)器(C/S模式)結(jié)構(gòu)的圖書管理系統(tǒng),

13、讀者用戶能夠?qū)Ξ?dāng)前圖書館書籍的情況進(jìn)行實(shí)時(shí)的查詢,對(duì)登錄后的用戶實(shí)行權(quán)限管理。在系統(tǒng)啟動(dòng)后,讀者能在客戶端根據(jù)自已的需要查詢圖書,而圖書管理員能在服務(wù)器端根據(jù)讀者提供的身份信息及圖書編號(hào)辦理借書或還書手續(xù),通過自動(dòng)查詢功能判斷讀者是否還能借書。如果讀者借書數(shù)量沒有超過規(guī)定的數(shù)量,沒有逾期未還圖書情況,則可繼續(xù)辦理借書手續(xù),否則不予辦理。另外,圖書管理員能根據(jù)需要通過該系統(tǒng)的服務(wù)端自行修改圖書信息,增加或刪除圖書書目等。該系統(tǒng)設(shè)有管理員用戶,當(dāng)管理員以此用戶級(jí)別登錄服務(wù)器時(shí),該用戶有著最大的權(quán)限,能通過管理界面設(shè)置圖書借閱期限、查詢逾期未還圖書信息和讀者信息,并能有效地管理圖書分類、讀者信息及圖

14、書管理員的登錄帳目等。1.3 系統(tǒng)設(shè)計(jì)原則(1) 實(shí)用性原則適合于中小型圖書館及高校系部圖書管理,用戶界面友好,操作使用方便,具有高效的數(shù)據(jù)處理能力。(2) 先進(jìn)性原則采用目前先進(jìn)的計(jì)算機(jī)軟硬件技術(shù),使系統(tǒng)具有較高的技術(shù)水平和較長(zhǎng)的生命周期,便于系統(tǒng)的升級(jí)和維護(hù)。(3) 開放性,安全性,可靠性及可擴(kuò)展性原則(4) 兼容性原則對(duì)于所選軟硬件系統(tǒng)及平臺(tái),能很好地適應(yīng)開發(fā)和使用的需要。(5) 規(guī)范性原則軟件設(shè)計(jì)過程嚴(yán)格按照“軟件工程”的規(guī)定,系統(tǒng)編碼、文檔、操作系統(tǒng)平臺(tái)以及開發(fā)方法采用相應(yīng)的國(guó)際標(biāo)準(zhǔn)、國(guó)家標(biāo)準(zhǔn)和行業(yè)標(biāo)準(zhǔn)。2 系統(tǒng)開發(fā)工具及相應(yīng)技術(shù)簡(jiǎn)介2.1 Qt簡(jiǎn)介這個(gè)系統(tǒng)前臺(tái)所用的開發(fā)工具是Ecl

15、ipse,開發(fā)環(huán)境是Qt,Qt 是一個(gè)跨平臺(tái)的 C+ 圖形用戶界面庫,由挪威 TrollTech 公司出品,目前包括Qt, 基于 Framebuffer 的 Qt Embedded,快速開發(fā)工具 Qt Designer,國(guó)際化工具 Qt Linguist 等部分 Qt 支持所有 Unix 系統(tǒng),當(dāng)然也包括 Linux,還支持 WinNT/Win2k,Win95/98 平臺(tái)。Trolltech 公司在 1994 年成立,但是在 1992 年,成立 Trolltech 公司的那批程序員 就已經(jīng)開始設(shè)計(jì) Qt 了,Qt 的第一個(gè)商業(yè)版本于 1995 年推出然后 Qt 的發(fā)展就很快了。2.2 常用開發(fā)

16、技術(shù)比較Qt提供了許多數(shù)據(jù)庫訪問的接口,主要包括ODBC、DB2和MYSQL等等。這些技術(shù)在訪問數(shù)據(jù)庫時(shí)無論是易用程度還是運(yùn)行性能上都是各有千秋,其情況如下:2.2.1 ODBCODBC是為客戶應(yīng)用程序訪問關(guān)系數(shù)據(jù)庫時(shí)提供的一個(gè)標(biāo)準(zhǔn)的接口,對(duì)于不同的數(shù)據(jù),ODBC提供了統(tǒng)一的API,使應(yīng)用程序可以誚所提供的API來訪問任何提供了ODBC驅(qū)動(dòng)程序的數(shù)據(jù)庫。而且,ODBC已經(jīng)成為一種標(biāo)準(zhǔn),所以,目前幾乎所有的關(guān)系數(shù)據(jù)庫都提供了了ODBC驅(qū)動(dòng)程序,這使ODBC的應(yīng)用十分廣泛,基本上可有于所有的關(guān)系數(shù)據(jù)庫。其優(yōu)點(diǎn)是,ODBC API可能使客戶應(yīng)用程序能夠從從底層設(shè)置和控制數(shù)據(jù)庫,完成一些高層數(shù)據(jù)庫技術(shù)

17、無法完的事,但是其不足之處是要編寫大量的代碼,增加了程序的編制的難度。2.2.2 DB2DB2 是一種關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS),是 Information Management 產(chǎn)品系列的一部分。DB2 被認(rèn)為是第一種使用 SQL(一種為 RDBMS 提供接口的語言)的數(shù)據(jù)庫產(chǎn)品。DB2 于 1982 年首次發(fā)布,現(xiàn)在已經(jīng)可以用在許多操作系統(tǒng)平臺(tái)上,包括 Linux、UNIX 和 Windows。DB2 有不同的版本,可以滿足不同的需求:1. DB2 Everyplace 為移動(dòng)用戶提供一個(gè)內(nèi)存占用小且性能出色的 DB2 版本。 2. DB2 for z/OS 為主機(jī)系統(tǒng)提供 DB2

18、的所有特性。 3. DB2 for Linux, UNIX and Windows 提供幾種風(fēng)格。(1) Enterprise Server Edition(ESE)是一種具有客戶機(jī)/服務(wù)器設(shè)置的完整的 RDBMS。DB2 ESE 適用于中型和大型企業(yè)。(2) Workgroup Server Edition(WSE)主要適用于小型和中型企業(yè),它提供除大型機(jī)連接之外的所有 DB2 ESE 特性。(3) Personal Edition 為個(gè)人計(jì)算機(jī)提供一個(gè)單用戶的部署。(4) 數(shù)據(jù)庫可以存儲(chǔ)任何類型的信息,無論是關(guān)系數(shù)據(jù)(比如職員的姓名和地址),還是二進(jìn)制數(shù)據(jù)(比如他們的身份證照片)。DB2

19、現(xiàn)在還支持 pureXML,可以輕松地存儲(chǔ)和檢索 XML 數(shù)據(jù)??梢允褂脤?shí)用程序裝載和維護(hù)數(shù)據(jù),還可以使用查詢檢索您感興趣的信息??梢允褂帽窘坛讨忻枋龅囊恍┕ぞ呖刂茢?shù)據(jù)的完整性。2.2.3 MySQLMySQL名字的來歷MySQL是一個(gè)小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典MySQLAB公司,在2008年1月16號(hào)被Sun公司收購。MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫。MySQL是最受歡迎的開源SQL數(shù)據(jù)庫管理系統(tǒng),它由MySQL AB開發(fā)、

20、發(fā)布和支持。MySQL AB是一家基于MySQL開發(fā)人員的商業(yè)公司,它是一家使用了一種成功的商業(yè)模式來結(jié)合開源價(jià)值和方法論的第二代開源公司。MySQL是MySQL AB的注冊(cè)商標(biāo)。MySQL是一個(gè)快速的、多線程、多用戶和健壯的SQL數(shù)據(jù)庫服務(wù)器。MySQL服務(wù)器支持關(guān)鍵任務(wù)、重負(fù)載生產(chǎn)系統(tǒng)的使用,也可以將它嵌入到一個(gè)大配置(mass-deployed)的軟件中去。MySQL是開源的,開源意味著任何人都可以使用和修改該軟件,任何人都可以從Internet上下載和使用MySQL而不需要支付任何費(fèi)用。如果你愿意,你可以研究其源代碼,并根據(jù)你的需要修改它。MySQL使用GPL(GNU General

21、Public License,通用公共許可),在http:/www.fsf.org/licenses中定義了你在不同的場(chǎng)合對(duì)軟件可以或不可以做什么。如果你覺得GPL不爽或者想把MySQL的源代碼集成到一個(gè)商業(yè)應(yīng)用中去,你可以向MySQL AB購買一個(gè)商業(yè)許可版本,MySQL服務(wù)器是一個(gè)快的、可靠的和易于使用的數(shù)據(jù)庫服務(wù)器。2.3 客戶機(jī)/服務(wù)器結(jié)構(gòu)(C/S)、多線程2.3.1 C/S模式運(yùn)用二層的C/S結(jié)構(gòu)是指以單一的服務(wù)器和局域網(wǎng)為核心,能通過客戶端與用戶進(jìn)行直接對(duì)話。主要有二大功能:一是它用于檢查用戶從鍵盤等輸入的數(shù)據(jù),顯示應(yīng)用輸出的數(shù)據(jù)。為使用戶能直觀地進(jìn)行操作,一般要使用圖形用戶接口(

22、GUI),操作簡(jiǎn)單、易學(xué)易用。在變更用戶接口時(shí),只需改寫顯示控制和數(shù)據(jù)檢查程序,而不影響其他。檢查的內(nèi)容也只限于數(shù)據(jù)的形式和值的范圍,不包括有關(guān)業(yè)務(wù)本身的處理邏輯。另一個(gè)是確認(rèn)用戶對(duì)應(yīng)用和數(shù)據(jù)庫存取權(quán)限的功能以及記錄系統(tǒng)處理日志。典型的C/S結(jié)構(gòu)有以下特點(diǎn):(1) 服務(wù)器負(fù)責(zé)數(shù)據(jù)管理及程序處理(2) 客戶機(jī)負(fù)責(zé)界面描述和界面顯示(3) 客戶機(jī)向服務(wù)器提出處理要求(4) 服務(wù)器響應(yīng)將處理結(jié)果返回客戶機(jī)(5) 使網(wǎng)絡(luò)數(shù)據(jù)流量最少近幾年,客戶機(jī)/服務(wù)器體系日益成熟而且應(yīng)用越來越廣泛,許多圖書館管理系統(tǒng)都用這種結(jié)構(gòu)進(jìn)行設(shè)計(jì)。2.3.2 服務(wù)器多線程編程什么是多線和為什么要應(yīng)用多線程編程?進(jìn)程和線程都是

23、操作系統(tǒng)的概念。進(jìn)程是應(yīng)用程序的執(zhí)行實(shí)例,每個(gè)進(jìn)程是由私有的虛擬地址空間、代碼、數(shù)據(jù)和其它各種系統(tǒng)資源組成,所謂私有,就是線程在有自己局部變量,進(jìn)程在運(yùn)行過程中創(chuàng)建的資源隨著進(jìn)程的終止而被銷毀,所使用的系統(tǒng)資源在進(jìn)程終止時(shí)被釋放或關(guān)閉。線程是進(jìn)程內(nèi)部的一個(gè)執(zhí)行單元。系統(tǒng)創(chuàng)建好進(jìn)程后,實(shí)際上就啟動(dòng)執(zhí)行了該進(jìn)程的主執(zhí)行線程,主執(zhí)行線程以函數(shù)地址形式,比如說main或WinMain函數(shù),將程序的啟動(dòng)點(diǎn)提供給Windows系統(tǒng)。主執(zhí)行線程終止了,進(jìn)程也就隨之終止。每一個(gè)進(jìn)程至少有一個(gè)主執(zhí)行線程,它無需由用戶去主動(dòng)創(chuàng)建,是由系統(tǒng)自動(dòng)創(chuàng)建的。用戶根據(jù)需要在應(yīng)用程序中創(chuàng)建其它線程,多個(gè)線程并發(fā)地運(yùn)行于同一個(gè)

24、進(jìn)程中。一個(gè)進(jìn)程中的所有線程都在該進(jìn)程的虛擬地址空間中,共同使用這些虛擬地址空間、全局變量和系統(tǒng)資源,所以線程間的通訊非常方便,多線程技術(shù)的應(yīng)用也較為廣泛。多線程可以實(shí)現(xiàn)并行處理,避免了某項(xiàng)任務(wù)長(zhǎng)時(shí)間占用CPU時(shí)間。要說明的一點(diǎn)是,目前大多數(shù)的計(jì)算機(jī)都是單處理器(CPU)的,為了運(yùn)行所有這些線程,操作系統(tǒng)為每個(gè)獨(dú)立線程安排一些CPU時(shí)間,操作系統(tǒng)以輪換方式向線程提供時(shí)間片,這就給人一種假象,好象這些線程都在同時(shí)運(yùn)行。由此可見,如果兩個(gè)非?;钴S的線程為了搶奪對(duì)CPU的控制權(quán),在線程切換時(shí)會(huì)消耗很多的CPU資源,反而會(huì)降低系統(tǒng)的性能。這一點(diǎn)在多線程編程時(shí)應(yīng)該注意。多線程在構(gòu)建大型系統(tǒng)的時(shí)候是需要重

25、點(diǎn)關(guān)注的一個(gè)重要方面,特別是在效率(系統(tǒng)跑得多快?)和性能(系統(tǒng)工作正常?)之間做一個(gè)權(quán)衡的時(shí)候。恰當(dāng)?shù)氖褂枚嗑€程可以極大的提高系統(tǒng)性能,當(dāng)有多個(gè)客戶端程序同時(shí)連接到服務(wù)器端的時(shí)候,用戶不希望等待其他用戶完成操作之后才享有CPU時(shí)間,因?yàn)檫@樣的C/S模式的管理系統(tǒng)將會(huì)變得毫無意義,為了滿足每一位用戶都能夠感覺到自己是獨(dú)占服務(wù)器CPU時(shí)間的,所以在該圖書管理系統(tǒng)中有必要也必須應(yīng)用到多線程編程,正因?yàn)槎嗑€程的并發(fā)行,使其處理客戶端的請(qǐng)求能夠達(dá)到同步的效果。因?yàn)槎嗑€程共享全局變量,所以在進(jìn)行多線程編程的時(shí)候要特別注意,當(dāng)訪問全局?jǐn)?shù)據(jù)的時(shí)候要用互斥鎖鎖住該變量,當(dāng)當(dāng)前線程使用完該變量的時(shí)候應(yīng)當(dāng)將其解鎖

26、,一邊其它線程有機(jī)會(huì)訪問該變量,以免造成死鎖的情況發(fā)生。2.4 使用MySQL數(shù)據(jù)庫因?yàn)楸鞠到y(tǒng)主要用到MySQL數(shù)據(jù)庫編程,所以詳細(xì)的介紹其使用方法。2.4.1 Qt數(shù)據(jù)庫連接類QsqlDatabase類是主要用于連接數(shù)據(jù)的類,該類封裝了連接各種數(shù)據(jù)的方法,在編譯并安裝好Qt相應(yīng)的數(shù)據(jù)庫驅(qū)動(dòng)之后,只需要簡(jiǎn)單的指定數(shù)據(jù)庫名字就能夠與相應(yīng)的數(shù)據(jù)庫建立連接,而應(yīng)用程序就能夠通過該連接句柄與數(shù)據(jù)庫進(jìn)行良好的互動(dòng)。QSqlQuery類是主要用于數(shù)據(jù)庫操作,包括執(zhí)行相應(yīng)的SQL語句,獲取數(shù)據(jù)庫中的相應(yīng)數(shù)據(jù)。2.4.2 數(shù)據(jù)庫連接在程序中定義QSqlDatabase db成員變量通過該變量可以獲取數(shù)據(jù)庫連接

27、句柄,db = QSqlDatabase:addDatabase(QMYSQL);/由于我們使用的MySQL數(shù)據(jù)庫,所以這里指定的數(shù)據(jù)庫名字是QMYSQL。db.setDatabaseName(database);db.setHostName(localhost);db.setUserName(username);db.setPassword(password);if (!db.open()QMessageBox:critical(0,QObject:tr(DatabaseError),db.lastError().text();return false;2.4.3 查詢記錄查詢記錄使用QSq

28、lQuery:exec(Qstring &)成員函數(shù)來執(zhí)行SQL語句,一旦查詢到數(shù)據(jù)庫中有相關(guān)的記錄,就可以通過QSqlQuery:isSelect() & QSqlQuery:next()來一條一條獲取查詢的結(jié)果, QSqlQuery:value(int column)獲取一行中指定列的記錄。2.5 系統(tǒng)運(yùn)行環(huán)境2.5.1 服務(wù)器軟硬件要求軟件:Windows XP MySQLTCP/IP協(xié)議硬件:CPU:P 內(nèi)存:256M 硬盤:4G以上2.5.2 客戶端軟硬件要求軟件:Windows 95/98/ME/2000/XP/WIN7TCP/IP協(xié)議硬件:CPU:486/586以及更高檔的PC

29、內(nèi)存:最少64M 硬盤:500M以上3 需求分析如同任何生物一樣,軟件也有一個(gè)誕生、成長(zhǎng)、衰亡的生存過程。我們稱為軟件的生存期。根據(jù)這一思想,可以得到軟件生存期六個(gè)步驟,即制定計(jì)劃、需求分析、軟件設(shè)計(jì)、程序編碼、測(cè)試及運(yùn)行維護(hù)。軟件需求分析工作是軟件生存期中重要一步,也是決定性一步。只有通過需求分析才能把軟件功能和性能的總體要領(lǐng)描述為具體的軟件需求規(guī)程說明,從而奠定軟件開發(fā)的基礎(chǔ)。需求分析系統(tǒng)設(shè)計(jì)系統(tǒng)編碼系統(tǒng)測(cè)試系統(tǒng)功能圖功能分析框架分析系統(tǒng)功能系統(tǒng)界面畫出功能圖測(cè)試系統(tǒng)的所有功能,達(dá)到預(yù)期效果圖3.1 系統(tǒng)整體設(shè)計(jì)流程圖3.1 功能需求根據(jù)自己調(diào)查圖書館的業(yè)務(wù)情況,從實(shí)際應(yīng)用的角度出發(fā),確定

30、為用戶提供和實(shí)現(xiàn)以下功能:(1) 登錄功能(2) 讀者:主要提供直接查詢(包括模糊查詢)和多條件分類查詢功能。(3) 操作員:主要提供借書,還書,圖書管理。(4) 管理員:主要提供圖書管理員登錄數(shù)據(jù)庫管理,圖書類管理,讀者管理逾期未還圖書的信息管理。(5) 聯(lián)機(jī)幫助功能:能幫助用戶在最短的時(shí)間使用本系統(tǒng)。3.2 功能介紹圖3.2列出了這個(gè)系統(tǒng)各功能之間的關(guān)系圖書管圖系統(tǒng)系統(tǒng)管理數(shù)據(jù)管理借還系統(tǒng)幫助用戶登錄添加用戶刪除用戶用戶注銷退出系統(tǒng)書籍管理用戶管理讀者管理日志管理修改密碼借出圖書歸還圖書續(xù)借圖書幫助文檔關(guān)于查詢統(tǒng)計(jì)查詢用戶圖書查詢借出記錄借閱統(tǒng)計(jì)逾期記錄修改資料圖3.2 系統(tǒng)功能圖(1)

31、用戶登錄只有已注冊(cè)用戶才能登陸系統(tǒng),為了滿足不同用的需求級(jí)別,用戶包括三種權(quán)限,系統(tǒng)管理員、操作員、讀者,不同權(quán)限的用戶,其所能執(zhí)行的操作不相同,下面是用戶的相關(guān)權(quán)限。讀者:登陸、注銷、退出、查詢與統(tǒng)計(jì)、修改密碼、幫助。操作員:登陸、注銷、退出、書籍借出與歸還、修改密碼、幫助。管理員:所有操作。(2) 用戶管理對(duì)用戶的相關(guān)操作,例如:添加新用戶、刪除用戶、查詢用戶、修改用戶資料。添加新用戶:可以添加學(xué)生用戶、教師管理員、系統(tǒng)管理員。查詢用戶:獲得用戶的相關(guān)資料。修改用戶:修改用戶的注冊(cè)信息及其相關(guān),需要輸入要作修改的用戶的ID及其姓名,防止誤該。(3) 修改密碼任何用戶都可以修改自己的登陸密碼

32、,用戶需要輸入舊的密碼,新密碼需要輸入兩次,保證其安全性。(4) 注銷用戶用戶切換時(shí)必須進(jìn)行注銷,否則警告用戶已經(jīng)登錄。(5) 正常退出系統(tǒng)(6) 添加圖書當(dāng)有新書入庫的時(shí)候,需要將該書的相關(guān)資料加入到數(shù)據(jù)庫中,教師管理員和系統(tǒng)管理員都有執(zhí)行該操作的權(quán)限。(7) 刪除圖書當(dāng)學(xué)生報(bào)告書籍遺失或者很長(zhǎng)時(shí)間未被歸還,視作該書籍已經(jīng)不存在,需要?jiǎng)h除其在數(shù)據(jù)庫中的相關(guān)記錄。(8) 更新圖書如果發(fā)現(xiàn)書籍的相關(guān)信息有誤,需要對(duì)該信息進(jìn)行修改,重新存入數(shù)據(jù)庫中,便于在書記查找的時(shí)候獲得的是該書的正確信息。(9) 借出圖書當(dāng)有用戶要借書的時(shí)候,需要用戶提供書籍相關(guān)信息,管理員根據(jù)用戶提供的信息,搜索相關(guān)書籍,如

33、果該書存在,可以進(jìn)行借出操作,如果不存在,就給出相關(guān)的提示,每位用戶所能借閱的圖書同時(shí)不能超過4本,默認(rèn)借出最大天數(shù)為30天。(10) 歸還圖書(11) 續(xù)借圖書用戶在規(guī)定的期限內(nèi),沒有看完書籍,需要進(jìn)行續(xù)借操作,續(xù)借的天數(shù)不能超過30,否則算作逾期。(12) 查詢與統(tǒng)計(jì)查詢庫存的圖書:獲取未借出的圖書記錄。借出記錄:獲得借出的圖書記錄,及其相關(guān)信息,波形圖可以直觀的顯示一段時(shí)間內(nèi)借出圖書的數(shù)量,當(dāng)鼠標(biāo)移動(dòng)到波形線上的時(shí)候,得到該段時(shí)間內(nèi)借出圖書的詳細(xì)信息,如:借閱者、書名、借出時(shí)間、是否逾期等等;表格形式則一表格的形式詳細(xì)的顯示圖書名、借閱者、借出時(shí)間、是否逾期,如果沒有預(yù)期則顯示借出的天數(shù)

34、,如果逾期需要突出的顯示出來并顯示預(yù)期作為提示。讀者借閱統(tǒng)計(jì):獲得所有用戶現(xiàn)有的圖書數(shù)量,將鼠標(biāo)移動(dòng)到該數(shù)字上顯示所有借得的圖書的名字。逾期借閱:獲得逾期借閱的圖書的相關(guān)信息,借閱者,具體借閱時(shí)間,超過的天數(shù)。(13) 逾期借閱記錄獲得借閱超時(shí)的所有書籍,顯示借閱者姓名,用戶ID,書名,超時(shí)天數(shù)。4 系統(tǒng)設(shè)計(jì)4.1 系統(tǒng)總體設(shè)計(jì)系統(tǒng)設(shè)計(jì)又稱系統(tǒng)物理設(shè)計(jì)。系統(tǒng)設(shè)計(jì)要根據(jù)系統(tǒng)分析報(bào)告中的系統(tǒng)邏輯模型綜合考慮各種約束,利用一切可利用的技術(shù)手段和方法進(jìn)行各種具體設(shè)計(jì),確定新系統(tǒng)的實(shí)施方案,解決“系統(tǒng)怎么做”的問題。結(jié)構(gòu)化系統(tǒng)設(shè)計(jì)是指利用一組標(biāo)準(zhǔn)的圖表工具和準(zhǔn)則,確定系統(tǒng)有哪些模塊,用什么方法連接,如何

35、構(gòu)成良好的系統(tǒng)結(jié)構(gòu),并進(jìn)行系統(tǒng)輸入、輸出、數(shù)據(jù)處理、數(shù)據(jù)存儲(chǔ)等環(huán)節(jié)的詳細(xì)設(shè)計(jì)。這一階段的重點(diǎn)是設(shè)計(jì)好系統(tǒng)的總體結(jié)構(gòu),選擇最經(jīng)濟(jì)合理的技術(shù)手段。在軟件需求分析階段,已搞清了軟件“做什么” 的問題,并描述出了系統(tǒng)的邏輯模型。在系統(tǒng)設(shè)計(jì)階段,主要要解決軟件“怎么做”的問題,所以需要描述軟件的總的體系結(jié)構(gòu)既系統(tǒng)總體結(jié)構(gòu)。本系統(tǒng)是一個(gè)圖書管理系統(tǒng),那么它具備用戶登錄:讀者圖書查詢:管理員借還書,增加書:圖書超級(jí)管理員管理系統(tǒng)信息四大基本功能,從這個(gè)基本功能出發(fā),確定了本系統(tǒng)應(yīng)包含五個(gè)大模塊,即:登錄模塊,查詢模塊,借還書模塊,系統(tǒng)管理模塊,日志管理模塊。4.1.1 數(shù)據(jù)庫簡(jiǎn)介計(jì)算機(jī)的數(shù)據(jù)處理應(yīng)用,首先要

36、把大量的信息以數(shù)據(jù)形式存放君存儲(chǔ)器中。存儲(chǔ)器的容量、存儲(chǔ)速率直接影響到數(shù)據(jù)管理技術(shù)的發(fā)展。1956年生產(chǎn)的第一臺(tái)計(jì)算機(jī)磁盤容量?jī)H為5M字節(jié),而現(xiàn)在已達(dá)10000M字節(jié)。目前光盤已經(jīng)廣泛使用,容量已達(dá)數(shù)百G字節(jié)。存儲(chǔ)器的發(fā)展,為數(shù)據(jù)庫技術(shù)提供了良好的物質(zhì)基礎(chǔ)。使用計(jì)算機(jī)以后,數(shù)據(jù)處理的速度和規(guī)模,無論是相對(duì)于手工方式,還是機(jī)械方式,都是無可比擬的在數(shù)據(jù)處理中,通常計(jì)算是比較簡(jiǎn)單的而數(shù)據(jù)的管理比較復(fù)雜。數(shù)據(jù)管理是指數(shù)據(jù)的收集、整理、組織、存儲(chǔ)、維護(hù)、檢索、傳送等操作,這部分操作是數(shù)據(jù)處理業(yè)務(wù)的基本環(huán)節(jié),而且是任何數(shù)據(jù)處理業(yè)務(wù)中必不可少的共有部分。數(shù)據(jù)管理技術(shù)的優(yōu)劣,將直接影響數(shù)據(jù)處理的效率。數(shù)據(jù)管

37、理技術(shù)的發(fā)展,與硬件(主要是外存)、軟件、計(jì)算機(jī)應(yīng)用的范圍有密切的聯(lián)系。數(shù)據(jù)管理技術(shù)的發(fā)展經(jīng)過三個(gè)階段:人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫階段。從文件系統(tǒng)發(fā)展到數(shù)據(jù)庫系統(tǒng)是信息處理領(lǐng)域的一個(gè)重大變化。在文件系統(tǒng)階段,人們關(guān)注的中心問題是系統(tǒng)功能的設(shè)計(jì),因而程序設(shè)計(jì)處于主導(dǎo)地位,數(shù)據(jù)只起著服從程序需要的作用。在數(shù)據(jù)庫方式下,信息處理觀念已為新體系所取代,數(shù)據(jù)占據(jù)了中心位置。數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)成為信息系統(tǒng)首先關(guān)心的問題,而利用這些數(shù)據(jù)的應(yīng)用程序設(shè)計(jì)則退居到以既定的數(shù)據(jù)結(jié)構(gòu)為基礎(chǔ)的外圍地位。數(shù)據(jù)庫技術(shù)還在不斷的發(fā)展,并且不斷地與其它計(jì)算機(jī)技術(shù)相互滲透。數(shù)據(jù)庫技術(shù)與網(wǎng)絡(luò)通信技術(shù)相結(jié)合,產(chǎn)生了分布式數(shù)據(jù)庫系

38、統(tǒng)。數(shù)據(jù)庫技術(shù)與面向?qū)ο蠹夹g(shù)相結(jié)合,產(chǎn)生了面向?qū)ο髷?shù)據(jù)庫系統(tǒng)。在數(shù)據(jù)庫技術(shù)中有四個(gè)名詞:(1) 數(shù)據(jù)庫(database,DB):DB是統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合。DB能為各種用戶共享,具有最小冗余度,數(shù)據(jù)間聯(lián)系密切,而又有較高的數(shù)據(jù)獨(dú)立性。(2) 數(shù)據(jù)庫管理系統(tǒng)(Database Management System,DBMS):DBMS是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,為用戶或應(yīng)用程序提供訪問DB的方法,包括DB的建立、查詢、更新及各種數(shù)據(jù)控制。DBMS總是基于某種數(shù)據(jù)模型,可以分為層次型、網(wǎng)狀型、關(guān)系型和面向?qū)ο笮虳BMS。(3) 數(shù)據(jù)庫系統(tǒng)(Database System,DBS

39、):DBS是實(shí)現(xiàn)有組織地、動(dòng)態(tài)地存儲(chǔ)大量關(guān)聯(lián)數(shù)據(jù),方便多用戶訪問的計(jì)算機(jī)軟件、硬件和數(shù)據(jù)資源組成的系統(tǒng),即采用了數(shù)據(jù)庫技術(shù)的計(jì)算機(jī)系統(tǒng)。(4) 數(shù)據(jù)庫技術(shù):這是一門研究數(shù)據(jù)庫的結(jié)構(gòu)、存儲(chǔ)、管理和使用的軟件學(xué)科。數(shù)據(jù)庫技術(shù)是操作系統(tǒng)的文件系統(tǒng)基礎(chǔ)上發(fā)展起來的。而DBMS本身要在操作系統(tǒng)的支持下才能工作。數(shù)據(jù)庫不僅用到數(shù)據(jù)結(jié)構(gòu)的知識(shí),而且豐富了數(shù)據(jù)結(jié)構(gòu)的內(nèi)容。在關(guān)系數(shù)據(jù)庫中要用到集合論、數(shù)理邏輯的理論。因此,數(shù)據(jù)庫技術(shù)是一門綜合性較強(qiáng)的學(xué)科。4.1.2 數(shù)據(jù)庫技術(shù)從20世紀(jì)50年代中期開始,計(jì)算機(jī)的應(yīng)用由科學(xué)研究部門逐步擴(kuò)展到企業(yè)、行政部門。至60年代,數(shù)據(jù)處理成為計(jì)算機(jī)的主要應(yīng)用。數(shù)據(jù)庫技術(shù)作為

40、數(shù)據(jù)管理技術(shù),是計(jì)算機(jī)軟件領(lǐng)域的一個(gè)重要分支,產(chǎn)生于60年代末?,F(xiàn)已形成相當(dāng)規(guī)模的理論體系和實(shí)用技術(shù)。模型是對(duì)現(xiàn)實(shí)世界的抽象。在數(shù)據(jù)庫技術(shù)中,我們用模型的概念描述數(shù)據(jù)庫的結(jié)構(gòu)與語義,對(duì)現(xiàn)實(shí)世界進(jìn)行抽象,表示實(shí)體類型及實(shí)體間聯(lián)系的模型稱為“數(shù)據(jù)模型”。目前廣泛作用的數(shù)據(jù)模型可分為兩種類型。一種是獨(dú)立于計(jì)算機(jī)系統(tǒng)的模型,完全不涉及信息在系統(tǒng)中的表示,只是用來描述某個(gè)特定組織所關(guān)心的信息結(jié)構(gòu),這類模型稱為“概念數(shù)據(jù)模型” ,另一種數(shù)據(jù)模型是直接面向數(shù)據(jù)庫的邏輯結(jié)構(gòu),它是現(xiàn)實(shí)世界的第二層抽象。 這類模型涉及到計(jì)算機(jī)系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng),又稱為“結(jié)構(gòu)數(shù)據(jù)模型”。(1) 層次模型。用樹型結(jié)構(gòu)表示實(shí)體類型及

41、實(shí)體間聯(lián)系的數(shù)據(jù)模型。樹的結(jié)點(diǎn)是記錄類型,每個(gè)非根結(jié)點(diǎn)有且只有一個(gè)父結(jié)點(diǎn)。上一層記錄類型和下一層記錄類型間聯(lián)系是1N聯(lián)系。(2) 網(wǎng)狀模型。用有向圖結(jié)構(gòu)表示實(shí)體類型及實(shí)體間聯(lián)系的數(shù)據(jù)模型。(3) 關(guān)系模型。關(guān)系模型的主要是用二維表格結(jié)構(gòu)表達(dá)實(shí)體集,用外鍵表示實(shí)體間聯(lián)系。關(guān)系模型是由若干個(gè)關(guān)系模式組成的集合。關(guān)系模式相當(dāng)于前面提到的記錄類型,它的實(shí)例稱為關(guān)系,每個(gè)關(guān)系實(shí)際上是一張二維表格?,F(xiàn)在市場(chǎng)上典型的關(guān)系DBMS產(chǎn)品有DB2、ORACLE、SYBASE、INFORMIX和微機(jī)型產(chǎn)品Foxpro、Access等。(4) 面向?qū)ο竽P?。面向?qū)ο竽P湍芡暾孛枋霈F(xiàn)實(shí)世界的數(shù)據(jù)結(jié)構(gòu),具有豐富的表達(dá)能

42、力,但模型相對(duì)較復(fù)雜,涉及的知識(shí)面也廣,因此面向?qū)ο髷?shù)據(jù)庫尚未達(dá)到關(guān)系數(shù)據(jù)庫那樣的普及程度。數(shù)據(jù)庫的體系結(jié)構(gòu)分三級(jí):內(nèi)部級(jí)(internal)、概念級(jí)(conceptual)和外部級(jí)(external)。這個(gè)三級(jí)結(jié)構(gòu)有時(shí)也稱為“三級(jí)模式結(jié)構(gòu)”,或“數(shù)據(jù)抽象的三個(gè)級(jí)別”,大多數(shù)系統(tǒng)在總的體系結(jié)構(gòu)上都具有三級(jí)模式的結(jié)構(gòu)特征。從某個(gè)角度看到的數(shù)據(jù)特性稱為“數(shù)據(jù)視圖”(data view)。外部級(jí)最接近用戶,是單個(gè)用戶所能看到的數(shù)據(jù)特性。單個(gè)用戶使用的數(shù)據(jù)視圖的描述稱為“外模式”。概念級(jí)涉及到所有用戶的數(shù)據(jù)定義,是全局的數(shù)據(jù)視圖。全局?jǐn)?shù)據(jù)視圖的描述稱為“概念模式”。內(nèi)部級(jí)最接近于物理存儲(chǔ)設(shè)備,涉及到實(shí)

43、際數(shù)據(jù)存儲(chǔ)的結(jié)構(gòu)。物理存儲(chǔ)數(shù)據(jù)視圖的描述稱為“內(nèi)模式”。數(shù)據(jù)庫的三級(jí)模式結(jié)構(gòu)是數(shù)據(jù)的三個(gè)抽象級(jí)別。它把數(shù)據(jù)的具體組織留給DBMS去做,用戶只要抽象地處理數(shù)據(jù),而不必關(guān)心數(shù)據(jù)在計(jì)算機(jī)中的表示和存儲(chǔ),這樣就減輕了用戶使用系統(tǒng)的負(fù)擔(dān)。三級(jí)結(jié)構(gòu)之間往往差別很大,為了實(shí)現(xiàn)這三個(gè)抽象級(jí)別的聯(lián)系和轉(zhuǎn)換,DBMS在三級(jí)結(jié)構(gòu)之間提供兩個(gè)層次的映象(mappings):外模式/模式映象,模式/內(nèi)模式映象。此處模式是概念模式的簡(jiǎn)稱。由于數(shù)據(jù)庫系統(tǒng)采用三級(jí)模式結(jié)構(gòu),因此系統(tǒng)具有數(shù)據(jù)獨(dú)立性的特點(diǎn)。在數(shù)據(jù)庫技術(shù)中,數(shù)據(jù)獨(dú)立性是指應(yīng)用程序和數(shù)據(jù)之間相互獨(dú)立,不受影響。數(shù)據(jù)獨(dú)立性分成物理數(shù)據(jù)獨(dú)立性和邏輯數(shù)據(jù)獨(dú)立性兩級(jí)。(1)

44、 物理數(shù)據(jù)獨(dú)立性如果數(shù)據(jù)庫的內(nèi)模式要進(jìn)行修改,即數(shù)據(jù)庫的存儲(chǔ)設(shè)備和存儲(chǔ)方法有所變化,那么模式/內(nèi)模式映象也要進(jìn)行相當(dāng)?shù)男薷?,使概念模式盡可能保持不變。也就是對(duì)內(nèi)模式的修改盡量不影響概念模式,當(dāng)然,對(duì)于外模式和應(yīng)用程序的影響更小,這樣,我們稱數(shù)據(jù)庫達(dá)到了物理數(shù)據(jù)獨(dú)立性。(2) 邏輯數(shù)據(jù)獨(dú)立性如果數(shù)據(jù)庫的概念模式要進(jìn)行修改,譬如增加記錄類型或增加數(shù)據(jù)項(xiàng),那么外模式/模式映象也要進(jìn)行相應(yīng)的修改,使外模式盡可能保持不變。也就是對(duì)概念模式的修改盡量不影響外模式和應(yīng)用程序,這樣,我們稱數(shù)據(jù)庫達(dá)到了邏輯數(shù)據(jù)獨(dú)立性。4.1.3 SQL語言基礎(chǔ)用戶對(duì)數(shù)據(jù)庫的使用,是通過數(shù)據(jù)庫管理系統(tǒng)提供的語言來實(shí)現(xiàn)的。不同的數(shù)

45、據(jù)庫管理系統(tǒng)提供不同的數(shù)據(jù)庫語言。關(guān)系數(shù)據(jù)庫管理系統(tǒng)幾乎都提供關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL。SQL 是STRUCTURE QUERY LANGUAGE(結(jié)構(gòu)化查詢語言)的縮寫,它是操作數(shù)據(jù)庫的工業(yè)標(biāo)準(zhǔn)語言。由于SQL使用方便、功能豐富、語言簡(jiǎn)潔易學(xué),很快得到推廣和應(yīng)用。例如關(guān)系數(shù)據(jù)庫產(chǎn)品DB2、ORACLE等都實(shí)現(xiàn)了SQL語言。同時(shí),其它數(shù)據(jù)庫產(chǎn)品廠家也紛紛推出各自的支持SQL的軟件或者與SQL的接口軟件。這樣SQL語言很快被整個(gè)計(jì)算機(jī)界認(rèn)可。1986年10月美國(guó)國(guó)家標(biāo)準(zhǔn)局(ANSI)頒布了SQL語言的美國(guó)標(biāo)準(zhǔn)。SQL數(shù)據(jù)庫的體系結(jié)構(gòu),它基本上也是三級(jí)結(jié)構(gòu),但有些術(shù)語與傳統(tǒng)的關(guān)系數(shù)據(jù)庫術(shù)語不同。在

46、SQL中,關(guān)系模式被稱為“基本表”,存儲(chǔ)模式稱為“存儲(chǔ)文件”,子模式稱為“視圖”,元組稱為“行”,屬性稱為“列”。(1) 一個(gè)SQL數(shù)據(jù)庫是表(Table)的匯集,它用一個(gè)或若干個(gè)SQL模式義。(2) 一個(gè)SQL表由行集構(gòu)成,一行(Row)是列(Column)的序列,每列對(duì)應(yīng)一個(gè)數(shù)據(jù)項(xiàng)。(3) 一個(gè)表或者一個(gè)基本表(Base Table),或者是一個(gè)視圖(View)?;颈硎菍?shí)際存儲(chǔ)在數(shù)據(jù)庫中的表;而視圖是若干個(gè)基本表或其它視圖構(gòu)成的子集,用二個(gè)SQL的查詢語句定義,它的數(shù)據(jù)是基本基本表的數(shù)據(jù),不實(shí)際存儲(chǔ)在數(shù)據(jù)庫中因此它是個(gè)虛表。(4) 一個(gè)基本表可以跨一個(gè)或多個(gè)存儲(chǔ)文件,而一個(gè)存儲(chǔ)文件可存放

47、一個(gè)或多個(gè)基本表。每個(gè)存儲(chǔ)文件與外部存儲(chǔ)器上的一個(gè)物理文件對(duì)應(yīng)。(5) 用戶可以用SQL語句對(duì)視圖和基本表進(jìn)行查詢等操作。在用戶看來,視圖和基本表是一樣的,都是關(guān)系(即表格)。(6) SQL用戶可以是應(yīng)用程序,也可以是最終用戶。使用SQL可以對(duì)數(shù)據(jù)庫進(jìn)行各種操作,例如,可以使用SQL語句生成新的數(shù)據(jù)庫、生成或加入表格、修改數(shù)據(jù)庫等。但SQL 最常用于從數(shù)據(jù)庫中獲取數(shù)據(jù)。從數(shù)據(jù)庫中獲取數(shù)據(jù)被稱為“查詢數(shù)據(jù)庫”。4.2 數(shù)據(jù)庫實(shí)現(xiàn)原理4.2.1 存儲(chǔ)過程(stored procedue)存儲(chǔ)過程是一組先編譯好的Transact-SQL語句。它可能作為一個(gè)獨(dú)立的數(shù)據(jù)庫對(duì)象也可以作為一個(gè)單元被用戶的應(yīng)

48、用程序調(diào)用,在這個(gè)系統(tǒng)中的逾期書檢查中就在前臺(tái)調(diào)用了存儲(chǔ)過程,在記錄借書和還書時(shí),所有的數(shù)據(jù)處理都是調(diào)用存儲(chǔ)過程。使用存儲(chǔ)過程有很多的好處:(1) 執(zhí)行速度快:存儲(chǔ)過程第一次調(diào)用后就駐留內(nèi)存中,特別是重復(fù)處理大量數(shù)據(jù)時(shí),可以極大的是高運(yùn)行效率。(2) 模塊化的程序設(shè)計(jì):存儲(chǔ)過程經(jīng)過一次修改后,可以無數(shù)次的調(diào)用。(3) 減少網(wǎng)絡(luò)流量:所有數(shù)據(jù)處理都是在服務(wù)器進(jìn)行,所以,前臺(tái)只發(fā)送調(diào)用存儲(chǔ)過程的指令和參數(shù),這樣能大減少了網(wǎng)絡(luò)上數(shù)據(jù)的流量。(4) 保證系統(tǒng)的安全性。存儲(chǔ)過程的定義:CREATE PROC procedure_name parameter date_type VARYING=defau

49、ltOUTPUTASSql_statement.n4.2.2 觸發(fā)器觸發(fā)器是一種特殊的存儲(chǔ)過程,它與表格緊密相連,可能看作是表格定義的一部分,當(dāng)用戶指定表或視圖的數(shù)據(jù)時(shí),觸發(fā)器將會(huì)自動(dòng)執(zhí)行。觸發(fā)器基于一個(gè)表創(chuàng)建,但是可以針對(duì)多個(gè)表進(jìn)行駛操作。觸發(fā)器常用來實(shí)現(xiàn)復(fù)雜的商業(yè)規(guī)則。使用觸發(fā)器的最終目的是更好地維護(hù)企業(yè)的業(yè)務(wù)規(guī)則。在實(shí)際運(yùn)用中,主要提供了以下的功能:(1) 級(jí)聯(lián)修改數(shù)據(jù)庫中的怕有相關(guān)表。(2) 撤消違反了完整性的操作,防止非法修改數(shù)據(jù)。(3) 執(zhí)行比CHECK更復(fù)雜的約束操作。(4) 查找在數(shù)據(jù)修改前后,表狀態(tài)的差別。觸發(fā)器的定義:CREATE TRIGGER trigger_nameO

50、N tableFORDELETE,INSERT,UPDATEASSql_statement4.2.3 游標(biāo)數(shù)據(jù)庫中的游標(biāo)是像C語言指針一樣的語言結(jié)構(gòu)。在通常情況下,數(shù)據(jù)庫招待的大多數(shù)SQL命令都是同時(shí)處理集合內(nèi)部的所有數(shù)據(jù)。但是,有時(shí)候用戶也需要對(duì)這些數(shù)據(jù)庫集合中的每一行進(jìn)行作。在沒有游標(biāo)的情況下,這種工作不得不放到數(shù)據(jù)庫前端,有高級(jí)語言來實(shí)現(xiàn)。這將導(dǎo)致不必要的數(shù)據(jù)傳輸,面而延長(zhǎng)執(zhí)行的時(shí)間。通過使用游標(biāo),可能在服務(wù)器端有效的解決這個(gè)問題;(1) 游標(biāo)的定義DECLARE cursor_name CURSORFOR select_statement(2) 游標(biāo)打開OPEN cursor_name

51、(3) FETCH語句FETCH NEXT|PRIOR|FIRST|LASTFROM cursor_nameINTO viriable_name(4) 游標(biāo)關(guān)閉CLOSE cursor_name(5) 刪除游標(biāo)DEALLOCATE cursor_name4.3 定義系統(tǒng)表的結(jié)構(gòu)1. 定義圖書表(tbl_book),存放書籍信息,如表4.1所示:表4.1 圖書表字段數(shù)據(jù)類型長(zhǎng)度能否為空NameVARCHAR45NOT NULLauthorVARCHAR45NOT NULLtypeVARCHAR45NULLpressVARCHAR45NULLpressdateDATENULLpagenumINTE

52、GERNULLpriceDOUBLE4NULLadddateDATE4NOT NULLlendtimesINTEGER4NULLstatusINTEGER4NOT NULLbookIDVARCHAR20NOT NULL2. 定義讀者表(tbl_reader),存放讀者信息,如表4.2所示:表4.2 讀者表字段數(shù)據(jù)類型長(zhǎng)度能否為空NameVARCHAR8NOT NULLsexVARCHAR10NULLbirthdayVARCHAR2NULLcarddateDATE8NULLcardnumVARCHAR4NULLtypeINTEGER4NULLstatusINTEGER4NULLschoolCHA

53、R16NULLdepartmentCHAR26NULLgradeCHAR 16NOT NULLidcardVARCHAR20NULLaddressVARCHAR45NULLpostVARCHAR10NULLphoneVARCHAR20NULLemailVARCHAR45NULLreaderIDVARCHAR20NOT NULL3. 定義借還記錄表(tbl_lend),存放借出書籍的信息,如表4.3所示:表4.3 借出記錄表字段數(shù)據(jù)類型長(zhǎng)度能否為空nameVARCHAR45NOT NULLauthorVARCHAR20NOT NULLtypeVARCHAR45NULLpressdateDATEN

54、ULLpagenumINTEGER4NULLpriceDOUBLE4NULLlenddateDATENOT NULLlenddaysINTEGER4NOT NULLreaderVARCHAR20NOT NULLoverdaysINTEGER4NOT NULLtimeoutINTEGER4NOT NULLbookIDVARCHAR20NOT NULLreaderIDVARCHAR20NOT NULL4. 定義管理員登錄表(tbl_user),存放管理人員信息,如表4.4所示:表4.4 系統(tǒng)管理員表字段數(shù)據(jù)類型長(zhǎng)度能否為空nameVARCHAR20NOT NULLsexINTEGER4NULLbi

55、rthdayDATENULLidcardVARCHAR20NULLphoneVARCHAR20NULLstatusINTEGER4NOT NULLpowerINTEGER4NOT NULLpasswordVARCHAR20NOT NULLonlineINTEGER4NOT NULLlogintimeDATENOT NULLlasttimeDATENOT NULLuserIDVARCHAR20NOT NULLemailVARCHAR45NULL5. 書籍日志表(tbl_booklog),存放書籍日志信息,如表4.5所示:表4.5 書籍日志表字段數(shù)據(jù)類型長(zhǎng)度能否為空ResultINTEGER4NO

56、T NULLbookIDVARCHAR20NOT NULLbooknameVARCHAR45NOT NULLipVARCHAR20NOT NULLtypeVARCHAR20NOT NULLdescriptionVARCHAR45NOT NULLdatetimeDATETIMENOT NULLoperatorVARCHAR20NOT NULLoperationINTEGER4NOT NULL6. 用戶日志表(tbl_booklog),存放用戶日志信息,如表4.6所示:表4.6 用戶日志表字段數(shù)據(jù)類型長(zhǎng)度能否為空ResultINTEGER4NOT NULLipVARCHAR20NOT NULLde

57、scriptionVARCHAR45NOT NULLdatetimeDATETIMENOT NULLoperatorVARCHAR20NOT NULLoperationINTEGER4NOT NULL4.4 定義所需結(jié)構(gòu)體1. 用戶數(shù)據(jù)結(jié)構(gòu)體typedef struct _userinfo_tagQString sID;/保存用戶IDQString sName;/保存用戶名u32 dwSex;/性別0:男,1:女QString sPass;/保存用戶密碼u32 dwPower;/保存用戶權(quán)限QString sBirthDay;/出生日期QString sPhone;/電話號(hào)碼QString s

58、IDCard;/身份證號(hào)u32 dwStatus;/狀態(tài)0:正常 1:禁用QString sLoginTime;/注冊(cè)時(shí)間u32 dwOnline;/登陸信息標(biāo)志0:未登錄 1:在線QString sEmail;QString sLastTime;/最后登錄時(shí)間USERINFO, *PUSERINFO;2. 書籍信息結(jié)構(gòu)體typedef struct _bookinfo_tagQString sID;/書籍IDQString sName;/書籍名字QString sAuthor;/作者QString sType;/圖書類型QString sPress;/出版社QString sPressDat

59、e;/出版日期u32 dwPageNum;/頁數(shù)double fPrice;/價(jià)格QString sAddDate;/入庫日期u32 dwLendTimes;/借出次數(shù)u32 dwStatus;/圖書狀態(tài)0:未借出 1:借出 2:遺失BOOKINFO, *PBOOKINFO;3. 借出書籍信息結(jié)構(gòu)體typedef struct _lendinfo_tagQString sID;/圖書IDQString sName;/圖書名字QString sAuthor;/作者QString sType;/圖書類型QString sPress;/出版社QString sPressDate;/出版日期u32 d

60、wPageNum;/頁數(shù)double fPrice;/圖書價(jià)格QString sLendDate;/借出日期u32 dwLendDays;/借出天數(shù)u32 dwTimeOut;/是否逾期0:未逾期,1:逾期u32 dwOverDays;/超期天數(shù)QString sReaderID;/讀者QString sReader;LENDINFO, *PLENDINFO;4. 書籍日志信息結(jié)構(gòu)體typedef struct bookloginfo_tagu32 dwID;/操作IDu32 dwResult;/操作結(jié)果0:成功 1:失敗QString sOperator;/操作員QString sBookID;/操作圖書IDQString sBookName;/操作圖書名字u32 dwOperation;/操作1:添加圖書,2:刪除圖書,3:更新圖書 4:借出 5:歸還 6:續(xù)借QString sIP;/操作員IP地址QString sType;/書籍類型QString sDescription;/描述QString sDateTime;/操作時(shí)間BOOKLOGINFO, *PBOOKLOGINFO;5. 讀

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!