要求:
下面是我写的程序,仅供同学参考!
主要的设计思路是以对象为单位存取,用到ObjectI流 由于不用字符解析,所以是比较简单的方法,但在实际中应用可能会存在问题,但做个试验还是可以的.
源码:
package bank.dos;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
class Admin {
private static String userName = "admin";
private static String passWord = "admin";
public Admin() {
}
public static String getPassWord() {
return passWord;
}
}
/*
* Serializable 对象序列化
*/
class Users implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String userName;
private String passWord;
private boolean frozen;
private float money;
public Users() {
setPassWord("123");
frozen = false;
money = 0;
}
public boolean isFrozen() {
return frozen;
}
public void setFrozen(boolean frozen) {
this.frozen = frozen;
}
public float getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public void setMoney(float money) {
this.money = money;
}
}
class Operation {
/*
* 创建用户
*/
public static boolean createUser(String userName) throws IOException {
Users user = new Users();
user.setUserName(userName);
File oldfile = new File(userName + ".dat");
if (oldfile.exists()) {
// System.out.println("该用户的帐户已经存在,请重新输入!");
return false;
} else {
FileOutputStream f = new FileOutputStream(oldfile);
ObjectOutputStream b = new ObjectOutputStream(f);
b.writeObject(user);
b.flush();
b.close();
return true;
}
}
/*
* 读取用户
*/
public static Users readUsers(String userName) throws IOException,
ClassNotFoundException {
File oldfile = new File(userName + ".dat");
if (!oldfile.exists()) {
// System.out.println("您输入的帐户不存在,请重新输入!");
return null;
} else {
FileInputStream f = new FileInputStream(oldfile);
ObjectInputStream b = new ObjectInputStream(f);
Users user = (Users) b.readObject();
b.close();
return user;
}
}
/*
* 更新用户
*/
public static boolean upDataUsers(Users user) throws IOException {
File oldfile = new File(user.getUserName() + ".dat");
if (!oldfile.exists()) {
// System.out.println("您输入的帐户不存在,请重新输入!");
return false;
} else {
FileOutputStream f = new FileOutputStream(oldfile);
ObjectOutputStream b = new ObjectOutputStream(f);
b.writeObject(user);
b.flush();
b.close();
return true;
}
}
/*
* 删除用户
*/
public static boolean deleteUser(String user) {
File f = new File(user+".dat");
if (!f.exists()) {
// System.out.println("您输入的帐户不存在,请重新输入!");
return false;
} else {
f.delete();
return true;
}
}
}
public class BankMain {
/**
* @ mc1035
*/
public static void main(String[] args) {
String operate = null;
String userName = null;
String passWord = null;
float money = 0;
int ope=-1;
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("欢迎使用本银行系统,请先登陆!");
while(ope!=10){
System.out.print("请输入用户名:");
try {
userName = in.readLine();
if (userName.equals("admin")) {
System.out.print("请输入密码:");
passWord = in.readLine();
if (passWord.equals(Admin.getPassWord())) {
System.out.println("欢迎管理员登陆:");
System.out.println("0为开户");
System.out.println("1为消户");
System.out.println("2为冻结帐户");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
while (!operate.equals("10")) {
switch(ope){
case 0:
System.out.print("请输入新的用户名,密码默认为123:");
userName = in.readLine();
if (userName != null) {
if (Operation.createUser(userName)) {
System.out.println("开户成功,请继续选择操作");
System.out.println("0为开户");
System.out.println("1为消户");
System.out.println("2为冻结帐户");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break ;
} else {
System.out.println("该用户的帐户已经存在,请重新输入用户名!");
break ;
}
} else {
System.out.print("用户名不能为空,");
break ;
}
case 1:
System.out.print("请输入消户帐户的用户名:");
userName = in.readLine();
if (userName != null) {
if (Operation.deleteUser(userName)) {
System.out.println("消户成功,请继续选择操作");
System.out.println("0为开户");
System.out.println("1为消户");
System.out.println("2为冻结帐户");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break ;
} else {
System.out.println("该用户的帐户不存在,请继续操作!");
System.out.println("0为开户");
System.out.println("1为消户");
System.out.println("2为冻结帐户");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break ;
}
} else {
System.out.print("用户名不能为空,");
break ;
}
case 2:
System.out.print("请输入要冻结的帐户的用户名:");
userName = in.readLine();
if (userName != null) {
Users user=Operation.readUsers(userName);
if(user!=null){
user.setFrozen(true);
if(Operation.upDataUsers(user)){
System.out.println("冻结成功,请继续操作");
System.out.println("0为开户");
System.out.println("1为消户");
System.out.println("2为冻结帐户");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break;
}else{
System.out.println("冻结失败,请重新操作");
System.out.println("0为开户");
System.out.println("1为消户");
System.out.println("2为冻结帐户");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break;
}
}else{
System.out.println("该用户的帐户不存在,请重新操作!");
System.out.println("0为开户");
System.out.println("1为消户");
System.out.println("2为冻结帐户");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break;
}
} else {
System.out.print("用户名不能为空,请重新输入:");
break;
}
case 10:
System.out.print("退出成功:");
break;
default:
System.out.print("操作码错误,请重新输入!");
operate = in.readLine();
ope=Integer.parseInt(operate);
break;
}
}
} else {
System.out.println("密码错误,请重新输入!");
}
}else{
Users user=Operation.readUsers(userName);
if(user!=null){
if(user.isFrozen()){
System.out.print("该用户已经被冻结,请与管理员联系,系统将自动退出!");
ope=10;
}else{
System.out.print("请输入密码:");
passWord = in.readLine();
if(user.getPassWord().equals(passWord)){
System.out.println("欢迎"+user.getUserName()+"登陆:");
System.out.println("0为存钱");
System.out.println("1为取钱");
System.out.println("2为转帐");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
while (!operate.equals("10")) {
switch(ope){
case 0:
System.out.print("请输入要存钱金额:");
money = Float.parseFloat(in.readLine());
money+=user.getMoney();
user.setMoney(money);
if(Operation.upDataUsers(user)){
System.out.print("操作成功:");
}else{
System.out.print("系统错误,请与管理员联系!:");
ope=10;
operate="10";
break;
}
System.out.println("您当前余额为:"+user.getMoney()+"元请继续操作");
System.out.println("0为存钱");
System.out.println("1为取钱");
System.out.println("2为转帐");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break ;
case 1:
System.out.print("请输入取款金额:");
money = Float.parseFloat(in.readLine());
if(user.getMoney()-money<0){
System.out.println("余额不足,取款失败!");
System.out.println("您当前余额为:"+user.getMoney()+"元请继续操作");
System.out.println("0为存钱");
System.out.println("1为取钱");
System.out.println("2为转帐");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break;
}else{
money=user.getMoney()-money;
user.setMoney(money);
if(Operation.upDataUsers(user)){
System.out.print("操作成功:");
}else{
System.out.print("系统错误,请与管理员联系!:");
ope=10;
operate="10";
break;
}
System.out.println("您当前余额为:"+user.getMoney()+"元请继续操作");
System.out.println("0为存钱");
System.out.println("1为取钱");
System.out.println("2为转帐");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break;
}
case 2:
System.out.print("请输入要转帐的帐户的用户名:");
userName = in.readLine();
if (userName != null) {
Users temp=Operation.readUsers(userName);
if(temp!=null){
System.out.println("请输入要转帐的金额:");
money = Float.parseFloat(in.readLine());
if(user.getMoney()-money<0){
System.out.println("您当前余额不足,转帐失败!");
System.out.println("您当前余额为:"+user.getMoney()+"元请继续操作");
System.out.println("0为存钱");
System.out.println("1为取钱");
System.out.println("2为转帐");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break;
}else{
float addMoney=temp.getMoney()+money;
float tempMonye=user.getMoney()-money;
user.setMoney(tempMonye);
if(Operation.upDataUsers(user)){
temp.setMoney(addMoney);
if(Operation.upDataUsers(temp)){
System.out.print("操作成功:");
}else{
System.out.print("系统错误,请与管理员联系!:");
ope=10;
operate="10";
break;
}
System.out.println("您当前余额为:"+user.getMoney()+"元请继续操作");
}else{
System.out.println("操作失败!");
user.setMoney(user.getMoney()+money);
System.out.println("您当前余额为:"+user.getMoney()+"元请继续操作");
}
System.out.println("0为存钱");
System.out.println("1为取钱");
System.out.println("2为转帐");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break;
}
}else{
System.out.println("该您要转帐的帐户不存在,请重新操作!");
System.out.println("0为存钱");
System.out.println("1为取钱");
System.out.println("2为转帐");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break;
}
} else {
System.out.print("用户名不能为空,转帐失败,请继续操作:");
System.out.println("0为存钱");
System.out.println("1为取钱");
System.out.println("2为转帐");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break;
}
case 10:
if(Operation.upDataUsers(user)){
System.out.print("退出成功:");
}else{
System.out.print("系统错误,请与管理员联系!:");
}
break;
default:
System.out.print("操作码错误,请重新输入!");
operate = in.readLine();
ope=Integer.parseInt(operate);
break;
}
}
}else{
System.out.print("密码错误,请重新输入!");
}
}
}else{
System.out.println("该用户不存在,请重新输入!");
}
}
} catch (Exception e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
}
}
由于该程序写的比较匆忙,功能上不是很完善,还希望同学们能加以改进,并且多多交流,共同进步
定义文本存储数据的格式,进行类和方法的设计和用户操作界面的流程设计,编码调试后,对程序进行测试。
控制台下模拟银行取款机,普通用户实现登录、取钱、存钱、转帐功能。管理员登录后可以添加、删除和冻结帐户。下面是我写的程序,仅供同学参考!
主要的设计思路是以对象为单位存取,用到ObjectI流 由于不用字符解析,所以是比较简单的方法,但在实际中应用可能会存在问题,但做个试验还是可以的.
源码:
package bank.dos;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
class Admin {
private static String userName = "admin";
private static String passWord = "admin";
public Admin() {
}
public static String getPassWord() {
return passWord;
}
}
/*
* Serializable 对象序列化
*/
class Users implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String userName;
private String passWord;
private boolean frozen;
private float money;
public Users() {
setPassWord("123");
frozen = false;
money = 0;
}
public boolean isFrozen() {
return frozen;
}
public void setFrozen(boolean frozen) {
this.frozen = frozen;
}
public float getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public void setMoney(float money) {
this.money = money;
}
}
class Operation {
/*
* 创建用户
*/
public static boolean createUser(String userName) throws IOException {
Users user = new Users();
user.setUserName(userName);
File oldfile = new File(userName + ".dat");
if (oldfile.exists()) {
// System.out.println("该用户的帐户已经存在,请重新输入!");
return false;
} else {
FileOutputStream f = new FileOutputStream(oldfile);
ObjectOutputStream b = new ObjectOutputStream(f);
b.writeObject(user);
b.flush();
b.close();
return true;
}
}
/*
* 读取用户
*/
public static Users readUsers(String userName) throws IOException,
ClassNotFoundException {
File oldfile = new File(userName + ".dat");
if (!oldfile.exists()) {
// System.out.println("您输入的帐户不存在,请重新输入!");
return null;
} else {
FileInputStream f = new FileInputStream(oldfile);
ObjectInputStream b = new ObjectInputStream(f);
Users user = (Users) b.readObject();
b.close();
return user;
}
}
/*
* 更新用户
*/
public static boolean upDataUsers(Users user) throws IOException {
File oldfile = new File(user.getUserName() + ".dat");
if (!oldfile.exists()) {
// System.out.println("您输入的帐户不存在,请重新输入!");
return false;
} else {
FileOutputStream f = new FileOutputStream(oldfile);
ObjectOutputStream b = new ObjectOutputStream(f);
b.writeObject(user);
b.flush();
b.close();
return true;
}
}
/*
* 删除用户
*/
public static boolean deleteUser(String user) {
File f = new File(user+".dat");
if (!f.exists()) {
// System.out.println("您输入的帐户不存在,请重新输入!");
return false;
} else {
f.delete();
return true;
}
}
}
public class BankMain {
/**
* @ mc1035
*/
public static void main(String[] args) {
String operate = null;
String userName = null;
String passWord = null;
float money = 0;
int ope=-1;
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("欢迎使用本银行系统,请先登陆!");
while(ope!=10){
System.out.print("请输入用户名:");
try {
userName = in.readLine();
if (userName.equals("admin")) {
System.out.print("请输入密码:");
passWord = in.readLine();
if (passWord.equals(Admin.getPassWord())) {
System.out.println("欢迎管理员登陆:");
System.out.println("0为开户");
System.out.println("1为消户");
System.out.println("2为冻结帐户");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
while (!operate.equals("10")) {
switch(ope){
case 0:
System.out.print("请输入新的用户名,密码默认为123:");
userName = in.readLine();
if (userName != null) {
if (Operation.createUser(userName)) {
System.out.println("开户成功,请继续选择操作");
System.out.println("0为开户");
System.out.println("1为消户");
System.out.println("2为冻结帐户");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break ;
} else {
System.out.println("该用户的帐户已经存在,请重新输入用户名!");
break ;
}
} else {
System.out.print("用户名不能为空,");
break ;
}
case 1:
System.out.print("请输入消户帐户的用户名:");
userName = in.readLine();
if (userName != null) {
if (Operation.deleteUser(userName)) {
System.out.println("消户成功,请继续选择操作");
System.out.println("0为开户");
System.out.println("1为消户");
System.out.println("2为冻结帐户");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break ;
} else {
System.out.println("该用户的帐户不存在,请继续操作!");
System.out.println("0为开户");
System.out.println("1为消户");
System.out.println("2为冻结帐户");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break ;
}
} else {
System.out.print("用户名不能为空,");
break ;
}
case 2:
System.out.print("请输入要冻结的帐户的用户名:");
userName = in.readLine();
if (userName != null) {
Users user=Operation.readUsers(userName);
if(user!=null){
user.setFrozen(true);
if(Operation.upDataUsers(user)){
System.out.println("冻结成功,请继续操作");
System.out.println("0为开户");
System.out.println("1为消户");
System.out.println("2为冻结帐户");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break;
}else{
System.out.println("冻结失败,请重新操作");
System.out.println("0为开户");
System.out.println("1为消户");
System.out.println("2为冻结帐户");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break;
}
}else{
System.out.println("该用户的帐户不存在,请重新操作!");
System.out.println("0为开户");
System.out.println("1为消户");
System.out.println("2为冻结帐户");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break;
}
} else {
System.out.print("用户名不能为空,请重新输入:");
break;
}
case 10:
System.out.print("退出成功:");
break;
default:
System.out.print("操作码错误,请重新输入!");
operate = in.readLine();
ope=Integer.parseInt(operate);
break;
}
}
} else {
System.out.println("密码错误,请重新输入!");
}
}else{
Users user=Operation.readUsers(userName);
if(user!=null){
if(user.isFrozen()){
System.out.print("该用户已经被冻结,请与管理员联系,系统将自动退出!");
ope=10;
}else{
System.out.print("请输入密码:");
passWord = in.readLine();
if(user.getPassWord().equals(passWord)){
System.out.println("欢迎"+user.getUserName()+"登陆:");
System.out.println("0为存钱");
System.out.println("1为取钱");
System.out.println("2为转帐");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
while (!operate.equals("10")) {
switch(ope){
case 0:
System.out.print("请输入要存钱金额:");
money = Float.parseFloat(in.readLine());
money+=user.getMoney();
user.setMoney(money);
if(Operation.upDataUsers(user)){
System.out.print("操作成功:");
}else{
System.out.print("系统错误,请与管理员联系!:");
ope=10;
operate="10";
break;
}
System.out.println("您当前余额为:"+user.getMoney()+"元请继续操作");
System.out.println("0为存钱");
System.out.println("1为取钱");
System.out.println("2为转帐");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break ;
case 1:
System.out.print("请输入取款金额:");
money = Float.parseFloat(in.readLine());
if(user.getMoney()-money<0){
System.out.println("余额不足,取款失败!");
System.out.println("您当前余额为:"+user.getMoney()+"元请继续操作");
System.out.println("0为存钱");
System.out.println("1为取钱");
System.out.println("2为转帐");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break;
}else{
money=user.getMoney()-money;
user.setMoney(money);
if(Operation.upDataUsers(user)){
System.out.print("操作成功:");
}else{
System.out.print("系统错误,请与管理员联系!:");
ope=10;
operate="10";
break;
}
System.out.println("您当前余额为:"+user.getMoney()+"元请继续操作");
System.out.println("0为存钱");
System.out.println("1为取钱");
System.out.println("2为转帐");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break;
}
case 2:
System.out.print("请输入要转帐的帐户的用户名:");
userName = in.readLine();
if (userName != null) {
Users temp=Operation.readUsers(userName);
if(temp!=null){
System.out.println("请输入要转帐的金额:");
money = Float.parseFloat(in.readLine());
if(user.getMoney()-money<0){
System.out.println("您当前余额不足,转帐失败!");
System.out.println("您当前余额为:"+user.getMoney()+"元请继续操作");
System.out.println("0为存钱");
System.out.println("1为取钱");
System.out.println("2为转帐");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break;
}else{
float addMoney=temp.getMoney()+money;
float tempMonye=user.getMoney()-money;
user.setMoney(tempMonye);
if(Operation.upDataUsers(user)){
temp.setMoney(addMoney);
if(Operation.upDataUsers(temp)){
System.out.print("操作成功:");
}else{
System.out.print("系统错误,请与管理员联系!:");
ope=10;
operate="10";
break;
}
System.out.println("您当前余额为:"+user.getMoney()+"元请继续操作");
}else{
System.out.println("操作失败!");
user.setMoney(user.getMoney()+money);
System.out.println("您当前余额为:"+user.getMoney()+"元请继续操作");
}
System.out.println("0为存钱");
System.out.println("1为取钱");
System.out.println("2为转帐");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break;
}
}else{
System.out.println("该您要转帐的帐户不存在,请重新操作!");
System.out.println("0为存钱");
System.out.println("1为取钱");
System.out.println("2为转帐");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break;
}
} else {
System.out.print("用户名不能为空,转帐失败,请继续操作:");
System.out.println("0为存钱");
System.out.println("1为取钱");
System.out.println("2为转帐");
System.out.println("10为退出本系统");
operate = in.readLine();
ope=Integer.parseInt(operate);
break;
}
case 10:
if(Operation.upDataUsers(user)){
System.out.print("退出成功:");
}else{
System.out.print("系统错误,请与管理员联系!:");
}
break;
default:
System.out.print("操作码错误,请重新输入!");
operate = in.readLine();
ope=Integer.parseInt(operate);
break;
}
}
}else{
System.out.print("密码错误,请重新输入!");
}
}
}else{
System.out.println("该用户不存在,请重新输入!");
}
}
} catch (Exception e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
}
}
由于该程序写的比较匆忙,功能上不是很完善,还希望同学们能加以改进,并且多多交流,共同进步