版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 《C++程序設(shè)計》課程設(shè)計</p><p><b> 設(shè)計報告</b></p><p><b> 目錄</b></p><p> 1.需求分析- 2 -</p><p> 2.概要設(shè)計- 2 -</p><p> 3. 詳細(xì)設(shè)計- 3
2、 -</p><p> 3.1代碼設(shè)計- 3 -</p><p> 3.1.1頭文件- 3 -</p><p> 3.1.2源文件- 6 -</p><p> 3.2流程圖設(shè)計- 16 -</p><p> 4.調(diào)試分析- 16 -</p><p> 4.1遇到的問題-
3、16 -</p><p> 4.2經(jīng)驗與體會- 17 -</p><p> 5.用戶使用說明- 17 -</p><p> 6.測試結(jié)果- 17 -</p><p> 7.參考文獻(xiàn)- 20 -</p><p><b> 摘要:</b></p><p>
4、本次課程設(shè)計的內(nèi)容是家庭月收支管理系統(tǒng)的開發(fā),主要采用了C++語言以及面向?qū)ο蟮姆椒ǎㄟ^鍵盤輸入家庭成員的姓名、財務(wù)編號、金額、日期等信息來記錄整個家庭每月的收入與支出情況。該系統(tǒng)實現(xiàn)的功能有:新增賬務(wù)信息、更改賬戶信息、刪除賬戶信息、查找賬戶信息、顯示所有賬戶信息、按月統(tǒng)計收支情況、總計收支情況以及全部刪除的功能。</p><p><b> 1.需求分析</b></p>
5、<p> 家庭月收支系統(tǒng)是針對每個家庭的財務(wù)管理而開發(fā)的,具有相對實用且方便的特點。具體表現(xiàn)為:操作簡單、數(shù)據(jù)的錄入與輸出、查詢和刪除快捷,可以有效的管理每月的收入與支出情況,省時省力,優(yōu)化管理,使記賬更方便。</p><p> 用戶通過鍵盤輸入財務(wù)編號、家庭成員的姓名、金額、支出選項、日期等信息來記錄整個家庭每月的收入與支出情況,并依次輸出,實現(xiàn)新增賬務(wù)、更改、刪除、查找、顯示所有賬戶信息、按月統(tǒng)
6、計收支情況、總計收支情況以及全部刪除的功能。</p><p> 在進(jìn)入系統(tǒng)時,如果選擇錯誤,會顯示“請重新輸入”;在錄入信息時,如果輸入錯誤,會顯示“該財務(wù)不存在”。人性化的提示,使得該系統(tǒng)更準(zhǔn)確。</p><p><b> 2.概要設(shè)計</b></p><p> 本系統(tǒng)用到兩個類,分別是Finance類和Charge類。Finance類
7、主要用來分別輸入和獲取財務(wù)編號、家庭成員的姓名、金額、支出選項、日期,實現(xiàn)財務(wù)的錄入和標(biāo)記。Charge類主要用來管理賬務(wù)信息,通過調(diào)用Finance類中錄入的信息來實現(xiàn)增加、刪除、查找等功能。主函數(shù)通過定義一個obj對象,調(diào)用Charge類中的financedata()函數(shù),實現(xiàn)整個系統(tǒng)的功能。</p><p><b> 詳細(xì)設(shè)計</b></p><p><
8、b> 3.1代碼設(shè)計</b></p><p><b> 3.1.1頭文件</b></p><p><b> Finance.h</b></p><p> #include <iostream></p><p> #include <string>&
9、lt;/p><p> #ifndef FINANCE_H</p><p> #define FINANCE_H</p><p> using namespace std;</p><p> class Finance{</p><p><b> public:</b></p>
10、<p> Finance(){}</p><p> char *getname(){ return name; }//獲取姓名</p><p> int getno(){ return no; }//獲取財務(wù)編號</p><p> int getacount(){ return acount; }//獲取金額</p><p>
11、; int gettag(){ return tag; }//獲取刪除標(biāo)記</p><p> int getontag(){ return ontag; }//獲取收支標(biāo)記</p><p> int getdate(){ return date; }//獲取日期</p><p> void setname(char na[]){ strcpy(name,na
12、); }//設(shè)置姓名</p><p> void income(){ ontag=1; }//收入操作</p><p> int expenses();//支出操作</p><p> void del(){ tag=1; }//刪除財務(wù)</p><p> void add(int da,int n,char *na,int nu);/
13、/增加財務(wù)</p><p> void output();//輸出財務(wù)</p><p><b> private:</b></p><p> char name[20];//姓名</p><p> int no;//財務(wù)編號</p><p> int acount;//金額</p&
14、gt;<p> int tag;//刪除標(biāo)記</p><p> int ontag;//收支標(biāo)記</p><p> int date;//財務(wù)日期</p><p><b> };</b></p><p><b> #endif</b></p><p>
15、<b> Charge.h</b></p><p> #include "Finance.h"</p><p> #include <iostream></p><p> #include <string></p><p> #ifndef Charge_H</
16、p><p> #define Charge_H</p><p> class Charge{</p><p> friend ostream & operator<<(ostream & os,const Charge &);</p><p> friend istream & operator
17、>>(istream & is,Charge &);</p><p><b> public:</b></p><p> Charge();//構(gòu)造函數(shù),將finance.txt放到finance[]中</p><p> ~Charge();//析構(gòu)函數(shù),將finance[]寫到finance.txt中<
18、/p><p> int add(int da,int n,char *na,int nu);//增加賬務(wù)</p><p> Finance *q(int id){//查找財務(wù)</p><p> for(int i=0;i<=top;i++)</p><p> if(fin[i].getno()==id && fin[
19、i].gettag()==0){</p><p> return & fin[i];</p><p><b> }</b></p><p> return NULL;</p><p><b> }</b></p><p> void fmonth(int d
20、ata);//按月統(tǒng)計財務(wù)</p><p> void fcount();//財務(wù)總計</p><p> void clear();//全部刪除</p><p> void output();//輸出</p><p> void menu();//菜單選項</p><p><b> private:
21、</b></p><p> int top;//財務(wù)記錄指針</p><p> Finance fin[10000];//財務(wù)記錄</p><p><b> };</b></p><p><b> #endif</b></p><p><b>
22、 3.1.2源文件</b></p><p> Finance.cpp</p><p> #include "Finance.h"</p><p> #include "Charge.h"</p><p> #include <iostream></p>&l
23、t;p> #include <iomanip></p><p> #include <string></p><p> using namespace std;</p><p> void Finance::add(int da,int n,char *na,int nu){//增加財務(wù)</p><p>
24、<b> char ch;</b></p><p><b> tag=0;</b></p><p><b> date=da;</b></p><p><b> no=n;</b></p><p> strcpy(name,na);</p&
25、gt;<p> acount=nu;</p><p><b> ontag=1;</b></p><p> cout<<"支出按(Z),收入按(其他)"<<endl;</p><p><b> cin>>ch;</b></p>&l
26、t;p> if(ch=='Z' || ch=='z')</p><p><b> ontag=0;</b></p><p><b> }</b></p><p> int Finance::expenses(){//支出操作</p><p> if(o
27、ntag==1){</p><p><b> ontag=0;</b></p><p><b> return 1;</b></p><p><b> }</b></p><p><b> return 0;</b></p><
28、p><b> }</b></p><p> void Finance::output(){//輸出</p><p> cout<<setw(6)<<date<<setw(6)<<no<<setw(18)<<name<<setw(10)</p><p>
29、; <<(ontag==1?"收入":"支出")<<setw(10)<<acount<<endl;</p><p><b> }</b></p><p> Charge.cpp</p><p> #include "Finance.h&qu
30、ot;</p><p> #include "Charge.h"</p><p> #include <iostream></p><p> #include <iomanip></p><p> #include <string></p><p> #
31、include <fstream></p><p> using namespace std;</p><p> ostream & operator<<(ostream & os,const Charge & c){</p><p> return os;</p><p><b&g
32、t; }</b></p><p> istream & operator>>(istream & is,Charge & c){</p><p> return is;</p><p><b> }</b></p><p> Charge::Charge(){//
33、構(gòu)造函數(shù),將finance.txt放到finance[]中</p><p> Finance b;</p><p><b> top=-1;</b></p><p> fstream file("finance.txt",ios::in);</p><p><b> while(1)
34、{</b></p><p> file.read((char *)& b,sizeof(b));</p><p> if(!file) break;</p><p><b> top++;</b></p><p> fin[top]=b;</p><p><b&g
35、t; }</b></p><p> file.close();</p><p><b> }</b></p><p> Charge::~Charge(){//析構(gòu)函數(shù),將finance[]寫到finance.txt中</p><p> ofstream ofile;</p><
36、p> ofile.open("finance.txt");</p><p> ofile<<setw(6)<<"月份"<<setw(6)<<"編號"<<setw(18)<<"家庭成員姓名"</p><p> <<se
37、tw(10)<<"收入類別"<<setw(10)<<"金額"<<endl;</p><p> for(int i=0;i<=top;i++)</p><p> if(fin[i].gettag()==0){</p><p> ofile<<setw(6)&
38、lt;<fin[i].getdate()<<setw(6)<<fin[i].getno()<<setw(18)<<fin[i].getname()</p><p> <<setw(10)<<(fin[i].getontag()==1?"收入":"支出")<<setw(10)<&
39、lt;fin[i].getacount()<<endl;</p><p><b> }</b></p><p> ofile.close();</p><p><b> }</b></p><p> int Charge::add(int da,int n,char *na,in
40、t nu){//增加收入</p><p> Finance *p=q(n);</p><p> if(NULL==p){</p><p><b> top++;</b></p><p> fin[top].add(da,n,na,nu);</p><p><b> return
41、 1;</b></p><p><b> }</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> void Charge::fmonth(int data){//按月統(tǒng)計財務(wù)</p>
42、;<p> int da=data;</p><p> int Bnum=0;</p><p> int Rnum=0;</p><p> int Mcout=0;</p><p> int Bcout=0;</p><p> int Rcout=0;</p><p>
43、 for(int i=0;i<=top;i++){</p><p> if(fin[i].getdate()==da){</p><p> if(fin[i].getontag()==1){</p><p> Bcout+=fin[i].getacount();</p><p><b> Bnum++;</b&
44、gt;</p><p> fin[i].output();</p><p><b> }</b></p><p><b> else{</b></p><p> Rcout+=fin[i].getacount();</p><p><b> Rnum++;
45、</b></p><p> fin[i].output();</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> Mcout=Bcout-Rcout;&
46、lt;/p><p> cout<<"收入總金額:"<<Bcout<<endl;</p><p> cout<<"支出總金額:"<<Rcout<<endl;</p><p> cout<<"收支結(jié)余:"<<Mco
47、ut<<endl;</p><p><b> }</b></p><p> void Charge::output(){</p><p> for(int i=0;i<=top;i++)</p><p> if(fin[i].gettag()==0)</p><p>
48、fin[i].output();</p><p><b> }</b></p><p> void Charge::fcount(){//財務(wù)總計</p><p> int Bnum=0;</p><p> int Rnum=0;</p><p> int Mcout=0;</p&
49、gt;<p> int Bcout=0;</p><p> int Rcout=0;</p><p> for(int i=0;i<=top;i++){</p><p> if(fin[i].getontag()==1){</p><p> Bcout+=fin[i].getacount();</p>
50、<p><b> Bnum++;</b></p><p> fin[i].output();</p><p><b> }</b></p><p><b> else{</b></p><p> Rcout+=fin[i].getacount();<
51、;/p><p><b> Rnum++;</b></p><p> fin[i].output();</p><p><b> }</b></p><p><b> }</b></p><p> Mcout=Bcout-Rcout;</p&g
52、t;<p> cout<<"收入總金額:"<<Bcout<<endl;</p><p> cout<<"支出總金額:"<<Rcout<<endl;</p><p> cout<<"收支結(jié)余:"<<Mcout<&
53、lt;endl;</p><p><b> }</b></p><p> void Charge::clear(){//全部刪除</p><p><b> top=-1;</b></p><p><b> }</b></p><p> void
54、 Charge::menu()//菜單選項</p><p><b> {</b></p><p> char x=' ';</p><p> char bname[40];</p><p><b> int dnum;</b></p><p><
55、b> int id;</b></p><p> int acount;</p><p><b> int date;</b></p><p> Finance *b;</p><p> while(x!='0')</p><p><b> {
56、</b></p><p> cout<<"***************************************************"<<endl<<endl;</p><p> cout<<" 歡迎進(jìn)入家庭財務(wù)收支系統(tǒng) "<
57、<endl<<endl;</p><p> cout<<" 菜單 "<<endl<<endl;</p><p> cout<<" 1.新增賬務(wù)信息
58、 "<<endl;</p><p> cout<<" 2.更改賬戶信息 "<<endl;</p><p> cout<<" 3.刪除賬戶信息 "<<
59、endl;</p><p> cout<<" 4.查找賬戶信息 "<<endl;</p><p> cout<<" 5.顯示所有賬戶信息 "<<endl;</p>&
60、lt;p> cout<<" 6.按月統(tǒng)計收支情況 "<<endl;</p><p> cout<<" 7.總計收支情況 "<<endl;</p><p> cout<
61、<" 8.全部刪除 "<<endl;</p><p> cout<<" 0.退出 "<<endl<<endl;</p><p> cout&l
62、t;<"***************************************************"<<endl;</p><p> cout<<"請選擇:";</p><p><b> cin>>x;</b></p><p><b>
63、 switch(x)</b></p><p><b> {</b></p><p><b> case'1':</b></p><p> cout<<"輸入財務(wù)編號:"<<endl;</p><p><b>
64、cin>>id;</b></p><p> cout<<"輸入家庭成員名:"<<endl;</p><p> cin>>bname;</p><p> cout<<"輸入金額:"<<endl;</p><p>
65、cin>>acount;</p><p> cout<<"輸入月份:"<<endl;</p><p> cin>>dnum;</p><p> add(dnum,id,bname,acount);</p><p><b> break;</b>&
66、lt;/p><p><b> case'2':</b></p><p> cout<<"輸入財務(wù)編號:"<<endl;</p><p><b> cin>>id;</b></p><p><b> b=q(id);
67、</b></p><p> if(b==NULL)</p><p><b> {</b></p><p> cout<<"該財務(wù)不存在"<<endl;</p><p><b> break;</b></p><p&g
68、t;<b> }</b></p><p> cout<<"輸入新的家庭成員名:"<<endl;</p><p> cin>>bname;</p><p> b->setname(bname);</p><p><b> break;<
69、/b></p><p><b> case'3':</b></p><p> cout<<"輸入財務(wù)編號:"<<endl;</p><p><b> cin>>id;</b></p><p><b> b
70、=q(id);</b></p><p> if(b==NULL)</p><p><b> {</b></p><p> cout<<"該財務(wù)不存在"<<endl;</p><p><b> break;</b></p>
71、<p><b> }</b></p><p><b> b->del();</b></p><p><b> break;</b></p><p><b> case'4':</b></p><p> cout&l
72、t;<"輸入財務(wù)編號:"<<endl;</p><p><b> cin>>id;</b></p><p><b> b=q(id);</b></p><p> if(b==NULL)</p><p><b> {</b>
73、;</p><p> cout<<"該財務(wù)不存在"<<endl;</p><p><b> break;</b></p><p><b> }</b></p><p> b->output();</p><p><
74、;b> break;</b></p><p><b> case'5':</b></p><p> cout<<setw(6)<<"月份"<<setw(6)<<"編號"<<setw(18)<<"家庭成員姓名&
75、quot;<<setw(10)</p><p> <<"收入類別"<<setw(10)<<"金額"<<endl;</p><p><b> output();</b></p><p><b> break;</b>&l
76、t;/p><p><b> case'6':</b></p><p> cout<<"請輸入月份:"<<endl;</p><p> cin>>date;</p><p> fmonth(date);</p><p>&l
77、t;b> break;</b></p><p><b> case'7':</b></p><p><b> fcount();</b></p><p><b> break;</b></p><p><b> case
78、39;8':</b></p><p><b> clear();</b></p><p> cout<<"刪除成功!"<<endl;</p><p><b> break;</b></p><p><b> defau
79、lt:</b></p><p> cout<<"請重新輸入";</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><
80、b> Main.cpp</b></p><p> #include "Finance.h"</p><p> #include "Charge.h"</p><p> #include <iostream></p><p> #include <fstrea
81、m></p><p> using namespace std;</p><p> void main()</p><p><b> {</b></p><p> Charge obj;</p><p> obj.menu();</p><p><b
82、> }</b></p><p><b> 3.2流程圖設(shè)計</b></p><p><b> 4.調(diào)試分析</b></p><p><b> 4.1遇到的問題</b></p><p> 本系統(tǒng)在整個設(shè)計實驗過程中,遇到以下幾個問題:</p>
83、;<p> 在信息的錄入及輸出過程中,ifile、ofile的使用遇到了問題,不知道該怎么實現(xiàn).read和.write的二進(jìn)制的轉(zhuǎn)換;</p><p> 在實現(xiàn)查詢、增加、按月統(tǒng)計的功能時,代碼的編寫有些困難,借鑒了網(wǎng)上的代碼。</p><p><b> 4.2經(jīng)驗與體會</b></p><p> 自己一個人獨自設(shè)計程序是
84、一個相當(dāng)大的挑戰(zhàn),在開始進(jìn)行編寫時的思路以及編程過程中會遇到很多的問題。在尋找思路的時候,我先是去網(wǎng)上查了一下相關(guān)的代碼,然后再將其中有些函數(shù)運(yùn)用到自己的程序中。在實現(xiàn)文件的錄入與讀取時,我用了相當(dāng)長的時間,最后實現(xiàn)了文件的錄入,不過在下一次打開程序時文件不能讀取,這個問題我還沒有解決。本次課程設(shè)計給我的體會是:要腳踏實地的學(xué)習(xí),加強(qiáng)動手操作能力,勤思考,多鍛煉,為以后的深入學(xué)習(xí)做鋪墊。</p><p><
85、b> 5.用戶使用說明</b></p><p> 進(jìn)入本系統(tǒng)后,根據(jù)提示,選擇0~8八個數(shù)字,進(jìn)行操作即可看到需要的數(shù)據(jù)。</p><p> 新增賬務(wù)信息(增加新的賬務(wù),即收支記錄)</p><p> 更改賬戶信息(家庭成員名輸入錯誤,可重新輸入)</p><p> 刪除賬戶信息(若賬戶錄入錯誤,可選擇刪除)<
86、;/p><p> 查找賬戶信息(可對已有記錄進(jìn)行查找)</p><p> 顯示所有賬戶信息(顯示所有錄入的賬戶信息)</p><p> 按月統(tǒng)計收支情況(根據(jù)提示輸入日期,按照月份統(tǒng)計該月的收支情況)</p><p> 總計收支情況(統(tǒng)計所有的財務(wù)信息進(jìn)行收支計算)</p><p> 全部刪除(對已有記錄進(jìn)行全部
87、刪除)</p><p><b> 退出(退出本系統(tǒng))</b></p><p><b> 6.測試結(jié)果</b></p><p> 進(jìn)入系統(tǒng)看到如下界面:</p><p><b> 選擇1,增加賬務(wù):</b></p><p><b> 選
88、擇2,更改賬戶:</b></p><p><b> 選擇3:刪除賬戶</b></p><p><b> 選擇4:查找賬戶</b></p><p><b> 正確輸入:</b></p><p><b> 錯誤輸入:</b></p&g
89、t;<p> 選擇5:顯示所有賬戶</p><p><b> 選擇6:按月統(tǒng)計</b></p><p><b> 選擇7:總計</b></p><p><b> 選擇8:全部刪除</b></p><p> 文本文檔finance.txt里面存入的數(shù)據(jù)如下
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《c++程序設(shè)計》課程設(shè)計報告家庭月收支管理系統(tǒng)
- c++程序設(shè)計課程設(shè)計--電費管理系統(tǒng)
- c++程序設(shè)計課程設(shè)計--電費管理系統(tǒng)
- 《c++程序設(shè)計》課程設(shè)計--學(xué)生學(xué)籍管理系統(tǒng)
- c++程序設(shè)計課程設(shè)計---公司人員管理系統(tǒng)
- c++課程設(shè)計--c++程序設(shè)計語言
- c++課程設(shè)計-- c++面向?qū)ο蟪绦蛟O(shè)計
- c++程序設(shè)計課程設(shè)計報告
- c++程序設(shè)計課程設(shè)計---學(xué)生成績管理系統(tǒng)
- c++程序設(shè)計課程設(shè)計---學(xué)生信息管理系統(tǒng)
- c++課程設(shè)計-個人收支管理系統(tǒng)
- c++程序設(shè)計課程設(shè)計---學(xué)生成績管理系統(tǒng)
- 《c++程序設(shè)計》課程設(shè)計報告--訂票系統(tǒng)
- 《c++程序設(shè)計課程設(shè)計——復(fù)數(shù)類》
- 《c++語言程序設(shè)計》課程設(shè)計報告
- 《程序設(shè)計語言(c++)》課程設(shè)計
- c++課程設(shè)計--學(xué)生選課系統(tǒng)程序設(shè)計報告
- c++課程設(shè)計-學(xué)生選課系統(tǒng)程序設(shè)計文檔
- c++程序設(shè)計課程設(shè)計---職工管理系統(tǒng)說明書
- c++課程設(shè)計--學(xué)生選課系統(tǒng)程序設(shè)計報告
評論
0/150
提交評論