学习日志day7(2021-07-13)

学习内容:学习JavaSE(Day6)

1、对象数组
2、类的封装


1、对象数组

(1)在类中直接定义的变量是实例变量。 实例变量有默认值,即遍没有赋值也可以使用。 在方法内部声明的变量是局部变量。 局部变量是没有默认值的,在使用的时候必须有初始值。否则编译期就会报错。

(2)对象数组默认值为null,如果一个对象的值是null,那在调用该对象的属性或方法时会引发NullPointerException空指针异常

2、类的封装

(1)Java三大特性:封装,继承,多态

(2)封装的基本原则: 1.将实例变量标记为私有的(private) 2.提供公有(public)的setter和getter方法,用来控制对实例变量的存取动作。

(3)封装的作用:1.保护数据,隐藏具体实现,调用者只用关心使用。2.代码复用。3.高内聚。4.低耦合。

(4)如果一个类中只有getter setter方法,那么这个类就是实体类。

(5)引用数据类型按引用传递

Car car = new Car(); 
car.setBrand("保时捷"); 
dog.playCar(car); 
System.out.println(car.getName()); 
public void playCar(Car car) { 
car.setBrand("玛莎拉蒂"); 
}

(6)作业题

学习日志day7(2021-07-13)

import java.util.*;
public class Bank {

    Scanner input = new Scanner(System.in);
    Account[] accounts = new Account[1000];

    public void showMenu(){
        System.out.println("欢迎使用自助银行服务系统,系统功能如下:");
        System.out.println("1.开户  2.插卡  3.系统管理  4.退出系统");
        System.out.println("请输入您要操作的选项序号:");
        String no = input.next();
        switch (no){
            case "1":
                addUser();
                break;
            case "2":
                insertCard();
                break;
            case "3":
                systemAdmin();
                break;
            case "4":
                System.exit(1);  //退出系统
                break;
            default:
                System.out.println("输入错误,请输入选项序号!");
                showMenu();
        }
    }

    public void addUser(){                   //开户
        System.out.println("请输入开户的用户名:");
        String account = input.next();
        System.out.println("请输入开户的密码:");
        String pwd = input.next();

        Account user = new Account();
        user.setAccount(account);
        user.setPwd(pwd);
        user.setMoney(0);
        user.setStatue(1);

        int flag = 0;
        for (int i = 0; i < accounts.length; i++) {
            if (accounts[i] != null && accounts[i].getAccount().equals(user.getAccount())){
                flag = 2;
                break;
            }else if (accounts[i] == null){
                accounts[i] = user;
                flag = 1;
                break;
            }
        }
        if (flag == 1){
            System.out.println("开户成功!");
        }else if (flag == 2){
            System.out.println("开户失败!用户名不能重复!");
        }else{
            System.out.println("开户失败!");
        }

        showMenu();
    }

    public Account findAccountByNameAndPwd(String accName, String pwd) {  //根据用户名和密码查找用户

        for (int i = 0; i < accounts.length; i++) {
            if (accounts[i] != null) {
                String name = accounts[i].getAccount();
                String password = accounts[i].getPwd();
                if (name.equals(accName) && password.equals(pwd)) {
                    return accounts[i];
                }
            }
        }
        return null;
    }

    public void insertCard(){              //插卡
        System.out.println("请输入您的用户名:");
        String account = input.next();
        System.out.println("请输入您的密码:");
        String pwd = input.next();
        Account user = findAccountByNameAndPwd(account,pwd);
        if (user != null && user.getStatue() == 1){ //插卡成功
            System.out.println("验证成功!");
            showSecMenu(user);
        } else if (user != null && user.getStatue() == 0){
            System.out.println("账户已被冻结!");
        }else {
            System.out.println("验证失败!用户名或密码错误!");
        }
        showMenu();
    }

    public void systemAdmin(){               //系统管理
        System.out.println("请输入管理员的用户名:");
        String account = input.next();
        System.out.println("请输入管理员的密码:");
        String pwd = input.next();
        boolean flag = false;

        if (account.equals("admin") && pwd.equals("123456")){
            System.out.println("验证成功!");
            showAdminMenu();
        } else {
            System.out.println("验证失败!");
        }
        showMenu();
    }

    public void showSecMenu(Account account){
        System.out.println("用户功能如下:");
        System.out.println("1.查询余额  2.取款  3.转账  4.存款  5.修改密码  6.退出系统");
        System.out.println("请输入您要操作的选项序号:");
        String no = input.next();
        switch (no){
            case "1":
                findMoney(account);
                break;
            case "2":
                getMoney(account);
                break;
            case "3":
                transferMoney(account);
                break;
            case "4":
                setMoney(account);
                break;
            case "5":
                updatePwd(account);
                break;
            case "6":
                break;
            default:
                System.out.println("输入错误,请输入选项序号!");
                showSecMenu(account);
        }
    }

    public void findMoney(Account account){     //查询余额
        System.out.println("账户余额为:" + account.getMoney());
        showSecMenu(account);
    }

    public void getMoney(Account account){      //取钱
        System.out.println("请输入您想取多少钱:");
        double money = input.nextDouble();
        if (money > account.getMoney()){
            System.out.println("余额不足!取钱失败!");
        }else {
            account.setMoney(account.getMoney() - money);
            System.out.println("取钱成功,账户余额为:" + account.getMoney());
        }
        showSecMenu(account);
    }

    public void transferMoney(Account user){      //转账
        System.out.println("请输入您想转多少钱:");
        double money = input.nextDouble();
        if (money > user.getMoney()){
            System.out.println("余额不足!转账失败!");
        }else {
            System.out.println("请输入您想转到的用户名:");
            String account = input.next();
            boolean flag = true;
            for (int i = 0; i < accounts.length; i++) {
                if (accounts[i] != null && account.equals(accounts[i].getAccount())){
                    accounts[i].setMoney(accounts[i].getMoney() + money);
                    user.setMoney(user.getMoney() - money);
                    System.out.println("转账成功,账户余额为:" + user.getMoney());
                    flag =false;
                    break;
                }
            }
            if (flag){
                System.out.println("转账失败,未找到该用户!");
            }
        }
        showSecMenu(user);
    }

    public void setMoney(Account account){      //存钱
        System.out.println("请输入您想存多少钱:");
        double money = input.nextDouble();
        if (money > 0){
            account.setMoney(account.getMoney() + money);
            System.out.println("存钱成功,账户余额为:" + account.getMoney());
        }else {
            System.out.println("输入金额不合法,存钱失败!");
        }
        showSecMenu(account);
    }

    public void updatePwd(Account account){         //修改密码
        System.out.println("请输入原密码:");
        String pwd = input.next();
        if (pwd.equals(account.getPwd())){
            System.out.println("请输入您想修改的密码:");
            account.setPwd(input.next());
            System.out.println("修改成功!");
        }else {
            System.out.println("原密码输入错误,无法修改密码!");
        }
        showSecMenu(account);
    }

    public void showAdminMenu(){
        System.out.println("系统管理功能如下:");
        System.out.println("1.显示所有用户  2.冻结账户  3.恢复账户  4.退出系统");
        System.out.println("请输入您要操作的选项序号:");
        String no = input.next();
        switch (no){
            case "1":
                showUsers();
                break;
            case "2":
                freezingAccount();
                break;
            case "3":
                recoverAccount();
                break;
            case "4":
                break;
            default:
                System.out.println("输入错误,请输入选项序号!");
                showAdminMenu();
        }
    }

    public void showUsers(){        //显示所有用户
        System.out.println("用户名****密码****余额****状态");
        for (int i = 0; i < accounts.length; i++) {
            if (accounts[i] != null){
                System.out.println(accounts[i].getAccount() + "\t\t" + accounts[i].getPwd() + "\t\t" + accounts[i].getMoney() + "\t\t" + accounts[i].getStatue());
            }
        }
        showAdminMenu();
    }

    public void freezingAccount(){        //冻结账户
        System.out.println("请输入要冻结的用户名:");
        String account = input.next();
        boolean flag = false;
        for (int i = 0; i < accounts.length; i++) {
            if (accounts[i] != null && accounts[i].getAccount().equals(account)){
                accounts[i].setStatue(0);
                flag = true;
                break;
            }
        }
        if (flag){
            System.out.println("冻结成功");
        }else {
            System.out.println("冻结失败,未找到该用户!");
        }
        showAdminMenu();
    }

    public void recoverAccount(){        //恢复账户
        System.out.println("请输入要恢复的用户名:");
        String account = input.next();
        boolean flag = false;
        for (int i = 0; i < accounts.length; i++) {
            if (accounts[i] != null && accounts[i].getAccount().equals(account)){
                accounts[i].setStatue(1);
                flag = true;
                break;
            }
        }
        if (flag){
            System.out.println("恢复成功");
        }else {
            System.out.println("恢复失败,未找到该用户!");
        }
        showAdminMenu();
    }


}
import java.util.*;
public class Account {
    private String account;
    private String pwd;
    private double money;
    private int statue;  //1正常  0冻结

    public String getAccount() {
        return account;
    }

    public void setAccount(String account) {
        this.account = account;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }

    public int getStatue() {
        return statue;
    }

    public void setStatue(int statue) {
        this.statue = statue;
    }
}
public class BankTest {
    public static void main(String[] args) {
        Bank bank = new Bank();
        bank.showMenu();
    }
}
上一篇:智能合约 solidity-TestContract.sol


下一篇:maya nurbs 汽车坐椅建模英文教程