C# 你会用什么样的数据结构作为大学系的课程?

C# 你会用什么样的数据结构作为大学系的课程?,c#,C#,对于我的家庭作业,我正在为一所大学实施一个课程注册系统,我为课程实施了一个简单的班级,包括学期列表和其他属性,如系名、总学分等 但是我想知道我是否可以从一个有边和顶点的图数据结构继承这个类 以前有人做过类似的事情吗 我目前的设计是这样的: public class Curriculum { public string NameOfDepartment { get; set; } public List<Semester> Semesters { get; set; }

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

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

以前有人做过类似的事情吗

我目前的设计是这样的:

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)
    {
公共课程
{
部门的公共字符串名称{get;set;}
公共列表学期{get;set;}
公共bool isprogramsdesigned{get;set;}
公共课程()
{
isprogramsdesigned=false;
}
// 
公共字符串添加学期(学期)
{

是的,您可以从图形数据结构继承该类。您可以使其成为任何您想要的子类(密封类除外)。它是否明智的设计完全取决于您想要做什么。我假设您知道如何继承,如果您需要如何实现继承的示例,请发表评论


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

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

对于类似的问题,我考虑使用图形结构的唯一原因是潜在地创建课程需求和先决条件之间的关系。

通过这种方式,您可以使用图形算法来确定学生注册某个类是否有效,方法是确保该类是对树的有效添加。与删除类相同,可以验证该算法,以确保您没有删除某个类,并在实验室中注册该类示例

现在,如果我真的要实现这一点。我仍然会有一个在图表示中具有顶点键的类的整体列表。需要记住的一点是,图算法是数据库中最大的重击器,因此,最小化拉出图所做的工作量始终是关键。Dependi在大小和范围方面,我还将评估是否可以以序列化形式存储整个图形,或者出于同样的原因使用文档数据库


在本例中,这是我最可能采用的路线。我将先决条件的整个对象等存储在我的课程对象的内联线上。由于图形是一个“设置它并完成”事件,因此不需要进行实际的图形遍历,最好存储预计算的图形。

为什么要创建图形来自图形数据结构的灵感?这将引导我稍后应用图形算法。我只是想知道,我想用一些高级的东西来设计它。我希望你不会问我为什么我要图形算法。你需要在这个结构上应用什么样的图形算法?我只是在尝试实践。在这个结构中,课程之间有关系学期。其中一些是其他课程的先决条件,一些是选修课。我已经完成并提交了我的项目,但我认为这将是图形算法的良好实践。课程注册、成绩单人员、学期课程学分限制等。我已经编写了一个实体框架应用程序和提交了我的项目。我知道如何继承,我的c#足够漂亮。我在这里寻找一个设计。你知道用c#实现的任何图形类,以便我可以继承吗?我关注codeplex。@Kubi你想做什么样的图形?数据的表格布局、条形图、饼图等等…@Kubi,哦,你是指实际的图形。我会的我自己建模,但那只是我——特别是如果这是家庭作业的话。去图书馆拿一本关于Euler图论的好书,开始构建一些对象来建模。然后在你对Euler的大部分东西建模之后,继续使用Euler作为基础进行更复杂的操作。谢谢你的输入。在我的解决方案中,我保存了Sp在db表中指定一个系的课程,并将其保存到另一个名为studentscurriculums的表中,该表在学生注册时与学生和课程对象有多对多关系。管理员也可以创建新课程。但我必须使用一些额外的功能来处理课程注册通过这种方式。我想知道的是,通过使用图形或集合,可以更好地设计本课程,我希望有人以前处理过,并在这里分享。例如,我有一个检查先决条件(列表,学期)方法中有3个嵌套循环。我在注册课程之前检查每门必修课是否选修并评分。我必须处理一些其他限制,如特殊课程计数。如果一个学生至少选修了其中4门课程,他将被认证为xx特殊课程等。家庭作业没问题,但只是思考而已关于降低内存成本的更好方法。@Kubi在现实世界中,内存和CPU几乎都是在思考,磁盘几乎总是瓶颈。这通常意味着始终关注最小化数据库使用,明智地最大化内存使用。正如您在解决课程预请验证时所注意到的on对于迭代来说是一个奇怪的野兽,而且确实可以通过使用图形算法来辅助。我的关键点是要始终思考您正在做什么以及事情将走向何方。让您的课程完全依赖于图形结构是没有意义的。只有prereq的关系