设计一个银行账户类
• 账户信息,如帐号、姓名、开户时间、身份证号码等
• 存款方法
• 取款方法
• 其他方法如“查询余额”和“显示账户信息”等
用字符界面模拟存款和取款过程。
用户类
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("这三个点不能组成三角形!请重新输入");
}
}
}
}