如何使用java实现银行管理系统

发布时间:2021-09-27 17:50 来源:亿速云 阅读:0 作者:小新 栏目: 开发技术

这篇文章主要介绍了如何使用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(); //调用登录方法 }}

免责声明:本站发布的内容(图片、视频和文字)以原创、来自互联网转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系QQ:712375056 进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。