题目集7-9总结性Blog
前言:
本次作业难度较大,图形卡片排序游戏和图形卡牌分组游戏难度中等,ATM机类结构设计第一次难度适中,第二次难度较大。
目录(java题目集):
1.题目集七(7-1 图形卡片排序游戏)
2.题目集七(7-2 图形卡片分组游戏)
3.题目集八(7-1 ATM机类结构设计(一)),题目集九(7-1 ATM机类结构设计(二))
1. 题目集七(7-1 图形卡片排序游戏)
题目要求:本程序仅用于为学生所玩的游戏提供正确答案的功能,即根据学生得到的卡片种类与数量,给出排序前和排序后的卡片顺序,同时给出所有卡片的面积之和。
输入格式:
首先,在一行上输入一串数字(1~4,整数),其中,1代表圆形卡片,2代表矩形卡片,3代表三角形卡片,4代表梯形卡片。各数字之间以一个或多个空格分隔,以“0”结束。例如: 1 3 4 2 1 3 4 2 1 3 0
然后根据第一行数字所代表的卡片图形类型,依次输入各图形的相关参数,例如:圆形卡片需要输入圆的半径,矩形卡片需要输入矩形的宽和长,三角形卡片需要输入三角形的三条边长,梯形需要输入梯形的上底、下底以及高。各数据之间用一个或多个空格分隔。
输出格式:
- 如果图形数量非法(小于0)或图形属性值非法(数值小于0以及三角形三边不能组成三角形),则输出Wrong Format。
- 如果输入合法,则正常输出,所有数值计算后均保留小数点后两位即可。输出内容如下:
- 排序前的各图形类型及面积,格式为图形名称1:面积值1图形名称2:面积值2 …图形名称n:面积值n ,注意,各图形输出之间用空格分开,且输出最后存在一个用于分隔的空格;
- 排序后的各图形类型及面积,格式同排序前的输出;
- 所有图形的面积总和,格式为Sum of area:总面积值。
输入样例1:
在这里给出一组输入。例如:
1 5 3 2 0
输出样例1:
在这里给出相应的输出。例如:
Wrong Format
输入样例2:
在这里给出一组输入。例如:
4 2 1 3 0
3.2 2.5 0.4 2.3 1.4 5.6 2.3 4.2 3.5
输出样例2:
在这里给出相应的输出。例如:
The original list:
Trapezoid:1.14 Rectangle:3.22 Circle:98.52 Triangle:4.02
The sorted list:
Circle:98.52 Triangle:4.02 Rectangle:3.22 Trapezoid:1.14
Sum of area:106.91
输入样例3:
在这里给出一组输入。例如:
4 2 1 3 0
3.2 2.5 0.4 2.3 1.4 5.6 2.3 4.2 8.4
输出样例3:
在这里给出相应的输出。例如:
Wrong Format
题目分析:对圆,矩形,三角形,梯形四个类,分别定义各自的属性,在主方法中进行输入,运算,并且进行输出。
主要代码:
import java.math.BigDecimal;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int i = 0,j,temp2;
double temp1,sum=0;
int[] a = new int[1000];
a[i] = input.nextInt();
while (a[i] != 0) {
i++;
a[i] = input.nextInt();
}
double[] b = new double[i];
for (i = 0; a[i] != 0; i++) {
if (a[i] < 1 || a[i] > 4) {
System.out.println("Wrong Format");
System.exit(0);
}
}
i=0;
while (a[i] != 0) {
switch (a[i]) {
case 1:
Circle circle = new Circle();
circle.radius = input.nextDouble();
if(circle.validate()==false){
System.out.println("Wrong Format");
System.exit(0);
}
sum+=circle.showArea();
BigDecimal z = new BigDecimal(circle.showArea());
b[i] = z.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
break;
case 2:
Rectangle rectangle = new Rectangle();
rectangle.width = input.nextDouble();
rectangle.length = input.nextDouble();
if(rectangle.validate()==false){
System.out.println("Wrong Format");
System.exit(0);
}
sum+=rectangle.showArea();
BigDecimal zz = new BigDecimal(rectangle.showArea());
b[i] = zz.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
break;
case 3:
Triangle triangle = new Triangle();
triangle.side1=input.nextDouble();
triangle.side2=input.nextDouble();
triangle.side3=input.nextDouble();
if(triangle.validate()==false){
System.out.println("Wrong Format");
System.exit(0);
}
sum+=triangle.showArea();
BigDecimal zzz = new BigDecimal(triangle.showArea());
b[i] = zzz.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
break;
case 4:
Trapezoid trapezoid=new Trapezoid();
trapezoid.s=input.nextDouble();
trapezoid.x=input.nextDouble();
trapezoid.h=input.nextDouble();
if(trapezoid.validate()==false){
System.out.println("Wrong Format");
System.exit(0);
}
sum+=trapezoid.showArea();
BigDecimal zzzz = new BigDecimal(trapezoid.showArea());
b[i] = zzzz.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
break;
}
i++;
}
i=0;
System.out.println("The original list:");
java.text.DecimalFormat df =new java.text.DecimalFormat("#.00");
while (a[i] != 0){
if(a[i]==1)
System.out.print("Circle:"+df.format(b[i])+" ");
if(a[i]==2)
System.out.print("Rectangle:"+df.format(b[i])+" ");
if(a[i]==3)
System.out.print("Triangle:"+df.format(b[i])+" ");
if(a[i]==4)
System.out.print("Trapezoid:"+df.format(b[i])+" ");
i++;
}
for(i=0;a[i]!=0;i++){
for(j=0;a[j]!=0;j++){
if(b[j]<b[i]){
temp1=b[j];
b[j]=b[i];
b[i]=temp1;
temp2=a[j];
a[j]=a[i];
a[i]=temp2;
}
}
}
System.out.println("\nThe sorted list:");
i=0;
while (a[i] != 0){
if(a[i]==1)
System.out.print("Circle:"+df.format(b[i])+" ");
if(a[i]==2)
System.out.print("Rectangle:"+df.format(b[i])+" ");
if(a[i]==3)
System.out.print("Triangle:"+df.format(b[i])+" ");
if(a[i]==4)
System.out.print("Trapezoid:"+df.format(b[i])+" ");
i++;
}
System.out.println("\n"+String.format("Sum of area:"+"%.2f", sum));
}
static class Circle {
double radius;
boolean validate() {
if(radius<=0)
return false;
return true;
}
public double showArea(){
return Math.PI * radius * radius;
}
}
static class Rectangle {
double length;
double width;
boolean validate(){
if(width<=0||length<=0)
return false;
return true;
}
public double showArea() {
return length * width;
}
}
static class Triangle {
double side1;
double side2;
double side3;
boolean validate(){
if(side1<=0||side2<=0||side3<=0)
return false;
if(side1+side2<=side3||side1+side3<=side2||side2+side3<=side1)
return false;
return true;
}
public double showArea() {
return Math.sqrt((side1 + side2 + side3) * (-side1 + side2 + side3) * (side1 - side2 + side3) * (side1 + side2 - side3)) / 4;
}
}
static class Trapezoid {
double s;
double x;
double h;
boolean validate(){
if(s<=0||x<=0||h<=0)
return false;
return true;
}
public double showArea() {
return (s+x)*h/2;
}
}
}
2. .题目集七(7-2 图形卡片分组游戏)
题目分析:本题在第一题上做了些许改进,首先对输出有了区别,其次多了一项对相同类型图形的输出以及将其排序输出,对代码有较多的增加,用数组进行面积的储存,并将其进行排序输出。
主要代码:
(1).对类的构造:
static class Circle {
double radius;
boolean validate() {
if(radius<=0)
return false;
return true;
}
public double showArea(){
return Math.PI * radius * radius;
}
}
static class Rectangle {
double length;
double width;
boolean validate(){
if(width<=0||length<=0)
return false;
return true;
}
public double showArea() {
return length * width;
}
}
static class Triangle {
double side1;
double side2;
double side3;
boolean validate(){
if(side1<=0||side2<=0||side3<=0)
return false;
if(side1+side2<=side3||side1+side3<=side2||side2+side3<=side1)
return false;
return true;
}
public double showArea() {
return Math.sqrt((side1 + side2 + side3) * (-side1 + side2 + side3) * (side1 - side2 + side3) * (side1 + side2 - side3)) / 4;
}
}
static class Trapezoid {
double s;
double x;
double h;
boolean validate(){
if(s<=0||x<=0||h<=0)
return false;
return true;
}
public double showArea() {
return (s+x)*h/2;
}
}
(2).对数据的输入以及储存
if(a[0]==0){
System.out.println("Wrong Format");
System.exit(0);
}
while (a[i] != 0) {
i++;
a[i] = input.nextInt();
}
(3).进行输出
while (a[i] != 0) {
switch (a[i]) {
case 1:
Circle circle = new Circle();
circle.radius = input.nextDouble();
if(circle.validate()==false){
System.out.println("Wrong Format");
System.exit(0);
}
BigDecimal z = new BigDecimal(circle.showArea());
b[i] = z.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
break;
case 2:
Rectangle rectangle = new Rectangle();
rectangle.width = input.nextDouble();
rectangle.length = input.nextDouble();
if(rectangle.validate()==false){
System.out.println("Wrong Format");
System.exit(0);
}
BigDecimal zz = new BigDecimal(rectangle.showArea());
b[i] = zz.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
break;
case 3:
Triangle triangle = new Triangle();
triangle.side1=input.nextDouble();
triangle.side2=input.nextDouble();
triangle.side3=input.nextDouble();
if(triangle.validate()==false){
System.out.println("Wrong Format");
System.exit(0);
}
BigDecimal zzz = new BigDecimal(triangle.showArea());
b[i] = zzz.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
break;
case 4:
Trapezoid trapezoid=new Trapezoid();
trapezoid.s=input.nextDouble();
trapezoid.x=input.nextDouble();
trapezoid.h=input.nextDouble();
if(trapezoid.validate()==false){
System.out.println("Wrong Format");
System.exit(0);
}
BigDecimal zzzz = new BigDecimal(trapezoid.showArea());
b[i] = zzzz.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
break;
}
i++;
}
System.out.println("The original list:");
java.text.DecimalFormat df =new java.text.DecimalFormat("#.00");
System.out.print("[");
i=0;
while (a[i] != 0){
if(a[i]==1)
System.out.print("Circle:"+df.format(b[i])+" ");
if(a[i]==2)
System.out.print("Rectangle:"+df.format(b[i])+" ");
if(a[i]==3)
System.out.print("Triangle:"+df.format(b[i])+" ");
if(a[i]==4)
System.out.print("Trapezoid:"+df.format(b[i])+" ");
i++;
}
System.out.print("]\n");
System.out.println("The Separated List:");
System.out.print("[");
for(i=0;a[i]!=0;i++){
if(a[i]==1){
sum[0]+=b[i];
c[j]=b[i];
j++;
System.out.print("Circle:"+df.format(b[i])+" ");
}
}
c[j]=0;
j=0;
System.out.print("]");
System.out.print("[");
for(i=0;a[i]!=0;i++){
if(a[i]==2){
sum[1]+=b[i];
d[j]=b[i];
j++;
System.out.print("Rectangle:"+df.format(b[i])+" ");
}
}
d[j]=0;
j=0;
System.out.print("]");
System.out.print("[");
for(i=0;a[i]!=0;i++){
if(a[i]==3){
sum[2]+=b[i];
e[j]=b[i];
j++;
System.out.print("Triangle:"+df.format(b[i])+" ");
}
}
e[j]=0;
j=0;
System.out.print("]");
System.out.print("[");
for(i=0;a[i]!=0;i++){
if(a[i]==4){
sum[3]+=b[i];
f[j]=b[i];
j++;
System.out.print("Trapezoid:"+df.format(b[i])+" ");
}
}
f[j]=0;
j=0;
System.out.print("]\n");
System.out.println("The Separated sorted List:");
for(i=0;c[i]!=0;i++){
for(j=0;c[j]!=0;j++){
if(c[j]<c[i]){
temp1=c[j];
c[j]=c[i];
c[i]=temp1;
}
}
}
for(i=0;d[i]!=0;i++){
for(j=0;d[j]!=0;j++){
if(d[j]<d[i]){
temp1=d[j];
d[j]=d[i];
d[i]=temp1;
}
}
}
for(i=0;e[i]!=0;i++){
for(j=0;e[j]!=0;j++){
if(e[j]<e[i]){
temp1=e[j];
e[j]=e[i];
e[i]=temp1;
}
}
}
for(i=0;f[i]!=0;i++){
for(j=0;f[j]!=0;j++){
if(f[j]<f[i]){
temp1=f[j];
f[j]=f[i];
f[i]=temp1;
}
}
}
System.out.print("[");
for(i=0;c[i]!=0;i++){
System.out.print("Circle:"+df.format(c[i])+" ");
}
System.out.print("]");
System.out.print("[");
for(i=0;d[i]!=0;i++){
System.out.print("Rectangle:"+df.format(d[i])+" ");
}
System.out.print("]");
System.out.print("[");
for(i=0;e[i]!=0;i++){
System.out.print("Triangle:"+df.format(e[i])+" ");
}
System.out.print("]");
System.out.print("[");
for(i=0;f[i]!=0;i++){
System.out.print("Trapezoid:"+df.format(f[i])+" ");
}
System.out.print("]\n");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
if(sum[j]<sum[i]){
temp1=sum[j];
sum[j]=sum[i];
sum[i]=temp1;
}
}
}
System.out.println("The max area:"+df.format(sum[0]));
}
3.题目集八(7-1 ATM机类结构设计(一))与题目集九(7-1 ATM机类结构设计(二))
题目要求:编写一个银行 ATM 机的模拟程序,能够完成用户的存款、取款以及查询余额功能。
输入格式:
每一行输入一次业务操作,可以输入多行,最终以字符#终止。具体每种业务操作输入格式如下:
- 存款、取款功能输入数据格式: 卡号 密码 ATM机编号 金额(由一个或多个空格分隔), 其中,当金额大于0时,代表取款,否则代表存款。
- 查询余额功能输入数据格式: 卡号
输出格式:
①输入错误处理
- 如果输入卡号不存在,则输出Sorry,this card does not exist.。
- 如果输入ATM机编号不存在,则输出Sorry,the ATM's id is wrong.。
- 如果输入银行卡密码错误,则输出Sorry,your password is wrong.。
- 如果输入取款金额大于账户余额,则输出Sorry,your account balance is insufficient.。
- 如果检测为跨行存取款,则输出Sorry,cross-bank withdrawal is not supported.。
②取款业务输出
输出共两行,格式分别为:
[用户姓名]在[银行名称]的[ATM编号]上取款¥[金额]
当前余额为¥[金额]
其中,[]说明括起来的部分为输出属性或变量,金额均保留两位小数。
③存款业务输出
输出共两行,格式分别为:
[用户姓名]在[银行名称]的[ATM编号]上存款¥[金额]
当前余额为¥[金额]
其中,[]说明括起来的部分为输出属性或变量,金额均保留两位小数。
④查询余额业务输出
¥[金额]
金额保留两位小数。
题目分析:本题构造了卡类(卡号,密码,银行类型),用户类User,ATM机类(ID,银行),数据类ValidateData,ATM getATMbyATMID,UnionPay,GetBalance。这些类互相联系,将输入输出紧密联系,ATM机类又含有银行类的对象
题目代码:
(1).类的构造代码:
class Bank {
private String bankNO;
private String bankName;
private double rate;
private ArrayList<Account> accountList = new ArrayList<Account>();
private static ArrayList<ATM> ATMList = new ArrayList<ATM>();
public Bank() {
super();
// TODO Auto-generated constructor stub
}
public Bank(String bankNO, String bankName,double rate ) {
super();
this.bankNO = bankNO;
this.bankName = bankName;
this.rate = rate;
}
public String getBankNO() {
return bankNO;
}
public void setBankNO(String bankNO) {
this.bankNO = bankNO;
}
public String getBankName() {
return bankName;
}
public void setBankName(String bankName) {
this.bankName = bankName;
}
public double getRate() {
return rate;
}
public void setRate(double rate) {
this.rate = rate;
}
public void addAccount(Account account) {
this.accountList.add(account);
}
public void removeAccount(Account account) {
this.accountList.remove(account);
}
public void addATM(ATM aTM) {
this.ATMList.add(aTM);
}
public void removeATM(ATM aTM) {
this.ATMList.remove(aTM);
}
public ArrayList<Account> getAccountList() {
return accountList;
}
public void setAccountList(ArrayList<Account> accountList) {
this.accountList = accountList;
}
public ArrayList<ATM> getATMList() {
return ATMList;
}
public void setATMList(ArrayList<ATM> aTMList) {
ATMList = aTMList;
}
public static Bank getBankbyatm(String ATMID) {
Iterator<ATM> atmItr = Bank.ATMList.iterator();
ATM atm = null;
while(atmItr.hasNext()) {
atm = atmItr.next();
if(atm.getATMID().equals(ATMID)) {
return atm.getBank();
}
}
return null;
}
}
class User {
private String ID;
private String name;
private String Phone;
ArrayList<Account> list = new ArrayList<Account>();
public User(String iD, String name, String phone) {
super();
ID = iD;
this.name = name;
Phone = phone;
}
public String getID() {
return ID;
}
public void setID(String iD) {
ID = iD;
}
public String getPhone() {
return Phone;
}
public void setPhone(String phone) {
Phone = phone;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void addAccount(Account account) {
this.list.add(account);
}
public void removeAccount(Account account) {
this.list.remove(account);
}
}
class Account {
private String accountNO;
private double balance = 0;
private User user = null;
private Bank bank = null;
private UnionPay unionPay = null;
private String type;
private static ArrayList<Card> list = new ArrayList<Card>();
public Account(String accountNO, double balance, User user, Bank bank,String type) {
super();
this.accountNO = accountNO;
this.balance = balance;
this.user = user;
this.bank = bank;
this.type = type;
}
public void addCard(Card card) {
list.add(card);
}
public String getType() {
return type;
}
public void removeCard(Card card) {
list.remove(card);
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public String getAccountNO() {
return accountNO;
}
public void setAccountNO(String accountNO) {
this.accountNO = accountNO;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Bank getBank() {
return bank;
}
public void setBank(Bank bank) {
this.bank = bank;
}
public ArrayList<Card> getList() {
return list;
}
public void setList(ArrayList<Card> list) {
Account.list = list;
}
public static Account getAmountbyCardNO(String cardNO) {
Iterator<Card> cardItr = Account.list.iterator();
Card card = null;
while(cardItr.hasNext()) {
card = cardItr.next();
if(card.getCardNO().equals(cardNO)) {
return card.getAccount();
}
}
return null;
}
}
class Card {
private String cardNO;
private String cardPassword;
private Account account = null;
private String type;
public Card(String cardNO, String cardPassword, Account account,String type) {
super();
this.cardNO = cardNO;
this.cardPassword = cardPassword;
this.account = account;
this.type = type;
}
public String getCardNO() {
return cardNO;
}
public void setCardNO(String cardNO) {
this.cardNO = cardNO;
}
public String getCardPassword() {
return cardPassword;
}
public Account getAccount() {
return account;
}
public void setAccount(Account account) {
this.account = account;
}
public void setCardPassword(String cardPassword) {
this.cardPassword = cardPassword;
}
public boolean checkCard() {
Pattern p = Pattern.compile("\\d{16}+");
Matcher m = p.matcher(this.cardNO);
return m.matches();
}
public boolean checkPassword(String password) {
return this.cardPassword.equals(password);
}
}
class ATM {
private String ATMID;
private Bank bank = null;
public ATM(String aTMID, Bank bank) {
super();
ATMID = aTMID;
this.bank = bank;
}
public String getATMID() {
return ATMID;
}
public void setATMID(String aTMID) {
ATMID = aTMID;
}
public Bank getBank() {
return bank;
}
public void setBank(Bank bank) {
this.bank = bank;
}
}
class Withdraw {
private UnionPay unionPay;
private String cardNO;
private String cardPassword;
private String ATMID;
private double amount;
private double bankCredit=0.00;
private double Credit=0.00;
public Withdraw(UnionPay unionPay, String cardNO, String cardPassword, String aTMID, double amount) {
this.unionPay = unionPay;
this.cardNO = cardNO;
this.cardPassword = cardPassword;
ATMID = aTMID;
this.amount = amount;
}
public Withdraw(String cardNO, String cardPassword, String aTMID, double amount) {
this.cardNO = cardNO;
this.cardPassword = cardPassword;
ATMID = aTMID;
this.amount = amount;
}
public void withdraw() {
Card card = ValidateData.getCardbyCardNO(unionPay, cardNO);
if(card == null) {
System.out.println("Sorry,this card does not exist.");
System.exit(0);
}
ATM aTM = ValidateData.getATMbyATMID(unionPay, ATMID);
if(aTM == null) {
System.out.println("Sorry,the ATM's id is wrong.");
System.exit(0);
}
Account account = Account.getAmountbyCardNO(cardNO);
Bank bank = Bank.getBankbyatm(ATMID);
double balance = account.getBalance();
/**
* 校验卡密码是否正确
*/
if(!card.getCardPassword().equals(cardPassword)) {
System.out.println("Sorry,your password is wrong.");
System.exit(0);
}
/**
* 校验是否为跨行取款计算跨行费
*/
if (account.getBank().getBankNO() != aTM.getBank().getBankNO()) {
bankCredit = aTM.getBank().getRate()*amount;
}
if(account.getType().equals("贷记账户")) {
if(balance>0&&balance<amount) {
Credit = (amount-balance)*unionPay.getServiceCharge();
account.setBalance(balance - amount - bankCredit-Credit);//取款更新余额操作
}
else
if(balance<=0) {
Credit = amount*unionPay.getServiceCharge();
account.setBalance(balance - amount - bankCredit-Credit);//取款更新余额操作
}
else {
account.setBalance(balance - amount - bankCredit);
}
}
if(account.getType().equals("借记账户")){
account.setBalance(balance - amount - bankCredit);//取款更新余额操作
}
/**
* 校验取款金额是否大于余额
*/
if ((account.getType().equals("借记账户")&&(balance - amount - bankCredit)<0)||
(account.getType().equals("贷记账户")&&
(balance - amount - bankCredit-Credit)<(-unionPay.getMaxCredit()))) {
System.out.println("Sorry,your account balance is insufficient.");
System.exit(0);
}
if(amount >= 0) {
showResult(account,bank,1);
}else {
showResult(account,bank,0);
}
}
public void showResult(Account account,Bank bank,int flag) {
String type = "";
String type1 = "";
if(flag == 1) {
type = "业务:取款 ";
type1 = "取款";
}
String userName = account.getUser().getName();
String bankName = bank.getBankName();
System.out.println(type + userName + "在" +
bankName + "的" + ATMID + "号ATM机上" + type1 + String.format("¥%.2f", amount));
System.out.println("当前余额为" + String.format("¥%.2f", account.getBalance()));
}
}
class ValidateData {
public static Card getCardbyCardNO(UnionPay unionPay,String cardNO) {
Card card = null;
Iterator<Bank> bankItr = unionPay.getBankList().iterator();
while(bankItr.hasNext()) {
ArrayList<Account> accountList = bankItr.next().getAccountList();
Iterator<Account> accountItr = accountList.iterator();
while(accountItr.hasNext()) {
ArrayList<Card> cardList = accountItr.next().getList();
Iterator<Card> cardItr = cardList.iterator();
while(cardItr.hasNext()) {
card = cardItr.next();
if(card.getCardNO().equals(cardNO)) {
return card;
}
}
}
}
return null;
}
public static ATM getATMbyATMID(UnionPay unionPay,String ATMID) {
Iterator<Bank> bankItr = unionPay.getBankList().iterator();
Bank bank = null;
ATM aTM = null;
while(bankItr.hasNext()) {
bank = bankItr.next();
Iterator<ATM> aTMItr = bank.getATMList().iterator();
while(aTMItr.hasNext()) {
aTM = aTMItr.next();
if(aTM.getATMID().equals(ATMID)) {
return aTM;
}
}
}
return null;
}
}
class UnionPay {
private ArrayList<Bank> bankList = new ArrayList<Bank>();
private double ServiceCharge = 0.05;
private double MaxCredit = 50000.00;
public UnionPay() {
super();
// TODO Auto-generated constructor stub
}
public UnionPay(ArrayList<Bank> bankList) {
super();
this.bankList = bankList;
}
public ArrayList<Bank> getBankList() {
return bankList;
}
public void setBankList(ArrayList<Bank> bankList) {
this.bankList = bankList;
}
public void addBank(Bank bank) {
this.bankList.add(bank);
}
public void removeBank(Bank bank) {
this.bankList.remove(bank);
}
public double getServiceCharge() {
return ServiceCharge;
}
public void setServiceCharge(double serviceCharge) {
ServiceCharge = serviceCharge;
}
public double getMaxCredit() {
return MaxCredit;
}
public void setMaxCredit(double maxCredit) {
MaxCredit = maxCredit;
}
}
class GetBalance {
private UnionPay unionPay;
public GetBalance(UnionPay unionPay) {
super();
this.unionPay = unionPay;
}
public double getBalance(String cardNO) {
return ValidateData.getCardbyCardNO(unionPay, cardNO).getAccount().getBalance();
设计思路:首先对题目有一个大致的了解,联系生活中银行的工作情况,银行有银行卡。银行又有客户,客户又有姓名,性别的属性,银行又有银行卡,银行卡有银行卡好和密码,还有余额,余额又有利率,通过这些实际关系来构造类,并进行操作。
踩坑心得:
题目集七时对保留两位小数有问题,无法做到四舍五入,导致输出格式一直错误,最后使用了BigDecimal的方法,将小数保留到后两位。第二题不知道如何将其分类排序再输出,最后想到用数组储存数据将其输出,一开始要进行输入,将每个图形的数量计算出来,再将其进行输入输出,没有用数列方便。
题目集八和题目集九对类的设计不到位,导致对题目的分析很难进行,以及数据如何处理都无法做到很全面,经过对现实生活中的分析,设计出合适的类,将题目很快就能分析出来,要对类的构造进行思考。
改进建议:对数据处理还不够细节,对输入输出还是不够明确,输出格式把握的很不到位,需要多进行分析。
总结:这次作业让我对类的构造有了更深的感触,类的构造在程序的编写中十分重要,只有构造出正确类的关系,才能让程序编造的更简单且效率更高,以后对于类的构造要多进行思考。