课程设计个人银行账户管理.docx
《课程设计个人银行账户管理.docx》由会员分享,可在线阅读,更多相关《课程设计个人银行账户管理.docx(12页珍藏版)》请在冰点文库上搜索。
课程设计个人银行账户管理
《C++语言程序设计》课程设计报告
姓名:
韦锌栩
指导华博
学号:
2010305215
班级:
10计本2班
日期:
2011年05月26日
工商大学派斯学院计算机科学系
计算机科学与技术系课程设计评分表
课程名称:
面向对象程序设计个人银行账户管理
项目
评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
功能完善度
综合成绩
学号
班级
姓名
综合成绩
2010305215
10计本2班
韦锌栩
教师签名:
日期:
C++语言课程设计——个人银行账户管理
说明书
二、调试和测试
<1>、调试方法:
首先打开MicrosoftVisualC++6.0,运行程序,出现错误修改再运行,直至运行结果0error,0warning结束。
接着进入程序界面,看程序能否实现所要求的各项功能,再作下一步的修改。
<2>、测试:
运行程序,直接显示出应有的文字直观优势。
三、分析及结论
程序中增加了日期类Date,该类得数据包括year,month,day和tatalDays,其中totalDays表示这一天的相对日期。
该类的成员函数除了构造函数和用来获得年,月,日的函数外,还包括用来得到当前月的天数的getMaxDay函数、用来判断当前年是否为润年的isLeapYear函数、用来将当前日期输出的show函数、用来判断当前日期与指定日期相差天数的distance函数,这些函数都会被Date类的其他成员函数或SavingsAccount类的函数调用。
不足之处:
1、代码重用;
2、不能熟练的运用类;
3、没有用到指针和数组,对数组和指针还不能很好的运用。
心得体会:
通过这次课程设计我对这学期所学的C++语言的理论知识得到巩固,达到该设计的基本目的,也发现自己的不足之出,在以后的上机中应更加注意。
同时体会到C++语言具有的语句简洁,使用灵活,执行效率高等特点。
发现上机实训的重要作用,特别是对数组和循环有了深刻的理解。
发现自己对指针还不能正确使用。
通过实际操作,学会C++语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。
深刻体会到“没有做不到的,只有想不到的”,“团结就是力量”,“实践是检验真理的标准”,“不耻下问”……的寓意。
四、附录
附录源代码:
#ifndef__ACCUMULATOR_H__
#define__ACCUMULATOR_H__
#include"date.h"
classAccumulator{
private:
DatelastDate;
doublevalue;
doublesum;
public:
//构造函数,date为开始累加的日期,value为初始值
Accumulator(constDate&date,doublevalue)
:
lastDate(date),value(value),sum(0){}
//获得日期date的累加结果
doublegetSum(constDate&date)const
{
returnsum+value*date.distance(lastDate);
}
//在date将数值变更为value
voidchange(constDate&date,doublevalue)
{
sum=getSum(date);
laastDate=date;this->value=value;
}
//初始化,将日期变为date,数值变为value,累加器清零
voidreset(constDate&date,doublevalue)
{
lastDate=date;this->value;sum=0;
}
};
#endif
//account.h
#ifndef__ACCOUNT_H__
#definbe__ACCOUNT_H__
#include"accumulator.h"
#include
classAccount{
private:
std:
stringid;
doubluebalance;
staticdoubletotal;
protected:
//供派生类调用的构造函数,id为账户
Account(constDate&date,conststd:
:
string&id);
//记录一笔账,date为日期,amount为金额,desc为说明
voidrecord(constDate&date,doubleamount,conststd:
:
string&desc);
//报告错误信息
voiderror(conststd:
:
string&msg)const;
public:
conststd:
:
string&getId()const{returnid;}
doublegetBalance()const{returnbalance;}
staticdoublegetTotal(){returntotal;}
//显示账户信息
voidshow()const;
};
classSavingsAccount:
publicAccount{
private:
Accumulatoracc;
doublerate;
public:
//构造函数
SavingsAccount(constDate&date,conststd:
:
string&id,doublerate);
doublegetRate()const{returnrate;}
//存入现金
voiddeposit(constDate&date,doubleamount,conststd:
:
string&desc);
//取出现金
voidwithdraw(constDate&date,doubleamount,conststd:
:
string&desc);
voidsettle(constDate&date);//结算利息,每年1月1日调用一次该函数
};
classCreditAccount:
publicAccount{//信用账户类
private:
Accumulatoracc;//辅助计算利息的累加器
doublecredit;//信用额度
doublerate;//欠款的日利率
doublefee;//信用卡年费
doublegetDebt()const{
doublebalance=getBalance();
return(balance<0?
balance:
0);
}
public:
//构造函数
CreditAccount(constDate&date,conststd:
:
string&id,doublecredit,doublerate,doublefee);
doublegetCredit()const{returncredit;}
doublegetRate()const{returnrate;}
doublegetFee()const{returnfee;}
doublegetAvailableCredit()const{
if(getBalance()<0)
returncredit+getBalance();
else
returncredit;
}
//存入现金
voiddeposit(constDate&date,doubleamount,conststd:
:
string&desc);
//取出现金
voidwithdraw(constDate&date,doubleamount,conststd:
:
string&desc);
voidsettle(constDate&date);//结算利息和年费,每月1日调用一次该函数
voidshow()const;
};
#endif//__ACCOUNT_H__
//account.cpp
#include"account.h"
#include
#include
usingnamespacestd;
doubleAccount:
:
total=0;
//Account类的实现
Account:
:
Account(constDate&date,conststring&id)
:
id(id),balance(0){
date.show();
cout<<"\t#"<}
voidAccount:
:
record(constDate&date,doubleamount,conststring&desc){
amount=floor(amount*100+0.5)/100;//保留小数点后两位
balance+=amount;total+=amount;
date.show();
cout<<"\t#"<}
voidAccount:
:
show()const{cout<"<voidAccount:
:
error(conststring&msg)const{
cout<<"Error(#"<"<}
//SavingsAccount类相关成员函数的实现
SavingsAccount:
:
SavingsAccount(constDate&date,conststring&id,doublerate)
:
Account(date,id),rate(rate),acc(date,0){}
voidSavingsAccount:
:
deposit(constDate&date,doubleamount,conststring&desc){
record(date,amount,desc);
acc.chang(date,getBalance());
}
voidSavingsAccount:
:
withdraw(constDate&date,doubleamount,conststring&desc){
if(amount>getBalance()){
error("notenoughmoney");
}else{
record(date,-amount,desc);
acc.change(date,getBalance());
}
}
voidSavingsAccount:
:
settle(constDate&date){
doubleinterest=acc.getSum(date)*rate
/date.distance(Date(date.getYear()-1,1,1));
if(interest!
=0)record(date,interest,"interest");
acc.reset(date,getBalance());
}
voidCreditAccount:
:
withdraw(constDate&date,doubleamount,conststring&desc){
if(amount-getBalance()>credit){
error("notneoughcredit");
}else{
record(date,-amount,desc);
acc.change(date,getDebt());
}
}
voidCreditAccount:
:
settle(constDate&date){
doubleinterest=acc.getSum(date)*rate;
if(interest!
=0)record(date,interest,"interest");
if(date.getMonth()==1)
record(date,-fee,"annualfee");
acc.reset(date,getDebt());
}
voidCreditAccount:
:
show()const{
Account:
:
show();
cout<<"\tAvailablecredit:
"<}
//7_10.cpp
#include"account.h"
#include
usingnamespacestd;
intmain(){
Datedate(2008,11,1);
//建立几个账户
SavingsAccountsa1(date,"S3755217",0.015);
SavingsAccountsa2(date,"02342342",0.015);
CreditAccountca(date,"C5392394",10000,0.0005,50);
//11月份的几笔账目
sa1.deposit(Date(2008,11,5),5000,"salary");
ca.withdraw(Date(2008,11,15),2000,"buyacell");
sa2.deposit(Date(2008,11,25),10000,"sellstock0302");
//结算信用卡
ca.settle(Date(2008,12,1));
//12月份的几笔账目
ca.deposit(Date(2008,12,1),2016,"repaythecredit");
sa1.deposit(Date(2008,12,6),5500,"salary");
//结算所有账户
sa1.settle(Date(2009,1,1));
sa2.settle(Date(2009,1,1));
ca.settle(Date(2009,1,1));
//输出各个账户信息
cout<sa1.show();
cout<sa2.show();
cout<ca.show();
cout<cout<<"Total:
"<:
getTotal()<return0;
}