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

下載本文檔

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

文檔簡介

1、<p>  《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計》</p><p>  問題描述--------------------------------------------------------1</p><p>  問題分析---------------------------------------------------------1</p><p>  邏輯結(jié)構(gòu)和存儲

2、結(jié)構(gòu)設(shè)計------------------------------------1</p><p>  算法設(shè)計----------------------------------------------------------1</p><p>  時間復(fù)雜度和空間復(fù)雜度分析-------------------------------4</p><p>  源代

3、碼--------------------------------------------------------------4-13</p><p>  程序運行結(jié)果-----------------------------------------------------13-15</p><p>  心得-----------------------------------------

4、----------------------------15</p><p>  參考文獻-----------------------------------------------------------------------15</p><p><b>  一.問題描述</b></p><p>  小明是一個計算機專業(yè)top stude

5、nt,祝賀他畢業(yè)了。并準(zhǔn)備到銀行參加工作。上班第一天,經(jīng)理叫他編制一個實現(xiàn)一個活期儲蓄處理程序,算作考查。上班第一天, 一定要給領(lǐng)導(dǎo)一個好印象,小明二話沒說,就答應(yīng)了。現(xiàn)要你是小明了,請完成如下題目功能。儲戶開戶、銷戶、存入、支出活動頻繁,系統(tǒng)設(shè)計要求:(1)能比較迅速地找到儲戶的帳戶,以實現(xiàn)存款、取款記賬;</p><p> ?。?)能比較簡單,迅速地實現(xiàn)插入和刪除,以實現(xiàn)開戶和銷戶的需要。</p>

6、<p><b>  二.問題分析</b></p><p>  活期儲蓄處理中,儲戶開戶、銷戶、存入、指出活動頻繁,系統(tǒng)設(shè)計要求;</p><p>  能比較迅速的找到儲戶的賬戶,以實現(xiàn)存款、取款記賬;</p><p>  能比較簡單的、迅速的實現(xiàn)擦如和刪除,以實現(xiàn)開戶銷戶的需要。</p><p><b

7、>  需求分析:</b></p><p>  創(chuàng)建文件,用數(shù)組形式存儲用戶數(shù)據(jù),開戶時自定義用戶賬戶、姓名、密碼、開戶金額;</p><p>  用戶登錄時,輸入正確的用戶姓名、用戶密碼,完成登陸后即可進行存款、取款、查詢、修改密碼;</p><p>  實現(xiàn)輸入用戶的賬戶名和密碼,將其全部信息刪除,進行銷戶。</p><p&g

8、t;  三.邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)設(shè)計</p><p><b>  邏輯結(jié)構(gòu):</b></p><p>  存儲結(jié)構(gòu)設(shè)計:該存儲結(jié)構(gòu)是鏈?zhǔn)酱鎯Y(jié)構(gòu),本系統(tǒng)主要用線性表結(jié)構(gòu)類型來存儲在“活期儲蓄賬目管理系統(tǒng)”中的信息。其中,結(jié)構(gòu)體由4個分量構(gòu)成:用戶賬號名、用戶姓名、用戶密碼、開戶金額。</p><p><b>  四.算法設(shè)計</b

9、></p><p>  本系統(tǒng)采用鏈?zhǔn)浇Y(jié)構(gòu)存儲儲蓄賬目管理</p><p>  1、用戶輸入想開戶的儲戶輸入其姓名賬戶密碼,然后顯示開戶成功,會有一個賬戶生成,然后開戶成功。</p><p>  2、用戶登錄需要輸入賬號名和密碼,判斷密碼是否正確,如果錯誤則返回,然后點擊登錄,就可以進入管理系統(tǒng)。</p><p>  3、用戶的存取款和

10、查詢余額,首先在登錄賬戶的基礎(chǔ)上,選擇存或取款,然后輸入相應(yīng)的金額,若是取款應(yīng)判斷其金額是否小于賬戶上的金額,如果不小于,則提示儲戶重新輸入相應(yīng)的金額,或者退出。</p><p>  4、儲戶需要銷戶的賬戶,然后程序自動判斷該賬戶是否存在,然后輸入賬戶密碼,若密碼與賬戶相對應(yīng),則刪除該賬戶。</p><p>  五. 空間復(fù)雜度和時間復(fù)雜度分析</p><p>  

11、空間復(fù)雜度:是程序運行所以需要的額外消耗存儲空間,一般的遞歸算法就要有o(n)的空間復(fù)雜度了,簡單說就是遞歸集算時通常是反復(fù)調(diào)用同一個方法,遞歸n次,就需要n個空間。時間復(fù)雜度:一個算法花費的時間與算法中語句的執(zhí)行次數(shù)成正比例,哪個算法中語句執(zhí)行次數(shù)多,它花費時間就多。一個算法中的語句執(zhí)行次數(shù)稱為語句頻度或時間頻度。記為T(n)。一般情況下,算法中基本操作重復(fù)執(zhí)行的次數(shù)是問題規(guī)模n的某個函數(shù),用T(n)表示,若有某個輔助函數(shù)f(

12、n),使得當(dāng)n趨近于無窮大時,T(n)/f (n)的極限值為不等于零的常數(shù),則稱f(n)是T(n)的同數(shù)量級函數(shù)。記作T(n)=O(f(n)),稱O(f(n)) 為算法的漸進時間復(fù)雜度,簡稱時間復(fù)雜度。在各種不同算法中,若算法中語句執(zhí)行次數(shù)為一個常數(shù),則時間復(fù)雜度為O(1),另外,在時間頻度不相同時,時間復(fù)雜度有可能相同,如T(n)=n2+3n+4與T(n)=4n2+2n+1它們的頻度不同,但時間復(fù)雜度相同,都為O(n2)。</

13、p><p><b>  六.源代碼</b></p><p>  #include<iostream></p><p>  #include <string></p><p>  #include<stdlib.h></p><p>  #include<fst

14、ream></p><p>  using namespace std;</p><p>  class consumer;</p><p><b>  class YH</b></p><p><b>  {</b></p><p><b>  public

15、:</b></p><p><b>  YH();</b></p><p>  void set_account();</p><p><b>  //銀行開戶</b></p><p>  void del_account();</p><p>  void tr

16、ansfer(int); //轉(zhuǎn)賬</p><p>  void enter_account();</p><p>  void addmoney(int,float);</p><p>  void exitYH();// 退出系統(tǒng)</p><p>  void functionshow();</p><p>  

17、void save();</p><p>  void load();// 功能界面</p><p>  protected:</p><p>  consumer *account[20];</p><p>  static int acnum;</p><p><b>  //賬戶數(shù)</b&g

18、t;</p><p><b>  };</b></p><p>  int YH::acnum=0;</p><p><b>  YH::YH()</b></p><p><b>  {</b></p><p>  //for(int i=0;i<

19、20;i++) </p><p><b>  //{ </b></p><p>  //account[i] = NULL; </p><p><b>  //} </b></p><p><b>  }</b></p><p>  class cons

20、umer:public YH</p><p><b>  {</b></p><p><b>  public:</b></p><p>  friend class YH;</p><p>  consumer(int id,string Name,string PassWord,float m)

21、</p><p><b>  {</b></p><p>  ID=id;name=Name;money=m;passwd=PassWord;</p><p><b>  }</b></p><p>  consumer(){ID=0;name='0';money=0;passwd=

22、'0';}</p><p>  int get_id(){return ID;}</p><p>  void savemoney();</p><p><b>  // 存錢</b></p><p>  string get_passwd(){return passwd;}</p><

23、;p><b>  // 取得密碼</b></p><p>  void display(); </p><p>  void fetchmoney(); //取錢</p><p>  void change_passwd(); </p><p>  void add_money(float);&

24、lt;/p><p>  void dec_money(float);</p><p>  float get_money();</p><p><b>  //卡卡轉(zhuǎn)帳</b></p><p><b>  private:</b></p><p>  int ID; //開戶帳號

25、</p><p>  string passwd; // 用戶密碼</p><p>  string name; // 用戶姓名 </p><p>  float money;</p><p><b>  };</b></p><p>  void YH::save()</p>&l

26、t;p>  {ofstream ofile("bankdat.dat",ios::out);</p><p>  ofstream outfile("bankdat.dat",ios::out);</p><p><b>  int n=0;</b></p><p>  outfile<<

27、;acnum<<" ";</p><p>  for(;n<acnum;n++)</p><p>  {outfile<<account[n]->ID<<" ";</p><p>  outfile<<account[n]->money<<&qu

28、ot; ";</p><p>  outfile<<account[n]->name<<" ";</p><p>  outfile<<account[n]->passwd<<" ";</p><p><b>  }</b><

29、;/p><p>  outfile.close(); //__page_break__</p><p><b>  }</b></p><p>  void YH::load()</p><p>  {ifstream infile("bankdat.dat",ios::in);</p

30、><p>  if(!infile)</p><p>  {cerr<<"讀取錯誤,無資料中!"<<endl;</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>

31、;  int n=0;</b></p><p><b>  int id,m;</b></p><p>  string nam,passw;</p><p>  infile>>acnum;</p><p>  for(;n<acnum;n++)</p><p> 

32、 {infile>>id;</p><p>  infile>>m;</p><p>  infile>>nam;</p><p>  infile>>passw;account[n]->passwd;</p><p>  consumer * acc = new consumer(id,

33、nam,passw,m); </p><p>  account[n] = acc; </p><p><b>  }</b></p><p>  infile.close();</p><p>  cout<<"讀取資料正常!"<<endl;</p><p

34、><b>  }</b></p><p>  void YH::transfer(int x)</p><p><b>  {int id; </b></p><p>  cout<<"請輸入帳號:"; </p><p><b>  cin>&g

35、t;id; </b></p><p>  int flag = 1; </p><p>  int i = 0; </p><p>  while((i<acnum)&&(flag)) </p><p><b>  { </b></p><p>  if(id==

36、account[i]->get_id()) flag = 0; else i++; </p><p><b>  } </b></p><p><b>  if(flag) </b></p><p><b>  { </b></p><p>  cout<<

37、"帳號不存在!"<<endl<<endl; </p><p><b>  return ;</b></p><p><b>  } </b></p><p><b>  float b;</b></p><p>  cout<&

38、lt;endl<<"請輸入你要轉(zhuǎn)帳的金額:";</p><p><b>  cin>>b;</b></p><p>  while(b<=0)</p><p><b>  {</b></p><p>  cout<<"請輸入正確

39、的數(shù)字!"<<endl;</p><p>  cout<<"$>";</p><p><b>  cin>>b;</b></p><p><b>  }</b></p><p>  if(account[x]->get_m

40、oney()<b) cout<<"對不起,金額不夠!!"<<endl;</p><p>  else {account[x]->dec_money(b);account[i]->add_money(b);</p><p>  cout<<"轉(zhuǎn)帳成功!";}</p><p>

41、<b>  return;</b></p><p><b>  }</b></p><p>  void consumer::add_money(float x)</p><p>  {money=x+money;}</p><p>  void consumer::dec_money(float

42、x)</p><p>  {money=money-x;}</p><p>  void YH::addmoney(int x,float y)</p><p>  {account[x]->money=account[x]->money-y;</p><p><b>  }</b></p>&

43、lt;p>  float consumer::get_money()</p><p>  {return money;}</p><p>  int main()</p><p><b>  {YH yh;</b></p><p>  yh.functionshow();</p><p>&

44、lt;b>  }</b></p><p>  void YH::functionshow()</p><p><b>  {</b></p><p><b>  int n;</b></p><p><b>  do</b></p><p&

45、gt;  {system("cls"); load();</p><p>  cout<<endl<<"請你輸入相應(yīng)的操作序號進行操作:"<<endl;</p><p>  cout<<"1) 用戶開戶"<<endl<<"2) 賬戶登陸"&

46、lt;<endl<<"3) 帳戶注銷"<<endl<<"4) 退出系統(tǒng) "<<endl;</p><p>  cout<<"$>";</p><p><b>  cin>>n;</b></p><p>

47、  while(n<1||n>4)</p><p><b>  { </b></p><p>  cout<<"請輸入正確的操作序號!"<<endl;</p><p>  cout<<"$ >";</p><p><b&g

48、t;  cin>>n;</b></p><p><b>  }</b></p><p><b>  switch(n)</b></p><p><b>  {</b></p><p>  case 1: set_account();</p>

49、<p><b>  break;</b></p><p>  case 2:enter_account();break;</p><p>  case 3: del_account();</p><p><b>  break;</b></p><p>  case 4: exitYH(

50、);</p><p><b>  break;</b></p><p><b>  }</b></p><p>  cin.get();</p><p><b>  }</b></p><p>  while(true);</p><

51、p><b>  }</b></p><p>  void YH::enter_account()</p><p><b>  {int id; </b></p><p>  cout<<"請輸入帳號:"; </p><p><b>  cin>&

52、gt;id; </b></p><p>  int flag = 1; </p><p>  int i = 0; //__page_break__</p><p>  while((i<acnum)&&(flag)) </p><p><b>  { </b></

53、p><p>  if(id==account[i]->get_id()) flag = 0; else i++; </p><p><b>  } </b></p><p><b>  if(flag) </b></p><p><b>  { </b></p>

54、<p>  cout<<"帳號不存在!"<<endl<<endl; </p><p><b>  return; </b></p><p><b>  } </b></p><p>  cout<<"請輸入密碼:";<

55、;/p><p>  string passw;</p><p>  cin>>passw;</p><p>  if(passw!=account[i]->get_passwd()) return;</p><p>  account[i]->display();cin.get();cin.get();</p>

56、<p><b>  int n;</b></p><p>  do{system("cls"); </p><p>  cout<<"請選擇你要進行的操作:"<<endl<<"1)查看信息"<<endl<<"2)取款"

57、;<<endl<<"3)存款"<<endl<<"4)修改密碼"<<endl<<"5)轉(zhuǎn)賬"<<endl<<"6)返回"<<endl;</p><p><b>  cin>>n;</b></

58、p><p><b>  switch(n)</b></p><p>  {case 1: account[i]->display();break;</p><p>  case 2: account[i]->fetchmoney();save();break;</p><p>  case 3:account[i

59、]->savemoney();save();break;</p><p>  case 4:account[i]->change_passwd();save();break;</p><p>  case 5:transfer(i);save();break;</p><p>  case 6:return;</p><p>  

60、}cin.get();cin.get();</p><p><b>  }</b></p><p><b>  while(1);</b></p><p><b>  }</b></p><p>  void YH::set_account()</p><p

61、><b>  {</b></p><p><b>  int id;</b></p><p>  string nam;</p><p>  string passw;</p><p><b>  float m;</b></p><p>  co

62、ut<<endl<<"請輸入開戶號:";</p><p><b>  cin>>id;</b></p><p>  cout<<endl<<"請輸入開戶人姓名:";</p><p><b>  cin>>nam;</b

63、></p><p>  cout<<endl<<"請輸入開戶密碼:";</p><p>  cin>>passw;</p><p>  cout<<endl<<"請輸入存入金額:";</p><p><b>  cin>&

64、gt;m;</b></p><p>  while(m<=0)</p><p><b>  {</b></p><p>  cout<<"請輸入正確的數(shù)字!"<<endl;</p><p><b>  cin>>m;</b>&

65、lt;/p><p><b>  }</b></p><p>  consumer * acc = new consumer(id,nam,passw,m); </p><p>  account[acnum] = acc; </p><p>  cout<<"開戶成功!!"<<en

66、dl<<endl; </p><p><b>  acnum++;</b></p><p><b>  save();</b></p><p>  cin.get();</p><p><b>  return;</b></p><p>&l

67、t;b>  }</b></p><p>  void YH::del_account()</p><p><b>  {</b></p><p><b>  int id;</b></p><p>  cout<<endl<<"請輸入你要注銷的帳戶

68、號:";</p><p><b>  cin>>id;</b></p><p>  int flag = 1; </p><p>  int i = 0; </p><p>  while((i<acnum)&&(flag)) </p><p><

69、b>  { </b></p><p>  if(id == account[i]->get_id()) </p><p><b>  { </b></p><p>  flag = 0; </p><p><b>  } </b></p><p>&l

70、t;b>  else </b></p><p><b>  { </b></p><p><b>  i++; </b></p><p><b>  } </b></p><p><b>  } </b></p><p

71、><b>  if(flag) </b></p><p><b>  { </b></p><p>  cout<<"帳號不存在!"<<endl<<endl; </p><p><b>  return; </b></p>&

72、lt;p><b>  } </b></p><p>  for(int j=i;j<acnum;j++) </p><p><b>  { </b></p><p>  account[j] = account[j+1]; </p><p><b>  } </b>

73、</p><p>  account[acnum-1]=NULL; </p><p><b>  acnum--; </b></p><p>  cout<<"注銷成功!!"<<endl<<endl; </p><p><b>  save();</

74、b></p><p>  cin.get();</p><p><b>  return; </b></p><p><b>  } </b></p><p>  void consumer::change_passwd()</p><p><b>  {&l

75、t;/b></p><p>  string pwd,repwd;</p><p>  cout<<"請輸入新密碼:";</p><p><b>  cin>>pwd;</b></p><p>  cout<<"請再輸入一次新密碼:";&l

76、t;/p><p>  cin>>repwd;</p><p>  if(pwd!=repwd)</p><p>  cout<<"你輸入的兩次密碼不一樣,請重新輸入!"<<endl;</p><p>  passwd=pwd;</p><p>  cout<&l

77、t;"密碼修改成功,請牢記!"<<endl;cin.get(); </p><p><b>  }</b></p><p>  void consumer::fetchmoney()</p><p><b>  {</b></p><p><b>  flo

78、at m;</b></p><p><b>  char ch;</b></p><p><b>  do</b></p><p><b>  {</b></p><p>  cout<<endl<<"你要取多少錢:"&l

79、t;<"$>"<<endl ;//__page_break__</p><p><b>  cin>>m;</b></p><p>  while(m<=0)</p><p><b>  {</b></p><p>  cout<&

80、lt;"請輸入正確的數(shù)字!"<<endl;</p><p>  cout<<"$>";</p><p><b>  cin>>m;</b></p><p><b>  }</b></p><p>  if(money&

81、lt;m)</p><p><b>  {</b></p><p>  cout<<"對不起,你的余額不足!"</p><p><b>  <<endl;</b></p><p><b>  }</b></p><

82、p><b>  else</b></p><p>  {money=money-m;</p><p>  cout<<endl<<"操作成功,請收好錢!"</p><p><b>  <<endl;</b></p><p><b&g

83、t;  }</b></p><p>  cout<<"是否要繼續(xù)該項操作:(Y/N) "</p><p><b>  <<endl;</b></p><p>  cout<<"$ >";</p><p><b>  c

84、in>>ch;</b></p><p>  while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')</p><p><b>  {</b></p><p>  cout<<

85、;"$ >";</p><p><b>  cin>>ch;</b></p><p><b>  }</b></p><p>  }while(ch=='y'||ch=='Y');</p><p><b>  }<

86、/b></p><p>  void consumer::savemoney()</p><p><b>  {</b></p><p><b>  float c;</b></p><p><b>  char ch;</b></p><p>&

87、lt;b>  do</b></p><p><b>  {</b></p><p>  cout<<endl<<"你要存多少錢:"<<"$>"<<endl ;</p><p><b>  cin>>c;</

88、b></p><p>  while(c<=0)</p><p><b>  {</b></p><p>  cout<<"請輸入正確的數(shù)字!"<<endl;</p><p>  cout<<"$>";</p>&

89、lt;p><b>  cin>>c;</b></p><p><b>  }</b></p><p>  money=money+c;</p><p>  cout<<"操作已成功!"<<endl;</p><p>  cout<&

90、lt;"是否要繼續(xù)該項操作:(Y/N) "<<endl;</p><p>  cout<<"$ >";</p><p><b>  cin>>ch;</b></p><p>  while(ch!='n'&&ch!='N&#

91、39;&&ch!='Y'&&ch!='y')</p><p><b>  {</b></p><p>  cout<<"$ >";</p><p><b>  cin>>ch;</b></p>&

92、lt;p><b>  }</b></p><p>  }while(ch=='y'||ch=='Y');</p><p><b>  }</b></p><p>  void consumer::display()</p><p>  {system("

93、;cls"); </p><p>  cout<<"**********************************"<<endl;</p><p>  cout<<"*"<<endl;</p><p>  cout<<"* 用戶姓名:&q

94、uot;<<name<<endl;</p><p>  cout<<"* 帳號: "<<ID<<endl;</p><p>  cout<<"* 余額: "<<money<<endl;</p><p>  cout&l

95、t;<"**********************************"<<endl;</p><p><b>  }</b></p><p>  void YH::exitYH()</p><p><b>  {</b></p><p>  cout&l

96、t;<endl<<"感謝你對本銀行儲蓄管理系統(tǒng)的支持,歡迎下次光臨!"<<endl;</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p><b>  七.程序運行結(jié)果</b></p>

97、<p><b>  心得</b></p><p>  編寫程序的過程并不簡單,在編寫過程中也遇到了各種各樣的困難,開始時存在很多編寫錯誤,也很難找出錯誤出處,只有經(jīng)過多番檢查、努力才能夠編寫出成功的程序。完成程序的編寫,決不意味著萬事大吉。你認(rèn)為萬無一失的程序,實際上機運行時可能不斷出現(xiàn)麻煩。如編譯程序檢測出一大堆錯誤。有時程序本身不存在語法錯 誤,也能夠順利運行,但是運行結(jié)果

98、顯然是錯誤的。開發(fā)環(huán)境所提供的編譯系統(tǒng)無法發(fā)現(xiàn)這種程序邏輯錯誤,只能靠自己的上機經(jīng)驗分析判斷錯誤所在。</p><p><b>  參考文獻:</b></p><p>  數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(C/C++描述)</p><p><b>  數(shù)據(jù)結(jié)構(gòu)</b></p><p>  C++面向?qū)ο蟪绦蛟O(shè)計&l

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論