Java实验-01 银行账户与三角形计算

该博客包含两个部分:一是设计了一个银行账户类,包括账户信息、存款、取款和查询余额等功能,并通过字符界面模拟了ATM操作流程;二是创建了Point和Triangle类,用于计算三角形的面积和周长,用户可以通过输入三个点的坐标来确定三角形并输出相关信息。
摘要由CSDN通过智能技术生成
设计一个银行账户类

• 账户信息,如帐号、姓名、开户时间、身份证号码等
• 存款方法
• 取款方法
• 其他方法如“查询余额”和“显示账户信息”等
用字符界面模拟存款和取款过程。

用户类

package bank;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class UserInfo {
    private String account;
    private String name;
    private String openTime;
    private String ID_card;
    private double deposit;
    public UserInfo()
    {
    }
    public UserInfo(String account,String  name,String  ID_card)
    {
        this.name=name;
        this.ID_card=ID_card;
        SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z");
        Date date = new Date(System.currentTimeMillis());
        this.openTime= formatter.format(date);
        this.account=account;
        this.deposit=0;
    }

    public UserInfo(String account,String name,String openTime,String ID_card,double deposit)
    {
        this.account=account;
        this.name=name;
        this.openTime=openTime;
        this.ID_card=ID_card;
        this.deposit=deposit;
    }

    public void addDeposit(double money)
    {
        deposit+=money;
    }
    public void subDeposit(double money)
    {
        deposit-=money;
    }
    @Override
    public String toString() {
        return "UserInfo{" +
                "account='" + account + '\'' +
                ", name='" + name + '\'' +
                ", openTime='" + openTime + '\'' +
                ", ID_card='" + ID_card + '\'' +
                ", deposit=" + deposit +
                '}';
    }

    public double getDeposit() {
        return deposit;
    }

    public void setDeposit(double deposit) {
        this.deposit = deposit;
    }

    public String getID_card() {
        return ID_card;
    }

    public void setID_card(String ID_card) {
        this.ID_card = ID_card;
    }

    public String getOpenTime() {
        return openTime;
    }

    public void setOpenTime(String openTime) {
        this.openTime = openTime;
    }

    public String getAccount() {
        return account;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

银行操作

package bank;

import java.awt.desktop.SystemEventListener;
import java.util.Scanner;

public class BankAccount {
    private UserInfo user;

    public BankAccount(UserInfo user) {
        this.user = user;
    }
    public void ATM()
    {
        Scanner scanner=new Scanner(System.in);
        while(true)
        {
        System.out.println("请选择要进行的操作:1. 存款 2. 取款 3. 查询 4. 显示账户 5. 退出");
        int choice=scanner.nextInt();
        int money;
        switch (choice)
        {
            case 1:
                System.out.println("请输入要存入的金额(整数):");
                money=scanner.nextInt();
                user.addDeposit(money);
                System.out.println("存款成功!已存入"+money+"元可用余额为"+user.getDeposit()+"元");
                break;
            case 2:
                System.out.println("请输入要取款金额(整数):");
                money=scanner.nextInt();
                user.subDeposit(money);
                System.out.println("取款成功!已取出"+money+"元可用余额为"+user.getDeposit()+"元");
                break;
            case 3:
                System.out.println("查询成功,您的余额为:"+user.getDeposit());
                break;
            case 4:
                System.out.println("账号:"+user.getAccount()+"\n姓名:"+user.getName()+"\n开户时间:"+user.getOpenTime()+"\n身份证号:"+user.getID_card());
                break;
            case 5:
                System.err.print("您已退出ATM机");
                System.exit(0);

            default:
                System.out.println("输入有误!请重新操作");
        }
        }

    }

    public static void main(String[] args)
    {
        System.err.println("欢迎使用ATM机,请登录你的账户");
        Scanner scanner=new Scanner(System.in);
        System.err.print("请输入您的账号:");
        String ac=scanner.nextLine();
        System.err.print("请输入您的姓名:");
        String name=scanner.nextLine();
        System.err.print("请输入您的ID号:");
        String id=scanner.nextLine();
        UserInfo userInfo=new UserInfo(ac,name,id);
        System.err.println("正在载入ATM。。。。。");
        BankAccount bankAccount=new BankAccount(userInfo);
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        bankAccount.ATM();
    }
}

计算三角形面积和周长

• 设计 Point 类(点类)
• 设计 Triangle 类,至少包括其构造方法,获取面积和周长的方法
• 通过输入三点坐标来确定一个三角形,并输出三角形的面积、周长等内容

point类

package exp2;

public class Point {
    private double x;
    private double y;
    public Point(double x,double y) {
        this.x=x;
        this.y=y;
    }

    public double getX() {
        return x;
    }

    public void setX(double x) {
        this.x = x;
    }

    public double getY() {
        return y;
    }

    public void setY(double y) {
        this.y = y;
    }
}

三角形类

package exp2;

import java.awt.*;
import java.util.Scanner;
import exp2.Point;

public class Triangle {
    private double d1;
    private double d2;
    private double d3;
    private exp2.Point[] p;
    public Triangle(Point p1, Point p2, Point p3) {
        p = new Point[3];
        p[0] = p1;
        p[1] = p2;
        p[2] = p3;
        d1=Math.sqrt(square(p[0].getX()-p[1].getX())+square(p[0].getY()-p[1].getY()));
        d2=Math.sqrt(square(p[1].getX()-p[2].getX())+square(p[1].getY()-p[2].getY()));
        d3=Math.sqrt(square(p[2].getX()-p[0].getX())+square(p[2].getY()-p[0].getY()));
    }
    public Triangle(){}
    public double getArea()//求面积
    {
            double p=(d1+d2+d3)/2;
            return Math.sqrt(p*(p-d1)*(p-d2)*(p-d3));
    }
    public double getGirth()
    {
        return d1+d2+d3;
    }
    public double square(double a){
        return a*a;//平方
    }
    public static  boolean isTriangle(double x1,double y1,double x2,double y2,double x3,double y3)//判断三条边是否能组成三角形
    {
        double a, b, c;
        a = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
        b = Math.sqrt((x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3));
        c = Math.sqrt((x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2));
        if (a + b > c && a + c > b && b + c > a )return true;
        else return false;
    }


    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        while(true) {
            System.err.println("请输入三个坐标");
            System.err.println("请输入第一个点的x,y坐标:");
            double x1 = scanner.nextDouble();
            double y1 = scanner.nextDouble();
            System.err.println("请输入第二个点的x,y坐标:");
            double x2 = scanner.nextDouble();
            double y2 = scanner.nextDouble();
            System.err.println("请输入第三个点的x,y坐标:");
            double x3 = scanner.nextDouble();
            double y3 = scanner.nextDouble();
            if (isTriangle(x1,y1,x2,y2,x3,y3))
            {
                Point p1 =new Point(x1,y1);
                Point p2=new Point(x2,y2);
                Point p3=new Point(x3,y3);
                Triangle triangle=new Triangle(p1,p2,p3);
                System.out.printf("由这三个点组成的三角形的面积和周长分别为%.2f %.2f",triangle.getArea(),triangle.getGirth());
                System.exit(0);
            }
            else
            {
                System.err.println("这三个点不能组成三角形!请重新输入");
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值