基于MySQL数据库的图形化产品管理系统

本文描述了一款图形化产品管理系统的设计过程,包括需求分析(连接MySQL数据库和简化用户操作)、服务端和客户端设计思路(使用ODBC和Qt框架),以及具体的功能展示,如数据库连接、数据修改与撤销、添加和删除操作等。最后展示了关键代码片段以说明实现方法。
摘要由CSDN通过智能技术生成

目录

需求分析

设计思路

功能展示

代码展示


需求分析


首先对需求进行分析,图形化产品管理系统, 服务端方面:需要能对远端主机上的MySQL数据库进行连接,并传输客户端的网络请求;而客户端方面:需要进行图形化界面设计,需要发送增删查改功能,使用户对MySQL进行操纵,并且需要简化操纵指令,让不会使用MySQL指令的用户也能使用。


设计思路


对需求分析完,我们开始着手设计,服务端方面:使用远端主机Linux系统上的MySQL数据库网络服务,客户端方面:使用本地主机window系统上的Navicat链接远端进行测试,使用OBDC网络服务进行远端链接,qt框架设计图形化界面,使用qt的信号与槽技术进行增删查改指令发送。



功能展示


首先启动远端主机上的MySQL网络服务,并创建产品信息管理数据库。

启动图形化产品管理系统,开启后会自动链接远端,左下角显示远端链接是否成功,失败则返回失败警告,并自动将远端数据库信息显示到屏幕上。

接下来对产品信息管理系统的功能进行详细展示
屏幕内产品信息可直接进行修改,点击提交修改,则对远端数据库进行实质修改;


点击撤销修改,则可以撤回上一次修改操纵 但注意这里的修改是指在未点击提交修改的屏幕修改,此时未向数据库提出修改操纵请求,可回溯到上一次操纵,一旦提交修改并显示修改成功后,则无法通过普通操纵进行回溯!
点击添加记录按钮,则可以提供初始输入框,以供用户进行操纵。

先点击需要删除的数据信息,再点击删除选中行按钮,则可以删除。系统会提供确认,对数据库进行删除需要十分重视!

确认后则删除

本系统还支持按照id进行升降序排序


本系统还支持查询功能,通过产品名称,序号,类型可查找到需要的数据



以上就是本系统的所有功能展示


代码展示

#include "mainwindow.h"

#include <QApplication>
#include <QSqlDatabase>
#include <QDebug>
bool isMysqlDriverAvailable() {
    return QSqlDatabase::isDriverAvailable("QMYSQL");
}

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

    //打印编译器的数据库驱动
   // qDebug() << "数据库驱动:" << QSqlDatabase::drivers();
  //  w.openDataBase();

    if(isMysqlDriverAvailable())
    {
        qDebug() << "好使" ;

    }
    else
    {
         qDebug() << "不好使" ;
    }
    w.show();


    return a.exec();
}
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include<QSqlDatabase>
#include<QSqlError>
#include<QSqlQueryModel>
#include<QSqlQuery>
#include<QSqlTableModel>
#include<QMessageBox>

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
public:
    void openDataBase();
    void linkDatabase();


private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void on_pushButton_check_clicked();

    void on_pushButton_7_clicked();

    void on_pushButton_6_clicked();

    void on_pushButton_8_clicked();

    void on_pushButton_4_clicked();

    void on_pushButton_3_clicked();

    void on_pushButton_check_2_clicked();

    void on_pushButton_check_3_clicked();

private:
    Ui::MainWindow *ui;
    QSqlTableModel * model;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "./ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    linkDatabase();
    //isMysqlDriverAvailable();
    //界面设计
    this->setWindowTitle(QStringLiteral("产品信息管理系统"));
    //通过qsqltablemodel类 操作数据库
    model = new QSqlTableModel(this);
    model->setTable("info");
    model->select();

    ui->tableView->setModel(model);

}

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

//连接数据库
void MainWindow::linkDatabase()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setHostName("43.143.233.81");//127.0.0.1
    db.setPort(3306);
    db.setDatabaseName("goods_info");
    db.setUserName("zhw");
    db.setPassword("12345678");
    bool ok = db.open();
    if (ok){
        ui->statusbar->showMessage("连接MySQL成功: ");
    }
    else {
        ui->statusbar->showMessage("连接MySQL失败: ");
        qDebug()<<"error open database because"<<db.lastError().text();
    }


    //查询数据库中所有表的名称
    QStringList tables = db.tables();
    foreach(QString table, tables)
        qDebug()<<table;

    //ODBC查询数据
    QSqlQuery result = db.exec(" select * from users");
    while(result.next()){
        qDebug()<<"user_id:"<<result.value("user_id").toInt();
        qDebug()<<"name:"<<result.value("name").toString();
        qDebug()<<"password:"<<result.value("password").toString();
        qDebug()<<"score:"<<result.value("score").toInt();
    }

}






void MainWindow::on_pushButton_clicked()
{
    //开启事务
    model->database().transaction();
    qDebug()<<"start";
    if(model->submitAll())
    {
        //提交事务
        model->database().commit();
        //QMessageBox::warning(this,tr("修改成功"));
        QMessageBox::warning(this,tr("TableView"),tr("修改成功"));
         qDebug()<<"success";
    }
    else
    {
        //回滚事务
        model->database().rollback();
        QMessageBox::warning(this,tr("TableView"),tr("数据库错误:%1").arg(model->lastError().text()));
        qDebug()<<"fail";
    }
}


void MainWindow::on_pushButton_2_clicked()
{
    model->revertAll();
}




void MainWindow::on_pushButton_check_clicked()
{
    QString good_name = ui->lineEdit->text();
  //  qDebug() << "测试查询功能:" << name;
    //根据姓名进行筛选
    model->setFilter(QString("产品名称 = '%1'").arg(good_name));//%1记得单引号 ‘’

    //显示结果
    model->select();

  //  qDebug() << "测试查询功能结束" ;
}


void MainWindow::on_pushButton_7_clicked()
{
    model->setTable("info");//设置要查询的表
    //执行查询操作
    model->select();
}


void MainWindow::on_pushButton_6_clicked()
{
    model->setSort(0,Qt::AscendingOrder);

    model->select();
}


void MainWindow::on_pushButton_8_clicked()
{
    model->setSort(0,Qt::DescendingOrder);

    model->select();
}


void MainWindow::on_pushButton_4_clicked()
{
    //删除选中行
    //获取选中行
    int curRow = ui->tableView->currentIndex().row();



   int ret =  QMessageBox::warning(this,tr("删除当前行"),tr("你确定要删除该行吗?"),QMessageBox::Yes | QMessageBox::No);
   if(ret == QMessageBox::Yes)
   {
       //删除选中行
       model->removeRow(curRow);
       //删除该行 提交数据库
       model->submitAll();
   }
   else
   {
       //不删除 撤销操作
       model->revertAll();

   }

}


void MainWindow::on_pushButton_3_clicked()
{
    //获取表的行数
    int row = model->rowCount();
    int id = row+1;

    //添加一行
    model->insertRow(row);

    model->setData(model->index(row,0),id);
    model->setData(model->index(row,1),tr("产品名称"));
    model->setData(model->index(row,2),tr("产品类型"));

}


void MainWindow::on_pushButton_check_2_clicked()
{
    QString good_id = ui->lineEdit_2->text();
    //  qDebug() << "测试查询功能:" << name;
    //根据姓名进行筛选
    model->setFilter(QString("产品序号 = '%1'").arg(good_id));//%1记得单引号 ‘’

    //显示结果
    model->select();

    //  qDebug() << "测试查询功能结束" ;
}


void MainWindow::on_pushButton_check_3_clicked()
{
    QString good_type = ui->lineEdit_3->text();
    //  qDebug() << "测试查询功能:" << name;
    //根据姓名进行筛选
    model->setFilter(QString("产品类型 = '%1'").arg(good_type));//%1记得单引号 ‘’

    //显示结果
    model->select();

    //  qDebug() << "测试查询功能结束" ;
}


 

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值