👉博__主👈:米码收割机
👉技__能👈: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("保存");
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “散列学生管理系统” 获取。👈👈👈