C++课程设计面向对象课程设计报告材料银行管理系统完整报告材料.docx
《C++课程设计面向对象课程设计报告材料银行管理系统完整报告材料.docx》由会员分享,可在线阅读,更多相关《C++课程设计面向对象课程设计报告材料银行管理系统完整报告材料.docx(21页珍藏版)》请在冰豆网上搜索。
C++课程设计面向对象课程设计报告材料银行管理系统完整报告材料
软件工程学院
实验报告
面向对象课程实践(银行存取款系统)
****************************
姓名徐凯斌
院(系)软件工程学院
专业年级英语+软件15班
小组第四组
学号2013213903
教室软件工程实验室(开发)B144
日期2014年9月15日-2014年9月19日
1、需求与功能分析2
2、系统总体框架2
3、模块设计与分析4
4、类和结构的设计与分析6
5、特色算法分析7
6、功能测试10
7、存在的不足与对策10
8、程序源代码17
9、心得体会17
一、
需求与功能分析
使用面向对象程序设计思想设计银行存取款管理系统,它可以帮助我们有效、准确的实现完整存取事件。
此系统操作方便效率、安全性高,只要客户开户并设定好密码就可以实现存取款。
系统实现的主要功能模块有开户管理、存款管理、取款管理、销户、信息查询和退出等功能。
1.开户管理:
用户自行输入用户名、密码、开户金额等即可开户成功。
开户成功后会为用户生成一个用户账号。
2.存款管理:
用户进入系统界面后跟据提示输入存款的用户账号,进行密码校验;密码确认成功后,输入相应存款金额即可。
3.取款管理:
用户进入系统界面后根据提示输入取款的用户账号,进行密码校验;密码确认成功后,输入相应取款金额即可(如取款金额小于等于余额,则提款成功,否则提示余额不足)。
4.销户管理:
用户可根据自身需求进行销户处理。
用户根据提示输入销户的用户,进行密码校验;密码确认成功后,再次提示是否要销户(0销户,1不销户),输入0后,才能正常销户,销户成功后,原用户将不能继续实现存取款功能。
5.账户信息查询管理:
根据提示输入查询用户账号,进行密码校验;密码确认成功后,即可显示用户名、号、余额以及用户状态(正常或销户)。
6.退出功能:
用户在完成所需功能实现后,根据指令退出程序。
二、系统总体框架
三、模块设计与分析
储蓄卡开户管理模块:
3.1主界面页面
主要导航栏有:
欢迎使用储蓄卡管理(开户、销户、存款、取款、账户信息、退出)
3.2开户页面
输入卡号和密码,再输入开户金额。
开户成功后,系统会分配一个六位数的账号给用户(第一个账号为默认为100000)
3.3存钱页面
从登录界面得到卡号,并提供数据输入界面,等待用户的输入存款金额。
从后台数据库中找到该用户余额记录,修改余额,并将该存款事件的相应信息写人数据库。
系统将显示存款成功。
3.5取款页面
从登录界面得到卡号,并提供数据输入界面,等待用户输入取款金额,如果取款金额大于该用户卡上的余额则显示余额不足。
3.6账户信息页面
从登录界面得到的卡号,并提供数据输入界面,输入密码后,显示出用户名,账户名,余额和用户状态信息。
3.7销户页面
选择销户选项,输入用户的账户号和密码后,系统会询问是否销户,输入0后,即销户成功。
3.8退出页面
从关闭文件,最后关闭整个系统。
列举取款模块进行分析:
intBank:
:
draMon(){
doublemoney=0;
Account*account=getAcoNum();
if(ps->state==0){
cout<<"\n该账户已销户,不能继续进行取款";
return0;
}
if(account!
=NULL&&pasCheck(account)){
cout<<"\n请输入取款金额:
";
cin>>money;
while(money>account->money){
inti=0;
cout<<"\n余额不足!
请输重新入有效的取款金额:
";
cin>>money;
if(i>=3&&money>account->money){
cout<<"\n金额输入无效次数已超过"<
<<"\n1.是2.否";
intj;
cin>>j;
if(j==1)
continue;
if(j==2){
cout<<"\n系统将自动跳转至系统首页\n";
break;
}
}
i++;
}
account->money-=money;
account->record[account->insert]-=money;
//char*ctime(consttime_t*timer);
account->insert++;
cout<<"\n取款成功.\n";
}
return0;
}
在取款页面中,若输入账户已销户,则输出:
该账户已销户,不能继续进行取款。
若存在该账户,输入取款金额并对取款金额与存款余额进行比较,如果三次都超过的话就输出:
金额输入无效次数已超过"<<3<<"次,是否继续输入",如果取款金额小于存款余额的话就执行,并保存记录。
四、类的设计与分析
1.Bank类
classBank主要制定用户的成员数据,并进行登录与保存功能:
画出Bank类的类图
相关代码:
classBank{
public:
Bank();
voidbankEntrance();
intcreAco();
intdeposit();
intdraMon();
intcloAco();
intinquir();
Account*getAcoNum();
boolpasCheck(Account*account);
~Bank();
private:
Account*head;
Account*ps;
Account*pEnd;
intcreAcoNum;
};
表1Bank类说明表
名称
属性
说明
Bank
构造函数
构建一个类成员
~Bank
析构函数
bankEntrance
数据成员
系统首界面
cloAco
数据成员
销户
creAco
数据成员
开户
deposit
数据成员
存款
draMon
数据成员
取款
inquir
数据成员
用户信息
pasCheck
数据成员
效验密码
getAcoNum
数据成员
账户信息的效验
2.Account结构
Account结构主要实现用户的各种功能:
画出Account结构的结构图:
Account结构
相关代码
structAccount{
std:
:
stringname;
intacoNum;
std:
:
stringpassWord;
doublemoney;
doublerecord[20];
intinsert;
intstate;
Account*right;
Account*left;
};
五、特色算法分析
1.Bank类中的pasCheck方法
功能:
输入密码并进行确认,如果密码确认三次失败,则退回主界面。
流程图:
暂无
代码:
boolBank:
:
pasCheck(Account*account){
stringpasWord;
inti;
cout<<"\n请输入您的密码:
";
cin>>pasWord;
for(i=0;i<3;i++){
if(account->passWord!
=pasWord){
cout<<"\n密码输入错误!
请您重新您的密码:
";
cin>>pasWord;
}
else
break;
}
if(i==3){
cout<<"\n密码输入错误次数已超过3次,系统将自动跳转至系统首页\n";
returnfalse;
}
returntrue;
}
六、功能测试
6.1首页:
图6-1:
6.2开户页面
图6-2:
6.3存款页面
图6-3:
6.4取款页面
图6-4
6.5账户信息页面
图6-5:
6.6销户页面
图6-6:
6.7退出页面
从保存数据并关闭文件,关闭整个系统。
图6-7:
七、存在的不足
暂无对策
八、程序源代码
//*********************************
//******Bank.h***************
//*********************************
structAccount{
std:
:
stringname;
intacoNum;
std:
:
stringpassWord;
doublemoney;
doublerecord[20];
intinsert;
intstate;
Account*right;
Account*left;
};
classBank{
public:
Bank();
voidbankEntrance();
intcreAco();
intdeposit();
intdraMon();
intcloAco();
intinquir();
Account*getAcoNum();
boolpasCheck(Account*account);
~Bank();
private:
Account*head;
Account*ps;
Account*pEnd;
intcreAcoNum;
};
//*********************************
//******Bank.cpp***************
//*********************************
#include"stdafx.h"
#include
#include"Bank.h"
#include"iostream"
#include
//#include"time.h"
//#include"stdio.h"
usingnamespacestd;
Bank:
:
Bank(){
head=NULL;ps=NULL;pEnd=NULL;creAcoNum=100000;
}
voidBank:
:
bankEntrance(){
inta=0;
cout<<"*****************************************************\n\n";
cout<<"***欢迎进入银行存取款系统***\n\n";
cout<<"*****************************************************\n";
while(a==0){
cout<<"\n请选择服务项目:
\n";
cout<<"***********************************************\n"
<<"**"<<""<<"1.开户"<<""<<"**"<<""<<"2.存款"<<""<<"**"<<""<<"3.取款"<<""<<"**\n";
cout<<"***********************************************\n"
<<"**"<<""<<"4.销户"<<""<<"**"<<""<<"5.信息"<<""<<"**"<<""<<"6.退出"<<""<<"**\n";
cout<<"***********************************************\n";
cout<<"";
cin>>a;
switch(a)
{
case1:
cout<<"**开户**";a=creAco();break;
case2:
cout<<"**存款**";a=deposit();break;
case3:
cout<<"**取款**";a=draMon();break;
case4:
cout<<"**销户**";a=cloAco();break;
case5:
cout<<"**信息**";a=inquir();break;
case6:
default:
cout<<"退出.\n";a=1;return;
}
}
cout<<"*****************************************************\n\n";
cout<<"***您的使用。
***\n\n";
cout<<"*****************************************************\n";
}
intBank:
:
creAco(){
stringname;
stringpassWord;
doublemoney;
cout<<"\n请输入用户名:
";
cin>>name;
cout<<"\n请输入密码:
";
cin>>passWord;
cout<<"\n请输入开户金额:
";
cin>>money;
Account*account=newAccount;
account->name=name;
account->passWord=passWord;
account->money=money;
account->acoNum=creAcoNum++;
account->state=1;
for(inti=0;i<20;i++)
account->record[i]=0;
account->insert=0;
if(head==NULL){
head=account;
pEnd=head;
pEnd->left=head;
pEnd->right=head;
cout<<"\n您的账号为:
"<acoNum<}
else{
ps=pEnd;
pEnd=account;
pEnd->left=ps;
ps->right=pEnd;
pEnd->right=pEnd;
cout<<"\n您的账号为:
"<acoNum;
}
return0;
}
intBank:
:
deposit(){
doublemoney;
Account*account=getAcoNum();
if(ps->state==0){
cout<<"\n该账户已销户,不能继续进行存款";
return0;
}
if(account!
=NULL&&pasCheck(account)){
cout<<"\n请输入存款金额:
";
cin>>money;
account->money+=money;
account->record[account->insert]+=money;
account->insert++;
cout<<"\n存款成功.\n";
}
return0;
}
intBank:
:
draMon(){
doublemoney=0;
Account*account=getAcoNum();
if(ps->state==0){
cout<<"\n该账户已销户,不能继续进行取款";
return0;
}
if(account!
=NULL&&pasCheck(account)){
cout<<"\n请输入取款金额:
";
cin>>money;
while(money>account->money){
inti=0;
cout<<"\n余额不足!
请输重新入有效的取款金额:
";
cin>>money;
if(i>=3&&money>account->money){
cout<<"\n金额输入无效次数已超过"<
<<"\n1.是2.否";
intj;
cin>>j;
if(j==1)
continue;
if(j==2){
cout<<"\n系统将自动跳转至系统首页\n";
break;
}
}
i++;
}
account->money-=money;
account->record[account->insert]-=money;
//char*ctime(consttime_t*timer);
account->insert++;
cout<<"\n取款成功.\n";
}
return0;
}
intBank:
:
cloAco(){
Account*account=getAcoNum();
inti;
if(pasCheck(account)){
cout<<"\n请确定是否要销户(0销户,1不销户):
";
cin>>i;
if(i==0){
account->state=0;
cout<<"\n销户成功.\n";
}
else
cout<<"\n销户取消\n.";
}
return0;
}
intBank:
:
inquir(){
Account*account=getAcoNum();
if(pasCheck(account)){
cout<<"\n用户名:
"<name
<<"\n号:
"<acoNum
<<"\n余额:
"<money;
if(account->state==1)
cout<<"\n用户状态:
"<<"正常\n";
else
cout<<"\n用户状态:
"<<"销户\n";
}
return0;
}
Account*Bank:
:
getAcoNum(){
intacoNum;
inti=0;
cout<<"\n请输入您的账号:
";
cin>>acoNum;
ps=head;
while(acoNum!
=ps->acoNum){
if(ps==pEnd&&ps->right==pEnd&&acoNum!
=ps->acoNum){
cout<<"\n账号输入错误!
请您重新输入您的账号:
";
cin>>acoNum;
ps=head;
i++;
}
ps=ps->right;
if(i==3&&acoNum!
=ps->acoNum){
intj;
cout<<"\n账号输入错误次数已超过"<
<<"\n1.是2.否";
cin>>j;
if(j==1)
continue;
if(j==2)
returnNULL;
}
}
returnps;
}
boolBank:
:
pasCheck(Account*account){
stringpasWord;
inti;
cout<<"\n请输入您的密码:
";
cin>>pasWord;
for(i=0;i<3;i++){
if(account->passWord!
=pasWord){
cout<<"\n密码输入错误!
请您重新您的密码:
";
cin>>pasWord;
}
else
break;
}
if(i==3){
cout<<"\n密码输入错误次数已超过3次,系统将自动跳转至系统首页\n";
returnfalse;
}
returntrue;
}
Bank:
:
~Bank(){};
//bankSystem.cpp:
定义控制台应用程序的入口点。
//*********************************
//******bankSystem.cpp***************
//*********************************
#include"stdafx.h"
#include"iostream"
#include
#include"Bank.h"
intmain()
{
Bank*bank=newBank();
bank->bankEntrance();
return0;
}
//*********************************
//******stdafx.h***************
//*********************************
九、心得与体会
此次的上机实验,我所属小组的项目是银行管理系统。
通过小组各成员的精确分工与合作关于本次实验的设计的银行存取款系统,完成如上。
通过小组的分工,各自完成各个部分的程序容,并进行整合通过实验,进一步掌握了面向对象的思路方法和容,另一方面通过小组合作,模拟了在工作中共同完成项目的过程,加强了成员之间的合作关系,但是,仍存在许多关于技术方面的不足之处有待提升,在今后的学习中仍应当努力加强,通过不断提升自己的