版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、中南民族大學(xué)計(jì)算機(jī)科學(xué)學(xué)院Windows系統(tǒng)編程課程設(shè)計(jì)報(bào)告題 目:圖書(shū)管理系統(tǒng) 書(shū)庫(kù)系統(tǒng)設(shè)計(jì) 專(zhuān) 業(yè) 08自動(dòng)化 學(xué) 生 姓 名 何龍 班 級(jí) 學(xué) 號(hào) 指 導(dǎo) 老 師 鄭波盡 完 成 日 期 圖書(shū)管理系統(tǒng) 書(shū)庫(kù)管理系統(tǒng)一、課題背景:隨著社會(huì)信息量的與日俱增,作為信息存儲(chǔ)的主要媒體之一圖書(shū),數(shù)量、規(guī)模比以往任何時(shí)候都大的多,不論個(gè)人還是圖書(shū)管理部門(mén)都需要使用方便而有效的方式來(lái)管理自己的書(shū)籍。在計(jì)算機(jī)日益普及的今天,對(duì)個(gè)人而言若采用一套行之有效的圖書(shū)管理系統(tǒng)來(lái)管理自己的書(shū)籍,會(huì)方便許多。對(duì)圖書(shū)管理部門(mén)而言,以前單一的手工檢索已不能滿(mǎn)足人們的要求,為了便于圖書(shū)資料的管理需要有效的圖書(shū)管理軟件。圖書(shū)
2、管理系統(tǒng)軟件是一套功能比較完善的數(shù)據(jù)管理軟件,具有數(shù)據(jù)操作方便高效迅速等優(yōu)點(diǎn)。該軟件采用數(shù)據(jù)庫(kù)軟件開(kāi)發(fā)工具進(jìn)行開(kāi)發(fā),具有很好的可移植性,可在應(yīng)用范圍較廣WINDOWS系列等操作系統(tǒng)上使用。二、課題目的:1. 進(jìn)一步掌握利用Visual Studio進(jìn)行程序設(shè)計(jì)的能力2. 基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思路和方法3. 加深對(duì)數(shù)據(jù)庫(kù)的掌握和運(yùn)用4. 掌握用VC+開(kāi)發(fā)應(yīng)用程序的的一般步驟和方法5. 進(jìn)一步加強(qiáng)C+的編程能力和對(duì)程序結(jié)構(gòu)的理解6. 學(xué)會(huì)調(diào)試一個(gè)較長(zhǎng)程序的基本方法三、課題要求:根據(jù)所學(xué)知識(shí),編寫(xiě)指定題目的程序,并規(guī)范地完成課程設(shè)計(jì)報(bào)告。通過(guò)課程設(shè)計(jì),加深對(duì)Windows程序設(shè)計(jì)課程所學(xué)知
3、識(shí)的理解,學(xué)會(huì)編制結(jié)構(gòu)清晰、風(fēng)格良好、數(shù)據(jù)結(jié)構(gòu)適當(dāng)?shù)腤indows平臺(tái)應(yīng)用程序,從而具備利用計(jì)算機(jī)編程分析解決綜合性實(shí)際問(wèn)題的初步能力。具體要求如下:1 了解Windows編程的基礎(chǔ)知識(shí),掌握MFC應(yīng)用程序的基本知識(shí);基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思路和方法;掌握用VC+開(kāi)發(fā)應(yīng)用程序的一般步驟和方法;系統(tǒng)以Windows標(biāo)準(zhǔn)菜單界面方式工作,運(yùn)行界面友好,演示程序以用戶(hù)和計(jì)算機(jī)的對(duì)話(huà)方式進(jìn)行。2 采用界面選擇與編輯框兩種輸入方式,輸出結(jié)果直接顯示在售票對(duì)話(huà)框中。輸入的數(shù)據(jù)必須符合程序所規(guī)定的合法輸入方式,對(duì)不合法的信息輸入將提示無(wú)法處理。3 輸入輸出的要求 采用界面選擇與編輯框兩種輸入方式,輸
4、出結(jié)果直接顯示在售票對(duì)話(huà)框中。輸入的數(shù)據(jù)必須符合程序所規(guī)定的合法輸入方式,對(duì)不合法的信息輸入將提示無(wú)法處理。4 使用界面編程、網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)、文件系統(tǒng)、線(xiàn)程和進(jìn)程、異常處理等知識(shí)。特別是數(shù)據(jù)庫(kù)的應(yīng)用,用來(lái)存儲(chǔ)數(shù)據(jù)和提供數(shù)據(jù)。對(duì)于網(wǎng)絡(luò)主要進(jìn)行網(wǎng)絡(luò)通信,連接客戶(hù)端和服務(wù)器端。四、開(kāi)發(fā)工具介紹 1.總體介紹:Visual Studio 是一套完整的開(kāi)發(fā)工具集,用于生成 ASP.NET Web 應(yīng)用程序、XML Web Services、桌面應(yīng)用程序和移動(dòng)應(yīng)用程序。Visual Basic、Visual C+、Visual C# 和 Visual J# 全都使用相同的集成開(kāi)發(fā)環(huán)境 (IDE),利用此 I
5、DE 可以共享工具且有助于創(chuàng)建混合語(yǔ)言解決方案。另外,這些語(yǔ)言利用了 .NET Framework 的功能,通過(guò)此框架可使用簡(jiǎn)化 ASP Web 應(yīng)用程序和 XML Web Services 開(kāi)發(fā)的關(guān)鍵技術(shù)。2.功能介紹:創(chuàng)建滿(mǎn)足關(guān)鍵性要求的多層次的智能客戶(hù)端、Web、移動(dòng)或基于Microsoft Office的應(yīng)用程序。使用Visual Studio 2010, 專(zhuān)業(yè)開(kāi)發(fā)人員能夠: 使用改進(jìn)后的可視化設(shè)計(jì)工具、編程語(yǔ)言和代碼編輯器,享受高效率的開(kāi)發(fā)環(huán)境。 在統(tǒng)一的開(kāi)發(fā)環(huán)境中,開(kāi)發(fā)并調(diào)試多層次的服務(wù)器應(yīng)用程序。使用集成的可視化數(shù)據(jù)庫(kù)設(shè)計(jì)和報(bào)告工具,創(chuàng)建SQL Server 2005解決方案。使
6、用Visual Studio SDK創(chuàng)建可以擴(kuò)展Visual Studio IDE的工具。Microsoft為單獨(dú)工作或在小型團(tuán)隊(duì)中的專(zhuān)業(yè)開(kāi)發(fā)人員提供了兩種選擇,Visual Studio 2005 Professional Edition和用于Microsoft Office系統(tǒng)的Visual Studio 2005工具。每種版本都在標(biāo)準(zhǔn)版的特性上進(jìn)行了擴(kuò)展,包括用于遠(yuǎn)程服務(wù)程序開(kāi)發(fā)和調(diào)試、SQL Server2005開(kāi)發(fā)的工具,以及完整的、沒(méi)有限制的開(kāi)發(fā)環(huán)境。每種產(chǎn)品都可以單獨(dú)購(gòu)買(mǎi)或打包定購(gòu)。專(zhuān)業(yè)開(kāi)發(fā)人員喜歡自由的使用.NET Framework 2.0,它是一種穩(wěn)健的、功能齊備的開(kāi)發(fā)環(huán)境
7、,支持創(chuàng)建擴(kuò)展Visual Studio集成開(kāi)發(fā)環(huán)境的工具。3.主要部分運(yùn)行庫(kù)實(shí)際上在組件的運(yùn)行時(shí)和開(kāi)發(fā)時(shí)操作中都起到很大的作用,盡管名稱(chēng)中沒(méi)有體現(xiàn)這個(gè)意思。在組件運(yùn)行時(shí),運(yùn)行庫(kù)除了負(fù)責(zé)滿(mǎn)足此組件在其他組件上可能具有的依賴(lài)項(xiàng)外,還負(fù)責(zé)管理內(nèi)存分配、啟動(dòng)和停止線(xiàn)程和進(jìn)程,以及強(qiáng)制執(zhí)行安全策略。在開(kāi)發(fā)時(shí),運(yùn)行庫(kù)的作用稍有變化;由于做了大量的自動(dòng)處理工作(如內(nèi)存管理),運(yùn)行庫(kù)使開(kāi)發(fā)人員的操作非常簡(jiǎn)單,尤其是與今天的 COM 相比。特別是反射等功能顯著減少了開(kāi)發(fā)人員為將業(yè)務(wù)邏輯轉(zhuǎn)變?yōu)榭芍赜媒M件而必須編寫(xiě)的代碼量。該框架為開(kāi)發(fā)人員提供了統(tǒng)一的、面向?qū)ο蟮?、分層的和可擴(kuò)展的類(lèi)庫(kù)集 (API)。目前,C+
8、開(kāi)發(fā)人員使用 Microsoft 基礎(chǔ)類(lèi),而 Java 開(kāi)發(fā)人員使用 Windows 基礎(chǔ)類(lèi)。該框架統(tǒng)一了這些完全不同的模型,還為 Visual Basic 和 JScript 程序員提供了對(duì)類(lèi)庫(kù)的訪(fǎng)問(wèn)。通過(guò)創(chuàng)建跨所有編程語(yǔ)言的公共 API 集,公共語(yǔ)言運(yùn)行庫(kù)使得跨語(yǔ)言繼承、錯(cuò)誤處理和調(diào)試成為可能。從 JScript 到 C+ 的所有編程語(yǔ)言具有對(duì)框架的相似訪(fǎng)問(wèn),開(kāi)發(fā)人員可以自由選擇它們要使用的語(yǔ)言。ASP.NET 建立在 .NET Framework 的編程類(lèi)的基礎(chǔ)上,為 Web 應(yīng)用程序模型提供了一組可簡(jiǎn)化 Web 應(yīng)用程序生成的控件和基礎(chǔ)結(jié)構(gòu)。ASP.NET 包括可用于封裝通用 HTML
9、 用戶(hù)界面元素(如文本框、按鈕和列表框)的一組控件。但這些控件在 Web 服務(wù)器上運(yùn)行,并以 HTML 的形式將其用戶(hù)界面呈現(xiàn)在瀏覽器中。在服務(wù)器上,這些控件公布面向?qū)ο蟮木幊棠P?,該模型?Web 開(kāi)發(fā)人員提供面向?qū)ο缶幊痰呢S富功能。ASP.NET 還提供基礎(chǔ)結(jié)構(gòu)服務(wù),如狀態(tài)管理和進(jìn)程回收,從而可以進(jìn)一步減少開(kāi)發(fā)人員必須編寫(xiě)的代碼數(shù)量,并提高應(yīng)用程序的可靠性。另外,ASP.NET 使用這些同樣的概念使開(kāi)發(fā)人員能夠以服務(wù)的形式交付軟件。使用 XML Web Services 功能,ASP.NET 開(kāi)發(fā)人員可以編寫(xiě)他們的業(yè)務(wù)邏輯,并使用 ASP.NET 基礎(chǔ)結(jié)構(gòu)通過(guò) SOAP 交付該服務(wù)。五、設(shè)
10、計(jì)思路整體思路分析: 1. 整個(gè)程序設(shè)計(jì)成以下幾個(gè)大的模塊:1系統(tǒng)管理,下屬可以實(shí)現(xiàn)又分為:用戶(hù)管理、注銷(xiāo)/重新登錄、退出系統(tǒng)三個(gè)功能。2.基礎(chǔ)數(shù)據(jù)設(shè)置,下屬可以實(shí)現(xiàn):罰款設(shè)置、圖書(shū)類(lèi)別設(shè)置、讀者類(lèi)別設(shè)置三個(gè)功能。3.借閱管理,下屬分為:借書(shū)、還書(shū)、借書(shū)查詢(xún)、還書(shū)查詢(xún)四個(gè)模塊。4.書(shū)庫(kù)管理,下屬分為:新書(shū)入庫(kù)、圖書(shū)查詢(xún)和圖書(shū)掛失三個(gè)模塊。5.讀者管理,下屬分為:讀者登記、讀者信息查詢(xún)、讀者注銷(xiāo)三個(gè)功能。6.數(shù)據(jù)庫(kù)管理,下屬分為:數(shù)據(jù)庫(kù)備份、數(shù)據(jù)庫(kù)恢復(fù)兩個(gè)模塊書(shū)庫(kù)管理模塊在整體程程序中格的位置:用戶(hù)管理數(shù)據(jù)庫(kù)采用的是SQL Server數(shù)據(jù)庫(kù),建立用戶(hù)權(quán)限表以及設(shè)備信息表,通過(guò)MFC ODBC方
11、式訪(fǎng)問(wèn),使用類(lèi)CRecordset的函數(shù)MoveFirst()、MoveLast()、MoveNext()、MovePrev()、IsBOF()、IsEOF()對(duì)設(shè)備信息表實(shí)現(xiàn)遍歷操作,使用類(lèi)CRecordset的函數(shù)AddNew增加設(shè)備或者函數(shù)Delete刪除信息。并根據(jù)用戶(hù)登錄情況確定用戶(hù)是否可以修改設(shè)備信息,以此實(shí)現(xiàn)后臺(tái)數(shù)據(jù)與前臺(tái)界面操作的一致。在帳戶(hù)被通過(guò)后,用戶(hù)可以使用它來(lái)登錄系統(tǒng),登錄時(shí)系統(tǒng)自動(dòng)查找用戶(hù)表,判斷帳戶(hù)是否存在,存在則提示用戶(hù)登錄成功,并顯示可以的操作;否則,提示不存在該用戶(hù),返回登錄界面,讓用戶(hù)重新輸入信息。另外,經(jīng)過(guò)這個(gè)驗(yàn)證的過(guò)程,提醒用戶(hù)牢記帳號(hào)和密碼,防止他人盜
12、竊個(gè)人信息,從而提高用戶(hù)信息的安全性。進(jìn)行登錄操作時(shí),訪(fǎng)問(wèn)到了用戶(hù)表(User)。在用戶(hù)未成功登錄時(shí),個(gè)人資料功能是被禁止的。只有成功登錄以后,用戶(hù)才有資格修改自己的資料,包括基本信息的修改,帳戶(hù)(昵稱(chēng)或密碼)的更新,帳號(hào)是不可以更改的,一旦服務(wù)器分配以后,始終與帳戶(hù)綁定。方便管理員管理帳戶(hù),也使得系統(tǒng)具有一定的穩(wěn)定性。該模塊訪(fǎng)問(wèn)到了用戶(hù)表和個(gè)人信息表。 備注:當(dāng)在修改密碼時(shí),系統(tǒng)會(huì)確認(rèn)舊密碼,如果輸入的舊密碼錯(cuò)誤,系統(tǒng)會(huì)彈出出錯(cuò)信息,否則才允許更新密碼。并且,如果修改昵稱(chēng),系統(tǒng)會(huì)把修改后的昵稱(chēng)更新到兩個(gè)表中,使得數(shù)據(jù)能夠保持同步,方便管理員的管理和維護(hù),提高了系統(tǒng)的可靠性。系統(tǒng)具有數(shù)據(jù)錄入、
13、數(shù)據(jù)修改、記錄查詢(xún)、報(bào)表打印等功能。較全面滿(mǎn)足了材料庫(kù)存管理的各項(xiàng)工作。該系統(tǒng)采用模塊化原理編程,做到了模塊規(guī)模適中,本身相對(duì)獨(dú)立。模塊化使程序結(jié)構(gòu)清晰,易于設(shè)計(jì)、易于理解,提高了系統(tǒng)的可靠性。用戶(hù)的需求具體體現(xiàn)在各種信息的提供、保存、更新和查詢(xún)統(tǒng)計(jì),這就要求數(shù)據(jù)庫(kù)結(jié)構(gòu)能充分滿(mǎn)足各種信息的輸出和輸入。收集基本數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)以及數(shù)據(jù)處理的流程,組成一份詳盡的數(shù)據(jù)字典,為后面的詳細(xì)設(shè)計(jì)打下基礎(chǔ)。2.書(shū)庫(kù)模塊分析:書(shū)庫(kù)管理需要實(shí)現(xiàn)三個(gè)功能,分別是新書(shū)入庫(kù)、圖書(shū)掛失和圖書(shū)查詢(xún)。模塊主體設(shè)計(jì)如下:六、流程圖(或功能模塊圖)總程序設(shè)計(jì)框圖: 書(shū)庫(kù)管理系統(tǒng)設(shè)計(jì)框圖:七,實(shí)驗(yàn)各個(gè)模塊代碼及相關(guān)分析說(shuō)明:書(shū)庫(kù)管
14、理模塊在整個(gè)程序中的位置1.新書(shū)入庫(kù)模塊先使用VS中的MFC控件建立如下框圖然后再確定按鈕添加以下對(duì)應(yīng)函數(shù)#include "stdafx.h"#include "Library.h"#include "NewBookDlg.h"#include "BookTypeSet.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CNewBookDlg dialogCNewBookDlg:CN
15、ewBookDlg(CWnd* pParent /*=NULL*/): CDialog(CNewBookDlg:IDD, pParent)/AFX_DATA_INIT(CNewBookDlg)m_strBookType = _T("");m_strBookCode = _T("");m_strBookName = _T("");m_strPrice = _T("");m_strPress = _T("");m_strWriter = _T("");m_strBrief = _
16、T("");/AFX_DATA_INITvoid CNewBookDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CNewBookDlg)DDX_Control(pDX, IDC_COMBO_BOOKTYPE, m_ctrBookType);DDX_Control(pDX, IDC_LIST1, m_ctrList);DDX_CBString(pDX, IDC_COMBO_BOOKTYPE, m_strBookType);DDX_Text(pDX, IDC_EDI
17、T_BOOK_CODE, m_strBookCode);DDX_Text(pDX, IDC_EDIT_BOOK_NAME, m_strBookName);DDX_Text(pDX, IDC_EDIT_BOOK_PRICE, m_strPrice);DDX_Text(pDX, IDC_EDIT_PRESS, m_strPress);DDX_Text(pDX, IDC_EDIT_WRITER, m_strWriter);DDX_Text(pDX, IDC_EDIT_BRIEF, m_strBrief);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CNewBookDlg, CDia
18、log)/AFX_MSG_MAP(CNewBookDlg)ON_BN_CLICKED(IDC_BUTTON_NEW, OnButtonNew)ON_BN_CLICKED(IDC_BUTTON_ALL, OnButtonAll)ON_BN_CLICKED(IDC_BUTTON_DELETE, OnButtonDelete)ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CNewBookDlg message handlersBOOL CNewBookDlg:OnInitDialog() CDia
19、log:OnInitDialog();/設(shè)置列表m_ctrList.InsertColumn(0,"圖書(shū)編號(hào)");m_ctrList.InsertColumn(1,"圖書(shū)名稱(chēng)");m_ctrList.InsertColumn(2,"圖書(shū)類(lèi)別");m_ctrList.InsertColumn(3,"作者");m_ctrList.InsertColumn(4,"出版社");m_ctrList.InsertColumn(5,"圖書(shū)價(jià)格");m_ctrList.InsertColum
20、n(6,"登記日期");m_ctrList.InsertColumn(7,"備注說(shuō)明");m_ctrList.SetColumnWidth(0,60);m_ctrList.SetColumnWidth(1,120);m_ctrList.SetColumnWidth(2,80);m_ctrList.SetColumnWidth(3,80);m_ctrList.SetColumnWidth(4,80);m_ctrList.SetColumnWidth(5,80);m_ctrList.SetColumnWidth(6,80);m_ctrList.SetColu
21、mnWidth(7,80);m_ctrList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);/初始化圖書(shū)類(lèi)型CBookTypeSet recordset ;if(!recordset.Open(AFX_DB_USE_DEFAULT_TYPE,"select * from bookType")MessageBox("打開(kāi)數(shù)據(jù)庫(kù)失敗!","數(shù)據(jù)庫(kù)錯(cuò)誤",MB_OK);return FALSE;while(!recordset.IsEOF()m_ctrBookType.Ad
22、dString(recordset.m_type);recordset.MoveNext();recordset.Close();return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSEvoid CNewBookDlg:OnButtonNew() / TODO: Add your control notification handler code hereUpdateData();if(m_strBookCode.IsE
23、mpty()AfxMessageBox("請(qǐng)輸入圖書(shū)編號(hào)!");return;if(m_strBookType.IsEmpty()AfxMessageBox("請(qǐng)輸入圖書(shū)類(lèi)型!");return;if(m_strBookName.IsEmpty()AfxMessageBox("請(qǐng)輸入圖書(shū)名稱(chēng)!");return;CString strSQL;CTime current=CTime:GetCurrentTime();strSQL.Format("select * from bookInfo where code = '
24、%s'",m_strBookCode);if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL)MessageBox("打開(kāi)數(shù)據(jù)庫(kù)失敗!","數(shù)據(jù)庫(kù)錯(cuò)誤",MB_OK);return ;if(m_recordset.GetRecordCount()!=0)m_recordset.Close();AfxMessageBox("該圖書(shū)編號(hào)已經(jīng)存在,請(qǐng)重新輸入!");return;m_recordset.Close();if(!m_recordset.Open(AFX_DB_
25、USE_DEFAULT_TYPE)MessageBox("打開(kāi)數(shù)據(jù)庫(kù)失敗!","數(shù)據(jù)庫(kù)錯(cuò)誤",MB_OK);return ;/添加圖書(shū)記錄m_recordset.AddNew();m_recordset.m_code=m_strBookCode;m_recordset.m_name =m_strBookName;m_recordset.m_type= m_strBookType;m_recordset.m_in_date =current;m_recordset.m_price=m_strPrice ;m_recordset.m_press=m_strP
26、ress ;m_recordset.m_writer=m_strWriter ;m_recordset.m_brief=m_strBrief ;m_recordset.m_isBorrow = FALSE;m_recordset.Update();m_recordset.Close();/更新列表CString strTime;m_ctrList.InsertItem(0,m_strBookCode);m_ctrList.SetItemText(0,1,m_strBookName);m_ctrList.SetItemText(0,2,m_strBookType);m_ctrList.SetIt
27、emText(0,3,m_strWriter);m_ctrList.SetItemText(0,4,m_strPress);m_ctrList.SetItemText(0,5,m_strPrice);strTime.Format("%d-%d-%d",current.GetYear(),current.GetMonth(),current.GetDay();m_ctrList.SetItemText(0,6,strTime);m_ctrList.SetItemText(0,7,m_strBrief);/更新界面顯示m_strBookType = _T(""
28、;);m_strBookCode = _T("");m_strBookName = _T("");m_strPrice = _T("");m_strPress = _T("");m_strWriter = _T("");m_strBrief = _T("");UpdateData(FALSE);void CNewBookDlg:OnButtonAll() / TODO: Add your control notification handler code herem_ctrL
29、ist.DeleteAllItems();m_ctrList.SetRedraw(FALSE);UpdateData(TRUE);CString strSQL;strSQL.Format( "select * from bookInfo ");if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL)MessageBox("打開(kāi)數(shù)據(jù)庫(kù)失敗!","數(shù)據(jù)庫(kù)錯(cuò)誤",MB_OK);return ;int i=0;CString strTime;while(!m_recordset.IsEOF()m
30、_ctrList.InsertItem(i,m_recordset.m_code);m_ctrList.SetItemText(i,1,m_recordset.m_name);m_ctrList.SetItemText(i,2,m_recordset.m_type);m_ctrList.SetItemText(i,3,m_recordset.m_writer);m_ctrList.SetItemText(i,4,m_recordset.m_press);m_ctrList.SetItemText(i,5,m_recordset.m_price);strTime.Format("%d-
31、%d-%d",m_recordset.m_in_date.GetYear(),m_recordset.m_in_date.GetMonth(),m_recordset.m_in_date.GetDay();m_ctrList.SetItemText(i,6,strTime);m_ctrList.SetItemText(i,7,m_recordset.m_brief);i+;m_recordset.MoveNext();m_recordset.Close();m_ctrList.SetRedraw(TRUE);void CNewBookDlg:OnButtonDelete() / TO
32、DO: Add your control notification handler code hereint i = m_ctrList.GetSelectionMark();if(0>i)AfxMessageBox("請(qǐng)選擇一條記錄進(jìn)行刪除!");return;CString strSQL;strSQL.Format("select * from bookInfo where code = '%s' ",m_ctrList.GetItemText(i,0);if(!m_recordset.Open(AFX_DB_USE_DEFAU
33、LT_TYPE,strSQL)AfxMessageBox("打開(kāi)數(shù)據(jù)庫(kù)失敗!");return ;m_recordset.Delete();m_recordset.Close();m_ctrList.DeleteItem(i);/更新界面顯示m_strBookType = _T("");m_strBookCode = _T("");m_strBookName = _T("");m_strPrice = _T("");m_strPress = _T("");m_strWrite
34、r = _T("");m_strBrief = _T("");UpdateData(FALSE);void CNewBookDlg:OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control notification handler code hereint i = m_ctrList.GetSelectionMark();m_strBookType = m_ctrList.GetItemText(i,2);m_strBookCode = m_ctrList.GetItem
35、Text(i,0);m_strBookName = m_ctrList.GetItemText(i,1);m_strPrice = m_ctrList.GetItemText(i,5);m_strPress = m_ctrList.GetItemText(i,4);m_strWriter = m_ctrList.GetItemText(i,3);m_strBrief = m_ctrList.GetItemText(i,7);UpdateData(FALSE);*pResult = 0;2.圖書(shū)查詢(xún)模塊對(duì)查詢(xún)按鈕添加相應(yīng)的函數(shù)如下:#include "stdafx.h"#in
36、clude "Library.h"#include "BorrowSearchDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CBorrowSearchDlg dialogCBorrowSearchDlg:CBorrowSearchDlg(CWnd* pParent /*=NULL*/): CDialog(CBorrowSearchDlg:IDD, pParent)/AFX_DATA_INIT(CBorrowSea
37、rchDlg)m_strBookCode = _T("");m_strReaderCode = _T("");/AFX_DATA_INITvoid CBorrowSearchDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CBorrowSearchDlg)DDX_Control(pDX, IDC_LIST1, m_ctrList);DDX_Text(pDX, IDC_EDIT_BOOKCODE, m_strBookCode);DDX_Text(
38、pDX, IDC_EDIT_READERCODE, m_strReaderCode);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CBorrowSearchDlg, CDialog)/AFX_MSG_MAP(CBorrowSearchDlg)ON_BN_CLICKED(IDC_BUTTON_SEARCH, OnButtonSearch)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CBorrowSearchDlg message handlersBOOL CBorrowSearchDlg:OnInitDialog() CDialog:OnInitDialog(
39、);m_ctrList.InsertColumn(0,"讀者編號(hào)");m_ctrList.InsertColumn(1,"讀者姓名");m_ctrList.InsertColumn(2,"圖書(shū)編號(hào)");m_ctrList.InsertColumn(3,"圖書(shū)名稱(chēng)");m_ctrList.InsertColumn(4,"圖書(shū)類(lèi)別");m_ctrList.InsertColumn(5,"圖書(shū)價(jià)格");m_ctrList.InsertColumn(6,"借出日期"
40、;);m_ctrList.InsertColumn(7,"歸還日期");m_ctrList.InsertColumn(8,"操作員");m_ctrList.SetColumnWidth(0,60);m_ctrList.SetColumnWidth(1,60);m_ctrList.SetColumnWidth(2,80);m_ctrList.SetColumnWidth(3,100);m_ctrList.SetColumnWidth(4,80);m_ctrList.SetColumnWidth(5,80);m_ctrList.SetColumnWidth(
41、6,80);m_ctrList.SetColumnWidth(7,80);m_ctrList.SetColumnWidth(8,80);m_ctrList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSEvoid CBorrowSearchDlg:OnButtonSearch() / TODO: Add
42、 your control notification handler code hereUpdateData();CString strSQL;if(!m_strReaderCode.IsEmpty()&!m_strBookCode.IsEmpty()strSQL.Format("select * from borrowInfo where reader_code = '%s' and book_code = '%s'" ,m_strReaderCode,m_strBookCode);else if(!m_strReaderCode.
43、IsEmpty()strSQL.Format("select * from borrowInfo where reader_code = '%s' " ,m_strReaderCode);else if(!m_strBookCode.IsEmpty()strSQL.Format("select * from borrowInfo where book_code = '%s'" ,m_strBookCode);else strSQL="select * from borrowInfo"m_ctrList.
44、DeleteAllItems();m_ctrList.SetRedraw(FALSE);if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL)MessageBox("打開(kāi)數(shù)據(jù)庫(kù)失敗!","數(shù)據(jù)庫(kù)錯(cuò)誤",MB_OK);return ;int i=0;CString strTime;while(!m_recordset.IsEOF()m_ctrList.InsertItem(i,m_recordset.m_reader_code);m_ctrList.SetItemText(i,1,m_recordset.m
45、_reader_name);m_ctrList.SetItemText(i,2,m_recordset.m_book_code);m_ctrList.SetItemText(i,3,m_recordset.m_book_name);m_ctrList.SetItemText(i,4,m_recordset.m_price);m_ctrList.SetItemText(i,5,m_recordset.m_book_type);strTime.Format("%d-%d-%d",m_recordset.m_borrow_date.GetYear(),m_recordset.m_
46、borrow_date.GetMonth(),m_recordset.m_borrow_date.GetDay();m_ctrList.SetItemText(i,6,strTime);strTime.Format("%d-%d-%d",m_recordset.m_return_date.GetYear(),m_recordset.m_return_date.GetMonth(),m_recordset.m_return_date.GetDay();m_ctrList.SetItemText(i,7,strTime);m_ctrList.SetItemText(i,8,m_
47、recordset.m_operator);i+;m_recordset.MoveNext();m_recordset.Close();m_ctrList.SetRedraw(TRUE);3.圖書(shū)掛失模塊對(duì)掛失函數(shù)添加相應(yīng)代碼#include "stdafx.h"#include "Library.h"#include "BookLostDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CBook
48、LostDlg dialogCBookLostDlg:CBookLostDlg(CWnd* pParent /*=NULL*/): CDialog(CBookLostDlg:IDD, pParent)/AFX_DATA_INIT(CBookLostDlg)m_strCode = _T("");/AFX_DATA_INITvoid CBookLostDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CBookLostDlg)DDX_Control(pDX, IDC_L
49、IST1, m_ctrList);DDX_Text(pDX, IDC_EDIT_BOOK_CODE, m_strCode);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CBookLostDlg, CDialog)/AFX_MSG_MAP(CBookLostDlg)ON_BN_CLICKED(IDC_BUTTON_LOST, OnButtonLost)ON_BN_CLICKED(IDC_BUTTON_ALL, OnButtonAll)ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)/AFX_MSG_MAPEND_MESSAGE_MAP()
50、/ CBookLostDlg message handlersBOOL CBookLostDlg:OnInitDialog() CDialog:OnInitDialog();/設(shè)置列表m_ctrList.InsertColumn(0,"圖書(shū)編號(hào)");m_ctrList.InsertColumn(1,"圖書(shū)名稱(chēng)");m_ctrList.InsertColumn(2,"圖書(shū)類(lèi)別");m_ctrList.InsertColumn(3,"作者");m_ctrList.InsertColumn(4,"出版社&quo
51、t;);m_ctrList.InsertColumn(5,"圖書(shū)價(jià)格");m_ctrList.InsertColumn(6,"登記日期");m_ctrList.InsertColumn(7,"備注說(shuō)明");m_ctrList.SetColumnWidth(0,60);m_ctrList.SetColumnWidth(1,120);m_ctrList.SetColumnWidth(2,80);m_ctrList.SetColumnWidth(3,80);m_ctrList.SetColumnWidth(4,80);m_ctrList.S
52、etColumnWidth(5,80);m_ctrList.SetColumnWidth(6,80);m_ctrList.SetColumnWidth(7,80);m_ctrList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSEvoid CBookLostDlg:OnButtonLost() / T
53、ODO: Add your control notification handler code hereUpdateData();if(m_strCode.IsEmpty()AfxMessageBox("請(qǐng)輸入待掛失的圖書(shū)編號(hào)!");return;CString strSQL;strSQL.Format("select * from bookInfo where code = '%s' ",m_strCode);if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL)AfxMessageBo
54、x("打開(kāi)數(shù)據(jù)庫(kù)失敗!");return ;if(m_recordset.GetRecordCount()=0)AfxMessageBox("沒(méi)有找到該圖書(shū)!");m_recordset.Close();return;m_recordset.Delete();m_recordset.Close();AfxMessageBox("圖書(shū)掛失成功!",MB_ICONINFORMATION );m_ctrList.DeleteAllItems();/更新界面顯示m_strCode = _T("");UpdateData(FALSE);void CBookLostDlg:OnButtonAll() / TODO: Add your control notification handler code hereCString strSQL;strSQL.Format( "select * from bookInfo ");RefreshData( strSQL);void CBookLostDlg:OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國(guó)飼料中間體化學(xué)品行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球高速標(biāo)簽打印機(jī)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)汽車(chē)座椅加熱通風(fēng)線(xiàn)束行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球條形碼庫(kù)存管理系統(tǒng)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球生物基電池行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)農(nóng)場(chǎng)畜牧管理軟件行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球印刷級(jí)熱敏紙行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 擔(dān)保函保證合同
- 2025監(jiān)控售后維修合同
- 房屋買(mǎi)賣(mài)合同范文
- 河南2025年河南職業(yè)技術(shù)學(xué)院招聘30人筆試歷年參考題庫(kù)附帶答案詳解
- 成人氧氣吸入療法-中華護(hù)理學(xué)會(huì)團(tuán)體標(biāo)準(zhǔn)
- 北方春節(jié)的十大風(fēng)俗
- 婚介公司紅娘管理制度
- 煤礦電氣試驗(yàn)規(guī)程
- JCT796-2013 回彈儀評(píng)定燒結(jié)普通磚強(qiáng)度等級(jí)的方法
- 物業(yè)客服培訓(xùn)課件PPT模板
- 員工工資條模板
- 火力發(fā)電廠節(jié)能管理制度實(shí)施細(xì)則
- 華為攜手深圳國(guó)際會(huì)展中心創(chuàng)建世界一流展館
- 2023版思想道德與法治專(zhuān)題2 領(lǐng)悟人生真諦 把握人生方向 第3講 創(chuàng)造有意義的人生
評(píng)論
0/150
提交評(píng)論