數據結構課程設計---銀行賬戶管理系統(tǒng)_第1頁
已閱讀1頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  目  錄</b></p><p><b>  A: 設計目的3</b></p><p>  1.1了解分析方法3</p><p><b>  B: 需求分析3</b></p><p>  1.程序需求及思想3</p><

2、p>  2.程序執(zhí)行命令操作3</p><p>  C: 概要設計3-5</p><p>  1.程序設計流程圖4</p><p>  2.程序結構設計說明5</p><p>  D:詳細設計5-12</p><p>  E:程序運行結果................................1

3、3-16</p><p>  F:設計心得.....................................16-17</p><p>  G:參考文獻.......................................17 </p><p><b>  A、設計目的:</b></p><p>  1.

4、了解并掌握數據結構與算法的設計方法,具備初步的獨立分析和設計能力; </p><p>  2.充分了解和學習數據結構的系統(tǒng)設計和程序編碼,對問題的探究與分析,進行更多的應用與測試。</p><p>  3.學習設計實現(xiàn)活期儲蓄賬目管理,并令其方便、簡單、快捷的實現(xiàn)其各個部分的功能。</p><p>  4.通過這次實驗使自己的設計水平有所提高,對數據結構的

5、整體認知程度有所加強,鍛煉自己思考和設計能力。</p><p><b>  B、需求分析:</b></p><p>  1.本程序需要先建立結點類模板,然后使用鏈表的基本操作應用實現(xiàn)各個程序的實現(xiàn),頭插法先建立鏈表使之成當前操作數據基礎,然后可以使用節(jié)點的刪除進行儲戶的銷戶,結點的插入的應用成為程序的開戶(注意:建立新的用戶要先確認新建的用戶號不可以語之前的用戶號碼相

6、同, 引起系統(tǒng)錯誤!本程序應用鏈表節(jié)點的比較改進程序。)。儲戶的存取也是應用節(jié)點的比較查找之后進行的賬戶錢數加減。</p><p>  2.程序的執(zhí)行命令操作</p><p>  (1).建立節(jié)電類模板,構建鏈表.</p><p>  (2).輸入儲戶信息.</p><p>  (3).執(zhí)行各項操作(數據測試)</p><

7、p>  1.查詢儲戶信息. 2開戶.</p><p>  3儲戶支取信息查詢.</p><p>  4.儲戶的程序銷戶. 5.程序完成.</p><p>  (4).程序退出. </p><p><b>  C、概要設計:</b></p><p><b>  C.1:程序流程圖&l

8、t;/b></p><p><b>  *程序設計流程圖*</b></p><p>  C.2:結構設計說明</p><p>  1.本程序主要應用數據結構節(jié)點類模板,首先構建節(jié)點類模板,在建立已有儲戶數據中對頭結點(*head)分配動態(tài)存儲空間,對頭結點的鄰接點(head->next)賦初值,循環(huán)插入新結點建立儲戶數據(頭插法)。

9、在賬號循環(huán)插入中進行賬號重復判斷。</p><p>  2.在查找賬戶的過程中,應用結點下移繼續(xù)查找,實現(xiàn)賬戶正確查找應用。</p><p>  3.在銷戶過程中,進行結點刪除,從而實現(xiàn)儲戶的銷戶。</p><p>  4.在開戶過程中,定義新結點,分配新的存儲空間,進行結點插入,在賬號循環(huán)插入中進行賬號重復判斷,完成開戶過程。</p><p&g

10、t;  5.在存取記錄過程中,應用結點下移進行循環(huán)查找賬戶信息,顯示賬戶信息。</p><p><b>  6.主函數測試。</b></p><p><b>  D、詳細設計:</b></p><p>  //活期儲蓄帳目管理 </p><p>  #include<iostream>&

11、lt;/p><p>  #include<string></p><p>  using namespace std;</p><p>  template<class T>//構建節(jié)點類模板</p><p>  class Node</p><p><b>  {</b>&l

12、t;/p><p><b>  public: </b></p><p>  Node<T> *next;// T 可省指針</p><p>  string name; </p><p><b>  T data;</b></p><p>  long int num

13、ber; </p><p><b>  };</b></p><p>  template<class T> </p><p>  class SavingList</p><p><b>  {</b></p><p><b>  public: &l

14、t;/b></p><p>  SavingList(){};</p><p>  Node<T> * CreatSavingList();</p><p>  void SearchAccount(long int x);</p><p>  Node<T> * DeleteAccount(long int x

15、);</p><p>  Node<T> * InsertAccount(long int x); </p><p>  void Record(long int x,int y); </p><p><b>  private:</b></p><p>  Node<T> *head; <

16、/p><p><b>  }; </b></p><p>  template<class T> //建立已有儲戶數據 </p><p>  Node<T> * SavingList<T>::CreatSavingList() </p><p><b>  { </b>

17、;</p><p>  head=new Node<T>;//初值 </p><p>  int k=1;//分配動態(tài)空間</p><p>  Node<T> *p,*q;</p><p>  head->next=NULL;// 賦初值</p><p>  long int number

18、,Number;</p><p>  int data; </p><p>  string name; </p><p>  cout<<"請輸入賬戶號(八位整數): "; </p><p>  cin>>number;</p><p>  Number=number;&l

19、t;/p><p>  cout<<"請輸入姓名: "; </p><p>  cin>>name; </p><p>  cout<<"請輸入賬戶余額: ";</p><p>  cin>>data;</p><p>  while(

20、number/1e7>=1 && number/1e7<=10) </p><p><b>  {</b></p><p>  p=new Node<T>;</p><p>  q=new Node<T>;</p><p>  p->number=number;/

21、/節(jié)點初值</p><p>  p->name=name;</p><p>  p->data=data;</p><p>  p->next=head->next;//將p插入連中</p><p>  head->next=p;</p><p>  cout<<"是

22、否繼續(xù)輸入信息 按1繼續(xù)輸入 按0退出"<<endl;</p><p><b>  cin>>k;</b></p><p><b>  if(k==0)</b></p><p><b>  break;</b></p><p>  cout&

23、lt;<"請輸入賬戶號(八位整數): "; </p><p>  cin>>number;</p><p>  q=head->next;</p><p>  while(q)//賬號的重復判斷</p><p><b>  {</b></p><p> 

24、 if(q->number==number)</p><p><b>  {</b></p><p>  cout<<"賬號已存在 !"<<endl;</p><p><b>  break;</b></p><p><b>  }<

25、/b></p><p><b>  else</b></p><p>  q=q->next;</p><p><b>  }</b></p><p><b>  if(!q)</b></p><p><b>  {</b&g

26、t;</p><p>  cout<<"請輸入姓名: ";</p><p>  cin>>name;</p><p>  cout<<"請輸入賬戶余額: "; </p><p>  cin>>data;</p><p><b&

27、gt;  }</b></p><p><b>  }</b></p><p>  return head;</p><p><b>  }</b></p><p>  template<class T> //查找賬戶 </p><p>  voi

28、d SavingList<T>::SearchAccount(long int x)</p><p><b>  { </b></p><p>  if(x/1e7<1||x/1e7>10) </p><p><b>  {</b></p><p>  cout<<

29、;"您輸入的賬戶不存在"<<endl; </p><p><b>  return ;</b></p><p><b>  } </b></p><p>  Node<long> *p; </p><p><b>  p=head; </b

30、></p><p>  while(p!=NULL && p->number!=x) </p><p><b>  {</b></p><p>  p=p->next;//向下移位 繼續(xù)查找</p><p><b>  } </b></p><p

31、>  if(p==NULL) </p><p><b>  {</b></p><p>  cout<<"您輸入的賬戶未找到"<<endl;</p><p><b>  } </b></p><p><b>  else </b>

32、;</p><p><b>  { </b></p><p>  cout<<"賬戶名: "<<p->name<<endl;</p><p>  cout<<"賬戶號碼: "<<p->number<<endl;</p

33、><p>  cout<<"賬戶余額: "<<p->data<<"元"<<endl;</p><p><b>  } </b></p><p><b>  } </b></p><p>  template&l

34、t;class T> //銷戶</p><p>  Node<T> * SavingList<T>::DeleteAccount(long int x)</p><p><b>  { </b></p><p>  Node<T> *p,*q;//節(jié)點類型 </p><p>&l

35、t;b>  p=head; </b></p><p>  while(p!=NULL&&p->number!=x) </p><p><b>  {</b></p><p><b>  q=p;</b></p><p>  p=p->next;</

36、p><p><b>  }</b></p><p>  if(p==NULL) </p><p><b>  {</b></p><p>  cout<<"您輸入的賬戶已不存在"<<endl;</p><p><b>  }

37、</b></p><p><b>  else </b></p><p><b>  {</b></p><p>  q->next=p->next;//將q刪掉</p><p><b>  } </b></p><p>  re

38、turn head;</p><p><b>  } </b></p><p>  template<class T> //開戶 </p><p>  Node<T> * SavingList<T>::InsertAccount(long int x) </p><p><b&g

39、t;  { </b></p><p>  Node<T> *p,*q;</p><p>  q=new Node<T>; </p><p>  char w[10];//名字 </p><p><b>  int i; </b></p><p><b>

40、;  p=head;</b></p><p>  q->number=x; </p><p>  q->next=p->next; </p><p>  p->next=q;//插入 q(新的賬號)</p><p>  cout<<"請輸入姓名: "; </p>

41、<p><b>  cin>>w;</b></p><p>  cout<<"請輸入余額: "; cin>>i;</p><p>  q->name=w; </p><p>  q->data=i; </p><p>  cout<&l

42、t;"您的新賬戶的信息是:"<<endl; </p><p>  cout<<"賬戶名: "<<q->name<<endl;</p><p>  cout<<"賬戶號碼: "<<q->number<<endl; </p>

43、<p>  cout<<"賬戶余額: "<<q->data<<"元"<<endl;</p><p>  return head;</p><p><b>  } </b></p><p>  template<class T> /

44、/存取款記錄 </p><p>  void SavingList<T>::Record(long int x,int y) </p><p><b>  { </b></p><p>  Node<T> *p;</p><p><b>  p=head;</b></p

45、><p>  while(p!=NULL && p->number!=x) //循環(huán)查找P的相同正確值 節(jié)點下移</p><p><b>  {</b></p><p>  p=p->next;</p><p><b>  } </b></p><p>

46、;  if(p==NULL) </p><p>  cout<<"您輸入的賬戶不存在"<<endl; </p><p><b>  else </b></p><p><b>  {</b></p><p>  p->data=p->data+

47、y;</p><p>  if(p->data<0)</p><p>  cout<<"余額不足 請充值!"<<endl;</p><p><b>  else</b></p><p><b>  {</b></p><p&

48、gt;  cout<<"目前您的賬戶信息:"<<endl;</p><p>  cout<<"賬戶名(八位): "<<p->name<<endl; </p><p>  cout<<"賬戶號碼: "<<p->number<<

49、endl; </p><p>  cout<<"賬戶余額: "<<p->data<<"元"<<endl;</p><p><b>  }</b></p><p><b>  } </b></p><p>&

50、lt;b>  } </b></p><p>  int Menu()</p><p><b>  {</b></p><p><b>  int n; </b></p><p>  cout<<"--------------------------Menu--

51、-------------------------"<<endl; </p><p>  cout<<"\t1.查詢賬戶 2.開戶\n\n"<<endl; cout<<"\t3.支出存儲記錄 4.銷戶\n\n"<<endl;</p><p>  cout<<"

52、\t5.退出"<<endl;</p><p>  cout<<"---------------------------------------------------------";</p><p>  cout<<endl;</p><p><b>  do </b></

53、p><p><b>  {</b></p><p>  cout<<"請輸入你的選擇(1--5):\n"<<endl;</p><p><b>  cin>>n; </b></p><p><b>  }</b></p&

54、gt;<p>  while(n<1||n>5);</p><p>  return n; </p><p><b>  } </b></p><p>  int main()</p><p><b>  {</b></p><p>  Saving

55、List<long> T; </p><p>  Node<long> *head;</p><p>  head=T.CreatSavingList(); </p><p>  long int x; </p><p><b>  int y,n;</b></p><p>

56、;<b>  for(;;) </b></p><p><b>  {</b></p><p>  switch (Menu()) </p><p><b>  { </b></p><p><b>  case 1:</b></p><

57、;p><b>  {</b></p><p>  cout<<"請輸入您要查詢的賬戶:";</p><p><b>  cin>>x; </b></p><p>  T.SearchAccount(x); </p><p>  cout<<

58、;" 是否需要繼續(xù)進行操作?是請輸入1,放棄則輸入0: ";</p><p><b>  cin>>y;</b></p><p><b>  if(y==1) </b></p><p><b>  {</b></p><p>  cout<

59、<"-----------------------------------------------------\n\n\n";</p><p>  cout<<"\t1.支出存入 2.銷戶\n\n";</p><p>  cout<<"-------------------------

60、----------------------------\n\n\n"; </p><p><b>  do </b></p><p><b>  {</b></p><p>  cout<<"請輸入你選擇的操作 : ";</p><p><b>

61、  cin>>n;</b></p><p><b>  }</b></p><p>  while(n!=1 && n!=2); </p><p><b>  if(n==1) </b></p><p><b>  {</b></p

62、><p>  cout<<"請輸入你存取的錢數: " ; </p><p>  cout<<"存入錢數在前加“ + ”, 取出錢數在前加“ - ”"<<endl;</p><p><b>  int a;</b></p><p><b> 

63、 cin>>a; </b></p><p>  T.Record(x,a);</p><p><b>  } </b></p><p><b>  if(n==2) </b></p><p><b>  {</b></p><p>

64、;  cout<<"銷戶請輸入 1, 不進行操作輸入 0 !: "; </p><p><b>  int b;</b></p><p><b>  cin>>b; </b></p><p><b>  if(b==1)</b></p><

65、;p>  T.DeleteAccount(x);</p><p><b>  } </b></p><p><b>  } </b></p><p><b>  }</b></p><p><b>  break;</b></p>&l

66、t;p><b>  case 2:</b></p><p><b>  {</b></p><p>  long int c; </p><p>  Node<long> *q;</p><p>  q=head->next;</p><p>  co

67、ut<<"請輸入您的賬號(八位): ";</p><p><b>  cin>>c;</b></p><p><b>  while(q)</b></p><p><b>  {</b></p><p>  if(q->numb

68、er==c)</p><p><b>  {</b></p><p>  cout<<"賬號已存在 !"<<endl;</p><p><b>  break;</b></p><p><b>  }</b></p>&

69、lt;p><b>  else</b></p><p>  q=q->next;</p><p><b>  }</b></p><p><b>  if(!q)</b></p><p><b>  {</b></p><p

70、>  while(c/1e7 <1||c/ 1e7>10) </p><p><b>  {</b></p><p>  cout<<"輸入的位數不正確: "; </p><p><b>  cin>>c;</b></p><p><

71、;b>  } </b></p><p>  T.InsertAccount(c);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  break; </b></p><p>&l

72、t;b>  case 3:</b></p><p><b>  {</b></p><p>  long int r;</p><p><b>  int t,l; </b></p><p>  cout<<"請輸入執(zhí)行操作的賬號: "; </

73、p><p><b>  cin>>r;</b></p><p>  cout<<"請輸入你存取的錢數: " ; </p><p>  //cout<<"存入錢數在前加“ + ”, 取出錢數在前加“ - ”"<<endl;</p><p>

74、<b>  cin>>t;</b></p><p>  T.Record(r,t); </p><p>  cout<<"繼續(xù)操作請輸入1 ,退出輸入0:"<<endl; </p><p><b>  cin>>l; </b></p><

75、;p>  while(l==1) </p><p><b>  {</b></p><p>  cout<<"請輸入執(zhí)行操作的賬號: "; </p><p><b>  cin>>r;</b></p><p>  cout<<"

76、請輸入你存取的錢數: " ;</p><p>  cout<<"存入錢數在前加“ + ”, 取出錢數在前加“ - ”"<<endl;</p><p><b>  cin>>t; </b></p><p>  T.Record(r,t); </p><p>

77、  cout<<"繼續(xù)操作請輸入1,退出輸入0"<<endl;</p><p><b>  cin>>l;</b></p><p><b>  } </b></p><p><b>  }</b></p><p><

78、b>  break;</b></p><p><b>  case 4:</b></p><p><b>  {</b></p><p>  long int k;</p><p><b>  int m;</b></p><p>  

79、cout<<"請輸入你想要消掉的賬戶(請選擇以上已有的) : "; </p><p><b>  cin>>k; </b></p><p>  while(k/1e7<1||k/1e7>9) </p><p><b>  {</b></p><p&

80、gt;  cout<<"輸入的位數不正確: ";</p><p><b>  cin>>k;</b></p><p><b>  } </b></p><p>  T.DeleteAccount(k); </p><p>  cout<<&qu

81、ot;繼續(xù)操作請輸入1,退出輸入0"<<endl; </p><p><b>  cin>>m; </b></p><p>  while(m==1) </p><p><b>  {</b></p><p>  cout<<"請輸入要銷掉的賬

82、戶: "; </p><p><b>  cin>>k;</b></p><p>  while(k/1e7<1||k/1e7>10) </p><p><b>  {</b></p><p>  cout<<"輸入的位數不正確,請你確認后再進

83、行操作!: "; </p><p><b>  } </b></p><p>  T.DeleteAccount(k);</p><p>  cout<<"繼續(xù)操作請輸入1,退出輸入0"<<endl;</p><p><b>  cin>>m;

84、</b></p><p><b>  } </b></p><p><b>  }</b></p><p><b>  break; </b></p><p><b>  case 5:</b></p><p><

85、b>  exit(0);</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  return 0; </p><p><b>  }</b></p><p><b>  E

86、、系統(tǒng)運行結果:</b></p><p><b>  F、設計心得:</b></p><p>  通過此次的課程試驗的練習,我有了很大的收獲,同時也加深了對數據結構這門課程的理解和學會了如何在實際中應用數據結構。</p><p>  我選擇的儲蓄儲管理設計使我了解到鏈表節(jié)點類的正確使用方法,熟悉結點類的作用,更加得知道了數據結構的知

87、識的靈活應用的方便,思路更加清晰。而且更加珍惜的是我了解到了分析問題的整體性非常重要,賬戶的重復問題,程序的可行性,還有程序設計報告的整體過程我都有了更深刻的認識!</p><p>  更加重要的是這次是我和另外的一個同學一起設計的程序,第一次充分了解到團隊合作的重要性!不同的同學的思想在很多的地方是不相同的,同樣的問題可以有不同的算法分析與求解。可以更加有效的讓我們的相互學習能力快速提高相互的學習進步。對數據結

88、構的進一步認識,我感覺到數據結構的奧妙,對知識的掌握要透徹,分析問題要有步驟,有條理。我們都以認真的態(tài)度對待這次設計,在爭論與磨合后完成了這次設計,希望我們對真理探究到底的態(tài)度保持在各項學習中,讓我們變得越來越充實,只是越來越豐富!</p><p><b>  G、參考文獻:</b></p><p>  1.數據結構(C++版) </p><p&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論