接口
has-a
comparable
公開
javascript
項目碼雲地址(點擊後要求可直接跳到該項目首頁)。html
https://gitee.com/201621123065/java201621123065.gitjava
團隊成員表格git
學生 | 負責任務 | 博客地址 |
---|---|---|
郭啓鵬 | 菜單類 | http://www.cnblogs.com/201621123065guo/p/7696075.html |
上次的系統比較,系統的設計等有何修改。其餘感想。編程
import java.util.Scanner; /** 菜單類,用於顯示全部級菜單供用戶選擇 */ public class Menu { public Menu() { } /** 設置菜單類中的數據信息 */ public void setData(String as[], double ad[], int ai[], String as1[], int ai1[]) { goodsName = as; goodsPrice = ad; custNo = ai; custBirth = as1; custScore = ai1; } /**顯示一級菜單,即登陸界面 */ public void showLoginMenu() { System.out.println("\n\n\t\t\t 歡迎使用購物管理系統\n\n"); System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); System.out.println("\t\t\t\t 1. 登 錄 系 統\n\n"); System.out.println("\t\t\t\t 2. 更 改 管 理 員 信 息\n\n"); System.out.println("\t\t\t\t 3. 退 出\n\n"); System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); System.out.print("請選擇,輸入數字:"); } /** 顯示二級菜單,即系統的主菜單,這個方法裏面包含了對這個菜單處理的全部流程 */ public void showMainMenu() { // 顯示二級菜單,即系統的主菜單 System.out.println("\n\n\t\t\t\t歡迎使用購物管理系統\n"); System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); System.out.println("\t\t\t\t 1. 客 戶 信 息 管 理\n"); System.out.println("\t\t\t\t 2. 購 物 結 算\n"); System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); // 用戶選擇服務項目 System.out.print("請選擇,輸入數字:"); Scanner scanner = new Scanner(System.in); boolean flag = false; do { String s = scanner.next(); // 用戶選擇"客戶信息管理" if (s.equals("1")) { // 顯示客戶信息管理菜單並處理這個菜單的整個流程,當這個流程處理完 showCustMMenu(); break; } // 用戶選擇"購物結算" if (s.equals("2")) { // 定義購物結算類的對象,並處理整個購物結算的流程 Pay pay = new Pay(); pay.setData(goodsName, goodsPrice, custNo, custBirth, custScore); pay.calcPrice(); break; } } System.out.print("輸入錯誤,請從新輸入數字:"); flag = false; } while (!flag); } /** * 顯示三級菜單-客戶信息管理,並處理全部客戶信息管理的流程 * */ public void showCustMMenu() { System.out.println("購物管理系統 > 客戶信息管理\n"); System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); System.out.println("\t\t\t\t 1. 顯 示 所 有 客 戶 信 息\n"); System.out.println("\t\t\t\t 2. 添 加 客 戶 信 息\n"); System.out.println("\t\t\t\t 3. 修 改 客 戶 信 息\n"); System.out.println("\t\t\t\t 4. 查 詢 客 戶 信 息\n"); System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); System.out.print("請選擇,輸入數字或按'n'返回上一級菜單:"); Scanner scanner = new Scanner(System.in); boolean flag = true; do { // 建立客戶信息管理對象,並設置數據,這裏的數據仍是原始的那些數據 CustManagement custmanagement = new CustManagement(); custmanagement.setData(goodsName, goodsPrice, custNo, custBirth, custScore); String s = scanner.next(); // 客戶選擇"顯示全部客戶信息" if (s.equals("1")) { custmanagement.show(); break; } // 客戶選擇"添加客戶信息" if (s.equals("2")) { custmanagement.add(); break; } // 客戶選擇"修改客戶信息" if (s.equals("3")) { custmanagement.modify(); break; } // 客戶選擇"查詢客戶信息" if (s.equals("4")) { custmanagement.search(); break; } // 客戶選擇"返回上一級菜單" if (s.equals("n")) { showMainMenu(); break; } System.out.println("輸入錯誤, 請從新輸入數字:"); flag = false; } while (!flag); } /*====================定義該類所擁有的變量====================*/ public String goodsName []; // 商品的名稱 public double goodsPrice[]; // 商品的價格 public int custNo []; // 顧客的會員號 }
從頭開始,只寫了菜單類,其餘功能之後再繼續完善。數組
增長了代碼的複用性,使得代碼效率提升,提高代碼可讀性;同時也提高了程序的可移植性和靈活性。框架
在抽象類中定義抽象方法須要用abstract聲明,在接口中默認方法都是抽象的(abstract),可不用聲明函數
讓類實現Comparable接口,並覆蓋compareTo方法就能夠實現對象的自動排序,Comparable接口有compareTo一個方法,覆蓋這個方法就能排序了。學習
Comparator 和 Comparable都是java的一個接口, 而且是用來對自定義的class比較大小,Comparable 定義在 Person類的內部,Comparator 是定義在Person的外部。this
求面積和周長的方法應聲明爲abstract,由於 Rectangle,Cirlce都要進行求面積和周長。定義爲抽象就能夠求解。
package PTA4; public abstract class Arr implements Comparable<Arr>{ public final static double PI=3.14; public abstract double getPerimeter(); public abstract double getArea(); public int compareTo(Arr other){ if(this.getArea() < other.getArea()) return -1; if(this.getArea() > other.getArea()) return 1; return 0; } }
在Shape類上實現Comparable最好
面向接口編程的最大的好處是接口和實現分離了, 用起來方便,結構清晰,適合團隊開發
StudentDao接口讀取、錄入、顯示學生信息。
都有StudentDao中的三個方法;不一樣於StudenDaoListImpl使用ArrayList來存儲信息,StudentDaoArrayImpl用數組來存儲。
程序結構更清晰,適合團隊開發,提升工做效率。
例如StudentDaoListlmpl和StudentDaoArrayImpl都繼承了StudentDao接口,能實現StudentDao中的功能。
面向接口編程就是經過定義接口,承接接口實現不一樣類之間的通訊和各模塊之間的交互。
好處:
行數 | 新增行數 | 文件數 | 新增文件數 |
---|---|---|---|
1154 | 260 | 67 | 16 |