C++課程設計 銀行賬戶管理系統(tǒng)

上傳人:優(yōu)*** 文檔編號:46703410 上傳時間:2021-12-14 格式:DOC 頁數:21 大小:82KB
收藏 版權申訴 舉報 下載
C++課程設計 銀行賬戶管理系統(tǒng)_第1頁
第1頁 / 共21頁
C++課程設計 銀行賬戶管理系統(tǒng)_第2頁
第2頁 / 共21頁
C++課程設計 銀行賬戶管理系統(tǒng)_第3頁
第3頁 / 共21頁

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《C++課程設計 銀行賬戶管理系統(tǒng)》由會員分享,可在線閱讀,更多相關《C++課程設計 銀行賬戶管理系統(tǒng)(21頁珍藏版)》請在裝配圖網上搜索。

1、真誠為您提供優(yōu)質參考資料,若有不當之處,請指正。青島理工大學C+面向對象課程設計報告院(系): 計算機工程學院 專業(yè): 軟件工程 學生姓名: 華逸帆 班級:軟件121班學號: 201207185 題目: 銀行賬戶管理系統(tǒng) 起迄日期: 2014.6.232013.7.5 設計地點: 計算機學院機房 指 導 教 師: 李蘭 完成日期: 2014 年7月 5 日 目錄1.概要設計.11.1設計思想.11.2設計方法.1 1.3系統(tǒng)中主要模塊和其他模塊間的關系描述.12.需求分析.23.總體設計.24.模塊設計.34.1開戶功能模塊.34.1.1功能模塊分析.34.1.2代碼設計及分析.44.1.3運

2、行結果.54.2銷戶功能模塊.54.2.2功能模塊分析54.2.3代碼設計及分析54.2.3運行結果.75.系統(tǒng)使用說明.76.附錄.76.1設計體會.76.2源程序.81. 概要設計1.1設計思想 銀行賬戶管理系統(tǒng),通過設計一個控制臺應用程序來實現工作人員遍歷管理所有銀行用戶的銀行賬戶功能。通過C+面向對象的程序設計語言,利用面向對象的設計思想,將程序運用面向對象的方法逐塊劃分,對每個對象的性質進行分析設計。1.2實現方法 總體設計方法,是構建一個鏈表,來存儲用戶的資料,數據存儲方面,用存儲文件技術代替存儲數據庫技術。構建一個銀行賬戶類,封裝鏈表的頭結點,創(chuàng)建用戶銀行賬戶各個屬性的函數及其變

3、量。構建一個程序操作類,用于封裝實現打印操作菜單,實現主程序的操作選擇等方法。1.3系統(tǒng)中主要模塊及各模塊間的關系的描述系統(tǒng)中的主要模塊:結構體節(jié)點:用于存放用戶所用的賬戶信息(姓名,單位,電話,賬戶號,余額,地址,是否為聯名賬戶等)銀行賬戶類:用于封裝鏈表的頭結點,記錄刪除所回收的賬戶號,和刪除回收的賬戶數目;構造函數在創(chuàng)建對象時,完成從文件中讀出用戶賬戶所有信息的操作,析構函數在對象即將消亡時,完成將整個鏈表中的所有信息逐個節(jié)點的存入文件中的操作。程序操作類:用于實現程序中,菜單打印操作,菜單選擇等操作。其他各個模塊:節(jié)點構建函數構(開戶函數):鏈表構建函數為銀行賬戶類的私有函數成員,銀行

4、賬戶類的大三功能函數之一,即是鏈表構建的方法,也是用戶開戶的方法,當構造函數運行時從文件中讀入數據存入鏈表時調用,在用戶選擇開戶操作時調用,實現添加一個節(jié)點的功能,進而實現鏈表一個節(jié)點逐個構造的功能。節(jié)點刪除函數(銷戶函數):節(jié)點刪除函數為銀行賬戶類的私有成員,銀行賬戶類的三大功能函數之一,即是鏈表刪除的方法,也是用戶銷戶的方法,當用戶選擇銷戶操作時,調用節(jié)點刪除函數,刪除并釋放節(jié)點。資金操作函數(存款,取款,轉賬函數):資金操作函數為銀行賬戶類的私有成員,銀行賬戶的三大功能函數之一,是用戶所有對資金操作的方法的集合。在用戶選擇任何一種資金操作時調用資金操作函數,完成對用戶賬戶資金的操作,同時

5、對節(jié)點中相對應的變量進行修改,并且返回操作結果。操作選擇函數:選擇操作函數為銀行類的公有成員,根據打印菜單函數,用戶輸入任意一個選項選擇操作,相對應的銀行賬戶的操作。并且判斷用戶是否按照規(guī)定輸入,將用戶輸入的選擇傳入操作函數。操作函數:操作函數為銀行操作類的私有成員,根據傳來的參數選擇是否調用,三大功能函數,并且返回操作結果。其他功能函數:基本均為銀行賬戶類的私有成員函數,節(jié)點信息輸入函數:實現節(jié)點信息逐個輸入,和賬號生成的功能,主要是在開戶函數中調用。節(jié)點遍歷函數:根據傳入的字符串,遍歷查鏈表,返回符合規(guī)定的節(jié)點指針。文件讀寫操作函數():實現節(jié)點信息文件中的讀寫功能,同時實現類中私有變量鏈

6、表長度,回收賬號,回收賬號數目的讀寫操作,主要實在對象的構造函數和析構函數中調用。2. 需求分析銀行賬戶管理系統(tǒng),是由銀行工作人員對銀行用戶的賬戶進行操作管理的系統(tǒng)。是一款使用者為銀行工作人員,但服務對象是銀行用戶的管理系統(tǒng)。不考慮銀行工作人員賬號注冊用戶名密碼的情況下,只需要對銀行用戶賬戶的信息進行操作和管理就能完成要求。銀行用戶賬戶的屬性中含有,用戶的用戶真實姓名,身份證號碼,公司,地址,電話號碼,賬戶號碼,賬戶余額等屬性。除賬戶余額外,其余變量類型均應該為string類型,賬戶余額的類型應該為,double類型。身份證號碼,長度應為18位,電話號碼的長度應為11位。賬戶余額不能超值,最小

7、值為零。賬戶號碼應由系統(tǒng)自動生成,一個用戶名額下可以有多個賬戶,每個賬戶由賬戶號來區(qū)別開來。另外應該設立一種聯名賬戶,這種賬戶有兩個人共同管理,及一個賬戶由兩個用戶名,有兩個身份證號碼。此外,系統(tǒng)中的每個變量的輸入都應該有判斷正誤的判斷,對錯誤無效的變量輸入應該反饋結構不接受。系統(tǒng)中所有的用戶信息應該在程序開始時從文件中讀出,再程序結束時寫入文件,這樣實現用戶信息的存儲代替存入數據庫的方法。3. 總體設計管理系統(tǒng)總體結構由構建的鏈表存儲信息,程序結束后所有的用戶信息都存入文件中,程序開始時再從文件中讀取相關的信息。聲明一個結構體變量Node,包含string類型的變量:用戶名,身份證號碼,電話

8、號碼,公司,地址,賬戶號,聯名用戶用戶名,聯名用戶身份證號碼,double類型的變量余額,Node*類型的變量next。定義一個Link類,封裝鏈表的頭指針Node *head,鏈表的長度length,回收的賬號lack【】,回收的賬號數目number。構造函數,在建立對象時構建鏈表,通過存入鏈表的length值判斷鏈表的長度及已存在的銀行賬戶個數,從而調用構造鏈表的add()函數,在add()函數中調用file_read()函數讀出存在文件中銀行賬戶的信息。程序開始打印出菜單供用戶選擇。開戶,對應add()函數,add函數調用out_node()函數,根據提示輸入用戶銀行賬戶所有信息,并根據

9、length長度和用戶的身份證號碼后12位生成賬戶賬號。銷戶操作,對應delcte()函數,根據傳遞的參數用戶賬號字符串,查找對應的銀行賬戶,然后對節(jié)點進行刪除釋放。存款,取款,轉賬操作對應money()函數,根據傳遞的參數,用戶的賬戶號碼,及選擇的選項,執(zhí)行相對的操作,通過賬戶號碼找到相對應的節(jié)點,在對節(jié)點的money變量進行簡單的加減操作。析構函數,在對象消亡時進行調用,本程序也就是在程序即將結束時進行調用,將鏈表中的每個節(jié)點所有信息,按照一定的順序存入指定的文件中,再將銀行類中的鏈表的長度length,回收的賬號數組lack【】,回收的賬號數目按照一定的順序存入文件中。4. 程序模塊設計

10、4.1開戶功能模塊:4.1.1模塊功能分析:開戶功能膜塊在面向用戶方面應該實現應該具有如下功能,銀行賬戶所有信息輸入的功能,提示用戶是否申請為聯名賬戶,并且防止用戶隨意輸入錯誤無效的信息。在面向系統(tǒng)結構方面,應該具有構建鏈表節(jié)點功能,創(chuàng)建鏈表節(jié)點,并且根據所處的位置加入鏈表,尾節(jié)點的next指針應該指向NULL。最后返回操作結果,執(zhí)行成功返回true,失敗返回false。4.1.2代碼的設計及分析:bool add(bool t,ifstream &input)/是否是從文件中讀出銀行賬戶信息Node* pel,*tail;if(head=NULL)/構建鏈表頭結點head=new Node(

11、);if(!t) /是否第一次使用系統(tǒng)out_node(head,length);length+;else/不是第一次使用系統(tǒng),從文件中讀取信息read_file(head,input);head-next=NULL;return true;elsepel=head;while(pel-next)/在鏈表的末端添加節(jié)點pel=pel-next;tail=new Node();tail-next = NULL;if(!t) /是否第一次使用系統(tǒng)out_node(tail,length);length+;else/不是第一次使用系統(tǒng),從文件中讀取信息read_file(tail,input);pe

12、l-next = tail;pel=tail;return true;4.1.3運行結果:4.2銷戶模塊:4.2.1模塊功能分析模塊功能分析:銷戶函數模塊,面像用戶來說需要實現以下功能:用戶通過輸入一個銀行賬戶號碼,查找相對應的銀行賬戶,如果銀行賬戶不存在,返回給用戶銀行賬戶不存在的信息,如果存在,提示用戶是否刪除,用戶確認刪除,將對應的銀行賬戶信息刪除,反饋給用戶刪除成功的信息。面對系統(tǒng)內部來說,應該實現以下功能:通過所輸入的string 類型變量查找符合要求的節(jié)點,用戶確認刪除,用delete函數釋放節(jié)點內存,重新接好鏈表。此外應該防止用戶隨意輸入的無效和錯誤信息。最后返回操作結果,執(zhí)行成

13、功返回true,失敗返回false。4.2.2代碼的設計及分析:bool delect(string num)Node* pel,*q;int c,i;if(head-num=num)/如果刪除的是頭結點cout請問您確定要銷戶嗎? 1.yes 2.noc;if(c=1)for(i=0;inum0-0);number+;break;pel=head;head=head-next;length-;delete(pel);return true;else if(c=2)return false;else cout輸入有誤!請重新輸入!next!=NULL)if(num=pel-next-num)/

14、查找要刪除的節(jié)點cout請問您確定要銷戶嗎? 1.yes 2.noc;if(c=1)for(i=0;i=50;i+)/回收刪除的銀行賬號到一個數組里,并記錄數組中,值得個數if(lackinum0-0);number+;break;q = pel-next;pel-next = q-next;delete(q);length-;return true;else if(c=2)/如果要銷戶return false;elsecout輸入有誤!重新輸入!next;if(pel-next=NULL)cout沒有找到所查找的賬戶endl;return false;4.2.3運行結果:5. 系統(tǒng)使用說明系

15、統(tǒng)開始運行,屏幕上回打印出功能菜單,根據功能菜單提示的來選擇功能操作,在退出系統(tǒng)時,一定要通過系統(tǒng)提供正確的結束進程方式,才能自動的保存所有的操作。銀行賬戶的所有信息會在下次系統(tǒng)啟動時自動加載到系統(tǒng)中。6.附錄6.1設計體會:通過此次C+程序設計,我切身的體會到了面向對象程序和面向過程程序語言的區(qū)別,區(qū)別不僅僅存在于兩種程序語言中,也存在與編程思想中。面向對象的程序編程思想主要是把需求模塊化,根據每個模塊特定的屬性,需要實現的功能來編寫模塊,創(chuàng)建對象。紙上得來終覺淺,細節(jié)方便我也學習到了很,例如析構函數的調用實在對象的生存周期結束時,而對象的生存周期也有很明確的規(guī)定,比如說一次循環(huán)中創(chuàng)建的對象

16、,在這次循環(huán)結束時,這個對象的生存周期就已經結束了;早期的C+ 編譯器不支持string類型的數組,因為數組的長度應該是一定不便的,而string類型的數組違反了早期C+開發(fā)環(huán)境這一規(guī)定;對文件對象iftream作為參數傳給函數時,形參的形式只能為引用,因為其對象的拷貝構造函數默認為私有變量。等等很多細節(jié)問題使我學到了很多,又熟練運用了C+程序設計的技巧。本次設計我將銀行賬戶幾乎所有成員都封裝到了私有變量中,增強了程序的密封性。將保存于讀取數據悄無聲息的在構造函數和析構函數中完成了,降低了用戶的操作次數是本程序的亮點。但本系統(tǒng)代碼還不夠精簡,有待改進。6.2源程序:/ 銀行賬戶.cpp : D

17、efines the entry point for the console application./#include stdafx.h#include #include #include #include #include #include using namespace std;struct Node/定義一個結構體變量,包含所有銀行賬戶信息。double money;string num;string name,name1;/字符串數組為聯名賬戶做準備string IDnum,IDnum1;string company;string phonenum;string address;No

18、de *next;class Link/鏈表類private:Node *head;/封裝頭指針和鏈表長度int length;int lack50,number;/用于記錄回收的賬號,和回收的賬號數目/*節(jié)點信息輸入函數*/void out_node(Node *dot,int i)string num1;/用于生成賬號char num210;/用于生成賬號int j=0;/循環(huán)變量jcout請輸入相關數據:endl;cout請輸入公司dot-company;while(true) /電話號碼長度判斷cout請輸入電話號碼dot-phonenum;if(dot-phonenum.length

19、()=11) break;else cout輸入有誤!請重新輸入!endl;cout請輸入地址dot-address;dot-money = 0;/用戶的初始余額為零cout請輸入姓名1dot-name;while(true)/身份號長度判斷cout請輸入身份證號1dot-IDnum;if(dot-IDnum.length()=18) break;else cout身份證號碼長度有誤,請重新輸入IDnum.substr(6,12); /用于生成賬號if(number=0)/如果有回收的賬號,先用被回收的賬號itoa(i,num2,10);elsewhile(true)if(lackj=0)i=

20、lackj;lackj=-1;number-;itoa(i,num2,10);break;j+;if(!question() /是否設置為聯名賬戶cout請輸入姓名2dot-name1;while(true)/身份號長度判斷cout請輸入身份證號2dot-IDnum1;if(dot-IDnum.length()=18)break;else cout身份證號碼長度有誤,請重新輸入num = num2+ dot-IDnum1.substr(6,12) + num1; /生成賬戶號,聯名賬戶由兩個身份證號,后12為組成elsedot-num = num2 + num1 ;/生成賬戶號,一般賬戶由身份

21、證號后12位加總賬戶數組成cout您的銀行賬戶卡號為numnext)outputnum ;outputIDnum ;outputnameIDnum1!=|pel-name1!=)/如果是聯名賬戶outputIDnum1 ;outputname1 ;outputaddress ;outputcompany ;outputmoney ;outputphonenumdot-num;inputdot-IDnum;inputdot-name;if(dot-num.length()20)/如果是聯名賬戶,聯名賬戶的賬號長度應為24inputdot-IDnum1;inputdot-name1;inputdo

22、t-address;inputdot-company;inputdot-money;inputdot-phonenum;/*節(jié)點查詢函數*/Node* iterates(string num)/根據傳入的賬號查找賬戶Node* pel;pel=head;doif(num=pel-num)return pel;pel=pel-next;while(pel!=NULL);return NULL;/*/* 三大功能(開戶,銷戶,金額操作) */*/*添加節(jié)點函數(開戶)*/bool add(bool t,ifstream &input)/是否是從文件中讀出銀行賬戶信息Node* pel,*tail;

23、if(head=NULL)/構建鏈表頭結點head=new Node();if(!t) /是否第一次使用系統(tǒng)out_node(head,length);length+;else/不是第一次使用系統(tǒng),從文件中讀取信息read_file(head,input);head-next=NULL;return true;elsepel=head;while(pel-next)/在鏈表的末端添加節(jié)點pel=pel-next;tail=new Node();tail-next = NULL;if(!t) /是否第一次使用系統(tǒng)out_node(tail,length);length+;else/不是第一次使用

24、系統(tǒng),從文件中讀取信息read_file(tail,input);pel-next = tail;pel=tail;return true;/*節(jié)點刪除操作(銷戶)*/bool delect(string num)Node* pel,*q;int c,i;if(head-num=num)/如果刪除的是頭結點cout請問您確定要銷戶嗎? 1.yes 2.noc;if(c=1)for(i=0;inum0-0);number+;break;pel=head;head=head-next;length-;delete(pel);return true;else if(c=2)return false;

25、else cout輸入有誤!請重新輸入!next!=NULL)if(num=pel-next-num)/查找要刪除的節(jié)點cout請問您確定要銷戶嗎? 1.yes 2.noc;if(c=1)for(i=0;i=50;i+)/回收刪除的銀行賬號到一個數組里,并記錄數組中,值得個數if(lackinum0-0);number+;break;q = pel-next;pel-next = q-next;delete(q);length-;return true;else if(c=2)/如果要銷戶return false;elsecout輸入有誤!重新輸入!next;if(pel-next=NULL)

26、cout沒有找到所查找的賬戶endl;return false;/*存,取,轉賬函數*/bool money(string num,int choice,double optmoney=0)/要操作的賬戶,要選擇的操作變編號,操作的資金數目Node* pel;string num2;double money1;pel = iterates(num);/查找節(jié)點if(choice=5)/如果選擇轉賬cout請輸入轉賬金額money1;if(money1pel-money|money1=0)cout輸入有誤(超支,或無效)!請重新輸入!money-=money1;/轉出金額cout請輸入對方賬戶號

27、碼num2;money(num2,1,money1);return true;elseswitch(choice)case 1:pel-money+=optmoney;return true;case 3:cout請輸入存款金額money1;if(money1=0)cout輸入無效!請重新輸入!money+=money1;return true;case 4:while(true)/輸入取款金額并操作cout請輸入取款金額money1;if(money1pel-money|money1=0)cout輸入有誤(超支,或無效)!請重新輸入!money-=money1;return true;/*賬

28、戶操作函數*/bool operation(int choice)Node* pel;ifstream input(bank.txt);string num;switch(choice)case 1:if(add(false,input)cout開戶成功!endl;return false;case 2:cout請輸入賬戶號碼num;if(delect(num)cout銷戶成功!endl;else cout銷戶失敗!endl;return false;case 3:cout請輸入賬戶號碼num;if(money(num,3)cout存款成功endl;return false;case 4:co

29、ut請輸入賬戶號碼num;if(money(num,4)cout取款成功endl;return false;case 5:cout請輸入賬戶號碼num;if(money(num,5)cout轉賬成功endl;return false;case 6:cout請輸入賬戶號碼num;pel=iterates(num);if(!pel)cout您所查找的賬戶不存在endl;elsecout您所查找的賬戶余額為moneyendl;return false;case 7:return true;case 8:system(cls);return false;/*寫入鏈表長度函數*/void write_n

30、um()/從文件中寫入賬戶的數目ofstream output;int i=0;output.open(length.txt);outputlength=0)outputnumber=0)outputlackilength;if(lengthnumber;if(number0)number=0;for(int i=0;ilacki;input.close();/*是否設置為聯名賬戶*/bool question()int i;cout是否設置為聯名賬戶 1.否 2.是i;if(i=1)return true;else if(i=2)return false;elsecout輸入有誤!請重新輸入

31、!endl;/*/* public */*/public:Link() / 讀出文件中的賬戶數目,每個及賬戶信息int i;ifstream input(bank.txt);read_length();head=NULL;for(i=1;i=length;i+)add(true,input);Link() / 保存所有賬戶信息write_file();write_num();cout程序結束!choose;if(choose8) cout輸入有誤!重新輸入endl;elsebreak;if(operation(choose)return true; ;void catalog() /目錄輸出函數cout請您輸入選擇endl;cout1. 開 戶endl;cout2. 銷 戶endl;cout3. 存 款endl;cout4. 取 款endl;cout5. 轉 賬endl;cout6. 查 詢endl;cout7. 退 出endl;cout8. 刷 新 屏 幕endl;int main(int argc, char* argv)Link l;while(true)catalog();if(l.choice()break;return 0;21 / 21

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

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網版權所有   聯系電話:18123376007

備案號:ICP2024067431-1 川公網安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網,我們立即給予刪除!