模仿ATM機存取款管理系統設計_第1頁
模仿ATM機存取款管理系統設計_第2頁
模仿ATM機存取款管理系統設計_第3頁
模仿ATM機存取款管理系統設計_第4頁
模仿ATM機存取款管理系統設計_第5頁
已閱讀5頁,還剩14頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、 面向對象程序設計之課程設計 上上 海海 電電 力力 學學 院院課程設計報告面向對象程序設計(2012 /2013 學年第一學期)課題名稱課題名稱 模仿 atm 機存取款管理系統設計院(系)院(系) 電子與信息工程學院 專專 業業 通信工程 學學 號號 姓姓 名名 時時 間間 2013 年 1 月 12 日至 1 月 18 日地地 點點 奮進樓 4 樓 5 機房 指導教師指導教師 王劍云面向對象程序設計之課程設計1 目錄目錄一、設計目的與任務一、設計目的與任務.21、本課程設計的目的.22、本課程設計的任務.2二、設計方案二、設計方案.31.總體設計.32.系統功能.33 系統截圖.44. 核

2、心代碼設計.6三三.心得體會心得體會.13面向對象程序設計之課程設計2一、設計目的與任務一、設計目的與任務1、本課程設計的目的 (1)課程設計是實踐教學環節。設置課程設計的目的是加強學生對本課程及相關課程知識的理解,培養學生綜合運用理論知識分析和解決實際問題的方法與能力。有助于提高學生的創新能力和創新意識。搞好課程設計教學工作,對實現專業培養目標,提高學生全面素質有重要作用。(2)通過課程設計更進一步理解 c+的基礎知識。(3)訓練用系統的觀點及軟件開發的一般規范進行軟件開發,并在此過程中培養嚴謹的科學態度和良好的工作作風。初步掌握軟件開發過程中的問題分析、系統設計、程序編碼、調試、測試等方面

3、的基本方法和技能。(4)熟練掌握 c+知識在程序中的應用,了解書本知識在解決實際問題中的用途。2、本課程設計的任務 模擬銀行的自動取款機使用過程中的界面和用戶交互過程。實現查詢銀行卡余額、取款、修改密碼、退出系統等功能。功能要求:(1)卡號、密碼輸入最多三次,否則直接退出系統。(2)取款功能:取款金額受卡余額、機單筆最大取款金額及機當前剩余金額的限制。(3)查詢功能:實現查詢余額功能。(4)更改密碼:實現密碼更改功能,對于密碼要有 2 次驗證。(5)鎖卡功能:實現卡被鎖的功能。(6)退卡功能:實現退出系統功能。二、設計方案二、設計方案 1. 總體設計 設計的這個程序是模擬 atm 取款機的使用

4、過程,該程序功能包括:1)卡號、密碼輸入最多三次,否則直接退出系統。2)取款功能:取款金額受卡余額、機單筆最大取款金額及機當前剩余金額的限制。3)查詢功能:實現查詢余額功能。4)更改密碼:實現密碼更改功能,對于密碼要有 2 次驗證。5)鎖卡功能:實現卡被鎖的功能。6)退卡功能:實現退出系統功能。2. 系統功能首先編寫一個 class consumer(用戶類)、class atm(atm 取款機類)和一個 main()函數,程序開始運行時調用 main 函數里設置好的用戶信息,通過 main 函數來調用 class atm(atm取款機類)和 class consumer(用戶類)中的相關函數

5、和數據來達到程序的要求。class atm(atm 取款機類)內主要有面向對象程序設計之課程設計3 void welcome(); / 登陸界面 bool check_passwd(char n,char pwd); / 核對密碼 void fetchmoney(); / 取款功能 void functionshow(); / 功能界面 void information(); / 查詢功能 void change_passwd(); / 更改密碼 void lock(); / 鎖卡功能 void exitatm(); / 退卡功能class consumer(用戶類)內主要有char* get

6、_name(); / 獲取姓名 char* get_num(); / 獲取卡號 char* get_passwd(); / 獲取密碼 float get_money(); / 獲取余額 void set_passwd(char pwd); / 設置密碼 void set_money(float m); / 取款通過在主界面的輸入指令來實現各個函數的調用,以達到模仿 atm 取款機的功能。系統功能圖與流程圖系統功能圖與流程圖輸入與功能對輸入與功能對應的的數字應的的數字判斷有否判斷有否開始開始執行相應功能執行相應功能結束結束是是否否面向對象程序設計之課程設計4atm 取款機取款機class atm

7、登陸get name用戶姓名get num用戶卡號class consumer 用戶類main 主函數welcome 登陸界面check_passwd 核對密碼fetchmoney 取款functionshow 功能information查詢change_pssswd 改密改密lock鎖卡exit退卡get passwd密碼get money余額get passwd密碼設置set money取款存儲用戶信息3系統截圖面向對象程序設計之課程設計5(1)主界面 (2)卡號、密碼輸入最多三次,否則直接退出系統。面向對象程序設計之課程設計6(3)取款功能:取款金額受卡余額、機單筆最大取款金額及機當前剩

8、余金額的限制。(4)查詢功能:實現查詢余額功能。(5)更改密碼:實現密碼更改功能,對于密碼要有 2 次驗證。面向對象程序設計之課程設計7(6)鎖卡功能:實現卡被鎖的功能(7)退卡功能:實現退出系統功能。4.4.核心代碼設計核心代碼設計(1)類編寫)類編寫通過定義兩個類,class consumer(用戶類)和 class atm(atm 取款機類) ,對于 class atm,public 有登陸界面,核對密碼,取款功能,功能界面,查詢功能,更改密碼,鎖卡功能,退卡功能。private 有記錄密碼輸入次數。對于 class consumer,public 有獲取姓名,獲取卡號,獲取密碼 ,獲取

9、余額,設置密碼,取款。private 有用戶密碼,用戶姓名。(2)類的成員函數類的成員函數 class atm / atm 取款機類public: atm(consumer& cn):cnsm(cn) void welcome(); / 登陸界面 bool check_passwd(char n,char pwd); / 核對密碼 void fetchmoney(); / 取款功能面向對象程序設計之課程設計8 void functionshow(); / 功能界面 void information(); / 查詢功能 void change_passwd(); / 更改密碼 void lock

10、(); / 鎖卡功能 void exitatm(); / 退卡功能private:int times; / 記錄密碼輸入次數consumer& cnsm;class consumer/ 用戶類public: friend class atm; consumer(char name,char num,float money,char password);protected: char* get_name(); / 獲取姓名 char* get_num(); / 獲取卡號 char* get_passwd(); / 獲取密碼 float get_money(); / 獲取余額 void set_p

11、asswd(char pwd); / 設置密碼 void set_money(float m); / 取款private:char passwd8;/ 用戶密碼char name20; / 用戶姓名char num20;float money;(3)各個功能的實現各個功能的實現(1)卡號、密碼輸入最多三次,否則直接退出系統。void atm:exitatm() /退卡coutendl 感謝您支持,歡迎下次光臨! endl;cout 請取回你的卡片 endl;exit(0);/后面的退卡需要調用此函數void atm:welcome()times=0;coutendl; cout=endl;co

12、ut *中國農業銀行* endl;面向對象程序設計之課程設計9cout 歡迎使用 atm 自動柜員機 endl; cout=endl; coutendl;char pwd8,num20,ch;int i=0;doi=0;coutendl請輸入卡號:;docin.get(ch); /對于鍵盤字符串的接收!numi+=ch;while(ch!=n);numi-1=0;i=0;cout請輸入密碼:;docin.get(ch);pwdi+=ch;while(ch!=n);pwdi-1=0;if(!check_passwd(num,pwd)cout你輸入的卡號或密碼有誤,請重新輸入endl;times+

13、;elsefunctionshow();while(times3);exitatm(); (2)取款功能:取款金額受卡余額、機單筆最大取款金額及機當前剩余金額的限制。void atm:fetchmoney() /取款float m;char ch;do面向對象程序設計之課程設計10coutendl您要取多少錢:m;while(m=0)cout請輸入您的取款金額!m;if(cnsm.get_money()-m0)cout對不起,你的余額不足!endl;elsecoutendl操作成功!請于 30 秒內取走您的鈔票!endl;cnsm.set_money(m);cout是否要繼續該項操作:(y/n

14、) ch;while(ch=y|ch=y);(3)查詢功能:實現查詢余額功能。void atm:information() /查詢cout=endl;cout您當前所剩余額為: cnsm.get_money()endl; /必須聲明友元才能用 cnsm調用其成員函數cout=endl;(4)更改密碼:實現密碼更改功能,對于密碼要有 2 次驗證。void atm:change_passwd() /更改密碼char pwd8,repwd8;times=0;docoutendlpwd;if(!check_passwd(cnsm.get_num(),pwd) times+;elsebreak;whil

15、e(times3); 面向對象程序設計之課程設計11int t=1;docoutpwd;coutrepwd;t=strcmp(pwd,repwd); / 相同返回 0;if(t!=0)cout對不起,您輸入的兩次密碼不一樣,請重新輸入!endl;while(t!=0);cnsm.set_passwd(pwd);cout密碼修改成功!endl;(5)鎖卡功能:實現卡被鎖的功能。void atm:lock() /鎖卡coutendl對不起,由于你的操作有誤,你的卡片已被沒收! endl;exit(1); / 系統非正常退出if(times=3)lock(); /當密碼輸入三次錯誤后,進行鎖卡(6)

16、退卡功能:實現退出系統功能。void atm:exitatm() /退卡coutendl 感謝您支持,歡迎下次光臨! endl;cout 請取回你的卡片 endl;exit(0);(4)主函數主函數void main()consumer c(張麗,20112218,5000,456258);/ 先構造一個用戶atm atm(c);atm.welcome();面向對象程序設計之課程設計12三三.心得體會心得體會本次面向對象程序設計實踐中,我完成了一個模仿 atm 機存取款管理系統設計,剛開始時,對于這個課題的設計我首先是先進行功能的分析,針對其功能再設計其函數,在實現各個功能的時候,遇到了許多的

17、問題,比如說取款金額受卡余額、機單筆最大取款金額及機當前剩余金額的限制,在進行設計時,就沒有實現機單筆最大取款金額限制這一要求功能,在實驗中,有一些問題難以解決,但是通過查詢資料,上網搜索,也得到一定程度的解決。在設計過程中還有其他的各種問題,有請教老師的,老師都對我進行耐心的指導,解決了一些問題,還有問同學的,做相同課題同學們間的互相交流也使我受益匪淺。經過一個星期的上機實驗,對于面向程序設計這一門課我從課本上的例題教學,上機實驗到現在的設計操作,明顯有不同的感受,也許在書本上的例題能夠看明白看懂,但是在自己進行設計并且運行的時候會出現許多的問題,檢驗自己許多方面的能力,細心程度,耐心程度等

18、等。此次課程設計,我對面向對象程序設計的認識得到了一定的提高,其實許多課程也是如此,我們不能單獨停留在書本所交給我們的知識里,有時候的很多問題當你通過上機親自操作,你會發現親自實踐比看書來得直觀明了,這次的課程設計的目的也在于此,讓我們通過實踐來對所學知識進行檢驗以及深入的理解。源代碼源代碼#includeusing namespace std;class consumer;class atm / atm 取款機類public: atm(consumer& cn):cnsm(cn) void welcome(); / 登陸界面 bool check_passwd(char n,char pwd

19、); / 核對密碼 void fetchmoney(); / 取款功能 void functionshow(); / 功能界面 void information(); / 查詢功能 void change_passwd(); / 更改密碼 void lock(); / 鎖卡功能 void exitatm(); / 退卡功能面向對象程序設計之課程設計13private:int times; / 記錄密碼輸入次數consumer& cnsm;class consumer/ 用戶類public: friend class atm; consumer(char name,char num,float

20、money,char password);protected: char* get_name(); / 獲取姓名 char* get_num(); / 獲取卡號 char* get_passwd(); / 獲取密碼 float get_money(); / 獲取余額 void set_passwd(char pwd); / 設置密碼 void set_money(float m); / 取款private:char passwd8;/ 用戶密碼char name20; / 用戶姓名char num20;float money;consumer:consumer(char name,char n

21、um,float money,char password)strcpy(name,name); strcpy(num,num);money=money;strcpy(passwd,password);float consumer:get_money()return money;char* consumer:get_name() / 對于數組的返回操作 返回指針return name;char* consumer:get_num()面向對象程序設計之課程設計14return num;char* consumer:get_passwd()return passwd;void consumer:se

22、t_money(float m)money-=m;void consumer:set_passwd(char pwd)strcpy(passwd,pwd);void atm:welcome()times=0;coutendl; cout=endl;cout *中國農業銀行* endl;cout 歡迎使用 atm 自動柜員機 endl; cout=endl; coutendl;char pwd8,num20,ch;int i=0;doi=0;coutendl請輸入卡號:;docin.get(ch); numi+=ch;while(ch!=n);numi-1=0;i=0;cout請輸入密碼:;do

23、cin.get(ch);pwdi+=ch;while(ch!=n);面向對象程序設計之課程設計15pwdi-1=0;if(!check_passwd(num,pwd)cout你輸入的卡號或密碼有誤,請重新輸入endl;times+;elsefunctionshow();while(times3);exitatm(); bool atm:check_passwd(char num,char pwd)if(strcmp(num,cnsm.get_num()=0&strcmp(pwd,cnsm.get_passwd()=0)return true;else return false;void atm

24、:functionshow()int n;do cout endl; cout本機可辦理以下業務,請你輸入相應的操作序號進行操作:endl; cout 查詢 endl 取款 endl 更改密碼 endl 退出 n;while(n4)面向對象程序設計之課程設計16cout對不起,本機無此項操作,請輸入正確的操作序號!n;switch(n)case 1:information(); break;case 2:fetchmoney();break;case 3:change_passwd(); break;case 4:exitatm(); break; while(true);void atm:information() /查詢cout=endl;cout您當前所剩余額為: cnsm.get_money()endl; /必須聲明友元才能用 cnsm調用其成員函數cout=endl;voi

溫馨提示

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

評論

0/150

提交評論