面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)報(bào)告_第1頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)報(bào)告_第2頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)報(bào)告_第3頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)報(bào)告_第4頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上上 海 電 力 學(xué) 院課程設(shè)計(jì)報(bào)告面向?qū)ο蟪绦蛟O(shè)計(jì)(2012 /2013學(xué)年第一學(xué)期)課題名稱(chēng) 模仿ATM機(jī)存取款管理系統(tǒng)設(shè)計(jì)院(系) 電子與信息工程學(xué)院 專(zhuān) 業(yè) 通信工程 學(xué) 號(hào) 姓 名 時(shí) 間 2013年1月12日至1月18日地 點(diǎn) 奮進(jìn)樓4樓5機(jī)房 指導(dǎo)教師 王劍云 目錄一、設(shè)計(jì)目的與任務(wù)1、本課程設(shè)計(jì)的目的 (1)課程設(shè)計(jì)是實(shí)踐教學(xué)環(huán)節(jié)。設(shè)置課程設(shè)計(jì)的目的是加強(qiáng)學(xué)生對(duì)本課程及相關(guān)課程知識(shí)的理解,培養(yǎng)學(xué)生綜合運(yùn)用理論知識(shí)分析和解決實(shí)際問(wèn)題的方法與能力。有助于提高學(xué)生的創(chuàng)新能力和創(chuàng)新意識(shí)。搞好課程設(shè)計(jì)教學(xué)工作,對(duì)實(shí)現(xiàn)專(zhuān)業(yè)培養(yǎng)目標(biāo),提高學(xué)生全面素質(zhì)有重要作用。(2)

2、通過(guò)課程設(shè)計(jì)更進(jìn)一步理解 C+的基礎(chǔ)知識(shí)。(3)訓(xùn)練用系統(tǒng)的觀(guān)點(diǎn)及軟件開(kāi)發(fā)的一般規(guī)范進(jìn)行軟件開(kāi)發(fā),并在此過(guò)程中培養(yǎng)嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度和良好的工作作風(fēng)。初步掌握軟件開(kāi)發(fā)過(guò)程中的問(wèn)題分析、系統(tǒng)設(shè)計(jì)、程序編碼、調(diào)試、測(cè)試等方面的基本方法和技能。(4)熟練掌握 C+知識(shí)在程序中的應(yīng)用,了解書(shū)本知識(shí)在解決實(shí)際問(wèn)題中的用途。2、本課程設(shè)計(jì)的任務(wù) 模擬銀行的自動(dòng)取款機(jī)使用過(guò)程中的界面和用戶(hù)交互過(guò)程。實(shí)現(xiàn)查詢(xún)銀行卡余額、取款、修改密碼、退出系統(tǒng)等功能。功能要求:(1)卡號(hào)、密碼輸入最多三次,否則直接退出系統(tǒng)。(2)取款功能:取款金額受卡余額、機(jī)單筆最大取款金額及機(jī)當(dāng)前剩余金額的限制。(3)查詢(xún)功能:實(shí)現(xiàn)查詢(xún)余額功

3、能。(4)更改密碼:實(shí)現(xiàn)密碼更改功能,對(duì)于密碼要有2次驗(yàn)證。(5)鎖卡功能:實(shí)現(xiàn)卡被鎖的功能。(6)退卡功能:實(shí)現(xiàn)退出系統(tǒng)功能。二、設(shè)計(jì)方案 1. 總體設(shè)計(jì) 設(shè)計(jì)的這個(gè)程序是模擬ATM取款機(jī)的使用過(guò)程,該程序功能包括:1)卡號(hào)、密碼輸入最多三次,否則直接退出系統(tǒng)。2)取款功能:取款金額受卡余額、機(jī)單筆最大取款金額及機(jī)當(dāng)前剩余金額的限制。3)查詢(xún)功能:實(shí)現(xiàn)查詢(xún)余額功能。4)更改密碼:實(shí)現(xiàn)密碼更改功能,對(duì)于密碼要有2次驗(yàn)證。5)鎖卡功能:實(shí)現(xiàn)卡被鎖的功能。6)退卡功能:實(shí)現(xiàn)退出系統(tǒng)功能。2. 系統(tǒng)功能首先編寫(xiě)一個(gè)class consumer(用戶(hù)類(lèi))、class ATM(ATM取款機(jī)類(lèi))和一個(gè)ma

4、in()函數(shù),程序開(kāi)始運(yùn)行時(shí)調(diào)用main函數(shù)里設(shè)置好的用戶(hù)信息,通過(guò)main函數(shù)來(lái)調(diào)用class ATM(ATM取款機(jī)類(lèi))和class consumer(用戶(hù)類(lèi))中的相關(guān)函數(shù)和數(shù)據(jù)來(lái)達(dá)到程序的要求。class ATM(ATM取款機(jī)類(lèi))內(nèi)主要有 void welcome(); / 登陸界面 bool check_passwd(char n,char pwd); / 核對(duì)密碼 void fetchmoney(); / 取款功能 void functionshow(); / 功能界面 void information(); / 查詢(xún)功能 void change_passwd(); / 更改密碼 vo

5、id lock(); / 鎖卡功能 void exitATM(); / 退卡功能class consumer(用戶(hù)類(lèi))內(nèi)主要有char* get_name(); / 獲取姓名 char* get_num(); / 獲取卡號(hào) char* get_passwd(); / 獲取密碼 float get_money(); / 獲取余額 void set_passwd(char pwd); / 設(shè)置密碼 void set_money(float m); / 取款通過(guò)在主界面的輸入指令來(lái)實(shí)現(xiàn)各個(gè)函數(shù)的調(diào)用,以達(dá)到模仿ATM取款機(jī)的功能。系統(tǒng)功能圖與流程圖輸入與功能對(duì)應(yīng)的的數(shù)字判斷有否開(kāi)始執(zhí)行相應(yīng)功能結(jié)束是

6、否ATM取款機(jī)Class ATM登陸Get name用戶(hù)姓名Get num用戶(hù)卡號(hào)Class consumer 用戶(hù)類(lèi)Main 主函數(shù)Welcome 登陸界面Check_passwd 核對(duì)密碼Fetchmoney 取款Functionshow 功能Information查詢(xún)Change_pssswd 改密改密Lock鎖卡Exit退卡Get passwd密碼Get money余額Get passwd密碼設(shè)置Set money取款存儲(chǔ)用戶(hù)信息3 系統(tǒng)截圖(1) 主界面 (2) 卡號(hào)、密碼輸入最多三次,否則直接退出系統(tǒng)。(3)取款功能:取款金額受卡余額、機(jī)單筆最大取款金額及機(jī)當(dāng)前剩余金額的限制。(4

7、) 查詢(xún)功能:實(shí)現(xiàn)查詢(xún)余額功能。(5) 更改密碼:實(shí)現(xiàn)密碼更改功能,對(duì)于密碼要有2次驗(yàn)證。(6) 鎖卡功能:實(shí)現(xiàn)卡被鎖的功能(7) 退卡功能:實(shí)現(xiàn)退出系統(tǒng)功能。4. 核心代碼設(shè)計(jì)(1)類(lèi)編寫(xiě)通過(guò)定義兩個(gè)類(lèi),class consumer(用戶(hù)類(lèi))和class ATM(ATM取款機(jī)類(lèi)),對(duì)于class ATM,public有登陸界面,核對(duì)密碼,取款功能,功能界面,查詢(xún)功能,更改密碼,鎖卡功能,退卡功能。Private有記錄密碼輸入次數(shù)。對(duì)于class consumer,public有獲取姓名,獲取卡號(hào),獲取密碼 ,獲取余額,設(shè)置密碼,取款。Private有用戶(hù)密碼,用戶(hù)姓名。(2) 類(lèi)的成員函數(shù)

8、class ATM / ATM取款機(jī)類(lèi)public: ATM(consumer& cn):cnsm(cn) void welcome(); / 登陸界面 bool check_passwd(char n,char pwd); / 核對(duì)密碼 void fetchmoney(); / 取款功能 void functionshow(); / 功能界面 void information(); / 查詢(xún)功能 void change_passwd(); / 更改密碼 void lock(); / 鎖卡功能 void exitATM(); / 退卡功能private:int times; / 記錄密

9、碼輸入次數(shù)consumer& cnsm;class consumer/ 用戶(hù)類(lèi)public: friend class ATM; consumer(char Name,char Num,float Money,char Password);protected: char* get_name(); / 獲取姓名 char* get_num(); / 獲取卡號(hào) char* get_passwd(); / 獲取密碼 float get_money(); / 獲取余額 void set_passwd(char pwd); / 設(shè)置密碼 void set_money(float m); / 取款

10、private:char passwd8;/ 用戶(hù)密碼char name20; / 用戶(hù)姓名char num20;float money;(3) 各個(gè)功能的實(shí)現(xiàn)(1) 卡號(hào)、密碼輸入最多三次,否則直接退出系統(tǒng)。void ATM:exitATM() /退卡cout<<endl<<" 感謝您支持,歡迎下次光臨! "<<endl;cout<<" 請(qǐng)取回你的卡片 "<<endl;exit(0);/后面的退卡需要調(diào)用此函數(shù)void ATM:welcome()times=0;cout<<&quo

11、t;"<<endl; cout<<"="<<endl;cout<<" *中國(guó)農(nóng)業(yè)銀行* "<<endl;cout<<" 歡迎使用ATM自動(dòng)柜員機(jī) "<<endl; cout<<"="<<endl; cout<<""<<endl;char pwd8,num20,ch;int i=0;doi=0;cout<<endl<<"請(qǐng)輸

12、入卡號(hào):"docin.get(ch); /對(duì)于鍵盤(pán)字符串的接收!numi+=ch;while(ch!='n');numi-1='0'i=0;cout<<"請(qǐng)輸入密碼:"docin.get(ch);pwdi+=ch;while(ch!='n');pwdi-1='0'if(!check_passwd(num,pwd)cout<<"你輸入的卡號(hào)或密碼有誤,請(qǐng)重新輸入"<<endl;times+;elsefunctionshow();while(time

13、s<3);exitATM(); (2) 取款功能:取款金額受卡余額、機(jī)單筆最大取款金額及機(jī)當(dāng)前剩余金額的限制。void ATM:fetchmoney() /取款float m;char ch;docout<<endl<<"您要取多少錢(qián):"<<endl; / 兩種情況cin>>m;while(m<=0)cout<<"請(qǐng)輸入您的取款金額!"<<endl;cin>>m;if(cnsm.get_money()-m<0)cout<<"對(duì)不起,

14、你的余額不足!"<<endl;elsecout<<endl<<"操作成功!請(qǐng)于30秒內(nèi)取走您的鈔票!"<<endl;cnsm.set_money(m);cout<<"是否要繼續(xù)該項(xiàng)操作:(y/n) "<<endl;cin>>ch;while(ch='y'|ch='Y');(3) 查詢(xún)功能:實(shí)現(xiàn)查詢(xún)余額功能。void ATM:information() /查詢(xún)cout<<"="<<endl

15、;cout<<"您當(dāng)前所剩余額為: "<<cnsm.get_money()<<endl; /必須聲明友元才能用cnsm調(diào)用其成員函數(shù)cout<<"="<<endl;(4)更改密碼:實(shí)現(xiàn)密碼更改功能,對(duì)于密碼要有2次驗(yàn)證。void ATM:change_passwd() /更改密碼char pwd8,repwd8;times=0;docout<<endl<<"請(qǐng)輸入舊密碼:"cin>>pwd;if(!check_passwd(cnsm.get

16、_num(),pwd) times+;elsebreak;while(times<3); int t=1;docout<<"請(qǐng)輸入新密碼:"cin>>pwd;cout<<"請(qǐng)確認(rèn)新密碼:"cin>>repwd;t=strcmp(pwd,repwd); / 相同返回0;if(t!=0)cout<<"對(duì)不起,您輸入的兩次密碼不一樣,請(qǐng)重新輸入!"<<endl;while(t!=0);cnsm.set_passwd(pwd);cout<<"密

17、碼修改成功!"<<endl;(5) 鎖卡功能:實(shí)現(xiàn)卡被鎖的功能。void ATM:lock() /鎖卡cout<<endl<<"對(duì)不起,由于你的操作有誤,你的卡片已被沒(méi)收! "<<endl;exit(1); / 系統(tǒng)非正常退出if(times=3)lock(); /當(dāng)密碼輸入三次錯(cuò)誤后,進(jìn)行鎖卡(6)退卡功能:實(shí)現(xiàn)退出系統(tǒng)功能。void ATM:exitATM() /退卡cout<<endl<<" 感謝您支持,歡迎下次光臨! "<<endl;cout<&l

18、t;" 請(qǐng)取回你的卡片 "<<endl;exit(0);(4) 主函數(shù)void main()consumer c("張麗","",5000,"");/ 先構(gòu)造一個(gè)用戶(hù)ATM atm(c);atm.welcome();三.心得體會(huì)本次面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)踐中,我完成了一個(gè)模仿ATM機(jī)存取款管理系統(tǒng)設(shè)計(jì),剛開(kāi)始時(shí),對(duì)于這個(gè)課題的設(shè)計(jì)我首先是先進(jìn)行功能的分析,針對(duì)其功能再設(shè)計(jì)其函數(shù),在實(shí)現(xiàn)各個(gè)功能的時(shí)候,遇到了許多的問(wèn)題,比如說(shuō)取款金額受卡余額、機(jī)單筆最大取款金額及機(jī)當(dāng)前剩余金額的限制,在進(jìn)行設(shè)計(jì)時(shí),就沒(méi)有實(shí)現(xiàn)

19、機(jī)單筆最大取款金額限制這一要求功能,在實(shí)驗(yàn)中,有一些問(wèn)題難以解決,但是通過(guò)查詢(xún)資料,上網(wǎng)搜索,也得到一定程度的解決。在設(shè)計(jì)過(guò)程中還有其他的各種問(wèn)題,有請(qǐng)教老師的,老師都對(duì)我進(jìn)行耐心的指導(dǎo),解決了一些問(wèn)題,還有問(wèn)同學(xué)的,做相同課題同學(xué)們間的互相交流也使我受益匪淺。經(jīng)過(guò)一個(gè)星期的上機(jī)實(shí)驗(yàn),對(duì)于面向程序設(shè)計(jì)這一門(mén)課我從課本上的例題教學(xué),上機(jī)實(shí)驗(yàn)到現(xiàn)在的設(shè)計(jì)操作,明顯有不同的感受,也許在書(shū)本上的例題能夠看明白看懂,但是在自己進(jìn)行設(shè)計(jì)并且運(yùn)行的時(shí)候會(huì)出現(xiàn)許多的問(wèn)題,檢驗(yàn)自己許多方面的能力,細(xì)心程度,耐心程度等等。此次課程設(shè)計(jì),我對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)的認(rèn)識(shí)得到了一定的提高,其實(shí)許多課程也是如此,我們不能單獨(dú)

20、停留在書(shū)本所交給我們的知識(shí)里,有時(shí)候的很多問(wèn)題當(dāng)你通過(guò)上機(jī)親自操作,你會(huì)發(fā)現(xiàn)親自實(shí)踐比看書(shū)來(lái)得直觀(guān)明了,這次的課程設(shè)計(jì)的目的也在于此,讓我們通過(guò)實(shí)踐來(lái)對(duì)所學(xué)知識(shí)進(jìn)行檢驗(yàn)以及深入的理解。源代碼#include<iostream>using namespace std;class consumer;class ATM / ATM取款機(jī)類(lèi)public: ATM(consumer& cn):cnsm(cn) void welcome(); / 登陸界面 bool check_passwd(char n,char pwd); / 核對(duì)密碼 void fetchmoney(); / 取

21、款功能 void functionshow(); / 功能界面 void information(); / 查詢(xún)功能 void change_passwd(); / 更改密碼 void lock(); / 鎖卡功能 void exitATM(); / 退卡功能private:int times; / 記錄密碼輸入次數(shù)consumer& cnsm;class consumer/ 用戶(hù)類(lèi)public: friend class ATM; consumer(char Name,char Num,float Money,char Password);protected: char* get_n

22、ame(); / 獲取姓名 char* get_num(); / 獲取卡號(hào) char* get_passwd(); / 獲取密碼 float get_money(); / 獲取余額 void set_passwd(char pwd); / 設(shè)置密碼 void set_money(float m); / 取款private:char passwd8;/ 用戶(hù)密碼char name20; / 用戶(hù)姓名char num20;float money;consumer:consumer(char Name,char Num,float Money,char Password)strcpy(name,Na

23、me); strcpy(num,Num);money=Money;strcpy(passwd,Password);float consumer:get_money()return money;char* consumer:get_name() / 對(duì)于數(shù)組的返回操作 返回指針return name;char* consumer:get_num()return num;char* consumer:get_passwd()return passwd;void consumer:set_money(float m)money-=m;void consumer:set_passwd(char pwd

24、)strcpy(passwd,pwd);void ATM:welcome()times=0;cout<<""<<endl; cout<<"="<<endl;cout<<" *中國(guó)農(nóng)業(yè)銀行* "<<endl;cout<<" 歡迎使用ATM自動(dòng)柜員機(jī) "<<endl; cout<<"="<<endl; cout<<""<<endl;cha

25、r pwd8,num20,ch;int i=0;doi=0;cout<<endl<<"請(qǐng)輸入卡號(hào):"docin.get(ch); numi+=ch;while(ch!='n');numi-1='0'i=0;cout<<"請(qǐng)輸入密碼:"docin.get(ch);pwdi+=ch;while(ch!='n');pwdi-1='0'if(!check_passwd(num,pwd)cout<<"你輸入的卡號(hào)或密碼有誤,請(qǐng)重新輸入"

26、;<<endl;times+;elsefunctionshow();while(times<3);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:functionshow()int n;do cout<<" "<<endl; cout<<"本

27、機(jī)可辦理以下業(yè)務(wù),請(qǐng)你輸入相應(yīng)的操作序號(hào)進(jìn)行操作:"<<endl; cout<<"<1> 查詢(xún) "<<endl<<"<2> 取款 "<<endl<<"<3> 更改密碼 "<<endl<<"<4> 退出 "<<endl;cin>>n;while(n<1|n>4)cout<<"對(duì)不起,本機(jī)無(wú)此項(xiàng)操作,請(qǐng)輸入正確

28、的操作序號(hào)!"<<endl;cin>>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() /查詢(xún)cout<<"="<<endl;cout<<"您當(dāng)前所剩余額為: "<<cnsm.get_money()<<en

29、dl; /必須聲明友元才能用cnsm調(diào)用其成員函數(shù)cout<<"="<<endl;void ATM:fetchmoney() /取款float m;char ch;docout<<endl<<"您要取多少錢(qián):"<<endl; / 兩種情況cin>>m;while(m<=0)cout<<"請(qǐng)輸入您的取款金額!"<<endl;cin>>m;if(cnsm.get_money()-m<0)cout<<"對(duì)不起,你的余額不足!"<<endl;elsecout<<endl<<"操作成功!請(qǐng)于30秒內(nèi)取走您的鈔票!"<<endl;cnsm.set_mone

溫馨提示

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

評(píng)論

0/150

提交評(píng)論