0

我应该创建一个公共 StudentDatabase(),它应该创建一个空数据库,而不使用 java api 类或方法。应该有一种方法: public boolean add(String macid, int Exam1, int Exam2) 将记录添加到数据库中。如果 MacID 为 macid 的学生已经在数据库中,则此方法更新他/她的成绩为考试 1 和考试 2,并返回 false;否则,它会在数据库中创建 macid、exam1 和exam 2 作为新记录并返回true。我已经做到了这一点:

    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;
}
}

我不明白如何使用 Map 创建数据库。任何帮助将不胜感激。谢谢

4

2 回答 2

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);  
        }

    }
于 2013-04-24T23:56:45.883 回答
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" 或其他); 这个文件要么包含学生的序列化 ExamRecord,要么包含考试成绩列表(例如,如果学生的 ExamRecord 是考试 1=50,考试 2=80,那么您将保存 50;80,然后您将这些值解析回将数据库读回内存时的检查记录)。

另一种选择是仅对整个数据库进行序列化/反序列化,但如果您为课堂项目执行此操作,那么教授可能会认为这是作弊。

于 2013-04-25T00:07:08.690 回答