面向对象程序设计大作业(C )_第1页
面向对象程序设计大作业(C )_第2页
面向对象程序设计大作业(C )_第3页
面向对象程序设计大作业(C )_第4页
面向对象程序设计大作业(C )_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象分析/设计课程大作业

银行业务处理系统

13级软件学院测试班

1367004029

曾丹

1.需求分析

随着社会经济的发展,信息化程度的不断深入,银行的传统业务己愈来愈不

能满足银行客户的需要。

现今,人们的金融意识、科技意识己经有了很大的提高,在紧张忙碌的生活

中,己越来越来不习惯每月奔忙于各银行营业柜台之问去排队缴各种各样的费用

了;同时,各种经营单位如电信、移动、供电、煤气、自来水、证券等等一是为

了提高服务质量、方便客户,二是为了减轻自己日趋繁重的工作量,纷纷委托银

行为其开展代收代付业务:同时,随着我国加入世贸组织的日益临近,我国的银

行业将面临更加激烈的同业竞争,如何提供更多的金融产品和更优质的服务,如

何吸引更多的客户,如何利用计算机技术加强银行帐户信息管理、进行银行业务

再造,提高银行的工作效率和业务竞争能力是摆在各家银行面前的一个迫切需要

解诀的问题。

近几年来,各商业银行加快了与社会各业的合作,利用自身的网点优势和业

务特点,为其提供各种高效、快捷的代收代付业务,也就是中间代理业务,目前

以与广大人民群众生活密切相关的各项缴费业务如水电费、电话费、手机费等代

收业务为主,这些业务开展方式多种多样,但一般都离不开计算机的高效管理支

持。

随着代理业务不断发展,业务品种越来越多,各项业务做法互有差异,这就

对银行的电子化水平和相应的管理水平提出了更高的要求。如何利用电子化的手

段构建一个高效统一的、通用灵活的系统来管理各种各样的业务,是每个商业银

行所要研究的课题。支持决策系统的,需要在数据库的基础上,进行联机分析处

理,每次处理的数据量大,响应时间长。

特别是银行每天要处理大量的存取款事件,做好存取款是银行工作重要的环

节,然而要有效处理必须要有良好的程序和数据管理系统来建立一个良好的软件

系统来实现快速、有效、准确、安全的处理银行事物。

主要用于银行的储蓄卡管理系统,它可以帮助我们有效、准确、并且高效实

现的完成存取事件。此系统操作方便效率、安全性高,只要客户开户并设定好密

码就可以轻松的实现存取款。

系统实现的主要有储蓄卡开户管理、存取款管理、用户查询历史数据显示、

注销等功能。

储蓄卡开户管理模块:卡号、姓名、开户金额、身份证号、地址、电话、密

码、确认密码和保存组成。(开户金额必须是数字,密码和确认密码必须一样是

六位数字)

*注销模块:一旦注销该卡号就不存在且余额提醒你取出。

通过该银行账户管理系统地运行,使办公人员可以轻松快捷的完成对账户管

理的任务,提高账目管理效率,使银行的账目管理工作系统化、规范化、自动化。

该银行帐目管理信息系统,优点是设计过程思路清晰、模块划分简洁,设计

各阶段分工明确。经过实践证明,该划分是合理的,极大得提高了本系统的实现。

2.UML静态建模表示

2.1用例图

银行"务处理系统UML用例图

2.2类图

consumer

-id

YH

_name*

-number

account

-in

acnum

~company+存饯<>

-address+账

—passwd号

+账

退

-money+统

-consumer+户<>

存隹7T…载

+

+修改密码()+存

+取钱()

银行业务处理系统对象类图

3.UML动态建模表示

3.1序列图

a.储户开户过程序列图

b.储户登录过程序列图

c.储户注销过程序列图

3.2协同图

开户

口和修改定码

银行业务处理系统怖同图

3.3状态图

UML银行业务处理系统状态图

4.UML物理架构建模表示

4.1组件图

4.2配置图

敏捷.士取者更

账号恬意

4户右户造

开户至理

登录心理

注销处理

9行业*系统卬・1?1

5.系统总体框架

5.1框架图

VVVVV

5.2数据流图

银行业务处理系2檄据流程图

5.3实体关系图

身份证号地址公司电话账号

身份证号

姓名

开户登录

密码

开户页面登录页面:王俏见面

怵号

金额电话公司账q注稍结果

银行业系统实体关系图

I

6.模块设计与分析

储蓄卡开户管理模块:

6.1登录页面

输入卡号和密码,根据用户输入的卡号和密码,到后台文件查询,若正确则

登录成功,并保存卡好信息已备后用。

若卡号存在和密码不匹配或无该卡号已经注销,提示该卡号已存在或已注

销,保持界面三次不变等待用户的重新输入。

6.2主界面页面

主要导航栏有:欢迎使用储蓄卡管理(存款、取款、修改密码、转账功能、

注销退出)

6.3储蓄卡开户页面

提供开户界面,由用户输入新储蓄卡的所有信息,将该信息保存到文件中,

并将开户金额作为该卡的第一次存款记录存人文件。

6.4存钱页面

从登录界面得到卡号,并提供数据输入界面,等待用户的输入存款金额。从

后台数据库中找到该用户余额记录,修改余额,并将该存款事件的相应信息写人

数据库,同时将存钱的金额显示在页面上。

6.5取款页面

从登录界面得到卡号,并提供数据输入界面,等待用户输入取款金额,如果

取款金额大于该用户卡上的余额则不能取款,或者将新的余额写人文件,并将本

次取款事件写入文件同时将取钱的金额显示在页面上…

6.6注销页面

从关闭文件,状态为注销,最后关闭整个系统。

列举取款模块进行分析:

voidconsumer::fetchmoney()

(

floatm;

charch;

do

(

cout«endl<<”输入取款金额:

cin»m;

while(m<=0)

(

cout<〈”请输入正确的数字!“<<endl;

cout«"-*";

cin»m;

)

if(money<m)

(

cout<<”对不起,你的余额不足!""endl;

)

else

{money=money-m;

cout<<endl<<”操作成功,请收好钱!”

«endl;

)

cout<<”是否要继续该项操作:(Y/N)"

«endl;

cout«,,->";

cin»ch;

while(ch!='n'&&ch!=N&&ch!='Y,&&ch!=V)〃选择错误时判定

(

cout«',->n;

cin»ch;

}

}while(ch=='y'||ch=='Y');

}

在取款页面中,输入取款金额并对取款金额与存款余额进行比较,如果取款金额

小于零,请输入正确的数字;如果取款金额大于存款金额,对不起,您的余额不

足;如果取款金额小于存款余额的话就执行,并保存记录。

7.类的设计与分析

7.1consumer类

classconsumenpublicYH//用户类,继承银行类的属性

(

public:

friendclassYH;

consumer(intid,stringName,intNumber,doubleIN,stringCompany,string

Address,stringPassword,floatm)

(

ID=id;name=Name;number=Number;in=IN;company=Company;address=Addres

s;money=m;passwd=PassWord;

)

consumer(){ID=0;name=,0,;number=0;in=0;company='0';address=,0,;money=0;p

asswd='O';}

intget_id(){returnID;}

voidsavemoneyO;//取钱

stringget_passwd(){returnpasswd;}//取得密码

voiddisplay();

voidfetchmoneyO;〃取钱

voidchange_passwd();

voidadd_money(float);〃计算余额

voiddec_money(float);〃计算余额

floatget_money();〃卡卡转帐

private:

intID;〃开户帐号

stringpasswd;//用户密码

stringname;//用户姓名

floatmoney;〃开户金额

intnumber;stringcompany;stringaddress;doublein;

);

I-@consumerclasses

9*15consumer

♦add_money(floatx)

♦change_passwdO

♦consumerfintid,stringName,intNumber,doubleIN,stringCompany,stringAddress,stringPassword,floatm)

♦consumerf)

♦dec_money(floatx)

♦displayO

♦fetchmoneyQ

♦getJdQ

♦get_money()

•get_passwdO

♦savemoneyO

aaddress

的company

gID

ain

amoney

gname

gnumber

曲passwd

comsumer类说明表

名称属性说明

ID数据成员用户账户数据

name数据成员用户姓名

money数据成员用户首次金额

in数据成员用户身份证号

address数据成员用户地址

number数据成员用户电话

Passwd数据成员用户密码

savemoneyO成员方法存钱

fetchmoney()成员方法取钱

change_passwd()成员方法修改密码

get_money()成员方法卡卡转账

7.2YH类

classYH〃银行类

(

public:

voidset_account();//银行开户功能

voiddel_account();〃注销账户功能

voidtransfer(int);//转账功能

voidenter_account();〃进入用户个人信息功能

oidaddmoney(int,float);〃存款功能

voidexitYH();//退出系统

voidfunctionshow();

voidsave();

voidload();//功能界面

protected:

consumer*account[20];

staticintacnum;//账户数

);

自VYH

♦addmoneyfintfloaty)

令delaccountO

.enteraccountQ

♦exitYHO

♦functionshowQ

♦loadQ

♦savefl

.setaccountO

.transfer(intx)

2gaccount

acnum

06Globals

♦mainQ

■:CassView|囿FileVievZ

YH类说明表

名称属性说明

acnum数据成员账户数

set_account()成员方法开户功能

del_account()成员方法注销账户功能

transfer()成员方法转账功能

functionshow()成员方法主界面显示功能

addmoney()成员方法存钱功能

exitYH()成员方法退出系统功能

8.程序源码

consumer.cpp

#include<iostream>

#include<string>

#include<fstream>

usingnamespacestd;

classconsumer;

classYH//银行类

public:

voidset_account();〃银行开户功能

voiddel_account();〃注销账户功能

voidtransfer(int);〃转账功能

voidenter_account();〃进入用户个人信息功能

voidaddmoney(int,float);〃存款功能

voidexitYH();//退出系统

voidfunctionshow();

voidsave();

voidload();//功能界面

protected:

consumer*account[20];

staticintacnum;//账户数

);

classconsumenpublicYH〃用户类,继承银行类的属性

(

public:

friendclassYH;

consumer(intid,stringName,intNumber.doubleIN,stringCompany,string

Address,stringPassword.floatm)

ID=id;name=Name;number=Number;in=IN;company=Company;address=Addr

ess;money=m;passwd=PassWord;

)

consumer(){ID=0;name=,0';number=0;in=0;company-0,;address-0,;money=0

;passwd='O';}

intget_id(){retumID;}

voidsavemoney();//取钱

stringget_passwd(){returnpasswd;}//取得密码

voiddisplay();

voidfetchmoney();〃取钱

voidchange_passwd();

voidadd_money(float);〃计算余额

voiddec_money(float);〃计算余额

floatget_money();〃卡卡转帐

private:

intID;〃开户帐号

stringpasswd;//用户密码

stringname;//用户姓名

floatmoney;〃开户金额

intnumber;stringcompany;stringaddressjdoublein;

);

voidYH::save()

{ofstreamofile("bankdat.dat",ios::out);//以输出方式打开文件

ofstreamoutfile("bankdat.dat",ios::out);〃以输出方式打开文件bankdat.dat接

收从内存输出的数据

intn=0;

outfile«acnum«"

for(n=0;n<acnum;n++)

{outfile«account[n]->ID«"";〃把信息写入磁盘文件bankdat.dat

outfile«account[n]->money«"

outfile«account[n]->name«"

outfile«account[n]->passwd«"

outfile«account[n]->number«"

outfile«account[n]->company«"

outfile«account[n]->address«"

outfile«account[n]->in«"

)

outfile.close();

)

/*读入用户信息功能实现7

voidYH::load()

{ifstreaminfile("bankdat.dat",ios::in);〃以输入方式打开文件

if(!infile)

{cerr<v"读取错误,无资料中!"v<endl;

return;

)

intn=0;

intid,m;

stringnam,passw;intnumberjstringcompanyjstringaddress;doublein;

infile»acnum;

for(n=0;n〈acnum;n++)〃全部读入

{infile»id;//从磁盘文件bankdat.dat读入信息

infile»m;

infile»nam;

infile»passw;

infile»company;

infile»number;

infile»address;

infile»in;

account[n]->passwd;

consumer*acc=new

consumer(id,nam,number,in,company,address,passw,m);〃每读入一^n开辟

一段内存

account[n]=acc;//赋值首地址

)

infile.close();

cout«"系统正在正常运行,您可以办理以下业务:"«endl;

)

/*转账功能实现*/

voidYH::transfer(intx)

{intid;

cout<<"请输入帐号:";

cin»id;

intflag=1;

inti=0;

while((ivacnum)&&(flag))//查找要转入的账号

{

if(id==account[i]->get_id())flag=0;elsei++;

)

if(flag)

coutvv"帐号不存在!"vvendlv<endl;

return;

)

floatb;

cout〈vendlv<"请输入你要转帐的金额:";

cin»b;

while(b<=0)

(

cout<v"请输入正确的数字!"<<endl;

cout«"->";

cin»b;

)

if(account[x]->get_money()<b)〃调用友元类consumer的公有成员函

coutvv"对不起,金额不够!!"vvendl;

else{account[x]->dec_money(b);account[i]->add_money(b);}

coutvv"转账成功!!"vvendl;

return;

)

/*账户金额计算*/

voidconsumer::add_money(floatx)

{money=x+money;}

voidconsumer::dec_money(floatx)

{money=money-x;}

voidYH::addmoney(intx.floaty)

{account[x]->money=account[x]->money-y;

)

floatconsumer::get_money()

{returnmoney;}

voidmain()

{YHyh;

yh.functionshow();

)

/*主界面显不*/

voidYH::functionshow()

intn;

do

{system("cls");

load();

cout«"_____________________________________________

<endl;

cout«"|

|"«endl;

cout«"|1:开户

|"«endl;

cout«"|

|"«endl;

cout«"|2:账户登录

|"«endl;

cout«"|

|"«endl;

cout«"|3:账户注销

|"«endl;

cout«"|

|"«endl;

cout«"|4:退出系统

|"«endl;

cout«"|

|"«endl;

cout«"______________________________________________________

<endl;

cout«endl<v"请您输入你要进行的相应操作前的数字:"cvendl;

cout«"->";

cin»n;

while(n<1||n>4)

(

coutv<"您输入的数字有误!请重新输入…"<<endl;

cout«"-+";

cin»n;

)

switch(n)

(

case1:set_account();〃开户

break;

case2:enter_account();〃登录

break;

case3:del_account();〃注销

break;

case4:exitYH();〃退出

break;

)

cin.get();〃输入流类istream的成员函数

)

while(true);

)

voidYH::enter_account()

{intid;

coutvv"请输入帐号:";

cin»id;

intflag=1;

inti=0;//_page_break_

while((i〈acnum)&&(flag))//循环查找

(

if(id==account[i]->get_id())flag=0;elsei++;

)

if(flag)

coutvv”帐号不存在!"wendl;

return;

)

coutvc"请输入密码:";

stringpassw;

cin»passw;

if(passw!=ac8unt[i]->get_passwd())return;〃返回到登录界面

account[i]->display();cin.get();cin.get();

intn;

do{system("cls");

coutvv"请选择下列操作:"«endl;

coutvv"—"«endl:

cout«"||"«endl;

cout«"|1.查看账户信息|"«endl;

cout«"||"«endl;

cout«"|2.取款|"«endl;

cout«"||"«endl;

cout«"|3.存款|"«endl;

cout«"||"«endl;

cout«"|4.修改密码|"«endl;

cout«"||"«endl;

cout«"|5.转账|"«endl;

cout«"||"«endl;

cout«"|6.返回|"«endl;

cout«"||"«endl;

coutv<""<<endl:

cout«"-*";

cin»n;

switch(n)

{case1:account[i]->display();break;

case2:account[i]->fetchmoney();save();break;//M2-5功能,每执行一次调用

一次save函数,重新写入数据

case3:account[i]->savemoney();save();break;

case4:account[i]->change_passwd();save();break;

case5:transfer(i);save();break;

case6:return;

}cin.get();cin.get();

)

while(1);

)

voidYH::set_account()

intid;

stringnam;

stringpassw;

floatm;

stringcompany;stringaddress;intnumber;doublein;

coutw"请输入开户账号:"«endl;

cin»id;

cout<v"请输入开户人姓名:"<vencH;

cin»nam;

coutvc"请输入开户密码:"«endl;

cin»passw;

coutw"请输入存入金额:"vvendl;

cin»m;

cout<<"请输入开户人电话:"vvendl;

cin»number;

coutw"请输入开户人公司:"«endl;

cin»company;

coutw"请输入开户人地址:"wench;

cin»address;

coutw"请输入开户人身份证号码:"«endl;

cin»in;

while(m<=0)

(

cout<<"请输入正确的数字!"<vendl;

cin»m;

)

consumer*acc=new

consumer(id,nam,number,in,company,address,passw.m);

account[acnum]=acc;

cout<<"您好,你已开户成功,请牢记您的账号和密码,注意账号安全!

"«endl«endl;

acnum++;

save();

cin.get();

return;

)

voidYH::del_account()

intid;

cout«endl<<"请输入您要注销的帐户号:";

cin»id;

intflag=1;

inti=0;

while((i<acnum)&&(flag))//循环查找

(

if(id==account[i]->get_id())

(

flag=0;

)

else

(

i++;

)

)

if(flag)

(

coutvv"对不起,你输入的该帐号不存在或有误,请重新输入!"wendl;

return;〃返回到登陆界面

)

for(intj=i;j〈acnum;j++)〃所有被删号后的数据重新存储

account[j]=accountO+1];

)

account[acnum-1]=NULL;

acnum--;//账号总数自减一次

cout<<"您好,您的账号已成功注销!"«endl«endl;

save();

cin.get();

return;

)

voidconsumer::change_passwd()

(

stringpwd.repwd;

coutvv"请输入新密码:";

cin»pwd;

coutvv"请确认新密码:

cin»repwd;

if(pwd!=repwd)

coutvc"对不起,您输入的两次密码不一致,按输入键返回上一层菜单!"vvendl;

else

cout<<"您好,您的密码已修改成功,请牢记并注意账号安全!"<<endl;cin.get();

)

voidconsumer::fetchmoney()

(

floatm;

charch;

do

(

cout«endl<〈"请输入您的取款金额:"vv"¥>"«endl;

cin»m;

while(m<=0)

(

coutvv"请您输入正确的金额!"vvendl;

cout«"-^";

cin»m;

)

if(money<m)

coutvv"对不起,您的余额不足!"vvendl;

)

else

{money=money-m;

cout«endlv〈"操作成功,请拿好您的钱!”

«endl;

)

coutvv"是否要继续该项操作:(Y/N)"

«endl;

cout«"^";

cin»ch;

while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')//选择错误时判定

(

cout«"^";

cin»ch;

)

}while(ch=='y'||ch=='Y');

)

voidconsumer::savemoney()〃存钱函数功能实现

floatc;

charch;

do

cout<vendl«"请输入要存入的金额:"<<"¥>"<vendl;

cin»c;

while(c<=0)

(

coutv<"对不起您输入的金额错误,请重新输入!"vvendl;

cout«"-^";

cin»c;

)

money=money+c;

coutv<"操作已成功!"<vend;

coutvv"是否要继续该项操作:(Y/N)"«endl;

cout«"->";

cin»ch;

while(ch!='n'&&ch!='N'&&ch!=,Y,&&ch!='y')

(

coutvv"-";

cin»ch;

)

}while(ch=='y'||ch=='Y');

}

intYH::acnum=O;

voidconsumer::display()〃用户信息界面

{system("cls");

coutv<""〈vendI;

cout«"||"«endl;

cout«"|用户姓名:"«name«endl;

cout«"||"«endl;

cout«"|帐号:"«ID«endl;

cout«"||"«endl;

cout«"|余额:"vcmoneyvvendl;

cout«"||"«endl;

cout«"|返回(Enter键)|"«endl;

cout«"||"«endl;

cout«""«endl:

cout«"->";

)

voidYH::exitYH()〃退出系统

{

coutv<endl«"感谢您对XX银行的支持,欢迎下次光临!"<<endl;

exit(O);

)

9.程序截图

d曲S3

GQ

AaBb(AaBkAaBb(.丛褪

6麓副舌,更改时噌

G6

AaBb(AaBtAaBbC

」标英1副近鬟星改衽式

Q•--□©z#■

aBtAaBht

e,・;s-

Q,7口口。>>。《»

I同园易/iWO%O

境,开始IR6W」面向对象136700402g曾丹llflgF、面向对象13670040...41367004029曾丹[兼.国当弧口②3。5

G6

AaBb(AaBtAaBbC

」标英1副近鬟星改衽式

Q•--□©z#■

aBtAaBht

e,・;s-

Q,7口口。>>。《«

I同园易/iWO%O

境,开始IR6W」面向对象136700402g曾丹llflgF、面向对象13670040...41367004029曾丹[兼.国当丽1口②3。56

用开始|A6W」面向对象136700402g曾丹ll.F、面向对象13670040...闻1367004029曾丹[兼.国&飞囱口jQ0:56

136700402照丹-MicrosoftWord

HF:\面向对塞1367004029言丹'银行业务处理系tg'cgg”.”•&Q

谓选择下列操作:

iBb(AaBkAaBbC,丛况

1.查看账户信息色J后毁1副标翌,更设柱式端期

2-取款

-4.修改密科

:5.转账

\

!6.返回

00,,.AM8__________■*•.•WW

.•,■••»••••―■••••far•・,・•b■*T.O«

=**i-u»$”>3aajM>i30j»■经三一■,♦

BEej1glMmenrnm."■,snrma■,r即。./

员廊44/44字数:3,785,0英语(古国)|盾入

2开始|B号H,银行业务处理录行|间13670M02g曾丹』..面向对象13670040.S3&:囱口与力05g

画u可,9v1367004029曾丹信属模式]•MicrosoftWordD尊阳

c"窜:\面向对象1367004029言丹'银行业务处理系♦\con<3.r•■・G。

:4况

iBb(AaBtAaBbC

1.查看账户信息--SSi副标饕_sems:埼

.取款

2槎式

3.存款

4.修改密码

一;4-♦

:

5.转账

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论