個(gè)人銀行管理系統(tǒng)C課設(shè)2_第1頁
個(gè)人銀行管理系統(tǒng)C課設(shè)2_第2頁
個(gè)人銀行管理系統(tǒng)C課設(shè)2_第3頁
個(gè)人銀行管理系統(tǒng)C課設(shè)2_第4頁
個(gè)人銀行管理系統(tǒng)C課設(shè)2_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、遼 寧 工 業(yè) 大 學(xué)C+語言程序設(shè)計(jì)課程設(shè)計(jì)(論文)題目: 個(gè)人銀行管理系統(tǒng) 院(系): 專業(yè)班級: 學(xué) 號: 學(xué)生姓名: 指導(dǎo)教師: 教師職稱: 起止時(shí)間:2011.12.12-2011.12.25課程設(shè)計(jì)(論文)任務(wù)及評語院(系): 教研室:軟件教研室學(xué) 號學(xué)生姓名專業(yè)班級課程設(shè)計(jì)(論文)題目個(gè)人銀行管理系統(tǒng)課程設(shè)計(jì)(論文)任務(wù)程序設(shè)計(jì)的任務(wù)與要求:(1). 掌握面向?qū)ο蟪绦蛟O(shè)計(jì)語言C+的基本語法(2). 掌握C+面向?qū)ο笤O(shè)計(jì)的思想(3). 掌握VC+6.0與DEV C+ 開發(fā)工具的使用 (4). 運(yùn)用標(biāo)準(zhǔn)C+規(guī)范設(shè)計(jì)應(yīng)用程序設(shè)計(jì)過程中,要嚴(yán)格遵守設(shè)計(jì)的時(shí)間安排,聽從指導(dǎo)教師的指導(dǎo)。正確

2、地完成上述內(nèi)容,規(guī)范完整地撰寫出設(shè)計(jì)報(bào)告。指導(dǎo)教師評語及成績 成績: 指導(dǎo)教師簽字: 年 月 日 目 錄第1章 課程設(shè)計(jì)目的與要求11.1 設(shè)計(jì)目的11.2實(shí)驗(yàn)環(huán)境11.3預(yù)備知識11.4設(shè)計(jì)要求1第2章 課程設(shè)計(jì)內(nèi)容22.1 課題描述22.2 系統(tǒng)設(shè)計(jì)2功能分析2面向?qū)ο笤O(shè)計(jì)2類成員描述22.3程序?qū)崿F(xiàn)2源碼分析2運(yùn)行結(jié)果2第3章 課程設(shè)計(jì)總結(jié)3參考文獻(xiàn)4第1章 課程設(shè)計(jì)目的與要求1.1 設(shè)計(jì)目的將理論教學(xué)中涉及到的知識點(diǎn)貫穿起來,對不同的數(shù)據(jù)類型、程序控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)作一比較和總結(jié),結(jié)合設(shè)計(jì)題目進(jìn)行綜合性應(yīng)用,對所學(xué)知識達(dá)到融會(huì)貫通的程度。通過課程設(shè)計(jì),學(xué)生在下述各方面的能力應(yīng)該得到鍛煉

3、:(1)進(jìn)一步鞏固、加深學(xué)生所學(xué)專業(yè)課程C+語言教程的基本理論知識,理論聯(lián)系實(shí)際,進(jìn)一步培養(yǎng)學(xué)生綜合分析問題,解決問題的能力。(2)全面考核學(xué)生所掌握的基本理論知識及其實(shí)際業(yè)務(wù)能力,從而達(dá)到提高學(xué)生素質(zhì)的最終目的。(3)利用所學(xué)知識,開發(fā)小型應(yīng)用系統(tǒng),掌握運(yùn)用C+語言編寫調(diào)試應(yīng)用系統(tǒng)程序,訓(xùn)練獨(dú)立開發(fā)應(yīng)用系統(tǒng),進(jìn)行數(shù)據(jù)處理的綜合能力。(4)對于給定的設(shè)計(jì)題目,如何進(jìn)行分析,理清思路,并給出相應(yīng)的數(shù)學(xué)模型。(5)掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的方法。(6)熟練掌握C+語言的基本語法,靈活運(yùn)用各種數(shù)據(jù)類型。(7)進(jìn)一步掌握在集成環(huán)境下如何調(diào)試程序和修改程序。1.2實(shí)驗(yàn)環(huán)境硬件要求能運(yùn)行Windows 操作系

4、統(tǒng)的微機(jī)系統(tǒng)。C+語言應(yīng)用程序開發(fā)軟件使用:VC+ 系統(tǒng),或其他C+語言應(yīng)用程序開發(fā)軟件。1.3預(yù)備知識熟悉C+語言程序設(shè)計(jì)的基本知識及VC+編輯器的使用方法。1.4設(shè)計(jì)要求1.仔細(xì)分析設(shè)計(jì)題目,畫出程序流程圖,編寫程序源代碼。2.積極上機(jī)調(diào)試源程序,增強(qiáng)編程技巧與調(diào)程能力。3.認(rèn)真書寫課程設(shè)計(jì)預(yù)習(xí)報(bào)告,課程設(shè)計(jì)說明書。4.遵守課程設(shè)計(jì)要求和機(jī)房管理制度,服從指導(dǎo)教師的安排,確保課程設(shè)計(jì)的順利完成課程設(shè)計(jì)內(nèi)容。第2章 課程設(shè)計(jì)內(nèi)容2.1 課題描述熟悉C+工程開發(fā)的過程、頭文件和源文件之間的關(guān)系,掌握類、繼承及派生、虛函數(shù)、多態(tài)性在C+面向?qū)ο蟪绦蛟O(shè)計(jì)中的體現(xiàn),掌握一個(gè)類的對象作為另外一個(gè)類的成

5、員的實(shí)現(xiàn)方法。掌握子類對象與父類對象的關(guān)系,熟悉C+中流的使用,養(yǎng)成良好的編程習(xí)慣。在掌握C+面向?qū)ο蟪绦蛟O(shè)計(jì)方法的基礎(chǔ)上,使用VC+6.0結(jié)合課本內(nèi)容完成以下內(nèi)容的實(shí)現(xiàn):完成個(gè)人銀行賬戶管理程序的編寫、編譯、調(diào)試、運(yùn)行,完成基類Account、子類SavingsAccount及CreditAccount的聲明及定義。實(shí)現(xiàn)Accumulator類及Date類。利用C+中流的概念實(shí)現(xiàn)賬戶信息的存儲(chǔ)。在Account類中添加數(shù)據(jù)成員:Password,并對應(yīng)編寫該數(shù)據(jù)成員的get函數(shù)。在主函數(shù)中實(shí)現(xiàn)賬戶對象創(chuàng)建時(shí)從鍵盤輸入構(gòu)造函數(shù)需要的信息。在輸出及需要用戶輸入的時(shí)候要給出相應(yīng)的提示信息。2.2

6、系統(tǒng)設(shè)計(jì)功能分析個(gè)人銀行賬號管理模塊:1.主界面主要導(dǎo)航欄有:個(gè)人銀行賬號管理系統(tǒng),已存入三個(gè)賬戶的信息,有六個(gè)服務(wù)包括存款、取款、顯示個(gè)賬戶信息、改變?nèi)掌凇⑦M(jìn)入下個(gè)月、退出。2.顯示個(gè)賬戶信息頁面顯示您的賬戶序號、賬號和收支平衡,在第二行顯示日期和賬戶總額。3.存款頁面顯示請選擇您的賬戶序號,輸入賬戶序號之后,顯示請輸入您的存款金額,從后臺數(shù)據(jù)庫中找到該用戶余額記錄,修改余額,并將該存款事件的相應(yīng)信息寫人數(shù)據(jù)庫,同時(shí)在下面顯示您的存款日期、賬號,存入的金額,總金額。4取款頁面 取款頁面和存款頁面提示的信息相似,提供數(shù)據(jù)輸入界面,等待用戶輸入取款金額,如果取款金額大于該用戶卡上的余額則不能取款

7、,或者將新的余額寫人文件,并將本次取款事件寫入文件同時(shí)將取錢的金額顯示在頁面上。面向?qū)ο笤O(shè)計(jì) Date-year : int-month : int-day : int-totalDays : int+Date(year : int, month : int, day : int)<<const>> +getYear() : int<<const>>+getMonth() : int<<const>>+getDay() : int<<const>> + getMaxDay() : int<&l

8、t;const>> + isLeapYear() : bool<<const>> + show()<<const>> + operator - (date : Date) : intAccumulator-lastDate : Date-value : double-sum : double+Accumulator(date : Date, value : double)<<const>> +getSum(date : Date) : double+change(date : Date, value : dou

9、ble)+reset(date : Date, value : double)SavingsAccount-acc : Accumulator-rate : double+SavingsAccount(date : Date, id : int, rate : double)<<const>> +getRate() : double+deposit(date : Date, amount : double, desc : string)+withdraw(date : Date, amount : double, desc : string)+settle(date :

10、 Date)Account-id : string-balance : double-total : double#Account(date : Date, id : int)#record(date: Date, amount : double, desc : string)<<const>>#error(msg:string)<<const>>+getId() : int<<const>> +getBalance() : double<<abstract>> + deposit(date : D

11、ate, amount : double, desc : string)<<abstract>> + withdraw(date : Date, amount : double, desc : string)<<abstract>> + settle(date : Date)<<virtual>> <<const>> + show()<<static>>+getTotal() : doubleCreditAccount-acc : Accumulator-credit : d

12、ouble-rate : double-fee : double<<const>> -getDebt() : double+CreditAccount(date : Date, id : int, credit : double, rate : double, fee : double)<<const>> +getCredit() : double<<const>> +getRate() : double<<const>> +getFee() : double<<const>>

13、; +getAvailableCredit() : double+deposit(date : Date, amount : double, desc : string)+withdraw(date : Date, amount : double, desc : string)+settle(date : Date)<<const>>+show() 類成員描述Startcin>>countI=1I<=accountNumBanki.account=countI+end選擇服務(wù)存款取款顯示個(gè)賬戶信息改變?nèi)掌谶M(jìn)入下月個(gè)人銀行賬號管理系統(tǒng)賬戶創(chuàng)建賬戶查詢退出

14、賬戶賬戶序號存款金額2.3程序?qū)崿F(xiàn)源碼分析#include "account.h"#include <iostream>using namespace std;int main()cout<<" -個(gè)人銀行賬戶管理系統(tǒng)!- "<<endl;Date date(2011,6,1); /起始日期 /初始賬戶 SavingsAccount sa1(date,"S3755271",0.015,"123");SavingsAccount sa2(date,"02342342&qu

15、ot;,0.015,"456");CreditAccount ca(date,"C5392394",10000,0.0005,50,"789");Account *accounts=&sa1,&sa2,&ca;const int n=sizeof(accounts)/sizeof(Account*);cout<<"(d)存款 "<<endl;cout<<"(w) 取款"<<endl;cout<<"(s)

16、 顯示各賬戶信息 "<<endl;cout<<"(c)改變?nèi)掌?"<<endl;cout<<"(n) 進(jìn)入下個(gè)月 "<<endl;cout<<"(e)退出 "<<endl;char cmd;do /顯示日期和總金額cout<<endl;date.show();cout<<"t賬戶總金額"<<Account:getTotal()<<endl;cout<<endl;c

17、out<<"請選擇服務(wù):"int index,day,i;double amount;string desc,pwd,pass;cin>>cmd;switch(cmd)case'd': /存入現(xiàn)金cout<<"請選擇您的賬戶序號(0/1/2):"cin>>index;if(index=0|index=1|index=2)cout<<"請輸入您的存款金額:"cin>>amount;accountsindex->deposit(date,amou

18、nt,desc);elsecout<<"賬戶號錯(cuò)誤!"break;case'w': /取出現(xiàn)金 cout<<"請選擇您的賬戶序號(0/1/2):"cin>>index;cout<<"請輸入您的密碼:"cin>>pwd;pass=accountsindex->getPassword();if(pare(pwd)=0)cout<<"密碼正確!"<<endl; cout<<"請輸入您的取款金額:

19、"cin>>amount; accountsindex->withdraw(date,amount,desc); elsecout<<"您輸入的密碼錯(cuò)誤!"<<endl;break;case's': /查詢各賬戶信息for( i=0;i<n;i+)cout<<""<<i<<""accountsi->show();cout<<endl;break;case'c': /改變?nèi)掌赾out<&l

20、t;"輸入要改的日期:"cin>>day;cout<<endl;if(day<date.getDay()cout<<"You connot specify a previous day"else if(day>date.getMaxDay()cout<<"Invalid day"elsedate=Date(date.getYear(),date.getMonth(),day);break;case'n': /進(jìn)入下個(gè)月if(date.getMonth()=12

21、)date=Date(date.getYear()+1,1,1);elsedate=Date(date.getYear(),date.getMonth()+1,1);for(int k=0;k<n;k+)accountsk->settle(date);break;while(cmd!='e'); return 0;#include "account.h"#include <cmath>#include <iostream>using namespace std;double Account:total=0;/Account

22、類的實(shí)現(xiàn)Account:Account(const Date &date,const string &id,const string &pwd):id(id),balance(0),password(pwd)date.show();cout<<"t#"<<id<<" created"<<endl;void Account:record(const Date &date,double amount,const string &desc)amount=floor(amou

23、nt*100+0.5)/100; /保留小數(shù)點(diǎn)后兩位balance+=amount;total+=amount;date.show();cout<<"t#"<<id<<"t"<<amount<<"t"<<balance<<"t"<<desc<<endl;void Account:show() const cout<<id<<"tBalance:"<<ba

24、lance;void Account:error(const string &msg)constcout<<"Error(#"<<id<<"):"<<msg<<endl;/SavingsAccount類相關(guān)成員函數(shù)的實(shí)現(xiàn)SavingsAccount:SavingsAccount(const Date &date,const std:string &id,double rate,const std:string &password):Account(date,id,

25、password),rate(rate),acc(date,0)void SavingsAccount:deposit(const Date &date,double amount,const string &desc) record(date,amount,desc); acc.change(date,getBalance(); void SavingsAccount:withdraw(const Date &date,double amount,const string &desc)if(amount>getBalance()error("n

26、ot enough money");else record(date,-amount,desc);acc.change(date,getBalance(); void SavingsAccount:settle(const Date &date)if(date.getMonth()=1)double interest=acc.getSum(date)*rate/(date-Date(date.getYear()-1,1,1); /計(jì)算年息if(interest!=0)record(date,interest,"interest");acc.reset(da

27、te,getBalance();/CreditAccount類相關(guān)成員函數(shù)的實(shí)現(xiàn)CreditAccount:CreditAccount(const Date &date,const string &id,double credit,double rate,double fee,const std:string &password):Account(date,id,password),credit(credit),rate(rate),fee(fee),acc(date,0)void CreditAccount:deposit(const Date &date,d

28、ouble amount,const string &desc) record(date,amount,desc); acc.change(date,getBalance(); void CreditAccount:withdraw(const Date &date,double amount,const string &desc)if(amount-getBalance()>credit)error("not enough money");else record(date,-amount,desc);acc.change(date,getDe

29、bt(); void CreditAccount:settle(const Date &date)double interest=acc.getSum(date)*rate;if(interest!=0)record(date,interest,"interest");if(date.getMonth()=1)record(date,-fee,"annual fee");acc.reset(date,getDebt();void CreditAccount:show() constAccount:show();cout<<"

30、tAvailable credit:"<<getAvailableCredit();#include "date.h"#include <iostream>#include <cstdlib>using namespace std;/namespace使下面的定義只在當(dāng)前文件中有效namespace /存儲(chǔ)平年中的某個(gè)月1日之前有多少天,為便于getMaxDay函數(shù)的實(shí)現(xiàn),該數(shù)組多出一項(xiàng)const int DAYS_BEFORE_MONTH=0,31,59,90,120,151,181,212,243,273,304,334,3

31、65; Date:Date(int year,int month,int day):year(year),month(month),day(day)if(day<=0|day>getMaxDay()cout<<"Invalid date:"show();cout<<endl;exit(1);int years=year-1;totalDays=years*365+years/4-years/100+years/400+DAYS_BEFORE_MONTHmonth-1+day;if(isLeapYear() && month

32、>2) totalDays+; /DATE:DATEint Date:getMaxDay() constif(isLeapYear() && month=2)return 29;elsereturn DAYS_BEFORE_MONTHmonth-DAYS_BEFORE_MONTHmonth-1;void Date:show() constcout<<getYear()<<"-"<<getMonth()<<"-"<<getDay();#ifndef _ACCOUNT_H_#d

33、efine _ACCOUNT_H_#include "date.h"#include "accumulator.h"#include <string>using namespace std;class Account /賬戶類private:std:string id; /賬號 std:string password;double balance; /余額static double total; /所有賬戶的總金額protected:/供派生類調(diào)用的構(gòu)造函數(shù),id為賬戶Account(const Date &date,const st

34、d:string &id,const std:string &pwd);/記錄一筆賬,data為日期,amount為金額,desc為說明void record(const Date &date,double amount,const std:string &desc);/報(bào)告錯(cuò)誤信息void error(const std:string &msg) const;public:const std:string &getId() const return id;const std:string getPassword() return passwor

35、d;double getBalance() const return balance;static double getTotal()return total;/存入現(xiàn)金,date為日期,amount為金額,desc為款項(xiàng)說明virtual void deposit(const Date &date,double amount,const std:string &desc)=0;/取出現(xiàn)金,date為日期,amount為金額,desc為款項(xiàng)說明virtual void withdraw(const Date &date,double amount,const std:s

36、tring &desc)=0;/結(jié)算(計(jì)算利息、年費(fèi)等),每月結(jié)算一次,date為結(jié)算日期virtual void settle(const Date &date)=0;/顯示賬戶信息virtual void show() const;class SavingsAccount:public Accountprivate:Accumulator acc;double rate;public:/構(gòu)造函數(shù)SavingsAccount(const Date &date,const std:string &id,double rate,const std:string &

37、amp;passwod);double getRate() const return rate;/存入現(xiàn)金void deposit(const Date &date,double amount,const std:string &desc);/取出現(xiàn)金void withdraw(const Date &date,double amount,const std:string &desc);/結(jié)算利息,每年1月1日調(diào)用一次該函數(shù)void settle(const Date &date);class CreditAccount:public Account /

38、信用賬戶類private:Accumulator acc; /輔助計(jì)算利息的累加器double credit; /信用額度double rate; /欠款的日利率double fee; /信用卡年費(fèi)double getDebt()const /獲得欠款額double balance=getBalance();return(balance<0?balance:0);public:/構(gòu)造函數(shù)CreditAccount(const Date &date,const std:string &id,double credit,double rate,double fee,const

39、 std:string &passwod);double getCredit() const return credit;double getRate() const return rate;double getFee() const return fee;double getAvailableCredit() const /獲得可用信用額度if(getBalance()<0)return credit+getBalance();elsereturn credit;/存入現(xiàn)金void deposit(const Date &date,double amount,const

40、 std:string &desc);void withdraw(const Date &date,double amount,const std:string &desc);/結(jié)算利息和年費(fèi),每月1日調(diào)用一次該函數(shù)void settle(const Date &date);void show() const;#endif/_ACCOUNT_H_#ifndef _ACCUMULATOR_H_#define _ACCUMULATOR_H_#include "date.h"class Accumulator /將某個(gè)數(shù)值按日累加private:D

41、ate lastDate; /上次變更數(shù)值的日期double value; /數(shù)值的當(dāng)前值double sum; /數(shù)值按日累加之和public:/構(gòu)造函數(shù),date為開始累加的日期,value為初始值A(chǔ)ccumulator(const Date &date,double value):lastDate(date),value(value),sum(0)/獲得日期date的累加結(jié)果double getSum(const Date &date)constreturn sum+value*(date-lastDate);/在date將數(shù)值變更為valuevoid change(const Date &date,double value)sum=getSum(date);lastDate=date;this->value=value;/初始化,將日期變?yōu)閐ate,數(shù)值變?yōu)関alue,累加器清零void reset(const Date &date,double value)lastDate=date;this->value=value;sum=0;#endif#ifndef _DATE_H_#define _DATE_H_class Date /日期類private:

溫馨提示

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

評論

0/150

提交評論