You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
1.5 KiB
C++

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTreeWidget>
#include <QTableWidget>
#include <QLineEdit>
#include <QPushButton>
#include <QMap>
#include <QList>
#include <QLabel>
struct Student
{
QString name;
QString gender;
int age;
QString id;
QString phone;
};
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
// 班级管理
void addClass();
void deleteClass();
void renameClass();
void onClassClicked(QTreeWidgetItem *item);
// 学生管理
void addStudent();
void deleteStudent();
void updateStudent();
void searchStudent();
void tableItemClicked(int row, int column);
// 文件操作与分页
void importData();
void saveData();
void refreshAll();
void prevPage();
void nextPage();
private:
void setupUI();
void refreshTable();
void saveClassToFile(const QString &className);
QString currentClass() const;
// UI 控件
QTreeWidget *tree;
QTableWidget *table;
QLineEdit *nameEdit, *genderEdit, *ageEdit, *idEdit, *phoneEdit;
QPushButton *addBtn, *delBtn, *updateBtn, *searchBtn, *refreshBtn;
QPushButton *btnPrev, *btnNext;
QLabel *pageLabel;
// 数据存储
QMap<QString, QList<Student>> classData;
QList<Student> displayList; // 当前显示的(过滤后的)数据
int currentPage = 1;
const int pageSize = 10; // 每页10条
};
#endif // MAINWINDOW_H