2013-04-24 39 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

相关问题