下面是运行结果,能够实现基本查询,修改,插入操作

QT sql 实现公交车管理基本操作QT sql 实现公交车管理基本操作

下面是代码:

DataBase.h中

#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QSqlRecord>
#include <QString>
#include <QDebug>
 
#define admin 1
#define bus   2
#define route 3
#define user  4
 
class DataBase : public QWidget
{
    Q_OBJECT
 
public:
    DataBase(QWidget *parent = 0);
    ~DataBase();
    bool createConnection();           //创建连接
    bool createTable(int);             //创建数据库表
    QSqlQuery query(int);              //查询所有信息
    bool sortById();                   //排序
    bool deleteById(int, QString);           //删除
    bool insert(int, QString, QString, QString = NULL, QString = NULL, QString = NULL, QString = NULL);            //插入数据
    bool updateById(int, QString, QString, QString = NULL, QString = NULL, QString = NULL, QString = NULL);        //更新
};
 
#endif // WIDGET_H
DataBase.cpp中
#include "database.h"
 
DataBase::DataBase(QWidget *parent)
    : QWidget(parent)
{
}
bool DataBase::createConnection()
{
    //以后就可以用"sqlite1"与数据库进行连接了
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "sqlite1");
    db.setDatabaseName(".//qtDb.db");
    if( !db.open())
    {
        qDebug() << "无法建立数据库连接";
        return false;
    }
    return true;
}
 
//创建数据库表
bool DataBase::createTable(int type)
{
    QSqlDatabase db = QSqlDatabase::database("sqlite1"); //建立数据库连接
    QSqlQuery query(db);
    bool success;
    switch (type) {
    case admin:           //建立管理员表格
        success = query.exec("create table admin(id varchar primary key, passwd varchar)");
        if(success)
        {
            qDebug() << QObject::tr("admin数据库表创建成功!\n");
            insert(admin, "admin", "admin");
            return true;
        }
        else
        {
            qDebug() << QObject::tr("admin数据库表创建失败!\n");
            return false;
        }
        break;
 
    case bus:                 //公交车表信息      车牌号,班次,开始时间,结束时间,司机,路线
        success = query.exec("create table bus(licence varchar primary key,id varchar,"
                                  "starttime varchar,endtime varchar,driver varchar,"
                                  "route varchar)");
        if(success)
        {
            qDebug() << QObject::tr("bus数据库表创建成功!\n");
            insert(bus, "2626", "23", "6:20", "18:20", "张三", "23");
            return true;
        }
        else
        {
            qDebug() << QObject::tr("bus数据库表创建失败!\n");
            return false;
        }
        break;
 
    case route:
        success = query.exec("create table route(routeid varchar primary key,startplace varchar,"
                             "crossplace varchar, endplace varchar)");
        if(success)
        {
            qDebug() << QObject::tr("route数据库表创建成功!\n");
            insert(route,"Bus225","淮安","盐城","如皋","7.40");
            return true;
        }
        else
        {
            qDebug() << QObject::tr("route数据库表创建失败!\n");
            return false;
        }
        break;
 
    case user:
        success = query.exec("create table user(userid varchar primary key,money varchar)");
        if(success)
        {
            qDebug() << QObject::tr("user数据库表创建成功!\n");
            insert(user,"2222","22");
            insert(user,"3333","33");
            insert(user,"4444","44");
            insert(user,"5555","55");
            insert(user,"6666","66");
            insert(user,"7777","77");
            return true;
        }
        else
        {
            qDebug() << QObject::tr("user数据库表创建失败!\n");
            return false;
        }
        break;
 
    default:
        break;
    }
}
 
//向数据库中插入记录
bool DataBase::insert(int type, QString variable1, QString variable2, QString variable3,
                      QString variable4, QString variable5, QString variable6)
{
    bool success;
    QSqlDatabase db = QSqlDatabase::database("sqlite1"); //建立数据库连接
    QSqlQuery query(db);
    switch (type) {
    case admin:
        //插入管理员信息
        query.prepare("insert into admin values(?, ?)");
        query.bindValue(0, variable1);
        query.bindValue(1, variable2);
        break;
    case bus:
        query.prepare("insert into bus values(?, ?, ?, ?, ?, ?)");
        query.bindValue(0, variable1);
        query.bindValue(1, variable2);
        query.bindValue(2, variable3);
        query.bindValue(3, variable4);
        query.bindValue(4, variable5);
        query.bindValue(5, variable6);
        break;
    case route:
        query.prepare("insert into route values(?, ?, ?, ?)");
        query.bindValue(0, variable1);
        query.bindValue(1, variable2);
        query.bindValue(2, variable3);
        query.bindValue(3, variable4);
        break;
    case user:
        query.prepare("insert into user values(?, ?)");
        query.bindValue(0, variable1);
        query.bindValue(1, variable2);
        break;
    default:
        break;
    }
    success=query.exec();
    if(!success)
    {
        QSqlError lastError = query.lastError();
        qDebug() << lastError.driverText() << QString(QObject::tr("插入失败"));
        return false;
    }
    return true;
}
 
//查询所有信息
QSqlQuery DataBase::query(int type)
{
    QSqlDatabase db = QSqlDatabase::database("sqlite1"); //建立数据库连接
    QSqlQuery query(db);
    QString strtype;
    switch (type) {
    case admin:
        strtype = "admin";
        break;
    case bus:
        strtype = "bus";
        break;
    case route:
        strtype = "route";
        break;
    case user:
        strtype = "user";
        break;
    default:
        break;
    }
    query.exec(QString("select count(*) from sqlite_master where type='table' and name = '%1'").arg(strtype));
    if(query.next())
    {
        if(query.value(0).toInt()==0)
        {
            createTable(type);
        }
    }
 
    query.exec(QString("select * from '%1'").arg(strtype));
 
    return query;
}
 
//根据ID删除记录
bool DataBase::deleteById(int type, QString key)
{
    QSqlDatabase db = QSqlDatabase::database("sqlite1"); //建立数据库连接
    QSqlQuery query(db);
    switch (type) {
    case admin:
        query.prepare(QString("delete from admin where id = %1").arg(key));
        break;
    case bus:
        query.prepare(QString("delete from bus where licence = %1").arg(key));
        break;
    case route:
        query.prepare(QString("delete from route where routeid = %1").arg(key));
        break;
    case user:
        query.prepare(QString("delete from user where userid = %1").arg(key));
        break;
    default:
        break;
    }
 
    if(!query.exec())
    {
        qDebug() << "删除记录失败!";
        return false;
    }
    return true;
}
 
//根据ID更新记录
bool DataBase::updateById(int type, QString variable1, QString variable2, QString variable3,
                          QString variable4, QString variable5, QString variable6)
{
    QSqlDatabase db = QSqlDatabase::database("sqlite1"); //建立数据库连接
    QSqlQuery query(db);
    switch (type) {
    case admin:
        query.prepare("update admin set passwd = ? where id = ?");
        query.bindValue(0,variable2);
        query.bindValue(1,variable1);
        break;
    case bus:
        query.prepare("update bus set id = ?, starttime = ?,endtime  = ?,driver = ?, route = ? where licence = ?");
        query.bindValue(0,variable2);
        query.bindValue(1,variable3);
        query.bindValue(2,variable4);
        query.bindValue(3,variable5);
        query.bindValue(4,variable6);
        query.bindValue(5,variable1);
        break;
    case route:
        query.prepare("update route set startplace = ?, crossplace = ?,endplace  = ? where routeid = ?");
        query.bindValue(0,variable2);
        query.bindValue(1,variable3);
        query.bindValue(2,variable4);
        query.bindValue(3,variable1);
        break;
    case user:
        query.prepare("update user set money = ? where userid = ?");
        query.bindValue(0,variable2);
        query.bindValue(1,variable1);
        break;
    default:
        break;
    }
 
    bool success=query.exec();
    if(!success)
    {
      QSqlError lastError = query.lastError();
      qDebug() << lastError.driverText() << QString(QObject::tr("更新失败"));
    }
    return true;
}
DataBase::~DataBase()
{
 
}
Manage.h中
#ifndef MANAGE_H
#define MANAGE_H
 
#include <QWidget>
#include <QObject>
#include <QWidget>
#include <QPushButton>
#include <QSqlQuery>
#include <QString>
#include <QLabel>
#include <QTableWidget>
#include <QTableWidgetItem>
#include <QHeaderView>
#include <QStringList>
#include <QComboBox>
#include <QDateTime>
#include <QLineEdit>
#include <QTextEdit>
#include <QFile>
#include <QFileDialog>
#include "database.h"
 
class Manage : public QWidget
{
    Q_OBJECT
public:
    explicit Manage(QWidget *parent = 0);
    QPushButton *m_AdminManageBtn;              //管理员信息管理按钮
    QPushButton *m_BusManageBtn;                //公交车信息管理按钮
    QPushButton *m_RouteManageBtn;              //路线信息管理按钮
    QPushButton *m_UserManageBtn;               //用户信息管理按钮
    QTableWidget *m_InfoTable;                  //表格,显示信息
    DataBase m_database;                        //数据库类
    int type;                                   //识别修改哪个数据库等
    QString tableKey;                           //数据库表的主键,用于修改和删除
    QTextEdit *m_LogInfo;                       //显示日志文件内容
 
    QLineEdit *m_AdminLE_1;
    QLineEdit *m_AdminLE_2;
    QLineEdit *m_BusLE_1;
    QLineEdit *m_BusLE_2;
    QLineEdit *m_BusLE_3;
    QLineEdit *m_BusLE_4;
    QLineEdit *m_BusLE_5;
    QLineEdit *m_BusLE_6;
    QLineEdit *m_RouteLE_1;
    QLineEdit *m_RouteLE_2;
    QLineEdit *m_RouteLE_3;
    QLineEdit *m_RouteLE_4;
    QLineEdit *m_UserLE_1;
    QLineEdit *m_UserLE_2;
public slots:
    void m_slot_AdminManageBtn_Clicked();       //管理员信息管理按钮点击事件
    void m_slot_BusManageBtn_Clicked();         //公交车信息管理按钮点击事件
    void m_slot_RouteManageBtn_Clicked();       //路线信息管理按钮点击事件
    void m_slot_UserManageBtn_Clicked();        //用户信息查看按钮点击事件
    void m_slot_Combox_1(int);                  //下拉框1点击事件
    void m_slot_Combox_2(int);                  //下拉框2点击事件
    void m_slot_add();                          //添加按钮点击事件
    void m_slot_config();                       //修改按钮点击事件
    void updateMoney(int, QByteArray);
 
 
signals:
 
public slots:
};
 
#endif // MANAGE_H
Manage.cpp中
#include "manage.h"
 
Manage::Manage(QWidget *parent) : QWidget(parent)
{
    this->resize(520,500);
    m_database.createConnection();
    type = 0;
    m_AdminManageBtn = new QPushButton("管理员信息",this);
    m_BusManageBtn = new QPushButton("公交车管理",this);
    m_RouteManageBtn = new QPushButton("路线管理",this);
    m_UserManageBtn = new QPushButton("用户管理",this);
    m_InfoTable = new QTableWidget(this);
    m_LogInfo = new QTextEdit(this);
 
    m_AdminManageBtn->setGeometry(30,10,100,20);
    m_BusManageBtn->setGeometry(150,10,100,20);
    m_RouteManageBtn->setGeometry(270,10,100,20);
    m_UserManageBtn->setGeometry(390,10,100,20);
    m_InfoTable->setGeometry(10,70,500,420);
    m_LogInfo->setGeometry(10,70,500,420);
 
    m_InfoTable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);//使列完全填充并平分
    m_InfoTable->setEditTriggers(QAbstractItemView::NoEditTriggers); //设置不可编辑
 
    connect(m_AdminManageBtn,SIGNAL(clicked(bool)),this,SLOT(m_slot_AdminManageBtn_Clicked()));
    connect(m_BusManageBtn,SIGNAL(clicked(bool)),this,SLOT(m_slot_BusManageBtn_Clicked()));
    connect(m_RouteManageBtn,SIGNAL(clicked(bool)),this,SLOT(m_slot_RouteManageBtn_Clicked()));
    connect(m_UserManageBtn,SIGNAL(clicked(bool)),this,SLOT(m_slot_UserManageBtn_Clicked()));
    m_AdminLE_1 = new QLineEdit();
    m_AdminLE_2 = new QLineEdit();
    m_BusLE_1 = new QLineEdit();
    m_BusLE_2 = new QLineEdit();
    m_BusLE_3 = new QLineEdit();
    m_BusLE_4 = new QLineEdit();
    m_BusLE_5 = new QLineEdit();
    m_BusLE_6 = new QLineEdit();
    m_RouteLE_1 = new QLineEdit();
    m_RouteLE_2 = new QLineEdit();
    m_RouteLE_3 = new QLineEdit();
    m_RouteLE_4 = new QLineEdit();
    m_UserLE_1 = new QLineEdit();
    m_UserLE_2 = new QLineEdit();
 
}
void Manage::m_slot_AdminManageBtn_Clicked()
{
    m_InfoTable->setVisible(true);
    m_LogInfo->setVisible(false);
    type = admin;
    m_InfoTable->clear();                   //清除所有可见数据(包括表头),行还在
    m_InfoTable->setRowCount(0);            //连行也清除掉
    int row = m_InfoTable->rowCount();      //获取表格中当前总行数
    m_InfoTable->setColumnCount(3);         //设置列数
    QStringList header;
    header<<tr("账号")<<tr("密码")<<tr("操作");
    m_InfoTable->setHorizontalHeaderLabels(header);
    QSqlQuery query = m_database.query(admin);
    while(query.next())
    {
        m_InfoTable->setRowCount(++row);//添加一行
        m_InfoTable->setRowHeight(row-1, 24);//设置行的高度
        for(int index = 0; index < 2; index++)
        {
            QTableWidgetItem *item = new QTableWidgetItem(query.value(index).toString());
            m_InfoTable->setItem(row-1, index, item);
        }
        QComboBox *combox_1 = new QComboBox(); // 下拉选择框控件
        combox_1->addItem("---");
        combox_1->addItem("修改");
        combox_1->addItem("删除");
        m_InfoTable->setCellWidget(row-1, 2, (QWidget*)combox_1);
        connect(combox_1,SIGNAL(currentIndexChanged(int)),this,SLOT(m_slot_Combox_1(int)));
    }
    m_InfoTable->setRowCount(++row);//添加一行
    m_InfoTable->setRowHeight(row-1, 24);//设置行的高度
    QComboBox *combox_2 = new QComboBox(); // 下拉选择框控件
    combox_2->addItem("---");
    combox_2->addItem("添加");
    m_InfoTable->setCellWidget(row-1, 2, (QWidget*)combox_2);
    connect(combox_2,SIGNAL(currentIndexChanged(int)),this,SLOT(m_slot_Combox_2(int)));
}
 
void Manage::m_slot_BusManageBtn_Clicked()
{
    m_InfoTable->setVisible(true);
    m_LogInfo->setVisible(false);
 
    type = bus;
 
    m_InfoTable->clear();                               //清除所有可见数据(包括表头),行还在
    m_InfoTable->setRowCount(0);                        //连行也清除掉
    int row = m_InfoTable->rowCount();                  //获取表格中当前总行数
    m_InfoTable->setColumnCount(7);                     //设置列数
    QStringList header;
    header<<tr("车牌号")<<tr("班次")<<tr("始发时间")<<tr("结束时间")<<tr("司机")<<tr("路线")<<tr("操作");
    m_InfoTable->setHorizontalHeaderLabels(header);
    QSqlQuery query = m_database.query(2);
    while(query.next())
    {
        m_InfoTable->setRowCount(++row);                //添加一行
        m_InfoTable->setRowHeight(row-1, 24);           //设置行的高度
        for(int index = 0; index < 6; index++)
        {
            QTableWidgetItem *item = new QTableWidgetItem(query.value(index).toString());
            m_InfoTable->setItem(row-1, index, item);
        }
        QComboBox *combox_1 = new QComboBox();          // 下拉选择框控件
        combox_1->addItem("---");
        combox_1->addItem("修改");
        combox_1->addItem("删除");
        m_InfoTable->setCellWidget(row-1, 6, (QWidget*)combox_1);
        connect(combox_1,SIGNAL(currentIndexChanged(int)),this,SLOT(m_slot_Combox_1(int)));
    }
    m_InfoTable->setRowCount(++row);                    //添加一行
    m_InfoTable->setRowHeight(row-1, 24);               //设置行的高度
    QComboBox *combox_2 = new QComboBox();              // 下拉选择框控件
    combox_2->addItem("---");
    combox_2->addItem("添加");
    m_InfoTable->setCellWidget(row-1, 6, (QWidget*)combox_2);
    connect(combox_2,SIGNAL(currentIndexChanged(int)),this,SLOT(m_slot_Combox_2(int)));
}
 
void Manage::m_slot_RouteManageBtn_Clicked()
{
    m_InfoTable->setVisible(true);
    m_LogInfo->setVisible(false);
 
    type = route;
 
    m_InfoTable->clear();//清除所有可见数据(包括表头),行还在
    m_InfoTable->setRowCount(0);//连行也清除掉
    int row = m_InfoTable->rowCount();//获取表格中当前总行数
    m_InfoTable->setColumnCount(5);    //设置列数
    QStringList header;
    header<<tr("班次")<<tr("始发地点")<<tr("途径地点")<<tr("终点站")<<tr("操作");
    m_InfoTable->setHorizontalHeaderLabels(header);
    QSqlQuery query = m_database.query(3);
    while(query.next())
    {
        m_InfoTable->setRowCount(++row);//添加一行
        m_InfoTable->setRowHeight(row-1, 24);//设置行的高度
        for(int index = 0; index < 6; index++)
        {
            QTableWidgetItem *item = new QTableWidgetItem(query.value(index).toString());
            m_InfoTable->setItem(row-1, index, item);
        }
        QComboBox *combox_1 = new QComboBox(); // 下拉选择框控件
        combox_1->addItem("---");
        combox_1->addItem("修改");
        combox_1->addItem("删除");
        m_InfoTable->setCellWidget(row-1, 4, (QWidget*)combox_1);
        connect(combox_1,SIGNAL(currentIndexChanged(int)),this,SLOT(m_slot_Combox_1(int)));
    }
    m_InfoTable->setRowCount(++row);//添加一行
    m_InfoTable->setRowHeight(row-1, 24);//设置行的高度
    QComboBox *combox_2 = new QComboBox(); // 下拉选择框控件
    combox_2->addItem("---");
    combox_2->addItem("添加");
    m_InfoTable->setCellWidget(row-1, 4, (QWidget*)combox_2);
    connect(combox_2,SIGNAL(currentIndexChanged(int)),this,SLOT(m_slot_Combox_2(int)));
}
 
void Manage::m_slot_UserManageBtn_Clicked()
{
    m_InfoTable->setVisible(true);
    m_LogInfo->setVisible(false);
 
    type = user;
    m_InfoTable->clear();//清除所有可见数据(包括表头),行还在
    m_InfoTable->setRowCount(0);//连行也清除掉
    int row = m_InfoTable->rowCount();//获取表格中当前总行数
    m_InfoTable->setColumnCount(3);    //设置列数
    QStringList header;
    header<<tr("用户账号")<<tr("剩余金额")<<tr("操作");
    m_InfoTable->setHorizontalHeaderLabels(header);
    QSqlQuery query = m_database.query(user);
    while(query.next())
    {
        m_InfoTable->setRowCount(++row);//添加一行
        m_InfoTable->setRowHeight(row-1, 24);//设置行的高度
        for(int index = 0; index < 2; index++)
        {
            QTableWidgetItem *item = new QTableWidgetItem(query.value(index).toString());
            m_InfoTable->setItem(row-1, index, item);
        }
        QComboBox *combox_1 = new QComboBox(); // 下拉选择框控件
        combox_1->addItem("---");
        combox_1->addItem("修改");
        combox_1->addItem("删除");
        m_InfoTable->setCellWidget(row-1, 2, (QWidget*)combox_1);
        connect(combox_1,SIGNAL(currentIndexChanged(int)),this,SLOT(m_slot_Combox_1(int)));
    }
    m_InfoTable->setRowCount(++row);//添加一行
    m_InfoTable->setRowHeight(row-1, 24);//设置行的高度
    QComboBox *combox_2 = new QComboBox(); // 下拉选择框控件
    combox_2->addItem("---");
    combox_2->addItem("添加");
    m_InfoTable->setCellWidget(row-1, 2, (QWidget*)combox_2);
    connect(combox_2,SIGNAL(currentIndexChanged(int)),this,SLOT(m_slot_Combox_2(int)));
}
 
void Manage::m_slot_Combox_1(int num)
{
    int column = m_InfoTable->columnCount()-1;
    QString msg;
    QSqlQuery query;
    switch (num) {
    case 1:
        for(int i=0;i<m_InfoTable->rowCount();i++)
        {
            QWidget *widget=m_InfoTable->cellWidget(i,column);
            QComboBox *combox=(QComboBox*)widget;
            msg = combox->currentText();
            if(msg == "修改")
            {
                tableKey = m_InfoTable->item(i,0)->text();
                switch (type) {
                case admin:
                    m_InfoTable->setCellWidget(i, 1, (QWidget*)m_AdminLE_2);
                    query = m_database.query(admin);
                    while(query.next())
                    {
                        if(query.value(0).toString() == tableKey)
                        {
                            m_AdminLE_2->setText(query.value(1).toString());
                            break;
                        }
                    }
                    break;
                case bus:
                    m_InfoTable->setCellWidget(i, 1, (QWidget*)m_BusLE_2);
                    m_InfoTable->setCellWidget(i, 2, (QWidget*)m_BusLE_3);
                    m_InfoTable->setCellWidget(i, 3, (QWidget*)m_BusLE_4);
                    m_InfoTable->setCellWidget(i, 4, (QWidget*)m_BusLE_5);
                    m_InfoTable->setCellWidget(i, 5, (QWidget*)m_BusLE_6);
                    query = m_database.query(bus);
                    while(query.next())
                    {
                        if(query.value(0).toString() == tableKey)
                        {
                            m_BusLE_2->setText(query.value(1).toString());
                            m_BusLE_3->setText(query.value(2).toString());
                            m_BusLE_4->setText(query.value(3).toString());
                            m_BusLE_5->setText(query.value(4).toString());
                            m_BusLE_6->setText(query.value(5).toString());
                            break;
                        }
                    }
                    break;
                case route:
                    m_InfoTable->setCellWidget(i, 1, (QWidget*)m_RouteLE_2);
                    m_InfoTable->setCellWidget(i, 2, (QWidget*)m_RouteLE_3);
                    m_InfoTable->setCellWidget(i, 3, (QWidget*)m_RouteLE_4);
                    query = m_database.query(route);
                    while(query.next())
                    {
                        if(query.value(0).toString() == tableKey)
                        {
                            m_RouteLE_2->setText(query.value(1).toString());
                            m_RouteLE_3->setText(query.value(2).toString());
                            m_RouteLE_4->setText(query.value(3).toString());
                            break;
                        }
                    }
                    break;
                case user:
                    m_InfoTable->setCellWidget(i, 1, (QWidget*)m_UserLE_2);
                    query = m_database.query(user);
                    while(query.next())
                    {
                        if(query.value(0).toString() == tableKey)
                        {
                            m_UserLE_2->setText(query.value(1).toString());
                            break;
                        }
                    }
                    break;
                default:
                    break;
                }
                QPushButton *configBtn = new QPushButton("修改"); // 确定按钮
                connect(configBtn,SIGNAL(clicked(bool)),this,SLOT(m_slot_config()));
                m_InfoTable->setCellWidget(i, column, (QWidget*)configBtn);
            }
        }
        break;
    case 2:
        //点击删除后,当前选项卡会变为“删除”,遍历表格,为“删除”项开始执行删除操作
        for(int i=0;i<m_InfoTable->rowCount();i++)
        {
            QWidget *widget=m_InfoTable->cellWidget(i,column);
            QComboBox *combox=(QComboBox*)widget;
            msg = combox->currentText();
            if(msg == "删除")
            {
                tableKey = m_InfoTable->item(i,0)->text();
                switch (type) {
                case admin:
                    m_database.deleteById(admin,tableKey);
                    m_slot_AdminManageBtn_Clicked();
                    break;
                case bus:
                   m_database.deleteById(bus,tableKey);
                   m_slot_BusManageBtn_Clicked();
                    break;
                case route:
                    m_database.deleteById(route,tableKey);
                    m_slot_RouteManageBtn_Clicked();
                    break;
                case user:
                    m_database.deleteById(user,tableKey);
                    m_slot_UserManageBtn_Clicked();
                    break;
                default:
                    break;
                }
            }
        }
        break;
    default:
        break;
    }
}
 
void Manage::m_slot_Combox_2(int num)
{
    int column = m_InfoTable->columnCount()-1;
    switch (num) {
    case 1:
        {
            int row = m_InfoTable->rowCount() - 1;//获取表格中当前总行数
            QPushButton *pushBtn = new QPushButton("添加"); // 确定按钮
            connect(pushBtn,SIGNAL(clicked(bool)),this,SLOT(m_slot_add()));
            m_InfoTable->setCellWidget(row, column, (QWidget*)pushBtn);
            switch (type) {
            case admin:
                m_InfoTable->setCellWidget(row, 0, (QWidget*)m_AdminLE_1);
                m_InfoTable->setCellWidget(row, 1, (QWidget*)m_AdminLE_2);
                break;
            case bus:
                m_InfoTable->setCellWidget(row, 0, (QWidget*)m_BusLE_1);
                m_InfoTable->setCellWidget(row, 1, (QWidget*)m_BusLE_2);
                m_InfoTable->setCellWidget(row, 2, (QWidget*)m_BusLE_3);
                m_InfoTable->setCellWidget(row, 3, (QWidget*)m_BusLE_4);
                m_InfoTable->setCellWidget(row, 4, (QWidget*)m_BusLE_5);
                m_InfoTable->setCellWidget(row, 5, (QWidget*)m_BusLE_6);
                break;
            case route:
                m_InfoTable->setCellWidget(row, 0, (QWidget*)m_RouteLE_1);
                m_InfoTable->setCellWidget(row, 1, (QWidget*)m_RouteLE_2);
                m_InfoTable->setCellWidget(row, 2, (QWidget*)m_RouteLE_3);
                m_InfoTable->setCellWidget(row, 3, (QWidget*)m_RouteLE_4);
                break;
            case user:
                m_InfoTable->setCellWidget(row, 0, (QWidget*)m_UserLE_1);
                m_InfoTable->setCellWidget(row, 1, (QWidget*)m_UserLE_2);
                break;
            default:
                break;
            }
        }
        break;
    default:
        break;
    }
}
 
void Manage::m_slot_add()
{
    switch (type) {
    case admin:
        m_database.insert(admin,m_AdminLE_1->text(),m_AdminLE_2->text());
        m_slot_AdminManageBtn_Clicked();
        break;
    case bus:
        m_database.insert(bus,m_BusLE_1->text(),m_BusLE_2->text(),m_BusLE_3->text(),m_BusLE_4->text(),m_BusLE_5->text(),
                          m_BusLE_6->text());
        m_slot_BusManageBtn_Clicked();
        break;
    case route:
        m_database.insert(route,m_RouteLE_1->text(),m_RouteLE_2->text(),m_RouteLE_3->text(),m_RouteLE_4->text());
        m_slot_RouteManageBtn_Clicked();
        break;
    case user:
        m_database.insert(user,m_UserLE_1->text(),m_UserLE_2->text());
        m_slot_UserManageBtn_Clicked();
        break;
    default:
        break;
    }
}
 
//上车后资金的减少
void Manage::updateMoney(int iLen,QByteArray pic)
{
    QString msg(pic);
    QString userid = msg.section(":",1,1);
    int money = msg.section(":",2,2).toInt();
    QDateTime localTime = QDateTime::currentDateTime();
    QString currentTime = localTime.toString("yyyy-MM-dd hh:mm:ss");
    QSqlQuery query = m_database.query(user);
    while(query.next())
    {
        if(query.value(0).toString()==userid)
        {
            QFile file("logfile.log");
            file.open(QIODevice::ReadWrite | QIODevice::Append | QIODevice::Text);
            QTextStream out(&file);
            out << currentTime << "|User:" << userid << "|Money:" << QString::number(money) << endl;
            file.close();
 
            money = query.value(1).toString().toInt() - money;
            m_database.updateById(user,userid,QString::number(money));
        }
    }
}
 
void Manage::m_slot_config()
{
    switch (type) {
    case admin:
        m_database.updateById(admin,tableKey,m_AdminLE_2->text());
        m_slot_AdminManageBtn_Clicked();
        break;
    case bus:
        m_database.updateById(bus,tableKey,m_BusLE_2->text(),m_BusLE_3->text(),m_BusLE_4->text(),m_BusLE_5->text(),
                          m_BusLE_6->text());
        m_slot_BusManageBtn_Clicked();
        break;
    case route:
        m_database.updateById(route,tableKey,m_RouteLE_2->text(),m_RouteLE_3->text(),m_RouteLE_4->text());
        m_slot_RouteManageBtn_Clicked();
        break;
    case user:
        m_database.updateById(user,tableKey,m_UserLE_2->text());
        m_slot_UserManageBtn_Clicked();
        break;
    default:
        break;
    }
}
 
 

相关文章: