软件编程
位置:首页>> 软件编程>> java编程>> java实现银行管理系统

java实现银行管理系统

作者:幻梦&流星  发布时间:2023-12-07 23:50:28 

标签:java,管理系统

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

Bank类


package First;

import java.util.TreeSet;

//银行类
public class Bank {
private String Bankname = "坑对对银行";  //银行名称
TreeSet<User> 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<User> holder = new TreeSet<User>(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<User> getHolder() {
return holder;
}
//写入容器
public void setHolder(TreeSet<User> 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<User> holder = Data.getData().getHolder(); //从Data数据库中获取容器
//文件类只供使用不能被任意实际化
public static File FILE;   //私有化一个File类
private File() {};
public static File getFile() {   //对外界提供获取方法
return FILE;
}
//保存到文件里
public static void SaveToFile(TreeSet<User> 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<User> ReadFromFile() {
ObjectInputStream ois = null;
TreeSet<User> list = null;
 try {
  ois = new ObjectInputStream(new FileInputStream(".\\src\\Test\\text1.txt"));//反序列化从文件中获取容器加载到内存
  list = Data.getData().getHolder();   //获取容器
  list = (TreeSet<User>) 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<User> 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<User> holder,String account,String pw) {
Iterator<User> 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<User> 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<User> logout(TreeSet<User> 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(); //调用登录方法
}

}

来源:https://blog.csdn.net/baobeiduoduo/article/details/103683678

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com