【C++】C++ 基于QT实现散列表学生管理系统(源码+数据+课程论文)【独一无二】

请添加图片描述


👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。


C++ 基于QT实现散列表学生管理系统(源码+数据+课程论文)【独一无二】


目录

  • C++ 基于QT实现散列表学生管理系统(源码+数据+课程论文)【独一无二】
  • 一、设计要求
  • 二、功能展示
    • 添加学生信息
    • 查询学生信息
    • 显示学生信息
    • 排序学生总成绩
    • 保存学生信息
    • 删除学生信息
  • 三、代码分析


一、设计要求

(1)问题描述
使用该散列表存储学生的信息。学生的信息中至少包括学号、姓名、性别、年龄等数据项。以姓名做为关键字,当出现重名时,采用一定方法解决冲突。要求有界面,方便用户进行输入输出操作。

(2)基本要求
(1)完成散列表的插入、删除、查找学生信息等操作。
(2)可以为学生输入若干门课程的成绩信息,并能够统计出每位学生的总成绩。
(3)可对每门课程的成绩进行排序,统计各分数段人数。
(4) 设计不同的散列函数,比较冲突率;在散列函数确定的前提下,请用拉链法和一种开地址法处理冲突的方法。
(5)所有信息需存放在文本文件中。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “散列学生管理系统” 获取。👈👈👈


二、功能展示

添加学生信息

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “散列学生管理系统” 获取。👈👈👈

查询学生信息

在这里插入图片描述

显示学生信息

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “散列学生管理系统” 获取。👈👈👈

排序学生总成绩

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “散列学生管理系统” 获取。👈👈👈

保存学生信息

在这里插入图片描述

删除学生信息

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “散列学生管理系统” 获取。👈👈👈


三、代码分析

struct Student {
    string student_id;
    string name;
    string gender;
    int age;
    unordered_map<string, int> courses;

    int getTotalScore() const {
        int total = 0;
        for (const auto& course : courses) {
            total += course.second;
        }
        return total;
    }
};

HashTable类使用unordered_map来实现哈希表,以学生姓名作为键值。它提供了插入、删除、查找和保存学生信息的功能。
插入学生信息

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “散列学生管理系统” 获取。👈👈👈

void insertStudent(const Student& student) {
    table[student.name] = student;
}

删除学生信息

void deleteStudent(const string& name) {
    table.erase(name);
}

查找学生信息

Student* findStudent(const string& name) {
    auto it = table.find(name);
    if (it != table.end()) {
        return &it->second;
    }
    return nullptr;
}

保存数据到文件

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “散列学生管理系统” 获取。👈👈👈

void saveToFile(const string& filename) const {
    ofstream file(filename);
    for (const auto& entry : table) {
        const Student& student = entry.second;
        file << student.name << "," << student.age << "," << student.gender << "," << student.student_id << ",";
        for (const auto& course : student.courses) {
            file << course.first << ":" << course.second << ",";
        }
        file << student.getTotalScore() << "\n";
    }
    file.close();
}

QT布局代码:

MainWindow::MainWindow(QWidget* parent) {
    QWidget* centralWidget = new QWidget(this); // 创建中央部件

    setCentralWidget(centralWidget); // 设置中央部件
    setWindowTitle(QString("学生信息管理系统"));

    nameEdit = new QLineEdit;
    ageEdit = new QLineEdit;
    idEdit = new QLineEdit;
    sexEdit = new QLineEdit;
    course1Edit = new QLineEdit;
    score1Edit = new QLineEdit;
    course2Edit = new QLineEdit;
    score2Edit = new QLineEdit;

    addButton = new QPushButton("添加");
    deleteButton = new QPushButton("删除");
    //modifyButton = new QPushButton("修改");
    searchButton = new QPushButton("查询");
    showButton = new QPushButton("显示");
    sortButton = new QPushButton("排序");
    saveButton = new QPushButton("保存");

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “散列学生管理系统” 获取。👈👈👈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/691942.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

造假高手——faker

在测试写好的代码时通常需要用到一些测试数据&#xff0c;大量的真实数据有时候很难获取&#xff0c;如果手动制造测试数据又过于繁重无聊&#xff0c;显得不够优雅&#xff0c;今天我们介绍的faker这个轮子可以完美的解决这个问题。faker是一个用于生成各种类型假数据的库&…

10. MySQL 用户

文章目录 【 1. 权限表 】1.1 user 权限表1.1.1 用户列1.1.2 权限列1.1.3 安全列1.1.4 资源控制列 1.2 db 表用户列权限列 1.3 tables_priv 表1.4 columns_priv 表1.5 procs_priv表 【 2. 用户管理 】2.1 创建用户 CREATE USER2.2 用户的登陆、退出登陆 MySQL退出 MySQL 2.3 重…

基于VS2022编译GDAL

下载GDAL源码&#xff1b;下载GDAL编译需要依赖的必须代码&#xff0c;proj&#xff0c;tiff&#xff0c;geotiff三个源码&#xff0c;proj需要依赖sqlite&#xff1b;使用cmake编译proj&#xff0c;tiff&#xff0c;geotiff&#xff1b;proj有版本号要求&#xff1b;使用cmake…

3D Gaussian Splatting for Real-Time Radiance Field Rendering

辐射场方法最近在基于多张照片或视频进行新视角合成方面取得了革命性进展。然而&#xff0c;实现高视觉质量仍然需要耗时且计算成本高的神经网络&#xff0c;而最近的快速方法不可避免地在速度和质量之间进行了权衡。对于无界和完整的场景&#xff08;而不是孤立的物体&#xf…

nginx mirror流量镜像详细介绍以及实战示例

nginx mirror流量镜像详细介绍以及实战示例 1.nginx mirror作用2.nginx安装3.修改配置3.1.nginx.conf3.2.conf.d目录下添加default.conf配置文件3.3.nginx配置注意事项3.3.nginx重启 4.测试 1.nginx mirror作用 为了便于排查问题&#xff0c;可能希望线上的请求能够同步到测试…

【python报错】TypeError: can only concatenate str (not “int“) to str

【Python报错】TypeError: can only concatenate str (not “int”) to str 在Python编程中&#xff0c;字符串连接是一种基本且频繁的操作。然而&#xff0c;如果你尝试将整数&#xff08;int&#xff09;与字符串&#xff08;str&#xff09;直接连接&#xff0c;会遇到TypeE…

扩散模型条件生成——Classifier Guidance和Classifier-free Guidance原理解析

1、前言 从讲扩散模型到现在。我们很少讲过条件生成&#xff08;Stable DIffusion曾提到过一点&#xff09;&#xff0c;所以本篇内容。我们就来具体讲一下条件生成。这一部分的内容我就不给原论文了&#xff0c;因为那些论文并不只讲了条件生成&#xff0c;还有一些调参什么的…

金融领域的AI解决方案

AI可赋能金融营销、资管、风控等领域&#xff0c;面向金融消费者、金融机构和金融监管机构&#xff0c;改善金融 市场信息对称性并提升金融交易的效率和安全性。目前&#xff0c;金融行业各机构对于安全认证和客户身份识别的需求较为迫切&#xff0c;身份识别和智能客服应用和落…

Linux编译器-gcc或g++的使用

一.安装gcc/g 在linux中是不会自带gcc/g的&#xff0c;我们需要编译程序就自己需要安装gcc/g。 很简单我们使用简单的命令安装gcc&#xff1a;sudo yum install -y gcc。 g安装&#xff1a;sudo yum install -y gcc-c。 我们知道Windows上区分文件&#xff0c;都是使用文件…

Facebook企业户 | Facebook公共主页经营

Facebook作为社交媒体巨头&#xff0c;拥有庞大的用户基数&#xff0c;因此&#xff0c;有效经营公共主页是获取持续流量、提升客户信任度和粘性、促进产品或服务销售与转化的关键。要优化Facebook主页&#xff0c;关注以下几点&#xff1a; 1、参与度是关键指标&#xff1a;因…

iOS18:借助 Al,Siri 将获得广泛的知识,以便触发各个应用的功能

iOS18:借助 Al&#xff0c;Siri 将获得广泛的知识&#xff0c;以触发各个应用的功能 预计Siri将成为iOS18中一系列与人工智能相关增强功能的核心。 根据彭博社记者马克古尔曼的一份新报告&#xff0c;可以得知关于苹果智能助手的一些具体升级的新信息。 Siri新的人工智能: …

【ARM Cache 及 MMU 系列文章 6.3 -- ARMv8/v9 Cache Tag数据读取及分析】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 Cache Tag 数据读取测试代码Cache Tag 数据读取 在处理器中,缓存是一种快速存储资源,用于减少访问主内存时的延迟。缓存通过存储主内存中经常访问的数据来实现这一点。为了有效地管…

关于软件调用独显配置指引【笔记】

关于笔记本电脑不支持独显直连的&#xff0c;bios下也是没有切换独显直连的选项的&#xff0c;处理方法 简单的来说按照图片指引可配置让软件调用独显&#xff1a; 1、进入系统→屏幕→显示卡界面&#xff1b; 2、【添加应用】浏览需要调用独显的软件安装目录&#xff0c;并打开…

UML实现图-部署图

概述 部署图(Deployent Diagram)描述了运行软件的系统中硬件和软件的物理结构。部署图中通常包含两种元素:节点和关联关系&#xff0c;部署图中每个配置必须存在于某些节点上。部署图也可以包含包或子系统。 节点是在运行时代表计算机资源的物理元素。节点名称有两种:简单名和…

(js)禁选下拉选框数组中包含的指定字符项

(js)禁选下拉选框数组中包含的指定字符项 const targetStr [编号, 日期, 时间, 标注] this.ziduanOptions.forEach((item) > {targetStr.forEach((ele) > {if (item.projectName.includes(ele)) {this.$set(item, disabled, true)}}) })

四十三、openlayers官网示例Freehand Drawing解析——在地图上自由绘制图形

想要在地图上绘制自由图形&#xff0c;只需要在new Draw的时候多加一个配置项就行。 function addInteraction() {const value typeSelect.value;if (value ! "None") {draw new Draw({source: source,type: typeSelect.value,freehand: true, //是否自由绘制});ma…

哪些专业毕业可以应聘 Java 编程师?就业前景如何?

Java 编程师通常来自以下几种专业背景&#xff1a; 1. 计算机科学与技术 - 这是最直接相关的专业&#xff0c;涵盖了广泛的编程知识和技能&#xff0c;包括Java。 2. 软件工程 - 专注于软件开发的生命周期&#xff0c;包括需求分析、设计、编程、测试和维护。刚好我有一些资料…

PromptPort:为大模型定制的创意AI提示词工具库

PromptPort&#xff1a;为大模型定制的创意AI提示词工具库 随着人工智能技术的飞速发展&#xff0c;大模型在各行各业的应用越来越广泛。而在与大模型交互的过程中&#xff0c;如何提供精准、有效的提示词成为了关键。今天&#xff0c;就为大家介绍一款专为大模型定制的创意AI…

使用OpenPCDet训练与测试多传感器融合模型BEVFusion,OPenPCdet代码架构介绍

引言 在自动驾驶领域&#xff0c;多传感器融合技术是一种常见的方法&#xff0c;用于提高感知系统的准确性和鲁棒性。其中&#xff0c;BevFusion是一种流行的融合方法&#xff0c;可以将来自不同传感器的数据进行融合&#xff0c;生成具有丰富信息的鸟瞰图&#xff08;BEV&…

2024年最新Microsoft Edge关闭自动更新的方法分享

这里写自定义目录标题 打开【服务】 打开【服务】 windows中搜索服务&#xff0c;如下图&#xff1a; 打开服务界面&#xff0c;找到“Microsoft Edge Update Service (edgeupdate)” 及 “Microsoft Edge Update Service (edgeupdatem)” 两个服务&#xff0c;设置为禁用