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

}

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

(0)

相关推荐

  • 图书管理系统java代码实现

    本文实例为大家分享了java实现图书管理系统的具体代码,供大家参考,具体内容如下 /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:    <图书管理系统--java>                          * 作    者:       刘江波                       * 完成日期:    2012     年  3    

  • java学生信息管理系统源代码

    本文实例为大家分享了java学生信息管理系统的具体代码,实现学生信息: 增加 int[] a=new int[9] .删除 .查找.更改,供大家参考,具体内容如下 /*学生信息管理系统,实现学生信息: *增加 int[] a=new int[9] *删除 *查找 *更改 */ import java.util.Scanner;//导入java输入流 import java.lang.*; import java.io.*; class Student { private static Stude

  • 图书管理系统java版

    本文的目的就是通过图书管理系统掌握数据库编程技术,能正确连接数据库,能对数据库中信息进行查询.插入.删除.修改. 内容:在数据库中创建一张书目信息表,包括书名.作者.出版社.出版日期.书号.价格字段.设计一个GUI界面进行书目管理.在该界面上有四个选项卡,分别是查询.插入.删除.修改.点击查询选项卡,出现的界面上有书名.作者.出版社.书号四个文本框,一个按钮和一个只读文本区.文本框内容可以为空,输入相应的查询信息后(例如根据书名查询可以仅输入书名),点击界面上的"查询"按钮,可以在界面

  • java学生管理系统界面简单实现(全)

    学生管理系统简单的实现,供初学Java Swing同学学习使用. import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import jav

  • Java+MySQL实现学生信息管理系统源码

    基于Java swing+MySQL实现学生信息管理系统:主要实现JDBC对学生信息进行增删改查,应付一般课设足矣,分享给大家.(由于篇幅原因,代码未全部列出,如有需要留下邮箱) 鉴于太多同学要源码,实在发不过来,上传到github上 https://github.com/ZhuangM/student.git 1. 开发环境:jdk7+MySQL5+win7 代码结构:model-dao-view 2. 数据库设计--建库建表语句: CREATE DATABASE student; DROP

  • 简单实现Java版学生管理系统

    本文实例为大家分享了Java实现学生管理系统的具体代码,供大家参考,具体内容如下 package BookDemo_1; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Test { public static void main(String[] args) { StudentSys stuSys=new StudentSys("学生管理系统"); stuSys.initWi

  • Java+Mysql学生管理系统源码

    最近正在学java和数据库,想起以前写的学生管理系统,都是从网上下载,敷衍了事.闲来无事,也就自己写了一个,不过功能实现的不是很多. 开发语言:java: 开发环境:Mysql, java: 开发工具:eclipse 开发此案例,首先得在电脑上有java开发环境和Mysql, java开发环境与Mysql的搭建,就不再叙述了,如果需要,请联系我最下面的联系方式:dingyelf@aliyun.com 此次系统比较简易:数据库中只有一个表:stu;功能:能够对学生增加.删除.修改. 开发步骤:  

  • javaWeb实现学生信息管理系统

    本文为大家分享了javaWeb实现学生信息管理系统,供大家参考,具体内容如下 初始版 初始版是没有加分页的.因为没怎么学过前端,界面很丑陋.主要技术:JSP,JavaBean,servlet,JDBC主要页面如下: 登录页面 主页 添加学生 查看所有学生 查询学生 工程目录 数据库 两个表,user表和student表.为了使用DBUtils工具,一定要注意数据库表的属性的命名和JavaBean的get(),set() 方法的匹配.比如t_user表里的uname,在JavaBean中是:pri

  • Java GUI实现学生成绩管理系统

    学习java有一年多了,一直在做web方面的练习,在一个项目中发现需要用到GUI的相关知识,结果没法做出来,网上这方面的文章又不是很多,所有只好自己硬着头皮从头再学一遍了,不过学习后发现,其实GUI是非常有趣的,他并不像WEB程序一样依赖互联网,而且还有许多布局和android相差不是很大,这才发现自己竟又爱上GUI的开发了,不多说了,直接上代码吧,相信有过android或相关界面开发的都明白这其中的道理. 先看看效果吧 1.登录主界面 package edu.gzu.stuManager; i

  • 一个简陋的java图书管理系统

    本文代码为原创一个简陋的管理系统,只做功能的测试.并没有去完善所有应有的功能,只做了输入输出查找,仅供参考! 菜单部分: import java.util.Scanner; public class Menu { int Min = 1; int Max = 3; public void getMenu(){ System.out.println("1.显示/2.输入/3.查找"); } public void getFindMenu(){ System.out.println(&qu

随机推荐