三、总体设计(设计原理、设计方案及流程等) 我的代码使用了对象序列化和反序列化的方式 将对象属性保存到磁盘中去,从而实现记录底层数据,并且将序列化和反序列化写成两个独立的方法,我们只需在主类中调用方法即可;在对象类中实现了Serializable类。 在com.ggc包下创建了BankObject对象类和BankDemo主类 在BankObject类中定义了一些private属性和对应的public型setter和getter方法用于对成员变量赋值和引用 在主类中定义的mothod1方法用于对错误卡号报错并重新输入 Mothod2方法用于对错误密码报错并重新输入 卡号为键,对象为值。用keySet方法得到键的set集合,用增强for循环,并在循环中对输入的卡号进行判断,如果错误就一直调用mothod1方法,从而实现卡号报错并重新输入; 密码判断与卡号判断大致相同mothod2方法 1.存款 2.取款 3.余额查询 4.修改密码 0.退出 该业务使用switch开关语句,在语句中使用while语句检验输入的金额是否合法,并实现重新输入。 特点:在switch语句外面使用while语句来实现0.退出功能 使用方法循环调用的形式对错误内容报错并重新输入 逻辑性较强环环相扣 package com.ggc;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;
public class BankDemo {
private static int ID;
public static void main(String[] args) {
BankDemo bd=new BankDemo();
//bd.objectInputStream();
HashMap<Integer,BankObject> map=new HashMap<Integer,BankObject>();
BankObject B1=(BankObject)bd.objectInputStream();
BankObject B2=(BankObject)bd.objectInputStream1();
//BankObject B1=new BankObject("刘德华", "男",123456,1000);
//BankObject B2=new BankObject("赵瑞娜","女",654321,2000);
map.put(666666, B1);
map.put(888888, B2);
Scanner scanner=new Scanner(System.in);
int n=0;
int k=1,deposit;//开关条件,存款金额
int withdrawals;//取款金额
int password;
int Id,Code;
boolean bl ;//返回值
Set<Integer> keySet=map.keySet();
//for(Integer key :keySet) {
//BankObject value=map.get(keySet);
System.out.println("----------欢迎使用G式银行服务系统-----------");
System.out.println("请输入银行卡号:");
Id=scanner.nextInt();
//BankDemo bd=new BankDemo();
//bd.mothod1();
for(Integer key : keySet) {
//if(n>=1) System.out.println("银行卡号输入错误,请重新输入!");
if((int)key!=Id) {
n++;
if(n==2) {
System.out.println("银行卡号输入错误,请重新输入!");
do {
Id=scanner.nextInt();
bl=bd.mothod1(keySet, Id);
//bl=bd.mothod1(keySet);
}while(bl);
//System.out.println("银行卡号正确!");
System.out.println("请输入密码!");
}
}else {
System.out.println("请输入密码:");
ID=Id;
/*Code=scanner.nextInt();
if(map.get(key).getCode()==Code) {
System.out.println("登陆成功!欢迎"+map.get(key).getName());
}else {
System.out.println("密码错误,请重新输入!");
}*/
}
}
//BankObject value=map.get(Id);
Id=ID;
Code=scanner.nextInt();
do {
if(Code!=map.get(Id).getCode()) {
System.out.println("密码输入错误,请重新输入!");
bl=bd.mothod2(map.get(Id));
}else {
bl=false;
}
}while(bl);
System.out.println("登陆成功!欢迎"+map.get(Id).getName()+map.get(Id).getSex()+"士"+"!");
System.out.println("请选择您需要办理的业务:"
+ "1.存款 2.取款 3.余额查询 4.修改密码 0.退出");
while(k!=0) {
k=scanner.nextInt();
switch(k) {
case 1:{
System.out.println("请输入存款金额:");
deposit=scanner.nextInt();
while(deposit<0) {
System.out.println("输入金额非法!请重新输入");
deposit=scanner.nextInt();
}
map.get(Id).setBalance(map.get(Id).getBalance()+deposit);
System.out.println("存款成功!您当前的余额为:"+map.get(Id).getBalance());
map.get(Id).setBalance(map.get(Id).getBalance());
System.out.println("请选择您需要办理的业务:"
+ "1.存款 2.取款 3.余额查询 4.修改密码 0.退出");
break;
}
case 2:{
System.out.println("请输入取款金额:");
withdrawals=scanner.nextInt();
while(withdrawals<0||withdrawals>map.get(Id).getBalance()) {
System.out.println("输入金额非法!请重新输入");
withdrawals=scanner.nextInt();
}
map.get(Id).setBalance(map.get(Id).getBalance()-withdrawals);
System.out.println("取款成功!您当前的余额为:"+map.get(Id).getBalance());
map.get(Id).setBalance(map.get(Id).getBalance());
System.out.println("请选择您需要办理的业务:"
+ "1.存款 2.取款 3.余额查询 4.修改密码 0.退出");
break;
}
case 3:{
System.out.println("您当前的余额为:"+map.get(Id).getBalance());
System.out.println("请选择您需要办理的业务:"
+ "1.存款 2.取款 3.余额查询 4.修改密码 0.退出");
break;
}
case 4:{
System.out.println("请输入旧密码:");
password=scanner.nextInt();
while(password!=map.get(Id).getCode()) {
System.out.println("旧密码输入错误!请重新输入");
password=scanner.nextInt();
}
System.out.println("请输入新密码:");
password=scanner.nextInt();
map.get(Id).setCode(password);
System.out.println("密码修改成功!");
System.out.println("请选择您需要办理的业务:"
+ "1.存款 2.取款 3.余额查询 4.修改密码 0.退出");
break;
}
}
}
bd.objectOutputStream(B1);
bd.objectOutputStream1(B2);
System.out.println("银行系统已退出!欢迎您再次使用!");
}
public void objectOutputStream1(BankObject B) {
ObjectOutputStream oos=null;
try {
oos=new ObjectOutputStream(new FileOutputStream("D:\\Java开发\\eclipse\\eclipse-workspace\\ggc\\oos1.txt"));
oos.writeObject(B);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
oos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void objectOutputStream(BankObject B) {
ObjectOutputStream oos=null;
try {
oos=new ObjectOutputStream(new FileOutputStream("D:\\Java开发\\eclipse\\eclipse-workspace\\ggc\\oos.txt"));
oos.writeObject(B);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
oos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public Object objectInputStream() {
BankObject b=null;
ObjectInputStream ois=null;
try {
ois=new ObjectInputStream(new FileInputStream("D:\\Java开发\\eclipse\\eclipse-workspace\\ggc\\oos.txt"));
Object obj=ois.readObject();
b=(BankObject) obj;
System.out.println(b.getName()+","+b.getSex()+","+b.getBalance());
ois.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
ois.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return b;
}
public Object objectInputStream1() {
BankObject b=null;
ObjectInputStream ois=null;
try {
ois=new ObjectInputStream(new FileInputStream("D:\\Java开发\\eclipse\\eclipse-workspace\\ggc\\oos1.txt"));
Object obj=ois.readObject();
b=(BankObject) obj;
System.out.println(b.getName()+","+b.getSex()+","+b.getBalance());
ois.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
ois.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return b;
}
public boolean mothod1(Set keySet,int Id) {
//Scanner scanner=new Scanner(System.in);
//int c=scanner.nextInt();
int m=0;
for(Object key : keySet) {
if((int)key!=Id) {
m++;
}
}
if(m>=2) {
System.out.println("银行卡号输入错误,请重新输入!");
}
if( m>=2) {
return true;
}else {
ID=Id;
return false;
}
}
public boolean mothod2(BankObject value) {
Scanner scanner=new Scanner(System.in);
int c=scanner.nextInt();
int m=0;
// for( m=0;m<=2;) {
if((int)value.getCode()!=c) {
m++;
}
//}
if(m>=2) {
System.out.println("密码输入错误,请重新输入!");
}
if( m>=1) {
return true;
}else {
return false;
}
}
}
|