基于Qt的工资管理系统

本系统主要实现了职工工资管理系统的基本功能,包括录入、注册、登录、搜索、显示数据、修改、求取总工资、求取平均工资等功能。本软件有登录界面、注册界面、主界面、录入界面四个界面。

额。。。。因为时间比价匆忙,所以我主要介绍一下这个系统的比较核心的部分吧。。。。

1、搜索功能、登录功能的实现:如何利用数据库如何准确的获取数据
1、.record().indexOf() :当查询指向一个有效的行(该行有数据)时,则用该行的值来填充、记录。因而用.record()来确定行,indexOf()来确定项,从而定位每一行中的每一项。
注:若需查询到的值提取出来,则用value。
2、query.next() :遍历表格查询检索结果中的下一条记录(如果可用),并将查询定位到检索到的记录上。

   void Widget::search ()
    {
        //建立数据库连接
        this->db=QSqlDatabase::addDatabase ("QSQLITE");
        db.setDatabaseName ("first.db");
    
    //判断是否打开数据库
    bool ok;
    ok=db.open ();
    if(!ok)
    {qDebug()<<"数据库没打开";}
    else
    {
        qDebug()<<"数据库打开";
        /***执行数据库语言按顺序打开表格(由于需用indexOf语句)***/
    QSqlQuery query("select id,name,base_pay,position_pay,job_subsidies,medical_insurance,accumulation_fund from emplayee order by id");
    model->setQuery ("select id,name,base_pay,position_pay,job_subsidies,medical_insurance,accumulation_fund from emplayee order by id");
      int x=query.record ().indexOf ("name");//record()确定行,indexOf确定项
      int y=query.record ().indexOf ("id");
      int z=query.record ().indexOf ("base_pay");
      int a=query.record ().indexOf ("position_pay");
      int b=query.record ().indexOf ("job_subsidies");
      int c=query.record ().indexOf ("medical_insurance");
      int d=query.record ().indexOf ("accumulation_fund");
    int j=0,k=0;
    int sum,pay1,pay2,pay3,pay4,pay5;
   while(query.next ())//遍历表格
       {
       k++;
        if(ui->lineEdit_search->text ()==query.value (x).toString ())  //文本与name字段内容作比较,toString为转换为字符串型
            {
            j=1;
           qDebug()<<"找到了";
           ui->lineEdit_ID->setText (query.value (y).toString ());  //将找到行的其余项内容设置到对应Ui的lineEdit
           ui->lineEdit_name->setText (query.value (x).toString ());
           ui->lineEdit_base_pay->setText (query.value (z).toString ());
           ui->lineEdit_position_pay->setText (query.value (a).toString ());
           ui->lineEdit_job_subsidies->setText (query.value (b).toString ());
           ui->lineEdit_medical_insurance->setText (query.value (c).toString ());
           ui->lineEdit_accumulation_fund->setText (query.value (d).toString ());

           //将每个字段的项加起来
           pay1 = query.value (z).toInt ();
           pay2 = query.value (a).toInt ();
           pay3 = query.value (b).toInt ();
           pay4 = query.value (c).toInt ();
           pay5 = query.value (d).toInt ();
           sum = pay1 + pay2 + pay3 + pay4 + pay5;

           QString sum1;
           sum1 = QString::number (sum);
           ui->lineEdit_sum->setText (sum1);

            break;
            }
        }
    if(j==1)
    {
         qDebug()<<"找到了";
         ui->lineEdit_ID->setEnabled (false); //关闭编辑框使能
         ui->lineEdit_name->setEnabled (false);
         ui->lineEdit_base_pay->setEnabled (false);
         ui->lineEdit_position_pay->setEnabled (false);
         ui->lineEdit_job_subsidies->setEnabled (false);
         ui->lineEdit_medical_insurance->setEnabled (false);
         ui->lineEdit_accumulation_fund->setEnabled (false);

    }
    else
    {
        QMessageBox::information (this,"提示","没有该员工的信息");
        qDebug()<<"没有找到";
    }
  }

}

2、在Qt中运用数据库,即:打开数据库。
额。。。。顺序有点倒。。。。见谅。。。哈哈哈
解决方法:
1、在项目中加入数据库的应用,首先要在.pro文件中加入sql。

QT       += sql

2、连接数据库,判断数据库是否连接成功、是否打开。

 /***建立数据库连接***/
    this->db=QSqlDatabase::addDatabase ("QSQLITE");
    db.setDatabaseName ("first.db");

    bool ok;
    ok=db.open ();
    if(!ok)
    {
        QMessageBox::information (this,"错误","数据库打开失败");
        qDebug()<<"数据库打开失败";
        qDebug()<

3、功能演示
基于Qt的工资管理系统_第1张图片
基于Qt的工资管理系统_第2张图片
下面是主界面,显示数据:进入主界面后 → 点击“显示数据”按钮
基于Qt的工资管理系统_第3张图片
搜索功能下:
基于Qt的工资管理系统_第4张图片
额。。。好吧,大概就是这个样子了。
注:
然后附上源码,这个是有Debug模式与Release模式的,这两个模式简单说明一下,Debug模式即是程序员的编译模式,占用内存较大,编译时间长,不易于用户使用。所以一般程序员编译好后,会将其转成Release模式的程序,这个才是易于用户使用的模式,内存小,启动快。这个过程中需要注意的是,第一次在Release模式的编译后,会出现运行问题,主要问题在于Release会生成一个新的工程文件,新的同名的.db文件(即数据库文件),而这个.db文件是空的,所以要解决这个问题的话,需要用Debug模式下生成的.db文件替换掉Release模式下的.db后再运行Release模式,问题就解决了。
Qt_工资管理系统

你可能感兴趣的:(Qt,Qt)