c++ 银行管理系统及报告

1.题目描述:

本代码为银行管理系统,整体分为管理员模式和普通用户模式:

(1)在管理员模式中能完成

①用户信息录入

②修改管理员密码

③修改指定账户信息

④信息管理业务

(2)在普通用户模式下,能完成注册和转账

在注册中用户必须输入必要的注册信息

在登录功能中将需要密码,登陆成功厚能实现

①存款 
②取款   ③转账  ④查询余额  
⑤修改个人信息(账号、用户名、密码、身份证号、电话)  ⑥显示账户信息

2.分析思路

(1)本银行管理系统下整体通过类来完成,以实现更好的封装性,每一个类对象即为一个独立的账户,在此对象中含有该账号的全部注册信息。

(2)使用链表动态开辟对象空间,以节省空间。

(3)将每个功能独立化,将其设置为单一函数如选择模式函数、注册函数、存款函数、取款函数、转账函数、修改信息函数、显示账户信息函数、显示余额函数。

(4)在设计函数时,将用户的所有误操作进行考虑,即使是用户存在误操作,也会人性化的给予提示,提醒用户再次输入正确操作,使程序更加完整、全面和人性化。

具体功能及结构如下所示:

3.输入:

根据操作指示输入1、2、3等序号以完成选择所需业务

4.输出:

输出引导用户的提示以及客户所要查询的信息

#include<iostream>

#include<string>

using namespace std;

class information

{

public :

string num ;//账号

string name;//用户名

string key;//密码

string ID;//身份证号

string tel;//电话号码

double money;//余额

information *next;//记录下一空间地址

};

int cheak_num(string str,information *head)//检查账号是否存在

{

int t=0;//记录该账号是否存在

information * p=head;

if(head==NULL)

t=0;

else

{

while(p->next!=NULL)//对已有账号进行遍历

{

if(p->num!=str)

p=p->next;

else

{t=1;

break;

}

}

if(t==0)

if(p->num==str)

t=1;

}

return t;//若账号已经存在则返回1,否则返回0

}

information * get_information (information *head)//录入信息

{

information *s,*p;

s=new information;

cout<<"请录入信息:"<<endl;

cout<<"账号:";

cin>>s->num;

cout<<"用户名:";

cin>>s->name;

cout<<"密码:";

cin>>s->key;

cout<<"身份证号:";

cin>>s->ID;

cout<<"电话号码:";

cin>>s->tel;

cout<<"余额:";

cin>>s->money;

cout<<endl<<"====================================信息录入成功==============================="<<endl;

while ( 1 )

{

char ch;

if( head==NULL )

{

head = s ;

//head->next=NULL;//头指针赋值

}

else

p->next = s ;                                             //将新结点插入已有链表的最后

cout<<"是否继续录入信息   是(1),(2)否";

cin>>ch;

while(ch!=‘1‘ && ch!=‘2‘)

{

cout<<"请重新输入是否继续录入 是(1)  否(2)";

cin>>ch;

}

if(ch==‘1‘)//选择“是”

{

p = s ;// p指向链表中最后的结点

p->next=NULL;

s=new information;

s->next=NULL;

cout<<"请输入注册信息:";

cout<<"账号:";

string str111;

cin>>str111;

int t;

t=cheak_num(str111,head);

while(t==1)            //对已有账号进行判断 ,直到新注册账号不存在为止

{

cout<<"账号已存在,请重新注册:";

cin>>str111;

t=cheak_num(str111,head);

}

s->num=str111;

cout<<"用户名:";

cin>>s->name;

cout<<"密码:";

cin>>s->key;

cout<<"身份证号:";

cin>>s->ID;

cout<<"电话号码:";

cin>>s->tel;

cout<<"余额:";

cin>>s->money;

cout<<endl;

}

else//选择“否”

{

s->next=NULL;

break;

}

cout<<endl<<"====================================信息录入成功==============================="<<endl;

}

return head;

}

void output_information (information *head)//显示所有账号信息

{

information *s;

s=head;

while(s->next!=NULL)

{

cout<<"账号:"<<s->num<<endl;

cout<<"用户名: "<<s->name<<endl;

cout<<"密码:"<<s->key<<endl;

cout<<"身份证号:"<<s->ID<<endl;

cout<<"电话:"<<s->tel<<endl;

cout<<"金额:"<<s->money<<endl<<endl;

s=s->next;

}

cout<<"账号:"<<s->num<<endl;

cout<<"用户名: "<<s->name<<endl;

cout<<"密码:"<<s->key<<endl;

cout<<"身份证号:"<<s->ID<<endl;

cout<<"电话:"<<s->tel<<endl;

cout<<"金额:"<<s->money<<endl;

}

int check_keys(string number,string keys,information *head)//检查账号是否存在且密码是否正确

{

int t=0;

information *p=head;

while(p->next!=NULL)

{

if(p->num!=number)

p=p->next;

else

{

if(p->key==keys)

{t=3;//账号存在且密码正确

break;

}

else

{t=2;//账号存在但是密码不正确

break;

}

}

}

if(t==0)

if(p->num==number)

if(p->key==keys)

t=3;//账号存在且密码正确

else

t=2;//账号存在但是密码不正确

return t;

}

void take_money(information * p)//取钱函数

{

double m;

cout<<"请输入提款金额:";

cin>>m;

if(m<=p->money)//判断是否超过账号余额

{   p->money=p->money-m;

cout<<"取款成功"<<endl;

}

else

{

while(m>p->money)//若取钱金额超过账户余额

{cout<<"余额不足,请重新操作"<<endl;

cout<<"请输入提款金额:";

cin>>m;

}

p->money=p->money-m;//对取现后的余额进行修改

cout<<endl<<"======================================取款成功=================================="<<endl;

}

}

void save_money(information *p)//存钱函数

{

double m;

cout<<"请输入存款金额:";

cin>>m;

p->money=p->money+m;//对所存入的账户余额修改

cout<<endl<<"======================================存款成功=================================="<<endl;

}

information*cheak_number(string number,information *head)//在管理员模式下或者是客户在正确输入密码后查找客户信息

{

int a=0 ;//标记账户是否存在

information *p=head;

while(p->next!=NULL)

{

if(p->num==number)

{ a=1;

break;

}

else

p=p->next;

}

if(p->num==number)

a=1;

if(a==0)

p=NULL;

return p;//返回所查找的客户地址信息

}

void move_money(information *p,information *head)// 转账函数                  p是正在登陆的账号地址

{

information *x;//记录所转账号地址

x=NULL ;

double m;//转账金额

string str;//转账账号

char ch ;//记录用户输入的是否继续转账决定

cout<<"请输入要转账的账号:";

cin>>str;

x=cheak_number(str,head);//记录下了所转账好的地址

while(x==NULL)//如果账户不存在

{

x=cheak_number(str,head);//记录下了所转账好的地址

cout<<"账号不存在,是否重新操作:(1)是  (2)否"<<endl;

cin>>ch;

if(ch==‘1‘)

{

cout<<"请重新输入要转账的账户:";

cin>>str;

}

else

break;

}

if(x!=NULL)//如果账户存在

{

cout<<"请输入转账金额:";

cin>>m;

while(p->money<m)

{cout<<"余额不足,请重新输入转账金额:"<<endl;

cin>>m;

}

x->money=x->money+m ;

p->money=p->money-m;

cout<<endl<<"=====================================转账成功================================"<<endl;

}

}

void revise_information(information *p)//"修改信息"

{

string str,str1;//记录用户账号信息

char ch;//记录用户决定

while(1)

{

cout<<"请选择要修改的信息  (1)账号  (2)用户名  (3)密码  (4)身份证号  (5)电话 (6)退出修改当前账户信息   ";

cin>>ch;

while(ch!=‘1‘&&ch!=‘2‘&&ch!=‘3‘&&ch!=‘4‘&&ch!=‘5‘&&ch!=‘6‘)//用户若输入业务已有误

{

cout<<"请重新输入有效的业务:";

cin>>ch;

}

if( ch==‘1‘)//修改账号

{

cout<<"请输入新账号:";

cin>>str;

p->num=str;

cout<<endl<<"====================================修改账号成功================================"<<endl;

}

else

if( ch==‘2‘)//修改用户名

{

cout<<"请输入新的用户名:";

cin>>str;

p->name=str;

cout<<endl<<"===================================修改用户名成功=============================="<<endl;

}

else

if( ch==‘3‘)//修改密码

{

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

cin>>str;

while(p->key!=str)

{

cout<<"与原密码不一致,请重新输入原密码:";

cin>>str;

}

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

cin>>str;

cout<<"请确认密码:";

cin>>str1;

while(str!=str1)

{

cout<<"与第一次输入不同,请重新设定:";

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

cin>>str;

cout<<"请确认密码:";

cin>>str1;

}

cout<<endl<<"===============================设定成功,请记好新密码=========================="<<endl;

}

else

if( ch==‘4‘)//修改身份证号

{

cout<<"请输入新身份证号:";

cin>>str;

p->ID=str;

cout<<endl<<"==================================修改身份证成功==============================="<<endl;

}

else

if( ch==‘5‘)//修改电话号码

{

cout<<"请输入新电话号码:";

cin>>str;

p->tel=str;

cout<<endl<<"==================================电话号码修改成功============================="<<endl;

}

else

break;//退出修改账户信息

}

}

void show_information(information*p)//显示当前账户信息

{

cout<<"账号:"<<p->num<<endl;

cout<<"用户名:"<<p->name<<endl;

cout<<"密码:"<<p->key<<endl;

cout<<"身份证号:"<<p->ID<<endl;

cout<<"电话:"<<p->tel<<endl;

cout<<"金额:"<<p->money<<endl;

}

void query_money(information *p)//显示当前账户余额

{

cout<<"您的余额为:";

cout<<p->money<<endl;

}

void choose(information *head)//普通用户登陆账号以及选择需要的业务

{

int t;

information *p;//p是用来记录所查找到的账号的地址的

string number,keys;//number 记录登陆账号 keys记录账密码

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

cin>>number;

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

cin>>keys;

t=check_keys(number,keys,head);       //t是用来记录是否存在账号以及密码是否正确的,若账号不存在则返回0,若账号密码错误返回2,账号存在且密码正确时返回3

while(t==0||t==2)//如果账号不存在或者是密码输入错误

{

if(t==2)//用户输入密码有误

{cout<<"密码输入错误,请重新输入账号及密码";

cout<<"账号:";

}

else//账号不存在

cout<<"账号不存在,请重新输入账号及密码,账号:";

cin>>number;

cout<<"密码:";

cin>>keys;

t=check_keys(number,keys,head);//调用判断密码 账号是否正确

}

cout<<endl<<"==================================普通用户登陆成功=============================="<<endl<<endl;

cout<<"请选择业务:(1)取钱 (2)存钱  (3)转账  (4)修改信息  (5)余额查询 (6)显示账号信息  (7)退出账号"<<endl;

p=cheak_number(number,head);       //记录所登陆的账号地址

char ch;      //记录用户所做的选择

cin>>ch;

while(1)

{

while(ch!=‘1‘&&ch!=‘2‘&&ch!=‘3‘&&ch!=‘4‘&&ch!=‘5‘&&ch!=‘6‘&&ch!=‘7‘)//用户若出入业务有误

{cout<<"请重新输入所需业务:(1)取钱 (2)存钱  (3)转账  (4)修改信息  (5)余额查询 (6)显示账号信息  (7)退出账号"<<endl;

cin>>ch;   //重新输入业务

}

if(ch==‘7‘)    //退出当前账户

break;

else

{

switch(ch)

{

case ‘1‘:take_money(p);break;          //取钱

case ‘2‘:save_money(p);break;          //存钱

case ‘3‘:move_money(p,head);break;     //转账

case ‘4‘:revise_information(p);break;  //修改信息

case ‘5‘:query_money(p);break;         //查询余额

case ‘6‘:show_information(p);break;    //查看信息

}

cout<<"请选择业务:(1)取钱 (2)存钱  (3)转账  (4)修改信息  (5)余额查询 (6)显示账号信息  (7)退出账号"<<endl;

cin>>ch;

}

}

}

information* logon(information *head)//用户注册账号

{

information *s;

string str;//记录账号信息

cout<<"请输入注册账号:";

cin>>str;

int t;

if(head==NULL)//如果链表不存在信息,默认为新注册的账号不存在

t=0;

else

t=cheak_num(str,head);//判断账号是否已经存在

while(t==1)//账号已经存在 重新输入

{

cout<<"账号已存在,请重新注册:";

cin>>str;

t=cheak_num(str,head);

}

s=new information ;//为链表开辟新空间

s->num=str;

cout<<"用户名:";

cin>>s->name;

cout<<"密码:";

cin>>s->key;

cout<<"身份证号:";

cin>>s->ID;

cout<<"电话号码:";

cin>>s->tel;

cout<<"余额:";

cin>>s->money;

if(head==NULL)//如果当前链表没有任何信息

{

head=s;

head->next=NULL;

}

else//将新注册的插入当前链表

{

s->next=head->next;

head->next=s;

}

cout<<endl<<"=====================================注册成功==================================="<<endl;

return head;

}

string change_monitor_keys(string monitor)

{

string string1,string2;//记录用户两次输入密码

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

cin>>string1;

while(string1!=monitor)//如果管理员密码输入不正确

{

cout<<"与原密码不符,是否重新输入  (1)是   (2) 否  "<<endl;

char chra;

cin>>chra;//记录用户是否继续登陆

while(chra!=‘1‘&&chra!=‘2‘)//判断用户是否存在误操作

{

cout<<"选择有误,请重新选择:(1)是   (2) 否 "<<endl;

cin>>chra;

}

if(chra==‘1‘)//继续登陆输入账号

{

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

cin>>string1;

}

else//停止登陆

break;

}

if(string1!=monitor)//退出修改管理员密码

return monitor;

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

cin>>string1;

cout<<"请再次输入确认修改密码:";

cin>>string2;

while(string1!=string2)//判断两次输入的新密码是否一致

{

cout<<"两次输入密码不相同,请选择是否继续修改:(1)是 (2)否"<<endl;

char jilu;//记录用户选择是否继续修改

cin>>jilu;

while(jilu!=‘1‘&&jilu!=‘2‘)//判断用户是否存在误操作,是则提示

{

cout<<"请重修选择是否修改:(1)是 (2)否"<<endl;

cin>>jilu;

}

if(jilu==‘1‘)//继续修改密码

{

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

cin>>string1;

cout<<"请再次输入确认修改密码:";

cin>>string2;

}

else//退出修改密码

break;

}

if(string2==string1)//如果在两次输入修改密码一致,成功修改

{

monitor=string1;

cout<<endl<<"====================================密码修改成功==============================="<<endl;

}

else

cout<<endl<<"==================================密码未修改=============================="<<endl;

return monitor;

}

void choose_model(information *head,string monitor)//选择开始界面业务

{

information *p;

char ch,mon_cho;//记录用户选择

string str;//后面用到的是管理员密码  客户账号

cout<<"==============================欢迎进入银行管理系统=============================="<<endl;

while(1)

{

cout<<"请选择进入模式:"<<endl;

cout<<"(1)管理员模式  (2)普通用户模式 (3)退出系统 "<<endl;

cin>>ch;

while(ch!=‘1‘&&ch!=‘2‘&&ch!=‘3‘)//如果用户输入有误,提示

{   cout<<"请选择进入模式:"<<endl;

cout<<"(1)管理员模式  (2)普通用户模式 (3)退出系统 "<<endl;

cin>>ch;

}

if(ch==‘1‘)//管理员模式

{

cout<<"您已进入管理员模式"<<endl<<"请输入管理员密码:";

cin>>str;

if(monitor!=str)

{

char judge;//用来记录选择

while(monitor!=str)//判断管理员密码是否正确

{

cout<<"管理员密码输入错误,是否重新输入   (1)是   (2)否"<<endl;//此处考虑到可能是客户不小心进入可以选择退出管理员模式

cin>>judge;

while(judge!=‘1‘&&judge!=‘2‘)//如果用户输入有误,提示

{

cout<<"请重新选择是否重新输入密码  (1)是   (2)否"<<endl;

}

if(judge==‘1‘)//继续输入密码

{

cout<<"请重新输入管理员密码:";

cin>>str;//重新输入管理员密码

}

else

{break;//结束本输入密码循环

}

}

}

if(monitor==str)//成功登陆管理员

{

cout<<endl<<"==================================管理员登陆成功==============================="<<endl;

while(1)

{

cout<<endl<<endl<<"请输入要执行的操作"<<endl;

cout<<"(1)客户信息录入  (2)管理客户信息  (3)修改管理员密码 (4)显示所有账户信息  (5)退出管理员模式"<<endl;

cin>>mon_cho;//记录用户选择

while(mon_cho!=‘1‘&&mon_cho!=‘2‘&&mon_cho!=‘3‘&&mon_cho!=‘4‘&&mon_cho!=‘5‘)//如果用户输入有误,提示

{

cout<<endl<<endl<<"请重新选择模式"<<endl;

cout<<"(1)客户信息录入  (2)管理客户信息  (3)修改管理员密码  (4)显示所有账户信息  (5)退出管理员模式"<<endl;

cin>>ch;

}

if(mon_cho==‘1‘)//客户信息录入

head=get_information(head);

else

if(mon_cho==‘2‘)//管理账户信息

{

cout<<"请输入要修改的客户账号:";

cin>>str;

p=cheak_number(str,head);//判断账户是否存在

while(p==NULL)//账户不存在,提示重新输入

{

cout<<"该账号不存在,请重新输入:";

cin>>str;

p=cheak_number(str,head);

}

revise_information(p);//修改已存在的账户信息

}

else

if(mon_cho==‘5‘)//结束管理员模式

break;

else

if(mon_cho==‘4‘)//输出所有账户信息

output_information (head);

else//修改管理员密码

monitor=change_monitor_keys(monitor);

}

}

}

else

if(ch==‘2‘)//选择普通客户模式

{

char jilu;//记录用户所选业务

cout<<"==============================欢迎进入银行管理系统=============================="<<endl;

while(1)

{

cout<<"请选择需要业务:(1) 注册  (2) 登录 (3)退出普通用户模式 "<<endl;

cin>>jilu;

while(jilu!=‘1‘&&jilu!=‘2‘&&jilu!=‘3‘)//判断用户误操作,提示

{

cout<<"输入错误,请重新选择业务::(1) 注册  (2) 登录 (3)退出普通用户模式 "<<endl;

cin>>jilu;

}

if(jilu==‘1‘)//注册

head=logon(head);

else

if(jilu==‘2‘)//登陆

choose(head);

else

break;//退出普通用户模式

}

}

else //退出该系统

break;

}

}

int main ()

{   information *head=NULL;

string monitor="123456";//monitor为管理员初始密码

choose_model(head,monitor);

return 0;

}

时间: 2024-10-24 18:13:09

c++ 银行管理系统及报告的相关文章

银行管理系统 实现用户注册 登录 存、取款 交易记录查询和修改用户信息等功能

========= 项    目   介   绍======== 银行账户管理系统 本项目主要实现用户注册 登录 存.取钱和修改用户信息功能. 用户信息的存储和获取通过集合和IO输入输出流实现. 存钱 取钱功能通过修改用户信息中的余额实现 修改用户信息 要先获取用户信息 ,再把修改后的信息保存到List中,同时必须删除原有的用户信息. ========项目功能需求============= 该银行管理系统可以实现 以下主要几个功能 用户注册   注册成功才能进行用户登录 用户登录  登录成功后

《对不队团队》第二次作业:学术管理系统开题报告

                                        2018年学生"创新能力提升计划"                                              项目申请表 项目名称:      学术会议管理系统 申 请 者:          对不队团队 指导教师:             代祖华 学    院:  计算机科学与工程学院 联系电话:        17393152853 填表日期:        2018年4月27日 一.项

教学管理系统需求分析报告

1.引言 1.1 编写目的 该需求分析的软件对象是学生管理系统.开发学生管理系统能够为用户提供充足的信息和快捷的查询手段.作为计算机应用的一部分,使用计算机对学籍信息进行管理,具有着手工管理所无法比拟的优点.如检索迅速.查找方便.成本低等.这些优点能极大提高学生档案管理的效率.通过这份软件产品需求分析报告详尽说明了该软件产品的需求规格,从而对学生管理系统进行准确的定义. 1.2 预期读者和阅读建议 学生管理系统所针对的各种不同的预期读者包括: 学生.老师.管理人员.开发人员.测试人员.文档编写人

图书管理系统可行性分析报告

1引言 1.1编写目的 可行性研究的目的是研究图书管理系统的总体需求.实现方案,并分析开发系统的可行性,为决策者提供是否开发该系统的依据和建议. 初拟系统实验报告,对软件开发中将要面临的问题及其解决方案进行初步设计及合理安排.明确开发风险及其所带来的经济效益. 1.2背景 项目名称:图书销售管理系统 项目用户:图书借阅员.图书管理员.系统管理员.图书借阅者. 开发员: 大佬,皮皮周,DEDRAGON,千城墨白, 赵佳美小姐姐,国字号, 发抛,线段, 苦心糖,无法无天 1.3定义  图书销售管理系

图书馆 管理系统--可行性报告

1.引言 1.1编写目的     本需求的编写是为了研究利用大型数据库做基础的图书管理系统软件的开发途径和应用方法.同时它也是进行项目策划.概要设计和详细设计的基础,是维护人员进行内部维护,信息更新,验收和测试的依据. 1.2项目背景 l  开发软件的名称:图书管理系统.  l  图书管理系统这任务提出与开发者为我们小组软件工程的的课程设计,用户是学校图书馆.  l  本产品是针对电脑管理图书的需求设计的,可以完成读者登记.购入新书.读者借还书.图书注销等. 1.3参考资料 <信息系统分析与设计

结对项目 —— 图书管理系统实验报告

一.项目简介 该系统主要建立一个基于基本模式的图书馆登录系统,该系统类似二叉树,可以对跟系统的二个用户类型的使用实现: ①用户(User)登录 用户登录包含的是管理员和读者的登录信息,管理员和读者的信息内容都是调用用户类中的信息. ②读者(Reader)登录 读者登录包含的老师和学生的登录信息,登录时则是调用读者类中相关信息. 二.基本流程图 三.模块功能介绍 1)用户模块功能介绍 public class User { String name; int passWord; public Use

银行管理系统_Note-01

这周开始进入银行管理系统的开发,使用到的工具: 集成环境:Eclipse 原型设计:Axure 数据库:MySQL 用例图:Visio 任务:DAO层的设计 1.数据库的搭建 1.1下载MySQL的驱动,并将驱动导入到工程BankSystem目录下 1.2建立数据库的桥接,通过Class.formName(com.mysql.jdbc.Driver)将JDBC和ODBC桥接上 1.3连接数据库,通过return 一个DriverManager.getConnection(url,userName

社团管理系统需求分析报告

目录 小组成员 项目简介 需求分析 需求思维导图 管理员 学生 社员(社员拥有普通学生的所有功能) 社长(社长拥有社员的所有功能) 部长(部长拥有社员所有的功能) 数据流图 模块流程图 登录注册模块 活动模块 表结构 ER图 原型设计 登录界面 管理员后台界面 学生个人界面 讨论区界面 小组成员 姓名 学号 分工 杨煜升 31701055 需求分析,文档撰写 赵晟 31701058 需求分析,数据库表结构设计, ER图制作 吴祖峰 31701052 需求分析,模块流程图 朱锦涛 31701060

银行管理系统_Note-02

UI层的设计(卡片布局) 1为主面板添加背景图片: JPanel mainPanel = new JPanel(){...};类似匿名类,然后大括号里面重写JComponent的paintComponent(Graphics g)方法,调用            g.drawImage方法画背景图片 2添加登录界面LoginPanel和注册界面RegesterPanel: 这里使用一个管理面板的容器工具类ContainerUtils,将面板名字对应的Panel放在map里面: public cl