我应该构建哪些列表/结构?学生参加课程的程序的逻辑问题
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
有一个COURSE
s 列表,但使用上面回答的指针完成),那么只有那些参加课程的学生需要平均。
考虑有两组数据:课程、学生。每个集合都有对另一个的引用。
对我来说,我不会在STUDENT
中嵌入.next
成员,而是创建通用链表,每个节点都有2 个指针:data,next。
然后链表可以用作 1) 学生列表,2) 课程列表 3) 作为学生成员:所学课程列表 4) 作为课程成员,课程中的学生列表。
【讨论】:
以上是关于我应该构建哪些列表/结构?学生参加课程的程序的逻辑问题的主要内容,如果未能解决你的问题,请参考以下文章