java lesson20homework
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的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- 论:开发者信仰之“天下IT是一家“(Java .NET篇)
比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...
- 故障重现, JAVA进程内存不够时突然挂掉模拟
背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...
- Java多线程基础学习(二)
9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...
- Java多线程基础学习(一)
1. 创建线程 1.1 通过构造函数:public Thread(Runnable target, String name){} 或:public Thread(Runnable target ...
随机推荐
- python练习-(秒转时分秒,时分秒转秒)-对比linux中文件的上次更改时间跟当前时间相差多久。
具体代码如下> import paramiko,re,datetime,time ssh=paramiko.SSHClient() ssh.set_missing_host_key_policy ...
- aop备忘
https://www.iflym.com/index.php/code/use-java-develop-compile-annotated-aspectj-programe.htmlspringb ...
- Mac下idea启动H5报错:xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Deve
1. 执行“ xcodebuild -showsdks ”,报错如下“xcode-select: error: tool 'xcodebuild' requires Xcode, but active ...
- UnicodeEncodeError: 'ascii' codec can't encode characters
将网页get到之后输入文本出现UnicodeEncodeError: 'ascii' codec can't encode characters错误 f = open('re.txt', 'w') u ...
- Linux系统管理_主题01 :初识Linux_1.7 关闭和重启Linux_shutdown
shutdown [选项] 时间 [警告消息] 系统关机 -c 取消前一个 shutdown 命令.值得注意的是,当执行一个如 “shutdown -h 11:10”的命令时,只要按“Ctrl+C ...
- Elasticsearch常见错误与配置简介
一.常见错误 1.1 root用户启动elasticsearch报错 Elasticsearch为了安全考虑,不让使用root启动,解决方法新建一个用户,用此用户进行相关的操作.如果你用root启动, ...
- Linux显存占用无进程清理方法(附批量清理命令)
在跑TensorFlow.pytorch之类的需要CUDA的程序时,强行Kill掉进程后发现显存仍然占用,这时候可以使用如下命令查看到top或者ps中看不到的进程,之后再kill掉: fuser -v ...
- 4. Linux管理命令
df.du:磁盘.空间相关的命令 df -h 以直观的方式显示磁盘分区使用状况 df test 查询test属于哪个分区 du du -h 以直观方式显示文件夹目录的使用状况 du -s 只显示当 ...
- koa2数据请求相关问题解决方案汇总
前端请求后端数据,难免会遇到如下几个问题: 1⃣️跨域 2⃣️post/get,其中post请求的方式又分为多种 3⃣️后端数据返回格式(上一篇已经有讨论过,这里不再赘述) 用koa2的话,如何解决这 ...
- DS18b20温度传感器基础使用
认识管脚 认识唯一标示的64位地址序列号 寄存器数据译码成温度值(下面只针对12位转化的,还有9..10等其他位的转化方式,不同位的转化,其精度也不同) 传感器存储器 配置寄存器使用说明 DS18b2 ...