實驗任務java
實驗內容數據庫
任務一:手機類的封裝編程
參考程序結果圖,使用面向對象的思想模擬手機類,編寫測試類,使用手機類建立對象,測試手機的各個屬性和功能架構
任務分析:測試
經過對現實中手機的分析,手機類(Phone)具備一下屬性和功能this
(1) 具備屬性:品牌(brand)、型號(type)、價格(price)、操做系統(os)和內存(memory)spa
(2) 具備功能:查看手機信息(about())、打電話(call(String no))、玩遊戲(好比玩猜數字遊戲)操作系統
代碼實現:設計
手機類Phone.java參考以下代碼:code
public class Phone { String brand; // 品牌 String type; // 型號 String os; // 操做系統 int price; // 價格 int memorySize; // 內存 // 無參構造 public Phone(){ } // 有參構造 public Phone(String brand, String type, String os, int price, int memorySize) { this.brand = brand; this.type = type; this.os = os; this.price = price; this.memorySize = memorySize; } // 關於本機 public void about() { System.out.println("品牌:"+brand+"\n"+"型號:"+type+"\n"+ "操做系統:"+os+"\n"+"價格:"+price+"\n"+"內存:"+memorySize+"\n"); } // 打電話 public void call(int num) { System.out.println("使用自動撥號功能:"); String phoneNo = ""; switch (num) { case 1: phoneNo = "爺爺的號。";break; case 2: phoneNo = "奶奶的號。";break; case 3: phoneNo = "媽媽的號。";break; case 4: phoneNo = "姐姐的號。";break; } System.out.println(phoneNo); } // 打遊戲 public void playGame() { System.out.println("玩猜字遊戲。"); } // 下載音樂 public void downloadMusic(String song) { System.out.println("開始下載。。。。"); System.out.println("下載完成。。。。"); } // 播放音樂 public void playMusic(String song) { System.out.println(song+" begin play"); } }
測試類PhoneTest.java類參考以下代碼:
public class Test { public static void main(String[] args) { // 經過無參構造建立手機對象一 Phone p1 = new Phone(); p1.brand = "華爲"; p1.type = "華爲榮耀magic"; p1.os = "Android 7"; p1.price = 3888; p1.memorySize = 8; // 測試p1的各項功能 p1.about(); p1.call(3); p1.playGame(); p1.playMusic("好漢歌"); System.out.println("********************"); Phone p2 = new Phone("小米","小米6s","mi_9",4999,6); // 測試p2 的各項功能 p2.about(); p2.call(4); p2.playGame(); p2.playMusic("Without you"); } }
任務二:基於控制檯的購書系統
任務分析:
該系統中必須包括3個實體類,類名及屬性設置以下:
圖書類(Book):
圖書編號(id)
圖書名稱(name)
圖書單價(price)
庫存數量(storage)
訂單項類(OrderItem):
圖書(book)
購買數量(num)
訂單類(Order):
訂單號(orderID)
訂單總額(total)
訂單項列表(items)
代碼實現:
圖書類
/** * 圖書類 * @author Administrator * */ public class Book { private int id; // 編號 private String name; // 書名 private double price; // 價格 private int storage; // 庫存 // 有參構造 public Book(int id, String name, double price, int storage) { this.id = id; this.name = name; this.price = price; this.storage = storage; } // 獲取書號 public int getId() { return id; } // 獲取書名 public String getName() { return name; } // 獲取價格 public double getPrice() { return price; } // 獲取庫存 public int getStorage() { return storage; } }
訂單項類:
public class OrderItem { private Book book; private int num; // 有參構造方法 public OrderItem(Book book, int num) { this.book = book; this.num = num; } // 獲取圖書對象 public Book getBook() { return book; } // 獲取訂購圖書數量 public int getNum() { return num; } }
訂單類:
public class Order { private String orderId; private OrderItem items[]; private double total; // 有參構造 public Order(String orderId) { this.orderId = orderId; this.items = new OrderItem[3]; } // 獲取訂單號 public String getOrderId() { return orderId; } // 獲取訂單列表 public OrderItem[] getItems() { return items; } // 獲取訂單總額 public double getTotal() { calTotal(); return total; } // 指定一個訂單項 public void setItem(OrderItem item, int i) { this.items[i] = item; } // 計算訂單總額 public void calTotal() { double total = 0; for (int i = 0; i < items.length; i ++) { total += items[i].getNum() * items[i].getBook().getPrice(); } this.total = total; } }
主類參考代碼以下:
import java.util.Scanner; /** * 圖書商店類(主類) * @author Administrator * */ public class PayBooks { public static void main(String[] args) { Book books[] = new Book[3]; //模擬從數據庫中讀取圖書信息並輸出 outBooks(books); // 顧客購買圖書 Order order = purchase(books); // 輸出訂單信息 outOrder(order); } // 顧客購買圖書 public static Order purchase(Book books[]) { Order order = new Order("00001"); OrderItem item = null; Scanner in = new Scanner(System.in); for (int i = 0; i < 3; i ++) { System.out.println("請輸入圖書編號選擇圖書:"); int cno = in.nextInt(); System.out.println("請輸入購買圖書數量:"); int pnum = in.nextInt(); item = new OrderItem(books[cno-1],pnum); order.setItem(item, i); System.out.println("請繼續購買圖書。"); } in.close(); return order; } // 輸出訂單信息 public static void outOrder(Order order) { System.out.println("\n\t圖書訂單"); System.out.println("圖書訂單號:"+order.getOrderId()); System.out.println("圖書名稱\t購買數量\t圖書單價"); System.out.println("--------------------------------------"); OrderItem items[] = order.getItems(); for(int i = 0; i < items.length; i ++) { System.out.println(items[i].getBook().getName()+"\t"+items[i].getNum() +"\t"+items[i].getBook().getPrice()); //System.out.println("\n"); } System.out.println("---------------------------------------"); System.out.println("訂單總額:\t\t"+order.getTotal()); } // 模擬從數據庫中讀取圖書信息並輸出 public static void outBooks(Book books[]) { books[0] = new Book(1,"Java教程",30.6,30); books[1] = new Book(2,"JSP教程",42.1,40); books[2] = new Book(3,"SSH架構",47.3,15); System.out.println("\t圖書列表"); System.out.println("圖書編號\t圖書名稱\t\t圖書單價\t庫存數量"); System.out.println("----------------------------------------"); for (int i = 0; i < books.length; i ++) { System.out.println(i+1+"\t"+books[i].getName()+"\t"+ books[i].getPrice()+"\t"+books[i].getStorage()); } System.out.println("----------------------------------------"); } }
任務三:簡單投票系統
編程實現一個投票程序,實現選民投票,每一個選民只能投一次票,當投票總數達到100時或者
主觀結束投票時,同時統計投票選民和投票結果。程序運行結構以下:
任務分析
從任務描述中的抽象出選民Voter類,它具備姓名,最大投票數,當前投票總數,和投票意見。
由於全部選民都會改變同一個數據,即投票次數,一次把它定義成靜態變量:
private static int count;
另外,爲了防止選民重複投票,必須保存參與投票的選民信息,可採用一個集合來存放已經投票的選民對象。
private static Set<Voter> voters = new HashSet<Voter>();
最後編寫測試Voter類的投票和打印投票結果功能。
代碼實現:
import java.util.HashSet; import java.util.Set; public class Voter { // 屬性的定義 private static final int MAX_COUNT = 100; // 最大投票數 private static int count; // 投票數 // 靜態變量,存放已經投票的選民 private static Set<Voter> voters = new HashSet<Voter>(); private String name; private String answer; // 構造方法 public Voter(String name) { this.name = name; } // 投票 public void voterFor(String answer) { if (count == MAX_COUNT){ System.out.println("投票結束。"); return ; } if (voters.contains(this)){ System.out.println(name+" 你不容許重複投票。"); } else { this.answer = answer; count ++; voters.add(this); System.out.println(name+" 感謝你的投票。"); } } // 打印投票結果 public static void printVoterResult() { System.out.println("當前投票數爲:"+count); System.out.println("參與投票的選民和結果以下:"); for (Voter voter: voters) { System.out.println(voter.name+" 意見 "+voter.answer); } } public static void main(String[] args) { // 建立選民對象 Voter tom = new Voter("Tom"); Voter jack = new Voter("Jack"); Voter mike = new Voter("Mike"); // 選民開始投票 tom.voterFor("是"); tom.voterFor("否"); jack.voterFor("是"); mike.voterFor("是"); // 打印投票結果 Voter.printVoterResult(); } }