本文实例为大家分享了java实现银行管理系统的具体代码,供大家参考,具体内容如下

Bank类

package First;

import java.util.TreeSet;

//银行类

public class Bank {

private String Bankname = "坑对对银行"; //银行名称

TreeSet holder = null; //银行存储的信息

private static Bank INSTANCE = new Bank();

private Bank() {} //私有化银行类

public static Bank getInstance() {

// TODO Auto-generated method stub

return INSTANCE;

}

//存款功能

public void saveMoney(User user,double money) {

//初始金额与存入金额相加

double sum = user.getSum()+money;

user.setSum(sum);

System.out.print(money+"存款成功!!!"+",当前余额是:"+user.getSum());

System.out.print("\n");

}

//取款功能

public void drawMoney(User user,double money,String pw) {

if(user.getPw().equals(pw)) { //先判断取款密码

if(user.getSum()>=money) { //判断余额

user.setSum(user.getSum()-money);

System.out.print("取款成功");

System.out.print("\n");

System.out.print("当前余额为:"+"\t"+user.getSum());

System.out.print("\n");

}else {

System.out.print("抱歉余额不足!!! 当前余额:"+user.getSum());

System.out.print("\n");

}

}

}

//查看余额以及信息

public void looksum(User user) {

System.out.print("姓名:"+user.getName()+",账号:"+user.getAccount()+",余额:"+user.getSum());

System.out.print("\n");

}

//欢迎语句

public void welcom(User user) {

if(user.getSexual().equals("男")) {

System.out.print(user.getName()+" 先生!!"+" "+(this.Bankname)+" 欢迎您!!!");

System.out.print("\n");

}else if(user.getSexual().equals("女")){

System.out.print(user.getName()+" 女士!!"+" "+(this.Bankname)+" 欢迎您!!!");

System.out.print("\n");

}

}

//再见语句

public void GoodBye(User user) {

if(user.getSexual().equals("男")) {

System.out.print(user.getName()+" 先生!!"+" "+(this.Bankname)+" 祝您生活愉快!!!");

System.out.print("\n");

}else if(user.getSexual().equals("女")){

System.out.print(user.getName()+" 女士!!"+" "+(this.Bankname)+" 祝您生活愉快!!!");

System.out.print("\n");

}

}

}

Data:数据存储类

package First;

import java.util.TreeSet;

//模拟一个数据库

//银行的数据库

public class Data {

TreeSet holder = new TreeSet(new MyComparator()); //用于存储用户信息的容器---自定义比较规则

File file = File.getFile(); //获取一个文件类

private static Data data = new Data();

//单例模式--因为存储数据的类唯一.所以不能随意被实例化

private Data() {} //私有化构造方法

public static Data getData() { //提供返回该对象的静态方法

return data;

}

//添加用户

public void addUser(User user) {

holder.add(user);

System.out.print("注册成功!!");

System.out.print("\n");

}

//删除用户

public void removeUser(User user) {

if(holder.contains(user)) { //如果容器中包含所user对象,则移除对象

holder.remove(user);

}else { //如果不包含则打印语句

System.out.print("抱歉请检查输入的信息是否正确");

System.out.print("\n");

}

}

//获取容器

public TreeSet getHolder() {

return holder;

}

//写入容器

public void setHolder(TreeSet holder) {

this.holder = holder;

}

}

FIie:文件IO类

package First;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.util.Iterator;

import java.util.TreeSet;

/*

* 文件类--负责向内存中初始化信息以及程序结束后向内存中存入信息

* */

public class File {

TreeSet holder = Data.getData().getHolder(); //从Data数据库中获取容器

//文件类只供使用不能被任意实际化

public static File FILE; //私有化一个File类

private File() {};

public static File getFile() { //对外界提供获取方法

return FILE;

}

//保存到文件里

public static void SaveToFile(TreeSet list) { //将获取到的容器存入到文件中----序列化

ObjectOutputStream oo = null;

try {

oo = new ObjectOutputStream(new FileOutputStream(".\\src\\Test\\text1.txt")); //获取文件存储地址

oo.writeObject(list); //将容器写入

} catch (Exception ex) {

ex.printStackTrace();

}finally {

try {

oo.close(); //将流关闭

}catch(IOException e) {

e.printStackTrace();

}

}

}

//从文件里读取

public static TreeSet ReadFromFile() {

ObjectInputStream ois = null;

TreeSet list = null;

try {

ois = new ObjectInputStream(new FileInputStream(".\\src\\Test\\text1.txt"));//反序列化从文件中获取容器加载到内存

list = Data.getData().getHolder(); //获取容器

list = (TreeSet) ois.readObject(); //从流中获取对象

Iterator it = list.iterator(); //迭代器

System.out.print("当前用户信息:");

System.out.print("\n");

System.out.print("\n");

while(it.hasNext()) { //迭代初始信息

User user = (User) it.next();

System.out.print("\t"+"姓名:"+user.getName()+"\t"+"账号:"+user.getAccount()+"\t"+"密码:"+user.getPassword()+"\t"+"余额:"+user.getSum()+"\t");

System.out.print("\n");

System.out.print("\n");

}

} catch (Exception ex) {

ex.printStackTrace();

}finally {

try {

ois.close(); //将流关闭

}catch(IOException e){

e.printStackTrace();

}

}

return list;

}

}

MyComparator:自定义比较器类

package First;

import java.io.Serializable;

import java.util.Comparator;

//自定义比较器

//想要存入集合必须实现序列化和反序列化

public class MyComparator implements Comparator,Serializable{

/**

*

*/

private static final long serialVersionUID = 1L;

@Override

public int compare(Object arg0, Object arg1) {

User user1 = (User)arg0; //重写比较方法 --- 强转成User类型

User user2 = (User)arg1;

return user1.getAccount().compareTo(user2.getAccount());//比较两个银行账户

}

}

Operate:系统核心

package First;

import java.util.Iterator;

import java.util.Scanner;

import java.util.TreeSet;

//后台操作系统

//后台管理员

public class Operate {

Scanner sc = new Scanner(System.in); //键盘录入

TreeSet holder = Data.getData().getHolder(); //从Data数据库中获取容器

Bank bank = Bank.getInstance(); //获取一个银行类

File file = File.getFile(); //获取一个文件类

//登录菜单

public void registerMenu(){

System.out.print("****************************");

System.out.print("\n");

System.out.print("\n");

System.out.print(" 欢迎来到坑多多银行登录系统!!!\n");

System.out.print("\n");

System.out.print("****************************");

System.out.print("\n");

System.out.print("\n");

holder = File.ReadFromFile(); //从文件中获取容器

Data.getData().setHolder(holder); //把从文件中获取容器存储到数据库中

int str=1; //从键盘获取数字

while(str!=0) {

System.out.print("****************************");

System.out.print("\n");

System.out.print(" 1: 登录 ");

System.out.print("\n");

System.out.print(" 2: 注册 ");

System.out.print("\n");

System.out.print(" 3: 忘记密码");

System.out.print("\n");

System.out.print(" 4: 注销用户");

System.out.print("\n");

System.out.print(" 0: 退出");

System.out.print("\n");

System.out.print("****************************");

System.out.print("\n");

System.out.print("请输入:");

str = sc.nextInt();

switch(str){ //根据用户输入的值进行选择

case 1:

System.out.print("请输入您的账号:");

String account = sc.next(); //从键盘中获取录入用户名

System.out.print("请输入您的密码:");

String pw = sc.next(); //从键盘中录入密码

User user = logon(holder,account,pw);

if(user!=null) { //判断是否登录成功

System.out.print("登录成功!!!!欢迎使用");

System.out.print("\n");

System.out.print("正在跳转到银行操作界面.........");

System.out.print("\n");

this.BankMenu(user); //如果登录成功则将user对象传入到银行操作界面并跳转

}else {

System.out.print("登录失败!!!请从新输入"); //如果登录失败打印此语句

System.out.print("\n");

}

break;

case 2:

this.logon(); //调用注册方法

break;

case 3:

this.modify(); //调用修改方法

break;

case 4:

holder = logout(holder); //调用删除操作

break;

case 0:

File.SaveToFile(holder); //退出系统式将信息保存到文件中

System.out.print("再见!!!!");

System.out.print("\n");

default:

System.out.print("输入错误!!!!");

System.out.print("\n");

}

}

}

//登录方法

public User logon(TreeSet holder,String account,String pw) {

Iterator it = holder.iterator(); //获取迭代器

while(it.hasNext()) {

User user = it.next();

if(user.getAccount().equals(account)&&user.getPassword().equals(pw)){

System.out.print("登录成功!!");

System.out.print("\n");

return user;

}

}

System.out.print("账户或密码错误 登录失败!!");

System.out.print("\n");

return null;

}

//注册方法体

public void logon(){

System.out.print("欢迎来到注册界面!!!!");

System.out.print("\n");

String name; //用户名

String account; //银行账号

String password; //密码

String pw; //取款密码

double sum; //账户金额

String sexual; //性别

User user = new User(); //先创建一个空参的user对象

boolean flag = true; //语句的开关

while(flag) { //将注册的信息依次输入

switch(1) {

case 1:

System.out.print("请输入姓名:"); //依次从键盘中获取对应的姓名----正则表达式

name = sc.next();

user.setName(name); //将名字写入对象中

case 2:

System.out.print("请输入账号(9位数字):");

account = sc.next(); //从键盘中获取账号

String reges ="[0-9]{9}"; //正则表达式规则对账号进行限制

if(!account.matches(reges)) { //如果不符合要求则报错

System.out.print("账号不符合规范!!");

System.out.print("\n");

System.out.print("请重新注册");

System.out.print("\n");

break;

}

user.setAccount(account); //将账号写入对象中

case 3:

System.out.print("请输入密码(6位):");

password = sc.next();

reges ="[0-9]{6}"; //正则表达式规则

if(!password.matches(reges)){ //如果密码不符合正则规则则报错

System.out.print("密码不符合规范!!");

System.out.print("\n");

System.out.print("请重新注册");

System.out.print("\n");

break;

}

user.setPassword(password); //将密码写入对象中

case 4:

System.out.print("请输入取款密码(6位):");

pw = sc.next();

reges ="[0-9]{6}"; //正则表达式规则

if(!pw.matches(reges)) {

System.out.print("取款密码不符合规范!!");

System.out.print("\n");

System.out.print("请重新注册");

System.out.print("\n");

break;

}

user.setPw(pw); //将取款密码写入到对象中

case 5:

System.out.print("请输入金额:");

sum = sc.nextDouble();

user.setSum(sum); //将金额写入到对象中

case 6:

System.out.print("请输入性别:");

sexual = sc.next();

user.setSexual(sexual); //将性别写入到对象中

case 7:

if(!holder.contains(user)){

Data.getData().addUser(user); //一切准确无误后将user存入数据库Data中

}

else {

System.out.print("用户存在!!!");

System.out.print("\n");

//结束循环

}

flag = false;

break;

}

}

}

//忘记密码操作

public void modify() {

boolean flag = true;

Iterator it = holder.iterator(); //获取迭代器

System.out.print("请输入账户:");

String account = sc.next(); //从键盘中获取账户

while(it.hasNext()) {

User user = it.next();

if(user.getAccount().equals(account)){ //如果容器中有这个对象则对它进行修改

System.out.print("请输入新账户的密码:");

String pw = sc.next(); //从监盘上录入新的密码

String reges ="[0-9]{6}"; //正则表达式规则

if(!pw.matches(reges)) { //如果密码不符合正则规则则报错

System.out.print("密码不符合规范!!");

System.out.print("\n");

}else { //正则表达式判断是否符合条件

holder.remove(user); //先从原容器中删除user

user.setPassword(pw); //修改user的属性

holder.add(user); //然后再向容器中添加

System.out.print("修改成功!!!");

System.out.print("\n");

flag = false;

break;

}

}

}

if(flag) {

System.out.print("没有找到该用户");

System.out.print("\n");

}

}

//注销方法

public TreeSet logout(TreeSet list) {

String username; //用户名

String password; //密码

System.out.print("请输入用户账号:");

username = sc.next(); //从键盘录入用户名

System.out.print("请输入密码:");

password = sc.next(); //从键盘录入密码

Iterator it = list.iterator(); //获取迭代器

while(it.hasNext()) {

User user = (User)it.next(); //获取对象

if(user.getAccount().equals(username)&&user.getPassword().equals(password)){

list.remove(user); //如果录入的信息匹配则从容器中删除user对象

System.out.print("注销成功!!");

System.out.print("\n");

return list;

}

}

System.out.print("账号或者密码错误"); //不匹配打印提示语句

System.out.print("\n");

return list;

}

//银行操作界面

public void BankMenu(User user) {

bank.welcom(user); //银行调用欢迎语句

System.out.print("****************************");

System.out.print("\n");

System.out.print("\n");

System.out.print(" 欢迎来到坑多多银行擦操作系统!!!\n");

System.out.print("\n");

int str = 1;

while(str!=0) {

System.out.print("****************************");

System.out.print("\n");

System.out.print(" 1: 取钱 ");

System.out.print("\n");

System.out.print(" 2: 存钱 ");

System.out.print("\n");

System.out.print(" 3: 查看余额");

System.out.print("\n");

System.out.print(" 0: 退出登录");

System.out.print("\n");

System.out.print("****************************");

System.out.print("\n");

System.out.print("\n");

System.out.print("请输入您的选项:"); //从键盘中读取字符串

str = sc.nextInt();

switch(str){ //根据用户输入的值进行选择

case 1: //取钱选项

System.out.print("请输入取款密码:");

String pw = sc.next(); //从键盘获取输入的密码

if(user.getPw().equals(pw)) { //将输入的取款密码与用户的密码进行比对:如果相同则继续执行

System.out.print("请输入取款金额:");

double money = sc.nextDouble(); //从键盘获取输入的金额

if(money>=0) { //判断金额是否有误

bank.drawMoney(user, money, pw); //调用取款方法

}else {

System.out.print("输入金额错误!!!");

System.out.print("\n");

}

}else {

System.out.print("输入密码有误!!!");

System.out.print("\n");

}

break;

case 2:

System.out.print("请输入取款金额:");

System.out.print("\n");

double money1 = sc.nextDouble(); //从键盘获取输入的金额

if(money1>=0) { //判断金额是否有误

bank.saveMoney(user, money1);; //调用存款方法

}else {

System.out.print("输入金额错误!!!");

System.out.print("\n");

}

break;

case 3:

bank.looksum(user); //调用银行---查询账户操作

break;

case 0:

bank.GoodBye(user); //调用结束语句

break;

default:

System.out.print("输入错误");

System.out.print("\n");

}

}

}

}

User类:

package First;

import java.io.Serializable;

/*

* 这是一个User类

* */

public class User implements Serializable{

/**

* 实现接口,用于序列化和反序列化

*/

private static final long serialVersionUID = 1L;

private String name; //用户名

private String account; //银行账号

private String password; //密码

private String pw; //取款密码

private double sum; //账户金额

private String sexual; //性别

//获取用户名

public String getName() {

return name;

}

//写入用户名

public void setName(String name) {

this.name = name;

}

//获取账号

public String getAccount() {

return account;

}

//写入账号

public void setAccount(String account) {

this.account = account;

}

//获取密码

public String getPassword() {

return password;

}

//修改密码

public void setPassword(String password) {

this.password = password;

}

//查看余额

public double getSum() {

return sum;

}

//修改余额

public void setSum(double sum) {

this.sum = sum;

}

//写入性别

public String getSexual() {

return sexual;

}

//修改性别

public void setSexual(String sexual) {

this.sexual = sexual;

}

//获取取款密码

public String getPw() {

return pw;

}

//写入取款密码

public void setPw(String pw) {

this.pw = pw;

}

//hashCode比较方法

@Override

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + ((account == null) ? 0 : account.hashCode());

result = prime * result + ((name == null) ? 0 : name.hashCode());

result = prime * result + ((password == null) ? 0 : password.hashCode());

result = prime * result + ((pw == null) ? 0 : pw.hashCode());

result = prime * result + ((sexual == null) ? 0 : sexual.hashCode());

long temp;

temp = Double.doubleToLongBits(sum);

result = prime * result + (int) (temp ^ (temp >>> 32));

return result;

}

//equals比较方法

/*

* 知识点:

* public boolean equals(Object obj)名称不可改变

* */

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

User other = (User) obj;

if (account == null) {

if (other.account != null)

return false;

} else if (!account.equals(other.account))

return false;

if (name == null) {

if (other.name != null)

return false;

} else if (!name.equals(other.name))

return false;

if (password == null) {

if (other.password != null)

return false;

} else if (!password.equals(other.password))

return false;

if (pw == null) {

if (other.pw != null)

return false;

} else if (!pw.equals(other.pw))

return false;

if (sexual == null) {

if (other.sexual != null)

return false;

} else if (!sexual.equals(other.sexual))

return false;

if (Double.doubleToLongBits(sum) != Double.doubleToLongBits(other.sum))

return false;

return true;

}

//初始化用户

User(String name,String account,String password,String pw,double sum,String sexual){

this.name = name;

this.account = account;

this.password = password;

this.sum = sum;

this.sexual = sexual;

this.pw = pw;

}

//空参构造函数

User(){

}

}

Main()类

package First;

public class Test {

//测试类----唯一的主函数

public static void main(String[] args) {

Operate operate = new Operate();

operate.registerMenu(); //调用登录方法

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2019-12-23

java开发一个银行系统_java实现银行管理系统相关推荐

  1. java linux 管理系统_用Java开发一个本地服务管理软件

    使用Java开发一个本机服务管理程序,能够控制本机Tomcat.Apache服务的开启和关闭,图形界面控制.用户可以自己扩展其他服务,用来学习图形界面编程.多线程.事件响应等都不错. 一.最终界面 先 ...

  2. 编程语言用 Java 开发一个打飞机小游戏(附完整源码)

    编程语言用 Java 开发一个打飞机小游戏(附完整源码) 上图 写在前面 技术源于分享,所以今天抽空把自己之前用java做过的小游戏整理贴出来给大家参考学习.java确实不适合写桌面应用,这里只是通过 ...

  3. java开发一个简单的通讯录

    java开发一个简单的通讯录 ArrayList的综合应用 import java.util.*; public class ContactNote{static Scanner sc=new Sca ...

  4. 如何用java开发一个网站?

    问题:如何用java开发一个网站? 下载了最新的JDK软件.最新的Eclipse.数据库mysql以及tomcat.struts但是不知道怎么连接起来,在数据库连接的时候mysql-connector ...

  5. java设计一个bank类实现银行_java定义一个类实现银行账户的概念。

    2016-11-17 13:40黄瞩信 客户经理 比如,只定义了一个抽象方法run(),而要通过系统用极短的时间.这5s内,此后这个线程就不能进入其它状态,进入消亡状态;+i++). 2,另一方面;, ...

  6. java 开发人员工具_Java开发人员应该知道的5种错误跟踪工具

    java 开发人员工具 随着Java生态系统的发展,可满足不断增长的请求和用户对高性能需求的Web应用程序成为了新型的现代开发工具. 具有快速新部署的快速节奏环境需要跟踪错误,并以传统方法无法维持的水 ...

  7. java 开发人员工具_Java开发人员的5种工具

    java 开发人员工具 改善我们编写的Java代码的一种方法是使用最好的工具. 因此,让我们看看IDR Solutions建议使用的5种最常用的工具来帮助Java开发人员编写更好的代码. 查找错误 F ...

  8. 用Java开发一个停车场系统

    作者:亰 blog.csdn.net/weixin_43951778/article/details/109643951 现开发一个停车系统,用户根据车位停车 1)车主查看现在有无车位(最多100个车 ...

  9. java开发项目经验_Java项目经验——程序员成长的钥匙

    今天给大家分享一篇Java项目经验,希望可以给正在成长中的新手Java程序员一个学习的方向! Java是用来做项目的!Java的主要应用领域就是企业级的项目开发!要想从事企业级的项目开发,你必须掌握如 ...

  10. 使用java开发一个股票交易及量化投资回测分析系统

    经过近两年的研究和学习,我使用java开发(也使用了部分python,数据源:聚宽)出了一个股票交易及量化投资回测分析系统,将于近期陆续推出系列文章,向大家介绍一下整个开发过程,当整个系列文章都完成后 ...

最新文章

  1. 学了这些,他薪资涨了40%,收割了阿里、头条、快手等大厂的offer!
  2. 开源超美css动态背景 可直接引入html文件使用 含注释、可更改
  3. MNN windows
  4. Apache的压力测试以及web性能优化的常用知识总结
  5. 4. SQL Server数据库状态监控 - 作业状态
  6. Git和Repo管理使用简要介绍
  7. Pytesseract的安装与使用。pip安装完Pytesseract报错不能用的解决方案【笔记自用】
  8. 【机器翻译】transformer
  9. (转) Android 数字签名
  10. [置顶] C#中通过调用webService获取上网IP地址的区域的方法
  11. WinForm窗体之间传值
  12. 程序员面试金典 - 面试题 01.09. 字符串轮转
  13. 《HTML5开发手册》——1.5 初学者“菜谱”:使用nav元素创建导航
  14. 一、SMARTY安装于配置文件
  15. MFC窗口最小化到托盘
  16. xenCenter创建镜像库和挂载硬盘
  17. 整车控制器(VCU)策略及开发流程
  18. python绘制折线图保存_利用python向excel文件写数据并绘制折线图
  19. 深度学习CV(基础理论知识)
  20. 芯片ECO的种类和修复方法介绍

热门文章

  1. python花瓣网爬取图片_花瓣网图片爬取
  2. 花瓣网服务器维护一个月,花瓣网维护网站推荐-只需要这一个网站就够了
  3. 方立勋_30天掌握JavaWeb_Web开发入门
  4. xshell和xftp官网
  5. bex5 3.7版本
  6. Java---计算器(标准计算器,科学计算器)的实现
  7. oppor829t如何刷机_OPPO R829T中文Recovery刷机教程
  8. 计算机专业英语单词完美打印,计算机专业英语词汇(完美排版_大容量打印版).pdf...
  9. Premiere CC2019软件下载和安装教程
  10. vmware station密钥