第18章C語(yǔ)言圖書管理系統(tǒng)_第1頁(yè)
第18章C語(yǔ)言圖書管理系統(tǒng)_第2頁(yè)
第18章C語(yǔ)言圖書管理系統(tǒng)_第3頁(yè)
第18章C語(yǔ)言圖書管理系統(tǒng)_第4頁(yè)
第18章C語(yǔ)言圖書管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、圖書管理系統(tǒng) 教 學(xué) 目 的內(nèi) 容1 教 學(xué) 要 求2 重 點(diǎn) 難 點(diǎn)3 教 學(xué) 內(nèi) 容4教 學(xué) 目 的 通過(guò)對(duì)圖書管理系統(tǒng)的學(xué)習(xí),使大家了解使用C語(yǔ)言和MySQL數(shù)據(jù)庫(kù)開發(fā)管理系統(tǒng)的過(guò)程,從而能夠更加熟悉C語(yǔ)言編程特點(diǎn),幫助大家提升C語(yǔ)言編程能力。教 學(xué) 要 求在實(shí)際應(yīng)用中了解開發(fā)環(huán)境了解數(shù)據(jù)庫(kù)的設(shè)計(jì);掌握C語(yǔ)言開發(fā)數(shù)據(jù)庫(kù)程序的流程;掌握C語(yǔ)言操作MYSQL數(shù)據(jù)庫(kù);掌握各個(gè)模塊的設(shè)計(jì)過(guò)程;重 點(diǎn) 難 點(diǎn)重點(diǎn):C語(yǔ)言開發(fā)數(shù)據(jù)庫(kù)程序的流程;MySQL數(shù)據(jù)庫(kù)和數(shù)據(jù)表的創(chuàng)立;C語(yǔ)言操作MySQL數(shù)據(jù)庫(kù) ;難點(diǎn):使用C語(yǔ)言連接MySQL數(shù)據(jù)庫(kù);使用C語(yǔ)言對(duì)MySQL數(shù)據(jù)庫(kù)中數(shù)據(jù)進(jìn)行增、刪、改、查等操作

2、。教 學(xué) 內(nèi) 容C語(yǔ)言開發(fā)數(shù)據(jù)庫(kù)程序的流程;概述;系統(tǒng)設(shè)計(jì);數(shù)據(jù)庫(kù)設(shè)計(jì);C語(yǔ)言操作MySQL數(shù)據(jù)庫(kù);文件引用;變量和函數(shù)定義;主要功能模塊設(shè)計(jì)。概述 需求分析 目前,圖書市場(chǎng)日益劇烈的競(jìng)爭(zhēng)迫使圖書企業(yè)希望采用一種新的管理方式來(lái)加快圖書流通信息的反響速度,而計(jì)算機(jī)信息技術(shù)的開展為圖書管理注入了新的生機(jī)。通過(guò)對(duì)市場(chǎng)的調(diào)查得知,一款合格的圖書信息管理系統(tǒng)必須具備以下三個(gè)特點(diǎn): 能夠?qū)D書信息進(jìn)行集中管理。 能夠大大提高用戶的工作效率。 能夠?qū)D書的局部信息進(jìn)行查詢。 一個(gè)圖書管理系統(tǒng)最重要的功能是管理圖書,包括圖書的增加、刪除、修改、查詢等功能。 開發(fā)工具選擇 本系統(tǒng)前臺(tái)采用Microsoft公司的

3、Visual C+ 6.0作為主要的開發(fā)工具;數(shù)據(jù)庫(kù)選擇MySQL 5.0數(shù)據(jù)庫(kù)系統(tǒng),該系統(tǒng)在平安性、準(zhǔn)確性和運(yùn)行速度方面都占有一定優(yōu)勢(shì)。 系統(tǒng)設(shè)計(jì) 系統(tǒng)目標(biāo)根據(jù)上面的需求分析,得出該圖書管理系統(tǒng)要實(shí)現(xiàn)的功能,有以下幾方面: 錄入圖書信息。 實(shí)現(xiàn)刪除功能,即輸入圖書號(hào)刪除相應(yīng)的記錄。 實(shí)現(xiàn)查找功能,即輸入圖書號(hào)或圖書名查詢?cè)摃嚓P(guān)信息。 實(shí)現(xiàn)修改功能,即輸入圖書號(hào)或圖書名修改相應(yīng)信息。 保存添加的圖書信息。系統(tǒng)功能結(jié)構(gòu)系統(tǒng)預(yù)覽開發(fā)及運(yùn)行環(huán)境 系統(tǒng)開發(fā)平臺(tái):Visual C+ 6.0 數(shù)據(jù)庫(kù)管理平臺(tái):MySQL 5.0 運(yùn)行平臺(tái):Windows XP/ Windows 2000/ Windows

4、 2003 分辨率:最正確效果1024768數(shù)據(jù)庫(kù)設(shè)計(jì)安裝MySQL數(shù)據(jù)庫(kù) MySQL是一款廣受歡送的數(shù)據(jù)庫(kù),由于開源所以市場(chǎng)占有率高,倍受程序開發(fā)者的青睞。這不僅因?yàn)镸ySQL是完全網(wǎng)絡(luò)化的跨平臺(tái)關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng),也是具有客戶機(jī)/效勞器體系結(jié)構(gòu)的分布式數(shù)據(jù)庫(kù)管理系統(tǒng)。它具有功能性強(qiáng)、使用簡(jiǎn)捷、管理方便、運(yùn)行速度快、版本升級(jí)快、平安性高等優(yōu)點(diǎn),而且MySQL數(shù)據(jù)庫(kù)完全免費(fèi),從官方網(wǎng)站 :/即可免費(fèi)下載到最新版本的MySQL安裝包“mysql-essential-5.0.82-win32.msi。 啟動(dòng)MySQL數(shù)據(jù)庫(kù)創(chuàng)立數(shù)據(jù)庫(kù)使用SQL語(yǔ)句創(chuàng)立數(shù)據(jù)庫(kù),這里使用的是create語(yǔ)句,其語(yǔ)法形式如

5、下CREATE DATABASE | SCHEMA IF NOT EXISTS db_name create_specification , create_specification .本程序中,創(chuàng)立一個(gè)名為db_books的數(shù)據(jù)庫(kù),SQL語(yǔ)句如下:create database db_books;創(chuàng)立完成數(shù)據(jù)庫(kù)以后使用use語(yǔ)句來(lái)改變當(dāng)前的數(shù)據(jù)庫(kù),本程序中,使用的SQL語(yǔ)句如下:use db_books;數(shù)據(jù)庫(kù)設(shè)計(jì)使用USE語(yǔ)句,可以改變當(dāng)前的數(shù)據(jù)庫(kù)。在進(jìn)入到db_books數(shù)據(jù)庫(kù)中以后,就需要?jiǎng)?chuàng)立數(shù)據(jù)表,在創(chuàng)立數(shù)據(jù)表時(shí),需要使用Create table語(yǔ)句來(lái)創(chuàng)立,在本例中使用的創(chuàng)立數(shù)據(jù)表的

6、代碼如下:create table tb_book(ID char(10) NOT NULL,bookname char(50) NOT NULL,author char(50) NOT NULL,bookconcern char(100) NOT NULL,PRIMARY KEY (ID) ENGINE = MYISAM;在上述創(chuàng)立語(yǔ)句中,創(chuàng)立了一個(gè)具有4個(gè)字段的數(shù)據(jù)庫(kù),分別是ID編號(hào)、bookname圖書名、author作者、bookconcern出版社。其中,字段ID是主鍵,這些字段都不能為空。數(shù)據(jù)表結(jié)構(gòu) 為了便于讀者更好的學(xué)習(xí),下面給出圖書表的數(shù)據(jù)表結(jié)構(gòu),圖書表用來(lái)保存圖書信息。其數(shù)據(jù)

7、表結(jié)構(gòu)如表 字段名數(shù)據(jù)類型長(zhǎng)度是否為空是否主鍵描述IDchar10否是圖書編號(hào)booknamechar50否否圖書名authorchar50否否作者bookconcernchar100否否出版社數(shù)據(jù)庫(kù)設(shè)計(jì)安裝MySQL數(shù)據(jù)庫(kù) MySQL是一款廣受歡送的數(shù)據(jù)庫(kù),由于開源所以市場(chǎng)占有率高,倍受程序開發(fā)者的青睞。這不僅因?yàn)镸ySQL是完全網(wǎng)絡(luò)化的跨平臺(tái)關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng),也是具有客戶機(jī)/效勞器體系結(jié)構(gòu)的分布式數(shù)據(jù)庫(kù)管理系統(tǒng)。它具有功能性強(qiáng)、使用簡(jiǎn)捷、管理方便、運(yùn)行速度快、版本升級(jí)快、平安性高等優(yōu)點(diǎn),而且MySQL數(shù)據(jù)庫(kù)完全免費(fèi),從官方網(wǎng)站 :/即可免費(fèi)下載到最新版本的MySQL安裝包“mysql-es

8、sential-5.0.82-win32.msi。 啟動(dòng)MySQL數(shù)據(jù)庫(kù)創(chuàng)立數(shù)據(jù)庫(kù)使用SQL語(yǔ)句創(chuàng)立數(shù)據(jù)庫(kù),這里使用的是create語(yǔ)句,其語(yǔ)法形式如下CREATE DATABASE | SCHEMA IF NOT EXISTS db_name create_specification , create_specification .本程序中,創(chuàng)立一個(gè)名為db_books的數(shù)據(jù)庫(kù),SQL語(yǔ)句如下:create database db_books;數(shù)據(jù)表結(jié)構(gòu) C語(yǔ)言開發(fā)數(shù)據(jù)庫(kù)程序的流程剛剛接觸MySQL的用戶,如果想用C語(yǔ)言連接MySQL,往往會(huì)是一件很麻煩的事情,下面就整理一下C語(yǔ)言開發(fā)數(shù)據(jù)庫(kù)

9、的流程。MySQL為C語(yǔ)言提供了連接數(shù)據(jù)庫(kù)的API,要想正常使用這些API,需要做以下兩件事情:1包含這些API的聲明文件,即mysql.h。2讓編譯器找到這些API的可執(zhí)行程序,即DLL庫(kù)。下面介紹一下詳細(xì)的步驟:1在C語(yǔ)言中引入如下頭文件 #include #include 下面解決,讓編譯器找到mysql.h的問(wèn)題。需要在編譯環(huán)境中作如下的設(shè)置:2引入庫(kù)函數(shù)經(jīng)過(guò)上一步的設(shè)置,程序已經(jīng)可以編譯通過(guò)了,但是編譯通過(guò)并不等于可以生成可執(zhí)行文件。還需要告訴編譯器這些API函數(shù)的可執(zhí)行文件在哪個(gè)DLL文件libmysql.dll中。最好將libmysql.lib以及l(fā)ibmysql.dll文件拷貝

10、到工程的目錄下。在程序中需要添加的代碼如下:#include #include #pragma comment(lib,libmysql.lib)3設(shè)置好環(huán)境以后,剩下的就是編寫程序代碼了,代碼將在后面的局部進(jìn)行詳細(xì)的介紹。 C語(yǔ)言操作MySQL數(shù)據(jù)庫(kù)1.MySQL常用數(shù)據(jù)庫(kù)操作函數(shù) 2. 連接MySQL數(shù)據(jù)MySQL提供的mysql_real_connect()函數(shù)用于數(shù)據(jù)庫(kù)連接,其語(yǔ)法形式如下:MYSQL * mysql_real_connect(MYSQL * connection, const char * server_host, const char * sql_user_name

11、,const char * sql_password, const char *db_name, unsigned int port_number, const char * unix_socket_name,unsigned int flags);參數(shù)說(shuō)明如表所示。參數(shù)描述connection必須是已經(jīng)初始化的連接句柄結(jié)構(gòu),server_host可以是主機(jī)名,也可以是IP地址,如果僅僅連接到本機(jī),可以使用localhost來(lái)優(yōu)化連接類型sql_user_nameMySQL數(shù)據(jù)庫(kù)的用戶名,默認(rèn)情況下是rootsql_passwordroot賬戶的密碼,默認(rèn)情況下是沒(méi)有密碼的,即為NULLdb_

12、name要連接的數(shù)據(jù)庫(kù),如果為空,則連接到默認(rèn)的數(shù)據(jù)庫(kù)test中port_number經(jīng)常被設(shè)置為0unix_socket_name經(jīng)常被設(shè)置為NULLflags這個(gè)參數(shù)經(jīng)常被設(shè)置為0C語(yǔ)言操作MySQL數(shù)據(jù)庫(kù)mysql_real_connect()函數(shù)在本程序中應(yīng)用的代碼如下:MYSQL mysql;if(!mysql_real_connect(&mysql,127.0.0.1,root,123,db_books,0,NULL,0) printf(nt Can not connect db_books!n);else /*數(shù)據(jù)庫(kù)連接成功*/在上述代碼的鏈接操作中,&mysql是一個(gè)初始化連接

13、句柄;是本機(jī)名;root是MySQL數(shù)據(jù)庫(kù)的賬戶;123是root賬戶的密碼;db_books是要連接的數(shù)據(jù)庫(kù),其他參數(shù)均為默認(rèn)設(shè)置。 3 查詢圖書表記錄1mysql_query()函數(shù)MySQL提供的mysql_query()函數(shù)用于執(zhí)行SQL語(yǔ)句,執(zhí)行指定為“以Null終結(jié)的字符串的SQL查詢。C語(yǔ)言操作MySQL數(shù)據(jù)庫(kù)2SELECT子句SELECT子句是SQL的核心,在SQL語(yǔ)句中用的最多的就是SELECT語(yǔ)句了。SELECT語(yǔ)句用于查詢數(shù)據(jù)庫(kù)并檢索與指定內(nèi)容相匹配的數(shù)據(jù)。SELECT子句的語(yǔ)法格式如下:SELECT DISTINCT|UNIQUE(*,columnnameAS alia

14、s,)FROM tablename WHERE conditionGROUP BY group_by_listHAVING search_conditionsORDER BY columnameASC | DESC參數(shù)說(shuō)明:DISTINCT|UNIQUE可刪除查詢結(jié)構(gòu)中的重復(fù)列表。columnname該參數(shù)為所要查詢的字段名稱,AS alias子句為查詢字段的別名;“*表示查詢所有字段。FROM tablename該參數(shù)用于指定檢索數(shù)據(jù)的數(shù)據(jù)源表的列表。WHERE search_conditions該子句是一個(gè)或多個(gè)篩選條件的組合,這個(gè)篩選條件的組合將使得只有滿足該條件的記錄才能被這個(gè)SELE

15、CT語(yǔ)句檢索出來(lái)。GROUP BY group_by_list GROUP BY子句將根據(jù)參數(shù)group_by_list提供的字段將結(jié)果集分成組。HAVING search_conditions HAVING子句是應(yīng)用于結(jié)果集的附加篩選。ORDER BY order_listASC | DESC ORDER BY子句用來(lái)定義結(jié)果集中的記錄排行的順序。C語(yǔ)言操作MySQL數(shù)據(jù)庫(kù)4. 插入圖書表記錄插入圖書記錄同樣是使用mysql_query()函數(shù)和INSERT INTO語(yǔ)句來(lái)實(shí)現(xiàn)的。mysql_query()函數(shù)在上一節(jié)中已經(jīng)做了介紹,這里不做過(guò)多的介紹,本節(jié)僅介紹INSERT INTO語(yǔ)句。

16、INSERT INTO語(yǔ)句用于向數(shù)據(jù)庫(kù)中插入數(shù)據(jù),其語(yǔ)法格式如下:INSERT INTO VALUES (column value,last column value)參數(shù)說(shuō)明:指出插入記錄的表名。(column value,last column value):指出插入的記錄。插入記錄應(yīng)遵循的規(guī)那么1插入的數(shù)據(jù)類型應(yīng)與被參加列的數(shù)據(jù)類型對(duì)應(yīng)相同或者系統(tǒng)可以自動(dòng)轉(zhuǎn)換。2添加的數(shù)據(jù)大寫必須在列規(guī)定的范圍內(nèi)。例如:定義一個(gè)列的數(shù)據(jù)類型為10個(gè)字符的字符串,就不能將一個(gè)長(zhǎng)度為20的字符串插入到該列中。5.修改圖書表記錄修改圖書表記錄是通過(guò)mysql_query()函數(shù)和UPDATE語(yǔ)句實(shí)現(xiàn)的。通過(guò)U

17、PDATE語(yǔ)句可以實(shí)現(xiàn)更改一列的數(shù)據(jù)的功能。UPDATE語(yǔ)句的語(yǔ)法格式如下:UPDATE SET =|DEFAULT|NULL ,= WHERE C語(yǔ)言操作MySQL數(shù)據(jù)庫(kù)參數(shù)說(shuō)明: table_name:需要更新的表的名稱。如果該表不在當(dāng)前效勞器或數(shù)據(jù)庫(kù)中,或不為當(dāng)前用戶所有,這個(gè)名稱可用鏈接效勞器、數(shù)據(jù)庫(kù)和所有者名稱來(lái)限定。 view_name:要更新的視圖的名稱。通過(guò)view_name來(lái)引用的視圖必須是可更新的。 column_name:含有要更改數(shù)據(jù)的列的名稱。column_name 必須駐留于 UPDATE 子句中所指定的表或視圖中。標(biāo)識(shí)列不能進(jìn)行更新。如果指定了限定的列名稱,限定符

18、必須同UPDATE子句中的表或視圖的名稱相匹配。例如,下面的內(nèi)容有效:UPDATE authors SET authors.au_fname = Annie WHERE au_fname = Anne expression:變量、字面值、表達(dá)式或加上括弧的返回單個(gè)值的 subSELECT 語(yǔ)句。expression 返回的值將替換 column_name 或 variable 中的現(xiàn)有值。 DEFAULT:指定使用對(duì)列定義的默認(rèn)值替換列中的現(xiàn)有值。如果該列沒(méi)有默認(rèn)值并且定義為允許空值,這也可用來(lái)將列更改為 NULL。C語(yǔ)言操作MySQL數(shù)據(jù)庫(kù)6. 刪除圖書表記錄刪除圖書表中的記錄的實(shí)現(xiàn)是通過(guò)使

19、用mysql_query()函數(shù)和DELETE語(yǔ)句來(lái)實(shí)現(xiàn)的。要?jiǎng)h除某條圖書信息可以在DELETE語(yǔ)句的WHERE條件中指定要?jiǎng)h除記錄信息的條件,即可實(shí)現(xiàn)刪除單條記錄的功能。DELETE語(yǔ)句的語(yǔ)法格式如下:DELETE from WHERE 參數(shù)說(shuō)明:指定刪除行的限定條件。在這里按條件查詢的結(jié)果只可以是一條記錄。例如,tb_Student表中“學(xué)號(hào)列的值唯一的,刪除“學(xué)號(hào)為“001108的記錄的代碼如下。USE DB_SQLDELETE FROM tb_StudentWHERE 學(xué)號(hào) = 001108文件引用在圖書信息管理系統(tǒng)中需要引用一些頭文件,這些頭文件可以幫助程序更好的運(yùn)行。頭文件的引用是通過(guò)#include命令來(lái)實(shí)現(xiàn)的,下面即為本程序中所引用的頭文件。#include /*輸入輸出函數(shù)*/#include /*包含了其他windows頭文件*/#include /*MySQL數(shù)據(jù)庫(kù)頭文件*/#pragma comment(lib,libmysql.lib)/*引用libmysql.lib 庫(kù)*/windows.h頭文件windows.h頭文件包含了其他windows頭文件,這些頭文件的某些文件也

溫馨提示

  • 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ù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論