问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java相关问题关于类和对象

发布网友 发布时间:2022-08-18 18:52

我来回答

3个回答

热心网友 时间:2023-11-10 16:59

无聊帮你写一个,这不就是模拟一哥ATM机么 开辟一个线程就行 基本逻辑通过详细逻辑自己加
首先是DB类模拟数据库
/**
* 模拟数据库
*
* @author Administrator
*
*/
public class DB {

private static Map<Integer, Integer> accountDB = new HashMap<Integer, Integer>();

static {
for (int i = 0; i < 10; i++) {
accountDB.put(i, 100);
}
}

private DB() {
}

private static class DBFactroy {
private static DB instance = new DB();
}

public static DB getInstance() {
return DBFactroy.instance;
}

public static boolean contain(int id) {
return accountDB.containsKey(id);
}

public static int cheackBalance(int id) {
return accountDB.get(id);
}

public static boolean withdraw(int id, int money) {
int leftMoney = accountDB.get(id);
if (leftMoney >= money) {
accountDB.put(id, accountDB.get(id) - money);
return true;
}
return false;
}

public static void deposit(int id, int money) {
accountDB.put(id, accountDB.get(id) + money);
}

}

之后是Accont类模式ATM机 是线程
//ATM取款线程类
public class Account implements Runnable {

private static int currentAccountId = -1;
Scanner read = new Scanner(System.in);

// 执行界面初始化
public void init() {
System.out.println("1.查询");
System.out.println("2.取款");
System.out.println("3.存款");
System.out.println("4.返回主界面(退卡)");
}

//接受输入命令
public Integer acceptCommand(String commamd) {
System.out.println("输入".concat(commamd).concat("..."));
String input = read.nextLine();
if (input.matches("^[0-9]*$")) {
return Integer.valueOf(input);
}
return -1;
}

//操作选择
public void doOperator(int command, int accountId) {
if (!validate(accountId)) {
return;
}
switch (command) {
case 1:
cheackBalance(accountId);
break;
case 2:
withdraw(accountId);
break;
case 3:
deposit(accountId);
break;
case 4:
clearCurrentAccountId();
return;
default:
System.out.println("无次帐号请重新输入");
break;
}
}

private void clearCurrentAccountId() {
currentAccountId = -1;
}

//验证是否有当前帐号
public boolean validate(int id) {
if (!DB.contain(id)) {
return false;
}
return true;
}
//查询余额
public void cheackBalance(int id) {
System.out.println(DB.cheackBalance(id));
read.nextLine();
}
//取款
public void withdraw(int id) {
int money = acceptCommand("取钱数目");
if (!DB.withdraw(id, money)) {
System.out.println("取钱失败");
} else {
System.out.println("取钱成功");
}
read.nextLine();
}

//存款
public void deposit(int id) {
int money = acceptCommand("存钱数目");
DB.deposit(id, money);
System.out.println("存数成功");
read.nextLine();
}

//模拟主方法
public void command() {
init();
int commandNum = acceptCommand("操作列表");
if (currentAccountId == -1) {
currentAccountId = acceptCommand("帐号");
}
doOperator(commandNum, currentAccountId);
}

@Override
public void run() {
while (true) {
command();
}
}

public static void main(String[] args) {
Account ac = new Account();
Thread thread = new Thread(ac);
thread.start();
}
}

执行结果
1.查询
2.取款
3.存款
4.返回主界面(退卡)
输入操作列表...
1
输入帐号...
1
100

1.查询
2.取款
3.存款
4.返回主界面(退卡)
输入操作列表...
2
输入取钱数目...
50
取钱成功

1.查询
2.取款
3.存款
4.返回主界面(退卡)
输入操作列表...
1
50

1.查询
2.取款
3.存款
4.返回主界面(退卡)
输入操作列表...
3
输入存钱数目...
50
存数成功

1.查询
2.取款
3.存款
4.返回主界面(退卡)
输入操作列表...
1
100

1.查询
2.取款
3.存款
4.返回主界面(退卡)
输入操作列表...
4
1.查询
2.取款
3.存款
4.返回主界面(退卡)
输入操作列表...
1
输入帐号...
1
100

热心网友 时间:2023-11-10 17:00

import java.util.Scanner;

public class App {
private Account[] accountIDs;// 用户储存账户的数组

public static void main(String[] args) {
// 启动程序
App app = new App();
app.start();
}

/**
*
* @param i为传入的用户ID
*/
private void showSystemMenu(int i) {
System.out.println("account is exist");
System.out.println("================================================");
System.out.println("Main menu");
System.out.println("1:check balance");
System.out.println("2:withdraw");
System.out.println("3:deposit");
System.out.println("4:exit");
System.out.println("================================================");
System.out.println("Enter a choice: ");
Scanner input = new Scanner(System.in);

int menu = input.nextInt();
if (menu == 1) {
System.out.println("The balance is " + accountIDs[i].getBalance());
showSystemMenu(i);

} else if (menu == 2) {
System.out.println("Enter an amount to withdraw: ");
double amount = input.nextDouble();

accountIDs[i].withdraw(amount);
showSystemMenu(i);

} else if (menu == 3) {
System.out.println("Enter an amount to deposit: ");
double amount = input.nextDouble();
accountIDs[i].deposit(amount);
showSystemMenu(i);

} else if (menu == 4) {
// 提出系统
System.exit(0);
}
}

public void start() {

int id;
accountIDs = new Account[10];
// 开始先初始化十个用户,并赋初值余额100
for (int i = 0; i < 10; i++) {
Account account = new Account(i, 100);
accountIDs[i] = account;

}
System.out.println("accountIDs.length:" + accountIDs.length);
System.out.println("Enter an id: ");
Scanner input = new Scanner(System.in);
id = input.nextInt();

for (int i = 0; i < accountIDs.length; i++) {
while (id == accountIDs[i].getId()) {
showSystemMenu(i);//调用方法并传入当前的用户ID

}
}

System.out.println("输入的账户不正确");
start();

}
}

import java.util.Date;

public class Account {
private int id;
private double balance = 100;
private double annualInterestRate;
private Date dateCreated;

public Account() {
super();
}

public Account(int id, double balance) {
super();
this.id = id;
this.balance = balance;
this.dateCreated = new Date();
}

public double getMonthlyInterest() {
return balance * (annualInterestRate / 1200);
}

public void withdraw(double amount) {
this.balance -= amount;
}

public void deposit(double amount) {
this.balance += amount;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public double getBalance() {
return balance;
}

public void setBalance(double balance) {
this.balance = balance;
}

public double getAnnualInterestRate() {
return annualInterestRate;
}

public void setAnnualInterestRate(double annualInterestRate) {
this.annualInterestRate = annualInterestRate;
}

public Date getDateCreated() {
return dateCreated;
}

}

热心网友 时间:2023-11-10 17:00

需要实体类吗??你这个实体类是干什么的?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...爱你你是我的罗密欧 , 我愿意变成你的朱丽叶' 谁知 有句歌词是“我爱你你是我的朱丽叶,我愿意变成你的梁山伯”是哪... 为什么打印出来的文档页码和原来的不一样 ...两台电脑用路由器上网一台是W7一台是XP如何实现两台电脑共享文件 win7怎么联另一台电脑win7怎么让网络和另一台电脑共享 w7的系统怎么共享电脑w7系统里面文件怎么共享另一台电脑 共享win7电脑w7系统里面文件怎么共享另一台电脑 翡翠有收藏价值吗,我们玩家如何去投资 价格一两万元的翡翠如何挑选 ppt怎么转换成视频?简单四步法,轻松搞定ppt微课录制 核酸混采在规定人数未满时医务人员可否一直将试管盖开着? 精英手册有的好友可以索要有的就要系统不行什么意思了? 小孩体温35.6度正常吗 win7下,标准用户无法使用QQ,提示要管理员密码,求解决,急急 红米note联通4g增强版原装系统版本,miui6刷回miui5 红米note怎么从miui6降到miui5 欧锦葵在护肤品内起到什么作用? 锦葵能在室外越冬吗? 抢劫故意杀人如何判刑 抢劫过程中故意杀人的怎么判刑 观叶花卉螺旋铁怎样培植。我家的观叶花卉螺旋铁长得太高了,扔掉又可惜了。可不可以从中间剪断插栽呢? 螺纹铁太高了怎么办 女生梦见自己暗恋的人亲密的摸自己的头发,然后离开了,什么意思 自驾车从沈阳到本溪关门山旅游怎么走 冬季国内旅游去哪里好? 在菜鸡中雪地奔驰中怎么用手柄开灯 g50手柄怎么玩云游戏 创维液晶电视55v9e丢了遥控器怎么办? 买了几条白沙烟,如何辨别是软白沙烟还是硬白沙烟? 白沙烟怎么样 Win8中Tiworker.exe是什么进程 怎样开启TiWorkerexe+Windows+Modules+Installer+Worker占了 知乎 为什么有的女人屁股特别大 我屁股很大怎么办?有没有什么办法让屁股减小 蚂蚁生活在怎样的环境里 长脖老等是什么鸟 在原基本账户未销,新账户未开,原账户资金如何处理? IE浏览器上不了网了,打不开网页,诊断连接问题结果为配置的代理服务器未响应,怎么办呀,求救 有没有洗马镇去武汉火车站的公交车? 武汉高铁站到汉阳洗马长街怎么走 从武昌火车站到武汉晴川阁洗马长街88号怎么坐车 洗马到洪江区有多远 洗马属于武汉市什么区? insidethebackrooms怎么邀请好友 长歌行汉乐府表 达了什么20字? 社保移交 帐户余额 计算机二级考试成绩划分等级 计算机二级考试分数分配 计算机二级成绩等级 计算机二级等级划分重要吗