C++課程設(shè)計(jì)面向?qū)ο笳n程設(shè)計(jì)報(bào)告_第1頁(yè)
C++課程設(shè)計(jì)面向?qū)ο笳n程設(shè)計(jì)報(bào)告_第2頁(yè)
C++課程設(shè)計(jì)面向?qū)ο笳n程設(shè)計(jì)報(bào)告_第3頁(yè)
C++課程設(shè)計(jì)面向?qū)ο笳n程設(shè)計(jì)報(bào)告_第4頁(yè)
C++課程設(shè)計(jì)面向?qū)ο笳n程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、仲愷農(nóng)業(yè)工程學(xué)院課程設(shè)計(jì)*課 程 面向?qū)ο笳n程設(shè)計(jì)姓 名 院 (系) 計(jì)算機(jī)科學(xué)與工程學(xué)院 專業(yè)年級(jí) 計(jì)算機(jī)科學(xué)與技術(shù)072班學(xué) 號(hào) 指導(dǎo)教師 日 期 2009年8月31日-2009年9月13日仲愷農(nóng)業(yè)工程學(xué)院教務(wù)處制目 錄1、需求與功能分析 22、系統(tǒng)總體框架 33、模塊設(shè)計(jì)與分析 54、類的設(shè)計(jì)與分析 85、特色算法分析 96、功能測(cè)試 147、存在的不足與對(duì)策 158、程序源代碼 259、使用說(shuō)明 2510、參考文獻(xiàn) 25一、 需求與功能分析隨著社會(huì)經(jīng)濟(jì)的發(fā)展,信息化程度的不斷深入,銀行的傳統(tǒng)業(yè)務(wù)己愈來(lái)愈不能滿足銀行客戶的需要。現(xiàn)今,人們的金融意識(shí)、科技意識(shí)己經(jīng)有了很大的提高,在緊張忙碌

2、的生活中,己越來(lái)越來(lái)不習(xí)慣每月奔忙于各銀行營(yíng)業(yè)柜臺(tái)之問(wèn)去排隊(duì)繳各種各樣的費(fèi)用了;同時(shí),各種經(jīng)營(yíng)單位如電信、移動(dòng)、供電、煤氣、自來(lái)水、證券等等一是為了提高服務(wù)質(zhì)量、方便客戶,二是為了減輕自己日趨繁重的工作量,紛紛委托銀行為其開(kāi)展代收代付業(yè)務(wù):同時(shí),隨著我國(guó)加入世貿(mào)組織的日益臨近,我國(guó)的銀行業(yè)將面臨更加激烈的同業(yè)競(jìng)爭(zhēng),如何提供更多的金融產(chǎn)品和更優(yōu)質(zhì)的服務(wù),如何吸引更多的客戶,如何利用計(jì)算機(jī)技術(shù)加強(qiáng)銀行帳戶信息管理、進(jìn)行銀行業(yè)務(wù)再造,提高銀行的工作效率和業(yè)務(wù)竟?fàn)幠芰κ菙[在各家銀行面前的一個(gè)迫切需要解訣的問(wèn)題。近幾年來(lái),各商業(yè)銀行加快了與社會(huì)各業(yè)的合作,利用自身的網(wǎng)點(diǎn)優(yōu)勢(shì)和業(yè)務(wù)特點(diǎn),為其提供各種高效、

3、快捷的代收代付業(yè)務(wù),也就是中間代理業(yè)務(wù),目前以與廣大人民群眾生活密切相關(guān)的各項(xiàng)繳費(fèi)業(yè)務(wù)如水電費(fèi)、電話費(fèi)、手機(jī)費(fèi)等代收業(yè)務(wù)為主,這些業(yè)務(wù)開(kāi)展方式多種多樣,但一般都離不開(kāi)計(jì)算機(jī)的高效管理支持。隨著代理業(yè)務(wù)不斷發(fā)展,業(yè)務(wù)品種越來(lái)越多,各項(xiàng)業(yè)務(wù)做法互有差異,這就對(duì)銀行的電子化水平和相應(yīng)的管理水平提出了更高的要求。如何利用電子化的手段構(gòu)建一個(gè)高效統(tǒng)一的、通用靈活的系統(tǒng)來(lái)管理各種各樣的業(yè)務(wù),是每個(gè)商業(yè)銀行所要研究的課題。支持決策系統(tǒng)的,需要在數(shù)據(jù)庫(kù)的基礎(chǔ)上,進(jìn)行聯(lián)機(jī)分析處理,每次處理的數(shù)據(jù)量大,響應(yīng)時(shí)間長(zhǎng)。特別是銀行每天要處理大量的存取款事件,做好存取款是銀行工作重要的環(huán)節(jié),然而要有效處理必須要有良好的程

4、序和數(shù)據(jù)管理系統(tǒng)來(lái)建立一個(gè)良好的軟件系統(tǒng)來(lái)實(shí)現(xiàn)快速、有效、準(zhǔn)確、安全的處理銀行事物。主要用于銀行的儲(chǔ)蓄卡管理系統(tǒng),它可以幫助我們有效、準(zhǔn)確、并且高效實(shí)現(xiàn)的完成存取事件。此系統(tǒng)操作方便效率、安全性高,只要客戶開(kāi)戶并設(shè)定好密碼就可以輕松的實(shí)現(xiàn)存取款。系統(tǒng)實(shí)現(xiàn)的主要有儲(chǔ)蓄卡開(kāi)戶管理、存取款管理、用戶查詢歷史數(shù)據(jù)顯示、注銷等功能。 儲(chǔ)蓄卡開(kāi)戶管理模塊:卡號(hào)、姓名、開(kāi)戶金額、身份證號(hào)、地址、電話、密碼、確認(rèn)密碼和保存組成。(開(kāi)戶金額必須是數(shù)字,密碼和確認(rèn)密碼必須一樣是六位數(shù)字) *查詢歷史數(shù)據(jù)模塊:存款記錄、取款記錄、余額顯示等。 *注銷模塊:一旦注銷該卡號(hào)就不存在且余額提醒你取出。 通過(guò)該銀行賬戶管理

5、系統(tǒng)地運(yùn)行,使辦公人員可以輕松快捷的完成對(duì)賬戶管理的任務(wù),提高賬目管理效率,使銀行的賬目管理工作系統(tǒng)化、規(guī)范化、自動(dòng)化。 該銀行帳目管理信息系統(tǒng),優(yōu)點(diǎn)是設(shè)計(jì)過(guò)程思路清晰、模塊劃分簡(jiǎn)潔,設(shè)計(jì)各階段分工明確。經(jīng)過(guò)實(shí)踐證明,該劃分是合理的,極大得提高了本系統(tǒng)的實(shí)現(xiàn)。二、 系統(tǒng)總體框架銀行管理系統(tǒng)存錢頁(yè)面取款頁(yè)面余額頁(yè)面歷史記錄注銷頁(yè)面登錄界面注冊(cè)開(kāi)戶主界頁(yè)面注銷退出 圖1 -1三、 模塊設(shè)計(jì)與分析儲(chǔ)蓄卡開(kāi)戶管理模塊:3.1 登錄頁(yè)面輸入卡號(hào)和密碼,根據(jù)用戶輸入的卡號(hào)和密碼,到后臺(tái)文件查詢,若正確則登錄成功,并保存卡好信息已備后用。若卡號(hào)存在和密碼不匹配或無(wú)該卡號(hào)已經(jīng)注銷,提示該卡號(hào)已存在或已注銷,保

6、持界面三次不變等待用戶的重新輸入。3.2 主界面頁(yè)面主要導(dǎo)航欄有:歡迎使用儲(chǔ)蓄卡管理(存款、取款、查詢余額、查詢歷史記錄、注銷退出)3.3 儲(chǔ)蓄卡開(kāi)戶頁(yè)面提供開(kāi)戶界面,由用戶輸入新儲(chǔ)蓄卡的所有信息,將該信息保存到文件中,并將開(kāi)戶金額作為該卡的第一次存款記錄存人文件。3.4 存錢頁(yè)面從登錄界面得到卡號(hào),并提供數(shù)據(jù)輸入界面,等待用戶的輸入存款金額。從后臺(tái)數(shù)據(jù)庫(kù)中找到該用戶余額記錄,修改余額,并將該存款事件的相應(yīng)信息寫(xiě)人數(shù)據(jù)庫(kù),同時(shí)將存錢的金額顯示在頁(yè)面上。3.5 取款頁(yè)面從登錄界面得到卡號(hào),并提供數(shù)據(jù)輸入界面,等待用戶輸入取款金額,如果取款金額大于該用戶卡上的余額則不能取款,或者將新的余額寫(xiě)人文件

7、,并將本次取款事件寫(xiě)入文件同時(shí)將取錢的金額顯示在頁(yè)面上,。3.6 查詢余額頁(yè)面從登錄界面得到卡好,把該卡上的余額顯示到界面中。3.7 查詢歷史記錄頁(yè)面從登錄界面得到卡號(hào),把該卡的所有存款取款信息查詢出來(lái),并顯示在頁(yè)面上。3.8 注銷頁(yè)面從關(guān)閉文件,狀態(tài)為注銷,最后關(guān)閉整個(gè)系統(tǒng)。列舉取款模塊進(jìn)行分析:void function:drawing(user &u) system(cls);coutnnntt*nendl; couttt請(qǐng)輸入取款金額:; string str1(ntt現(xiàn)取rmb 鈔- ); string str2; int k=0; while(ksaveanddrawmoney;u

8、.fmoney -=saveanddrawmoney; if(u.fmoney=0) system(cls);coutnnntt正在出炒,請(qǐng)稍等!endl;strstream ss;ssstr2;string frist=record+str2 +.txt; const char *recordfile=frist.c_str(); ofstream outfile(recordfile,ios:out|ios:app); outfilestr1saveanddrawmoney=3) system(cls); cerrnnntt很抱歉,你重復(fù)輸入錯(cuò)誤多次endl ntt正在退卡中endl; e

9、xit(0); system(cls); u.fmoney +=saveanddrawmoney; cerrnnntt對(duì)不起,你輸入的金額超出有效金額。endl ntt 請(qǐng)重新輸入: ; cout(istream & i, user & u);void password();bool login(user &);void savefile(user &); vector strfunction;user()user(int a,string n,int f,string i,string ad,int t):accout(a),name(n),fmoney(f),id(i),address(a

10、d),telephone(t)private: int accout; string name; int fmoney; string id; string address; int telephone; char pword19;char pword29;表1 user 類說(shuō)明表名稱屬性說(shuō)明accout數(shù)據(jù)成員用戶賬戶數(shù)據(jù)name數(shù)據(jù)成員用戶姓名fmoney數(shù)據(jù)成員用戶首次金額id數(shù)據(jù)成員用戶身份證號(hào)address數(shù)據(jù)成員用戶地址telephone數(shù)據(jù)成員用戶電話pword1數(shù)據(jù)成員用戶密碼pword2數(shù)據(jù)成員用戶再一次確認(rèn)密碼get()構(gòu)造函數(shù)默認(rèn)構(gòu)造函數(shù)login()成員方法登錄方法pa

11、ssword()成員方法密碼驗(yàn)證savefile()成員方法保存數(shù)據(jù)2function 類function 類 主要實(shí)現(xiàn)用戶的各種功能:畫(huà)出user 類的類圖:相關(guān)代碼:class functionpublic: void saving(user &);void drawing(user &);void balance(user &);void record(user &);private:int saveanddrawmoney; 表1 user 類說(shuō)明表名稱屬性說(shuō)明saveanddrawmoney數(shù)據(jù)成員用戶存入與取出金額saving()成員方法實(shí)現(xiàn)存款功能與保存數(shù)據(jù)drawing()成員

12、方法實(shí)現(xiàn)取款功能與保存數(shù)據(jù)balance()成員方法查詢余額功能record()成員方法查詢歷史記錄五、 特色算法分析1.user類中的password方法 功能:輸入密碼并進(jìn)行確認(rèn),如果密碼確認(rèn)三次失敗,則退出系統(tǒng)。while(n3)輸入:password1 password2strcmp(pword1,pword2)1 流程圖: 否 是 否 是代碼:void user:password() int num=0; while(num3) coutntt請(qǐng)輸入位儲(chǔ)蓄密碼:; for(int i=0;i8;i+) pword1i=getch();cout*; pword18=0; coutend

13、l; coutntt請(qǐng)?jiān)僖淮未_認(rèn)密碼:; for(int i=0;i8;i+) pword2i=getch();cout*; coutendl; pword28=0; if(strcmp(pword1,pword2)=0) coutnntt密碼確認(rèn)成功,單擊任何鍵進(jìn)入主菜單; getch(); return ; else num+; coutntt你輸入的密碼錯(cuò)誤,請(qǐng)重新輸入!nendl; if(num=3) system(cls); cerrnnntt對(duì)不起,你三次輸入不正確nendl tt感謝你的使用,再見(jiàn)! endl; exit(0); 六、 功能測(cè)試6.1 首頁(yè):圖6-1:6.2 儲(chǔ)蓄

14、卡開(kāi)戶頁(yè)面 圖6-2:6.3 主界面頁(yè)面主要導(dǎo)航欄有:歡迎使用儲(chǔ)蓄卡管理(存款、取款、查詢余額、查詢歷史記錄、注銷退出) 圖6-3:6.4 存錢頁(yè)面 圖6-4:6.5 取款頁(yè)面從登錄界面得到卡號(hào),并提供數(shù)據(jù)輸入界面,等待用戶輸入取款金額,如果取款金額大于該用戶卡上的余額則不能取款,或者將新的余額寫(xiě)人文件,并將本次取款事件寫(xiě)入文件同時(shí)將取錢的金額顯示在頁(yè)面上。輸入取款金額: 圖6-5:當(dāng)取款金額大于現(xiàn)有金額: 圖6-6:當(dāng)取款金額小于或等于現(xiàn)有金額: 圖6-7:6.6 查詢余額頁(yè)面 圖6-8:6.7 查詢歷史記錄頁(yè)面 圖6-9:6.8 用戶信息 圖6-10:6.9 注銷頁(yè)面從保存數(shù)據(jù)并關(guān)閉文件,

15、狀態(tài)為注銷,最后關(guān)閉整個(gè)系統(tǒng)。 圖6-11:七、 存在的不足與對(duì)策程序存在的不足之處在于程序以文件方式儲(chǔ)存,并且每個(gè)用戶信息與用戶的歷史記錄分別用一個(gè)文件來(lái)儲(chǔ)存,如果這樣的話一個(gè)用戶就需要二個(gè)文件儲(chǔ)存信息,那么一萬(wàn)個(gè)用戶就需要用到二萬(wàn)個(gè)文件保存。這不但浪費(fèi)內(nèi)存而已在查找文件也會(huì)花費(fèi)時(shí)間。解決的對(duì)策是使用stl標(biāo)準(zhǔn)庫(kù)或者數(shù)據(jù)庫(kù)的方法進(jìn)行解決,這里列舉了一個(gè)用stl標(biāo)準(zhǔn)庫(kù)里面用vector解決的例子:#include #include #include #include using namespace std;class accountpublic: string account; / 如果你要保

16、存0001這樣的格式,用string方便 double balance; / 余額 /自己補(bǔ)充數(shù)據(jù)成員 friend ostream & operator(istream & i, account & t);ostream & operator(ostream & o, const account & t) ot.account t.balance/*自己補(bǔ)充各個(gè)數(shù)據(jù)成員*/(istream & i, account & t) it.accountt.balance/*自己補(bǔ)充各個(gè)數(shù)據(jù)成員*/; return i;int main() ifstream ifs(account.txt); ve

17、ctor vacc; vacc.assign(istream_iterator(ifs), istream_iterator(); ifs.close(); for (vector:iterator it=vacc.begin(); it!=vacc.end(); +it) if (it-account = 0002) it-balance += 100; /余額增加100 break; ofstream ofs(account.txt); copy(vacc.begin(), vacc.end(), ostream_iterator(ofs); return 0;通過(guò)這個(gè)例子,我們就可以從程

18、序中輸入像/ account.txt里面的內(nèi)容示例 0001 104.7 0002 252.1 0004 4299.04 0003 723.2八、 程序源代碼#include#include#include#include#include#include#includeusing namespace std;class function;class userpublic: void get(user& );friend class function; ostream &print(ostream &os);/friend ostream & operator(istream & i, user

19、 & u);void password();bool login(user &);void savefile(user &); vector strfunction;user()user(int a,string n,int f,string i,string ad,int t):accout(a),name(n),fmoney(f),id(i),address(ad),telephone(t)private: int accout; string name; int fmoney; string id; string address; int telephone; char pword19;

20、 char pword29;class functionpublic: void saving(user &);void drawing(user &);void balance(user &);void record(user &);private:int saveanddrawmoney;void function:saving(user &u) system(cls); coutnnntt*nendl; coutsaveanddrawmoney; u.fmoney+=saveanddrawmoney; strstream ss; string str2;ssstr2; string fr

21、ist=record+str2 +.txt; const char *recordfile=frist.c_str(); ofstream outfile(recordfile,ios:out|ios:app); outfilestr1saveanddrawmoneyendl; outfile.close(); outfile.clear(); coutnntt操作成功,單擊任何鍵返回主菜單!; getch();void function:drawing(user &u) system(cls); coutnnntt*nendl; couttt請(qǐng)輸入取款金額:; string str1(ntt

22、現(xiàn)取rmb 鈔- ); string str2; int k=0; while(ksaveanddrawmoney;u.fmoney -=saveanddrawmoney; if(u.fmoney=0) system(cls);coutnnntt正在出炒,請(qǐng)稍等!endl;strstream ss;ssstr2;string frist=record+str2 +.txt; const char *recordfile=frist.c_str(); ofstream outfile(recordfile,ios:out|ios:app); outfilestr1saveanddrawmoney

23、=3) system(cls); cerrnnntt很抱歉,你重復(fù)輸入錯(cuò)誤多次endl ntt正在退卡中endl; exit(0); system(cls); u.fmoney +=saveanddrawmoney; cerrnnntt對(duì)不起,你輸入的金額超出有效金額。endl ntt 請(qǐng)重新輸入: ; coutnntt操作成功,單擊任何鍵返回主菜單!; getch();void function:balance(user &u) system(cls); coutnnntt*nendl; couttt你當(dāng)前的余額是:; coutttu.fmoneyendl; coutntt*nendl; c

24、outntt操作成功,單擊任何鍵返回主菜單!; getch();void function:record(user &u) string str1,str2;system(cls);coutnnntt*nendl;couttt摘要幣種鈔匯存/取款金額endl;strstream ss;ssstr2;string frist=record+str2 +.txt; const char *recordfile=frist.c_str();ifstream infile(recordfile,ios:in);if(!infile) coutntt沒(méi)有任何歷史記錄!endl; getch(); ret

25、urn ;while(!infile.eof() getline (infile,str1); coutnttstr1endl;coutntt*nendl;coutntt操作成功,單擊任何鍵返回主菜單!;getch();ostream &user:print(ostream &os) /marksystem(cls); osnnntt*nendl; osntt用戶卡號(hào):accoutendl; osntt姓名: name endl; osntt賬戶金額:fmoneyendl; osntt身份證號(hào):idendl; osntt地址: address endl; osntt聯(lián)系電話:telephone

26、 endl; osntt密碼: pword1endl; osntt*nendl; coutntt操作成功,單擊任何鍵返回主菜單!; getch(); return os;void user:savefile(user &u) int filename=u.accout; string frist; string last(.txt); strstream ss; ssfrist;frist+=last; const char *userid=frist.c_str();ofstream outfile(userid,ios:out |ios:trunc );/outfile(*this); o

27、utfileaccout name fmoney id address telephone pword1endl; outfile.close();bool user:login(user &u) int acc; string pwd; coutntt登陸用戶:endl; coutacc; coutpwd; int filename=acc; string frist; string last(.txt); strstream ss; ssfrist;frist+=last; const char *userid=frist.c_str();ifstream infile(userid,io

28、s:in ); while (infile (*this) if (u.accout = acc ) string str; str=pword1;if(str= pwd) return true; return false;/*ostream & operator(ostream & o, const user & u) ou.accout u.name u.fmoney u.id u.address u.telephone u.pword1 (istream & i, user & u) iu.accout u.name u.fmoney u.id u.address u.telephon

29、e u.pword1 ; return i;void user:password() int num=0; while(num3) coutntt請(qǐng)輸入位儲(chǔ)蓄密碼:; for(int i=0;i8;i+) pword1i=getch();cout*; pword18=0; coutendl; coutntt請(qǐng)?jiān)僖淮未_認(rèn)密碼:; for(int i=0;i8;i+) pword2i=getch();cout*; coutendl; pword28=0; if(strcmp(pword1,pword2)=0) coutnntt密碼確認(rèn)成功,單擊任何鍵進(jìn)入主菜單; getch(); return ;

30、 else num+; coutntt你輸入的密碼錯(cuò)誤,請(qǐng)重新輸入!nendl; if(num=3) system(cls); cerrnnntt對(duì)不起,你三次輸入不正確nendl tt感謝你的使用,再見(jiàn)! endl; exit(0); void user:get(user& u)system(cls); coutnnntt請(qǐng)輸入用戶信息:nendl; couttt*nendl; coutaccout; coutname; coutfmoney; coutid; coutaddress; couttelephone; u.password(); coutntt*nendl;void sign(

31、)system(cls);coutnnnnnnttt謝謝您使用銀行管理系統(tǒng)t nnendl;couttt*nendl;couttt 姓名: 謝道爾 nn tt 班級(jí): 計(jì)算機(jī)班nn tt 學(xué)號(hào): 200710214217nnendl; coutntt 已經(jīng)成功退出endl ntt 歡迎你的光臨! endl;char custom(user &u) char x;int k=0;system(cls);coutnnnttntt ntt 歡迎使用儲(chǔ)蓄管理系統(tǒng) ntt ntt 請(qǐng)用戶在使用前選擇開(kāi)戶: ntt ntt 請(qǐng)選擇: ntt 1:注冊(cè)開(kāi)戶 ntt 2:用戶登錄 ntt 其他:退出 ntt ntt nttnendl; coutx; if(x=1) u.get(u); else if(x=2) while(k3) if(u.login(u) /判斷登陸是否成功 return 0; elsesystem(cls);cerrnnnttt輸

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論