2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  《C++程序設(shè)計(jì)》課程設(shè)計(jì)</p><p><b>  設(shè)計(jì)報(bào)告</b></p><p><b>  目錄</b></p><p>  1.需求分析- 2 -</p><p>  2.概要設(shè)計(jì)- 2 -</p><p>  3. 詳細(xì)設(shè)計(jì)- 3

2、 -</p><p>  3.1代碼設(shè)計(jì)- 3 -</p><p>  3.1.1頭文件- 3 -</p><p>  3.1.2源文件- 6 -</p><p>  3.2流程圖設(shè)計(jì)- 16 -</p><p>  4.調(diào)試分析- 16 -</p><p>  4.1遇到的問題-

3、16 -</p><p>  4.2經(jīng)驗(yàn)與體會(huì)- 17 -</p><p>  5.用戶使用說明- 17 -</p><p>  6.測(cè)試結(jié)果- 17 -</p><p>  7.參考文獻(xiàn)- 20 -</p><p><b>  摘要:</b></p><p>  

4、本次課程設(shè)計(jì)的內(nèi)容是家庭月收支管理系統(tǒng)的開發(fā),主要采用了C++語言以及面向?qū)ο蟮姆椒?,通過鍵盤輸入家庭成員的姓名、財(cái)務(wù)編號(hào)、金額、日期等信息來記錄整個(gè)家庭每月的收入與支出情況。該系統(tǒng)實(shí)現(xiàn)的功能有:新增賬務(wù)信息、更改賬戶信息、刪除賬戶信息、查找賬戶信息、顯示所有賬戶信息、按月統(tǒng)計(jì)收支情況、總計(jì)收支情況以及全部刪除的功能。</p><p><b>  1.需求分析</b></p>

5、<p>  家庭月收支系統(tǒng)是針對(duì)每個(gè)家庭的財(cái)務(wù)管理而開發(fā)的,具有相對(duì)實(shí)用且方便的特點(diǎn)。具體表現(xiàn)為:操作簡(jiǎn)單、數(shù)據(jù)的錄入與輸出、查詢和刪除快捷,可以有效的管理每月的收入與支出情況,省時(shí)省力,優(yōu)化管理,使記賬更方便。</p><p>  用戶通過鍵盤輸入財(cái)務(wù)編號(hào)、家庭成員的姓名、金額、支出選項(xiàng)、日期等信息來記錄整個(gè)家庭每月的收入與支出情況,并依次輸出,實(shí)現(xiàn)新增賬務(wù)、更改、刪除、查找、顯示所有賬戶信息、按月統(tǒng)

6、計(jì)收支情況、總計(jì)收支情況以及全部刪除的功能。</p><p>  在進(jìn)入系統(tǒng)時(shí),如果選擇錯(cuò)誤,會(huì)顯示“請(qǐng)重新輸入”;在錄入信息時(shí),如果輸入錯(cuò)誤,會(huì)顯示“該財(cái)務(wù)不存在”。人性化的提示,使得該系統(tǒng)更準(zhǔn)確。</p><p><b>  2.概要設(shè)計(jì)</b></p><p>  本系統(tǒng)用到兩個(gè)類,分別是Finance類和Charge類。Finance類

7、主要用來分別輸入和獲取財(cái)務(wù)編號(hào)、家庭成員的姓名、金額、支出選項(xiàng)、日期,實(shí)現(xiàn)財(cái)務(wù)的錄入和標(biāo)記。Charge類主要用來管理賬務(wù)信息,通過調(diào)用Finance類中錄入的信息來實(shí)現(xiàn)增加、刪除、查找等功能。主函數(shù)通過定義一個(gè)obj對(duì)象,調(diào)用Charge類中的financedata()函數(shù),實(shí)現(xiàn)整個(gè)系統(tǒng)的功能。</p><p><b>  詳細(xì)設(shè)計(jì)</b></p><p><

8、b>  3.1代碼設(shè)計(jì)</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; }//獲取財(cái)務(wù)編號(hào)</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; }//刪除財(cái)務(wù)</p><p>  void add(int da,int n,char *na,int nu);/

13、/增加財(cái)務(wù)</p><p>  void output();//輸出財(cái)務(wù)</p><p><b>  private:</b></p><p>  char name[20];//姓名</p><p>  int no;//財(cái)務(wù)編號(hào)</p><p>  int acount;//金額</p&

14、gt;<p>  int tag;//刪除標(biāo)記</p><p>  int ontag;//收支標(biāo)記</p><p>  int date;//財(cái)務(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){//查找財(cái)務(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)計(jì)財(cái)務(wù)</p><p>  void fcount();//財(cái)務(wù)總計(jì)</p><p>  void clear();//全部刪除</p><p>  void output();//輸出</p><p>  void menu();//菜單選項(xiàng)</p><p><b>  private:

21、</b></p><p>  int top;//財(cái)務(wù)記錄指針</p><p>  Finance fin[10000];//財(cái)務(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){//增加財(cái)務(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)<<"編號(hào)"<<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)計(jì)財(cái)務(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(){//財(cái)務(wù)總計(jì)</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()//菜單選項(xiàng)</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)入家庭財(cái)務(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)計(jì)收支情況 "<<endl;</p><p>  cout<<" 7.總計(jì)收支情況 "<<endl;</p><p>  cout<

61、<" 8.全部刪除 "<<endl;</p><p>  cout<<" 0.退出 "<<endl<<endl;</p><p>  cout&l

62、t;<"***************************************************"<<endl;</p><p>  cout<<"請(qǐng)選擇:";</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<<"輸入財(cái)務(wù)編號(hào):"<<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<<"輸入財(cái)務(wù)編號(hào):"<<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<<"該財(cái)務(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<<"輸入財(cái)務(wù)編號(hào):"<<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<<"該財(cái)務(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;<"輸入財(cái)務(wù)編號(hào):"<<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<<"該財(cái)務(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)<<"編號(hào)"<<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<<"請(qǐng)輸入月份:"<<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<<"請(qǐng)重新輸入";</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è)計(jì)</b></p><p><b>  4.調(diào)試分析</b></p><p><b>  4.1遇到的問題</b></p><p>  本系統(tǒng)在整個(gè)設(shè)計(jì)實(shí)驗(yàn)過程中,遇到以下幾個(gè)問題:</p>

83、;<p>  在信息的錄入及輸出過程中,ifile、ofile的使用遇到了問題,不知道該怎么實(shí)現(xiàn).read和.write的二進(jìn)制的轉(zhuǎn)換;</p><p>  在實(shí)現(xiàn)查詢、增加、按月統(tǒng)計(jì)的功能時(shí),代碼的編寫有些困難,借鑒了網(wǎng)上的代碼。</p><p><b>  4.2經(jīng)驗(yàn)與體會(huì)</b></p><p>  自己一個(gè)人獨(dú)自設(shè)計(jì)程序是

84、一個(gè)相當(dāng)大的挑戰(zhàn),在開始進(jìn)行編寫時(shí)的思路以及編程過程中會(huì)遇到很多的問題。在尋找思路的時(shí)候,我先是去網(wǎng)上查了一下相關(guān)的代碼,然后再將其中有些函數(shù)運(yùn)用到自己的程序中。在實(shí)現(xiàn)文件的錄入與讀取時(shí),我用了相當(dāng)長的時(shí)間,最后實(shí)現(xiàn)了文件的錄入,不過在下一次打開程序時(shí)文件不能讀取,這個(gè)問題我還沒有解決。本次課程設(shè)計(jì)給我的體會(huì)是:要腳踏實(shí)地的學(xué)習(xí),加強(qiáng)動(dòng)手操作能力,勤思考,多鍛煉,為以后的深入學(xué)習(xí)做鋪墊。</p><p><

85、b>  5.用戶使用說明</b></p><p>  進(jìn)入本系統(tǒng)后,根據(jù)提示,選擇0~8八個(gè)數(shù)字,進(jìn)行操作即可看到需要的數(shù)據(jù)。</p><p>  新增賬務(wù)信息(增加新的賬務(wù),即收支記錄)</p><p>  更改賬戶信息(家庭成員名輸入錯(cuò)誤,可重新輸入)</p><p>  刪除賬戶信息(若賬戶錄入錯(cuò)誤,可選擇刪除)<

86、;/p><p>  查找賬戶信息(可對(duì)已有記錄進(jìn)行查找)</p><p>  顯示所有賬戶信息(顯示所有錄入的賬戶信息)</p><p>  按月統(tǒng)計(jì)收支情況(根據(jù)提示輸入日期,按照月份統(tǒng)計(jì)該月的收支情況)</p><p>  總計(jì)收支情況(統(tǒng)計(jì)所有的財(cái)務(wù)信息進(jìn)行收支計(jì)算)</p><p>  全部刪除(對(duì)已有記錄進(jìn)行全部

87、刪除)</p><p><b>  退出(退出本系統(tǒng))</b></p><p><b>  6.測(cè)試結(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>  錯(cuò)誤輸入:</b></p&g

89、t;<p>  選擇5:顯示所有賬戶</p><p><b>  選擇6:按月統(tǒng)計(jì)</b></p><p><b>  選擇7:總計(jì)</b></p><p><b>  選擇8:全部刪除</b></p><p>  文本文檔finance.txt里面存入的數(shù)據(jù)如下

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論