用java实现一个简易自动提款机,且有以下要求
如何实现呢?首先,我们定义一个用户类User,同时根据要求设计好属性(本人部分命名没有使用驼峰命名法,不够规范)。因为一个人可能有多个卡,卡号又不能重复,所以我定义一个set来存储卡号。其余姓名,密码用String定义即可,余额我这里用的的double定义(不嫌麻烦也可以用BigDecimal)。然后自动生成构造方法和Getter和setter方法即可
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class User {
private Set<Integer> set=new TreeSet<Integer>() ;
private String name;
private String miMa;
private double yuE;
public User(int cardNum, String name, String miMa) {
this.set.add(cardNum) ;
this.name = name;
this.miMa = miMa;
this.yuE = 0;
}
public boolean hasNum(int CardNum) {
Iterator<Integer> iter=set.iterator();
while(iter.hasNext()){
int in=iter.next();
if(in==CardNum){
return true;
}
}
return false;
}
public void setCardNum(int cardNum) {
this.set.add(cardNum);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMiMa() {
return miMa;
}
public void setMiMa(String miMa) {
this.miMa = miMa;
}
public double getYuE() {
return yuE;
}
public void setYuE(double yuE) {
this.yuE += yuE;
}
public void setYuE2(double yuE) {
this.yuE -= yuE;
}
}
然后再定义一个类写方法实现取款机的功能,因为取款机不提供开户功能,所以这里我只写了简单的create方法,然后实现取款,存款,查询方法即可。
package com.baidu.HomeWork.Work16
import java.util.InputMismatchException
import java.util.Iterator
import java.util.LinkedList
import java.util.Scanner
public class Method {
static LinkedList<User> userList = new LinkedList<User>()
Scanner scan = new Scanner(System.in)
double mon
static int cardNum = 100000
static int Card = 0
void saveMon(int Card, int i) {
System.out.println("您的名字是" + userList.get(i).getName())
System.out.println("请输入存款金额")
try {
mon = scan.nextDouble()
} catch (InputMismatchException e) {
e.printStackTrace()
} catch (RuntimeException e) {
e.printStackTrace()
}
userList.get(i).setYuE(mon)
System.out.println("存入" + mon + "元")
System.out.println("现在您的账号余额" + userList.get(i).getYuE())
}
void getMon(int Card, int i) {
System.out.println("您的名字是" + userList.get(i).getName())
System.out.println("请输入取款金额")
try {
mon = scan.nextDouble()
} catch (InputMismatchException e) {
e.printStackTrace()
}
if (mon < userList.get(i).getYuE()) {
userList.get(i).setYuE2(mon)
System.out.println("取出" + mon + "元")
System.out.println("现在您的账号余额" + userList.get(i).getYuE())
}
}
void cha(int Card, int i) {
System.out.println("您的名字是" + userList.get(i).getName())
System.out.println("现在您的账号余额" + userList.get(i).getYuE())
}
void creatUser() {
String name = ""
String miMa = ""
System.out.println("请输入姓名")
try {
name = scan.next()
} catch (RuntimeException e) {
e.printStackTrace()
}
System.out.println("请输入密码")
try {
miMa = scan.next()
} catch (RuntimeException e) {
e.printStackTrace()
}
userList.add(new User(++cardNum, name, miMa))
System.out.println("您的账号是:" + cardNum)
}
int dengLu() { //登录方法,判断用户是否存在以及密码是否正确
boolean tag = true
String miMa
System.out.println("请输入账号")
try {
Card = scan.nextInt()
} catch (InputMismatchException e) {
e.printStackTrace()
} catch (RuntimeException e) {
e.printStackTrace()
}
System.out.println("请输入密码")
miMa = scan.next()
for (int i = 0
if (userList.get(i).hasNum(Card)) {
if (userList.get(i).getMiMa().equals(miMa)) {
return i
} else {
System.out.println("密码错误")
break
}
} else {
}
}
System.out.println("查无此号")
return -2
}
}
最后,在主类中定义一个链表存储User,在编写一个简易的菜单,把第二个文件写好的文件放入其中,取款机就写好了。
package com.baidu.HomeWork.Work16;
import java.util.InputMismatchException;
import java.util.LinkedList;
import java.util.Scanner;
public class GetMonMachine {
static int num = 0;
static boolean tag = true;
static boolean tag_1 = true;
static Scanner scan = new Scanner(System.in);
static Method gm = new Method();
public static void main(String[] args) {
gm.creatUser();
while (tag) {
int num;
if ((num = gm.dengLu()) != -2) {
System.out.println("1.存款");
System.out.println("2.取款");
System.out.println("3.查询余额");
System.out.println("4.退出取款机");
int scan_num = 4;
try {
scan_num = scan.nextInt();
} catch (InputMismatchException e) {
System.out.println("输入非法");
e.printStackTrace();
}
switch (scan_num) {
case 1:
gm.saveMon(Method.Card,num);
break;
case 2:
gm.getMon(Method.Card,num);
break;
case 3:
gm.cha(Method.Card,num);
break;
case 4:
tag = false;
break;
default:
System.out.println("输入有误,请重新输入");
break;
}
}
}
}
}
最后,在有输入的地方加上try{}catch(){}
处理可能发生的异常,就可以了。