能否帮助我用哈希表编写一个简单的学生管理系统,要求能够从键盘输入学号和姓名,人数限定五人

时间: 2024-01-26 22:04:43 浏览: 20
好的,这里提供一个C++版本的简单学生管理系统,使用哈希表实现。代码如下: ```c++ #include <iostream> #include <string> using namespace std; const int MAX_STUDENTS = 5; // 学生人数上限 const int TABLE_SIZE = 10; // 哈希表大小 // 学生类 class Student { private: int id; string name; public: Student() {} Student(int id, string name) { this->id = id; this->name = name; } int getId() { return id; } string getName() { return name; } }; // 哈希表节点类 class Node { private: int key; Student value; public: Node() {} Node(int key, Student value) { this->key = key; this->value = value; } int getKey() { return key; } Student getValue() { return value; } }; // 哈希表类 class HashMap { private: Node* table[TABLE_SIZE]; public: HashMap() { for (int i = 0; i < TABLE_SIZE; i++) { table[i] = nullptr; } } ~HashMap() { for (int i = 0; i < TABLE_SIZE; i++) { delete table[i]; } } // 哈希函数 int hash(int key) { return key % TABLE_SIZE; } // 插入节点 void put(int key, Student value) { int index = hash(key); while (table[index] != nullptr && table[index]->getKey() != key) { index = (index + 1) % TABLE_SIZE; } if (table[index] != nullptr) { delete table[index]; } table[index] = new Node(key, value); } // 查找节点 Student get(int key) { int index = hash(key); while (table[index] != nullptr && table[index]->getKey() != key) { index = (index + 1) % TABLE_SIZE; } if (table[index] == nullptr) { return Student(-1, ""); } else { return table[index]->getValue(); } } }; int main() { HashMap map; int count = 0; while (count < MAX_STUDENTS) { int id; string name; cout << "请输入第" << count + 1 << "个学生的学号和姓名:" << endl; cin >> id >> name; map.put(id, Student(id, name)); count++; } cout << "学生信息如下:" << endl; for (int i = 0; i < TABLE_SIZE; i++) { Node* node = map.table[i]; if (node != nullptr) { Student student = node->getValue(); cout << student.getId() << "\t" << student.getName() << endl; } } return 0; } ``` 在这个实现中,我们使用了一个 `HashMap` 类来表示哈希表。节点类 `Node` 中存储了键值对,键是学生的学号,值是学生对象。哈希函数使用简单的取模运算,冲突处理采用了线性探测法。在 `main` 函数中,我们从键盘输入学号和姓名,插入到哈希表中。最后遍历哈希表,输出学生信息。

相关推荐

最新推荐

recommend-type

C语言基于哈希表实现通讯录

主要为大家详细介绍了C语言基于哈希表实现通讯录,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

学生管理哈希表的实现算法

(1) 采取除留余数法构造哈希表; (2) 采用线性探测再散列方法解决冲突,输出哈希表结果; (3) 采用链地址法处理冲突,输出哈希表结果; (4) 考查两种冲突方法的平均查找长度。
recommend-type

哈希表设计 针对某个集体(比如你所在的班级)中的“人名”设计一个哈希表,使得平均查找长度不超过R,完成相应的建表和查表程序。

采用除留余数法构建哈希表,伪散列解决冲突 内有实验报告,通过vc++测试,我们小组做这个得了满分!
recommend-type

基于Java的消息中间件java操作demo.zip

消息中间件java操作demo 提供activeMq的 java实现,和两种模式:点对点、发布和订阅 直接clone下来,导入maven项目启动test包下的 Client.java
recommend-type

基于 Python 的波士顿房价数据集

波士顿房价数据集 波士顿房价数据集 目的:通过分析十三个房屋特征与房价的关系,同时建立模型进行房价预测 波士顿房价指标与房价的关系 CRIM:城镇人均犯罪率——负相关占比 ZN:住宅用地所占比例——无单个特征 INDUS:城镇中非住宅用地所占比例——负相关 CHAS:虚拟变量,用于回归分析——无单个特征 NOX:环保指数——无单个特征 RM:每栋住宅的房间数——正相关 AGE:1940年以前建成的自住单位的比例——无单个特征 DIS:距离5个波士顿的就业中心的加权距离——无单个特征 RAD:距离高速公路的便利指数——无单个特征 TAX:每一万美元的不动产税率——无单个特征 PTRATIO:城镇中教师学生比例——无单个特征 B:城镇中黑人的比例——无单个特征 LSTAT:地区中多少房东属于低收入人群——负相关 MEDV:自主房屋房价中位数(标签数据)——房价中位数
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

如何用python编写api接口

在Python中编写API接口可以使用多种框架,其中比较流行的有Flask和Django。这里以Flask框架为例,简单介绍如何编写API接口。 1. 安装Flask框架 使用pip命令安装Flask框架: ``` pip install flask ``` 2. 编写API接口 创建一个Python文件,例如app.py,编写以下代码: ```python from flask import Flask, jsonify app = Flask(__name__) @app.route('/api/hello', methods=['GET']) def hello():
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。