Java_实验二,带星号题目

2、声明一个Person类和派生类Student,
成员变量包括学号、姓名、入学时间、身份证号、学分绩点等信息,
成员方法包括开户、存款、取款、查询(余额、明细)、销户等操作。

首次开户:
在这里插入图片描述

再次开户:
在这里插入图片描述

存款:
在这里插入图片描述
取款:
在这里插入图片描述
查询明细:

在这里插入图片描述
销户:
在这里插入图片描述
销户之后查询:
在这里插入图片描述
对未进行存取的账户进行查询:
在这里插入图片描述
退出系统操作:
在这里插入图片描述

package Ex2.Secondquestion;

import java.util.Scanner;

/**
 * @author 15328
 * 2、声明一个Person类和派生类Student,
 * 成员变量包括学号、姓名、入学时间、身份证号、学分绩点等信息,
 * 成员方法包括开户、存款、取款、查询(余额、明细)、销户等操作。
 */
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Person person = new Person("试验者","123456");
        Student student = new Student("Alan_cf","987654321",190001,
                2019,8,21,3.5,60);
        boolean isTrue = true;
        while(isTrue) {
            student.operate();
            System.out.println("***************1、继续选择操作***************");
            System.out.println("***************2、立即退出系统***************");
            int judge = input.nextInt();
            switch(judge){
                case 1:{
                    break;
                }
                case 2:{
                    isTrue = false;
                    break;
                }
                default:
                    System.out.println("非法输入不奏效");
                    break;
            }
        }
    }
}
 class Person{
    Scanner input = new Scanner(System.in);
    protected String name;
    protected String id;
    /**身份证号*/
    protected boolean judgeOfAccount = false;
    /**是否已经开户*/
    protected static final int MAX_ACCOUNTS = 10;
    /**一个人最多10个账户*/
    protected int idOfAccount = 0;
    /**此人的有几个账户*/
    protected Account [] accounts = new Account[MAX_ACCOUNTS];
    /**账户数组*/
    Person(String name,String id){
        this.name = name;
        this.id = id;
    }
    public boolean judgeOfOpenAccount(){
        System.out.println("****1、是****");
        System.out.println("****2、否****");
        int judge = input.nextInt();
        input.nextLine();
        if(judge == 1){
            return true;
        }
        else{
            if(judge == 2){
                return false;
            }
            else {
                System.out.println("没有输入1或2,非法输入,无法创建账户");
                return false;
            }
        }
    }
    public void openOfAccount(){
        //开户
        if(judgeOfAccount){
            System.out.printf("您已经拥有%d个账户,最多可以再开%d个账户\n",idOfAccount,MAX_ACCOUNTS-idOfAccount);
            System.out.println("您确定要创建此账户吗?");
            if(judgeOfOpenAccount()){
                System.out.println("开户成功!");
                accounts[idOfAccount] = new Account(idOfAccount);
                idOfAccount++;
                //账户数量加一
            }
            else{
                System.out.println("取消开户!");
            }
        }
        else{
            System.out.printf("您还没有账户,最多可以开%d个账户\n",MAX_ACCOUNTS);
            System.out.println("您确定要创建此账户吗?");
            if(judgeOfOpenAccount()){
                System.out.println("开户成功!");
                judgeOfAccount = true;
                accounts[idOfAccount] = new Account(idOfAccount);
                idOfAccount++;
                //账户数量加一
            }
            else{
                System.out.println("取消开户!");
            }
        }
    }
    public void depositMoney(int idOfAccount){
        accounts[idOfAccount].depositMoney();
    }
    public void drawMoney(int idOfAccount){
        accounts[idOfAccount].drawMoney();
    }
    public void queryDetails(int idOfAccount){
        if(accounts[idOfAccount]!=null) {
            accounts[idOfAccount].queryDetails();
        }
        else {
            System.out.println("此账户已经销毁");
        }
    }
    public void closeOfAccount(int idOfAccount){
        System.out.println("您确定销除此账户吗");
        if(judgeOfCloseAccount()){
            accounts[idOfAccount]=null;
        }
        else{
            System.out.println("未能销户");
        }
    }
    public boolean judgeOfCloseAccount(){
        System.out.println("****1、是****");
        System.out.println("****2、否****");
        int judge = input.nextInt();
        input.nextLine();
        if(judge == 1){
            return true;
        }
        else{
            if(judge == 2){
                return false;
            }
            else {
                System.out.println("没有输入1或2,非法输入,无法销除账户");
                return false;
            }
        }
    }


    public void operate(){
        if(this instanceof Student){
            System.out.println("学生客户: ");
        }
        else{
            System.out.println("普通客户:");
        }
        System.out.println(this.toString());
        System.out.println("您好,请选择一种操作:");
        System.out.println("**********1、开户**********");
        System.out.println("**********2、存款**********");
        System.out.println("**********3、取款**********");
        System.out.println("**********4、查询**********");
        System.out.println("**********5、销户**********");
        System.out.println("**********6、退出**********");
        int judgeOfOperate = input.nextInt();
        input.nextLine();
        if(judgeOfOperate == 1) {
            openOfAccount();
        }
        else if(judgeOfOperate == 6){
            return;
        }
        else {
            System.out.printf("您一共有%d个账户", idOfAccount);
            System.out.println("请选择其中一个账户:");
            int selectOfAccount = input.nextInt();
            input.nextLine();
            switch (judgeOfOperate) {
                case 2: {
                    depositMoney(selectOfAccount-1);
                    break;
                }
                case 3: {
                    drawMoney(selectOfAccount-1);
                    break;
                }
                case 4: {
                    queryDetails(selectOfAccount-1);
                    break;
                }
                case 5:{
                    closeOfAccount(selectOfAccount-1);
                    idOfAccount--;
                    break;
                }
                default: {
                    System.out.printf("非法输入,其非法值为%d\n", judgeOfOperate);
                    break;
                }
            }
        }
    }
    @Override
    public String toString(){
        return "name: "+this.name+" id: "+id;
    }
}
class Account {
    Scanner input = new Scanner(System.in);
    protected int idOfAccount;
    /**这是此人的第几个账户*/
    protected double money;
    /**金额(默认情况未开户,为0)*/
    protected String [] list = new String[50];
    int listOfList = 0;
    Account(int idOfAccount){
        this.idOfAccount = idOfAccount;
    }
    public void depositMoney() {
        System.out.println("请输入要存入的金额:");
        double deposit = input.nextDouble();
        if(deposit>0){
            money += deposit;
            System.out.printf("已经存入%.2f元,现在总金额为%.2f元\n",deposit,money);
            list[listOfList]="已经存入"+ String.format("%.2f",deposit) +"元"+
                    "现在总金额为"+String.format("%.2f",money)+"元";
            listOfList++;
        }
        else {
            System.out.printf("非法输入金额数值,其非法值为:%.2f\n",deposit);
        }
    }

    public void drawMoney() {
        System.out.println("请输入要取出的金额:");
        double draw = input.nextDouble();
        double money2 = money;
        if(draw>0){
            money2 -= draw;
            if(money2>=0){
                money -= draw;
                System.out.printf("已经取出%.2f元,现在总金额为%.2f元\n",draw,money);
                list[listOfList]="已经取出"+String.format("%.2f",draw)+"元"+
                        "现在总金额为" +String.format("%.2f",money)+"元";
                listOfList++;
            }
            else{
                System.out.printf("现在总金额小于%.2f元,无法取出,现在总金额为%.2f元\n",draw,money);
            }
        }
        else {
            System.out.printf("非法输入金额数值,其非法值为:%.2f\n",draw);
        }
    }

    public void queryDetails() {
        //查询明细
        //现存金额有多少、历次存取详情
        System.out.printf("现在账户内总金额为:%.2f " , money);
        System.out.println("历次存取详情为:");
        for(int i=0;i<listOfList;i++){
            System.out.println(list[i]);
        }
    }

}
class Student extends Person{
    private int stuOfId;
    /**学号*/
    private int startYear;
    private int startMonth;
    private int startDay;
    /**入学时间*/
    private double grades;
    /**绩点*/
    private double credits;
    /*已获得的学分*/

    Student(String name,String id,int stuOfId){
        super(name,id);
        this.stuOfId = stuOfId;
    }
    Student(String name,String id,int stuOfId, double grades){
        this(name,id,stuOfId);
        this.grades = grades;
    }
    Student(String name,String id,int stuOfId,int startYear,int startMonth,int startDay,double grades,double credits){
        this(name,id,stuOfId,grades);
        this.startYear = startYear;
        this.startMonth = startMonth;
        this.startDay = startDay;
        this.credits = credits;
    }

    public void setGrades(double grades) {
        this.grades = grades;
    }
    public void setCredits(double credits){
        this.credits = credits;
    }
    public void setDate(int startYear,int startMonth,int startDay){
        this.startYear = startYear;
        this.startMonth = startMonth;
        this.startDay = startDay;
    }
    @Override
    public String toString(){
        return "name:"+this.name+" id: "+this.id+" stuOfid: "+this.stuOfId;
    }
}

*3、设计一个汽车类Vehicle,包含的属性有车轮个数(wheels)和车重(weight)。小车类Car是Vehicle类的子类,其中包含的属性有载人数(loader)。卡车类(Truck类)是Car类的子类,其中包含的属性有载重量(payload)。每一个类都有相关数据的输出。
实验要求:(1)汽车类Vehicle的构造方法带有2个参数,分别是wheels和weight。Car类的构造方法带有3个参数,分别为wheels、weight和loader。Truck的构造方法带有4个参数,分别为wheels、weight、loader和payload。

在这里插入图片描述

package Ex2.Thirdquestion;

/**
 * @author 15328
 * *3、设计一个汽车类Vehicle,包含的属性有车轮个数(wheels)和车重(weight)。
 * 小车类Car是Vehicle类的子类,其中包含的属性有载人数(loader)。
 * 卡车类(Truck类)是Car类的子类,其中包含的属性有载重量(payload)。每一个类都有相关数据的输出。
 * 实验要求:(1)汽车类Vehicle的构造方法带有2个参数,分别是wheels和weight。
 * Car类的构造方法带有3个参数,分别为wheels、weight和loader。
 * Truck的构造方法带有4个参数,分别为wheels、weight、loader和payload。
 */
public class Main {
    public static void main(String[] args) {
        Vehicle [] vehicle = {
                new Vehicle(4,600),
                new Car(4,4000,20),
                new Truck(16,9000,3,12000),
                //最后一个元素,用逗号或者不加符号都可以
        };
        for(Vehicle x:vehicle){
            System.out.println(x);
        }
    }
}
class Vehicle{
    protected int whells;
    protected double weight;
    Vehicle(int whells,double weight) {
        this.whells = whells;
        this.weight = weight;
    }

    @Override
    public String toString() {
        return "whells: "+whells+" weight: "+String.format("%.2f",weight);
    }
}
class Car extends Vehicle{
    protected int loader;
    Car(int whells,double weight,int loader){
        super(whells,weight);
        this.loader = loader;
    }

    @Override
    public String toString() {
        return "whells: "+whells+" weight: "+String.format("%.2f",weight)+" loader: "+loader;
    }
}
class Truck extends Car{
    protected double playload;
    Truck(int whells,double weight,int loader,double playload){
        super(whells, weight, loader);
        this.playload = playload;
    }

    @Override
    public String toString() {
        return "whells: " + whells + " weight: " + String.format("%.2f", weight) +
                " loader: " + loader + " playload: " + String.format("%.2f",playload);
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值