C 語言課程設(shè)計(jì) MFC設(shè)計(jì) 圖書管理系統(tǒng)_第1頁
C 語言課程設(shè)計(jì) MFC設(shè)計(jì) 圖書管理系統(tǒng)_第2頁
C 語言課程設(shè)計(jì) MFC設(shè)計(jì) 圖書管理系統(tǒng)_第3頁
C 語言課程設(shè)計(jì) MFC設(shè)計(jì) 圖書管理系統(tǒng)_第4頁
C 語言課程設(shè)計(jì) MFC設(shè)計(jì) 圖書管理系統(tǒng)_第5頁
已閱讀5頁,還剩80頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

天津理工大學(xué)聾人工學(xué)院

《C++語言課程設(shè)計(jì)》

專業(yè):網(wǎng)絡(luò)工程

年級:2015級一班

姓名:胡志沖

學(xué)號:________________

成績:________________

完成日期:20161220

目錄

第一章簡介...........................................................................1

1.1設(shè)計(jì)題目........................................................................1

1.2指導(dǎo)教師.......................................................................1

第二章《圖書管理系統(tǒng)》設(shè)計(jì)意義.......................................................2

2.1設(shè)計(jì)內(nèi)容概述...................................................................2

2.2需求分析........................................................................2

2.3設(shè)計(jì)意義........................................................................2

第三章總體設(shè)計(jì)........................................................................3

3.1系統(tǒng)運(yùn)行環(huán)境..................................................................3

3.2系統(tǒng)結(jié)構(gòu)圖.....................................................................3

3.3系統(tǒng)各模塊的功能.................................................................4

3.4對象數(shù)據(jù)結(jié)構(gòu)....................................................................7

第四章詳細(xì)設(shè)計(jì)......................................................................8

4.1程序源代碼.....................................................................8

4.1.1登陸模塊...................................................................8

4.1.2注冊模塊..................................................................11

4.1.3主菜單模塊................................................................13

4.1.4編輯模塊..................................................................17

4.1.5查詢模塊..................................................................27

4.1.6瀏覽模塊..................................................................34

4.1.7設(shè)置模塊..................................................................39

4.1.8組合框模塊................................................................41

4.1.9圖書信息模塊..............................................................43

4.1.10資源文件.................................................................45

4.2系統(tǒng)測試.......................................................................55

4.2.1登陸對話框................................................................55

4.2.2編輯對話框................................................................58

4.2.3瀏覽對話框................................................................62

4.2.4查詢對話框................................................................66

4.2.5設(shè)置對話框................................................................71

4.2.6退出......................................................................73

4.2.7測試結(jié)束運(yùn)行..............................................................73

4.3問題分析.......................................................................73

C++語言課程設(shè)計(jì)

第五章結(jié)論................................................................................80

參考文獻(xiàn).............................................................................81

C++語言課程設(shè)計(jì)

第一章簡介

1.1設(shè)計(jì)題目

圖書管理系統(tǒng)

1.2指導(dǎo)教師

C++語言課程設(shè)計(jì)

第二章《圖書管理系統(tǒng)》設(shè)計(jì)意義

2.1設(shè)計(jì)內(nèi)容概述

本課程設(shè)計(jì)圖書管理系統(tǒng),必修要滿足使用方便、操作靈活和數(shù)據(jù)安全等設(shè)計(jì)需

求。本系統(tǒng)在設(shè)計(jì)時(shí)應(yīng)滿足以下幾個(gè)目標(biāo):

1.采用人機(jī)對話的操作方式,界面設(shè)計(jì)美觀友好,操作靈活、方便、快捷、準(zhǔn)

確數(shù)據(jù)保存安全可靠。

2.實(shí)現(xiàn)對圖書信息的管理功能。

3.系統(tǒng)運(yùn)行穩(wěn)定、安全可靠。

2.2需求分析

信息技術(shù)的飛速發(fā)展給圖書企業(yè)的管理帶來了全新的變革.采用圖書管理系統(tǒng)對

圖書企業(yè)的經(jīng)營運(yùn)作進(jìn)行全程管理.不僅可以使企業(yè)擺脫以往人工管理產(chǎn)生的一系列

問題,而且可以提高管理效率、降低管理成本、增加經(jīng)濟(jì)效益。通過管理系統(tǒng)對圖書

企業(yè)的發(fā)展進(jìn)行規(guī)劃,可以收集大量關(guān)鍵可靠的數(shù)據(jù)。企業(yè)決策層分析這些數(shù)據(jù),做

出合理決策,及時(shí)調(diào)整,使之能夠更好地遵循市場的銷售規(guī)律,適應(yīng)市場的變化,從

而讓企業(yè)能夠在激烈的行業(yè)競爭中占據(jù)一席之地。

2.3設(shè)計(jì)意義

1.有助于加深我們對C++程序設(shè)計(jì)這門課程的理解,我們在課堂上學(xué)的都是基礎(chǔ)

理論知識,對于如何用程序語言來描述所學(xué)知識還是有一定難度。通過課程設(shè)計(jì),我

們可以真正理解其內(nèi)涵。

2.有利于我們邏輯思維的鍛煉,程序設(shè)計(jì)能直接有效地訓(xùn)練學(xué)生的創(chuàng)新思維、

培養(yǎng)分析問題、解決問題能力。即使是一個(gè)簡單的程序,依然需要學(xué)生有條不理的構(gòu)

思。

3.有利于培養(yǎng)嚴(yán)謹(jǐn)認(rèn)真的學(xué)習(xí)態(tài)度,在程序設(shè)計(jì)過程里,當(dāng)我們輸入程序代碼

的時(shí)候,如果不夠認(rèn)真或細(xì)心,那么可能就導(dǎo)致語法錯(cuò)誤,從而無法得出運(yùn)行結(jié)果。

那么,這個(gè)我們反復(fù)調(diào)試,反復(fù)修改的過程,其實(shí)也是對我們認(rèn)真嚴(yán)謹(jǐn)治學(xué)的一個(gè)鍛

煉。

2

C++語言課程設(shè)計(jì)

第三章總體設(shè)計(jì)

3.1系統(tǒng)運(yùn)行環(huán)境

1.硬件環(huán)境

PC機(jī)

2.軟件環(huán)境

操作系統(tǒng):Windows10

開發(fā)工具:Visualstudio2010

3.2系統(tǒng)結(jié)構(gòu)圖

圖書管理系統(tǒng)結(jié)構(gòu)圖如圖3.1所以。該系統(tǒng)包括:添加、修改、刪除、查詢、瀏

見寺。

圖3.1系統(tǒng)的功能模塊圖

3

C++語言課程設(shè)計(jì)

3.3系統(tǒng)各模塊的功能

表3.2主要類介紹

類名派生自說明

為初始化應(yīng)用程序Window應(yīng)用程序基類的派

CtianjinAppCWinApp

生類

LoginCDialog用戶登錄對話框

RegisterCDialog注冊對話框

CtianjinDlgCDialog主程序界面對話框

由于直接用CStatic創(chuàng)建的靜態(tài)文本控件的

staCStatic樣式是默認(rèn),但不是理想的效果,故再次繼承

CStatic,可以重新改變樣式。

由于直接用CButton創(chuàng)建的按鈕控件的樣式是

buttonCButton默認(rèn),但不是理想的效果,故再次繼承

CButton,可以重新改變樣式。

ExploreCDialog瀏覽對話框

由于直接用CComboBox創(chuàng)建的組合框控件的

ComboxCComboBox樣式是默認(rèn),但不是理想的效果,故再次繼承

CComboBox,可以重新改變樣式。

enteringCDialog編輯對話框

由于直接用CEdit創(chuàng)建的編輯框的功能還不

EditPriceCEdit夠,所以再次繼承CEdit,可以多加功能-限

制輸入字符

queryCDialog查詢對話框

SettingCDialog設(shè)置對話框

AboutCDialog關(guān)于對話框

表3.3主要函數(shù)介紹

源文件函數(shù)名稱功能描述

Explore,cppOnlnitDialog對對話框進(jìn)行初始化處理

OpenFile打開文件函數(shù)

OnC1ickedButtonl響應(yīng)“升序”按鈕實(shí)現(xiàn)排序該圖書信息

OnC1ickedButton2響應(yīng)“升序”按鈕實(shí)現(xiàn)排序該圖書信息

ExchangeBook交換各對象的數(shù)據(jù)

4

C++語言課程設(shè)計(jì)

表3.4主要函數(shù)介紹

源文件函數(shù)名稱功能描述

CtianjinDlg.OnlnitDialog對對話框進(jìn)行初始化處理

cpp

OnPaint對對話框繪制部分應(yīng)用窗口

OnQueryDragIcon系統(tǒng)獲取鼠標(biāo)圖標(biāo)

OnTimer用于實(shí)現(xiàn)定時(shí)控制功能

UpdateFile用于實(shí)現(xiàn)更新文件來計(jì)算收了幾本書

OnExit響應(yīng)“退出”按鈕實(shí)現(xiàn)退出本程序

OnEnter響應(yīng)“編輯”按鈕實(shí)現(xiàn)啟動編輯對話框

OnAbout響應(yīng)“關(guān)于”按鈕實(shí)現(xiàn)啟動關(guān)于對話框

OnQuery響應(yīng)“查詢”按鈕實(shí)現(xiàn)啟動查詢對話框

OnSetting響應(yīng)“設(shè)置”按鈕實(shí)現(xiàn)啟動設(shè)置對話框

OnExplore響應(yīng)“瀏覽”按鈕實(shí)現(xiàn)啟動瀏覽對話框

表3.5主要函數(shù)介紹

源文件函數(shù)名稱功能描述

Entering,cppOnlnitDialog對對話框進(jìn)行初始化處理

OnCtlColor控件窗口函數(shù)用于畫出控件菜單處理

OnBnClickedOk添加記錄信息

Check檢查輸入的內(nèi)容是否為空

Input輸入記錄信息

OnClose關(guān)閉該對話框

OnLvnItemchangedList1某個(gè)項(xiàng)已經(jīng)發(fā)生變化

OnBnC1icked0k2響應(yīng)“刪除”按鈕實(shí)現(xiàn)刪除該圖書信息

OnBnC1ickedOk3響應(yīng)“修改”按鈕實(shí)現(xiàn)修改該圖書信息

OnLvnCo1umnclickListl單擊列,用于勾選全部

OnNMClickListl當(dāng)鼠標(biāo)單擊列表視圖控件時(shí)產(chǎn)生

OnBnC1ickedButton1響應(yīng)“清空”按鈕實(shí)現(xiàn)修改該圖書信息

5

C++語言課程設(shè)計(jì)

表3.6主要函數(shù)介紹

源文件函數(shù)名稱功能描述

query,cppOnlnitDialog對對話框進(jìn)行初始化處理

OnBnC1ickedRadiol響應(yīng)“書號”按鈕實(shí)現(xiàn)選擇該方式查詢

0nBnClickedRadio2響應(yīng)“書名”按鈕實(shí)現(xiàn)選擇該方式查詢

OnBnC1ickedRadio3響應(yīng)“作者”按鈕實(shí)現(xiàn)選擇該方式查詢

OnBnC1ickedRadio4響應(yīng)“出版社”按鈕實(shí)現(xiàn)選擇該方式查詢

OnBnC1ickedRadio5響應(yīng)“任何內(nèi)容”按鈕實(shí)現(xiàn)選擇該方式查詢

OnBnC1ickedButton1關(guān)閉該對話框

QueryNum查詢書號函數(shù)

QueryName查詢書名函數(shù)

QueryAuthor查詢作者函數(shù)

QueryPress查詢出版社函數(shù)

QueryAny查詢?nèi)魏魏瘮?shù)

OpenFile打開文件

Tip提示用于告訴用戶找到了多少本

insert將已找到的幾本書插入在顯示上

OnBnC1ickedButton2響應(yīng)“查詢”按鈕實(shí)現(xiàn)根據(jù)該方式查詢

6

C++語言課程設(shè)計(jì)

3.4對象數(shù)據(jù)結(jié)構(gòu)

每個(gè)對象記錄著每本書的信息,為了保護(hù)數(shù)據(jù)安全,故把其的這些成員變量聲明

為private,就是說在類外的話,不能直接調(diào)用對象的成員變量名來賦值或者獲取其

值,這就達(dá)到了保護(hù)數(shù)據(jù),但是在某個(gè)時(shí)候遇到數(shù)據(jù)不對可能需要修改,這時(shí)就要加

成員函數(shù)來修改或者獲取,而且把成員函數(shù)聲明為public,由于在類外需要正常調(diào)用,

故聲明為公開。其表如下。

表3.7主要變量介紹

變量名類型功能描述

NameChar書名

NumChar書號

AuthorChar作者

PressChar出版社

TimeChar時(shí)間

PriceDouble價(jià)格

表3.8主要函數(shù)介紹

源文件函數(shù)名稱功能描述

book,cppSetName設(shè)置當(dāng)前對象的成員變量name的值

SetNum設(shè)置當(dāng)前對象的成員變量num的值

SetAuthor設(shè)置當(dāng)前對象的成員變量Author的值

SetPress設(shè)置當(dāng)前對象的成員變量Press的值

SetTime設(shè)置當(dāng)前對象的成員變量Time的值

SetPrice設(shè)置當(dāng)前對象的成員變量Price的值

GetName獲取當(dāng)前對象的成員變量name的值

GetNum獲取當(dāng)前對象的成員變量Num的值

GetAuthor獲取當(dāng)前對象的成員變量Author的值

GetPress獲取當(dāng)前對象的成員變量Press的值

GetTime獲取當(dāng)前對象的成員變量Time的值

GetPrice獲取當(dāng)前對象的成員變量Price的值

7

C++語言課程設(shè)計(jì)

第四章詳細(xì)設(shè)計(jì)

4.1程序源代碼

4.1.1登陸模塊

Login,h

ttpragmaonce

ttinclude^tianjinDig.h〃

ttinclude"afxwin.h〃

//Login對話框

classLogin:publicCDialog

{

DECLARE_DYNAMIC(Login)

inta;

public:

Login(CWnd*pParent=NULL);//標(biāo)準(zhǔn)構(gòu)造函數(shù)

virtual~Login();

//對話框數(shù)據(jù)

enum{IDD=IDD_L0GIN};

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);

CtianjinDlgdig;

DECLARE_MESSAGE_MAP()

public:

virtualBOOLOnlnitDialogO;

afx_msgvoidOnClose();

CStringuser;

CStringpassword;

afx_msgvoidOnBnClickedOk();

CButtonregis;

afx_msgvoidOnBnClickedButtonl();

Login,cpp

ttinclude/zstdafx.h〃

ttinclude"tianjin.h〃

ttinclude〃Login.h〃

ttinclude/zafxdialogex.h〃

ttinclude"Register.h〃

IMPLEMENT_DYNAMIC(Login,CDialog)

Login::Login(CWnd*pParent/*=NULL*/)

:CDialog(Login::IDD,pParent)

,user(_T(///Z))

8

C++語言課程設(shè)計(jì)

,password(_T(""))

)

Login::~Login()

(

)

voidLogin::DoDataExchange(CDataExchange*pDX)

(

CDialog::DoDataExchange(pDX);

DDX_Text(pDX,IDC_EDIT3,user);

DDX_Text(pDX,IDC_EDIT4,password);

DDX_Control(pDX,IDC_BUTTON1,regis);

}

BEGIN_MESSAGE_MAP(Login,CDialog)

0N_WM_CL0SE()

ON_BN_CLICKED(IDOK,feLogin::0nBnClicked0k)

ON_BN_CLICKED(IDC_BUTTON1,&Login::OnBnClickedButtonl)

END_MESSAGE_MAP()

BOOLLogin::OnlnitDialog()

(

CDialog::OnlnitDialog();

a=0;〃初始化a的值為0用于判斷該值是否退出本程序當(dāng)輸入密碼錯(cuò)誤,就使該a

的值增加1

CRectr;〃矩形的類,數(shù)據(jù)成員是矩形左上角的x的坐標(biāo),矩形左上角Y的坐標(biāo),

矩形右下角x的坐標(biāo),矩形右下角Y的坐標(biāo)

CStringuser;

this->GetClientRect(&r);〃是獲得窗口的當(dāng)前的客戶區(qū),把各坐標(biāo)值保存在r

對象。

this-〉MoveWindow(600,300,r.right,r.bottom);〃根據(jù)上面獲得窗口的大小,來

調(diào)整并且移動。

GetPrivateProfileString("login","user","NULL",user.GetBuffer(20),20,".

/setting,ini");

//從setting,ini配置文件中的login節(jié)名中獲取該user鍵名的值并保存在user的

值,如果找不到該鍵名,則保存第三個(gè)參

〃數(shù)的值即默認(rèn)的值表示未注冊的賬號,反之找到了該值,表示已經(jīng)注冊了

if(user!=〃NULL〃){〃用于判斷上面獲得的值是否已經(jīng)注冊過如注冊過,則執(zhí)行

if()后邊的語句

regis.EnableWindow(O);〃在該函數(shù)的參數(shù)賦值為0表示禁止指定的控件接受鼠

標(biāo)和鍵盤的輸入由于該已經(jīng)注冊過的。

regis.SetWindowTextA("已注冊");//指定該控件的內(nèi)容設(shè)為"已注冊”用于提示

}

returnTRUE;

9

C++語言課程設(shè)計(jì)

)

voidLogin::0nClose()

(

CDialog::0nClose();

}

voidLogin::OnBnClickedOk()

(

this-〉UpdateData(l);〃將各控件中的數(shù)據(jù)保存到相應(yīng)的變量分別為“user"”

password”

if(!user.IsEmpty()&&!password.IsEmpty())〃檢查該各變量的值是否為空,如

該值為空,就執(zhí)行else后邊的語句

(

CStringuserl,password];〃定義兩個(gè)字符串類變量用于從配置文件的注冊

過的用戶及密碼的值保存在該變量的

GetPrivateProfileString("login","user","NULL",userl.GetBuffer(20),20,“

./setting.ini");〃從本身程序的當(dāng)前的setting,ini配置

〃文件中的login節(jié)名中獲取該user鍵名的值并保存在userl的值,如果找

不到該鍵名,則保存默認(rèn)值為”NULL"

GetPrivateProfileString("login","password","NULL",passwordl.GetBuffer(

20),20,/setting,ini");〃如同上面的方法

if(user==userl&&password==passwordl)〃對比各值是否一致,滿足此條件表示該用

戶名及密碼都是正確,可以登陸,即執(zhí)行if()后邊的語句

(

this->ShowWindow(SW_HIDE);〃把該對話框的顯示方式為隱藏

dig.DoModal();〃啟動主窗口的對話框

CDialog::0n0K();

}

else{

a++;〃密碼錯(cuò)誤次數(shù)

if(a〉3)〃如超過3次的錯(cuò)誤密碼就執(zhí)行if()后邊的語句

{CDialog::0nCancel();

return;

〃調(diào)用關(guān)閉該對話框的函數(shù)

)

CStringd;

d.Format("用戶名或者密碼錯(cuò)誤%d次超過三次錯(cuò)誤即將自動退出”,a);

MessageBox(d,"登陸提示”,MB_0K|MB_ICONWARNING);〃用于提示密碼錯(cuò)誤以避

免令人覺得這程序有問題

)

}

else

MessageBox。用戶名或者密碼的字符串為空〃,〃登陸提示

10

C++語言課程設(shè)計(jì)

”,MB_OK|MB」CONWARNING);〃當(dāng)該值為空,則執(zhí)行該語句用于提示。

)

voidLogin::OnBnClickedButtonl()

(

Registerdialog;〃定義注冊對話框的對象變量

dialog.DoModal();〃啟動注冊對話框

)

};

4.1.2注冊模塊

Register.h

Spragmaonce

ttinclude"afxwin.h〃

//Register對話框

classRegister:publicCDialog

{

DECLARE_DYNAMIC(Register)

public:

Register(CWnd*pParent=NULL);//標(biāo)準(zhǔn)構(gòu)造函數(shù)

virtual^Register();

//對話框數(shù)據(jù)

enum{IDD=IDD_REGISTER};

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDV支持

DECLARE_MESSAGE_MAP()

public:

afx_msgvoidOnBnClickedOk();

CStringuser;

CStringpassword;

CStringpasswordl;

};

Register,cpp

ttinclude"stdafx.h〃

ttinclude〃tianjin.h〃

ttinclude"Register.h〃

ttinclude/zafxdialogex.h〃

//Register對話框

IMPLEMENT_DYNAMIC(Register,CDialog)

Register::Register(CWnd*pParent/*=NULL*/)

:CDialog(Register::IDD,pParent)

,user(_T(///Z))

,password(_T(〃〃))

,passwordl(_T(〃〃))

11

C++語言課程設(shè)計(jì)

)

Register:^Register()

(

}

voidRegister::DoDataExchange(CDataExchange*pDX)

(

CDialog::DoDataExchange(pDX);

DDX_Text(pDX,IDC_EDIT1,user);

DDX_Text(pDX,IDC_EDIT6,password);

DDX_Text(pDX,IDC_EDIT3,passwordl);

)

BEGIN_MESSAGE_MAP(Register,CDialog)

ON_BN_CLICKED(IDOK,feRegister::OnBnClickedOk)

END_MESSAGE_MAP()

voidRegister::OnBnClickedOk()

(

this->UpdateData();〃默認(rèn)值是TRUE,即從控件傳給變量

if(!user.IsEmpty()&&!password.IsEmpty()&&!passwordl.IsEmpty())〃各變量

的字符串是否為空,如都不為空,則執(zhí)行ifO后邊的語句繼續(xù)注冊

(

if(password==passwordl)〃新密碼與第二次新密碼對比下,如相等,則繼續(xù)執(zhí)行

注冊,反之不繼續(xù)注冊

{if(IDOK==MessageBox(“確定要注冊該賬號嗎?注冊提示”,MB_OKCANCEL|

MB_ICONQUESTION))〃輸出提示是否要確定注冊,如點(diǎn)擊確認(rèn)返回值為IDOK

(

WritePrivateProfileString("login","user",user,,f./setting,ini");

〃〃向該setting.ini配置文件中的login節(jié)名中設(shè)置該user鍵名的值為user

的值

WritePrivateProfileString("login","password”,password,/setting,ini")

HWNDbutton;〃定義窗口句柄

this->GetParent()->GetDlgItem(IDC_BUTTONl,&button);〃獲取當(dāng)前窗口的父

窗口句柄(登陸對話框),然后通過父窗口?柄獲取指定參數(shù)ID為IDC_BUTTON1的子

元素的句柄并綁定button窗口句柄

::SetWindowTextA(button,“已注冊");〃改變指定button窗口句柄的文本內(nèi)容

為“已注冊〃。

::EnableWindow(button,0);〃第二個(gè)參數(shù)的值為0表示禁止指定的控件接受鼠

標(biāo)和鍵盤的輸入

MessageBox(〃已經(jīng)成功注冊該賬號:〃+user+〃!〃,〃注冊提示〃,MB_0K|

MB_ICONASTERISK);〃注冊成功輸出提示

CDialog::0nCancel();

})

else

12

C++語言課程設(shè)計(jì)

MessageBox(〃新密碼與第二次新密碼不一致請注意輸入正確!〃,〃密碼提示

〃,MB_0K|MB_ICONEXCLAMATION);

}

else

MessageBox(zz用戶名或者密碼的字符串為空〃,〃注冊提示

”,MB_0K|MB_ICONWARNING);

)

41.3主菜單模塊

tianjinDlg.h

Spragmaonce

ttinclude"button.h〃

ttinclude〃sta.h〃

#incIndecentering.h〃

ttinclude^query.h〃

ttinclude^Setting.h〃

ttinclude^Explore.h〃

//CtianjinDlg對話框

classCtianjinDlg:publicCDialogEx

{

//構(gòu)造

public:

CtianjinDlg(CWnd*pParent=NULL);//標(biāo)準(zhǔn)構(gòu)造函數(shù)

//對話框數(shù)據(jù)

enum{IDD=IDD_TIANJIN_DIALOG};

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);

//實(shí)現(xiàn)

protected:

HICONm_hlcon;

CToolBartoolbar;

CStatusBarstatusbar;

CImageListtoolimag;

CImageListtoolhotimag;

buttonbut2;

inta;

intb;

virtualBOOLOnlnitDialogO;

afx_msgvoidOnPaint();

afx_msgHCURSOROnQueryDraglcon();

DECLARE_MESSAGE_MAP()

public:

afx_msgvoidOnTimer(UINTPTRnIDEvent);

buttonbutl;

13

C++語言課程設(shè)計(jì)

voidUpdateFile();

stastat,statl;

afx_msgvoidOnExit();

afx_msgvoidOnEnter();

afx_msgvoidOnAbout();

protected:

public:

afx_msgvoidOnQuery();

afx_msgvoidOnSettingO;

afx_msgvoidOnExplore();

);

tianjinDlg.cpp

ttinclude"stdafx.h〃

ttinclude〃tianjin.h〃

ttinclude"tianjinDlg.h〃

ttinclude/zafxdialogex.h〃

#includezzAbout.h〃

ttifdef_DEBUG

ttdefinenewDEBUG_NEW

ttendif

CtianjinDig::CtianjinDig(CWnd^pParent/*=NULL*/)

:CDialogEx(CtianjinDig::IDD,pParent)

m_hlcon=AfxGetApp()->LoadIcon(IDRMAINFRAME);

)

voidCtianjinDig::DoDataExchange(CDataExchange*pDX)

CDialogEx::DoDataExchange(pDX);

DDX_Control(pDX,IDOK,butl);

DDXControl(pDX,TIC,stat);

BEGIN_MESSAGE_MAP(CtianjinDlg,CDialogEx)

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_WM_TIMER()

0N_C0MMAND(1006,&CtianjinDig::OnExit)

0N_C0MMAND(1001,&CtianjinDig::OnEnter)

0N_C0MMAND(1003,&CtianjinDlg::OnQuery)

0N_C0MMAND(1004,&CtianjinDlg::OnSetting)

0N_C0MMAND(1005,&CtianjinDig::OnAbout)

0N_C0MMAND(1002,&CtianjinDig::OnExplore)

END_MESSAGE_MAP()

BOOLCtianjinDlg::OnInitDialog()

14

C++語言課程設(shè)計(jì)

CDialogEx::OnInitDialog();

CBitmapbit[7];

bit[0].LoadBitmapA(IDB_BITMAP1);

bit[l].LoadBitmapA(IDB_BITMAP2);

bit[2].LoadBitmapA(IDB_BITMAP3);

bit[3].LoadBitmapA(IDB_BITMAP4);

bit[4].LoadBitmapA(IDB_BITMAP5);

bit[5].LoadBitmapA(IDB_BITMAP6);

bit[6].LoadBitmapA(IDB_BITMAP8);

toolimag.Create(70,50,ILC_C0L0R|ILC_MASK,0,0);

for(inti=0;i<6;i++)

toolimag.Add(&bit[i],ILC_MASK);

toolhotimag.Create(58,60,ILC_C0L0R|ILCMASK,0,0);

toolhotimag.Add(&bit[6],ILC_C0L0R16);

toolbar.Create(this);

UINTbuttons[6]={1001,1002,1003,1004,1005,1006);

toolbar.SetButtons(buttons,6);

charbuttontext[][7]={〃編輯〃,〃瀏覽〃,〃查詢〃,〃設(shè)置〃,〃關(guān)于〃,〃退出〃};

for(inti=0;i<6;i++)

toolbar.SetButtonText(i,buttontext[i]);

toolbar.GetToolBarCtrl().SetlmageList(fetoolimag);

toolbar.GetToolBarCtrl().SetHotlmageList(fetoolhotimag);

toolbar.SetSizes(CSize(80,80),CSize(70,50));

toolbar.GetToolBarCtrl().SetStyle(CCS_T0P|TBSTYLE_FLAT);

statusbar.Create(this);

UINTpens[3]={100,101,102};

statusbar.Setindicators(pens,3);

statusbar.SetPaneText(0,〃作者:胡志沖〃);

UpdateFile();

statusbar.SetPaneText(2,CTime::GetCurrentTime().Format(〃%Y:%m:%d:%H:%M:%S

〃));

for(inti=0;i<3;i++)

statusbar.SetPanelnfo(i,pens[i],SBPS_P0P0UT,180);

a=10;

b=0;

SetTimer(0,500,NULL);

this->RepositionBars(AFX_IDW_C0NTR0LBAR_FIRST,AFX_IDW_C0NTR0LBAR_LAST,0);

returnTRUE;//除酢將焦點(diǎn)設(shè)置到控祥,否則返向TRUE

)

voidCtianjinDig::0nPaint()

if(IsIconicO)

15

C++語言課程設(shè)計(jì)

}

else

{CRectdialogrect;

this->GetClientRect(dialogrect);

CDCpic;

CBitmappicl;

BITMAPinfo;

picl.LoadBitmapA(IDB_BITMAP7);

picl.GetBitmap(&info);

CPaintDCde(this);

pic.CreateCompatibleDC(&dc);

pic.SelectObject(fepicl);

de.StretchBlt(0,0,dialogrect.right,dialogrect.bottom,&pic,0,0,info.bmW

idth,info.bmHeight,SRCCOPY);

CDialogEx::0nPaint();

}

}

HCURSORCtianjinDig::OnQueryDragIcon()

{

returnstatic_cast<HCURSOR>(m_hlcon);

)

voidCtianjinDlg::0nTimer(UINT_PTRnIDEvent)

(CRectdialogrect;

this->GetClientRect(dialogrect);

statusbar.SetPaneText(2,CTime::GetCurrentTime().Format(zz%Y:%m:%d:%

H:%M:%SZZ));

stat.MoveWindow(a,dialogrect.bottom-402,260,50);

if(a>=dialogrect.right-270)

b=l;

elseif(a<=50)

b=0;

if(b==0)

a+=20;

else

a-=20;

CDialogEx::0nTimer(nIDEvent);

)

voidCtianjinDlg::0nExit()

{

CDialogEx::0nCancel();

)

voidCtianjinDig::0nEnter()

{enteringenter;

16

C++語言課程設(shè)計(jì)

enter.DoModal();

UpdateFile();

}

voidCtianjinDlg::UpdateFile(){

CFile

file("data.txt〃,CFile::modeRead|CFile::modeNoTruncate|CFile::modeCreate);

CStringstat;

stat.Format(〃已經(jīng)收錄%d本的書〃,file.GetLengthO/95);

file.Close();

statusbar.SetPaneText(1,stat);

}

voidCtianjinDig::0nQuery()

{queryquer;

quer.DoModal();

)

voidCtianjinDlg::OnSetting()

{Settingset;

set.DoModal();

}

voidCtianjinDig::0nExplore()

{

Exploreexplore;

explore.DoModal();

}

voidCtianjinDig::0nAbout()

{

Aboutaboutdlg;

aboutdlg.DoModal();

)

4.1.4編輯模塊

Entering,h

ttpragmaonce

ttinclude/zafxcmn.h〃

ttinclude"afxwin.h〃

ttinclude"editprice.h〃

//entering對話框

classentering:publicCDialog

{

DECLARE_DYNAMIC(entering)

public:

entering(CWnd*pParent=NULL);//標(biāo)準(zhǔn)構(gòu)造函數(shù)

virtual^entering();

//對話框數(shù)據(jù)

17

C++語言課程設(shè)計(jì)

enum{IDD=IDD_ENTERING};

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDV支持

DECLARE_MESSAGE_MAP()

public:

CListCtrllistctrl;〃列表框控件對象

virtualBOOLOnlnitDialogO;〃初始化函數(shù)

afx_msgHBRUSHOnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor);//

控件窗口函藪用于畫出控件

CComboBoxyear,mo,day;

char*name,*nuni,*autho,*pr,*price;

afx_msgvoidOnBnClickedOk();

CStringbooknum,bookname,author,press;

intindex;

inta;

intdeletes;

boolCheck();

voidInput(intInde,intc);

afx_msgvoidOnClose();

afx_msgvoidOnLvnltemchangedListl(NMHDR*pNMHDR,LRESULT*pResult);

afx_msgvoid0nBnClicked0k2();

afx_msgvoid0nBnClicked0k3();

afx_msgvoidOnLvnColumnclickListl(NMHDR*pNMHDR,LRESULT*pResult);

afx_msgvoidOnNMClickListl(NMHDR*pNMHDR,LRESULT*pResult);

EditPriceEdPrice;

CStringpricel;

afx_msgvoidOnBnClickedButtonl();

):

entering,cpp

ttinclude"stdafx.h〃

ttinclude"tianjin.h〃

ttinclude"entering.h〃

ttincludez/afxdialogex.h〃

//entering對話框

IMPLEMENT_DYNAMIC(entering,CDialog)

entering::entering(CWnd5^pParent/*=NULL*/)

:CDialog(entering::IDD,pParent)

,booknum(_T)

,bookname(_T(〃〃))

,author(_T(///Z))

,press(_T(Z///))

,pricel(_T(///Z))

18

C++語言課程設(shè)計(jì)

)

entering:Centering()

voidentering::DoDataExchange(CDataExchange*pDX)

CDialog::DoDataExchange(pDX);

DDX_Control(pDX,IDC_LIST1,listctrl);

DDX_Control(pDX,IDC_C0MB01,year);

DDX_Control(pDX,IDC_C0MB04,mo);

DDX_Text(pDX,IDC_EDIT1,booknum);

DDX_Text(pDX,IDC_EDIT2,bookname);

DDX_Text(pDX,IDC_EDIT3,author);

DDX_Text(pDX,IDC_EDIT4,press);

DDX_Control(pDX,IDC_C0MB03,day);

DDV_MaxChars(pDX,bookname,15);

DDX_Control(pDX,IDC_EDIT5,EdPrice);

DDX_Text(pDX,IDC_EDIT5,pricel);

DDV_MaxChars(pDX,booknum,14);

DDV_MaxChars(pDX,author,10);

DDV_MaxChars(pDX,press,15);

DDV_MaxChars(pDX,pricel,6);

)

BEGIN_MESSAGE_MAP(entering,CDialog)

0N_WM_CTLC0L0R()

ON_BN_CLICKED(IDOK,feentering::OnBnClickedOk)

0N_WM_CL0SE()

0N_N0TIFY(LVN_ITEMCHANGED,IDC_LIST1,&entering::OnLvnltemchangedListl)

0N_BN_CLICKED(ID0K2,feentering::0nBnClicked0k2)

ON_BN_CLICKED(ID0K3,feentering::0nBnClicked0k3)

0N_N0TIFY(LVN_COLUMNCLICK,IDC_LIST1,&entering::OnLvnCo1umnc1ickLis11)

0N_N0TIFY(NM_CLICK,IDC_LIST1,&entering::OnNMClickListl)

ON_BN_CLICKED(IDC_BUTTON1,&entering::OnBnClickedButtonl)

END_MESSAGE_MAP()

BOOLentering::OnlnitDialog()

CDialog::0nInitDialog();

listctrl.SetExtendedStyle(LVS_EX_FULLROWSELECT

|LVS_EX_GRIDLINES]LVS_EX_CHECKBOXES);

〃設(shè)置該列表框控件的獷張風(fēng)格允許整行選中畫出網(wǎng)格線允許

添加單選按鈕控件

listctrl.InsertColumn(0,"書名”,0,100,2);〃在該列表框控件中的第0列的設(shè)

置為“書名”,其寬度為100

listctrl.InsertColumn(1,“書號",0,100);

19

C++語言課程設(shè)計(jì)

listctrl.InsertColumn(2,〃作者〃,0,60);

listctrl.InsertColumn(3,〃出版社〃,0,100);

listctrl.InsertColumn(4,〃出版日期〃,0,90);

listctrl.InsertColumn(5,〃價(jià)格〃,0,50);

listctrl.SetBkColor(RGB(255,0,0));〃設(shè)置該列表框控件的背景顏色為

listctrl.SetTextBkColor(RGB(0,250,12));〃設(shè)置該列表框控件的文本背景顏

listctrl.SetTextColor(RGB(0,25,250));〃設(shè)置該列表框控件的文字顏色

CStrin

溫馨提示

  • 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

提交評論