2013-04-24 38 views
0

我應該創建一個公共StudentDatabase(),它應該創建一個空數據庫而不使用java api類或方法。應該有一個方法: public boolean add(String macid,int exam1,int exam2)向數據庫添加記錄。如果MacID爲macid的學生已經在數據庫中,則此方法使用exam1和exam2更新他/她的成績,並返回false;否則,它將創建macid,exam1和exam2作爲數據庫中的新記錄並返回true。我已經得到了這麼多:如何使用具有兩個int值和一個字符串鍵的映射

public class StudentDatabase 
    { 
public StudentDatabase() 
{ 
    Map<String, Set<int>> = new HashMap<String,List<int>>(); 
} 

public boolean add(String macid, int exam1, int exam2) 
{ 
    remove(0); 
    return false; 
} 

public int getExam1(String macid) 
{ 
if (sdb.macid("ID_") = macid); 
else 
    return -1; 
} 

public int getExam2(String macid) 
{ 
    return -1; 
} 

public boolean remove(String macid) 
{ 

      if (StudentDatabase.macid == macid[]) { 
       for (int j = i; j < (size - 1); j++) 
       { 
        ARRAY[j] = ARRAY[j + 1]; //shift elements left 
       } 

      return true; 
     } 

    return false; 
} 

public int query(int exam1Low, int exam1High, int exam2Low, int exam2High) 
{ 
    return 0; 
} 
} 

我不明白我如何使用地圖創建數據庫。任何幫助將不勝感激。謝謝

回答

0

我不認爲你正在考慮正確的地圖類。 我認爲你應該改變地圖的創建。

Map<String,List<int>> index = new HashMap<String,List<int>>(); 

從那裏你可以使用hashmap方法添加和刪除學生。 HashMap API found here
這將是

public boolean inIndex(String key) 
    { 
     return index.containsKey(key); 
    } 
public void index(String val,int res1,int res2) 
    { 
      List<Integer> intList = new LinkedList<Integer>();   

      if(inIndex(val)==false) 
      { 
      index.put(val,intList);          
      } 
      index.get(val).add(res1); 
      index.get(val).add(res2); 
     } 

    } 
+0

謝謝!我真的很感謝你的幫助 – Waleed 2013-04-25 01:58:47

+0

一切都很好,請記住點擊回答請:) – 2013-04-25 02:08:03

0

因爲你知道考試的數量,您可能希望保存的ExamRecord不是整數

ExamRecord implements Comparable<ExamRecord>, Serializable { 
    private int exam1; 
    private int exam2; 

    public int compareTo(ExamRecord other) { } 

    public int hashCode() { } 
} 

Map<String, ExamRecord> 

至於如何列表的代碼的開始你可以使用Map創建一個數據庫,你需要一個名爲「index」的文件來列出所有學生的名字(鍵),然後你爲每個學生創建一個與學生同名的文件(所以「John Smith」是保存爲「John Smith.dat」或「John_Smith.dat」或其他);這個文件包含學生的序列化的考試記錄,否則它包含一個考試分數列表(例如,如果學生的考試記錄是考試1 = 50,考試2 = 80,那麼你會節省50; 80,那麼你會解析這些值回到將數據庫讀回內存時的ExamRecord)。

另一種選擇是隻對整個數據庫進行序列化/反序列化,但是如果你正在爲一個類項目做這件事,教授可能會認爲這是作弊。

+0

謝謝!我非常感謝你的幫助 – Waleed 2013-04-25 01:59:23

相關問題