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. Kafka 实践

    问题描述 配置 Kafka-client 2.x, Spring-Kafka 默认配置 Kafka 三个partition, 使用KafkaListener按group消费. 现象 某天突然发现两个p ...

  2. 通过Maven更换环境配置文件

    大致思路:配置文件有三套:main/resources.devmain/resources.prodmain/resources.test公共部分放到main/resource下使用mvn clean ...

  3. Arcengine获得arcgis安装的版本

    ESRI.ArcGIS.RuntimeManager.ActiveRuntime.Version  //gsioracle MessageBox.Show(ESRI.ArcGIS.RuntimeMan ...

  4. Winform运行外部控制台程序,并在程序结束后执行其他动作

    ProcessStartInfo psi = new ProcessStartInfo(); psi.FileName = @"程序名"; psi.Arguments = @&qu ...

  5. ScreenShot 截图工具类

    import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Rect; import an ...

  6. python之scrapy的FormRequest模拟POST表单自动登陆

    1.FormRequest表单实现自动登陆 # -*- coding: utf-8 -*- import scrapy import re class GithubSpider(scrapy.Spid ...

  7. 使用nginx实现动静分离的负载均衡集群

    一.概述: LB负载均衡集群分两类: LVS (四层)和 nginx或haproxy (七层) 客户端通过访问分发器的VIP来访问网站 |现在应用更复杂,比如现在网站页面有: .php .html . ...

  8. java1.7新特性:try-with-resources

    转载:https://blog.csdn.net/fanxiaobin577328725/article/details/53067163 首先看代码: import org.junit.Test; ...

  9. iOS开发嵌套ReactNative页面

    最近使用ReactNative做项目,有信心今天目标把ReactNative框架掌握,所以自己从每个知识点学习提高自己吧...... 步骤如下: 一.创建依赖包文件(package.json): Re ...

  10. Qt 字符映射表 显示图标

    一.利用字符映射表segmdl2.ttf,窗体显示字符图片. 在win10里面搜“字符映射表”,选择字体segmdl2.ttf,查看图标对应得16进制值.把此字体拷贝到程序的目录下. 二.使用 #if ...