我应该构建哪些列表/结构?学生参加课程的程序的逻辑问题

Posted

技术标签:

【中文标题】我应该构建哪些列表/结构?学生参加课程的程序的逻辑问题【英文标题】:What lists/structs should I build? logical question for a program for students attending to courses 【发布时间】:2021-03-27 07:47:57 【问题描述】:

我们在学校有一个作业,如果有可能帮助我,我会很高兴。

我们的任务是建立一个程序来处理课程和学生注册。

课程:

每门课程都有一个名字 身份证

最多有 10 门课程。

学生:

每个学生都有一个 ID 每个学生都有一个名字 他们的课程和成绩。

所以程序的选项是:

接受一门新课程。

更新课程名称。

添加一个新学生

为有成绩的学生添加一门新课程。

更新学生特定课程的成绩。

特定课程的平均成绩

参加课程的所有学生。

我的想法: 我想用以下内容制作课程结构:

总的来说,我将创建一个包含 10 个位置的 COURSES 数组

学生: 学生名单,每个学生有 10 门课程

现在我面临的问题:

    如果我更改一门课程的名称,我需要为每个参加该课程的学生创建一个循环来更改,但这太复杂了。

    对于一门课程的平均成绩,我需要检查所有对我来说似乎很愚蠢的学生。

我不是在寻找代码解决方案,只是在逻辑上帮助理解, 我应该做哪些清单?学生的?或课程一?或两者?或者也许还有另一个成绩? 只是想了解如何面对这个问题

【问题讨论】:

“但它太复杂了”。程序员的工作是简化任务,使其不复杂。应该只有一个位置存储课程名称,并且只需要在那里进行更新。课程中的每个学生都应持有该课程的引用(指针)。 感谢您的回复!你能建议我在哪里保存每门课程的每个学生的成绩吗? 这真的取决于您要进行的查询类型。对于一个玩具问题,在学生结构中记录成绩可能就足够了。对于一个真正的问题,您可能想要构建一个关系数据库。 我会在 3 天后尝试这个问题。似乎是一个有趣的问题。 以文本形式发布代码更有用。 【参考方案1】:

我不是在寻找代码解决方案,只是在逻辑上帮助理解,...


“如果我更改一门课程的名称,我需要为每个参加该课程的学生创建一个循环来更改,但这太复杂了。”

这是由于设计薄弱。让我们创建一个新类型

typedef struct 
  COURSE *c;
  int grade;
  bool valid;
 cgv;

...并从COURSE 中删除.grade.valid

考虑一个类型cgv courses[10]; 改进了一些东西。通过拥有指向 COURSE 的指针,只需进行一项更改。

对于一门课程的平均成绩,我需要检查所有学生,这对我来说似乎很愚蠢。

如果COURSE 中有一个学生列表(类似于STUDENT 有一个COURSEs 列表,但使用上面回答的指针完成),那么只有那些参加课程的学生需要平均。


考虑有两组数据:课程、学生。每个集合都有对另一个的引用。

对我来说,我不会在STUDENT 中嵌入.next 成员,而是创建通用链表,每个节点都有2 个指针:data,next。

然后链表可以用作 1) 学生列表,2) 课程列表 3) 作为学生成员:所学课程列表 4) 作为课程成员,课程中的学生列表。


【讨论】:

以上是关于我应该构建哪些列表/结构?学生参加课程的程序的逻辑问题的主要内容,如果未能解决你的问题,请参考以下文章

一个或多个事实表

逻辑代码题:五个学生参加计算机比赛

如何使用多项逻辑回归解决多标签分类问题?

使用分组查询自联接

课程总结

FPGA现在学起来怎么样?难不?需要了解哪些基础课程?