java银行管理系统_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(); //调用登录方法
}
}
java银行管理系统_java实现银行管理系统相关推荐
- Java影院网上购票管理系统_java影院售票管理系统
一个完善的电影院售票管理系统,可以帮助电影院工作人员提升工作效率, 辅助电影院工... 电影院售票管理系统UML_计算机软件及应用_IT/计算机_专业资料.业务需求 1... Jsp 影院售票系统的架 ...
- java宠物医院_java宠物医院管理系统
今天和一个朋友共同完成了一个基于java的宠物医院管理系统项目,我们在开发时选用的框架是SSM(MYECLIPSE)框架.我这个朋友知识有限,只会这个框架,哈哈,都是为了方便他.和往常一样选用简单又便 ...
- java编写学生管理系统_Java实现学生管理系统
导读热词 项目描述:通过管理员帐号登录,对学员信息进行管理.可以实现学员信息的增加.修改.删除.查询. 知识点:数组.do{}while循环.for循环.if语句.switch条件语句 学生管理系统的 ...
- java简单系统_Java简单学生管理系统
Java简单学生管理系统 这个不需要手动输入,笔记记录 //student` public class student(){ private String id;//学号 private String ...
- java编写通信录管理系统_Java 实现通讯录管理系统教程
本文实例为大家分享了java实现通讯录管理系统的具体代码,供大家参考,具体内容如下 完成项目的流程: 1.根据需求,确定大体方向 2.功能模块分析 3.界面实现 4.功能模块设计 5.coding 6 ...
- java酒店信息管理系统_java实现酒店管理系统
本文实例为大家分享了java实现酒店管理系统的具体代码,供大家参考,具体内容如下 要求: [酒店管理系统]HotelSystem.java 某酒店有12层楼,每层楼有10个房间(二维数组),要求为该酒 ...
- 学生宿舍管理系统java课设_JAVA学生宿舍管理系统
需要的工具 1.SQL Server 2.Eclipse 3.JDBC连接数据库驱动 https://download.microsoft.com/download/A/F/B/AFB381FF-70 ...
- java 教师工资管理系统_java教师工资管理系统完整代码.doc
教师工资管理系统: 开发团队:206和207 时间:2012年4月8日 数据库配置:sqlserver2000 创建数据库SalaryManagement 在其下创建数据表logindata. 创建数 ...
- java物业管理系统设计_JAVA版物业管理系统论文+设计源码
内容介绍 原文档由会员 从头再来 发布 (内含完整源代码) 1.2万字 28页 [摘要] 物业管理系统是紧随当今时代发展的需要,目的在于实现不同的人员对物业系统的不同的需要,有利于社会的稳定和顺利发展 ...
最新文章
- linux mysql添加用户名和密码错误,linux下为mysql设置用户名和密码
- Debug Tensorflow: Expected these arguments to match one of the following 4 option(s):
- Google Guava缓存实现接口的限流
- supervisor+gunicorn部署python web项目
- AndroidSDK下载
- Cat8八类网线是什么?与Cat5、Cat6、Cat7网线的区别?
- MSDP技术原理与实验
- 八猴渲染器4.0基本使用教程及渲染教程
- 面试乐融集团Python开发工程师助理有感
- deepin安装网速监控
- ncbi和ensembl上的序列下载
- python相关性系数_聊聊你知道和不知道的相关性系数
- 微信小程序中如何打开公众号文章(node版)
- 快速增加图片大小KB
- 易语言练习笔记-大叔篇(3)-加减计算器
- 数据湖和数据仓库区别介绍
- 利用ffmpeg将mp4视频转换成多张jpg图片
- 煤炭销售系统的设计与实现
- IOS消息推送之APNS
- html如何设置自动点击,按键精灵怎么设置自动点击
热门文章
- SQL 注入式攻击的本质
- MSSQL数据库全库批量替换
- moss 2007 单点登录的配置
- np.meshgrid
- 联想拯救者Y7000P 2021H deepin v20.2.4设置双屏显示:切记要用集显,NAVIDA独显不生效
- Ansible-playbook yum安装nginx1.20.1
- Linux DNS服务配置与管理详解
- Spark常用RDD算子 - saveAsTextFile、saveAsObjectFile 可保存到本地文件或hdfs系统中
- MobaXterm无法退格删除,出现^H
- ClickHouse数据分析列式数据库概述