非党详细如何用qt做一个简单的学生选课系统,要源码,复制粘贴就能用那种
时间: 2024-03-08 17:51:26 浏览: 94
好的,我可以为你解答这个问题。首先,你需要安装Qt并创建一个新的Qt项目。然后,你需要设计一个简单的UI界面,包括登录界面、学生选课界面、课程信息界面等。
接下来,你需要创建一个类来处理学生和课程信息。你可以创建一个名为“Student”的类来表示学生,其中包括学生的姓名、学号、已选课程等信息。同样地,你可以创建一个名为“Course”的类来表示课程,其中包括课程的名称、课程编号、授课教师等信息。
然后,你需要创建一个数据存储类,用于存储学生和课程信息。你可以使用文件存储或数据库存储来实现。在这个存储类中,你需要实现一些方法来添加、删除和修改学生和课程信息。
最后,你需要在UI界面中添加按钮和信号槽,使用户能够登录、选课、查看课程信息等。在信号槽中,你需要调用数据存储类的方法来处理学生和课程信息。
下面是一个简单的示例源代码,希望对你有帮助:
学生类(student.h):
```
#ifndef STUDENT_H
#define STUDENT_H
#include <QString>
#include <QList>
class Student
{
public:
QString name;
QString id;
QList<QString> courses;
Student(QString name, QString id);
void addCourse(QString course);
void removeCourse(QString course);
};
#endif // STUDENT_H
```
学生类(student.cpp):
```
#include "student.h"
Student::Student(QString name, QString id)
{
this->name = name;
this->id = id;
}
void Student::addCourse(QString course)
{
this->courses.append(course);
}
void Student::removeCourse(QString course)
{
this->courses.removeOne(course);
}
```
课程类(course.h):
```
#ifndef COURSE_H
#define COURSE_H
#include <QString>
class Course
{
public:
QString name;
QString id;
QString teacher;
Course(QString name, QString id, QString teacher);
};
#endif // COURSE_H
```
课程类(course.cpp):
```
#include "course.h"
Course::Course(QString name, QString id, QString teacher)
{
this->name = name;
this->id = id;
this->teacher = teacher;
}
```
数据存储类(datastorage.h):
```
#ifndef DATASTORAGE_H
#define DATASTORAGE_H
#include <QList>
#include "student.h"
#include "course.h"
class DataStorage
{
public:
DataStorage();
QList<Student> getStudents();
QList<Course> getCourses();
void addStudent(Student student);
void removeStudent(Student student);
void addCourse(Course course);
void removeCourse(Course course);
private:
QList<Student> students;
QList<Course> courses;
};
#endif // DATASTORAGE_H
```
数据存储类(datastorage.cpp):
```
#include "datastorage.h"
DataStorage::DataStorage()
{
// 初始化学生和课程信息
Student s1("张三", "1001");
s1.addCourse("语文");
s1.addCourse("数学");
Student s2("李四", "1002");
s2.addCourse("英语");
Course c1("语文", "001", "王老师");
Course c2("数学", "002", "李老师");
Course c3("英语", "003", "张老师");
this->students.append(s1);
this->students.append(s2);
this->courses.append(c1);
this->courses.append(c2);
this->courses.append(c3);
}
QList<Student> DataStorage::getStudents()
{
return this->students;
}
QList<Course> DataStorage::getCourses()
{
return this->courses;
}
void DataStorage::addStudent(Student student)
{
this->students.append(student);
}
void DataStorage::removeStudent(Student student)
{
this->students.removeOne(student);
}
void DataStorage::addCourse(Course course)
{
this->courses.append(course);
}
void DataStorage::removeCourse(Course course)
{
this->courses.removeOne(course);
}
```
主窗口类(mainwindow.h):
```
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QListWidgetItem>
#include "datastorage.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_loginButton_clicked();
void on_courseListWidget_itemDoubleClicked(QListWidgetItem *item);
void on_viewButton_clicked();
private:
Ui::MainWindow *ui;
DataStorage dataStorage;
Student currentStudent;
};
#endif // MAINWINDOW_H
```
主窗口类(mainwindow.cpp):
```
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_loginButton_clicked()
{
QString name = ui->nameLineEdit->text();
QString id = ui->idLineEdit->text();
// 在数据存储类中查找当前学生信息
QList<Student> students = dataStorage.getStudents();
foreach (Student student, students) {
if (student.name == name && student.id == id) {
currentStudent = student;
ui->stackedWidget->setCurrentIndex(1);
ui->nameLabel->setText(name);
ui->idLabel->setText(id);
ui->coursesListWidget->clear();
foreach (QString course, student.courses) {
QListWidgetItem *item = new QListWidgetItem(course);
ui->coursesListWidget->addItem(item);
}
return;
}
}
QMessageBox::warning(this, "错误", "学生信息不存在!");
}
void MainWindow::on_courseListWidget_itemDoubleClicked(QListWidgetItem *item)
{
QString course = item->text();
// 在数据存储类中查找当前课程信息
QList<Course> courses = dataStorage.getCourses();
foreach (Course c, courses) {
if (c.name == course) {
// 判断当前学生是否已选该课程
if (currentStudent.courses.contains(course)) {
QMessageBox::warning(this, "错误", "已选该课程!");
} else {
currentStudent.addCourse(course);
dataStorage.addStudent(currentStudent);
QListWidgetItem *newItem = new QListWidgetItem(course);
ui->coursesListWidget->addItem(newItem);
}
return;
}
}
}
void MainWindow::on_viewButton_clicked()
{
ui->stackedWidget->setCurrentIndex(2);
ui->courseTableWidget->setRowCount(0);
// 在数据存储类中获取所有课程信息
QList<Course> courses = dataStorage.getCourses();
foreach (Course c, courses) {
int row = ui->courseTableWidget->rowCount();
ui->courseTableWidget->insertRow(row);
ui->courseTableWidget->setItem(row, 0, new QTableWidgetItem(c.name));
ui->courseTableWidget->setItem(row, 1, new QTableWidgetItem(c.id));
ui->courseTableWidget->setItem(row, 2, new QTableWidgetItem(c.teacher));
}
}
```
这只是一个简单的示例,需要根据需求进行修改和完善。希望对你有所帮助!
阅读全文