您将在大学某系的课程中使用什么数据结构?

时间:2011-06-01 14:25:13

标签: c#

对于我的作业,我正在为一所大学实施课程注册系统,我实施了一个简单的课程课程,包括学期列表和其他属性,如部门名称,总学分等。

但是我想知道我是否可以从带有边和顶点的图形数据结构继承这个类。

之前有人做过类似的事吗?

我目前的设计是这样的:

public class Curriculum
{
    public string NameOfDepartment { get; set; }
    public List<Semester> Semesters { get; set; }

    public bool IsProgramDesigned { get; set; }

    public Curriculum()
    {
        IsProgramDesigned = false;
    }

    // 
    public string AddSemester(Semester semester)
    {

2 个答案:

答案 0 :(得分:2)

作为企业架构师,我绝对不会对此数据使用图形结构。这个数据是一个列表,仅此而已。

对于类似的问题,我考虑使用图形结构的唯一原因是可能创建课程要求和先决条件的关系。

通过这种方式,您可以使用图算法确定学生注册课程是否有效,确保它是树的有效补充。删除类也是一样的,可以验证它是否确保你没有丢弃一个类并继续在实验室注册类示例。

现在,如果我要实际实现这一点。我仍然有一个类的总体列表,它们在图表表示中具有顶点键。要记住的一件事是图形算法是关于你可以在数据库中抛出的最大的重击手,所以最小化拉出图形所做的工作总是关键。根据大小和范围,我还会评估是否可以以序列化形式存储整个图形,或者出于同样的原因使用文档数据库。

在这个例子中,我将采取的最可能的路线。我会存储先决条件的整个对象,以及与我的课程对象内联的内容。由于图表是设置它完成的事件,因此不需要进行实际的图形遍历,并且最好存储预先计算的图形。

答案 1 :(得分:0)

是的,您可以从Graph数据结构继承此类。你可以使它成为你想要的任何子类(密封类除外)。它是否是一个明智的设计的问题完全取决于你想做什么。我假设你知道如何,所以请注释你是否需要一个如何实现继承的例子。

如果您想编写自己的图形算法,为什么不自己建模呢?这可能是一个有趣的练习。