java银行管理系统_java实现银行管理系统

2022年05月12日 阅读数:2
这篇文章主要向大家介绍java银行管理系统_java实现银行管理系统,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

Bank类java

package First;正则表达式

import java.util.TreeSet;数据库

//银行类ide

public class Bank { 函数

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

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

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();   //调用登陆方法

}

}