版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 木材保護(hù)防腐施工合同
- 能源檢測薪酬策略
- 災(zāi)害救援中心
- 超市建設(shè)平整施工合同
- KTV裝飾施工合同
- 金屬衛(wèi)生應(yīng)急隊(duì)伍管理辦法
- 食品加工公司員工停薪留職
- 住宅小區(qū)智能門禁管理辦法
- 保齡球場大門地彈門施工合同
- 物流技術(shù)計(jì)量器具使用手冊
- 急停急起運(yùn)球教學(xué)設(shè)計(jì)
- 2024年江西省三校生高職英語高考試卷
- 中國古代文學(xué)智慧樹知到期末考試答案章節(jié)答案2024年廣州大學(xué)
- 重慶市南岸區(qū)2022-2023學(xué)年五年級上學(xué)期期末語文試卷
- 現(xiàn)澆鋼筋混凝土整體式肋梁樓蓋結(jié)構(gòu)-課程設(shè)計(jì)
- 掛籃施工及安全控制連續(xù)梁施工安全培訓(xùn)課件
- 學(xué)生學(xué)習(xí)概覽StudentLearningProfile
- 小班數(shù)學(xué)《認(rèn)識1到10的數(shù)字》課件
- 手工花項(xiàng)目策劃書
- 服務(wù)器維保應(yīng)急預(yù)案
- 循環(huán)系統(tǒng)病癥的臨床思維
評論
0/150
提交評論