概述
用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 { //用户类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) {
/*存款方法
* 传入账号Card,循环变量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) {
/*取款方法
* 传入账号Card,循环变量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) {
/*查询方法
* 传入账号Card,循环变量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; i < userList.size(); i++) {
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(){}
处理可能发生的异常,就可以了。
最后
以上就是机灵火车为你收集整理的用java实现一个简易自动提款机用java实现一个简易自动提款机,且有以下要求的全部内容,希望文章能够帮你解决用java实现一个简易自动提款机用java实现一个简易自动提款机,且有以下要求所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复