版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、用C編寫個人理財軟件學(xué)生:劉明偉 指導(dǎo)老師:謝中科摘 要 本課程設(shè)計主要解決個人日常生活中收入與支出等進(jìn)行記錄的程序設(shè)計.在課程設(shè)計中,系統(tǒng)開發(fā)平臺為Windows xp,程序設(shè)計開發(fā)環(huán)境采用Microsoft visual studio 2005,數(shù)據(jù)庫采用Microsoft Access 2003,程序運(yùn)行平臺為Windows 98/2000/XP。對于收入支出進(jìn)行記錄,在程序設(shè)計中,采用了面向?qū)ο蠼鉀Q問題的方法。程序通過調(diào)試運(yùn)行,初步實現(xiàn)了設(shè)計目標(biāo),并且經(jīng)過適當(dāng)完善后,將可以應(yīng)用在商業(yè)中為個人解決簡單的實際問題。關(guān)鍵詞 程序設(shè)計;數(shù)據(jù)庫;SQL;c+;個人理財1 引言 隨著時代的進(jìn)步、社
2、會的發(fā)展,人們越來越富裕走向小康的時候一個問題凸現(xiàn)出來,就是個人理財。1.1課題背景 理財?shù)哪康?,在追求不虞遺乏的豐富人生,是以經(jīng)濟(jì)學(xué)為精神、會計學(xué)為基礎(chǔ)、財務(wù)學(xué)為手段的一門實用科學(xué)。 為什么要理財? 每個人都希望過幸福美滿的生活,但是你首先應(yīng)自問有沒有這樣的能力?房子、車子、股票、珠寶 /系統(tǒng)生成代碼,略去 /系統(tǒng)生成代碼,略去,在某些人眼里是財富的象征,生活品質(zhì)的保證,是他們努力追求的價值。 也有許多所謂的有錢人,寧愿選擇平平淡淡的生活,辛勤工作、努力儲蓄,他們不認(rèn)為華麗的外表相可以代表高水準(zhǔn)的生活品質(zhì)。不過,顯然大多數(shù)人一生中都是無法滿足的。 心理學(xué)家馬斯洛的需求理論告訴我們,人類的需求
3、是有層級之分的:在安全無虞的前提下追求溫飽,當(dāng)基本生活條件獲得滿足之后,則需求得到社會的尊重;并進(jìn)一步追求人生的最終目標(biāo)自我實現(xiàn)。 而要依層級滿足這些需求,必須建立在不虞遺乏的財務(wù)條件上。因此,你必須認(rèn)識理財?shù)闹匾?,訂定一套適合自己的理財計劃,來達(dá)成自己的生活目標(biāo)。 我們知道,追求效益極大化是經(jīng)濟(jì)學(xué)的基本精神,即說以最小的代價,獲得最大的收益。但這并非表示我們吝于付出,因為資源是有限的,稀少的資源,迫使我們必須做選擇,而理財行為就是聰明的選擇。我們付出代價最少、收益最大的一條路,讓有限的資源得以發(fā)揮最大的效用。 而對于我們能擁有的、以及想要爭取的,透過會計學(xué)對財富流量及存量的記錄,客觀地顯現(xiàn)在
4、資產(chǎn)負(fù)債表以及損益表上,可以幫助我們看清自己的財務(wù)狀況,進(jìn)而規(guī)劃出符合我們的需求、能力可及的財務(wù)目標(biāo)。 對于資金的籌措及運(yùn)用,財務(wù)學(xué)可以提供我們最佳的策略及方法,以最少的成本取得資源,并做好有效的分配,因應(yīng)景氣循環(huán)及環(huán)境的變化,配合目標(biāo)定出自己的資產(chǎn)組合。11.2個人理財軟件的目的俗話說“你不理財,財不理你”,只有通過合理的理財,才能夠有效的管理你的個人資產(chǎn)的合理運(yùn)用。個人理財軟件不僅可以幫你記帳,更多的是可以實時掌握你的收入與支出,掌握資金的變動情況,同時還可以統(tǒng)計出資金的主要流向,從而更合理的分配資金。本課題將達(dá)到以下幾個目的:(1) 清晰簡便明了的操作,減少不必要的精力消耗傳統(tǒng)的個人理財
5、軟件中,有大量的冗余功能,使用戶的大部分精力將耗費(fèi)在了解復(fù)雜的界面與繁瑣的操作上,而作為缺少個人理財所應(yīng)具有的簡便明了的特點(diǎn)。通過此個人理財軟件,用戶可以將絕大部分精力放在對數(shù)據(jù)的研究上,而不是無意義的操作上。(2) 提供更好的服務(wù)個人理財軟件可以較迅速、有效地收集各種個人財務(wù)信息,用戶可以直接從系統(tǒng)中獲得自己所需的個人財務(wù)信息,并根據(jù)相關(guān)的信息做出決策和相應(yīng)的行動方案。(3) 降低成本個人理財軟件沒有繁瑣的操作,簡便易懂的操作使用戶減少了上手時間,降低了使用成本。2個人理財軟件可行性分析2.1技術(shù)可行性 個人理財軟件為管理軟件,因而數(shù)據(jù)庫的設(shè)計與操縱是系統(tǒng)設(shè)計的核心。我在課程設(shè)計期間學(xué)習(xí)了數(shù)
6、據(jù)庫的有關(guān)知識,具備一定的能力,能進(jìn)行基本的數(shù)據(jù)庫的設(shè)計與操作;該軟件沒有追求過份復(fù)雜的功能,因而該軟件的實現(xiàn)在技術(shù)上是可行的。2.2人員可行性 我個人在課程設(shè)計期間多處獲取資料進(jìn)行學(xué)習(xí),進(jìn)而對程序的實現(xiàn)有了一定的了解 大一的上學(xué)期學(xué)習(xí)了c+,具有了一定功底,可以進(jìn)行軟件的設(shè)計與開發(fā)。 所以該軟件的實現(xiàn)在人員上是可行的。2.3軟件工作量 制作該軟件的工作量相對于我來說較大,必須保證按進(jìn)度完成任務(wù)。實際工作量預(yù)計超過一個月(每天2小時)。如包含相應(yīng)知識的學(xué)習(xí),文檔的制作等。2.4代碼工作量 預(yù)計需3天左右。2.5文檔要求 依據(jù)國家計算機(jī)軟件產(chǎn)品開發(fā)文件編制指南和現(xiàn)代軟件工程的理論與原則編制標(biāo)準(zhǔn)的
7、軟件技術(shù)文檔。3個人理財軟件需求分析根據(jù)實地考查我們可以先畫出本系統(tǒng)的一個總框架圖如下圖3-1所示;個人理財軟件收入數(shù)據(jù)記錄支出數(shù)據(jù)記錄收入支出數(shù)據(jù)統(tǒng)計收入的日期、金額、類型收入的具體說明支出的日期、金額、類型分別按年月日對收入支出進(jìn)行統(tǒng)計并顯示輸出年月日的結(jié)余根據(jù)收入支出數(shù)據(jù)繪 圖支出的具體說明根據(jù)收入支出數(shù)據(jù)繪 圖 圖3_1 系統(tǒng)總體框架圖31收入數(shù)據(jù)輸入“收入數(shù)據(jù)輸入” 功能模塊用于記錄收入信息,包含的子功能模塊如圖3-2所示。收入數(shù)據(jù)輸入收入的日期、金額、類型收入的具體說明圖3-2 “收入數(shù)據(jù)輸入”功能模能塊 對于個人理財行為來說,不需要太過于復(fù)雜的記錄,對于收入的記錄只需要包含收入的
8、日期、金額、類型、及個人需要添加的說明。32支出數(shù)據(jù)輸入 “支出數(shù)據(jù)輸入”功能模塊用于記錄支出的相關(guān)信息,包含的子功能模塊如圖3-3所示。支出數(shù)據(jù)輸入支出的日期、金額、類型支出的具體說明 圖3-3“支出數(shù)據(jù)輸入”功能模塊與收入數(shù)據(jù)輸入類似,對于支出的記錄只需要包含收入的日期、金額、類型、及個人需要添加的說明。33收入支出數(shù)據(jù)統(tǒng)計“收入支出數(shù)據(jù)統(tǒng)計”功能模塊用于統(tǒng)計某天、某月、或某年的收入支出情況,包含的子功能模塊如圖3-4所示收入支出數(shù)據(jù)統(tǒng)計分別按年月日對收入支出進(jìn)行統(tǒng)計并顯示輸出年月日的結(jié)余圖3-4“收入支出數(shù)據(jù)統(tǒng)計”功能模塊 本模塊可以方便直觀的展示近期的收入支出情況。34數(shù)據(jù)繪圖模塊 本
9、模塊通過從數(shù)據(jù)庫中讀取數(shù)據(jù)然后繪圖,按年繪圖,繪制一年每個月的收入、支出、收入支出總和,這樣可以更加直觀形象的展現(xiàn)出個人的財務(wù)情況。本模塊功能由于本人技術(shù)原因尚未實現(xiàn),正在研究中。3.5數(shù)據(jù)庫分析 根據(jù)以上的需求分析,該課程一共需要4張表,分別存放相應(yīng)的數(shù)據(jù)信息,其中支出數(shù)據(jù)表和收入數(shù)據(jù)表是關(guān)鍵表,用于存放基礎(chǔ)數(shù)據(jù)信息。其它兩個表記錄收入和支出的類型。 (1) 主要實體圖索引ID收入類型收入說明收入金額收入時間數(shù)收入數(shù)據(jù)表 圖3-5收入數(shù)據(jù)實體與屬性圖索引ID支出類型支出說明支出金額支出時間數(shù)支出數(shù)據(jù)表圖3-6支出數(shù)據(jù)實體與屬性圖 (2) 個人理財軟件表清單 表3.1 個人理財軟件清單Mone
10、y保存收入的信息MoneyOut保存支出的信息Type保存收入類型的信息TypeOut保存支出類型的信息4程序?qū)崿F(xiàn)Visual C+資源通常由窗體、模塊和類模塊等構(gòu)成。在“工程資源管理器”中,可以對窗體、模塊和類模塊進(jìn)行管理。窗體是Visual C+程序中必不可少的資源。它可以實現(xiàn)程序的外觀顯示,添加程序代碼,實現(xiàn)需要的功能。模塊可以用來管理全局常量、變量和用戶自定義函數(shù)等。在一個工程中可以有多個模塊同時存在。本次設(shè)計用類來管理數(shù)據(jù)庫中的每個表,類的成員變量對應(yīng)表中的每個列,類的成員函數(shù)則實現(xiàn)對表的各種操作,例如添加、修改、刪除和讀取數(shù)據(jù)等。4.1系統(tǒng)主界面設(shè)計當(dāng)軟件運(yùn)行時顯示系統(tǒng)主界面。(1
11、)軟件主界面進(jìn)入程序后,出現(xiàn)軟件主界面。主界面對話框如圖4-1所示。圖4-1 軟件主界面 主界面如圖4-1所示,在此界面可以直接單擊想使用的的模塊的按鈕。4.2收入數(shù)據(jù)模塊(1)單擊【收入數(shù)據(jù)】按鈕,進(jìn)入【收入數(shù)據(jù)】功能窗體,如圖4-2所示。圖4-2 收入數(shù)據(jù)窗口在窗口中可以看到有收入日期、收入存儲在數(shù)據(jù)庫中的記錄號、收入的金額、收入的類型和收入的說明,還有用一對數(shù)據(jù)進(jìn)行操作的幾個按鈕,分別是移動記錄的四個按鈕(按順序跟別是移動到第一條、移動到前一條、移動到下一條、移動到最后一條)、“添加記錄”、“刪除記錄”和用以退出收入窗口的 “確定”按鈕。當(dāng)按照正確的格式輸入數(shù)據(jù)后,點(diǎn)擊“添加記錄”彈出對
12、話框4-3,提示成功,當(dāng)以不正確的格式填寫點(diǎn)擊“添加記錄”后,由于程序沒有再次添加異常處理機(jī)構(gòu),會出現(xiàn)對話框4-4,此時點(diǎn)擊“確定”,重新按照正確格式填寫即可。4-3添加記錄成功 圖4-4 添加記錄格式錯誤 要想刪除某一條記錄,則移動到此記錄,點(diǎn)擊“刪除記錄”,若成功刪除則彈出如圖4-5所示的對話框。 圖4-5刪除記錄成功(2)本模塊詳細(xì)信息 本模塊結(jié)構(gòu)簡單,它由對數(shù)據(jù)庫進(jìn)行基本操作的功能,能夠管理數(shù)據(jù)庫中記錄的收入數(shù)據(jù),例如收入日期、金額、類型、說明等,可以直接在窗體內(nèi)的控件對的各條記錄進(jìn)行操作。單擊【添加記錄】按鈕可以將新的的記錄存入數(shù)據(jù)庫,但是由于本人技術(shù)有限的原因,新添加的記錄只有在再
13、次打開“收入數(shù)據(jù)”對話框時才可以查詢得到。4.3支出數(shù)據(jù)模塊(1)支出數(shù)據(jù)窗口該窗體的主要功能是對支出數(shù)據(jù)進(jìn)行操作,與收入數(shù)據(jù)窗口相似。如圖4-6所示: 4-6支出數(shù)據(jù)窗口 (2)本模塊詳細(xì)信息 本模塊操作與收入信息模塊相同,各種信息也基本相同。5數(shù)據(jù)統(tǒng)計模塊5.1數(shù)據(jù)統(tǒng)計模塊界面數(shù)據(jù)統(tǒng)計模塊的界面如圖5-1所示:5-1數(shù)據(jù)統(tǒng)計模塊界面在下拉菜單中選擇某項將會在下面的編輯框中輸出相應(yīng)的數(shù)據(jù)。效果如圖5-2所示:6 異常處理程序在執(zhí)行時經(jīng)常會出現(xiàn)一些違反設(shè)計期望的異常情況(如除零),過去的解決方法是利用操作系統(tǒng)中斷代為處理。由于這種解決方法強(qiáng)行中止了應(yīng)用程序的運(yùn)行,一些大型的應(yīng)用系統(tǒng)的開發(fā)人員提
14、出,可以在允許的范圍內(nèi)由應(yīng)用程序自身來處理一般性的程序運(yùn)行錯誤。C+語言異常處理由三個部分構(gòu)成。異常檢測的觸發(fā)、異常檢測的捕獲和異常檢測的處理3。它們分別對應(yīng)了“try”、“throw”和“catch”三個關(guān)鍵字。這三者的關(guān)系如圖5-1所示。圖6-1 C+.NET異常處理流程圖被throw語句扔出的數(shù)據(jù)實際上被壓入了相應(yīng)層的catch語句所對應(yīng)的堆棧內(nèi),最后才被catch語句捕獲到的。當(dāng)try語句出現(xiàn)嵌套時,情況可能會更加復(fù)雜。 7本軟件關(guān)鍵技術(shù)簡介7.1動態(tài)連接數(shù)據(jù)庫 通過使用CDatabase類與數(shù)據(jù)進(jìn)行連接,而不需要添加數(shù)據(jù)源,這樣避免了軟件移植到其他計算機(jī)上需要在添加數(shù)據(jù)源的麻煩,也使
15、計算機(jī)操作水平不高的人可以方便的使用本軟件。CDatabase類要建立與數(shù)據(jù)源的連接,首先應(yīng)構(gòu)造一個CDatabase對象,然后再調(diào)用CDatabase的Open成員函數(shù)Open函數(shù)負(fù)責(zé)建立連接,其聲明為virtual BOOL Open( LPCTSTR lpszDSN, BOOL bExclusive = FALSE, BOOL bReadOnly = FALSE, LPCTSTR lpszConnect = “ODBC;”, BOOL bUseCursorLib = TRUE ); throw( CDBException, CMemoryException );參數(shù)lpszDSN指定了數(shù)
16、據(jù)源名(構(gòu)造數(shù)據(jù)源的方法將在后面介紹),在lpszConnect參數(shù)中也可包括數(shù)據(jù)源名,此時lpszDSN必需為NULL,若在函數(shù)中未提供數(shù)據(jù)源名且使lpszDSN為NULL,則會顯示一個數(shù)據(jù)源對話框,用戶可以在該對話框中選擇一個數(shù)據(jù)源參數(shù)bExclusive說明是否獨(dú)占數(shù)據(jù)源,由于目前版本的類庫還不支持獨(dú)占方式,故該參數(shù)的值應(yīng)該是FALSE,這說明數(shù)據(jù)源是被共享的參數(shù)bReadOnly若為TRUE則對數(shù)據(jù)源的連接是只讀的參數(shù)lpszConnect指定了一個連接字符串,連接字符串中可以包括數(shù)據(jù)源名、用戶帳號(ID)和口令等信息,字符串中的ODBC表示要連接到一個ODBC數(shù)據(jù)源上參數(shù)bUseCu
17、rsorLib若為TRUE,則會裝載光標(biāo)庫,否則不裝載,快照需要光標(biāo)庫,動態(tài)集不需要光標(biāo)庫 若連接成功,函數(shù)返回TRUE,若返回FALSE,則說明用戶在數(shù)據(jù)源對話框中按了Cancel按鈕。若函數(shù)內(nèi)部出現(xiàn)錯誤,則框架會產(chǎn)生一個異常。2 7.2 在程序中使用SQL對數(shù)據(jù)庫進(jìn)行操作 SQL 的誕生于IBM 公司在加利福尼亞San Jose 的試驗室中在七十年代SQL 由這里開發(fā)出來最初它們被稱為結(jié)構(gòu)化查詢語言Structured Query Language 并常常簡稱為sequel。SQL 是操作和檢索關(guān)系型數(shù)據(jù)庫的事實上的標(biāo)準(zhǔn)語言它允許程序員和數(shù)據(jù)庫管理員做如下的工作1 更改數(shù)據(jù)庫的結(jié)構(gòu)2 更改
18、系統(tǒng)的安全設(shè)置3 增加用戶對數(shù)據(jù)庫或表的許可權(quán)限4 在數(shù)據(jù)庫中檢索需要的信息5 對數(shù)據(jù)庫的信息進(jìn)行更新3 致 謝在這次C+的課程設(shè)計中,曾遇到過不少問題,單靠我個人的努力,很難按時完成該課程設(shè)計,在此,我衷心感謝我的指導(dǎo)老師龍鵬飛教授和謝中科老師。老師認(rèn)真負(fù)責(zé)的工作態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神和深厚的理論水平都使我獲益非淺。另外,還要感謝學(xué)校領(lǐng)導(dǎo)、班主任、各位同學(xué)對我們的關(guān)懷、幫助,為我們提供了良好的設(shè)計環(huán)境以及各方面的支持。另再次感謝龍鵬飛教授和謝中科老師,龍教授和謝老師在我做課程設(shè)計期間給我很多無私的幫助,使我能夠?qū)W習(xí)到很多東西。結(jié)束語本程序在對數(shù)據(jù)庫進(jìn)行的操作上方便性很強(qiáng),不需要用戶添加數(shù)據(jù)源這
19、一點(diǎn)極大地方便了用戶的使用。通過使用CDatabase類與CRecordset類能直接對數(shù)據(jù)庫進(jìn)行操作,其優(yōu)點(diǎn)是顯而易見的。通過本次課程設(shè)計,我學(xué)會了數(shù)據(jù)庫編程的部分知識,能夠進(jìn)行較簡單的程序開發(fā)。參考文獻(xiàn)1 個人理財?shù)囊饬x. 2 CDatabase類. 3 王永宏.SQL 21 日自學(xué)通(V1.0) 網(wǎng)上的FREEBOOK附錄 A 個人理財軟件源程序代碼/ 程序名稱:FinancingDlg.cpp/ 程序功能:主窗口的類/ 程序作者:劉明偉/ 最后修改日期:2007-7-5#include "stdafx.h"#include "Financing.h&quo
20、t;#include "FinancingDlg.h"#include "InDlg.h"#include "Statistic.h"#include "DrawDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#endif/ 用于應(yīng)用程序“關(guān)于”菜單項的CAboutDlg 對話框class CAboutDlg : public CDialog /系統(tǒng)生成代碼,略去;CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)void CAboutDlg
21、:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)END_MESSAGE_MAP()/ CFinancingDlg 對話框CFinancingDlg:CFinancingDlg(CWnd* pParent /*=NULL*/): CDialog(CFinancingDlg:IDD, pParent)m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);void CFinancingDlg:DoData
22、Exchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(CFinancingDlg, CDialog)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()/AFX_MSG_MAPON_BN_CLICKED(IDC_BUTTON_IN, &CFinancingDlg:OnBnClickedButtonIn)ON_BN_CLICKED(IDC_BUTTON_OUT, &CFinancingDlg:OnBnClickedButtonOut)O
23、N_BN_CLICKED(IDC_BUTTON_STATISTIC, &CFinancingDlg:OnBnClickedButtonStatistic)ON_BN_CLICKED(IDC_BUTTON_GRAPHIC, &CFinancingDlg:OnBnClickedButtonGraphic)END_MESSAGE_MAP()/ CFinancingDlg 消息處理程序BOOL CFinancingDlg:OnInitDialog()CDialog:OnInitDialog(); /系統(tǒng)生成代碼,略去void CFinancingDlg:OnSysCommand(UIN
24、T nID, LPARAM lParam) /系統(tǒng)生成代碼,略去/ 如果向?qū)υ捒蛱砑幼钚』粹o,則需要下面的代碼/ 來繪制該圖標(biāo)。對于使用文檔/視圖模型的MFC 應(yīng)用程序,/ 這將由框架自動完成。void CFinancingDlg:OnPaint() /系統(tǒng)生成代碼,略去/當(dāng)用戶拖動最小化窗口時系統(tǒng)調(diào)用此函數(shù)取得光標(biāo)顯示。/HCURSOR CFinancingDlg:OnQueryDragIcon()return static_cast<HCURSOR>(m_hIcon);void CFinancingDlg:OnBnClickedButtonIn() /打開“收入數(shù)據(jù)”對話框/
25、 TODO: 在此添加控件通知處理程序代碼CInDlg dlg; dlg.DoModal();void CFinancingDlg:OnBnClickedButtonOut() /打開“支出數(shù)據(jù)”對話框/ TODO: 在此添加控件通知處理程序代碼COuttDlg dlg; dlg.DoModal();void CFinancingDlg:OnBnClickedButtonStatistic() /打開“數(shù)據(jù)統(tǒng)計”對話框/ TODO: 在此添加控件通知處理程序代碼 CStatistic dlg; dlg.DoModal();void CFinancingDlg:OnBnClickedButton
26、Graphic() /打開“數(shù)據(jù)曲線”對話框/ TODO: 在此添加控件通知處理程序代碼CDrawDlg dlg;dlg.DoModal();/ 程序名稱:InDlg.cpp/ 程序功能:實現(xiàn)收入數(shù)據(jù)窗口的各功能。/ 程序作者:劉明偉/ 最后修改日期:2007-7-5/ InDlg.cpp : 實現(xiàn)文件/#include "stdafx.h"#include "Financing.h"#include "InDlg.h"/ CInDlg 對話框IMPLEMENT_DYNAMIC(CInDlg, CDialog)CInDlg:CInDl
27、g(CWnd* pParent /*=NULL*/): CDialog(CInDlg:IDD, pParent)/在此函數(shù)中實現(xiàn)連接數(shù)據(jù)庫 CString path; /定義變量用于存儲程序的路徑 path.Format(L"Driver=Microsoft Access Driver (*.mdb);DBQ=%sdata.mdb", GetAppPath(); /連接數(shù)據(jù)庫 m_db.OpenEx(path); /初始化 m_rs.m_pDatabase=&m_db; /數(shù)據(jù)庫連接關(guān)聯(lián) m_rs.Open(AFX_DB_USE_DEFAULT_TYPE,_T(&q
28、uot;SELECT * FROM Money");/打開表 m_Now = 0; m_Count = 0; for(; !m_rs.IsEOF(); m_rs.MoveNext()/檢索表 m_Count+; m_Now+; if(m_Now!=1&&m_Count>0) /到達(dá)第一條記錄 m_rs.MoveFirst(); m_Now=1; CInDlg:CInDlg() m_rs.Close();m_db.Close(); /關(guān)閉記錄集void CInDlg:DoDataExchange(CDataExchange* pDX).BEGIN_MESSAGE_
29、MAP(CInDlg, CDialog) / ON_BN_CLICKED(IDC_BUTTON1, &CInDlg:OnBnClickedButton1) /隱藏了添加收入類型的功能 /系統(tǒng)生成代碼,略去END_MESSAGE_MAP()/ CInDlg 消息處理程序CString CInDlg:GetAppPath() /隱藏了添加收入類型的功能 CString strPath; /定義變量用于存儲程序的路徑 WCHAR exePathMAX_PATH; /定義變量用于存儲程序的路徑 GetModuleFileName(NULL,exePath,MAX_PATH); /數(shù)組表示exe
30、文件路徑 strPath.Format(_T("%s"),exePath); /字符串表示exe文件路徑 strPath=strPath.Left(strPath.ReverseFind(''); /刪除exe文件名 return strPath;void CInDlg:OnOK() /“確定”按鈕 / TODO: 在此添加專用代碼和/或調(diào)用基類 CDialog:OnOK();void CInDlg:OnShowWindow(BOOL bShow, UINT nStatus) /在此函數(shù)中初始化收入類型控件 CDialog:OnShowWindow(bSho
31、w, nStatus); / TODO: 在此處添加消息處理程序代碼 m_Type.ResetContent(); /清除所有數(shù)據(jù) CDatabase db; /定義一個對象用于對據(jù)庫進(jìn)行操作 CString path; /定義一個變量用于存儲程序所處的路徑 path.Format(L"Driver=Microsoft Access Driver (*.mdb);DBQ=%sdata.mdb", GetAppPath();/連接數(shù)據(jù)庫 db.OpenEx(path); /初始化 CRecordsetrs( &db ); /數(shù)據(jù)庫連接關(guān)聯(lián) rs.Open(AFX_DB
32、_USE_DEFAULT_TYPE,_T("SELECT * FROM Type");/打開表 for(; !rs.IsEOF(); rs.MoveNext() /檢索表 CString str; rs.GetFieldValue(L"Type",str);/在當(dāng)前表檢索字段數(shù)據(jù) m_Type.AddString(str);/向列表框中添加項 rs.Close(); /關(guān)閉記錄集 db.Close(); /關(guān)閉記錄集void CInDlg:OnBnClickedButtonFirst() /將記錄移動到最前一條 / TODO: 在此添加控件通知處理程序代
33、碼 if(m_Count>0) m_Now = 1; m_rs.MoveFirst(); /移動到第一條記錄 CString ti,ty,ab,mo,id; / 分別存儲時間、種類、說明、金額、本條記錄的IDm_rs.GetFieldValue(L"ID",id); /為變量賦值 m_rs.GetFieldValue(L"Time",ti); m_rs.GetFieldValue(L"Money",mo); m_rs.GetFieldValue(L"Type",ty); m_rs.GetFieldValue(
34、L"About",ab); m_InID.SetWindowTextW(id); /將變量顯示在相應(yīng)控件中 m_Time.SetWindowTextW(ti); m_Money.SetWindowTextW(mo); m_Type.SetWindowTextW(ty); m_About.SetWindowTextW(ab); void CInDlg:OnBnClickedButtonBack() / TODO: 在此添加控件通知處理程序代碼 if(m_Now>1 &&m_Count>0) m_Now-;/如果當(dāng)前記錄號不是第一條則向前移動一條 m
35、_rs.MovePrev();/移動到前一條記錄 CString ti,ty,ab,mo,id; / 分別存儲時間、種類、說明、金額、本條記錄的IDm_rs.GetFieldValue(L"ID",id); /為變量賦值 m_rs.GetFieldValue(L"Time",ti); m_rs.GetFieldValue(L"Money",mo); m_rs.GetFieldValue(L"Type",ty); m_rs.GetFieldValue(L"About",ab); m_InID.Se
36、tWindowTextW(id); /將變量顯示在相應(yīng)控件中 m_Time.SetWindowTextW(ti); m_Money.SetWindowTextW(mo); m_Type.SetWindowTextW(ty); m_About.SetWindowTextW(ab); void CInDlg:OnBnClickedButtonNext() / TODO: 在此添加控件通知處理程序代碼 if(m_Now<m_Count &&m_Count>0) m_Now+; m_rs.MoveNext(); CString ti,ty,ab,mo,id; / 分別存儲時
37、間、種類、說明、金額、本條記錄的ID m_rs.GetFieldValue(L"ID",id); /為變量賦值 m_rs.GetFieldValue(L"Time",ti); m_rs.GetFieldValue(L"Money",mo); m_rs.GetFieldValue(L"Type",ty); m_rs.GetFieldValue(L"About",ab); m_InID.SetWindowTextW(id); /將變量顯示在相應(yīng)控件中 m_Time.SetWindowTextW(ti
38、); m_Money.SetWindowTextW(mo); m_Type.SetWindowTextW(ty); m_About.SetWindowTextW(ab); void CInDlg:OnBnClickedButtonLast() / TODO: 在此添加控件通知處理程序代碼 if(m_Count>0) m_Now = m_Count;m_rs.MoveLast(); CString ti,ty,ab,mo,id; / 分別存儲時間、種類、說明、金額、本條記錄的IDm_rs.GetFieldValue(L"ID",id); /為變量賦值 m_rs.GetF
39、ieldValue(L"Time",ti); m_rs.GetFieldValue(L"Money",mo); m_rs.GetFieldValue(L"Type",ty); m_rs.GetFieldValue(L"About",ab); m_InID.SetWindowTextW(id); /將變量顯示在相應(yīng)控件中 m_Time.SetWindowTextW(ti); m_Money.SetWindowTextW(mo); m_Type.SetWindowTextW(ty); m_About.SetWindow
40、TextW(ab); void CInDlg:OnBnClickedButton2() /本函數(shù)用于添加記錄 / TODO: 在此添加控件通知處理程序代碼 CDatabase db; /定義一個對象用于對據(jù)庫進(jìn)行操作 CString path; /定義一個變量用于存儲程序所處的路徑 path.Format(L"Driver=Microsoft Access Driver (*.mdb);DBQ=%sdata.mdb", GetAppPath(); /連接數(shù)據(jù)庫 db.OpenEx(path); /初始化 CString ti,ty,ab,mo,id; / 定義變量 分別存儲
41、時間、種類、說明、金額、本條記錄的IDm_InID.GetWindowTextW(id); /將變量顯示在相應(yīng)控件中 m_Time.GetWindowTextW(ti); m_Type.GetWindowTextW(ty); m_About.GetWindowTextW(ab); m_Money.GetWindowTextW(mo); CString sql; /定義一個對象 用于對數(shù)據(jù)庫進(jìn)行操作 sql.Format(L"insert into Money(Time,Type,About,Money) values('%s','%s','%s
42、',%s)",ti,ty,ab,mo);/將由控件獲得的變量值添加到記錄中db.ExecuteSQL(sql);/執(zhí)行sql語句AfxMessageBox(L"添加記錄成功!");/提示添加記錄成功 db.Close();/與數(shù)據(jù)庫斷開連接 m_Count+;void CInDlg:OnBnClickedButtonInDel()/ TODO: 在此添加控件通知處理程序代碼CDatabase db; /定義一個對象用于對據(jù)庫進(jìn)行操作 CString path; /定義一個變量用于存儲程序所處的路徑 path.Format(L"Driver=Mic
43、rosoft Access Driver (*.mdb);DBQ=%sdata.mdb", GetAppPath(); /連接數(shù)據(jù)庫 db.OpenEx(path); /初始化 CString id; / 定義變量 存儲本條記錄的IDm_InID.GetWindowTextW(id); /將變量顯示在相應(yīng)控件中 CString sql; /定義一個對象 用于對數(shù)據(jù)庫進(jìn)行操作sql.Format(L"delete * from (Money) where ID=%s",id);/將當(dāng)前記錄刪除 db.ExecuteSQL(sql);/執(zhí)行sql語句 AfxMessa
44、geBox(L"刪除記錄成功!");/提示刪除記錄成功 db.Close();/與數(shù)據(jù)庫斷開連接 m_Count-;/ 程序名稱:OuttDlg.cpp/ 程序功能:完成支出數(shù)據(jù)窗口的功能。/ 程序作者:劉明偉/ 最后修改日期:2007-7-5/ OuttDlg.cpp : 實現(xiàn)文件/#include "stdafx.h"#include "Financing.h"#include "OuttDlg.h"/ COuttDlg 對話框IMPLEMENT_DYNAMIC(COuttDlg, CDialog)COuttD
45、lg:COuttDlg(CWnd* pParent /*=NULL*/): CDialog(COuttDlg:IDD, pParent)CString path; /定義變量用于存儲程序的路徑 path.Format(L"Driver=Microsoft Access Driver (*.mdb);DBQ=%sdata.mdb", GetAppPath(); /連接數(shù)據(jù)庫 m_db.OpenEx(path); /初始化 m_rs.m_pDatabase=&m_db; /數(shù)據(jù)庫連接關(guān)聯(lián) m_rs.Open(AFX_DB_USE_DEFAULT_TYPE,_T(&quo
46、t;SELECT * FROM MoneyOut");/打開表 m_Now = 0; m_Count = 0; for(; !m_rs.IsEOF(); m_rs.MoveNext()/檢索表 m_Count+; m_Now+; if(m_Now!=1&&m_Count>0) /到達(dá)第一條記錄 m_rs.MoveFirst(); m_Now=1; COuttDlg:COuttDlg() m_rs.Close();m_db.Close(); /關(guān)閉記錄集void COuttDlg:DoDataExchange(CDataExchange* pDX)CDialog:
47、DoDataExchange(pDX); /系統(tǒng)生成代碼,略去BEGIN_MESSAGE_MAP(COuttDlg, CDialog) / ON_BN_CLICKED(IDC_BUTTON1, &COuttDlg:OnBnClickedButton1) /隱藏了添加支出類型的功能 ON_BN_CLICKED(IDC_BUTTON2, &COuttDlg:OnBnClickedButton2) ON_BN_CLICKED(IDC_BUTTON3, &COuttDlg:OnBnClickedButton3) ON_BN_CLICKED(IDC_BUTTON4, &C
48、OuttDlg:OnBnClickedButton4) ON_BN_CLICKED(IDC_BUTTON5, &COuttDlg:OnBnClickedButton5) ON_BN_CLICKED(IDC_BUTTON6, &COuttDlg:OnBnClickedButton6)ON_BN_CLICKED(IDC_OutDel, &COuttDlg:OnBnClickedOutDel) ON_WM_SHOWWINDOW()END_MESSAGE_MAP()/ COuttDlg 消息處理程序/*void COuttDlg:OnBnClickedButton1() /此函
49、數(shù)可用于添加收入類型,隱藏 / TODO: 在此添加控件通知處理程序代碼 CDatabase db; CString path; path.Format(L"Driver=Microsoft Access Driver (*.mdb);DBQ=%sdata.mdb", GetAppPath(); db.OpenEx(path); CString ty; m_Type.GetWindowTextW(ty); CString sql; sql.Format(L"insert into Type(Type) values('%s')",ty);
50、 db.ExecuteSQL(sql); AfxMessageBox(L"add success"); db.Close(); m_Type.AddString(ty);*/void COuttDlg:OnBnClickedButton2() / TODO: 在此添加控件通知處理程序代碼 if(m_Count>0) m_Now = 1; m_rs.MoveFirst(); /移動到第一條記錄 CString ti,ty,ab,mo,id; / 分別存儲時間、種類、說明、金額、本條記錄的IDm_rs.GetFieldValue(L"ID",id); /為變量賦值 m_rs.GetFieldValue(L"Time",ti); m_rs.GetFieldValue(L"Money",mo); m_rs.GetFieldValue(L"Type",ty); m_rs.GetFieldValue(L"About",ab); m_Time.SetWindo
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 抗疫的廣播稿
- 感恩父母主題演講稿集合15篇
- 年會發(fā)言稿合集15篇
- 收銀員崗前培訓(xùn)
- 志愿者核酸檢測心得體會
- 二零二五年度保姆聘請與雇主權(quán)益維護(hù)合同2篇
- 預(yù)血管化多孔β-磷酸三鈣組織工程骨的構(gòu)建及其生物學(xué)效應(yīng)評價
- 塔式太陽能定日鏡場糾偏方法研究
- 2025版特殊教育學(xué)校樂器采購及輔助教學(xué)合同2篇
- 應(yīng)急預(yù)案協(xié)同作戰(zhàn)
- 成品移動公廁施工方案
- 2025年度部隊食堂食材采購與質(zhì)量追溯服務(wù)合同3篇
- 新人教版一年級下冊數(shù)學(xué)教案集體備課
- 繪本 課件教學(xué)課件
- 大型央國企信創(chuàng)化與數(shù)字化轉(zhuǎn)型規(guī)劃實施方案
- 過錯方財產(chǎn)自愿轉(zhuǎn)讓協(xié)議書(2篇)
- 牧場物語-礦石鎮(zhèn)的伙伴們-完全攻略
- 青少年農(nóng)業(yè)科普館建設(shè)方案
- 新測繪法解讀
- 人教版五年級上冊數(shù)學(xué)簡便計算大全600題及答案
- 2016-2023年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年考點(diǎn)試題甄選合集含答案解析
評論
0/150
提交評論