文档库 最新最全的文档下载
当前位置:文档库 › 银行账户管理系统

银行账户管理系统

综合程序课程设计说明书课程设计名称: 12级综合程序课程设计报告

课程设计题目:银行账户管理系统

学院名称:信息工程学院

专业:电子信息工程班级:

学号:姓名:

评分:教师:

20 15 年 03 月 20 日

综合程序课程设计任务书

20 14 -20 15学年第 2 学期第 1 周- 2周

注:1、此表一组一表二份,课程设计小组组长一份;任课教师授课时自带一份备查。

2、课程设计结束后与“课程设计小结”、“学生成绩单”一并交院教务存档。

随着社会经济的发展,信息化程度的不断深入,计算机的广泛运用,为了满足新形势下银行客户的需求,使用计算机来进行银行账户的管理是社会发展的新常态。

本文主要介绍一种以C++为系统描述语言,采用自顶向下的的设计方法,通过类来实现相应操作的一种银行账户系统。该系统具有开户、用户信息存储、查询、转账、取款等功能。较之其他系统,具有快速、易操作、安全性好等特点。

关键词:银行账户管理系统 C++ 类

第一章设计要求 (1)

第二章系统的组成及设计的原理 (2)

2.1系统的组成 (2)

2.2表的信息结构 (3)

第三章概要设计 (5)

3.1基本功能设计思路 (5)

3.2程序框图 (5)

第四章详细设计 (6)

4.1类的定义 (6)

4.2银行账户系统其他功能的实现 (8)

4.3读取和保存 (18)

4.4联名账户的实现 (20)

第五章调试及测试分析 (21)

5.1调试程序的方法和技巧 (21)

5.2系统运行结果 (21)

5.3调试中出现的故障 (25)

第六章结论 (27)

第七章参考文献 (28)

附录 (29)

附录一:详细程序及注释 (29)

附录二:联名账户管理程序(节选) (43)

第一章设计要求

设计一个银行账户管理程序,账户的信息有账号(唯一)、姓名、余额、身份证号码、电话号码,允许用户进行如下操作:开户、销户、存款、取款、转账、查询,一个用户可以有多个户头,账户的数值没有上限。

基本要求:

程序运行时,可以由用户选择进行何种操作,开户操作要求输入用户信息后自动获取账号,用户销户后账号被回收,并且该账号可以继续分配给其它账户,不允许用户透支,根据姓名或账号可以进行用户的信息查询,所有的账户信息应存放到一个文件中,可以随时的访问和更新。

选作内容:

在上述程序的基础上,添加联名账户(一个联名账户有两个拥有者)的管理。

第二章系统的组成及设计的原理

2.1系统的组成

通过对该银行账户管理系统的需求进行分析,从增强系统的可维护性以及保密性的角度入手,整体上计划采用两个类,即zhgl类和consumer类来实现。定义zhgl为基类,定义consumer类为zhgl的派生类、使其的访问属性为public。zhgl类用来完成功能显示、开户、销户和用户登录功能;consumer类用来存放账户基本信息,进行查询、存款、取款、密码修改和转账操作。除此之外还有如下子函数组成。

void kaihu(); //普通账户开户

void shanchu(); //删除账号

void zhuanzhang(int ); //转账

void denglu(); //登陆账号

void addmoney(int,float);

void exitzhgl(); // 退出系统

void functionshow();

void save(); //保存

void qishi(); // 功能界面

void load(); //载入

void display();

void qumoney(); //取钱

void change_passwd(); //改密码

void b_money(float); //被转账者

void a_money(float); //转账者

void c_money(float); //联合被转账者

void d_money(float); //联合转账者

float get_money(); //卡卡转帐

void search();//查询

void cunmoney();// 存钱

2.2表的信息结构

1.普通账户信息表

2.联名账户信息表

3.用户进行存取的操作表

4.用户进行转账的操作表

5.用户进行密码修改的操作表

3.1基本功能设计思路

通过对该银行账户管理系统的需求进行分析,从增强系统的可维护性以及保密性的角度入手,整体上计划采用两个类,即zhgl类和consumer类来实现。定义zhgl为基类,定义consumer类为zhgl的派生类、使其的访问属性为public。zhgl类用来完成功能显示、开户、销户和用户登录功能;consumer类用来存放账户基本信息,进行查询、存款、取款、密码修改和转账操作。定义一个account指针,用来指向已开户的账户,并获得该账户的信息,用来执行存、取、转账等操作。并用fstream指令进行文件的读写操作,实现将账户所有者的信息存放到一个文件中,并可以随时的访问和更新。

程序运行后用户可根据界面提示自行操作。由于要实现界面的回复,在控制用户的循环操作时可以采用do while匹配的循环结构。

3.2程序框图

4.1类的定义

4.1.1 zhgl类的定义

class zhgl

{

public:

void kaihu(); //普通账户开户

void shanchu(); //删除账号

void zhuanzhang(int ); //转账

void denglu(); //登陆账号

void addmoney(int,float);

void exitzhgl(); // 退出系统

void functionshow();

void save(); //保存

void qishi(); // 功能界面

void load(); //载入

protected:

static int num; //账户数

};

consumer *account[20];

4.1.2consumer类的定义

class consumer:public zhgl

{

public:

friend class zhgl;

consumer(int id,string Name,string PassWord,float m,string Identification,string PhoneNumber)

{

ID=id;

name=Name;

money=m;

passwd=PassWord;

identification=Identification;

phonenumber= PhoneNumber;

}

string get_passwd() // 取得密码

{

return passwd;

}

string get_name()

{

return name;

}

int get_id() //返回账号

{

return ID;

}

void display();

void qumoney(); //取钱

void change_passwd(); //改密码

void b_money(float); //被转账者

void a_money(float); //转账者

void c_money(float); //联合被转账者

void d_money(float); //联合转账者

float get_money(); //卡卡转帐

void search();//查询

void cunmoney();// 存钱

private:

int ID; //开户帐号

string passwd; // 用户密码

string name; // 用户姓名

string identification;//身份证

string phonenumber;//电话号码

float money; //初始资金

};

4.2银行账户系统其他功能的实现

4.2.1账户开户

账户开户使用cin接收键盘中输入的数据,并使用指向类对象的指针,将接收的值传回。

void zhgl::kaihu() //开户的实现

{

int id;

string nam;

string passw;

string identif;

string phonen;

float m;

cout<

cin>>id;

cout<

cin>>nam;

cout<

cin>>identif;

cout<

cin>>phonen;

cout<

cin>>passw;

cout<

cin>>m;

while(m<=0)

{

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

cin>>m;

}

consumer * acc = new consumer(id,nam,passw,m,identif,phonen);

account[num] = acc;

system("cls");

cout<<"开户成功!!"<

num++;

save();

return;

}

4.2.2账户注销

注销账户时先要将输入的账户号与已开户的账户进行比对,匹配上后,将账户号按位依次赋空,实现账户注销。

void zhgl::shanchu() //注销账号的实现

{

int id;

cout<

cin>>id;

int flag = 1;

int i = 0;

while((i

{

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

{ flag = 0; }

else

{ i++; }

}

if(flag)

{

cout<<"帐号不存在!"<

return;

}

for(int j=i;j

{

account[j] = account[j+1];

}

account[num-1]=NULL; //按位依次赋空实现销户num--;

cout<<"注销成功!!"<

return;

}

4.2.3 账户登录

首先读取bankdata.TXT保留的账户信息,首先对银行账号进行匹配,匹配上后再对密码进行匹配,在登陆后,会有2级菜单供用户选择自己想要的操作,能够查询,取款,存款,转账,修改密码和返回主菜单。

void zhgl::denglu() //登陆账号的实现

{

int id;

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

cin>>id;

int flag = 1;

int i = 0;

while((i

{

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

flag = 0;

else

i++;

}

if(flag)

{

cout<<"帐号不存在!"<

return; }

cout<<"请输入密码:";

string passw;

cin>>passw;

if(passw!=account[i]->get_passwd())

return;

int n;

do{

cout<<"请选择你要进行的操作:"<

"<

cin>>n;

switch(n)

{case 0: account[i]->search();break;

case 1: account[i]->display();break;

case 2: account[i]->qumoney();save();break;

case 3:account[i]->cunmoney();save();break;

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

case 5:zhuanzhang(i);save();break;

case 6:return;

}

}

while(1);

}

4.2.4退出系统

void zhgl::exitzhgl()

{

cout<

exit(0); }

4.2.5查询其他用户信息

void consumer::search()

{

string ch;

int ID;

int flag=1;

int Q=0;

cout<

cin>>ID;

while((Q

{

if(ID==account[Q]->get_id())

{ flag = 0; }

else

{ Q++;}

}

if(flag)

{

cout<<"帐号不存在!"<

return;

}

ch=account[Q]->get_name();

cout<<"对应的用户名为:"<

}

4.2.6查看本用户信息

用cout输出本用户的基本信息

void consumer::display()

{system("cls");

cout<<"**********************************"<

cout<<"*"<

cout<<"* 用户姓名:"<

cout<<"* 身份证号码:"<

cout<<"* 电话号码:"<

cout<<"* 帐号:"<

cout<<"* 余额: "<

cout<<"**********************************"<

}

4.2.7取款

用户选择取款功能后,先提示用户输入取款金额,取款金额应大于0元,所以要先对输入的金额进行判断,当其大于0后再账户余额进行比较。若输入金额大于账户余额,提示用户账户余额不足;若输入金额小于等于账户余额,执行取款操作,并相应的减去取款金额。执行完操作后询问用户是否继续当前操作。

void consumer::qumoney() //取钱的实现

{

float m;

char ch;

do

{

cout<"<

cin>>m;

while(m<=0)

{

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

cout<<"$>";

cin>>m;

}

if(money

{

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

}

else

{

money=money-m;

cout<

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

cout<<"$ >";

cin>>ch;

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

{

cout<<"$ >";

cin>>ch;

}}

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

}

4.2.8存款

存款功能和取款功能类似,用户选择存款功能后,先提示用户输入存款金额,存款金额应大于0元,当存款金额大于0后执行存款操作,并相应的账户余额应为之前的金额加上存款金额。执行完操作后询问用户是否继续当前操作。

void consumer::cunmoney() //存钱的实现

{

float c;

char ch;

do

{

cout<"<

cin>>c;

while(c<=0)

{

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

cout<<"$>";

cin>>c;

}

money=money+c;

cout<<"操作已成功!"<

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

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表示第二次输入的密码,完成新密码输入后,当pwd和repwd 时将新密码赋给passwd,否则提醒用户重新输入新密码。

void consumer::change_passwd() //变更密码的实现

{

string pwd,repwd;

cout<<"请输入新密码:";

cin>>pwd;

cout<<"请再输入一次新密码:";

cin>>repwd;

if(pwd!=repwd)

cout<<"你输入的两次密码不一样,请重新输入!"<

passwd=pwd;

cout<<"密码修改成功,请牢记!"<

}

4.2.10转账

转账时,应先获得被转账者的账户,确认该账户存在后,还需对转账金额进行判断,规定转账金额必须大于0元。完成转账功能还需借用两个子函数来对转账者和被转账者的账户金额进行操作。这里用a_money、b_money分别对转账者和被转账者的账户余额进行操作。

相关文档