//创建一个账户类,以便后期创建账户对象
public class Account {
//账户类
private String username;
private String cardid;
private String password;
private double money;
private double qumoney;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getCardid() {
return cardid;
}
public void setCardid(String cardid) {
this.cardid = cardid;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
public double getQumoney() {
return qumoney;
}
public void setQumoney(double qumoney) {
this.qumoney = qumoney;
}
}
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class study {
public static void main(String[] args) {
ArrayList<Account> accounts=new ArrayList<>();
Scanner sc=new Scanner(System.in);
while(true){
System.out.println("~~~~~~常书豪ATM系统~~~~~~");
System.out.println("1:账户登录");
System.out.println("2:账户注册");
System.out.println("请选择您进行的操作:");
int command=sc.nextInt();
switch(command){
case 1:
login(accounts,sc);
break;
case 2:
reegister(accounts,sc);
break;
default:
System.out.println("您输入的操作命令错误,请重新输入:");
}
}
}
//登录功能;
private static void login(ArrayList<Account> accounts,Scanner sc) {
System.out.println("~~~~~~~~~~~系统登录操作~~~~~~~~~~~~");
//判断账户中是否存在账号;
if (accounts.size() == 0) {
System.out.println("对不起,当前系统中无账户,请先开户,再重新登录,谢谢~~~");
return;
}
//正式开始操作;
while (true) {
System.out.println("请您输入登录卡号:");
String cardid = sc.next();
Account acc = getAccountBycardid(cardid, accounts);
if (acc != null) {
while (true) {
System.out.println("请您输入登录密码:");
String password = sc.next();
if (acc.getPassword().equals(password)) {
System.out.println("恭喜你" + acc.getUsername() + "先生/女士登陆成功,您的卡号是" + acc.getCardid());
//操作页
showUeserCommand(sc,acc,accounts);
return;
} else {
System.out.println("对不起,您输入的密码有误请您重新输入~~~");
}
}
}else{
System.out.println("对不起,系统中不存在该卡号");
}
}
}
private static void showUeserCommand(Scanner sc, Account acc, ArrayList<Account> accounts) {
}
//展示登录后的操作页面
private static void mimaxiugai(Account acc, Scanner sc) {
System.out.println("===========用户密码修改=========");
while (true) {
System.out.println("请您输入当前密码:");
String password=sc.next();
if(acc.getPassword().equals(password)){
while (true) {
System.out.println("请您输入新密码:");
String newpassword=sc.next();
System.out.println("请您确认新密码:");
String okpassword=sc.next();
if(okpassword.equals(newpassword)){
acc.setPassword(newpassword);
System.out.println("恭喜你,您的密码修改成功");
return;
}else{
System.out.println("您两次输入的密码不一致");
}
}
}else{
System.out.println("您输入的密码不正确,请您重新输入:");
}
}
}
//转账功能,acc自己的,accounts全部账户集合;
private static void drawMoney(Account acc, Scanner sc) {
System.out.println("===========用户取款操作=========");
if (acc.getMoney() < 100) {
System.out.println("对不起,当前账户不足100,不能取钱");
return;
}
while (true) {
System.out.println("请您输入取款金额:");
double money = sc.nextDouble();
if (money > acc.getQumoney()) {
System.out.println("对不起,您当前全款金额超过每次限额每次最多可取" + acc.getQumoney());
} else {
if(money>acc.getMoney()){
System.out.println("余额不足~~");
}else{
System.out.println("恭喜你取钱成功");
acc.setMoney(acc.getMoney()-money);
showAccount(acc);
return;
}
}
}
}
private static void transferMoney(Account acc, Scanner sc, ArrayList<Account> accounts) {
System.out.println("--------用户转账操作----------");
if (accounts.size() < 2) {
System.out.println("您当前系统中不足两个账号,请先去开户");
return;
}
if (acc.getMoney() == 0) {
System.out.println("对不起,您自己都没钱,请先去存钱");
return;
}
while (true) {
System.out.println("请您输入对方的卡号为:");
String cardid = sc.next();
if (cardid.equals(acc.getCardid())) {
System.out.println("对不起,您不可以给自己进行转账~~");
continue;
}
Account account = getAccountBycardid(cardid, accounts);
if(account==null){
System.out.println("您输入的账户不存在~~");
}else{
String username = account.getUsername();
String tip="*"+username.substring(1);
System.out.println("请您输入["+tip+"]的姓氏:");
String prename=sc.next();
if(username.startsWith(prename)){
System.out.println("请您输入转账金额:");
while (true) {
double money = sc.nextDouble();
if(money>acc.getMoney()){
System.out.println("对不起,您余额不足,您最多可转"+acc.getMoney());
}else{
acc.setMoney(acc.getMoney()-money);
account.setMoney(account.getMoney()+money);
System.out.println("转账成功,您的账户还剩"+acc.getMoney()+"元");
return;
}
}
}else{
System.out.println("对不起,信息有误");
}
}
}
}
private static void despositMoney(Account acc, Scanner sc) {
System.out.println("===========用户存款操作=========");
System.out.println("请您输入存款金额:");
double money= sc.nextDouble();
acc.setMoney(acc.getMoney()+money);
System.out.println("恭喜你存钱成功,当前账户信息如下:");
showAccount(acc);
}
//展示账户内部
private static void showAccount(Account acc) {
System.out.println("===========当前账户信如下=========");
System.out.println("卡号:"+acc.getCardid());
System.out.println("户主:"+acc.getUsername());
System.out.println("余额:"+acc.getMoney());
System.out.println("限额:"+acc.getQumoney());
}
//系统开户
private static void reegister(ArrayList<Account> accounts,Scanner sc) {
System.out.println("-------系统开户-------");
//创建用户名:
Account acccount=new Account();
System.out.println("请您输入用户名:");
String username=sc.next();
acccount.setUsername(username);
//创建一个死循环来创建两个密码:
while(true) {
System.out.println("请您输入用户密码:");
String password = sc.next();
System.out.println("请您输入确认密码:");
String okpassword = sc.next();
if (password.equals(okpassword)) {
acccount.setPassword(password);
break;
} else {
System.out.println("您输入两次密码不一致,请重新输入~~~");
}
}
//创建限额:
System.out.println("请您输入当次限额:");
double qumoney=sc.nextDouble();
acccount.setQumoney(qumoney);
//生成卡号:
String cardid=getRandomCardid(accounts);//生成一个随机的卡号
acccount.setCardid(cardid);//为保证卡号不重复
accounts.add(acccount);
System.out.println("恭喜你,"+username+"先生、女士,您开户成功,您的卡号是:"+cardid+",请您妥善保管,谢谢配合");
}
//先生成一个八位数的卡号
private static String getRandomCardid(ArrayList<Account> accounts) {
Random r=new Random();
while(true){
String cardid="";
for (int i = 0; i < 8; i++) {
cardid+=r.nextInt(10);
}
Account acc=getAccountBycardid(cardid,accounts);
if(acc==null){
return cardid;
}
return null;
}
}
//根据卡号差一个账户出来
private static Account getAccountBycardid(String cardid,ArrayList<Account> accounts){
for (int i = 0; i < accounts.size(); i++) {
Account acc=accounts.get(i);
if(acc.getCardid().equals(cardid)){
return acc;
}
}
return null;
}
}
系统中应该注意细节,以及每一步是否需要相应的检验展示步骤,注意语言的逻辑性和规范性。
购物车案例改善
public class Goods {
int id;//编号
String name;//名称
double price;//价格
int buyNumber;//购买数量
import java.util.Scanner;
public class ShopCarTest {
public static void main(String[] args) {
//1,定义商品类,用于后期创建商品对象
//2,定义购物车对象,使用一个数组对象表示
Goods[] shopCar = new Goods[100];
//3,搭建操作架构
while (true) {
System.out.println("请您选择如下命令进行操作");
System.out.println("添加商品到购物车: add");
System.out.println("查询商品到购物车: query");
System.out.println("修改商品购买数量: update");
System.out.println("结算购买商品的金额: pay");
Scanner sc = new Scanner(System.in);
System.out.println("请您输入命令: ");
String command = sc.next();
switch (command) {
case "add":
//添加商品到购物车
addGoods(shopCar, sc);
break;
case "query":
//查询购物车展示
queryGoods(shopCar);
break;
case "update":
//修改商品的购买数量
updateGoods(shopCar, sc);
break;
case "pay":
//结算金额
pay(shopCar);
break;
default:
System.out.println("没有该功能! ");
}
}
}
public static void pay(Goods[] shopCar) {
queryGoods(shopCar);
//1、定义一个求和变量
double money = 0;
//2、遍历购物车数组中的全部商品对象,累加单价*数量
for (int i = 0; i < shopCar.length; i++) {
Goods g = shopCar[i];
if (g != null){
money += (g.price) * (g.buyNumber);
}else{
break;
}
}
System.out.println("订单总金额:" + money);
}
public static void updateGoods(Goods[] shopCar,Scanner sc) {
//让用户输入要修改商品的id,根据id查询出要修改的商品对象
while (true) {
System.out.println("请您输入要修改的商品id:");
int id = sc.nextInt();
Goods g = getGoodsbyId(shopCar , id);
if (g == null){
//没有该商品
System.out.println("对不起!没有购买商品!");
}else{
//说明该商品存在,可以修改它了
System.out.println("请您输入:"+g.name+"商品最新购买数量:");
int buyNumber = sc.nextInt();
g.buyNumber = buyNumber;
System.out.println("修改完成!");
queryGoods(shopCar);
//检验是否修改成功。
break;
}
}
}
public static Goods getGoodsbyId(Goods[] shopCar, int id) {
for (int i = 0; i < shopCar.length; i++) {
Goods g = shopCar[i];
if (g != null) {
//判断这个商品对象的id是不是我们要找的
if (g.id == id) {
return g;
}
} else {
return null;//找完了前面存在的商品,都没有找到!
}
}
return null;//找完了100个商品都没有找到id一样的商品
}
/**
查询购物车中的商品对象信息,并展示出来
*/
public static void queryGoods(Goods[] shopCar) {
System.out.println("==========查询购物车信息如下==========");
System.out.println("编号\t\t名称\t\t\t价格\t\t\t购买数量");
for (int i = 0; i < shopCar.length; i++) {
Goods g = shopCar[i];
if (g != null){
//展示这个商品对象
System.out.println(g.id +"\t\t" + g.name +"\t\t\t" + g.price +"\t\t\t"+g.buyNumber);
}else{
//遍历结束
break;
}
}
}
/**
实现添加功能
*/
public static void addGoods(Goods[] shopCar , Scanner sc) {
//1,录入用户输入的购买商品的信息
System.out.println("请您输入购商品的编号(不重复): ");
int id = sc.nextInt();
System.out.println("请您输入购买商品的名称: ");
String name = sc.next();
System.out.println("请您输入购买商品的数量: ");
int buyNumber = sc.nextInt();
System.out.println("请您输入购买商品的价格: ");
double price = sc.nextDouble();
//2,把这个购买商品的信息封装成一个商品对象
Goods g = new Goods();
g.id = id;
g.name = name;
g.buyNumber = buyNumber;
g.price = price;
//3,把这个商品对象添加到购物车数组中去
for (int i = 0; i < shopCar.length; i++) {
if (shopCar[i] == null){
//说明此位置没有元素存入,把我们新买的商品添加即可
shopCar[i] = g;
break;
}
}
System.out.println("您的商品: " + g.name +"添加到购车完成! ");
}
}