【问题标题】:c++ searching and sorting in student listc ++在学生列表中搜索和排序
【发布时间】:2013-11-13 15:01:45
【问题描述】:

我想做的是做一个搜索引擎,用学号和学生姓名在学生列表中搜索学生的成绩。如果多个学生匹配请求的姓名,系统将要求用户输入学生ID。

我已经完成了读取 txt 文件,但是,我停止将 txt 更改为数组以进行存储和搜索。我不知道如何将这些数据存储到数组中。

我有 20 名学生,这里有两个学生在每个科目中的评分示例:

SS6709 彼得 VT001 C VT002 E VT003 D VT004 D VT009 A+ VY018 A++ VT024 B

SS9830 艾米 VT001 D VT002 C VT003 C VT004 D VT009 D VT018 D VT023 B

【问题讨论】:

  • 到目前为止你尝试过什么?
  • 完成基础知识后,您可能想要查看一些不错的algorithms in the C++ standard library,例如std::sortstd::find_if
  • 将您的数据放在一个 multi_map 中,您可以在其中使用学生姓名作为键。如果您有多个同名学生,请遍历查找结果以查找 id。
  • 另外,你知道结构和类吗?也许您想从The Definitive C++ Book Guide and List 的初学者部分阅读一些内容?
  • @Jepessen 您始终可以拥有多个收藏夹。一个向量来存储数据,然后是一些对向量中对象的引用的映射,以便于搜索。

标签: c++ arrays sorting search


【解决方案1】:
  1. 考虑并定义一个class Item,它将代表一个item,它将保存有关单个学生的数据(代码、姓名、...)
  2. 创建一个空的std::vector 用于存放您的“项目”的结构
  3. 打开文件进行阅读
  4. 逐行读取文件(使用std::getline 获取整行,而不仅仅是filestream.getlinefile >> var 运算符)
    1. (对于您阅读的每一行)
    2. 将该行读作std::string,就像std::getline 想要的那样
    3. 创建一个Item 用于保存下一组数据
    4. 分析该行并将学生的代码剪切/复制到myItem.code
    5. 分析该行并将学生姓名剪切/复制到myItem.name
    6. 分析行并将XXXXXXXXXXXXXX剪切/复制到myItem.whateverelse
    7. 将您刚刚阅读的myItem附加到您之前准备的vector
  5. 读取所有行后关闭文件

现在您有了一个包含所有数据的“向量”,它们被很好地存储为“项目”,每个项目都有一个代码、名称和其他数据。您现在可以循环/搜索该向量以查找是否有任何名称或代码匹配。

【讨论】:

  • 你给我一个很棒的程序,谢谢 =) 我会尽力的!
【解决方案2】:

看起来您需要创建自己的数据结构来存储值。您可以定义自己的结构

struct Student{
 string name
 string iD
 ....
};

在本例中使用类型为 Student 的数组

Student data_base[100];

这是一种非常基本的方法,但它应该能让你继续前进......

【讨论】:

    猜你喜欢
    • 2013-03-06
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    • 2011-03-12
    相关资源
    最近更新 更多