基于Qt的工资管理系统

编程入门 行业动态 更新时间:2024-10-10 15:24:14

基于Qt的<a href=https://www.elefans.com/category/jswz/34/1769673.html style=工资管理系统"/>

基于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的lineEditui->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()<<db.lastError ().text ();}else{qDebug()<<"数据库打开成功";}
}

3、功能演示


下面是主界面,显示数据:进入主界面后 → 点击“显示数据”按钮

搜索功能下:

额。。。好吧,大概就是这个样子了。
注:
然后附上源码,这个是有Debug模式与Release模式的,这两个模式简单说明一下,Debug模式即是程序员的编译模式,占用内存较大,编译时间长,不易于用户使用。所以一般程序员编译好后,会将其转成Release模式的程序,这个才是易于用户使用的模式,内存小,启动快。这个过程中需要注意的是,第一次在Release模式的编译后,会出现运行问题,主要问题在于Release会生成一个新的工程文件,新的同名的.db文件(即数据库文件),而这个.db文件是空的,所以要解决这个问题的话,需要用Debug模式下生成的.db文件替换掉Release模式下的.db后再运行Release模式,问题就解决了。
Qt_工资管理系统

更多推荐

基于Qt的工资管理系统

本文发布于:2024-02-07 13:51:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1757268.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:工资管理系统   Qt

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!