package com.xt.lesson20;
/**
* 简易自动提款机 1. 创建用户类User(包含卡号、姓名、密码、余额等属性),用户开卡时录入的姓名和密码(自动分配一个卡号、初始金额设置为0)。
2. 使用ArrayList或LinkedList存储全部注册用户
形式如:ArrayList<User> userList = new ArrayList<User>();
3. 实现功能
(1)存款
(2)取款(如果余额不足要提示)
(3)查询余额(只能查看当前卡号的余额)
4. 技术要求,使用异常处理用户的错误输入(即程序保护容错功能)。 * @author LENOVO
*
*/
public class User {
private String ID;//卡号
private String name;//姓名
private int password;//密码
private int balance;//余额 //构造方法
public User(String ID, String name, int password, int balance) {
super();
this.ID = ID;
this.name = name;
this.password = password;
this.balance = balance;
} /**
* @return the iD
*/
public String getID() {
return ID;
} /**
* @param iD the iD to set
*/
public void setID(String ID) {
this.ID = ID;
} /**
* @return the name
*/
public String getName() {
return name;
} /**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
} /**
* @return the password
*/
public int getPassword() {
return password;
} /**
* @param password the password to set
*/
public void setPassword(int password) {
this.password = password;
} /**
* @return the balance
*/
public int getBalance() {
return balance;
} /**
* @param balance the balance to set
*/
public void setBalance(int balance) {
this.balance = balance;
} //存款功能的实现
public boolean saveMoney(int m){
System.out.println("正在验钞,请稍后.......");
if(m<0){
if(checkMoney(-m)){
return true;
}else{
return false;
} }else if(m>0){
this.balance+=m;
System.out.println("操作成功!");
return true;
}
return false;
} //取款操作
public boolean checkMoney(int m){
if(m<0){
if(saveMoney(-m)){
return true;
}else{
return false;
} }else if(m>0){
System.out.println("请输入密码......");
if(checkPassword()){
this.balance-=m;
System.out.println("操作成功!");
return true;
}
}
return false;
}
//查询余额
public void search(){
System.out.println("正在处理,请稍后......");
if(ID.equals(this.ID)){
System.out.println("账户"+ID+"的余额为:"+balance);
}else{
System.out.println("您输入的账户不存在,请认真核查后重新输入!");
}
} //检验密码操作
public boolean checkPassword(){
int i;
for(i=0;i<3;i++){
if(i>0){
System.out.println("密码输入错误,请重新输入密码!");
}
int pas=EnterNum.enterNum();
if(pas==password){
return true;
}
}
if(i==3)
System.out.println("密码输入错误3次,此次操作中断!");
return false;
}
//选择操作方法
public void print(){
System.out.println("----------------------欢迎使用自动取款机------------------------");
System.out.println("[存款----1]");
System.out.println("[取款----2]");
System.out.println("[查询----3]");
System.out.println("[退卡----0]");
} } //写一个类,进行对输入数字的判断。 package com.xt.lesson20; import java.util.Scanner; public class EnterNum {
static Scanner scanner=new Scanner(System.in);
public static String enterStr(){
String str="";
try{
str=scanner.next();
}catch(Exception e){ }
return str; }
public static int enterNum(){
int m = 0; try{
m=Integer.parseInt(enterStr());
}catch(Exception e){
System.out.println("您输入的数据不合法!请输入整数......");
}
return m;
} } //写一个主方法,进行判断操作的选择。 package com.xt.lesson20; import java.util.ArrayList; public class MachineTest { public static void main(String[] args) {
ArrayList<User> userList=new ArrayList<User>();
userList.add(new User("未知","未知",0,0));//默认值
userList.add(new User("200981501","聂庆平",5264,7000));
userList.add(new User("200981512","黎明",1562,17000));
first:while(true){
userList.get(0).print();
int a=EnterNum.enterNum();
second: switch (a){
case 1:{
System.out.println("请输入您要存钱的账号:");
String id=EnterNum.enterStr();
int i;
for (i=0;i<userList.size();i++){
if(id.equals(userList.get(i).getID())){
System.out.println("请输入您存的钱数:");
int m=EnterNum.enterNum();
if(userList.get(i).saveMoney(m)){
break second;
}
}
}
if(i==userList.size()){
System.out.println("您输入的账户不存在!");
break second;
}
}
case 2:{
System.out.println("请输入您要取钱的账号:");
String id=EnterNum.enterStr();
int i;
for(i=0;i<userList.size();i++){
if(id.equals(userList.get(i).getID())){
System.out.println("请输入您取的钱数:");
int m=EnterNum.enterNum();
userList.get(i).checkMoney(m);
break second;
}
}
if(i==userList.size()){
System.out.println("您输入的账户不存在!");
break second;
}
}
case 3:{
System.out.println("请输入您的卡号!");
String id=EnterNum.enterStr();
int i;
for(i=0;i<userList.size();i++){
if(id.equals(userList.get(i).getID())){
userList.get(i).search();
break second;
}
}
if(i==userList.size()){
System.out.println("您输入的账户不存在!");
break second;
}
}
case 0:{
System.out.println("感谢您的使用,再见!");
System.exit(0);
} } }
} }

java lesson20homework的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题

    背景起因: 记起以前的另一次也是关于内存的调优分享下   有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...

  3. Elasticsearch之java的基本操作一

    摘要   接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...

  4. 论:开发者信仰之“天下IT是一家“(Java .NET篇)

    比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...

  5. 故障重现, JAVA进程内存不够时突然挂掉模拟

    背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...

  6. 死磕内存篇 --- JAVA进程和linux内存间的大小关系

    运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...

  7. 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用

    有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...

  8. Java多线程基础学习(二)

    9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...

  9. Java多线程基础学习(一)

    1. 创建线程    1.1 通过构造函数:public Thread(Runnable target, String name){}  或:public Thread(Runnable target ...

随机推荐

  1. koa 实现下载文件

    文件下载需要使用到koa-send这个插件,该插件是一个静态文件服务的中间件,它可以用来实现文件下载的功能. 1.下载页面 static/download.html <!DOCTYPE html ...

  2. Web服务器磁盘满深入解析及解决

    ########################################################## 硬盘显示被写满但是用du -sh /*查看时占用硬盘空间之和还远#小于硬盘大小问的 ...

  3. Fast R-CNN论文阅读摘要

    论文链接: https://arxiv.org/pdf/1504.08083.pdf 代码下载: https://github.com/rbgirshick/fast-rcnn Abstract Co ...

  4. vscode 设置 eclipse 快捷键

    点击安装之后,默认就是要ecliplse快捷键了 注意:部分快捷键可能会由于和原来的冲突而失效,例如快速在“下面插入行” ,我还是不能使用ecliplse的Shift+Enter,而要用Ctrl+En ...

  5. vue引入插件方法

    jQuery插件npm install jquery --save-dev 需要用jQuery的文件中引入:import $ from 'jquery' 轮播图插件安装:npm install vue ...

  6. java中使用MappedByteBuffer将 File类转ByteBuffer

    public static WavFile openWavFile(File file) throws IOException, WavFileException { FileChannel chan ...

  7. SqlServer:SqlServer(服务器磁盘监控,创建管理员账号分配权,添加链接服务器,查询CPU,查询内存)

    1.服务器磁盘监控 (1)总链接服务上开启所有链接服务器的RPC: ----------------------总链接服务器上面,开启每个服务器的RPC --exec sp_serveroption ...

  8. k8s 1.15.2 部署

    目录 一.环境准备 二.软件安装 三.部署master节点 四.部署node节点 五.集群状态检测 一.环境准备 IP地址 节点角色 CPU Memory Hostname Docker versio ...

  9. ASP.NET Core 入门笔记3,使用ASP.NET Core MVC框架构建Web应用

    一.ASP.NET Core MVC 输出Hello World,Friend! 1.引入 ASP.NET Core MVC 修改应用启动类(Startup.cs),引入MVC模块并配置默认路由 pu ...

  10. Docker知识点总结

    一. docker介绍: 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不 ...