数据库实现学生管理系统

1.QT将数据库分为三个层次:

1> 数据库驱动层:QSqlDriver、QSqlDriverCreator、QSqlDriverCreatorBase、QSqlDriverPlugin

2> sql接口层:QSqlDatabase、QSqlQuery、QSqlRecord、QSqlError

3> 用户接口层:提供一些模型QSqlQueryModel、QSqlTableModel、QSqlRelationalTableModel

2.实现数据库操作的相关方法:

1.添加数据库:[static] QSqlDatabase QSqlDatabase::addDatabase(QSqlDriver *driver, const QString &connectionName = QLatin1String(defaultConnection)) QSQLITE SQLite version 3 or above

2.设置数据库名称:void QSqlDatabase::setDatabaseName(const QString &name)

3.包含数据库:bool QSqlDatabase::contains(const QString &connectionName = QLatin1String(defaultConnection))

4.打开数据库:bool QSqlDriver::open(const QString &db)

5.关闭数据库:void QSqlDatabase::close()

6.错误信息:QSqlError QSqlDatabase::lastError()

7.sql语句执行:构造一个QSqlQuery类对象,调用其成员函数exec,执行sql语句:bool QSqlQuery::exec(const QString &query)

8.bool QSqlQuery::next():遍历查询结果的函数

3.通过数据库实现学生管理系统: 

1.ui界面

2.配置文件
3.头文件
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QSqlDatabase>       //数据库管理类
#include <QSqlQuery>          //执行sql语句对应的类
#include <QSqlRecord>         //记录类
#include <QMessageBox>
#include <QDebug>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_inputBtn_clicked();

    void on_showBtn_clicked();

private:
    Ui::Widget *ui;

    //定义一个数据库对象
    QSqlDatabase db;
};
#endif // WIDGET_H
4.源文件
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //判断数据库对象是否包含了自己使用的数据库 Student.db
    if(!db.contains("Student.db"))
    {
        //添加一个数据库
        //函数原型:static QSqlDatabase addDatabase(const QString& type);
        //参数:数据库的版本
        //返回值:添加的数据库
        db = QSqlDatabase::addDatabase("QSQLITE");                //表明使用的是sqlite3版本的数据库

        //给数据库命名
        db.setDatabaseName("Student.db");

    }

    //打开数据库
    if(!db.open())
    {
        QMessageBox::information(this,"提示","数据库打开失败");
    }

    //此时说明数据库已经创建出来并打开了,就可以创建数据表了
    //创建数据表需要使用sql语句,需要使用QSQLQuerry类对象来完成
    //准备sql语句
    QString sql = "create table if not exists myTable("              //创建表的sql语句
            "id integer primary key autoincrement,"            //id主键,允许自增
            "numb integer,"                                    //学号,是整形
            "name varchar(10),"                                //姓名,字符串
            "score integer,"                                   //成绩,是整型
            "sex varchar(4))";                                 //性别,字符串

    //定义语句执行者
    QSqlQuery querry;

    //使用querry执行sql语句
    if(!querry.exec(sql))
    {
        QMessageBox::information(this,"失败","创建表失败");
    }
    else
    {
        QMessageBox::information(this,"成功","创建表成功");
    }
}

Widget::~Widget()
{
    delete ui;
}

//录入按钮对应的槽函数
void Widget::on_inputBtn_clicked()
{
    //获取ui界面中要存入数据库中的数据
    int number_ui = ui->numberEdit->text().toInt();   //获取ui界面的学号
    QString name_ui = ui->nameEdit->text();           //获取ui界面上的姓名
    int score_ui = ui->scoreEdit->text().toInt();     //获取ui界面的成绩
    QString sex_ui = ui->sexEdit->text();             //获取ui界面上的性别

    //判断是否有漏填数据
    if(number_ui == 0 || name_ui.isNull() || score_ui == 0 ||sex_ui.isNull())
    {
        QMessageBox::information(this,"提示","请将信息填写完整");
        return;
    }

    //准备sql语句
    QString sql = QString("insert into myTable(numb, name, score, sex)"
                          "values(%1,'%2',%3,'%4')")
            .arg(number_ui).arg(name_ui).arg(score_ui).arg(sex_ui);

    //定义语句执行官
    QSqlQuery querry;

    //调用执行者的相关函数执行sql语句
    if(!querry.exec(sql))
    {
        QMessageBox::information(this,"失败","插入数据失败");
    }
    else
    {
        QMessageBox::information(this,"成功","插入数据成功");
    }

}

//展示按钮对应的槽函数
void Widget::on_showBtn_clicked()
{
    //准备sql语句
    QString sql = "select * from myTable";

    //准备语句执行者
    QSqlQuery querry;

    //执行sql语句
    if(!querry.exec(sql))
    {
        QMessageBox::information(this,"失败","查询失败");
        return;
    }

    //此时,将查找到的所有结果,全部都放在querry对象中了
    //可以通过next函数不断遍历查询结果
    int i = 0;
    while(querry.next())
    {
        //遍历的就是任意一组记录:querry.record
        //qDebug()<<querry.record();
        //要找到每条记录中的每个数据使用
        //qDebug() << querry.record().value(2);
        //querry.record().count();       //返回当前记录对应数据项的个数
        //querry.record().value(2).toString();   //将记录的某一项的数据转变成字符串

        //将数据库中的表格展示到ui界面
        //ui->tableWidget->setItem()
        for(int j = 0; j < querry.record().count()-1; j++)
        {
            ui->tableWidget->setItem(i,j,new QTableWidgetItem(querry.record().value(j+1).toString()));
        }

        i++;          //进行下一行
    }

}
5.效果呈现

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 学生管理系统可以使用Java编写,并使用数据库来存储和管理学生信息。以下是实现学生管理系统的步骤: 1. 设计数据库表结构:包括学生信息表、课程信息表、成绩信息表等。 2. 使用Java连接数据库:可以使用JDBC或者ORM框架(如Hibernate、MyBatis等)来连接数据库。 3. 编写Java代码实现学生信息的增删改查:可以使用Java的面向对象特性,将学生信息封装成一个类,然后编写增删改查的方法。 4. 编写用户界面:可以使用Java Swing或JavaFX等GUI框架来实现用户界面,包括学生信息的录入、修改、删除和查询等功能。 5. 将Java代码打包成可执行文件:可以使用Maven或Gradle等构建工具将Java代码打包成可执行文件,方便用户使用。 总之,使用Java编写数据库实现学生管理系统需要掌握Java编程语言、数据库设计和连接、GUI框架等知识。 ### 回答2: 学生管理系统是一个基于数据库的应用程序,它对于管理学生信息非常有用。数据库技术最适合于管理这样的信息系统,因为它是持久化地存储数据的最佳方法,可以帮助我们保持数据整洁、有组织,并且可以方便地进行查询。 Java是一种面向对象的编程语言,它具有良好的兼容性和可扩展性,非常适合用于开发这种类型的应用程序。Java有多种数据库连接方式,例如JDBC、Hibernate和MyBatis,我们可以根据需要选择其中一种或几种来实现我们的学生管理系统。 在开始编写学生管理系统之前,我们需要设计数据库模式,包括学生信息的表格和列定义。我们可以使用一些数据库设计工具,例如MySQL Workbench或Toad Data Modeler,来帮助我们完成该任务。在数据库模式设计完成后,我们就可以开始编写我们的Java应用程序。 Java应用程序主要由两部分组成:一部分是连接数据库的代码,用于建立与数据库的连接、执行SQL查询和更新等操作;另一部分则是学生信息系统的前端代码,通常使用Java GUI组件库或Web框架来实现。在编写Java应用程序时,我们可以使用Eclipse、IntelliJ等集成开发环境(IDE)来简化代码编写和调试过程。 在学生管理系统中,我们可以使用JDBC来连接数据库,执行SQL语句实现学生信息的增、删、改、查等操作。例如,我们可以使用以下代码来查询学生信息: ``` public class StudentDAO { private Connection conn; public StudentDAO() { try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "password"); } catch(Exception e) { System.out.println(e); } } public List<Student> getStudents() throws SQLException { List<Student> students = new ArrayList<Student>(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM Students"); while(rs.next()) { Student student = new Student(rs.getInt("id"), rs.getString("name"), rs.getInt("age")); students.add(student); } rs.close(); stmt.close(); return students; } } ``` 以上代码建立了与本地MySQL数据库的连接,并通过执行SELECT语句检索学生信息。我们可以将查询结果保存在一个Java List中,并通过Java中其他GUI组件、Web框架等方式将其显示在界面上。 综上所述,Java与数据库相结合可以实现学生管理系统等各种信息管理系统。Java提供了强大的数据处理和GUI组件库,而数据库则提供了数据持久化和高效的数据查询支持。我们可以使用这样的技术组合,轻松地编写出易于使用和维护的信息管理系统。 ### 回答3: 学生管理系统是很多学校、教育机构和培训机构必备的一种工具。它可以方便地管理学生的基本信息、课程成绩、出勤情况等。而数据库作为存储和管理数据的工具,也在学生管理系统中发挥着非常重要的作用。本文将介绍如何用Java编写数据库实现学生管理系统。 首先,需要选择一个合适的数据库。MySQL是一款常用的关系型数据库,以其性能稳定、开源免费等特点广泛应用。这里我们以MySQL为例进行介绍。 其次,需要建立学生管理系统需要的表。一般而言,我们需要建立学生表、课程表和成绩表。学生表包含学生的基本信息,例如姓名、性别、学号、家庭住址等;课程表包含课程的基本信息,例如课程名、课程编号、授课教师等;成绩表记录学生每门课程的成绩。可以在MySQL中建立三个表,分别为Student、Course和Score。 接着,需要编写Java代码进行数据库操作。在Java中,我们可以使用JDBC(Java Database Connectivity)进行对数据库的增删改查操作。首先,在代码中需要定义数据库连接的相关信息,包括数据库驱动、数据库地址、用户名和密码等。 然后,需要使用JDBC对数据库进行操作,例如增删改查数据。我们可以使用PreparedStatement对象对SQL语句进行预编译,以避免SQL注入漏洞。同时,可以使用ResultSet对象对查询结果进行处理。 综上所述,使用Java编写数据库实现学生管理系统需要以下步骤:选择合适的数据库、建立学生、课程和成绩表、定义数据库连接信息、使用JDBC进行数据操作。通过以上步骤,我们可以成功地实现学生管理系统,为学校、教育机构和培训机构的管理提供帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值