版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、天津理工大學(xué) 聾人工學(xué)院C+C+語(yǔ)言課程設(shè)計(jì)語(yǔ)言課程設(shè)計(jì)專(zhuān) 業(yè): 網(wǎng)絡(luò)工程 年 級(jí): 2015 級(jí)一班 姓 名: 胡志沖 學(xué) 號(hào): 成 績(jī): 完成日期: 20161220 目 錄第一章第一章 簡(jiǎn)簡(jiǎn) 介介.11.1 設(shè)計(jì)題目.11.2 指導(dǎo)教師.1第二章第二章 圖書(shū)管理系統(tǒng)圖書(shū)管理系統(tǒng)設(shè)計(jì)意義設(shè)計(jì)意義.22.1 設(shè)計(jì)內(nèi)容概述.22.2 需求分析.22.3 設(shè)計(jì)意義.2第三章第三章 總體設(shè)計(jì)總體設(shè)計(jì).33.1 系統(tǒng)運(yùn)行環(huán)境.33.2 系統(tǒng)結(jié)構(gòu)圖.33.3 系統(tǒng)各模塊的功能.43.4 對(duì)象數(shù)據(jù)結(jié)構(gòu).7第四章第四章 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì).84.1 程序源代碼.84.1.1 登陸模塊 .84.1.2 注冊(cè)模
2、塊 .114.1.3 主菜單模塊 .134.1.4 編輯模塊 .174.1.5 查詢(xún)模塊 .274.1.6 瀏覽模塊 .344.1.7 設(shè)置模塊 .394.1.8 組合框模塊 .414.1.9 圖書(shū)信息模塊 .434.1.10 資源文件 .454.2 系統(tǒng)測(cè)試.554.2.1 登陸對(duì)話框 .554.2.2 編輯對(duì)話框 .584.2.3 瀏覽對(duì)話框 .624.2.4 查詢(xún)對(duì)話框 .664.2.5 設(shè)置對(duì)話框 .714.2.6 退出 .734.2.7 測(cè)試結(jié)束運(yùn)行 .734.3 問(wèn)題分析.73C+語(yǔ)言課程設(shè)計(jì)1第五章第五章 結(jié)結(jié) 論論.80參考文獻(xiàn)參考文獻(xiàn).81C+語(yǔ)言課程設(shè)計(jì)1第一章簡(jiǎn) 介1.1
3、 設(shè)計(jì)題目圖書(shū)管理系統(tǒng)1.2 指導(dǎo)教師C+語(yǔ)言課程設(shè)計(jì)2第二章 圖書(shū)管理系統(tǒng)設(shè)計(jì)意義2.1 設(shè)計(jì)內(nèi)容概述本課程設(shè)計(jì)圖書(shū)管理系統(tǒng),必修要滿足使用方便、操作靈活和數(shù)據(jù)安全等設(shè)計(jì)需求。本系統(tǒng)在設(shè)計(jì)時(shí)應(yīng)滿足以下幾個(gè)目標(biāo):1 1采用人機(jī)對(duì)話的操作方式,界面設(shè)計(jì)美觀友好,操作靈活、方便、快捷、準(zhǔn)確數(shù)據(jù)保存安全可靠。2 2實(shí)現(xiàn)對(duì)圖書(shū)信息的管理功能。3 3系統(tǒng)運(yùn)行穩(wěn)定、安全可靠。2.2 需求分析信息技術(shù)的飛速發(fā)展給圖書(shū)企業(yè)的管理帶來(lái)了全新的變革.采用圖書(shū)管理系統(tǒng)對(duì)圖書(shū)企業(yè)的經(jīng)營(yíng)運(yùn)作進(jìn)行全程管理.不僅可以使企業(yè)擺脫以往人工管理產(chǎn)生的一系列問(wèn)題,而且可以提高管理效率、降低管理成本、增加經(jīng)濟(jì)效益。通過(guò)管理系統(tǒng)對(duì)圖書(shū)
4、企業(yè)的發(fā)展進(jìn)行規(guī)劃,可以收集大量關(guān)鍵可靠的數(shù)據(jù)。企業(yè)決策層分析這些數(shù)據(jù),做出合理決策,及時(shí)調(diào)整,使之能夠更好地遵循市場(chǎng)的銷(xiāo)售規(guī)律,適應(yīng)市場(chǎng)的變化,從而讓企業(yè)能夠在激烈的行業(yè)競(jìng)爭(zhēng)中占據(jù)一席之地。2.3 設(shè)計(jì)意義1 1有助于加深我們對(duì) C+程序設(shè)計(jì)這門(mén)課程的理解,我們?cè)谡n堂上學(xué)的都是基礎(chǔ)理論知識(shí),對(duì)于如何用程序語(yǔ)言來(lái)描述所學(xué)知識(shí)還是有一定難度。通過(guò)課程設(shè)計(jì),我們可以真正理解其內(nèi)涵。 2 2有利于我們邏輯思維的鍛煉,程序設(shè)計(jì)能直接有效地訓(xùn)練學(xué)生的創(chuàng)新思維、培養(yǎng)分析問(wèn)題、解決問(wèn)題能力。即使是一個(gè)簡(jiǎn)單的程序,依然需要學(xué)生有條不理的構(gòu)思。 3 3有利于培養(yǎng)嚴(yán)謹(jǐn)認(rèn)真的學(xué)習(xí)態(tài)度,在程序設(shè)計(jì)過(guò)程里,當(dāng)我們輸入程
5、序代碼的時(shí)候,如果不夠認(rèn)真或細(xì)心,那么可能就導(dǎo)致語(yǔ)法錯(cuò)誤,從而無(wú)法得出運(yùn)行結(jié)果。那么,這個(gè)我們反復(fù)調(diào)試,反復(fù)修改的過(guò)程,其實(shí)也是對(duì)我們認(rèn)真嚴(yán)謹(jǐn)治學(xué)的一個(gè)鍛煉。C+語(yǔ)言課程設(shè)計(jì)3第三章 總體設(shè)計(jì)3.1 系統(tǒng)運(yùn)行環(huán)境1.硬件環(huán)境PC 機(jī)2.軟件環(huán)境 操作系統(tǒng):Windows 10 開(kāi)發(fā)工具:Visual studio 20103.2 系統(tǒng)結(jié)構(gòu)圖圖書(shū)管理系統(tǒng)結(jié)構(gòu)圖如圖 3.1 所以。該系統(tǒng)包括:添加、修改、刪除、查詢(xún)、瀏覽等。 圖 3.1 系統(tǒng)的功能模塊圖C+語(yǔ)言課程設(shè)計(jì)43.3 系統(tǒng)各模塊的功能表 3.2 主要類(lèi)介紹類(lèi)名派生自說(shuō)明CtianjinAppCWinApp為初始化應(yīng)用程序 Window
6、應(yīng)用程序基類(lèi)的派生類(lèi)LoginCDialog用戶登錄對(duì)話框RegisterCDialog注冊(cè)對(duì)話框CtianjinDlgCDialog主程序界面對(duì)話框staCStatic由于直接用 CStatic 創(chuàng)建的靜態(tài)文本控件的樣式是默認(rèn),但不是理想的效果,故再次繼承 CStatic,可以重新改變樣式。buttonCButton由于直接用CButton創(chuàng)建的按鈕控件的樣式是默認(rèn),但不是理想的效果,故再次繼承CButton,可以重新改變樣式。ExploreCDialog瀏覽對(duì)話框ComboxCComboBox由于直接用 CComboBox 創(chuàng)建的組合框控件的樣式是默認(rèn),但不是理想的效果,故再次繼承 CCo
7、mboBox,可以重新改變樣式。enteringCDialog編輯對(duì)話框EditPriceCEdit由于直接用 CEdit 創(chuàng)建的編輯框的功能還不夠,所以再次繼承 CEdit,可以多加功能-限制輸入字符queryCDialog查詢(xún)對(duì)話框SettingCDialog設(shè)置對(duì)話框AboutCDialog關(guān)于對(duì)話框表 3.3 主要函數(shù)介紹源文件函數(shù)名稱(chēng)功能描述Explore.cppOnInitDialogOpenFileOnClickedButton1OnClickedButton2ExchangeBook對(duì)對(duì)話框進(jìn)行初始化處理打開(kāi)文件函數(shù)響應(yīng)“升序”按鈕實(shí)現(xiàn)排序該圖書(shū)信息響應(yīng)“升序”按鈕實(shí)現(xiàn)排序該圖
8、書(shū)信息交換各對(duì)象的數(shù)據(jù)C+語(yǔ)言課程設(shè)計(jì)5表 3.4 主要函數(shù)介紹源文件函數(shù)名稱(chēng)功能描述CtianjinDlg.cppOnInitDialogOnPaintOnQueryDragIconOnTimerUpdateFileOnExitOnEnterOnAboutOnQueryOnSettingOnExplore對(duì)對(duì)話框進(jìn)行初始化處理對(duì)對(duì)話框繪制部分應(yīng)用窗口系統(tǒng)獲取鼠標(biāo)圖標(biāo)用于實(shí)現(xiàn)定時(shí)控制功能用于實(shí)現(xiàn)更新文件來(lái)計(jì)算收了幾本書(shū)響應(yīng)“退出”按鈕實(shí)現(xiàn)退出本程序響應(yīng)“編輯”按鈕實(shí)現(xiàn)啟動(dòng)編輯對(duì)話框響應(yīng)“關(guān)于”按鈕實(shí)現(xiàn)啟動(dòng)關(guān)于對(duì)話框響應(yīng)“查詢(xún)”按鈕實(shí)現(xiàn)啟動(dòng)查詢(xún)對(duì)話框響應(yīng)“設(shè)置”按鈕實(shí)現(xiàn)啟動(dòng)設(shè)置對(duì)話框響應(yīng)“瀏覽”
9、按鈕實(shí)現(xiàn)啟動(dòng)瀏覽對(duì)話框表 3.5 主要函數(shù)介紹源文件函數(shù)名稱(chēng)功能描述Entering.cppOnInitDialogOnCtlColor OnBnClickedOkCheckInputOnCloseOnLvnItemchangedList1OnBnClickedOk2OnBnClickedOk3OnLvnColumnclickList1OnNMClickList1OnBnClickedButton1對(duì)對(duì)話框進(jìn)行初始化處理控件窗口函數(shù) 用于畫(huà)出控件菜單處理添加記錄信息檢查輸入的內(nèi)容是否為空輸入記錄信息關(guān)閉該對(duì)話框某個(gè)項(xiàng)已經(jīng)發(fā)生變化響應(yīng)“刪除”按鈕實(shí)現(xiàn)刪除該圖書(shū)信息響應(yīng)“修改”按鈕實(shí)現(xiàn)修改該圖書(shū)信
10、息單擊列,用于勾選全部當(dāng)鼠標(biāo)單擊列表視圖控件時(shí)產(chǎn)生響應(yīng)“清空”按鈕實(shí)現(xiàn)修改該圖書(shū)信息C+語(yǔ)言課程設(shè)計(jì)6表 3.6 主要函數(shù)介紹源文件函數(shù)名稱(chēng)功能描述query.cppOnInitDialogOnBnClickedRadio1OnBnClickedRadio2OnBnClickedRadio3OnBnClickedRadio4OnBnClickedRadio5OnBnClickedButton1QueryNumQueryNameQueryAuthorQueryPressQueryAnyOpenFileTipinsertOnBnClickedButton2對(duì)對(duì)話框進(jìn)行初始化處理響應(yīng)“書(shū)號(hào)”按鈕實(shí)現(xiàn)
11、選擇該方式查詢(xún)響應(yīng)“書(shū)名”按鈕實(shí)現(xiàn)選擇該方式查詢(xún)響應(yīng)“作者”按鈕實(shí)現(xiàn)選擇該方式查詢(xún)響應(yīng)“出版社”按鈕實(shí)現(xiàn)選擇該方式查詢(xún)響應(yīng)“任何內(nèi)容”按鈕實(shí)現(xiàn)選擇該方式查詢(xún)關(guān)閉該對(duì)話框查詢(xún)書(shū)號(hào)函數(shù)查詢(xún)書(shū)名函數(shù)查詢(xún)作者函數(shù)查詢(xún)出版社函數(shù)查詢(xún)?nèi)魏魏瘮?shù)打開(kāi)文件提示用于告訴用戶找到了多少本將已找到的幾本書(shū)插入在顯示上響應(yīng)“查詢(xún)”按鈕實(shí)現(xiàn)根據(jù)該方式查詢(xún)C+語(yǔ)言課程設(shè)計(jì)73.4 對(duì)象數(shù)據(jù)結(jié)構(gòu) 每個(gè)對(duì)象記錄著每本書(shū)的信息,為了保護(hù)數(shù)據(jù)安全,故把其的這些成員變量聲明為private,就是說(shuō)在類(lèi)外的話,不能直接調(diào)用對(duì)象的成員變量名來(lái)賦值或者獲取其值,這就達(dá)到了保護(hù)數(shù)據(jù),但是在某個(gè)時(shí)候遇到數(shù)據(jù)不對(duì)可能需要修改,這時(shí)就要加成員函數(shù)
12、來(lái)修改或者獲取,而且把成員函數(shù)聲明為public,由于在類(lèi)外需要正常調(diào)用,故聲明為公開(kāi)。其表如下。 表 3.7 主要變量介紹變量名類(lèi)型功能描述NameNumAuthorPressTimePriceCharCharCharCharCharDouble書(shū)名書(shū)號(hào)作者出版社時(shí)間價(jià)格表 3.8 主要函數(shù)介紹源文件函數(shù)名稱(chēng)功能描述book.cppSetNameSetNumSetAuthorSetPressSetTimeSetPriceGetNameGetNumGetAuthorGetPressGetTimeGetPrice設(shè)置當(dāng)前對(duì)象的成員變量 name 的值設(shè)置當(dāng)前對(duì)象的成員變量 num 的值設(shè)置當(dāng)前對(duì)
13、象的成員變量 Author 的值設(shè)置當(dāng)前對(duì)象的成員變量 Press 的值設(shè)置當(dāng)前對(duì)象的成員變量 Time 的值設(shè)置當(dāng)前對(duì)象的成員變量 Price 的值獲取當(dāng)前對(duì)象的成員變量 name 的值獲取當(dāng)前對(duì)象的成員變量 Num 的值獲取當(dāng)前對(duì)象的成員變量 Author 的值獲取當(dāng)前對(duì)象的成員變量 Press 的值獲取當(dāng)前對(duì)象的成員變量 Time 的值獲取當(dāng)前對(duì)象的成員變量 Price 的值C+語(yǔ)言課程設(shè)計(jì)8第四章 詳細(xì)設(shè)計(jì)4.1 程序源代碼4.1.1 登陸模塊Login.h#pragma once#includetianjinDlg.h#include afxwin.h/ Login 對(duì)話框class
14、 Login : public CDialogDECLARE_DYNAMIC(Login)int a;public:Login(CWnd* pParent = NULL); / 標(biāo)準(zhǔn)構(gòu)造函數(shù)virtual Login();/ 對(duì)話框數(shù)據(jù)enum IDD = IDD_LOGIN ;protected:virtual void DoDataExchange(CDataExchange* pDX);CtianjinDlg dlg;DECLARE_MESSAGE_MAP()public:virtual BOOL OnInitDialog();afx_msg void OnClose();CString
15、 user;CString password;afx_msg void OnBnClickedOk();CButton regis;afx_msg void OnBnClickedButton1();Login.cpp#include stdafx.h#include tianjin.h#include Login.h#include afxdialogex.h#include Register.hIMPLEMENT_DYNAMIC(Login, CDialog)Login:Login(CWnd* pParent /*=NULL*/): CDialog(Login:IDD, pParent),
16、 user(_T()C+語(yǔ)言課程設(shè)計(jì)9, password(_T()Login:Login()void Login: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)ON_WM_CLOSE()ON_BN_CLICKED(IDOK, &Login:OnBn
17、ClickedOk)ON_BN_CLICKED(IDC_BUTTON1, &Login:OnBnClickedButton1)END_MESSAGE_MAP()BOOL Login:OnInitDialog()CDialog:OnInitDialog();a=0;/初始化a的值為0 用于判斷該值是否退出本程序 當(dāng)輸入密碼錯(cuò)誤,就使該a的值增加1CRect r;/矩形的類(lèi),數(shù)據(jù)成員是 矩形左上角的x的坐標(biāo),矩形左上角Y的坐標(biāo),矩形右下角x的坐標(biāo),矩形右下角Y的坐標(biāo)CString user;this-GetClientRect(&r);/是獲得窗口的當(dāng)前的客戶區(qū),把各坐標(biāo)值保存在r對(duì)象。this-
18、MoveWindow(600,300,r.right,r.bottom);/根據(jù)上面獲得窗口的大小,來(lái)調(diào)整并且移動(dòng)。GetPrivateProfileString(login,user,NULL,user.GetBuffer(20),20,./setting.ini);/從setting.ini配置文件中的login節(jié)名中獲取該user鍵名的值并保存在user的值,如果找不到該鍵名,則保存第三個(gè)參/數(shù)的值 即默認(rèn)的值 表示未注冊(cè)的賬號(hào),反之 找到了該值,表示已經(jīng)注冊(cè)了if(user!=NULL)/用于判斷上面獲得的值是否已經(jīng)注冊(cè)過(guò) 如注冊(cè)過(guò),則執(zhí)行if()后邊的語(yǔ)句regis.EnableWi
19、ndow(0);/在該函數(shù)的參數(shù)賦值為0 表示禁止指定的控件接受鼠標(biāo)和鍵盤(pán)的輸入 由于該已經(jīng)注冊(cè)過(guò)的。regis.SetWindowTextA(已注冊(cè));/指定該控件的內(nèi)容設(shè)為 ”已注冊(cè)用于提示C+語(yǔ)言課程設(shè)計(jì)10return TRUE;void Login:OnClose()CDialog:OnClose();void Login:OnBnClickedOk()this-UpdateData(1);/將各控件中的數(shù)據(jù)保存到相應(yīng)的變量分別為”user“ ” password“if(!user.IsEmpty()&!password.IsEmpty()/檢查該各變量的值是否為空,如該值為空,就執(zhí)
20、行else后邊的語(yǔ)句CString user1,password1;/定義兩個(gè)字符串類(lèi)變量 用于從配置文件的注冊(cè)過(guò)的用戶及密碼的值保存在該變量的GetPrivateProfileString(login,user,NULL,user1.GetBuffer(20),20,./setting.ini);/從本身程序的當(dāng)前的setting.ini配置/文件中的login節(jié)名中獲取該user鍵名的值并保存在user1的值,如果找不到該鍵名,則保存默認(rèn)值為”NULL“GetPrivateProfileString(login,password,NULL,password1.GetBuffer(20),2
21、0,./setting.ini);/如同上面的方法if(user=user1&password=password1)/對(duì)比各值是否一致,滿足此條件表示該用戶名及密碼都是正確,可以登陸,即執(zhí)行if()后邊的語(yǔ)句this-ShowWindow(SW_HIDE);/把該對(duì)話框的顯示方式為隱藏dlg.DoModal();/啟動(dòng)主窗口的對(duì)話框CDialog:OnOK();elsea+;/密碼錯(cuò)誤次數(shù)if(a3)/如超過(guò)3次的錯(cuò)誤密碼就執(zhí)行if()后邊的語(yǔ)句CDialog:OnCancel();return;/調(diào)用關(guān)閉該對(duì)話框的函數(shù) CString d;d.Format(用戶名或者密碼錯(cuò)誤%d次 超過(guò)三次
22、錯(cuò)誤即將自動(dòng)退出,a);MessageBox(d,登陸提示,MB_OK|MB_ICONWARNING);/用于提示密碼錯(cuò)誤 以避免令人覺(jué)得這程序有問(wèn)題else C+語(yǔ)言課程設(shè)計(jì)11MessageBox(用戶名或者密碼的字符串為空,登陸提示,MB_OK|MB_ICONWARNING);/當(dāng)該值為空,則執(zhí)行該語(yǔ)句 用于提示。void Login:OnBnClickedButton1()Register dialog;/定義注冊(cè)對(duì)話框的對(duì)象變量dialog.DoModal();/啟動(dòng) 注冊(cè)對(duì)話框;4.1.2 注冊(cè)模塊Register.h#pragma once#include afxwin.h/ R
23、egister 對(duì)話框class Register : public CDialogDECLARE_DYNAMIC(Register)public:Register(CWnd* pParent = NULL); / 標(biāo)準(zhǔn)構(gòu)造函數(shù)virtual Register();/ 對(duì)話框數(shù)據(jù)enum IDD = IDD_REGISTER ;protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV 支持DECLARE_MESSAGE_MAP()public:afx_msg void OnBnClickedOk();CString
24、 user;CString password;CString password1;Register.cpp#include stdafx.h#include tianjin.h#include Register.h#include afxdialogex.h/ Register 對(duì)話框IMPLEMENT_DYNAMIC(Register, CDialog)Register:Register(CWnd* pParent /*=NULL*/): CDialog(Register:IDD, pParent), user(_T(), password(_T()C+語(yǔ)言課程設(shè)計(jì)12, password1
25、(_T()Register:Register()void Register:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1, user);DDX_Text(pDX, IDC_EDIT6, password);DDX_Text(pDX, IDC_EDIT3, password1);BEGIN_MESSAGE_MAP(Register, CDialog)ON_BN_CLICKED(IDOK, &Register:OnBnClickedOk)END_MESSAGE_MAP()v
26、oid Register:OnBnClickedOk()this-UpdateData();/默認(rèn)值是 TRUE,即從控件傳給變量if(!user.IsEmpty()&!password.IsEmpty()&!password1.IsEmpty()/各變量的字符串是否為空,如都不為空,則執(zhí)行 if()后邊的語(yǔ)句繼續(xù)注冊(cè)if(password=password1)/新密碼與第二次新密碼對(duì)比下,如相等,則繼續(xù)執(zhí)行注冊(cè),反之不繼續(xù)注冊(cè)if(IDOK=MessageBox(確定要注冊(cè)該賬號(hào)嗎?,注冊(cè)提示,MB_OKCANCEL| MB_ICONQUESTION )/輸出提示 是否要確定注冊(cè),如點(diǎn)擊確認(rèn)
27、返回值為 IDOKWritePrivateProfileString(login,user,user,./setting.ini);/向該 setting.ini 配置文件中的 login 節(jié)名中設(shè)置該 user 鍵名的值為 user的值WritePrivateProfileString(login,password,password,./setting.ini);HWND button; /定義窗口句柄this-GetParent()-GetDlgItem(IDC_BUTTON1,&button);/獲取當(dāng)前窗口的父窗口句柄(登陸對(duì)話框) ,然后通過(guò)父窗口句柄獲取指定參數(shù) ID 為 IDC_
28、BUTTON1 的子元素的句柄并綁定 button 窗口句柄:SetWindowTextA(button,已注冊(cè));/改變指定 button 窗口句柄的文本內(nèi)容為已注冊(cè)。:EnableWindow(button,0);/第二個(gè)參數(shù)的值為 0 表示禁止指定的控件接受鼠標(biāo)和鍵盤(pán)的輸入MessageBox(已經(jīng)成功注冊(cè)該賬號(hào):+user+!,注冊(cè)提示,MB_OK| MB_ICONASTERISK );/注冊(cè)成功輸出提示 CDialog:OnCancel(); else C+語(yǔ)言課程設(shè)計(jì)13MessageBox(新密碼與第二次新密碼不一致 請(qǐng)注意輸入正確!,密碼提示,MB_OK|MB_ICONEXCL
29、AMATION );else MessageBox(用戶名或者密碼的字符串為空,注冊(cè)提示,MB_OK|MB_ICONWARNING);4.1.3 主菜單模塊tianjinDlg.h#pragma once#include button.h#include sta.h#includeentering.h#includequery.h#includeSetting.h#includeExplore.h/ CtianjinDlg 對(duì)話框class CtianjinDlg : public CDialogEx/ 構(gòu)造public:CtianjinDlg(CWnd* pParent = NULL); /
30、 標(biāo)準(zhǔn)構(gòu)造函數(shù)/ 對(duì)話框數(shù)據(jù)enum IDD = IDD_TIANJIN_DIALOG ;protected:virtual void DoDataExchange(CDataExchange* pDX);/ 實(shí)現(xiàn)protected:HICON m_hIcon;CToolBar toolbar;CStatusBar statusbar;CImageList toolimag;CImageList toolhotimag;button but2;int a;int b;virtual BOOL OnInitDialog();afx_msg void OnPaint();afx_msg HCURS
31、OR OnQueryDragIcon();DECLARE_MESSAGE_MAP()public:afx_msg void OnTimer(UINT_PTR nIDEvent);button but1;C+語(yǔ)言課程設(shè)計(jì)14void UpdateFile();sta stat,stat1;afx_msg void OnExit();afx_msg void OnEnter();afx_msg void OnAbout();protected:public:afx_msg void OnQuery();afx_msg void OnSetting();afx_msg void OnExplore(
32、);tianjinDlg.cpp#include stdafx.h#include tianjin.h#include tianjinDlg.h#include afxdialogex.h#includeAbout.h#ifdef _DEBUG#define new DEBUG_NEW#endifCtianjinDlg:CtianjinDlg(CWnd* pParent /*=NULL*/): CDialogEx(CtianjinDlg:IDD, pParent)m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CtianjinDlg:DoD
33、ataExchange(CDataExchange* pDX)CDialogEx:DoDataExchange(pDX);DDX_Control(pDX, IDOK, but1);DDX_Control(pDX, TIC, stat);BEGIN_MESSAGE_MAP(CtianjinDlg, CDialogEx)ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_WM_TIMER()ON_COMMAND(1006, &CtianjinDlg:OnExit)ON_COMMAND(1001, &CtianjinDlg:OnEnter)ON_COMMAND(1003, &C
34、tianjinDlg:OnQuery)ON_COMMAND(1004, &CtianjinDlg:OnSetting)ON_COMMAND(1005, &CtianjinDlg:OnAbout)ON_COMMAND(1002, &CtianjinDlg:OnExplore)END_MESSAGE_MAP()BOOL CtianjinDlg:OnInitDialog()C+語(yǔ)言課程設(shè)計(jì)15CDialogEx:OnInitDialog();CBitmap bit7;bit0.LoadBitmapA(IDB_BITMAP1);bit1.LoadBitmapA(IDB_BITMAP2);bit2.Lo
35、adBitmapA(IDB_BITMAP3);bit3.LoadBitmapA(IDB_BITMAP4);bit4.LoadBitmapA(IDB_BITMAP5);bit5.LoadBitmapA(IDB_BITMAP6);bit6.LoadBitmapA(IDB_BITMAP8);toolimag.Create(70,50,ILC_COLOR|ILC_MASK,0,0);for(int i=0;i6;i+)toolimag.Add(&biti,ILC_MASK);toolhotimag.Create(58,60,ILC_COLOR|ILC_MASK,0,0);toolhotimag.Add
36、(&bit6,ILC_COLOR16);toolbar.Create(this);UINT buttons6=1001,1002,1003,1004,1005,1006;toolbar.SetButtons(buttons,6);char buttontext7=編輯,瀏覽,查詢(xún),設(shè)置,關(guān)于,退出;for(int i=0;i6;i+)toolbar.SetButtonText(i,buttontexti);toolbar.GetToolBarCtrl().SetImageList(&toolimag);toolbar.GetToolBarCtrl().SetHotImageList(&tool
37、hotimag);toolbar.SetSizes(CSize(80,80),CSize(70,50);toolbar.GetToolBarCtrl().SetStyle(CCS_TOP|TBSTYLE_FLAT);statusbar.Create(this);UINT pens3=100,101,102;statusbar.SetIndicators(pens,3);statusbar.SetPaneText(0,作者:胡志沖);UpdateFile();statusbar.SetPaneText(2,CTime:GetCurrentTime().Format(%Y:%m:%d:%H:%M:
38、%S);for(int i=0;iRepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);return TRUE; / 除非將焦點(diǎn)設(shè)置到控件,否則返回 TRUEvoid CtianjinDlg:OnPaint()if (IsIconic()C+語(yǔ)言課程設(shè)計(jì)16elseCRect dialogrect;this-GetClientRect(dialogrect);CDC pic;CBitmap pic1;BITMAP info;pic1.LoadBitmapA(IDB_BITMAP7);pic1.GetBitmap(&
39、info);CPaintDC dc(this);pic.CreateCompatibleDC(&dc);pic.SelectObject(&pic1);dc.StretchBlt(0,0,dialogrect.right,dialogrect.bottom,&pic,0,0,info.bmWidth,info.bmHeight,SRCCOPY);CDialogEx:OnPaint();HCURSOR CtianjinDlg:OnQueryDragIcon()return static_cast(m_hIcon);void CtianjinDlg:OnTimer(UINT_PTR nIDEven
40、t)CRect dialogrect;this-GetClientRect(dialogrect);statusbar.SetPaneText(2,CTime:GetCurrentTime().Format(%Y:%m:%d:%H:%M:%S);stat.MoveWindow(a,dialogrect.bottom-402,260,50);if(a=dialogrect.right-270)b=1;else if(a=50)b=0;if(b=0)a+=20;elsea-=20;CDialogEx:OnTimer(nIDEvent);void CtianjinDlg:OnExit()CDialo
41、gEx:OnCancel();void CtianjinDlg:OnEnter()entering enter;C+語(yǔ)言課程設(shè)計(jì)17enter.DoModal();UpdateFile();void CtianjinDlg:UpdateFile()CFile file(data.txt,CFile:modeRead|CFile:modeNoTruncate|CFile:modeCreate);CString stat;stat.Format(已經(jīng)收錄%d 本的書(shū),file.GetLength()/95);file.Close();statusbar.SetPaneText(1, stat);v
42、oid CtianjinDlg:OnQuery()query quer;quer.DoModal();void CtianjinDlg:OnSetting()Setting set;set.DoModal();void CtianjinDlg:OnExplore()Explore explore;explore.DoModal();void CtianjinDlg:OnAbout()About aboutdlg;aboutdlg.DoModal();4.1.4 編輯模塊Entering.h#pragma once#include afxcmn.h#include afxwin.h#includ
43、e editprice.h/ entering 對(duì)話框class entering : public CDialogDECLARE_DYNAMIC(entering)public:entering(CWnd* pParent = NULL); / 標(biāo)準(zhǔn)構(gòu)造函數(shù)virtual entering();/ 對(duì)話框數(shù)據(jù)C+語(yǔ)言課程設(shè)計(jì)18enum IDD = IDD_ENTERING ;protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV 支持DECLARE_MESSAGE_MAP()public:CListCtrl
44、listctrl;/列表框控件對(duì)象virtual BOOL OnInitDialog();/初始化函數(shù)afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);/控件窗口函數(shù) 用于畫(huà)出控件CComboBox year,mo,day;char *name,*num,*autho,*pr,*time,*price;afx_msg void OnBnClickedOk();CString booknum,bookname,author,press;int index;int a;int deletes;bool Check();v
45、oid Input(int Inde,int c);afx_msg void OnClose();afx_msg void OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult);afx_msg void OnBnClickedOk2();afx_msg void OnBnClickedOk3();afx_msg void OnLvnColumnclickList1(NMHDR *pNMHDR, LRESULT *pResult);afx_msg void OnNMClickList1(NMHDR *pNMHDR, LRESULT *pRe
46、sult);EditPrice EdPrice;CString price1;afx_msg void OnBnClickedButton1();entering.cpp #include stdafx.h#include tianjin.h#include entering.h#include afxdialogex.h/ entering 對(duì)話框IMPLEMENT_DYNAMIC(entering, CDialog)entering:entering(CWnd* pParent /*=NULL*/): CDialog(entering:IDD, pParent), booknum(_T()
47、, bookname(_T(), author(_T()C+語(yǔ)言課程設(shè)計(jì)19, press(_T(), price1(_T()entering:entering()void entering:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);DDX_Control(pDX, IDC_LIST1, listctrl);DDX_Control(pDX, IDC_COMBO1, year);DDX_Control(pDX, IDC_COMBO4, mo);DDX_Text(pDX, IDC_EDIT1, booknum);DD
48、X_Text(pDX, IDC_EDIT2, bookname);DDX_Text(pDX, IDC_EDIT3, author);DDX_Text(pDX, IDC_EDIT4, press);DDX_Control(pDX, IDC_COMBO3, day);DDV_MaxChars(pDX, bookname, 15);DDX_Control(pDX, IDC_EDIT5, EdPrice);DDX_Text(pDX, IDC_EDIT5, price1);DDV_MaxChars(pDX, booknum, 14);DDV_MaxChars(pDX, author, 10);DDV_M
49、axChars(pDX, press, 15);DDV_MaxChars(pDX, price1, 6);BEGIN_MESSAGE_MAP(entering, CDialog)ON_WM_CTLCOLOR()ON_BN_CLICKED(IDOK, &entering:OnBnClickedOk)ON_WM_CLOSE()ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, &entering:OnLvnItemchangedList1)ON_BN_CLICKED(IDOK2, &entering:OnBnClickedOk2)ON_BN_CLICKED(IDOK3, &
50、entering:OnBnClickedOk3)ON_NOTIFY(LVN_COLUMNCLICK, IDC_LIST1, &entering:OnLvnColumnclickList1)ON_NOTIFY(NM_CLICK, IDC_LIST1, &entering:OnNMClickList1)ON_BN_CLICKED(IDC_BUTTON1, &entering:OnBnClickedButton1)END_MESSAGE_MAP()BOOL entering:OnInitDialog()CDialog:OnInitDialog();listctrl.SetExtendedStyle(
51、LVS_EX_FULLROWSELECT |LVS_EX_GRIDLINES|LVS_EX_CHECKBOXES);/設(shè)置該列表框控件的擴(kuò)張風(fēng)格 允許整行選中 畫(huà)出網(wǎng)格線 允許添加單選按鈕控件C+語(yǔ)言課程設(shè)計(jì)20listctrl.InsertColumn(0,書(shū)名,0,100,2);/在該列表框控件中的第 0 列的設(shè)置為“書(shū)名” ,其寬度為 100listctrl.InsertColumn(1,書(shū)號(hào),0,100);listctrl.InsertColumn(2,作者,0,60);listctrl.InsertColumn(3,出版社,0,100);listctrl.InsertColumn(4
52、,出版日期,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è)置該列表框控件的文字顏色CString nu;for(int i=2000;i2020;i+)nu.Format(%d,i);year.AddString(nu);/向“年的組合框控件中插入數(shù)據(jù) 比如 2010 2011年fo
53、r(int i=1;i=12;i+)if(i10)nu.Format(0%d,i);/向“月的組合框控件中插入數(shù)據(jù) 比如 1 2 3 月elsenu.Format(%d,i);mo.AddString(nu);for(int i=1;i=31;i+)if(i10)nu.Format(0%d,i);/向“日的組合框控件中插入數(shù)據(jù) 比如 1 2 3 日elsenu.Format(%d,i);day.AddString(nu);CFile file(data.txt,CFile:modeRead);/打開(kāi)文件 a=file.GetLength()/95;/總文件的大小除以每一本圖書(shū)的文件大小等于幾本
54、書(shū) char *text=new char20;/開(kāi)辟 20 個(gè)類(lèi)型 char for(int i=0;iGetClientRect(&dd);pWnd-GetWindowRect(&dd);pDC-SetTextColor(RGB(160,32,240);if(CTLCOLOR_EDIT=CTLCOLOR_EDIT)pWnd-GetWindowRect(&dd);return hbr;void entering:OnBnClickedOk()/添加記錄信息if(Check()/判斷該值是否繼續(xù)輸入還是不輸入for(int i=0;i=0&listctrl.GetItemCount()inde
55、x)/判斷該值是否已經(jīng)選圖書(shū)信息 如已選擇該圖書(shū)信息,則執(zhí)行 if 后邊的語(yǔ)句Input(index,0);/達(dá)到符合字符輸入及已選該圖書(shū)信息的條件就執(zhí)行添加記錄,第一個(gè)參數(shù)是在該列表框的未尾的位置,第二個(gè)參數(shù) 1 表示添加記錄行為 非 1 表示修改記錄行為elseMessageBox(該未選項(xiàng)目,無(wú)法修改,提示);/彈出消息框用于提示bool entering:Check()this-Invalidate();/進(jìn)行更新顯示的函數(shù)this-UpdateWindow();/使窗口立即重繪this-UpdateData();/默認(rèn)值是 TRUE,即從控件傳給變量CClientDC dc(this
56、);/關(guān)聯(lián)本窗口(this) ,在目標(biāo)窗口的任何一部分進(jìn)行繪圖,包含邊界與標(biāo)題dc.SetBkMode(TRANSPARENT);/設(shè)置文字背景為透明(transparent)dc.SetTextColor(RGB(255,0,0);/設(shè)置文字顏色為紅色-RGB(255,0,0)int n=0;/用于判斷符合的次數(shù)?如輸入文字都不為空,即符合這條件 就是n=5 if(bookname.IsEmpty()/判斷該字符是否為空?如為空,則執(zhí)行 if()后邊的的語(yǔ)句dc.TextOutA(820,65,該字符為空);/向關(guān)聯(lián)的窗口設(shè)備上下文輸出文字 用于提示else;n+;/不為空的話,就使 n 的
57、值增加 1if(booknum.IsEmpty()dc.TextOutA(820,113,該字符為空);C+語(yǔ)言課程設(shè)計(jì)23elsen+;if(author.IsEmpty()dc.TextOutA(820,155,該字符為空);elsen+;if(press.IsEmpty()dc.TextOutA(820,200,該字符為空);elsen+;if(price1.IsEmpty()dc.TextOutA(820,235,該字符為空);elsen+;if(0year.GetCurSel()|0mo.GetCurSel()|0day.GetCurSel()/判斷該是否選項(xiàng)dc.TextOutA(
58、875,287,該未選);elseif(nUpdateData(0);/由于默認(rèn)值是 TRUE,即從控件傳給變量,需要改為 FALSE,表示從變量傳給控件。void entering:OnClose()CFile file(data.txt,CFile:modeWrite|CFile:modeCreate);/第一個(gè)參數(shù)data.txt表示指定該文件名,第二個(gè)參數(shù)的值表示以寫(xiě)入模式char *text=new char20;/開(kāi)辟 20 個(gè)類(lèi)型 charfor(int i=0;ilistctrl.GetItemCount();i+)/根據(jù)列表框的多少行相應(yīng)循環(huán)多少次listctrl.GetIt
59、emText(i,0,text,20);/向該列表框控件的第 i 的行的第 0列的獲取內(nèi)容并保存在 text 的值file.Write(text,20);/向磁盤(pán)關(guān)聯(lián)的文件寫(xiě)入 text 的值listctrl.GetItemText(i,1,text,20);file.Write(text,20);listctrl.GetItemText(i,2,text,10);file.Write(text,10);listctrl.GetItemText(i,3,text,20);file.Write(text,20);listctrl.GetItemText(i,4,text,15);file.Wri
60、te(text,15);listctrl.GetItemText(i,5,text,10);file.Write(text,10);delete text,name,num,autho,pr,time;file.Close();CDialog:OnClose();void entering:OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult)LPNMLISTVIEW pNMLV = reinterpret_cast(pNMHDR);int SelectCount=0;/選項(xiàng)次數(shù)for(int i=0;i=0;i-)/根據(jù)列表框的多少行相應(yīng)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年旅游公司浮動(dòng)抵押合同
- 個(gè)人住宅租借押金及季度租金合同樣本(2024版)一
- 二零二五年度專(zhuān)業(yè)印刷品設(shè)計(jì)、印刷與打印服務(wù)合同3篇
- 事業(yè)單位基本建設(shè)粉刷工程分包合同2024版B版
- 2025年度烘焙連鎖面包磚供應(yīng)鏈合作協(xié)議4篇
- 二零二五年度干股虛擬股分紅激勵(lì)方案合同范本
- 2025年度玩具貨物運(yùn)輸委托服務(wù)協(xié)議
- 二零二五年度物業(yè)小區(qū)個(gè)人承包社區(qū)物業(yè)服務(wù)綜合解決方案協(xié)議
- 2025年度家用空調(diào)拆裝安全操作規(guī)范及應(yīng)急處理合同
- 二零二五年度家政服務(wù)公司保姆雇傭協(xié)議
- 海外資管機(jī)構(gòu)赴上海投資指南(2024版)
- 山東省青島市2023-2024學(xué)年七年級(jí)上學(xué)期期末考試數(shù)學(xué)試題(含答案)
- 墓地銷(xiāo)售計(jì)劃及方案設(shè)計(jì)書(shū)
- 從偏差行為到卓越一生3.0版
- 優(yōu)佳學(xué)案七年級(jí)上冊(cè)歷史
- 鋁箔行業(yè)海外分析
- 紀(jì)委辦案安全培訓(xùn)課件
- 超市連鎖行業(yè)招商策劃
- 城市道路智慧路燈項(xiàng)目 投標(biāo)方案(技術(shù)標(biāo))
- 【公司利潤(rùn)質(zhì)量研究國(guó)內(nèi)外文獻(xiàn)綜述3400字】
- 工行全國(guó)地區(qū)碼
評(píng)論
0/150
提交評(píng)論