一、

  1. (账户类 Account)设计一个名为 Account 的类,它包括:

—个名为id的 int 类型私有数据域(默认值为 0)。

—个名为balance 的 double 类型私有数据域(默认值为 0)。

—个名为 annualInterestRate 的 double 类型私有数据域存储当前利率(默认值为 0)。假设所有的账户都有相同的利率。

— 个名为 dateCreated的 Date 类型的私有数据域,存储账户的开户日期。

— 个用于创建默认账户的无参构造方法。

一个用于创建带特定id和初始余额的账户的构造方法。

id、balance 和 annuallnterstRate 的访问器和修改器。

dateCreated的访问器。

一个名为getMonthlyInterest()的方法,返回月利息。

—个名为withDraw 的方法,从账户提取特定数额。

—个名为deposit的方法向账户存储特定数额。

实现这个类。

提示:月利率计算balance * (annualInterestRate / 1200)

用import java.util.Date引入相应Date类

注意:annualInterestRate是一个百分教,比如 4.5%。你需要将其除以100。

编写一个测试程序,创建一个账户ID 为 1122、余额为 20000美元、年利率为 4.5%的

Account 对象(ID和余额通过键盘输入),使用 withdraw 方法取款 2500美元,使用 deposit 方法存款 3000美元,然后打印余额、月利息以及这个账户的开户日期。

import java.util.Date;
import java.io.*;

public class Account {
	
	private int id = 0;
	private double balance = 0;
	private double annualInterestRate = 0;
	private Date dateCreated;  // 定义及初始化
	
	public Account() {
		dateCreated = new Date();  // 创建空的新账户
	}
	
	public Account(int id, double balance) {  // 创建有账户和余额的账户
		this.id = id;
		this.balance = balance;
		dateCreated = new Date();
	}
	
	public int Getid() {  // id的访问器
		return id;
	}
	
	public double Getbalance() {  //balance的访问器
		return balance;
	}
	
	public double GetannualInterestRate() {  // annualInterestRate的返回器
		return annualInterestRate;
	}
	
	public Date DateCreated() {  // dateCreated的返回器
		return dateCreated;
	}
	
	public void SetId(int id) {  // id的修改器
		this.id = id;
	}
	
	public void Setbalance(double balance) {  // balance的修改器
		this.balance = balance;
	}
	
	public void SetannualInterestRate(double annualInterestRate) {  // annualInterestRate的修改器
		this.annualInterestRate = annualInterestRate;
	}
	
	public double GetMonthlyInterest() {  // 计算利息
		return balance * (annualInterestRate / 1200);
	}
	
	public void  Withdraw(double withdraw) {  // 计算余额——支出
		balance = balance - withdraw;
	}
	
	public void  Deposit(double deposit) {  // 计算余额——支入
		balance = balance + deposit;
	}
	
	public static void main(String[] args) throws IOException {
		BufferedReader br_1 = new BufferedReader(new InputStreamReader(System.in));
		System.out.println("输入ID");
		String str_1 = br_1.readLine();  // 获取键盘输入
		int str_1_0 = Integer.parseInt(str_1);  // 转整形
		
		BufferedReader br_2 = new BufferedReader(new InputStreamReader(System.in));
		System.out.println("输入余额");
		String str_2 = br_2.readLine();
		double str_2_0 = Double.parseDouble(str_2);  // 转双精度浮点数
		
		Account account = new Account(str_1_0, str_2_0);  // 新建账户
		account.SetannualInterestRate(4.5);
		account.Withdraw(2500);  // 取款
		account.Deposit(3000);  // 存款
		System.out.println("Balance is " + account.Getbalance());
		System.out.println("Interest rate is " + account.GetannualInterestRate());
		System.out.println("Account Create date is " + account.DateCreated());  // 打印各项目
	}
}

二、

假设需要处理课程信息,每门课程都有一个名字以及选课的学生,要能够从这个课程添加 / 删除一个学生。可以使用一个类来对课程建模,

-courseName: String 课程名

-students: String[] 存储选某课程的学生的数组

-numberOfStudents: int 学生的人数(默认值:0 >

-Course(courseName: String) 创建一个带特定名称的课程

-getCourseNane(): String 返回课程名

-addStudent(student: String): void 给这门课程添加一个新同学

-dropStudent(student: String): void 从这门课程中删除一个学生

-getStudents():String[] 返回选某门课程的所有学生

-getNumberOfStudents(): int 返回这门课程的学生人数

-clear()方法: void 删掉选某门课程的所有学生

编写一个测试程序,创建一门课程,添加三个学生,删除一个学生,然后显示选这门课程的所有学生和选课人数,再清空选这门课程的所有学生,显示目前选课人数。

public class Course {
	String courseName;  // 定义String类型的课程名
	int numberOfStudents = 0;  // 定义int类型的选课学生人数, 并初始化为0
	String students[] = new String[60];  // 定义存储学生信息的数组并初始化
	
	public Course(String courseName) {
		this.courseName = courseName;  // course的构造方法
	}
	
	public String getCourseName() {  // 获取课程名
		return courseName;
	}
	
	public void AddStudent(String student) {  // 添加学生
		students[numberOfStudents] = student;  // 向数组中写入学生名
		numberOfStudents = numberOfStudents + 1;  // 学生人数加一
	}
	
	public void DropStudent(String student) {  // 删除学生
		for (int i = 0; i <= numberOfStudents - 1; i++) {  // 循环查找
			if (students[i] == student) {  // 若某项为该生
				for (int j = i; j < numberOfStudents - 1; j++) {
					students[j] = students[j + 1];  // 循环将该生后面的元素依次前移, 顺便抹除要删除的那个学生
				}
				numberOfStudents = numberOfStudents - 1;  // 学生数减一
			} else {  // 如果某项非该生
				if (i != numberOfStudents - 1) {  // 检查是否循环到了数组最后一个, 发现没到
					continue;
				} else {  // 发现到了
					System.out.println(student + "未选此课程");  // 没这个人
				}
			}
		}
	}
	
	public String[] getStudents() {  // 获取学生列表
		return students;
	}
	
	public int getNumberOfStudents() {  // 获取学生数
		return numberOfStudents;
	}
	
	public void Clear() {  // 清空数组
		numberOfStudents = 0;  // 数量清零
		students = null;  // 数组重置为null
	}
	
	public static void main(String[] args) {
		Course course = new Course("Java语言程序设计");  // 设置课程
		course.AddStudent("张三");
		course.AddStudent("李四");
		course.AddStudent("王五");  // 插入三个人
		
		System.out.println("插入后有" + course.getNumberOfStudents() + "人选" + course.getCourseName());  // 打印选课人数
		System.out.println("分别是:");  // 打印选课学生姓名
		for (int i = 0; i <= course.numberOfStudents - 1; i++) {
			if (i < course.numberOfStudents - 1) {  // 循环打印,不到最后一个就顺便打印个顿号
				System.out.print(course.students[i] + "、");
			} else {
				System.out.println(course.students[i]);  // 到了最后一个就直接打印学生姓名,不再打印顿号,顺便换行
			}
		}
		
		course.DropStudent("王五");
		course.DropStudent("李四");  // 删除学生
		
		// 以下同理
		System.out.println("删除后有" + course.getNumberOfStudents() + "人选" + course.getCourseName());
		System.out.println("分别是:");
		for (int i = 0; i < course.numberOfStudents; i++) {
			if (i < course.numberOfStudents - 1) {
				System.out.print(course.students[i] + "、");
			} else {
				System.out.print(course.students[i]);
			}
		}
		
		System.out.print("\n");
		
		course.Clear();  // 清空选课信息
		
		// 以下同理
		System.out.println("清空后有" + course.getNumberOfStudents() + "人选" + course.getCourseName());
		for (int i = 0; i < course.numberOfStudents; i++) {
			if (i < course.numberOfStudents - 1) {
				System.out.print(course.students[i] + "、");
			} else {
				System.out.print(course.students[i]);
			}
		}
	}
}

三、

  1. 实现一个宠物商店的模型,一个宠物商店可以保存多个宠物的信息(名字,年龄),可以实现上架,下架,查询等功能。

编写一个测试程序实现宠物商店的宠物上架,下架,查询功能。实现效果如下图所示

Java是否有Account类 java account类_Java是否有Account类

提示:宠物商店跟具体猫狗没直接联系,我们要定义一个标准(包含获得宠物的名字、年龄信息的方法),可用接口实现,宠物商店跟标准有关,只要是一个符合宠物标准的就可以到宠物商店去卖,商店可以实现宠物上架,下架,查询等功能,宠物标准可以定义多个实现这个标准的子类(如猫类,狗类)。

 (这个程序我自己复现的时候是没有做到完全实现的,对此我深表歉意)

import java.util.LinkedList;
import java.io.*;

class Link {
	public LinkedList<String[]> datas = new LinkedList<String[]>();  // 新建链表
	
	public void Insert(Pet pet ) {  // 上架宠物
		String[] data = new String[2];
		if ( pet.GetName().equals("") | pet.GetAge().equals("")) {  // 检查是否为空, 存在空值就直接提醒
			System.out.println("信息不能为空。");
		} else {
			data[0] = pet.GetName();  // 赋值入数组
			data[1] = pet.GetAge();
			datas.add(data);  // 数组入链表
			System.out.println("上架成功。");
		}
	}
	
	public void Delete(Pet pet) {  // 下架宠物
		int i = 0;  // 计数器
		int len = datas.size();  // 列表数据量
		for(String[] data : datas) {  // 循环检查
			if (data[0].equals(pet.GetName()) && data[1].equals(pet.GetAge())) {  // 检查是否存在该内容
				datas.remove(i);  // 从链表中删除
				System.out.println("下架成功。");
				break;
			} else {  // 如果不存在
				if (i == len) {  //如果是最后一项还不存在
					System.out.println("没有此宠物。");
				}
			}
			i++;  // 计数器自加
		}
	}
	
	public void Select(Pet pet) {  // 查找宠物
		int i = 0;
		int len = datas.size();
		for(String[] data : datas) {
			if (data[0].equals(pet.GetName())) {  // 只验证对应姓名,其他跟删除的查询部分一样
				System.out.println("此宠物的姓名是:" + data[0] + ",年龄是:" + data[1]);  // 
			} else {
				if (i == len) {
					System.out.println("没有此宠物。");
				} else {
					continue;
				}
			}
			i++;
		}
	}
	public void SelectAll() {  // 全部查找输出
		int i = 0;  // 计数器
		for(String[] data : datas) {
			System.out.println("宠物的姓名是:" + data[0] + ",年龄是:" + data[1]);
			i++;
		}
		System.out.println("此宠物商店目前有" + i + "个宠物");  // 打印技术结果
	}
}

interface Pet {  // 接口
    public String GetName() ;
    public String GetAge() ;
}

class Dogs implements Pet {
	private String name;  // 定义
	private String age;
	
	public Dogs(String name, String age) {  // 创建构造方法
		this.name = name;
		this.age = age;
	}
	
	public String GetName() {  // name的访问器
		return this.name;
	}
	
	public String GetAge() {  // age的访问器
		return this.age;
	}
	
    public String toString(){
        return "狗的名字:" + this.name + ",年龄:" + this.age;
    }
}

class Cats implements Pet {  // 完全同Dogs
	private String name;
	private String age;
	
	public Cats(String name, String age) {
		this.name = name;
		this.age = age;
	}
	
	public String GetName() {
		return this.name;
	}
	
	public String GetAge() {
		return this.age;
	}
	
    public String toString(){
        return "猫的名字:" + this.name + ",年龄:" + this.age;
    }
}

public class PetStore {  // 主类
	
	public static void main(String[] args) throws IOException {  // 主方法
		Link petstore = new Link();  // 新创建链表
		
		while (true) {  // 循环启动
			BufferedReader br01 = new BufferedReader(new InputStreamReader(System.in));
			System.out.println("请输入宠物类型(dog cat)或键入“stop”以退出");
			String str01 = br01.readLine();
			
			BufferedReader br0 = new BufferedReader(new InputStreamReader(System.in));
			System.out.println("请输入操作(select insert delete)");
			String str0 = br0.readLine();
			
			if (str01.equals("dog")) {  // 一些简单的判断和运行, 外层是宠物类型选择, 内层是操作选择
				if (str0.equals("select")) {
					BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
					System.out.println("请输入宠物名");
					String str = br.readLine();
					
					petstore.Select(new Dogs(str, str));
				} else if (str0.equals("insert")) {
					BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
					System.out.println("请输入宠物名");
					String str = br.readLine();
					
					BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));
					System.out.println("请输入宠物年龄");
					String str1 = br1.readLine();
					
					petstore.Insert(new Dogs(str,str1));
					
				} else if (str0.equals("delete")) {
					BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
					System.out.println("请输入宠物名");
					String str = br.readLine();
					
					BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));
					System.out.println("请输入宠物年龄");
					String str1 = br1.readLine();
					
					petstore.Delete(new Dogs(str,str1));
				} else {
					System.out.println("指令无效。");
				}	
			} else if (str01.equals("cat")){
				if (str0.equals("select")) {
					BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
					System.out.println("请输入宠物名");
					String str = br.readLine();
					
					petstore.Select(new Cats(str, str));
				} else if (str0.equals("insert")) {
					BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
					System.out.println("请输入宠物名");
					String str = br.readLine();
					
					BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));
					System.out.println("请输入宠物年龄");
					String str1 = br1.readLine();
					
					petstore.Insert(new Cats(str,str1));
					
				} else if (str0.equals("delete")) {
					BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
					System.out.println("请输入宠物名");
					String str = br.readLine();
					
					BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));
					System.out.println("请输入宠物年龄");
					String str1 = br1.readLine();
					
					petstore.Delete(new Cats(str,str1));
				} else {
					System.out.println("指令无效。");
				}
			} else if (str01.equals("stop")) {
				break;
			} else {
				System.out.println("指令无效。");
			}
			petstore.SelectAll();  // 每次运行完都要输出目前链表中仍有的数据
		}
	}
}

四、

定义一个形状抽象类Shape,继承出圆形子类和矩形子类,同时提供构造方法和Print()方法输出结果,并在PUBLIC类的MAIN方法中创建相应的对象,计算两种图形的面积和周长并输出。

import java.io.*;

abstract class Shape {  // 抽象形状类
	abstract double perimeter();  // 抽象方法
	abstract double area();
}

class Circle extends Shape {
	private double r;
	
	public void setR(double r) {  // r的修改器
		this.r = r;
	}
	
	public double getR() {  // r的访问器
		return r;
	}
	
	double area() {
		return Math.PI * Math.pow(r, 2.0);  // 重写圆的面积计算方法
	}
	
	double perimeter() {
		return 2 * Math.PI * r; // 重写圆的周长计算方法
	}
	
	public Circle(double r) {  //构造含参的方法
		this.setR(r);
		return;
	}
}

class Rectangle extends Shape {  // 几同上理
	private double l;
	private double w;
	
	public void setLW(double l, double w) {  // l和w的修改器
		this.l = l;
		this.w = w;
	}
	
	public double getL() {
		return l;
	}
	
	public double getW() {
		return w;
	}
	
	double area() {
		return l * w;
	}
	
	double perimeter() {
		return 2 * (l + w);
	}
	
	public Rectangle(double l, double w) {
		this.setLW(l, w);
		return;
	}
}

public class Calculate {
	public static void main(String[] args) throws IOException {
		while (true) {
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			System.out.println("请选择图形(圆形,矩形)或键入“退出”");
			String str_choice = br.readLine();
			
			if (str_choice.equals("圆形")) {
				BufferedReader br_r = new BufferedReader(new InputStreamReader(System.in));
				System.out.println("请输入半径");
				String str_r = br_r.readLine();
				double r = Double.parseDouble(str_r);
				
				Circle circle = new Circle(r);
				System.out.println("圆的面积为" + circle.area() + "圆的周长为" + circle.perimeter());
			} else if (str_choice.equals("矩形")) {
				BufferedReader br_l = new BufferedReader(new InputStreamReader(System.in));
				System.out.println("请输入长");
				String str_l = br_l.readLine();
				double l = Double.parseDouble(str_l);
				
				BufferedReader br_w = new BufferedReader(new InputStreamReader(System.in));
				System.out.println("请输入宽");
				String str_w = br_w.readLine();
				double w = Double.parseDouble(str_w);
				
				Rectangle rectangle = new Rectangle(l, w);
				System.out.println("矩形的面积为" + rectangle.area() + "矩形的周长为" + rectangle.perimeter());
			} else if (str_choice.equals("退出")) {
				break;  // 退出循环,结束运行
			} else {
				System.out.println("指令无效");
			}
		}
	}
}