您将如何解决这个问题?老式学生/课程/学校代码。这是我的方法:
How would you go about solving this? Old-Fashion Student/Course/School Code. Here's my approach:
我只是好奇我的思维方式是否不正确。我的思维方式有效吗?还是我的代码中需要指针/引用?你会如何处理这个问题?在这一点上,我只是粗略地画了草图。看看我的评论,了解我的担忧。主要是好奇我是否应该使用指针,以及如何在我的Student类中引用类。
简化示例问题:制作一个程序,让您:1.)从学校创建/删除学生2.)从学校创建/删除课程3.)在课程中添加/删除学生4.)打印课程中的学生名单5.)打印学生正在学习的课程列表。
class Student
{
public:
string name;
int id;
Student(){};//Default Construct
Student(int idin,string namein)
{
id=idin;
name=namein;
}
void PrintClasses()
{
//Umm... I can't create a Class Vector yet because Class is declared under this.. Hmm... Not sure on this part.
}
};
class Class
{
public:
int id;
string name;
Student students_in_class; //Is this the right way to store students in the class?
Class(){};//Default Constructor
Class(int idin, string namein)
{
id=idin;
name=namein;
}
void PrintStudents()
{
for (i=0;i<students_in_class.size();i++)
{
cout<<students_in_class.id<<'n';
}
}
};
class School
{
public:
Vector<Student> studentlist;
Vector<Class> classlist;
//This is where you do everything.
void StudentAdd(int id,string name)
{
//Adds a student to the school
Student mystudent=Student(id,name);
studentlist.push_back(mystudent);
}
void StudentAdd2Course(int student_id,int course_id)
{
for (i=0;i<classlist.size();i++)
{
if(classlist[i].id==course_id)
{
//Correct Class ID Found. Now find student Id
for (int j=0;j<studentlist.size();j++)
if(studentlist[j].id==student_id)
classlist[i].students_in_class.push_back(studentlist[j]);//Push Student in class list
}
}
}
void StudentRemoveFromCourse(int student_id,int course_id)
{
for (i=0;i<classlist.size();i++)
{
if(classlist[i].id==course_id)
{
//Correct Class ID Found. Now find student Id
for (int j=0;j<studentlist.size();j++)
if(studentlist[j].id==student_id)
classlist[i].students_in_class.erase(studentlist[j]);//Push Student in class list
}
}
}
//Other functions like create class, delete class, etc
};
通常,在设计面向对象的东西时,我会尝试从简单的类开始,并让其他类像木偶一样对它们进行操作(尽管为学生建模,但没有phun意图)。
在这种情况下,这是一项直接的工作,Student是一个简单的类,课程包含Students,Scool包含课程(可能还有学生)。
唯一复杂的是打印学生所学的课程。我想说,从概念上讲,它不应该在Student类中,因为它需要比简单对象所能提供的更多的信息。
在实现它时,您可以循环使用现有数据,也可以维护额外的信息。如果执行后者,请确保额外信息在正常系统中是一致的。
Ps。查找如何在C++中使用迭代器编写循环。
相关文章:
- C++秘密消息学校作业
- 如何形成对非最终课程的"最终"引用?
- 所以我正在为我的学校作业练习继承,但我无法正确实施标题保护
- C++BST课程的五条规则
- 我正在尝试解决英特尔架构并行基础课程中关于 Coursera 的一项作业
- 我怎么不能按课程代码的降序对数字进行排序
- 将课程用于星期几
- 显示每门课程的学生人数
- 我正在为学校开发一个小班模板实验室,我的代码无法编译,它给了我一个未解析的外部符号
- 如何跟踪储蓄账户中的total_money(使用课程)?
- 为什么在这里再次宣布宣布的课程?
- 当课程成员成员时,为什么参考会占据内存
- 在尝试在同一类内部进行课程矢量时,我会遇到错误
- 处理课程数
- C 朋友课程和朋友成员功能
- 不能将子课送进父母课程
- 公共功能以私人课程为参数
- 朋友,从班级继承的所有课程
- 我的学校课程作业有问题
- 您将如何解决这个问题?老式学生/课程/学校代码。这是我的方法: