c ++

时间:2018-01-15 17:52:23

标签: c++

你想准备一份关于在具有这些条件和能力的大学里处理学生信息的代码(数据应保存在硬盘上):

1-添加新学生

2-改变每个学生的数据

3-删除每个学生的数据

4-提供包含以下表格之一的报告(在屏幕或打印机上,如用户所希望的那样):

- list of students in each branch

- list of students in each college

- list of students according to each year entrance

请考虑以下实施提示:

1-为任何学生介绍课程

2-最多学生人数为10000

3-保存学生数据的文件,应设计为混合访问

知道学号后,应该可以访问记录的位置(使用哈希函数)

5-将2500记录视为溢出区域

你能不能给我一些关于我应该使用哪些课程以及如何开始的提示?

1 个答案:

答案 0 :(得分:0)

我建议如下:
1)包含学生的属性或属性的类 2)所有学生的{table}向量 3)类型的{index} std :: map。

索引将允许您对学生进行排序,而无需更改阵列中的顺序。

您可能希望学习关系数据库表数据库索引表

至于如何开始:
1.编写学生班级代码 2.创建一个包含几个学生的文本文件 3.在课堂上重载operator>>,从文本文件中输入学生 4.编写 main()函数,从文本文件中读取学生 5.将main更改为将多个学生读成std::vector 6.创建一个构建索引表的函数 7.修改main函数以构建索引表,并使用索引表打印学生。

编辑1:"有关表和索引的更多帮助"
可以简单如下:

std::vector<Student>;

让我们有以下Student定义:

class Student
{
public:
  unsigned int id;
  std::string name;
};

如果我们想要一个按名称排序的索引表,我们可以使用std::map

std::map<std::string /* name */, unsigned int table_index> index_by_map;

您可以使用以下内容构建索引:

std::vector<Student> database;
const size_t database_size = database.size();
for (unsigned int i = 0U; i < database_size; ++i)
{
  index_by_map[database[i].name] = i;
}

如果您想按名称查找Student

const std::string student_name_to_find = "Meisam";
std::map<std::string, unsigned int>::iterator location =  
    index_by_map.find(student_name_to_find);
Student s;
if (location != index_by_map.end())
{
  unsigned int index = location->second;
  s = database[index];
}