C自動(dòng)取款機(jī)ATM課程設(shè)計(jì)報(bào)告.doc
《C自動(dòng)取款機(jī)ATM課程設(shè)計(jì)報(bào)告.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《C自動(dòng)取款機(jī)ATM課程設(shè)計(jì)報(bào)告.doc(20頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
洛陽師范學(xué)院2013-2014學(xué)期 c+語言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告設(shè)計(jì)名稱:模擬自動(dòng)取款機(jī)ATM 姓 名:黃雙雙 學(xué) 號(hào):131124001 專業(yè)班級(jí):網(wǎng)絡(luò)工程 學(xué) 院:信息技術(shù)學(xué)院設(shè)計(jì)時(shí)間:2014年6月設(shè)計(jì)地點(diǎn):宿舍成績:指導(dǎo)教師評(píng)語: 指導(dǎo)教師簽字: 年 月 日目 錄1.課程設(shè)計(jì)目的32.課程設(shè)計(jì)任務(wù)與要求33.課程設(shè)計(jì)說明書44.課程設(shè)計(jì)成果65.程序調(diào)試過程186.設(shè)計(jì)問題的不足和改進(jìn)方案187.課程設(shè)計(jì)心得198.參考文獻(xiàn)201課程設(shè)計(jì)目的c+語言程序設(shè)計(jì)課程設(shè)計(jì)是這門課程的實(shí)踐性教學(xué)環(huán)節(jié)之一,本次設(shè)計(jì)結(jié)合實(shí)際應(yīng)用的要求,使課程設(shè)計(jì)既覆蓋C+的知識(shí)點(diǎn),又接近工程實(shí)際需要。目的是通過課程設(shè)計(jì)的綜合訓(xùn)練,培養(yǎng)學(xué)生實(shí)際分析問題、解決問題的能力,以及編程和動(dòng)手能力,最終目標(biāo)是通過課程設(shè)計(jì)這種形式,幫助學(xué)生系統(tǒng)掌握C+這門課程的主要內(nèi)容,養(yǎng)成良好的編程習(xí)慣,更好的完成教學(xué)任務(wù)。2課程設(shè)計(jì)任務(wù)與要求:要求:本次課程設(shè)計(jì)利用c+語言程序設(shè)計(jì)課程中所學(xué)到的編程知識(shí)和編程技巧,完成具有一定難度和工作量的程序設(shè)計(jì)題目,幫助學(xué)生掌握編程、調(diào)試的基本技能,獨(dú)立完成所布置的任務(wù)。要求:1、對(duì)系統(tǒng)進(jìn)行功能需求分析2、設(shè)計(jì)合理的數(shù)據(jù)結(jié)構(gòu)和系統(tǒng)框架3、編程簡練,程序功能齊全,能正確運(yùn)行4、說明書、流程圖要清楚5、課題完成后必須按要求提交課程設(shè)計(jì)報(bào)告(1)分析系統(tǒng)中的各個(gè)實(shí)體之間的關(guān)系及其屬性和行為; (2)根據(jù)問題描述,設(shè)計(jì)系統(tǒng)的類層次; (3)完成類層次中各個(gè)類的描述(包括屬性和方法); (4)完成類中各個(gè)成員函數(shù)的定義; (5)完成系統(tǒng)的模塊組裝、調(diào)試;任務(wù):(1)ATM機(jī)類:有“單筆取款最高限制”、“每日取款總金額限制”、“金額”等基本屬性。需要實(shí)現(xiàn):“核對(duì)密碼”、“修改密碼”、“取款”、“查詢信息”、“退出系統(tǒng)”、“鎖機(jī)吞卡”等功能??梢詫⑦@些操作定義為ATM機(jī)類的成員函數(shù)。(2)銀行卡類:具有“用戶姓名”、“用戶密碼”、“存款額”等特征。需要實(shí)現(xiàn)“身份驗(yàn)證”、“查詢余額”、“修改密碼”、“交易成功更改余額”等操作。將這些操作定義為銀行卡類的成員函數(shù)。(1) 模擬自動(dòng)取款機(jī)(ATM)的流程,實(shí)現(xiàn)查詢銀行卡余額、取款、修改密碼、退出系統(tǒng)等功能;(2) 卡號(hào)、密碼錯(cuò)誤時(shí)最多輸入3次,否則直接退出系統(tǒng)。(3) 取款金額受信用卡余額、ATM機(jī)單筆最大取款金額及ATM機(jī)當(dāng)前剩余金額的限制。3課程設(shè)計(jì)說明書概要設(shè)計(jì)本案例涉及一個(gè)銀行卡和ATM機(jī)之間的“對(duì)話”。需要處理兩個(gè)對(duì)象,即:ATM和銀行卡,因此可以考慮定義兩個(gè)類來解決這個(gè)問題。(1)ATM機(jī)類:有“單筆取款最高限制”、“每日取款總金額限制”、“金額”等基本屬性。需要實(shí)現(xiàn):“核對(duì)密碼”、“修改密碼”、“取款”、“查詢信息”、“退出系統(tǒng)”、“鎖機(jī)吞卡”等功能??梢詫⑦@些操作定義為ATM機(jī)類的成員函數(shù)。(2)銀行卡類:具有“用戶姓名”、“用戶密碼”、“存款額”等特征。需要實(shí)現(xiàn)“身份驗(yàn)證”、“查詢余額”、“修改密碼”、“交易成功更改余額”等操作。將這些操作定義為銀行卡類的成員函數(shù)。模塊說明: 在我設(shè)計(jì)的程序中一共包括了五個(gè)模塊,分別是: 核對(duì)密碼、修改密碼、取款、查詢信息、退出系統(tǒng)模塊。這六個(gè)模塊中新增、查找和修改都是獨(dú)立分開作為子函數(shù)的,另外三個(gè)則是作為switch語句中的一部分,通過switch語句,把五個(gè)大模塊聯(lián)系了起來,同時(shí),為了實(shí)現(xiàn)多次使用這五大模塊,就在switch語句外加了while循環(huán)。 模塊結(jié)構(gòu)圖: 詳細(xì)設(shè)計(jì) 總體流程圖:各功能模塊流程圖:4.課程設(shè)計(jì)成果程序源代碼,運(yùn)行結(jié)果(可用屏幕抓圖的方法說明)(五號(hào),宋體)(多頁)#include#include#include#include class consumer;class ATMpublic: ATM(consumer & cn):cnsm(cn) void welcome(); /登陸界面bool check_passwd(char n,char pwd); /核對(duì)密碼void change_passwd(); /修改密碼void fetchmoney(); /取款void information(); /查詢信息void exitATM(); /退出系統(tǒng)void functionshow(); /功能界面void lock(); /鎖機(jī)private:int times; /記錄密碼輸入次數(shù)consumer &cnsm; ;class consumer /用戶public:friend class ATM;consumer(char Name,char Num, float Money,char Password);protected:char* get_name(); /取得姓名char* get_kahao(); /取得卡號(hào)char* get_passwd(); /取得密碼float get_money(); /取得余額void set_passwd(char pwd); /設(shè)置密碼void set_money(float m); /取錢private:char passwd10; /用戶密碼char name20; /用戶姓名char kahao20; /用戶卡號(hào)float money; /用戶余額 ;consumer:consumer(char Name,char Kahao, float Money,char Password) /構(gòu)造函數(shù),建立賬戶 strcpy(name,Name); strcpy(kahao,Kahao); money=Money; strcpy(passwd,Password);float consumer:get_money() /取得余額 return money;char*consumer:get_name() /取得姓名return name;char*consumer:get_kahao() /取得卡號(hào)return kahao;char*consumer:get_passwd() /取得密碼return passwd;void consumer:set_passwd(char pwd)/設(shè)置密碼strcpy(passwd,pwd);void ATM:welcome() /登錄界面times=0;cout*歡迎使用銀行ATM自動(dòng)取款機(jī)*endl;char pwd10,num20,ch;int i=0;doi=0;coutendl請輸入卡號(hào):;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你輸入的卡號(hào)或密碼有誤,請從新輸入endl;times+;elsefunctionshow();while(times3);lock();bool ATM:check_passwd(char num,char pwd)if(strcmp(num,cnsm.get_kahao()=0&strcmp(pwd,cnsm.get_passwd()=0)return true;elsereturn false;void ATM:functionshow()int n;docout endl請輸入相應(yīng)的操作序號(hào)進(jìn)行操作: endl;cout1)修改密碼 endl2)取款 endl3)查詢余額 endl4)退出系統(tǒng) endl;cout;cinn;while(n4)cout請輸入正確的操作序號(hào)!endl;cout;cinn;switch(n)case 1: change_passwd();break;case 2: fetchmoney();break;case 3: information();break;case 4: exitATM();break;while(true);void ATM:change_passwd() char pwd10,repwd10; times=0;docoutendlpwd;if(!check_passwd(cnsm.get_kahao(),pwd)times+;elsebreak;while(times3);if(times=3)lock();int k=0;int t=0;dok=0;coutpwd;int g=0;int v=0;g=strlen(pwd);if(g6)k=1;cout密碼不能小于6位endl;for(int i=0;ig-1;i+)if(pwdi=pwdi+1)v=v+1;if(v=g)k=1;cout對(duì)不起,不允許出現(xiàn)完全相同的情況6&v!=g)coutrepwd;if(t=strcmp(pwd,repwd)!=0)cout你輸入的兩次密碼不一樣,請重新輸入!endl;while(t!=0|k=1);cnsm.set_passwd(pwd);cout密碼修改成功,請牢記!endl;void ATM:fetchmoney( )float m;char ch;docoutendl你要取多少錢:;cinm;while(m=0)cout請輸入正確的數(shù)字!endl;cout;cinm;if(m5000)cout對(duì)不起,每次最多取5000元endl;elseif(int)m%100!=0)cout對(duì)不起,取款金額為100的倍數(shù)endl;elseif(cnsm.get_money()-m0)cout對(duì)不起,你的余額不足!endl;elsecout endl操作成功,請收好錢! endl;cnsm.set_money( m );cout是否要繼續(xù)該項(xiàng)操作:(Y/N)endl;cout;cinch;while(ch!=n&ch!=Y&ch!=y)cout;cinch;while(ch=y|ch=Y);void ATM:information()cout*endl;cout*endl;cout* 用戶姓名:cnsm.get_name()endl;cout* 卡號(hào): cnsm.get_kahao()endl;cout* 余額: cnsm.get_money()endl;cout*endl;void ATM:lock() coutendl感謝你對(duì)本銀行的支持,歡迎下次光臨!endl; cout請取卡.endl; void ATM:exitATM()cout成功退出系統(tǒng)!謝謝惠顧!endl;exit(0);void consumer:set_money (float m)money=money-m;int main()consumer c1(Me,123456,10000.00F,123456);/先構(gòu)造一個(gè)用戶ATM atm(c1);atm.welcome();return 0;運(yùn)行結(jié)果1.輸入密碼2.修改密碼3.取款4.查詢余額5退出系統(tǒng)6.用戶名密碼輸入錯(cuò)誤三次,自動(dòng)退出,鎖機(jī)吞卡5.程序調(diào)試過程寫出程序調(diào)試步驟(4) 模擬自動(dòng)取款機(jī)(ATM)的流程,實(shí)現(xiàn)查詢銀行卡余額、取款、修改密碼、退出系統(tǒng)等功能;(5) 卡號(hào)、密碼錯(cuò)誤時(shí)最多輸入3次,否則直接退出系統(tǒng)。(6) 取款金額受信用卡余額、ATM機(jī)單筆最大取款金額及ATM機(jī)當(dāng)前剩余金額的限制。1.根據(jù)程序設(shè)定好的用戶名密碼輸入,用戶名為123456,密碼為123456.2.根據(jù)題目要求修改密碼,原密碼為123456,新密碼為1234567,重復(fù)新密碼12345673.取出現(xiàn)金1004.查詢余額,剩余99005退出系統(tǒng)6.次密碼錯(cuò)誤自動(dòng)退出系統(tǒng),鎖機(jī)吞卡遇到的問題開始不會(huì)輸入用戶名用戶密碼,得提前設(shè)定,其次輸入密碼三次錯(cuò)誤,沒有自動(dòng)鎖機(jī),需要再設(shè)定,while函數(shù)用不熟,各模塊聯(lián)系不上,最高取款限額,還有查詢余額都得用分支模塊處理。ATM機(jī)類:有“單筆取款最高限制”、“每日取款總金額限制”、“金額”等基本屬性。需要實(shí)現(xiàn):“核對(duì)密碼”、“修改密碼”、“取款”、“查詢信息”、“退出系統(tǒng)”、“鎖機(jī)吞卡”等功能。將這些操作定義為ATM機(jī)類的成員函數(shù)沒有緊密聯(lián)系。行卡類:具有“用戶姓名”、“用戶密碼”、“存款額”等特征。需要實(shí)現(xiàn)“身份驗(yàn)證”、“查詢余額”、“修改密碼”、“交易成功更改余額”等操作。將這些操作定義為銀行卡類的成員函數(shù)不能很好運(yùn)行。在本程序中使用了struct 數(shù)據(jù)類型,所用最多的是WHILE循環(huán)結(jié)構(gòu)和IF語句,然而這也正為了它的特色。循環(huán)體的嵌套思路清晰,目的明確,格式規(guī)范,易于閱讀和理解。If語句的逐層運(yùn)用,正形象化的描述了計(jì)算機(jī)工作流程,而且與人的一般習(xí)慣相吻合,簡單明了,易于觀察理解它的來龍去脈,思路清晰直觀。該程序是在漢化系統(tǒng)下編寫完成的,所以它支持在漢化系統(tǒng)下運(yùn)行,還支持在普通系統(tǒng)下運(yùn)行,它允許完全用中文操作,包括對(duì)信息的添加瀏覽和查詢等功能,它使用的指針是動(dòng)態(tài)分配內(nèi)存的,允許用戶大量的信息錄入,對(duì)它的長短不加限制,這樣就方便了很多。而且中文環(huán)境更加方便使用,一目了然。6.設(shè)計(jì)問題的不足和改進(jìn)方案本課程設(shè)計(jì)是在漢化環(huán)境下操作的,對(duì)系統(tǒng)要求相對(duì)嚴(yán)格。在輸入信息時(shí),每輸入一條信息后用ENTER鍵結(jié)束,然后繼續(xù)下一條信息的輸入。如果不能按照規(guī)定方法錄入,將導(dǎo)致信息混亂不清,只有重新啟動(dòng)系統(tǒng)開始新的輸入。策略是:只有人為的去掌握輸入方法,正確操作;還有是對(duì)程序改進(jìn),使程序?qū)σ恍┓欠ㄝ斎虢o予忽略,提示重新輸入。在本程序中使用了struct 數(shù)據(jù)類型,所用最多的是WHILE循環(huán)結(jié)構(gòu)和IF語句,然而這也正為了它的特色。循環(huán)體的嵌套思路清晰,目的明確,格式規(guī)范,易于閱讀和理解。If語句的逐層運(yùn)用,正形象化的描述了計(jì)算機(jī)工作流程,而且與人的一般習(xí)慣相吻合,簡單明了,易于觀察理解它的來龍去脈,思路清晰直觀。該程序是在漢化系統(tǒng)下編寫完成的,所以它支持在漢化系統(tǒng)下運(yùn)行,還支持在普通系統(tǒng)下運(yùn)行,它允許完全用中文操作,包括對(duì)信息的添加瀏覽和查詢等功能,它使用的指針是動(dòng)態(tài)分配內(nèi)存的,允許用戶大量的信息錄入,對(duì)它的長短不加限制,這樣就方便了很多。而且中文環(huán)境更加方便使用,一目了然。因?yàn)橄到y(tǒng)只是要求模擬并不牽涉到真實(shí)的一些處理,所以很多真實(shí)的應(yīng)用并不沒有加在里面,一些與真實(shí)的自動(dòng)化機(jī)器的接口連接并沒有做到。在程序運(yùn)行時(shí)有時(shí)會(huì)因?yàn)檩斎氲臄?shù)字過大而出現(xiàn)內(nèi)存溢出,程序崩潰現(xiàn)象,經(jīng)過調(diào)試改正已經(jīng)有了很大改觀,但仍然存在不可知的錯(cuò)誤。首先遇到的問題就是系統(tǒng)分析不足的問題在大致考慮了一些功能后就開始動(dòng)手做,想到哪里做到哪里,一度陷入了困境,其后從新開始理清了思緒,畫好了流程圖在做,隨即順暢了許多。其次就是與數(shù)據(jù)庫連接上的問題,由于對(duì)VB與SQL連接的不熟走了很多彎路,使程序設(shè)計(jì)需要用到數(shù)據(jù)庫時(shí)復(fù)雜化,過后通過老師同學(xué)指點(diǎn),采用了ADO控件的動(dòng)態(tài)連接,才解決一個(gè)頭疼的問題。其后的問題都是程序中邏輯性的一些小問題,大多數(shù)都是一些遺漏,導(dǎo)致程序死循環(huán),或者是數(shù)據(jù)庫寫入不去作用等等,都是通過仔細(xì)重新分析檢查一一解決。在所有代碼編寫完成后,再一一驗(yàn)證其功能,修正了很多不足,也使得程序慢慢完善起來。7.課程設(shè)計(jì)心得通過用面向推想的編程概念作為主導(dǎo)思想,我們體會(huì)不少,不過由于時(shí)間非常的緊迫,我們也只能說說我們的一些主要體會(huì):在程序中我們設(shè)計(jì)了一個(gè)抽象基類和由這個(gè)基類派生出去的這使我們體會(huì)到了真正思想,也感覺到對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)確實(shí)抽象,這需要我們在編程實(shí)踐去慢慢體會(huì),慢慢總結(jié)。 面向?qū)ο蟮木幊谈拍畹淖钪饕奶匦允牵豪^承和多態(tài)。關(guān)于多態(tài),在面向?qū)ο蟮某绦蛟O(shè)計(jì)中它的含義是“相似”,兩個(gè)對(duì)象如果具有一定的相似性但又有些區(qū)別的話,那么它們具有多態(tài)性;在C+中,我們通過基類的和references,借助虛擬機(jī)制對(duì)派生類進(jìn)行動(dòng)態(tài)操作。用關(guān)鍵字可使函數(shù)有了晚捆綁的靈活性(即動(dòng)態(tài)綁定)函數(shù)表示允許在相同家族中的類有不同的行為,這也正是多態(tài)形成的原因。virtual函數(shù)允許它與基類那個(gè)函數(shù)不同(即允許改寫基類定義的函數(shù))。會(huì)使我們的程序的修改和增刪極為方便。當(dāng)然基類中函數(shù)無實(shí)質(zhì)實(shí)現(xiàn)內(nèi)容的話,也可將virtual函數(shù)賦值為0,則變?yōu)樘摂M函數(shù)了,那么基類也就成了抽象基類,不能用來產(chǎn)生任何對(duì)象,只提供接口給派生類用,僅作為派生類的子對(duì)象來用。 關(guān)于繼承,基類用以描述系統(tǒng)中一些對(duì)象的思想核心,派生出其他類型(派生類)用來表達(dá)了認(rèn)識(shí)該核心的不同途徑。在編程的過程中由于對(duì)基類的繼承機(jī)制,使得一些共通的數(shù)據(jù)和操作只需寫一份代碼,而無須重復(fù)寫多份代碼,從而大大方便了編程,減少大量的工作量;還有,如果你以后想增加程序的功能,需要再加一個(gè)派生類,呵呵這下基類就派上用場了,直接增加一個(gè)對(duì)基類繼承的派生類,你就可以直接給老板打電話說我已經(jīng)把新功能加進(jìn)去了,我們發(fā)現(xiàn):其實(shí)繼承就是一個(gè)積累和發(fā)展的過程,就像文化的積累和發(fā)展一樣,整個(gè)面向?qū)ο蟮木幊踢^程是在向后兼容。設(shè)計(jì)中我們采用循序漸近、逐步完善的策略,讓繼承與多態(tài)有充分的體現(xiàn)經(jīng)過一個(gè)學(xué)期的學(xué)習(xí)和上機(jī)實(shí)踐,使我對(duì)C+語言有了更認(rèn)識(shí)和和了解,要想學(xué)好它要重在實(shí)踐,要通過不斷的上機(jī)操作才能更好的學(xué)習(xí)它,通過實(shí)踐,我也發(fā)現(xiàn)我的好多不足之處,對(duì)各種控制結(jié)構(gòu)及語句、數(shù)組的基本與高級(jí)應(yīng)用、指針數(shù)組、字符數(shù)組、動(dòng)態(tài)數(shù)組、函數(shù)的定義、調(diào)用方式;函數(shù)在編程中的具體應(yīng)用;以及變量存儲(chǔ)特征與標(biāo)識(shí)符的作用域,通過實(shí)踐,使我在這些方面有了認(rèn)識(shí)和提高。課程設(shè)計(jì)它是一項(xiàng)任務(wù),更是一種挑戰(zhàn)和歷練。在課程設(shè)計(jì)中,為了使用時(shí)方便,著重對(duì)不足方面的知識(shí)進(jìn)行了分析與理解,在這一過程中對(duì)文件的操作有了很大的提高。通過實(shí)際的演練,可以增強(qiáng)對(duì)知識(shí)的理解和運(yùn)用能力。8. 參考文獻(xiàn):1吳乃陵, 況迎輝.C+課程設(shè)計(jì). 北京:高等教育出版社,20062謝昕,劉覺夫,王更生.C+程序設(shè)計(jì).北京:北京郵電大學(xué)出版社,20083 王挺、周會(huì)平、賈麗麗、徐錫山. C+程序設(shè)計(jì)M. 北京:清華大學(xué)出版社,2005:138-221.4 劉瑞新. Visual C+面向?qū)ο蟪绦蛟O(shè)計(jì)教程M. 北京:機(jī)械工業(yè)出版社,2005.5Visual C+ 6編程寶典6C+Builder精彩編程實(shí)例集錦7C+ Primer (3RD)中文版8C+ STL(中文版)9C+多范型設(shè)計(jì)- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 自動(dòng) 取款 ATM 課程設(shè)計(jì) 報(bào)告
![提示](http://www.szxfmmzy.com/images/bang_tan.gif)
鏈接地址:http://www.szxfmmzy.com/p-9121229.html