QT项目-学生管理系统

这篇具有很好参考价值的文章主要介绍了QT项目-学生管理系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 

前言

本文章主要讲解本人在QT学习期间所开发的项目-学生管理系统,代码主要参考于网上查找。

一、界面展示

qt 管理系统,qt,ui,开发语言

 功能主要包括,学生信息的插入删除,以及修改。

再加上按照id,或者成绩的升降序排序

二、代码展示

1.pro

QT       += core gui sql

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = 12
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0


SOURCES += \
        main.cpp \
        widget.cpp

HEADERS += \
        widget.h

FORMS += \
        widget.ui

2.widget.h

#ifndef STUDENTDIALOG_H
#define STUDENTDIALOG_H

#include <QDialog>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlQueryModel>
#include <QSqlError>
#include <QDebug>
#include <QMessageBox>
namespace Ui {
class StudentDialog;
}

class StudentDialog : public QDialog
{
    Q_OBJECT

public:
    explicit StudentDialog(QWidget *parent = 0);
    ~StudentDialog();
private:
    //创建数据库
    void createDB();
    //创建数据表
    void createTable();
    //查询
    void queryTable();

private slots:
    //插入
    void on_InsertpushButton_clicked();
    //删除
    void on_DelpushButton_clicked();
    //修改
    void on_UpdatepushButton_clicked();
    //排序按钮
    void on_sortpushButton_clicked();
    //清空
    void CleanEdit();

private:
    Ui::StudentDialog *ui;
    //建立和数据库的连接
    QSqlDatabase db;
    //保存结果集
    QSqlQueryModel model;
};

#endif // STUDENTDIALOG_H

3. main.cpp

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    StudentDialog w;
    w.show();

    return a.exec();
}

4.widget.cpp

#include "widget.h".h"
#include "ui_widget.h"
#pragma execution_character_set("utf-8")
StudentDialog::StudentDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::StudentDialog)
{
    ui->setupUi(this);
    this->setWindowTitle("学生管理系统");
    createDB();
    createTable();
    queryTable();
}

StudentDialog::~StudentDialog()
{
    delete ui;
}
//插入操作
void StudentDialog::on_InsertpushButton_clicked()
{
    QSqlQuery query;
    int id=ui->IDEdit->text().toInt();
    QString name=ui->NameEdit->text();
    double score=ui->ScoreEdit->text().toDouble();
    if(id==0){
        QMessageBox::critical(this,"Error","id ERROR");
        CleanEdit();
        return;
    }
    if(name==""){
        QMessageBox::critical(this,"Error","name ERROR");
        CleanEdit();
        return;
    }
    if(score<=0||score>150){
        QMessageBox::critical(this,"Error","score ERROR");
        CleanEdit();
        return;
    }
    //类似C语言%d被替换
    QString str=QString("INSERT INTO student (id,name,score) VALUES(%1,'%2',%3)"
                        ).arg(id).arg(name).arg(score);
    if(query.exec(str)==false){
        qDebug()<<str;
    }else{
        CleanEdit();
        qDebug()<<"insert success";
        queryTable();
    }

}
//删除操作 根据ID
void StudentDialog::on_DelpushButton_clicked()
{
    QSqlQuery query;
    int id=ui->IDEdit->text().toInt();
    QString str=QString("DELETE FROM student WHERE id = %1").arg(id);
    if(QMessageBox::question(this,"DELETE","ARE YOU SURE?",QMessageBox::Yes|QMessageBox::No)
            ==QMessageBox::No){
        return;
    }
    if(query.exec(str)==false){
        qDebug()<<str;
    }else{
        CleanEdit();
        qDebug()<<"Delete success";
        queryTable();
    }
}
//修改操作 根据ID
void StudentDialog::on_UpdatepushButton_clicked()
{
    QSqlQuery query;
    int id=ui->IDEdit->text().toInt();
    double score=ui->ScoreEdit->text().toDouble();
    QString str=QString("UPDATE student SET score=%1 WHERE id=%2").arg(score).arg(id);
    if(query.exec(str)==false){
        qDebug()<<str;
    }else{
        CleanEdit();
        qDebug()<<"Update success";
        queryTable();
    }
}
//排序按钮
void StudentDialog::on_sortpushButton_clicked()
{
    //获取排序列名
    QString value=ui->ValueComboBox->currentText();
    //获取排序方式名字
    QString condition;
    if(ui->condComboBox->currentIndex()==0){
        condition="ASC";
    }else{
        condition="DESC";
    }
    QString str=QString("SELECT * FROM student ORDER BY %1 %2").arg(value).arg(condition);
    //查询显示
    model.setQuery(str);
    ui->tableView->setModel(&model);

}
//创建数据库
void StudentDialog::createDB(){
    //添加数据库的驱动
    db=QSqlDatabase::addDatabase("QSQLITE");
    //设置数据库名字
    db.setDatabaseName("student.db");
    //打开数据库
    if(db.open()==true){
        qDebug()<<"create darabase success!";
    }else{
        qDebug()<<"create darabase fail!";
    }
}

//创建数据表
void StudentDialog::createTable(){
    QSqlQuery query;
    QString str=QString("CREATE TABLE student ("
                        "id INT PRIMARY KEY NOT NULL,"
                        "name TEXT NOT NULL,"
                        "score REAL NOT NULL)");
    if(query.exec(str)==false){
        qDebug()<<str;
        qDebug()<<"fail";
    }else{
        qDebug()<<"success";
    }

}

//查询
void StudentDialog::queryTable(){
    QString str=QString("SELECT * FROM student");
    model.setQuery(str);
    ui->tableView->setModel(&model);
}
void StudentDialog::CleanEdit(){
    ui->IDEdit->clear();
    ui->NameEdit->clear();
    ui->ScoreEdit->clear();
}


5.widget.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>StudentDialog</class>
 <widget class="QDialog" name="StudentDialog">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>523</width>
    <height>509</height>
   </rect>
  </property>
  <property name="font">
   <font>
    <family>Agency FB</family>
    <pointsize>10</pointsize>
   </font>
  </property>
  <property name="windowTitle">
   <string>StudentDialog</string>
  </property>
  <widget class="QWidget" name="layoutWidget">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>7</y>
     <width>511</width>
     <height>491</height>
    </rect>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
     <widget class="QSplitter" name="splitter">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
      </property>
      <widget class="QPushButton" name="sortpushButton">
       <property name="text">
        <string>排序</string>
       </property>
      </widget>
      <widget class="QComboBox" name="condComboBox">
       <item>
        <property name="text">
         <string>升序</string>
        </property>
       </item>
       <item>
        <property name="text">
         <string>降序</string>
        </property>
       </item>
      </widget>
      <widget class="QComboBox" name="ValueComboBox">
       <property name="font">
        <font>
         <family>Agency FB</family>
         <pointsize>10</pointsize>
        </font>
       </property>
       <item>
        <property name="text">
         <string>ID</string>
        </property>
       </item>
       <item>
        <property name="text">
         <string>Score</string>
        </property>
       </item>
      </widget>
     </widget>
    </item>
    <item>
     <widget class="QTableView" name="tableView"/>
    </item>
    <item>
     <layout class="QFormLayout" name="formLayout">
      <item row="0" column="0">
       <widget class="QLabel" name="label">
        <property name="font">
         <font>
          <family>Agency FB</family>
          <pointsize>12</pointsize>
         </font>
        </property>
        <property name="text">
         <string>学号:</string>
        </property>
       </widget>
      </item>
      <item row="0" column="1">
       <widget class="QLineEdit" name="IDEdit"/>
      </item>
      <item row="1" column="0">
       <widget class="QLabel" name="label_2">
        <property name="font">
         <font>
          <pointsize>12</pointsize>
         </font>
        </property>
        <property name="text">
         <string>姓名:</string>
        </property>
       </widget>
      </item>
      <item row="1" column="1">
       <widget class="QLineEdit" name="NameEdit"/>
      </item>
      <item row="2" column="0">
       <widget class="QLabel" name="label_3">
        <property name="font">
         <font>
          <pointsize>12</pointsize>
         </font>
        </property>
        <property name="text">
         <string>成绩:</string>
        </property>
       </widget>
      </item>
      <item row="2" column="1">
       <widget class="QLineEdit" name="ScoreEdit"/>
      </item>
     </layout>
    </item>
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
       <widget class="QPushButton" name="InsertpushButton">
        <property name="text">
         <string>插入</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QPushButton" name="DelpushButton">
        <property name="text">
         <string>删除</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QPushButton" name="UpdatepushButton">
        <property name="text">
         <string>修改</string>
        </property>
       </widget>
      </item>
     </layout>
    </item>
   </layout>
  </widget>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources/>
 <connections/>
</ui>

总结

项目处于学习阶段所做,参考了一些网络上的代码和思路,且功能简单,仅做练习使用。文章来源地址https://www.toymoban.com/news/detail-530614.html

到了这里,关于QT项目-学生管理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python Web开发 flask轻量级Web框架实战项目--学生管理系统

     上次发的一篇文章,有很多朋友私信我要后面的部分,那咱们就今天来一起学习一下吧,因为我的数据库这门课选中的课题是学生管理系统,所以今天就以这个课题为例子,从0到1去实现一个管理系统。数据库设计部分我会专门出一个博客的,敬请期待吧~~~ 介如很多朋友问

    2024年02月16日
    浏览(62)
  • java 学生信息管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

    一、源码特点     java 学生信息管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发。 java 学生信息管理系统 二、

    2024年02月09日
    浏览(56)
  • 学生管理系统Element UI版

    💂 个人主页:  陶然同学 🤟 版权:  本文由【陶然同学】原创、在CSDN首发、需要转载请联系博主 💬 如果文章对你有帮助、 欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 💅  想寻找共同成长的小伙伴,请点击【 Java全栈开发社区 】 创建vue项目:vue create day16_element_studen

    2024年01月18日
    浏览(29)
  • Vue项目:学生管理系统

    💂 个人主页:  陶然同学 🤟 版权:  本文由【陶然同学】原创、在CSDN首发、需要转载请联系博主 💬 如果文章对你有帮助、 欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 💅  想寻找共同成长的小伙伴,请点击【 Java全栈开发社区 】 步骤1:设置导航  步骤2:添加路由 步

    2024年02月02日
    浏览(41)
  • 学生管理系统-01项目简介

    一、项目简介 项目名称:学生管理系统 项目功能 用户管理 用户登录 用户的注册 用户增加 用户删除 用户的修改 学生管理 用户的列表渲染 用户的分页操作 用户的搜索 用户的增加 用户删除 用户编辑 excel报表的导出 班级管理 专业管理 班主任管理 教师管理 课程管理 可视化

    2024年02月15日
    浏览(43)
  • 【Java】学生管理系统项目演示

    目录 学生管理系统 学生管理系统代码思路分析 nextLine() 和 nextInt() 区别 需求:实现对学生的增删改查功能,学生(学号,姓名,年龄,地址)字段 定义学生 Student 实体类 成员属性 (学号,姓名,年龄,地址); 定义容器(ArrayList) 集合存入对象; 定义StudentManage 对 Stu

    2024年02月07日
    浏览(37)
  • 学生管理系统-03项目案例(3)

    一、用户列表 1、编写api接口 2、表格渲染 3、分页 4、搜索功能 首先在data中的query对象中添加type和value属性 页面中进行布局 5、注册 略 6、修改用户 在api接口中编写修改方法 为编辑按钮绑定事件 在data中定义 在methods中定义一个修改方法 使用深浅拷贝解决修改中的一个问题

    2024年02月15日
    浏览(43)
  • 【MFC】学生成绩管理系统(期末项目)

    如果需要代码请评论区留言或私信 E-R图 关系模式 教师(工号,姓名,学院) 主键(工号) 学生(学号,姓名,性别,年龄,班级,专业,学分) 主键(学号) 课程(课程编号,教师编号,课程名称,课程学分) 主键(课程编号) 外键(教师编号) 选课(学号,课程编号,分数) 主键(学号,课

    2024年01月17日
    浏览(49)
  • python Django项目学生管理系统

    涉及技术: 后台:Django mysql 前端:Html css js Ajax boostrap 数据库:MySQL5.7 管理系统使用Xadmin框架,内置Bootstrap3、插件库 登录注册:普通用户与管理人员入口不同,老师及学生通过状态选择验证。 权限管理:权限组管理及个人权限管理。 基本信息管理:针对用户(学生,老师

    2024年02月03日
    浏览(49)
  • Qt实现图书管理系统(C++)

    创建表 创建三个表 将powerDesigner里面的表导出成xxx.sql脚本 此时就会生成文件在桌面了 将SQL文件导入数据库创建表 运行sql文件 设置主键自增 在qt上创建一个工程项目 把这个四个文件发到controller文件夹下,在创建一个dao文件夹 controller文件夹下面是一些界面类和逻辑类,dao文

    2024年02月09日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包