版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、天津理工大學(xué) 聾人工學(xué)院C+C+語言課程設(shè)計(jì)語言課程設(shè)計(jì)專 業(yè): 網(wǎng)絡(luò)工程 年 級: 2015 級一班 姓 名: 胡志沖 學(xué) 號: 成 績: 完成日期: 20161220 目 錄第一章第一章 簡簡 介介.11.1 設(shè)計(jì)題目.11.2 指導(dǎo)教師.1第二章第二章 圖書管理系統(tǒng)圖書管理系統(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 對象數(shù)據(jù)結(jié)構(gòu).7第四章第四章 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì).84.1 程序源代碼.84.1.1 登陸模塊 .84.1.2 注冊模
2、塊 .114.1.3 主菜單模塊 .134.1.4 編輯模塊 .174.1.5 查詢模塊 .274.1.6 瀏覽模塊 .344.1.7 設(shè)置模塊 .394.1.8 組合框模塊 .414.1.9 圖書信息模塊 .434.1.10 資源文件 .454.2 系統(tǒng)測試.554.2.1 登陸對話框 .554.2.2 編輯對話框 .584.2.3 瀏覽對話框 .624.2.4 查詢對話框 .664.2.5 設(shè)置對話框 .714.2.6 退出 .734.2.7 測試結(jié)束運(yùn)行 .734.3 問題分析.73C+語言課程設(shè)計(jì)1第五章第五章 結(jié)結(jié) 論論.80參考文獻(xiàn)參考文獻(xiàn).81C+語言課程設(shè)計(jì)1第一章簡 介1.1
3、 設(shè)計(jì)題目圖書管理系統(tǒng)1.2 指導(dǎo)教師C+語言課程設(shè)計(jì)2第二章 圖書管理系統(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 1采用人機(jī)對話的操作方式,界面設(shè)計(jì)美觀友好,操作靈活、方便、快捷、準(zhǔn)確數(shù)據(jù)保存安全可靠。2 2實(shí)現(xiàn)對圖書信息的管理功能。3 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)對圖書
4、企業(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 1有助于加深我們對 C+程序設(shè)計(jì)這門課程的理解,我們在課堂上學(xué)的都是基礎(chǔ)理論知識,對于如何用程序語言來描述所學(xué)知識還是有一定難度。通過課程設(shè)計(jì),我們可以真正理解其內(nèi)涵。 2 2有利于我們邏輯思維的鍛煉,程序設(shè)計(jì)能直接有效地訓(xùn)練學(xué)生的創(chuàng)新思維、培養(yǎng)分析問題、解決問題能力。即使是一個(gè)簡單的程序,依然需要學(xué)生有條不理的構(gòu)思。 3 3有利于培養(yǎng)嚴(yán)謹(jǐn)認(rèn)真的學(xué)習(xí)態(tài)度,在程序設(shè)計(jì)過程里,當(dāng)我們輸入程
5、序代碼的時(shí)候,如果不夠認(rèn)真或細(xì)心,那么可能就導(dǎo)致語法錯(cuò)誤,從而無法得出運(yùn)行結(jié)果。那么,這個(gè)我們反復(fù)調(diào)試,反復(fù)修改的過程,其實(shí)也是對我們認(rèn)真嚴(yán)謹(jǐn)治學(xué)的一個(gè)鍛煉。C+語言課程設(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 開發(fā)工具:Visual studio 20103.2 系統(tǒng)結(jié)構(gòu)圖圖書管理系統(tǒng)結(jié)構(gòu)圖如圖 3.1 所以。該系統(tǒng)包括:添加、修改、刪除、查詢、瀏覽等。 圖 3.1 系統(tǒng)的功能模塊圖C+語言課程設(shè)計(jì)43.3 系統(tǒng)各模塊的功能表 3.2 主要類介紹類名派生自說明CtianjinAppCWinApp為初始化應(yīng)用程序 Window
6、應(yīng)用程序基類的派生類LoginCDialog用戶登錄對話框RegisterCDialog注冊對話框CtianjinDlgCDialog主程序界面對話框staCStatic由于直接用 CStatic 創(chuàng)建的靜態(tài)文本控件的樣式是默認(rèn),但不是理想的效果,故再次繼承 CStatic,可以重新改變樣式。buttonCButton由于直接用CButton創(chuàng)建的按鈕控件的樣式是默認(rèn),但不是理想的效果,故再次繼承CButton,可以重新改變樣式。ExploreCDialog瀏覽對話框ComboxCComboBox由于直接用 CComboBox 創(chuàng)建的組合框控件的樣式是默認(rèn),但不是理想的效果,故再次繼承 CCo
7、mboBox,可以重新改變樣式。enteringCDialog編輯對話框EditPriceCEdit由于直接用 CEdit 創(chuàng)建的編輯框的功能還不夠,所以再次繼承 CEdit,可以多加功能-限制輸入字符queryCDialog查詢對話框SettingCDialog設(shè)置對話框AboutCDialog關(guān)于對話框表 3.3 主要函數(shù)介紹源文件函數(shù)名稱功能描述Explore.cppOnInitDialogOpenFileOnClickedButton1OnClickedButton2ExchangeBook對對話框進(jìn)行初始化處理打開文件函數(shù)響應(yīng)“升序”按鈕實(shí)現(xiàn)排序該圖書信息響應(yīng)“升序”按鈕實(shí)現(xiàn)排序該圖
8、書信息交換各對象的數(shù)據(jù)C+語言課程設(shè)計(jì)5表 3.4 主要函數(shù)介紹源文件函數(shù)名稱功能描述CtianjinDlg.cppOnInitDialogOnPaintOnQueryDragIconOnTimerUpdateFileOnExitOnEnterOnAboutOnQueryOnSettingOnExplore對對話框進(jìn)行初始化處理對對話框繪制部分應(yīng)用窗口系統(tǒng)獲取鼠標(biāo)圖標(biāo)用于實(shí)現(xiàn)定時(shí)控制功能用于實(shí)現(xiàn)更新文件來計(jì)算收了幾本書響應(yīng)“退出”按鈕實(shí)現(xiàn)退出本程序響應(yīng)“編輯”按鈕實(shí)現(xiàn)啟動(dòng)編輯對話框響應(yīng)“關(guān)于”按鈕實(shí)現(xiàn)啟動(dòng)關(guān)于對話框響應(yīng)“查詢”按鈕實(shí)現(xiàn)啟動(dòng)查詢對話框響應(yīng)“設(shè)置”按鈕實(shí)現(xiàn)啟動(dòng)設(shè)置對話框響應(yīng)“瀏覽”
9、按鈕實(shí)現(xiàn)啟動(dòng)瀏覽對話框表 3.5 主要函數(shù)介紹源文件函數(shù)名稱功能描述Entering.cppOnInitDialogOnCtlColor OnBnClickedOkCheckInputOnCloseOnLvnItemchangedList1OnBnClickedOk2OnBnClickedOk3OnLvnColumnclickList1OnNMClickList1OnBnClickedButton1對對話框進(jìn)行初始化處理控件窗口函數(shù) 用于畫出控件菜單處理添加記錄信息檢查輸入的內(nèi)容是否為空輸入記錄信息關(guān)閉該對話框某個(gè)項(xiàng)已經(jīng)發(fā)生變化響應(yīng)“刪除”按鈕實(shí)現(xiàn)刪除該圖書信息響應(yīng)“修改”按鈕實(shí)現(xiàn)修改該圖書信
10、息單擊列,用于勾選全部當(dāng)鼠標(biāo)單擊列表視圖控件時(shí)產(chǎn)生響應(yīng)“清空”按鈕實(shí)現(xiàn)修改該圖書信息C+語言課程設(shè)計(jì)6表 3.6 主要函數(shù)介紹源文件函數(shù)名稱功能描述query.cppOnInitDialogOnBnClickedRadio1OnBnClickedRadio2OnBnClickedRadio3OnBnClickedRadio4OnBnClickedRadio5OnBnClickedButton1QueryNumQueryNameQueryAuthorQueryPressQueryAnyOpenFileTipinsertOnBnClickedButton2對對話框進(jìn)行初始化處理響應(yīng)“書號”按鈕實(shí)現(xiàn)
11、選擇該方式查詢響應(yīng)“書名”按鈕實(shí)現(xiàn)選擇該方式查詢響應(yīng)“作者”按鈕實(shí)現(xiàn)選擇該方式查詢響應(yīng)“出版社”按鈕實(shí)現(xiàn)選擇該方式查詢響應(yīng)“任何內(nèi)容”按鈕實(shí)現(xiàn)選擇該方式查詢關(guān)閉該對話框查詢書號函數(shù)查詢書名函數(shù)查詢作者函數(shù)查詢出版社函數(shù)查詢?nèi)魏魏瘮?shù)打開文件提示用于告訴用戶找到了多少本將已找到的幾本書插入在顯示上響應(yīng)“查詢”按鈕實(shí)現(xiàn)根據(jù)該方式查詢C+語言課程設(shè)計(jì)73.4 對象數(shù)據(jù)結(jié)構(gòu) 每個(gè)對象記錄著每本書的信息,為了保護(hù)數(shù)據(jù)安全,故把其的這些成員變量聲明為private,就是說在類外的話,不能直接調(diào)用對象的成員變量名來賦值或者獲取其值,這就達(dá)到了保護(hù)數(shù)據(jù),但是在某個(gè)時(shí)候遇到數(shù)據(jù)不對可能需要修改,這時(shí)就要加成員函數(shù)
12、來修改或者獲取,而且把成員函數(shù)聲明為public,由于在類外需要正常調(diào)用,故聲明為公開。其表如下。 表 3.7 主要變量介紹變量名類型功能描述NameNumAuthorPressTimePriceCharCharCharCharCharDouble書名書號作者出版社時(shí)間價(jià)格表 3.8 主要函數(shù)介紹源文件函數(shù)名稱功能描述book.cppSetNameSetNumSetAuthorSetPressSetTimeSetPriceGetNameGetNumGetAuthorGetPressGetTimeGetPrice設(shè)置當(dāng)前對象的成員變量 name 的值設(shè)置當(dāng)前對象的成員變量 num 的值設(shè)置當(dāng)前對
13、象的成員變量 Author 的值設(shè)置當(dāng)前對象的成員變量 Press 的值設(shè)置當(dāng)前對象的成員變量 Time 的值設(shè)置當(dāng)前對象的成員變量 Price 的值獲取當(dāng)前對象的成員變量 name 的值獲取當(dāng)前對象的成員變量 Num 的值獲取當(dāng)前對象的成員變量 Author 的值獲取當(dāng)前對象的成員變量 Press 的值獲取當(dāng)前對象的成員變量 Time 的值獲取當(dāng)前對象的成員變量 Price 的值C+語言課程設(shè)計(jì)8第四章 詳細(xì)設(shè)計(jì)4.1 程序源代碼4.1.1 登陸模塊Login.h#pragma once#includetianjinDlg.h#include afxwin.h/ Login 對話框class
14、 Login : public CDialogDECLARE_DYNAMIC(Login)int a;public:Login(CWnd* pParent = NULL); / 標(biāo)準(zhǔn)構(gòu)造函數(shù)virtual Login();/ 對話框數(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+語言課程設(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:
17、OnBnClickedOk)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;/矩形的類,數(shù)據(jù)成員是 矩形左上角的x的坐標(biāo),矩形左上角Y的坐標(biāo),矩形右下角x的坐標(biāo),矩形右下角Y的坐標(biāo)CString user;this-GetClientRect(&r);/是獲得窗口的當(dāng)前的客戶區(qū),把各坐標(biāo)值
18、保存在r對象。this-MoveWindow(600,300,r.right,r.bottom);/根據(jù)上面獲得窗口的大小,來調(diào)整并且移動(dòng)。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()后邊的語句re
19、gis.EnableWindow(0);/在該函數(shù)的參數(shù)賦值為0 表示禁止指定的控件接受鼠標(biāo)和鍵盤的輸入 由于該已經(jīng)注冊過的。regis.SetWindowTextA(已注冊);/指定該控件的內(nèi)容設(shè)為 ”已注冊用于提示C+語言課程設(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()/檢查該各變
20、量的值是否為空,如該值為空,就執(zhí)行else后邊的語句CString user1,password1;/定義兩個(gè)字符串類變量 用于從配置文件的注冊過的用戶及密碼的值保存在該變量的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
21、.GetBuffer(20),20,./setting.ini);/如同上面的方法if(user=user1&password=password1)/對比各值是否一致,滿足此條件表示該用戶名及密碼都是正確,可以登陸,即執(zhí)行if()后邊的語句this-ShowWindow(SW_HIDE);/把該對話框的顯示方式為隱藏dlg.DoModal();/啟動(dòng)主窗口的對話框CDialog:OnOK();elsea+;/密碼錯(cuò)誤次數(shù)if(a3)/如超過3次的錯(cuò)誤密碼就執(zhí)行if()后邊的語句CDialog:OnCancel();return;/調(diào)用關(guān)閉該對話框的函數(shù) CString d;d.Form
22、at(用戶名或者密碼錯(cuò)誤%d次 超過三次錯(cuò)誤即將自動(dòng)退出,a);MessageBox(d,登陸提示,MB_OK|MB_ICONWARNING);/用于提示密碼錯(cuò)誤 以避免令人覺得這程序有問題else C+語言課程設(shè)計(jì)11MessageBox(用戶名或者密碼的字符串為空,登陸提示,MB_OK|MB_ICONWARNING);/當(dāng)該值為空,則執(zhí)行該語句 用于提示。void Login:OnBnClickedButton1()Register dialog;/定義注冊對話框的對象變量dialog.DoModal();/啟動(dòng) 注冊對話框;4.1.2 注冊模塊Register.h#pragma once
23、#include afxwin.h/ Register 對話框class Register : public CDialogDECLARE_DYNAMIC(Register)public:Register(CWnd* pParent = NULL); / 標(biāo)準(zhǔn)構(gòu)造函數(shù)virtual Register();/ 對話框數(shù)據(jù)enum IDD = IDD_REGISTER ;protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV 支持DECLARE_MESSAGE_MAP()public:afx_msg void OnB
24、nClickedOk();CString user;CString password;CString password1;Register.cpp#include stdafx.h#include tianjin.h#include Register.h#include afxdialogex.h/ Register 對話框IMPLEMENT_DYNAMIC(Register, CDialog)Register:Register(CWnd* pParent /*=NULL*/): CDialog(Register:IDD, pParent), user(_T(), password(_T()C
25、+語言課程設(shè)計(jì)12, password1(_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:OnBnClic
26、kedOk)END_MESSAGE_MAP()void Register:OnBnClickedOk()this-UpdateData();/默認(rèn)值是 TRUE,即從控件傳給變量if(!user.IsEmpty()&!password.IsEmpty()&!password1.IsEmpty()/各變量的字符串是否為空,如都不為空,則執(zhí)行 if()后邊的語句繼續(xù)注冊if(password=password1)/新密碼與第二次新密碼對比下,如相等,則繼續(xù)執(zhí)行注冊,反之不繼續(xù)注冊if(IDOK=MessageBox(確定要注冊該賬號嗎?,注冊提示,MB_OKCANCEL| MB_I
27、CONQUESTION )/輸出提示 是否要確定注冊,如點(diǎn)擊確認(rèn)返回值為 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)前窗口的父窗口
28、句柄(登陸對話框) ,然后通過父窗口句柄獲取指定參數(shù) ID 為 IDC_BUTTON1 的子元素的句柄并綁定 button 窗口句柄:SetWindowTextA(button,已注冊);/改變指定 button 窗口句柄的文本內(nèi)容為已注冊。:EnableWindow(button,0);/第二個(gè)參數(shù)的值為 0 表示禁止指定的控件接受鼠標(biāo)和鍵盤的輸入MessageBox(已經(jīng)成功注冊該賬號:+user+!,注冊提示,MB_OK| MB_ICONASTERISK );/注冊成功輸出提示 CDialog:OnCancel(); else C+語言課程設(shè)計(jì)13MessageBox(新密碼與第二次新密
29、碼不一致 請注意輸入正確!,密碼提示,MB_OK|MB_ICONEXCLAMATION );else MessageBox(用戶名或者密碼的字符串為空,注冊提示,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 對話框class CtianjinDlg : public CDialogEx/ 構(gòu)造public:
30、CtianjinDlg(CWnd* pParent = NULL); / 標(biāo)準(zhǔn)構(gòu)造函數(shù)/ 對話框數(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();
31、afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()public:afx_msg void OnTimer(UINT_PTR nIDEvent);button but1;C+語言課程設(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
32、 OnSetting();afx_msg void OnExplore();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
33、(IDR_MAINFRAME);void CtianjinDlg:DoDataExchange(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,
34、&CtianjinDlg:OnEnter)ON_COMMAND(1003, &CtianjinDlg:OnQuery)ON_COMMAND(1004, &CtianjinDlg:OnSetting)ON_COMMAND(1005, &CtianjinDlg:OnAbout)ON_COMMAND(1002, &CtianjinDlg:OnExplore)END_MESSAGE_MAP()BOOL CtianjinDlg:OnInitDialog()C+語言課程設(shè)計(jì)15CDialogEx:OnInitDialog();CBitmap bit7;bit0.Lo
35、adBitmapA(IDB_BITMAP1);bit1.LoadBitmapA(IDB_BITMAP2);bit2.LoadBitmapA(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);
36、toolhotimag.Create(58,60,ILC_COLOR|ILC_MASK,0,0);toolhotimag.Add(&bit6,ILC_COLOR16);toolbar.Create(this);UINT buttons6=1001,1002,1003,1004,1005,1006;toolbar.SetButtons(buttons,6);char buttontext7=編輯,瀏覽,查詢,設(shè)置,關(guān)于,退出;for(int i=0;i6;i+)toolbar.SetButtonText(i,buttontexti);toolbar.GetToolBarCtrl().Se
37、tImageList(&toolimag);toolbar.GetToolBarCtrl().SetHotImageList(&toolhotimag);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,作者:胡志沖);Update
38、File();statusbar.SetPaneText(2,CTime:GetCurrentTime().Format(%Y:%m:%d:%H:%M:%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+語言課程設(shè)計(jì)16elseCRect dialogrect;this-GetClientRect(dialogrect);CDC
39、 pic;CBitmap pic1;BITMAP info;pic1.LoadBitmapA(IDB_BITMAP7);pic1.GetBitmap(&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 Ctianj
40、inDlg:OnQueryDragIcon()return static_cast(m_hIcon);void CtianjinDlg:OnTimer(UINT_PTR nIDEvent)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
41、(a=50)b=0;if(b=0)a+=20;elsea-=20;CDialogEx:OnTimer(nIDEvent);void CtianjinDlg:OnExit()CDialogEx:OnCancel();void CtianjinDlg:OnEnter()entering enter;C+語言課程設(shè)計(jì)17enter.DoModal();UpdateFile();void CtianjinDlg:UpdateFile()CFile file(data.txt,CFile:modeRead|CFile:modeNoTruncate|CFile:modeCreate);CString st
42、at;stat.Format(已經(jīng)收錄%d 本的書,file.GetLength()/95);file.Close();statusbar.SetPaneText(1, stat);void 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;
43、aboutdlg.DoModal();4.1.4 編輯模塊Entering.h#pragma once#include afxcmn.h#include afxwin.h#include editprice.h/ entering 對話框class entering : public CDialogDECLARE_DYNAMIC(entering)public:entering(CWnd* pParent = NULL); / 標(biāo)準(zhǔn)構(gòu)造函數(shù)virtual entering();/ 對話框數(shù)據(jù)C+語言課程設(shè)計(jì)18enum IDD = IDD_ENTERING ;protected:virtual
44、 void DoDataExchange(CDataExchange* pDX); / DDX/DDV 支持DECLARE_MESSAGE_MAP()public:CListCtrl listctrl;/列表框控件對象virtual BOOL OnInitDialog();/初始化函數(shù)afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);/控件窗口函數(shù) 用于畫出控件CComboBox year,mo,day;char *name,*num,*autho,*pr,*time,*price;afx_msg void OnBn
45、ClickedOk();CString booknum,bookname,author,press;int index;int a;int deletes;bool Check();void 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 OnLvnColumnclickLi
46、st1(NMHDR *pNMHDR, LRESULT *pResult);afx_msg void OnNMClickList1(NMHDR *pNMHDR, LRESULT *pResult);EditPrice EdPrice;CString price1;afx_msg void OnBnClickedButton1();entering.cpp #include stdafx.h#include tianjin.h#include entering.h#include afxdialogex.h/ entering 對話框IMPLEMENT_DYNAMIC(entering, CDia
47、log)entering:entering(CWnd* pParent /*=NULL*/): CDialog(entering:IDD, pParent), booknum(_T(), bookname(_T(), author(_T()C+語言課程設(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(
48、pDX, IDC_COMBO1, year);DDX_Control(pDX, IDC_COMBO4, 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_COMBO3, day);DDV_MaxChars(pDX, bookname, 15);DDX_Control(pDX, IDC_EDIT5, EdPrice);DDX_Tex
49、t(pDX, IDC_EDIT5, price1);DDV_MaxChars(pDX, booknum, 14);DDV_MaxChars(pDX, author, 10);DDV_MaxChars(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, &
50、;entering:OnLvnItemchangedList1)ON_BN_CLICKED(IDOK2, &entering:OnBnClickedOk2)ON_BN_CLICKED(IDOK3, &entering:OnBnClickedOk3)ON_NOTIFY(LVN_COLUMNCLICK, IDC_LIST1, &entering:OnLvnColumnclickList1)ON_NOTIFY(NM_CLICK, IDC_LIST1, &entering:OnNMClickList1)ON_BN_CLICKED(IDC_BUTTON1, &en
51、tering:OnBnClickedButton1)END_MESSAGE_MAP()BOOL entering:OnInitDialog()CDialog:OnInitDialog();listctrl.SetExtendedStyle(LVS_EX_FULLROWSELECT |LVS_EX_GRIDLINES|LVS_EX_CHECKBOXES);/設(shè)置該列表框控件的擴(kuò)張風(fēng)格 允許整行選中 畫出網(wǎng)格線 允許添加單選按鈕控件C+語言課程設(shè)計(jì)20listctrl.InsertColumn(0,書名,0,100,2);/在該列表框控件中的第 0 列的設(shè)置為“書名” ,其寬度為 100listc
52、trl.InsertColumn(1,書號,0,100);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,
53、250);/設(shè)置該列表框控件的文字顏色CString nu;for(int i=2000;i2020;i+)nu.Format(%d,i);year.AddString(nu);/向“年的組合框控件中插入數(shù)據(jù) 比如 2010 2011年for(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 日elsen
54、u.Format(%d,i);day.AddString(nu);CFile file(data.txt,CFile:modeRead);/打開文件 a=file.GetLength()/95;/總文件的大小除以每一本圖書的文件大小等于幾本書 char *text=new char20;/開辟 20 個(gè)類型 char for(int i=0;iGetClientRect(&dd);pWnd-GetWindowRect(&dd);pDC-SetTextColor(RGB(160,32,240);if(CTLCOLOR_EDIT=CTLCOLOR_EDIT)pWnd-GetWind
55、owRect(&dd);return hbr;void entering:OnBnClickedOk()/添加記錄信息if(Check()/判斷該值是否繼續(xù)輸入還是不輸入for(int i=0;i=0&listctrl.GetItemCount()index)/判斷該值是否已經(jīng)選圖書信息 如已選擇該圖書信息,則執(zhí)行 if 后邊的語句Input(index,0);/達(dá)到符合字符輸入及已選該圖書信息的條件就執(zhí)行添加記錄,第一個(gè)參數(shù)是在該列表框的未尾的位置,第二個(gè)參數(shù) 1 表示添加記錄行為 非 1 表示修改記錄行為elseMessageBox(該未選項(xiàng)目,無法修改,提示);/彈出消息
56、框用于提示bool entering:Check()this-Invalidate();/進(jìn)行更新顯示的函數(shù)this-UpdateWindow();/使窗口立即重繪this-UpdateData();/默認(rèn)值是 TRUE,即從控件傳給變量CClientDC dc(this);/關(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ù)?如輸入文字
57、都不為空,即符合這條件 就是n=5 if(bookname.IsEmpty()/判斷該字符是否為空?如為空,則執(zhí)行 if()后邊的的語句dc.TextOutA(820,65,該字符為空);/向關(guān)聯(lián)的窗口設(shè)備上下文輸出文字 用于提示else;n+;/不為空的話,就使 n 的值增加 1if(booknum.IsEmpty()dc.TextOutA(820,113,該字符為空);C+語言課程設(shè)計(jì)23elsen+;if(author.IsEmpty()dc.TextOutA(820,155,該字符為空);elsen+;if(press.IsEmpty()dc.TextOutA(820,200,該字符為
58、空);elsen+;if(price1.IsEmpty()dc.TextOutA(820,235,該字符為空);elsen+;if(0year.GetCurSel()|0mo.GetCurSel()|0day.GetCurSel()/判斷該是否選項(xiàng)dc.TextOutA(875,287,該未選);elseif(nUpdateData(0);/由于默認(rèn)值是 TRUE,即從控件傳給變量,需要改為 FALSE,表示從變量傳給控件。void entering:OnClose()CFile file(data.txt,CFile:modeWrite|CFile:modeCreate);/第一個(gè)參數(shù)dat
59、a.txt表示指定該文件名,第二個(gè)參數(shù)的值表示以寫入模式char *text=new char20;/開辟 20 個(gè)類型 charfor(int i=0;ilistctrl.GetItemCount();i+)/根據(jù)列表框的多少行相應(yīng)循環(huán)多少次listctrl.GetItemText(i,0,text,20);/向該列表框控件的第 i 的行的第 0列的獲取內(nèi)容并保存在 text 的值file.Write(text,20);/向磁盤關(guān)聯(lián)的文件寫入 text 的值listctrl.GetItemText(i,1,text,20);file.Write(text,20);listctrl.GetIt
60、emText(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.Write(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-
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 社區(qū)護(hù)理試題(含答案)
- 2025鋼結(jié)構(gòu)人行天橋施工合同
- 課題申報(bào)參考:旅游賦能稻作梯田生態(tài)產(chǎn)品增值增效路徑研究
- 課題申報(bào)參考:跨模態(tài)時(shí)序信息融合的在線學(xué)習(xí)者細(xì)粒度情感分析與調(diào)節(jié)策略研究
- 【深度分析】可再生能源新政何以推動(dòng)綠證市場發(fā)展-國金證券
- 二零二五年度電梯智能化系統(tǒng)研發(fā)與應(yīng)用合同4篇
- 去健身房鍛煉身體的說說范文
- 2025年粵教新版九年級歷史上冊月考試卷含答案
- 2025年華師大新版八年級物理下冊月考試卷含答案
- 2025年新世紀(jì)版選擇性必修二化學(xué)下冊月考試卷
- 安檢人員培訓(xùn)
- 山東省濰坊市2024-2025學(xué)年高三上學(xué)期1月期末 英語試題
- 危險(xiǎn)性較大分部分項(xiàng)工程及施工現(xiàn)場易發(fā)生重大事故的部位、環(huán)節(jié)的預(yù)防監(jiān)控措施
- 《榜樣9》觀后感心得體會(huì)四
- 2023事業(yè)單位筆試《公共基礎(chǔ)知識》備考題庫(含答案)
- 化學(xué)-廣東省廣州市2024-2025學(xué)年高一上學(xué)期期末檢測卷(一)試題和答案
- 2025四川中煙招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- EHS工程師招聘筆試題與參考答案(某大型央企)2024年
- 營銷策劃 -麗亭酒店品牌年度傳播規(guī)劃方案
- 2025年中國蛋糕行業(yè)市場規(guī)模及發(fā)展前景研究報(bào)告(智研咨詢發(fā)布)
- 潤滑油過濾培訓(xùn)
評論
0/150
提交評論