TQC+ 物件導向程式語言 Java 6 607 電腦銷售業績
題目前後相關,請閱讀完這個題組的五個題目之後再作答,每題答案皆能獨立執行。請將需要重複或共同使用的程式片段撰寫成函式,以供在類別中呼叫使用,避免在不同的類別中重複寫相同的程式碼,否則將酌量扣分。
題目一:
題目說明:
請開啟檔案 JPD06_1.java,設計「電腦銷售業績」程式,請依下列題意完成作答。將 JPD06_1.java 內的 class JPD06_1 修改為 class JPA06_1,將檔案另存為 JPA06_1.java 後編譯為 JPA06_1.class,所有題目中有使用到的類別也請編譯後一併儲存。
設計說明:
(1) 寫一個 NB 類別。假設一台 17″ 筆記型電腦的成本是 10000 元,14″ 筆記型電腦的成本是 8500 元。
(2) 請製造一個 17″ 筆記型電腦及一個 14″ 筆記型電腦,呼叫其 getCost 方法,印出其傳回值。
執行結果參考畫面:
程式碼:
class NB {
int cost;
NB(int model) {
if(model == 1)
cost = 10000;
else if(model == 2)
cost = 8500;
}
int getCost() {
return cost;
}
}
public class JPA06_1 {
public static void main(String args[]){
NB e1 = new NB(1);
NB e2 = new NB(2);
System.out.printf("一台17\" 筆記型電腦的成本:%d\n", e1.getCost());
System.out.printf("一台14\" 筆記型電腦的成本:%d\n", e2.getCost());
}
}
題目二:
題目說明:
請開啟 JPD06_2.java,第一電腦科技公司同時生產兩種桌上型電腦,分別「商用電腦」及「高階雙核心電腦」。請計算電腦的成本與售價,請依下列題意完成作答。將 JPD06_2.java 内的 class JPD06_2 修改為 class JPA06_2,將檔案另存為 JPA06_2.java 後編譯為 JPA06_2.class,所有題目中有使用到的類別也請編譯後一併儲存。
設計說明:
(1) 商用電腦的物件為 BasicNB、高階雙核心電腦物件為 LuxNB 。
(2) 假設一台商用電腦的週邊成本是 5000 元 (不含 CPU),高階雙核心電腦的週邊成本是 8500 元 (不含 CPU)。
(3) 商用電腦的物件 CPU 成本 (INTEL ATOM N270 1.6 GHZ CPU + 1000),高階雙核心電腦物件 LuxNB CPU 成本 (INTEL CORE2 SU9600 CPU + 2000)。
(4) 假設 INTEL ATOM N270 1.6 GHZ CPU 成本為 1000 元,INTEL CORE2 SU9600 CPU 成本是 2000 元。
(5) 這兩型的售價都是成本的 1.5 倍。
(6) 請為這家電腦工廠設計一個使用 abstract class 的物件導向程式,以計算電腦的成本與售價。
執行結果參考畫面:
程式碼:
class NB {
int cost;
NB(int model) {
if(model == 1)
cost = 5000;
else if(model == 2)
cost = 8500;
}
int getCost() {
return cost;
}
}
class CPU {
int cost;
CPU(String type) {
if(type.equals("basic"))
cost = 1000;
else if(type.equals("Lux"))
cost = 2000;
}
int getCost() {
return cost;
}
}
abstract class BasicLuxNB {
NB nb;
CPU cpu;
BasicLuxNB(int model, String type) {
nb = new NB(model);
cpu = new CPU(type);
}
abstract double cost();
double price() {
return cost() * 1.5;
}
}
class BasicNB extends BasicLuxNB {
BasicNB(int model, String type) {
super(model, type);
}
double cost() {
return nb.getCost() + cpu.getCost() + 1000;
}
}
class LuxNB extends BasicLuxNB {
LuxNB(int model, String type) {
super(model, type);
}
double cost() {
return nb.getCost() + cpu.getCost() + 2000;
}
}
public class JPA06_2 {
public static void main(String args[]){
BasicNB bc = new BasicNB(1,"basic");
System.out.println("商用電腦成本: " + bc.cost());
System.out.println("商用電腦售價: " + bc.price());
LuxNB lc = new LuxNB(2,"Lux");
System.out.println("高階雙核心電腦成本: " + lc.cost());
System.out.println("高階雙核心電腦售價: " + lc.price());
}
}
題目三:
題目說明:
請開啟 JPD06_3.java,印出直營店星期一至星期五的營業額報表,請依下列題意完成作答。將 JPD06_3.java 内的 class JPD06_3 修改為 class JPA06_3,將檔案另存為 JPA06_3.java 後編譯為 JPA06_3.class,所有題目中有使用到的類別也請編譯後一併儲存。
設計說明:
(1) 假設第一電腦科技公司直營店遍佈北部、中部及南部。下列表格為此公司三月份的總營業額,並已進行計算,分析出在三月份内,直營店星期一至星期日的總營業額。
直營店 | 一 | 二 | 三 | 四 | 五 | 六 | 日 |
---|---|---|---|---|---|---|---|
北部 | 120 | 420 | 315 | 250 | 418 | 818 | 900 |
中部 | 312 | 183 | 215 | 89 | 83 | 600 | 700 |
南部 | 215 | 500 | 430 | 210 | 300 | 918 | 880 |
(2) 請用陣列記錄各家直營店星期一至星期日總營業額。
(3) 程式的輸出、輸入必須與執行結果參考畫面的内容一樣,才能給予分數。
執行結果參考畫面:
程式碼:
public class JPA06_3 {
public static void main(String[] arge){
String[] ShopLocation = {"北部", "中部", "南部"}; // 直營店位置
int[][] Turnover = // 星期一至日的總營業額
// 一 二 三 四 五 六 日
{{120, 420, 315, 250, 418, 818, 900},
{312, 183, 215, 89, 83, 600, 700},
{215, 500, 430, 210, 300, 918, 880}};
System.out.println("\n\t 第一電腦科技公司週報表 ( 單 位 : 萬 元 ) ");
System.out.println( "直營店 \t 一 \t 二 \t 三 \t 四 \t 五 \t六 \t 日 \t ");
System.out.println( "=====\t====\t====\t====\t====\t====\t====\t====");
for(int i = 0;i < ShopLocation.length;i++) {
System.out.print(ShopLocation[i] + "\t");
for(int j = 0;j < Turnover[i].length;j++)
System.out.print(Turnover[i][j] + "\t");
System.out.println("");
}
}
}
題目四:
題目說明:
請開啟 JPD06_4.java,接續題目三的三月份總營業額,請為公司計算這筆訂單的總成本、營業額及銷售毛利,請依下列題意完成作答。將 JPD06_4.java 内的 class JPD06_4 修改為 class JPA06_4,將檔案另存為 JPA06_4.java 後編譯為 JPA06_4.class,所有題目中有使用到的類別也請編譯後一併儲存。
設計說明:
(1) 假設第一電腦科技公司三月總公司統計銷售成本,北部直營店 (第 1 間直營店) 1500 萬元,中部直營店 (第 2 間直營店) 1515 萬元,南部直營店 (第 3 間直營店) 1858 萬元。
(2) 總公司統計營業費用,北部直營店營業費用 180 萬元,中部直營店營業費用 200 萬元,南部直營店營業費用 360 萬元。
(3) 請計算出每間直營店的銷售毛利率。
(4) 銷售毛利率 = (直營店三月份總營業額 – 直營店銷售成本 – 直營店營業費用) / 直營店銷售成本。
(5) 程式的輸出、輸入必須與執行結果參考畫面的内容一樣,才能給予分數。
執行結果參考畫面:
程式碼:
public class JPA06_4 {
public static void main(String[] arge){
String[] map = { "北部" , "中部" , "南部" };
int[][] salary = {{ 120 , 420 , 315 , 250 , 418,818,900 } , { 312 , 183 , 215 , 89 , 83,600,700 } , { 215 , 500 , 430 , 210 , 300,918,880 }};
int cost[] = {0,0,0}; // 先拿來當銷售成本
int sum[] = {0,0,0,0,0,0,0}; // 前三個放總營業額
int data[] = {0,0,0}; // 存放營業費用資料
int[][] a_box = salary ; // 這個基本上用不到
int i , j , i_max , j_max, min; // 我全部拿來當迴圈的變數
double ratio; // 毛利率
// 更新銷售成本
cost[0] = 1500;
cost[1] = 1515;
cost[2] = 1858;
// 更新營業費用
data[0] = 180;
data[1] = 200;
data[2] = 360;
// 計算總營業額
j_max = salary.length;
for(j = 0;j < j_max;j++)
for(min = 0;min < salary[j].length;min++)
sum[j] += a_box[j][min]; // sum 的配置應該不用這麼多
i_max = map.length; // 更新 i_max 的長度
for( i = 0 ; i < i_max ; i++ ){
// 計算毛利率
ratio = (sum[i] - cost[i] - data[i]) * 1.0 / (cost[i] + data[i]) * 100; // 要除以銷售總成本,才會跟執行結果參考畫面的答案一樣。
cost[i] += data[i]; // 把銷售成本加上營業費用,就是銷售總成本。
System.out.print("第"+(i+1)+"間直營店銷售總成本="+cost[i]);
System.out.println();
System.out.print("銷售總營業額="+sum[i]);
System.out.println();
System.out.printf("銷售銷售毛利=%.2f",ratio);
System.out.print("%");
System.out.println();
System.out.println();
}
}
}
題目五:
題目說明:
請開啟 JPD06_5.java,接續題目四的總收入計算,請依下列題意完成作答。將 JPD06_5.java 内的 class JPD06_5 修改為 class JPA06_5,將檔案另存為 JPA06_5.java 後編譯為 JPA06_5.class,所有題目中有使用到的類別也請編譯後一併儲存。
設計說明:
(1) 假設銷售成本北部直營店 1500 萬元,中部直營店 1515 萬元,南部直營店 1858 萬元。
(2) 北部直營店營業費用 180萬元,中部直營店的營業費用 200 萬元,南部直營店營業費用 360 萬元。
(3) 請計算出整個公司的銷售毛利率。
(4)銷售毛利率 = (總營業額 – 總銷售成本 – 總營業費用) / 總銷售成本。
(5) 程式的輸出、入必須與執行結果參考畫面的内容一樣,才能給予分數。
執行結果參考畫面:
程式碼:
public class JPA06_5 {
public static void main(String[] arge){
int[][] salary = {{ 120 , 420 , 315 , 250 , 418,818,900 } , { 312 , 183 , 215 , 89 , 83,600,700 } , { 215 , 500 , 430 , 210 , 300,918,880 }};
int i , j , i_max , j_max,cost,sum=0;
double ratio;
i_max = salary.length ;
j_max = salary[0].length ;
cost=1500+1515+1858+180+200+360;
// 計算總銷售總營業額
for(i = 0;i < i_max;i++)
for(j = 0;j < j_max;j++)
sum += salary[i][j];
ratio=(double)(sum-cost)/cost*100;
System.out.print("總銷售總成本="+cost);
System.out.println();
System.out.print("總銷售總營業額="+sum);
System.out.println();
System.out.printf("總銷售銷售毛利率=%.2f",ratio);
System.out.print("%");
System.out.println();
}
}