【发布时间】:2019-09-20 16:32:22
【问题描述】:
我正在解决以下问题。但无法得到任何健康的逻辑。
1.学生人数。对于每个学生卷(唯一),都将存储姓名。对于每个主题,要存储主题代码和名称。学生可以选择科目数。系统应该能够维护学生列表、学科列表并且能够回答:i) 哪个学生选择了哪些学科和 ii) 一个学科谁是学生。
我尝试了一些逻辑,但现在我迷路了。谁能给我一点想法如何进行。 我是以正确的方式接近它还是你可以建议的任何其他好的方法。
#include <iostream>
#include <string.h>
class StudentDetails {
public:
int roll;
char name1[15];
};
class SubjectDetails : public StudentDetails {
public:
SubjectDetails() = default;
SubjectDetails(int n, string naam)
: code(n)
, name(naam)
{
}
int code;
string name2;
};
class Subject {
SubjectDetails s1{ 1, "A" };
SubjectDetails s2{ 2, "B" };
SubjectDetails s3{ 3, "C" };
SubjectDetails s4{ 4, "D" };
SubjectDetails s5{ 5, "E" };
};
class Student {
public:
Subject s[5]
};
【问题讨论】:
-
为什么要使用继承?
-
我还能做什么。有什么想法吗?
-
经验法则:继承遵循“is-a”关系,组合(包含)遵循“has-a”规则。例如,
Studenthas-a 名称;Student不是名称,因此Student包含名称成员并且不继承名称类。 -
使用
std::string。它可以动态增长。字符数组是固定长度的,通常太大或太小。您必须重新分配数组以使其更大。与数组和std::vector类似。 -
组织数据的方法有很多种。例如,您可以根据Database Normal Forms 制作单独的表格。
标签: c++ class oop inheritance