java银行管理系统
实践报告要求
编写一个Java应用程序,模拟网上银行登录及存取款业务。登录时需判断银行卡号和银行卡密码,当输入的卡号和密码都正确时,登录成功,提示当前登录的账户名,并进入下一步选择操作类型。操作类型包括四种(存款:1 取款:2 余额:3 退出:0),输入数字1、2时,将进行存取款操作,此时需要输入存取的金额,并进行正确的金额加减计算;输入数字3时,显示当前账户的余额;输入数字0时将退出整个系统。
主类
package ding029;
import java.io.IOException;
import java.util.HashMap;
import java.util.Scanner;
/*
* 思路:主方法只管调用其他类的静态方法
* 三个类,分别是主类,操作类,用户类
* 操作类包括登录,存取款,查询余额
*/
public class Bank_main {//主方法
public static void main(String[] args) throws IOException {
int count=2;//用来记录输入错误的次数
int c=0;
System.out.println("欢迎进入姗姗银行:请登录(选1)或注册(选2)");
Scanner in1=new Scanner(System.in);
int x=in1.nextInt();
if(x==1) {
c=DengLu.login();//调用操作类中的登录方法
if(c==0){
while(count>0) {
System.out.println("账号或密码错误,请重新登录,还有"+count+"次机会");
c=DengLu.login();
if(c==0) {
count--;
continue;
}
else
break;
}
if(count==0) {
System.out.println("你的次数已用完,请到柜台办理业务");
System.exit(0);//当多次输入错误时,会强制退出系统
}
}
}
else {
if(x==2) {
DengLu.zhuce();
System.out.println("您已成功注册,请登录");
DengLu.copy();
DengLu.login();
// System.exit(0);
}
else {
System.out.println("您输入有误,请重新输入");
System.exit(0);
}
}
System.out.println("请选择操作:1:存款 2:取款 3:查询余额 0:安全退出");
Scanner in=new Scanner(System.in);
while(true) {
int key=in.nextInt();
switch (key) {
case 1://存款业务
System.out.println("请输入存款金额");
int a = in.nextInt();
DengLu.cunqian(a);
System.out.println("请继续选择操作");
break ;
case 2://取款业务
System.out.println("请输入取款金额");
int b=in.nextInt();
DengLu.quqian(b);
System.out.println("请继续选择操作");
break ;
case 3://显示余额
DengLu.showmoney();
System.out.println("请继续选择操作");
break ;
case 0://安全退出
System.out.println("已安全退出,欢迎下次再来");
//这里想用IO操作存储到一个文件中
DengLu.copy();
System.exit(0);
break ;
}
}
}
}
操作类
package ding029;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
public class DengLu {
static String name;//改成静态的,可以全局调用
static String pwd;
public static int login() {//登录
int flag=0;
User.map();//调用方法,添加元素
// System.out.println(User.hasmap);
Scanner in=new Scanner(System.in);
System.out.println("请输入姓名");
name=in.nextLine();
System.out.println("请输入密码");
pwd=in.nextLine();
Set set= User.hasmap.keySet();//调用用户类对象中的方法,返回一个Set类型的集合
//System.out.println(User.hasmap);//测试
Iterator it=set.iterator();//用Set集合中的迭代器去迭代集合中的元素
while(it.hasNext()) {
User key=(User) it.next();
if(key.getName().equals(name)) {//得到这个集合后就得到里面的对象,调用get方法循环比对
if(key.getPasswd().equals(pwd)) {
System.out.println("登陆成功 "+key.getName().toString().charAt(0)+"先生");
//用字符串中方法得到姓名中的第一个姓
flag=1;
}
}
}//设置一个状态变量来判断账户是否存在
return flag;
}
public static void cunqian(int a) {//存钱
Set s=User.hasmap.keySet();
Iterator it=s.iterator();//同样是用迭代器的方法得到集合中的对象,然后操作
while (it.hasNext()) {
User u = (User) it.next();
if(u.getName().equals(name)) {
int mon =u.getMoney()+a;
u.setMoney(mon);//这里直接赋值给getname不行,要给setname
System.out.println("存入"+a+"元,"+"余额"+u.getMoney()+"元");
}
}
}
public static void quqian(int b) {//取钱
Set s=User.hasmap.keySet();
Iterator it=s.iterator();
while (it.hasNext()) {
User u = (User) it.next();
if(u.getName().equals(name)) {
if(u.getMoney()>=b) {
int x=u.getMoney()-b;
u.setMoney(x);
System.out.println("取出"+b+"元"+"余额"+u.getMoney()+"元");
}
else {
System.out.println("余额不足,请重新选择取款金额");
}
}
}
}
public static void showmoney() {//显示余额
Set s=User.hasmap.keySet();
Iterator it=s.iterator();
while (it.hasNext()) {
User u = (User) it.next();
if(u.getName().equals(name)) {
System.out.println("余额:"+u.getMoney()+"元");
}
}
}
public static void copy() throws IOException {
// FileOutputStream fos=new FileOutputStream("D:\\user.txt");
BufferedWriter bw = new BufferedWriter(new FileWriter("user.txt"));
Set s=User.hasmap.keySet();
Iterator it=s.iterator();
while (it.hasNext()) {
User u = (User) it.next();
String s1="姓名:"+u.getName()+" 卡号:"+u.getCarbord()+" 金额:"+u.getMoney()+" 密码"+u.getPasswd();
bw.write(s1);
bw.newLine();
bw.flush();
}
}
public static void zhuce() {
Scanner sc=new Scanner(System.in);
System.out.println("请输入姓名");
String name=sc.nextLine();
System.out.println("请输入卡号");
String car=sc.nextLine();
System.out.println("请输入密码");
String mima=sc.nextLine();
System.out.println("请再次输入密码");
String mima2=sc.nextLine();
if(!mima.equals(mima2)) {
System.out.println("两次密码不同,请重新输入密码");
mima2=sc.nextLine();
}
Set set=User.map();//解决没有添加上这个集合的问题
User u5=new User(name,car,mima2,0);
User.hasmap.put(u5, mima);
// System.out.println(User.hasmap);
}
}
用户类
package ding029;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class User {
static HashMap<User, String> hasmap=new HashMap<User, String>();//静态调用
private String name;//姓名
private String carbord;//卡号
private String passwd;//密码
private int money;//金额
public User(String name, String carbord, String passwd, int money){//有参构造函数
super();
this.name = name;
this.carbord = carbord;
this.passwd = passwd;
this.money = money;
}
public User() {//无参
super();
// TODO Auto-generated constructor stub
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCarbord() {
return carbord;
}
public void setCarbord(String carbord) {
this.carbord = carbord;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
static User u11=new User("丁**","10","3357",3000);//创建User类对象并赋值
static User u21=new User("大熊","11","3356",300);
static User u31=new User("皮卡丘","12","3355",2000);
static User u41=new User("王二","13","3354",30000);
public static Set map() {
hasmap.put(u11, "3357");//存放到Map集合中
hasmap.put(u21, "3356");
hasmap.put(u31, "3355");
hasmap.put(u41, "3354");
return hasmap.keySet();//返回的是Set集合
}
}