Java基础学习编写基础项目:
需求文档提减版:
一、 ATM项目介绍
该项目主要为用户提供对自身资产的管理
二、 功能介绍
a) 登录:用户通过输入用户名、密码进行匹配,匹配成功,方可进入系统
b) 查询余额:显示用户的余额
c) 存款:输入存款金额,将输入金额存入当前用户余额
i. 输入金额规则:输入金额须为100的倍数,须大于0,金额小于1000
d) 修改密码:提示用户输入原密码
i. 当原密码输入正确时,提示输入修改的密码
ii. 重复输入修改的密码,判定两次密码是否输入正确
e) 退出:结束系统
易错点 | 犯错 |
---|---|
工具包的字母大小写注意 | java.text.SimpleDateFormat写成ava.text.SimpleDateformat |
嵌套语句中的初始化命名不可重复 | for(int i=0;😉{ int i =9} |
循环语句之间的内部关系 | for循环的嵌套 |
解读如下:
逻辑:
使用二维数组存储账户,密码,金额…
在登录的前题下进行其他功能的操作判断.,某些命名属于java小白,知道就可以了!
import java.text.DateFormat;
import java.util.Scanner;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Dome {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//登录AMD系统
//设置数组存储输入的账号、密码
boolean flag = false;
String[][] accounts = new String[][]{
{"yi", "123456", "300"},
{"er", "123456", "300"},
{"san", "123456", "300"},
{"si", "123456", "300"},
};
/*
============第一部分=================
============登录验证=================
*/
System.out.print("请输入账号:");
String name = sc.next();
System.out.print("请输入密码:");
String password = sc.next();
//登录设置权限
//定义维度行数
for (int i = 0; i < accounts[0].length; i++) {
//判断用户名,
if (name.equals(accounts[i][0])) {
//判断密码
if (password.equals(accounts[i][1])) {
flag = true;
}else {/*
for(int m=0,m>3,m++)
{
password = sc.next();
System.out.println("输入错误,重新输入");
}
*/
}
}
System.out.println(flag);
//
//判断姓名是否匹配
/*
* ================第二部分==============================
* ==登录成功后,提示登录成功,并显示登录时间=============
* */
//声明当前日期
DateFormat dateFormat = new SimpleDateFormat("yyyy/d/d hh:mm:ss");
Date date = new Date();
System.out.println(dateFormat.format(date));
System.out.println("-----------------菜单栏--------------------");
System.out.println("--------欢迎来到实训银行-----------");
System.out.println("----------请按照功能菜单进行操作-----------");
//
System.out.println("1:余额查询\", \"2:存款\", \"3:取款\", \"4:修改密码\", \"5:退出\"");
//菜单设置功能键
//bar =new JMenuBar();
if (flag) {
/*
* ================第三部分==============================
* ================显示菜单并实现相应功能==============================
*
*/
while (true) {
System.out.println("请输入功能:");
int func = sc.nextInt();
switch (func) {
case 1:
System.out.println("用户:"+name+"余额查询:" + accounts[i][2]);
break;
case 2:
//System.out.print("存款");
System.out.print("输入存取金额:");
double price = sc.nextInt();
//将数组的金额转换成int ,加上存入金额
int sum = Integer.parseInt(accounts[i][2]);
if (price % 100 == 0 && price < 1000) {
sum += price;
System.out.println("本次用户存款" + sum + "元成功!");
} else {
System.out.println("输入的金额ATM不识别!");
}
break;
case 3:
System.out.print("取款");
//取款功能代码
//pos为登录账户的数组下标
int money = Integer.parseInt(accounts[i][2]);
System.out.println("请输入取款金额:");
int cost = sc.nextInt();
if (cost % 100 != 0 || cost <= 0) {
System.out.println("金额必须为100的整数且不能小于0");
} else if (cost > money) {
System.out.println("你的余额不足");
} else {
money -= cost;
accounts[i][2] = money + "";
System.out.println("你的余额为:" + money);
}
break;
case 4:
String password_next = sc.next();
System.out.print("再输入一次密码:"+password_next);
if (password_next.equals(accounts[i][1])){
System.out.print("输入新密码");
String new_password = sc.next();
//判定俩次密码是否一致
//注意数据类型是否一致,否则equals报错,
if (new_password.equals(password_next)) {
}else{
System.out.print("两次密码输入不相同");
}
System.out.print("修改成功!"+name+new_password);
}
break;
case 5:
System.out.print("退出");
System.exit(0);
break;
case 6:
//一定循环遍历,匹配元素是否一致。
System.out.print("输入新账号:");
String new_name = sc.next();
for(int j =0;j<accounts[0].length;j++){
if (new_name.equals(accounts[j][0])){
System.out.print("输入转账金额:");
int new_price = sc.nextInt();
int money1 = Integer.parseInt(accounts[i][2]);
//确认转账后的金额:
//转账的本人
//待转账的
int sum1,sum2;
sum1 = money1-new_price;
System.out.println(name+"用户剩余" + sum1 + "元成功!");
int money2 = Integer.parseInt(accounts[j][2]);
sum2 = money2+new_price;
System.out.println(new_name+"本次转账用户共" + sum2 + "元成功!");
}
}
break;
default:
System.out.println("非法操作");
break;
}
}
} else {
System.out.println("登录失败");
}
//元素赋值
//登陆后的账号存款:
//存款
}
if (!flag) {
System.out.println("登录失败,请重新登陆");
}
}
}
运行结果: