版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
綜合程序課程設(shè)計說明書課程設(shè)計名稱:12級綜合程序課程設(shè)計報告課程設(shè)計題目:銀行賬戶管理系統(tǒng)學(xué)院名稱:信息工程學(xué)院專業(yè):電子信息工程班級:學(xué)號:姓名:評分:教師:2015年03月20日綜合程序課程設(shè)計任務(wù)書題目銀行賬戶管理系統(tǒng)內(nèi)容與要求設(shè)計一個銀行賬戶管理程序,賬戶的信息有賬號(唯一)、姓名、余額、身份證號碼、電話號碼,允許用戶進(jìn)行如下操作:開戶、銷戶、存款、取款、轉(zhuǎn)賬、查詢,一個用戶可以有多個戶頭,賬戶的數(shù)值沒有上限?;疽螅撼绦蜻\(yùn)行時,可以由用戶選擇進(jìn)行何種操作,開戶操作要求輸入用戶信息后自動獲取賬號,用戶銷戶后賬號被回收,并且該賬號可以繼續(xù)分配給其它賬戶,不允許用戶透支,根據(jù)姓名或賬號可以進(jìn)行用戶的信息查詢,所有的賬戶信息應(yīng)存放到一個文件中,可以隨時的訪問和更新。選作內(nèi)容:在上述程序的基礎(chǔ)上,添加聯(lián)名賬戶(一個聯(lián)名賬戶有兩個擁有者)的管理。進(jìn)度安排3月2~3日:查找資料3月4日:系統(tǒng)框架搭建3月5~10日:對系統(tǒng)的各模塊進(jìn)行詳細(xì)的設(shè)計。3月11~12日:對系統(tǒng)進(jìn)行測試、完善學(xué)生姓名:指導(dǎo)時間第1~2周指導(dǎo)地點(diǎn):任務(wù)下達(dá)2015年3月1日任務(wù)完成2015年3月13日考核方式1.評閱□2.答辯□3.實(shí)際操作□4.其它□指導(dǎo)教師系(部)主任2014-2015學(xué)年第2學(xué)期第1周-2周注:1、此表一組一表二份,課程設(shè)計小組組長一份;任課教師授課時自帶一份備查。2、課程設(shè)計結(jié)束后與“課程設(shè)計小結(jié)”、“學(xué)生成績單”一并交院教務(wù)存檔。摘要隨著社會經(jīng)濟(jì)的發(fā)展,信息化程度的不斷深入,計算機(jī)的廣泛運(yùn)用,為了滿足新形勢下銀行客戶的需求,使用計算機(jī)來進(jìn)行銀行賬戶的管理是社會發(fā)展的新常態(tài)。本文主要介紹一種以C++為系統(tǒng)描述語言,采用自頂向下的的設(shè)計方法,通過類來實(shí)現(xiàn)相應(yīng)操作的一種銀行賬戶系統(tǒng)。該系統(tǒng)具有開戶、用戶信息存儲、查詢、轉(zhuǎn)賬、取款等功能。較之其他系統(tǒng),具有快速、易操作、安全性好等特點(diǎn)。關(guān)鍵詞:銀行賬戶管理系統(tǒng)C++類目錄TOC\o"1-3"\h\u第一章設(shè)計要求 1第二章系統(tǒng)的組成與設(shè)計的原理 22.1系統(tǒng)的組成 22.2表的信息結(jié)構(gòu) 3第三章概要設(shè)計 53.1基本功能設(shè)計思路 53.2程序框圖 5第四章詳細(xì)設(shè)計 64.1類的定義 64.2銀行賬戶系統(tǒng)其他功能的實(shí)現(xiàn) 84.3讀取和保存 194.4聯(lián)名賬戶的實(shí)現(xiàn) 21第五章調(diào)試與測試分析 215.1調(diào)試程序的方法和技巧 215.2系統(tǒng)運(yùn)行結(jié)果 225.3調(diào)試中出現(xiàn)的故障 26第六章結(jié)論 28第七章參考文獻(xiàn) 29附錄 30附錄一:詳細(xì)程序與注釋 30附錄二:聯(lián)名賬戶管理程序(節(jié)選) 44第一章設(shè)計要求設(shè)計一個銀行賬戶管理程序,賬戶的信息有賬號(唯一)、姓名、余額、身份證號碼、電話號碼,允許用戶進(jìn)行如下操作:開戶、銷戶、存款、取款、轉(zhuǎn)賬、查詢,一個用戶可以有多個戶頭,賬戶的數(shù)值沒有上限。基本要求:程序運(yùn)行時,可以由用戶選擇進(jìn)行何種操作,開戶操作要求輸入用戶信息后自動獲取賬號,用戶銷戶后賬號被回收,并且該賬號可以繼續(xù)分配給其它賬戶,不允許用戶透支,根據(jù)姓名或賬號可以進(jìn)行用戶的信息查詢,所有的賬戶信息應(yīng)存放到一個文件中,可以隨時的訪問和更新。選作內(nèi)容:在上述程序的基礎(chǔ)上,添加聯(lián)名賬戶(一個聯(lián)名賬戶有兩個擁有者)的管理。系統(tǒng)的組成與設(shè)計的原理2.1系統(tǒng)的組成通過對該銀行賬戶管理系統(tǒng)的需求進(jìn)行分析,從增強(qiáng)系統(tǒng)的可維護(hù)性以與保密性的角度入手,整體上計劃采用兩個類,即zhgl類和consumer類來實(shí)現(xiàn)。定義zhgl為基類,定義consumer類為zhgl的派生類、使其的訪問屬性為public。zhgl類用來完成功能顯示、開戶、銷戶和用戶登錄功能;consumer類用來存放賬戶基本信息,進(jìn)行查詢、存款、取款、密碼修改和轉(zhuǎn)賬操作。除此之外還有如下子函數(shù)組成。voidkaihu();//普通賬戶開戶voidshanchu();//刪除賬號voidzhuanzhang(int);//轉(zhuǎn)賬voiddenglu();//登陸賬號voidaddmoney(int,float);voidexitzhgl();//退出系統(tǒng)voidfunctionshow();voidsave();//保存voidqishi(); //功能界面voidload();//載入voiddisplay();voidqumoney();//取錢voidchange_passwd();//改密碼voidb_money(float);//被轉(zhuǎn)賬者voida_money(float);//轉(zhuǎn)賬者voidc_money(float);//聯(lián)合被轉(zhuǎn)賬者voidd_money(float);//聯(lián)合轉(zhuǎn)賬者floatget_money();//卡卡轉(zhuǎn)帳voidsearch();//查詢voidcunmoney();//存錢2.2表的信息結(jié)構(gòu)1.普通賬戶信息表字段名字段類型允許空說明IDintno卡號namestringno用戶姓名passwordstringno密碼identificationstringno身份證phonenumberstringno電話moneyfloatno賬戶余額(不能為空)聯(lián)名賬戶信息表字段名字段類型允許空說明IDintno卡1namestringno卡1用戶姓名passwordstringno卡1密碼ID2intno卡2Name2stringno卡2用戶姓名Password2stringno卡2密碼moneyfloatno賬戶余額(不能為空)3.用戶進(jìn)行存取的操作表字段名字段類型允許空說明IDintno卡號cfloatno存/取金額chcharno判斷是否繼續(xù)該操作4.用戶進(jìn)行轉(zhuǎn)賬的操作表字段名字段類型允許空說明IDintno轉(zhuǎn)賬的卡號idintno被轉(zhuǎn)賬的卡號bfloatno轉(zhuǎn)賬金額moneyfloatno賬戶余額5.用戶進(jìn)行密碼修改的操作表字段名字段類型允許空說明IDintno卡號pwdstringno新密碼repwdstringno再次輸入的新密碼passwdstringno賬號密碼第三章概要設(shè)計3.1基本功能設(shè)計思路通過對該銀行賬戶管理系統(tǒng)的需求進(jìn)行分析,從增強(qiáng)系統(tǒng)的可維護(hù)性以與保密性的角度入手,整體上計劃采用兩個類,即zhgl類和consumer類來實(shí)現(xiàn)。定義zhgl為基類,定義consumer類為zhgl的派生類、使其的訪問屬性為public。zhgl類用來完成功能顯示、開戶、銷戶和用戶登錄功能;consumer類用來存放賬戶基本信息,進(jìn)行查詢、存款、取款、密碼修改和轉(zhuǎn)賬操作。定義一個account指針,用來指向已開戶的賬戶,并獲得該賬戶的信息,用來執(zhí)行存、取、轉(zhuǎn)賬等操作。并用fstream指令進(jìn)行文件的讀寫操作,實(shí)現(xiàn)將賬戶所有者的信息存放到一個文件中,并可以隨時的訪問和更新。程序運(yùn)行后用戶可根據(jù)界面提示自行操作。由于要實(shí)現(xiàn)界面的回復(fù),在控制用戶的循環(huán)操作時可以采用dowhile匹配的循環(huán)結(jié)構(gòu)。3.2程序框圖第四章詳細(xì)設(shè)計4.1類的定義zhgl類的定義classzhglpublic:voidkaihu();//普通賬戶開戶voidshanchu();//刪除賬號voidzhuanzhang(int);//轉(zhuǎn)賬voiddenglu();//登陸賬號voidaddmoney(int,float);voidexitzhgl();//退出系統(tǒng)voidfunctionshow();voidsave();//保存voidqishi(); //功能界面 voidload();//載入protected:staticintnum;//賬戶數(shù)consumer*account[20];4.1.2consumer類的定義classconsumer:publiczhglpublic:friendclasszhgl;consumer(intid,stringName,stringPassWord,floatm,stringIdentification,stringPhoneNumber)ID=id; name=Name; money=m; passwd=PassWord; identification=Identification; phonenumber=PhoneNumber;stringget_passwd()//取得密碼 returnpasswd; stringget_name() returnname; intget_id()//返回賬號 returnID;voiddisplay();voidqumoney();//取錢voidchange_passwd();//改密碼voidb_money(float);//被轉(zhuǎn)賬者voida_money(float);//轉(zhuǎn)賬者 voidc_money(float);//聯(lián)合被轉(zhuǎn)賬者 voidd_money(float);//聯(lián)合轉(zhuǎn)賬者floatget_money();//卡卡轉(zhuǎn)帳 voidsearch();//查詢voidcunmoney();//存錢private:intID;//開戶帳號stringpasswd;//用戶密碼stringname;//用戶姓名 stringidentification;//身份證 stringphonenumber;//電話號碼floatmoney;//初始資金4.2銀行賬戶系統(tǒng)其他功能的實(shí)現(xiàn)4.2.1賬戶開戶賬戶開戶使用cin接收鍵盤中輸入的數(shù)據(jù),并使用指向類對象的指針,將接收的值傳回。voidzhgl::kaihu()//開戶的實(shí)現(xiàn)intid;stringnam;stringpassw; stringidentif;stringphonen;floatm;cout<<endl<<"請輸入開戶號:";cin>>id;cout<<endl<<"請輸入開戶人姓名:";cin>>nam; cout<<endl<<"請輸入開戶人身份證:"; cin>>identif; cout<<endl<<"請輸入開戶人的電話號碼:"; cin>>phonen;cout<<endl<<"請輸入開戶密碼:";cin>>passw;cout<<endl<<"請輸入存入金額:";cin>>m;while(m<=0)cout<<"請輸入正確的數(shù)字!"<<endl;cin>>m;consumer*acc=newconsumer(id,nam,passw,m,identif,phonen);account[num]=acc; system("cls");cout<<"開戶成功!!"<<endl<<endl;num++;save();return;4.2.2賬戶注銷注銷賬戶時先要將輸入的賬戶號與已開戶的賬戶進(jìn)行比對,匹配上后,將賬戶號按位依次賦空,實(shí)現(xiàn)賬戶注銷。voidzhgl::shanchu()//注銷賬號的實(shí)現(xiàn)intid;cout<<endl<<"請輸入你要注銷的帳戶號:";cin>>id;intflag=1;inti=0;while((i<num)&&(flag))if(id==account[i]->get_id()) {flag=0;}else {i++;}if(flag)cout<<"帳號不存在!"<<endl;return;for(intj=i;j<num;j++)account[j]=account[j+1];account[num-1]=NULL;//按位依次賦空實(shí)現(xiàn)銷戶num--;cout<<"注銷成功!!"<<endl;return;程序框圖如下:賬戶登錄首先讀取bankdata.TXT保留的賬戶信息,首先對銀行賬號進(jìn)行匹配,匹配上后再對密碼進(jìn)行匹配,在登陸后,會有2級菜單供用戶選擇自己想要的操作,能夠查詢,取款,存款,轉(zhuǎn)賬,修改密碼和返回主菜單。voidzhgl::denglu()//登陸賬號的實(shí)現(xiàn) intid;cout<<"請輸入帳號:";cin>>id;intflag=1;inti=0;while((i<num)&&(flag))if(id==account[i]->get_id()) flag=0; else i++;if(flag)cout<<"帳號不存在!"<<endl;return;}cout<<"請輸入密碼:";stringpassw;cin>>passw;if(passw!=account[i]->get_passwd()) return;intn;do{cout<<"請選擇你要進(jìn)行的操作:"<<endl<<"0)查詢其他用戶信息"<<endl<<"1)查看信息"<<endl<<"2)取款"<<endl<<"3)存款"<<endl<<"4)修改密碼"<<endl<<"5)轉(zhuǎn)賬"<<endl<<"6)返回"<<endl;cin>>n;switch(n) {case0:account[i]->search();break; case1:account[i]->display();break;case2:account[i]->qumoney();save();break;case3:account[i]->cunmoney();save();break;case4:account[i]->change_passwd();save();break;case5:zhuanzhang(i);save();break;case6:return;while(1);4.2.4退出系統(tǒng)voidzhgl::exitzhgl()cout<<endl<<"感謝你對本銀行儲蓄管理系統(tǒng)的支持,歡迎下次光臨!"<<endl;exit(0);}4.2.5查詢其他用戶信息voidconsumer::search()stringch; intID; intflag=1; intQ=0;cout<<endl<<"請輸入你要查詢的帳戶號:";cin>>ID;while((Q<num)&&(flag))if(ID==account[Q]->get_id()) {flag=0;}else {Q++;}if(flag)cout<<"帳號不存在!"<<endl;return; ch=account[Q]->get_name(); cout<<"對應(yīng)的用戶名為:"<<ch<<endl;4.2.6查看本用戶信息用cout輸出本用戶的基本信息voidconsumer::display(){system("cls");cout<<"**********************************"<<endl;cout<<"*"<<endl;cout<<"*用戶姓名:"<<name<<endl;cout<<"*身份證號碼:"<<identification<<endl;cout<<"*電話號碼:"<<phonenumber<<endl;cout<<"*帳號:"<<ID<<endl;cout<<"*余額:"<<money<<endl;cout<<"**********************************"<<endl;4.2.7取款用戶選擇取款功能后,先提示用戶輸入取款金額,取款金額應(yīng)大于0元,所以要先對輸入的金額進(jìn)行判斷,當(dāng)其大于0后再賬戶余額進(jìn)行比較。若輸入金額大于賬戶余額,提示用戶賬戶余額不足;若輸入金額小于等于賬戶余額,執(zhí)行取款操作,并相應(yīng)的減去取款金額。執(zhí)行完操作后詢問用戶是否繼續(xù)當(dāng)前操作。voidconsumer::qumoney()//取錢的實(shí)現(xiàn) floatm; charch;docout<<endl<<"你要取多少錢:"<<"$>"<<endl;cin>>m;while(m<=0)cout<<"請輸入正確的數(shù)字!"<<endl;cout<<"$>";cin>>m;if(money<m)cout<<"對不起,你的余額不足!"<<endl;else money=money-m;cout<<endl<<"操作成功,請收好錢!"<<endl;cout<<"是否要繼續(xù)該項操作:(Y/N)"<<endl;cout<<"$>";cin>>ch;while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')cout<<"$>";cin>>ch;while(ch=='y'||ch=='Y');4.2.8存款存款功能和取款功能類似,用戶選擇存款功能后,先提示用戶輸入存款金額,存款金額應(yīng)大于0元,當(dāng)存款金額大于0后執(zhí)行存款操作,并相應(yīng)的賬戶余額應(yīng)為之前的金額加上存款金額。執(zhí)行完操作后詢問用戶是否繼續(xù)當(dāng)前操作。voidconsumer::cunmoney()//存錢的實(shí)現(xiàn)floatc;charch;do cout<<endl<<"你要存多少錢:"<<"$>"<<endl; cin>>c; while(c<=0)cout<<"請輸入正確的數(shù)字!"<<endl;cout<<"$>";cin>>c; money=money+c; cout<<"操作已成功!"<<endl; cout<<"是否要繼續(xù)該項操作:(Y/N)"<<endl; cout<<"$>"; cin>>ch;while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')cout<<"$>";cin>>ch;while(ch=='y'||ch=='Y');}選選存錢輸入金額將余額表中的最終余額加上你輸入的金額,得到新的余額將輸入的金額添加到文件夾中。將新的最終余額顯出來示出來4.2.9密碼修改密碼修改時,新密碼需要輸兩次,且兩次輸入的密碼都相等才能完成密碼修改。因此在密碼修改程序中需要定義兩個變量,分別存放這兩次輸入的密碼。在這個程序中pwd表示第一次輸入的密碼,repwd表示第二次輸入的密碼,完成新密碼輸入后,當(dāng)pwd和repwd時將新密碼賦給passwd,否則提醒用戶重新輸入新密碼。voidconsumer::change_passwd()//變更密碼的實(shí)現(xiàn)stringpwd,repwd;cout<<"請輸入新密碼:";cin>>pwd;cout<<"請再輸入一次新密碼:";cin>>repwd;if(pwd!=repwd)cout<<"你輸入的兩次密碼不一樣,請重新輸入!"<<endl;passwd=pwd;cout<<"密碼修改成功,請牢記!"<<endl;4.2.10轉(zhuǎn)賬轉(zhuǎn)賬時,應(yīng)先獲得被轉(zhuǎn)賬者的賬戶,確認(rèn)該賬戶存在后,還需對轉(zhuǎn)賬金額進(jìn)行判斷,規(guī)定轉(zhuǎn)賬金額必須大于0元。完成轉(zhuǎn)賬功能還需借用兩個子函數(shù)來對轉(zhuǎn)賬者和被轉(zhuǎn)賬者的賬戶金額進(jìn)行操作。這里用a_money、b_money分別對轉(zhuǎn)賬者和被轉(zhuǎn)賬者的賬戶余額進(jìn)行操作。voidconsumer::b_money(floatx) money=x+money;voidconsumer::a_money(floatx) money=money-x;voidzhgl::zhuanzhang(intx)//轉(zhuǎn)賬的實(shí)現(xiàn){intid;intflag=1;inti=0;cout<<"請輸入帳號:";cin>>id;while((i<num)&&(flag))if(id==account[i]->get_id()) flag=0;else i++;if(flag)cout<<"帳號不存在!"<<endl;return;floatb;cout<<"請輸入你要轉(zhuǎn)帳的金額:"<<endl;cin>>b;while(b<=0)cout<<"請輸入正確的數(shù)字!"<<endl;cout<<"$>";cin>>b;if(account[x]->get_money()<b) cout<<"對不起,金額不夠!!"<<endl;else account[x]->a_money(b);//轉(zhuǎn)出 account[i]->b_money(b);//轉(zhuǎn)入cout<<"轉(zhuǎn)帳成功!"; return;}4.3讀取和保存 根據(jù)系統(tǒng)的功能中有一個要求:可以隨時的訪問和更新??紤]到這一點(diǎn),在程序中計劃用fstream指令來完成,因此在系統(tǒng)運(yùn)行前,應(yīng)先進(jìn)行文件的讀取,讀取之前已開戶的賬戶信息,并在執(zhí)行操作之后保存更改,實(shí)現(xiàn)隨時的訪問和更新。4.3.1讀取voidzhgl::load()ifstreaminfile("bankdate.txt",ios::in);//打開bankdate,txt文件if(!infile)cerr<<"讀取錯誤,無資料中!"<<endl;return;intn=0;intid;floatm;intAC;stringnam,passw,identifi,phonen;infile>>AC;num=AC;for(n=0;n<AC;n++)//讀取文件中的賬戶信息infile>>id;infile>>m;infile>>nam;infile>>passw;infile>>identifi;infile>>phonen;consumer*acc=newconsumer(id,nam,passw,m,identifi,phonen);account[n]=acc;infile.close();cout<<"讀取資料正常!"<<endl;4.3.2保存voidzhgl::save()//賬號的保存intn=0; intac=num; fstreamftxt("bankdate.txt",ios::out);//打開文件 ftxt<<ac<<endl; for(;n<ac;n++)//寫入賬戶信息 ftxt<<account[n]->ID<<endl; ftxt<<account[n]->name<<endl; ftxt<<account[n]->money<<endl; ftxt<<account[n]->passwd<<endl; ftxt<<account[n]->identification<<endl; ftxt<<account[n]->phonenumber<<endl;infile.close();4.4聯(lián)名賬戶的實(shí)現(xiàn)由于時間有限,聯(lián)合賬戶最終并沒有完全實(shí)現(xiàn)在這里主要講下我們實(shí)現(xiàn)聯(lián)名賬戶的思路。在這里對consumer類的進(jìn)行處理,增加3個對象id2,name2和passwd2,使得comsumer類默認(rèn)即為聯(lián)名賬戶。在類的初始化時就先給那三個對象賦空,這樣即使不接收三個對象的值,在輸出過程中也不會報錯,最終經(jīng)過處理的類總共有7個對象:2個id,2個name,2個passwd還有1個money。在開戶時如果是普通賬戶開戶只需給id2賦0,就不會再提示進(jìn)行name2和passwd2的信息輸入;如果是聯(lián)名賬戶只需按照提示輸入信息即可。聯(lián)名賬戶登錄時,輸入賬號密碼后會與已開戶的賬戶進(jìn)行比對,識別出是哪個賬戶進(jìn)行的操作,由于聯(lián)名賬戶資產(chǎn)共有,所以不管是賬戶1還是賬戶2進(jìn)行存取款操作時,改變的都是共同的資產(chǎn)金額。雖然并沒有完全調(diào)試出來,但是除了對金額的操作還沒完成,其他的操作都已實(shí)現(xiàn),在此節(jié)選部分體現(xiàn)與之前程序差異的聯(lián)名賬戶的代碼(見附錄二),其余部分由于操作原理相同,且受篇幅所限就不一一羅列了。第五章調(diào)試與測試分析5.1調(diào)試程序的方法和技巧在編寫過程中我們采用的調(diào)試方法有逐語句調(diào)試法、分模塊調(diào)試法、設(shè)斷點(diǎn)調(diào)試法以與整體調(diào)試法。其中逐語句調(diào)試法以與設(shè)斷點(diǎn)調(diào)試法主要在程序報錯時用于排錯,而分模塊調(diào)試和整體調(diào)試則貫穿程序設(shè)計始終。在進(jìn)行程序設(shè)計時會先對需求進(jìn)行分析,搭出系統(tǒng)的框架,然后再根據(jù)系統(tǒng)不同的功能劃分成若干模塊,編寫子函數(shù)來完成相應(yīng)的功能。采用分模塊調(diào)試的好處在于,當(dāng)設(shè)計完一個子函數(shù)后可以先進(jìn)行模塊調(diào)試,可以看程序有無錯誤、是否完成預(yù)想的功能,減小后期排錯工作量。5.2系統(tǒng)運(yùn)行結(jié)果5.2.1開始界面圖5.1開始菜單5.2.2用戶開戶圖5.2用戶開戶圖5.3如圖5.2所示完成賬戶開戶后,在blankdate.txt文件中信息在寫入正常,見圖5.3。5.2.3賬戶登錄圖5.4賬戶登錄正常,登錄后進(jìn)入操作菜單。5.2.4賬戶注銷圖5.5查詢其他用戶信息圖5.6查看信息圖5.7取款圖5.10存款圖5.11修改密碼圖5.12轉(zhuǎn)賬圖5.13圖5.14轉(zhuǎn)賬后轉(zhuǎn)賬者和被轉(zhuǎn)賬者的賬戶余額都發(fā)生了改變,且blankdate.txt文件中的內(nèi)容得到了更新,證明可以實(shí)現(xiàn)隨時訪問更新。從以上的調(diào)試結(jié)果可以看出,設(shè)計的銀行賬戶管理系統(tǒng)已經(jīng)達(dá)到用戶的要求。5.3調(diào)試中出現(xiàn)的故障故障1:現(xiàn)象:程序無誤時,生成失敗并提示LINK:fatalerrorLNK1123:轉(zhuǎn)換到COFF期間失敗:文件無效或損壞。原因:上網(wǎng)搜索了一下這個錯誤代碼,后發(fā)現(xiàn)這個錯誤是由低版本的WTL到高版本的WTL轉(zhuǎn)變后產(chǎn)生的。解決方法:只需依次點(diǎn)擊項目->屬性->配置屬性->清單工具->輸入和輸出->嵌入清單,將嵌入清單后的是改成否就可以正常完成編譯了。故障2:現(xiàn)象:程序發(fā)生中斷,單步調(diào)試之后,指向get_id()函數(shù),顯示系統(tǒng)無法讀取id原因:*account[]指針是zhgl類中定義的私有成員,而get_id是在派生類consumer中定義的,由于其訪問屬性是public,無法訪問基類的私有成員函數(shù)故無法獲取到*account[]指向的賬戶的id值。解決方法:解決方法有很多種,第一將*account從zhgl類中調(diào)出來,作為一個普通變量;第二將*account定義為zhgl類的保護(hù)成員,consumer即可進(jìn)行訪問;第三可以將派生類consumer定義為基類的友元,使其能訪問私有對象。在此程序中采用的是解決方法一。故障3:現(xiàn)象:在清空bankdata.txt中的內(nèi)容后程序報錯原因:在程序運(yùn)行后,一開始就會調(diào)用一個Load函數(shù),讀取bankdata.txt中已開戶的賬戶情況。打開文件后檢測到文件為空又沒有對文件為空的情況進(jìn)行處理,導(dǎo)致程序無法進(jìn)行。解決方法:在打開文件檢測到文件為空時,輸出提示語,并返回之前操作。并且不要人為的清空記錄的信息,如不慎清空應(yīng)在其中輸入相應(yīng)的字符,使其處于非空狀態(tài)。故障4:現(xiàn)象:編寫load時,發(fā)現(xiàn)infile無法讀取到保存在bankdata.txt上的數(shù)據(jù)。原因:在之前的save函數(shù)中輸出內(nèi)容有中文,導(dǎo)致infile讀取不到數(shù)字,且因?yàn)椴恢牢募械降妆4媪硕嗌賯€賬戶,無法返回到主函數(shù)中。解決方法:把save函數(shù)中的中文給注釋掉,并在編寫save函數(shù)時,添加一個num變量,用來記錄已完成開戶的賬戶個數(shù),并在load中增加一個變量AC,用來存儲bankdata.txt中的保存的num,并在循環(huán)中作為循環(huán)變量,控制讀取次數(shù)。結(jié)論經(jīng)過驗(yàn)證,本銀行賬戶管理系統(tǒng)可以實(shí)現(xiàn)賬戶信息記錄、開戶、銷戶、存款、取款、轉(zhuǎn)賬、查詢等基本功能,聯(lián)名賬戶的管理大體上也已完成。從設(shè)計思路上來說,系統(tǒng)模塊的劃分,組成部分的設(shè)計是正確的。從方案選用來說,并不算完美,因?yàn)閷︽湵淼南嚓P(guān)知識并不太了解,因此在存儲賬戶信息時并未選用鏈表來實(shí)現(xiàn),這也為之后的提高要求設(shè)計帶來了一定困難;且受開發(fā)時間影響,只能在doss系統(tǒng)下進(jìn)行調(diào)試操作,雖然運(yùn)行速度快,但人機(jī)交互界面不友好。通過這次綜合課程設(shè)計,我切身的體會到了面向?qū)ο蟪绦蚝兔嫦蜻^程程序語言的區(qū)別。區(qū)別不僅僅存在于兩種程序語言中,也存在與編程思想中。面向?qū)ο蟮某绦蚓幊趟枷胫饕前研枨竽K化,根據(jù)每個模塊特定的屬性,需要實(shí)現(xiàn)的功能來編寫模塊,創(chuàng)建對象。通過這次課設(shè),我對類的定義、數(shù)據(jù)類型,派生類等有了更深刻的認(rèn)識;對之前沒了解到的細(xì)節(jié)有了更深的了解;對文件操作有了更深了理解。最重要的是,在這次課程設(shè)計中,掌握了自頂向下的設(shè)計方法,學(xué)會了從系統(tǒng)的角度去分析問題,還積累了一定的工程經(jīng)驗(yàn)。雖然系統(tǒng)設(shè)計的并不完美,但這次課程設(shè)計成為我們的人生旅途上一個美好的歷練??!參考文獻(xiàn)[1]申時凱.數(shù)據(jù)庫應(yīng)用技術(shù)(SQLServer2005).中國鐵路出版社[2].C程序設(shè)計語言.北京:清華大學(xué)出版社,第2版[3]黃維通.VisualC++面向?qū)ο笈c可視化程序設(shè)計.北京:清華大學(xué)出版社,第3版附錄附錄一:詳細(xì)程序與注釋#include"stdafx.h"#include<iostream>#include<string>#include<fstream>usingnamespacestd;inti=0;intj=0;classconsumer;classzhglpublic:voidkaihu();//普通賬戶開戶voidshanchu();//刪除賬號voidzhuanzhang(int);//轉(zhuǎn)賬voiddenglu();//登陸賬號voidaddmoney(int,float);voidexitzhgl();//退出系統(tǒng)voidfunctionshow();voidsave();//保存voidqishi();//功能界面 voidload();//載入 protected:staticintnum;//賬戶數(shù)consumer*account[20];intzhgl::num=0;classconsumer:publiczhglpublic:friendclasszhgl;consumer(intid,stringName,stringPassWord,floatm,stringIdentification,stringPhoneNumber)ID=id; name=Name; money=m; passwd=PassWord; identification=Identification; phonenumber=PhoneNumber;consumer()//類的初始 ID=0; name='0'; money=0; passwd='0'; identification='0'; phonenumber='0';stringget_passwd()//取得密碼 returnpasswd; stringget_name() returnname; intget_id()//返回賬號 returnID;voiddisplay();voidqumoney();//取錢voidchange_passwd();//改密碼voidb_money(float);//被轉(zhuǎn)賬者voida_money(float);//轉(zhuǎn)賬者 voidc_money(float);//聯(lián)合被轉(zhuǎn)賬者 voidd_money(float);//聯(lián)合轉(zhuǎn)賬者floatget_money();//卡卡轉(zhuǎn)帳 voidsearch();//查詢voidcunmoney();//存錢private:intID;//開戶帳號stringpasswd;//用戶密碼stringname;//用戶姓名 stringidentification;//身份證 stringphonenumber;//電話號碼floatmoney;//初始資金voidzhgl::save()//賬號的保存intn=0; intac=num; fstreamftxt("bankdate.txt",ios::out); ftxt<<ac<<endl; for(;n<ac;n++) ftxt<<account[n]->ID<<endl; ftxt<<account[n]->name<<endl; ftxt<<account[n]->money<<endl; ftxt<<account[n]->passwd<<endl; ftxt<<account[n]->identification<<endl; ftxt<<account[n]->phonenumber<<endl;ftxt.close();voidzhgl::load()ifstreaminfile("bankdate.txt",ios::in);if(!infile)cerr<<"讀取錯誤,無資料中!"<<endl;return;intn=0;intid;floatm;intAC;stringnam,passw,identifi,phonen;infile>>AC;num=AC;for(n=0;n<AC;n++)infile>>id;infile>>m;infile>>nam;infile>>passw;infile>>identifi;infile>>phonen;consumer*acc=newconsumer(id,nam,passw,m,identifi,phonen);account[n]=acc;infile.close();cout<<"讀取資料正常!"<<endl;voidzhgl::zhuanzhang(intx)//轉(zhuǎn)賬的實(shí)現(xiàn){intid;intflag=1;inti=0;cout<<"請輸入帳號:";cin>>id;while((i<num)&&(flag))if(id==account[i]->get_id()) flag=0;else i++;if(flag)cout<<"帳號不存在!"<<endl;return;floatb;cout<<"請輸入你要轉(zhuǎn)帳的金額:"<<endl;cin>>b;while(b<=0)cout<<"請輸入正確的數(shù)字!"<<endl;cout<<"$>";cin>>b;if(account[x]->get_money()<b) cout<<"對不起,金額不夠!!"<<endl;else account[x]->a_money(b);//轉(zhuǎn)出 account[i]->b_money(b);//轉(zhuǎn)入cout<<"轉(zhuǎn)帳成功!"; return;}voidconsumer::b_money(floatx) money=x+money;voidconsumer::a_money(floatx) money=money-x;voidzhgl::addmoney(intx,floaty) account[x]->money=account[x]->money-y;floatconsumer::get_money()//查詢money returnmoney;voidmain() zhglyh;yh.functionshow();voidzhgl::functionshow() load();intn;docout<<endl<<"請你輸入相應(yīng)的操作序號進(jìn)行操作:"<<endl;cout<<"1)普通用戶開戶"<<endl<<"2)賬戶登陸"<<endl<<"3)帳戶注銷"<<endl<<"4)退出系統(tǒng)"<<endl;cout<<"$>";cin>>n;while(n<1||n>4)cout<<"請輸入正確的操作序號!"<<endl;cout<<"$>";cin>>n;switch(n)case1:kaihu();break;case2:denglu();break;case3:shanchu();break;case4:exitzhgl();break;while(true);voidconsumer::search(){stringch; intID; intflag=1; intQ=0;cout<<endl<<"請輸入你要查詢的帳戶號:";cin>>ID;while((Q<num)&&(flag))if(ID==account[Q]->get_id())flag=0;elseQ++;if(flag)cout<<"帳號不存在!"<<endl;return; ch=account[Q]->get_name(); cout<<"對應(yīng)的用戶名為:"<<ch<<endl;voidzhgl::denglu()//登陸賬號的實(shí)現(xiàn) intid;cout<<"請輸入帳號:";cin>>id;intflag=1;inti=0;while((i<num)&&(flag))if(id==account[i]->get_id()) flag=0; else i++;if(flag)cout<<"帳號不存在!"<<endl;return;cout<<"請輸入密碼:";stringpassw;cin>>passw;if(passw!=account[i]->get_passwd()) return;intn;do{cout<<"請選擇你要進(jìn)行的操作:"<<endl<<"0)查詢其他用戶信息"<<endl<<"1)查看信息"<<endl<<"2)取款"<<endl<<"3)存款"<<endl<<"4)修改密碼"<<endl<<"5)轉(zhuǎn)賬"<<endl<<"6)返回"<<endl;cin>>n;switch(n) {case0:account[i]->search();break; case1:account[i]->display();break;case2:account[i]->qumoney();save();break;case3:account[i]->cunmoney();save();break;case4:account[i]->change_passwd();save();break;case5:zhuanzhang(i);save();break;case6:return;while(1);voidzhgl::kaihu()//開戶的實(shí)現(xiàn)intid;stringnam;stringpassw; stringidentif;stringphonen;floatm;cout<<endl<<"請輸入開戶號:";cin>>id;cout<<endl<<"請輸入開戶人姓名:";cin>>nam; cout<<endl<<"請輸入開戶人身份證:"; cin>>identif; cout<<endl<<"請輸入開戶人的電話號碼:"; cin>>phonen;cout<<endl<<"請輸入開戶密碼:";cin>>passw;cout<<endl<<"請輸入存入金額:";cin>>m;while(m<=0)cout<<"請輸入正確的數(shù)字!"<<endl;cin>>m;consumer*acc=newconsumer(id,nam,passw,m,identif,phonen);account[num]=acc; system("cls");cout<<"開戶成功!!"<<endl<<endl;num++;save();return;voidzhgl::shanchu()//注銷賬號的實(shí)現(xiàn)intid;cout<<endl<<"請輸入你要注銷的帳戶號:";cin>>id;intflag=1;inti=0;while((i<num)&&(flag))if(id==account[i]->get_id())flag=0;elsei++;if(flag)cout<<"帳號不存在!"<<endl;return;for(intj=i;j<num;j++)account[j]=account[j+1];account[num-1]=NULL;num--;cout<<"注銷成功!!"<<endl;return;voidconsumer::change_passwd()//變更密碼的實(shí)現(xiàn)stringpwd,repwd;cout<<"請輸入新密碼:";cin>>pwd;cout<<"請再輸入一次新密碼:";cin>>repwd;if(pwd!=repwd)cout<<"你輸入的兩次密碼不一樣,請重新輸入!"<<endl;passwd=pwd;cout<<"密碼修改成功,請牢記!"<<endl;voidconsumer::qumoney()//取錢的實(shí)現(xiàn)floatm;charch;docout<<endl<<"你要取多少錢:"<<"$>"<<endl;cin>>m;while(m<=0)cout<<"請輸入正確的數(shù)字!"<<endl;cout<<"$>";cin>>m;if(money<m)cout<<"對不起,你的余額不足!"<<endl;else money=money-m;cout<<endl<<"操作成功,請收好錢!"<<endl;cout<<"是否要繼續(xù)該項操作:(Y/N)"<<endl;cout<<"$>";cin>>ch;while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')cout<<"$>";cin>>ch;}while(ch=='y'||ch=='Y');voidconsumer::cunmoney()//存錢的實(shí)現(xiàn)floatc;charch;docout<<endl<<"你要存多少錢:"<<"$>"<<endl;cin>>c;while(c<=0)cout<<"請輸入正確的數(shù)字!"<<endl;cout<<"$>";cin>>c;money=money+c;cout<<"操作已成功!"<<endl;cout<<"是否要繼續(xù)該項操作:(Y/N)"<<endl;cout<<"$>";cin>>ch;while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')cout<<"$>";cin>>ch;}while(ch=='y'||ch=='Y');voidconsumer::display(){system("cls");cout<<"**********************************"<<endl;cout<<"*"<<endl;cout<<"*用戶姓名:"<<name<<endl;cout<<"*身份證號碼:"<<identification<<endl;cout<<"*電話號碼:"<<phonenumber<<endl;cout<<"*帳號:"<<ID<<endl;cout<<"*余額:"<<money<<endl;cout<<"**********************************"<<endl;voidzhgl::exitzhgl()cout<<endl<<"感謝你對本銀行儲蓄管理系統(tǒng)的支持,歡迎下次光臨!"<<endl;exit(0);附錄二:聯(lián)名賬戶管理程序(節(jié)選)1.類定義classconsumer:publickaishipublic: friendclasskaishi;consumer(intid,stringName,stringPassword,floatm,intid2=0,stringName2=0,stringPassword2=0)ID=id; ID2=id2; name=Name; name2=Name2; money=m; passwd=Password; passwd2=Passw
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國酒店用餐桌行業(yè)投資前景及策略咨詢研究報告
- 美術(shù)教材培訓(xùn)課程設(shè)計
- 二零二五年度個人汽車貸款擔(dān)保合同范例3篇
- 美容明星項目課程設(shè)計
- 砂石料破碎承包合同
- 2025至2030年中國桑菊感冒顆粒行業(yè)投資前景及策略咨詢研究報告
- 初中地理教師教學(xué)工作計劃
- 歌劇臺詞課程設(shè)計
- 2025年光增感劑項目發(fā)展計劃
- 工程質(zhì)量工作計劃
- 期末測試(試題)-三年級數(shù)學(xué)上冊人教版
- 藥劑科門診中成西藥房利用PDCA循環(huán)降低門診藥房調(diào)劑內(nèi)差發(fā)生率品管圈QCC成果匯報
- 物料員工作計劃與總結(jié)
- 浙江省金華市2023年九年級上學(xué)期期末數(shù)學(xué)試題附答案
- JGT292-2010 潔凈工作臺標(biāo)準(zhǔn)
- 圣誕節(jié)元旦搞笑小品就劇本:浪子回家
- 2023年海南省天一大聯(lián)考高一化學(xué)第一學(xué)期期末達(dá)標(biāo)測試試題含解析
- 銀行工會個人總結(jié)報告
- 部編版小學(xué)語文2-6年級詞語表
- 甘肅省平?jīng)鍪嗅轻紖^(qū)2024屆九年級英語第一學(xué)期期末統(tǒng)考模擬試題含解析
- 測繪法規(guī)與工程管理(第2版)完整全套教學(xué)課件
評論
0/150
提交評論