开发一个员工信息管理系统
一、项目具体要求:
1、用qt开发界面,数据库用QSqlite 数据库文件名:demostudent.db
2、通过界面能够查看到数据库中员工信息表中内容,包括员工姓名、年龄、性别、
成绩、生日、基本工资和照片。
3、能够查看指定记录,修改和编辑员工信息
4、员工信息中包含照片,界面上可以显示学员照片并且可以修改学员照片
5、通过界面可增加员工记录,可以删除指定的学员记录

二、项目界面展示
1、主界面:通过openDB按钮打开指定的数据库文件,将数据库表中的学员信息显示在主界面中tableView中。

其它的按钮依次是 插入按钮、编辑当前记录和删除指定记录
点击upSalary按钮,所有学员的基本工资增加1000

2、编辑学员信息的界面
单击编辑按钮或者双击某一个记录,则弹出如下编辑窗口
编辑窗口通过相关控件显示指定的记录各个字段的数据,包括照片信息
修改相关数据之后,点击ok按钮之后,则新数据更新到数据库中
通过setPhoto和clearPhoto两个按钮可以设置和修改照片

3、增加学员信息的界面
通过界面相关控件录入员工的信息,包括设置照片。
点击ok按钮,将学员信息插入到数据库表中。

三、项目代码实现:
1、项目中主要为两个类文件,描述界面的类文件mainWidget
和描述插入和编辑界面的类文件wDialogData
2、mainWidget类文件代码如下:
mainWidget.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>#include <QSqlDatabase>#include <QSqlQueryModel>#include <QItemSelectionModel>namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();private slots:void on_actOpenDB_triggered();void on_actInsert_triggered();void on_actEdit_triggered();void on_tableView_doubleClicked(const QModelIndex &index);void on_actDelete_triggered();void on_actUpsalary_triggered();private:Ui::MainWindow *ui;QSqlDatabase db;QSqlQueryModel *theModel;QItemSelectionModel *theSelection;void openTable();void updateRecord(int recNo);
};#endif // MAINWINDOW_H

mainWidget.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "wdialogdata.h"
#include <QFileDialog>
#include <QMessageBox>
#include <QDebug>
#include <QSqlError>
#include <QSqlRecord>
#include <QSqlQuery>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::openTable()
{theModel = new QSqlQueryModel(this);theSelection = new QItemSelectionModel(theModel);theModel->setQuery("select id,name,age,sex,birthday,salary,photo from stu");if(theModel->lastError().isValid()){QMessageBox::information(this,"error","select error\n" + theModel->lastError().text(),QMessageBox::Ok,QMessageBox::NoButton);return;}theModel->setHeaderData(0,Qt::Horizontal,"工号");theModel->setHeaderData(1,Qt::Horizontal,"姓名");theModel->setHeaderData(2,Qt::Horizontal,"年龄");theModel->setHeaderData(3,Qt::Horizontal,"性别");theModel->setHeaderData(4,Qt::Horizontal,"生日");theModel->setHeaderData(5,Qt::Horizontal,"工资");ui->tableView->setModel(theModel);ui->tableView->setColumnHidden(6,true);ui->tableView->setSelectionModel(theSelection);ui->actOpenDB->setEnabled(false);ui->actInsert->setEnabled(true);ui->actDelete->setEnabled(true);ui->actEdit->setEnabled(true);}void MainWindow::updateRecord(int recNo)
{QSqlRecord curRec = theModel->record(recNo);//int empNo = curRec.value("id").toInt();QSqlQuery query;WDialogData *dataDialog  = new WDialogData(this);dataDialog->setUPdateRecord(curRec);int ret = dataDialog->exec();if(ret == QDialog::Accepted){QSqlRecord recData = dataDialog->getRecord();query.prepare("update stu set name = :name,age = :age ,sex = :sex,birthday = :birthday,salary = :salary,photo = :photo where id = :id");query.bindValue(":id",recData.value("id"));query.bindValue(":name",recData.value("name"));query.bindValue(":age",recData.value("age"));query.bindValue(":sex",recData.value("sex"));query.bindValue(":birthday",recData.value("birthday"));query.bindValue(":salary",recData.value("salary"));query.bindValue(":photo",recData.value("photo"));if(!query.exec())QMessageBox::critical(this,"error","update error\n" + query.lastError().text(),QMessageBox::Ok,QMessageBox::NoButton);elsetheModel->query().exec();}delete dataDialog;
}void MainWindow::on_actOpenDB_triggered()
{QString aFile = QFileDialog::getOpenFileName(this,"select database file","","sqlite(*.db *.db3)");if(aFile.isEmpty()){return;}db = QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName(aFile);qDebug()<<aFile;if(!db.open()){QMessageBox::warning(this,"error","open database error",QMessageBox::Ok,QMessageBox::NoButton);return;}openTable();}void MainWindow::on_actInsert_triggered()
{QSqlQuery query;query.exec("select * from stu where id = -1");QSqlRecord curRec = query.record();curRec.setValue("id",theModel->rowCount() + 2000);qDebug()<<curRec.value("id").toInt();WDialogData *dataDialog = new WDialogData(this);dataDialog->setInsertRecord(curRec);int ret = dataDialog->exec();if(ret == QDialog::Accepted){QSqlRecord recData = dataDialog->getRecord();query.prepare("insert into stu(id,name,age,sex,birthday,salary,photo) values(:id,:name,:age,:sex,:birthday,:salary,:photo)");query.bindValue(":id",recData.value("id"));query.bindValue(":name",recData.value("name"));query.bindValue(":age",recData.value("age"));query.bindValue(":sex",recData.value("sex"));query.bindValue(":salary",recData.value("salary"));query.bindValue(":photo",recData.value("photo"));query.bindValue(":birthday",recData.value("birthday"));if(!query.exec()){QMessageBox::critical(this,"error","insert error\n" + query.lastError().text(),QMessageBox::Ok,QMessageBox::NoButton);}elsetheModel->setQuery("select id,name,age,sex,birthday,salary,photo from stu");}delete dataDialog;}void MainWindow::on_actEdit_triggered()
{int curRecNo = theSelection->currentIndex().row();updateRecord(curRecNo);
}void MainWindow::on_tableView_doubleClicked(const QModelIndex &index)
{int curRecNo = index.row();updateRecord(curRecNo);
}void MainWindow::on_actDelete_triggered()
{int curRecord = theSelection->currentIndex().row();QSqlRecord curRec = theModel->record(curRecord);if(curRec.isEmpty())return;int empNo = curRec.value("id").toInt();QSqlQuery query;query.prepare("delete from stu where id = :id");query.bindValue(":id",empNo);if(!query.exec())QMessageBox::critical(this,"error","delete error\n" + query.lastError().text(),QMessageBox::Ok,QMessageBox::NoButton);elsetheModel->query().exec();}void MainWindow::on_actUpsalary_triggered()
{QSqlQuery qryEmpList;qryEmpList.exec("select id,salary from stu order by id");qryEmpList.first();QSqlQuery qryUpdate;qryUpdate.prepare("update stu set salary = :salary where id = :id");while (qryEmpList.isValid()) {int empId = qryEmpList.value("id").toInt();float salary = qryEmpList.value("salary").toFloat();salary = salary + 1000;qryUpdate.bindValue(":id",empId);qryUpdate.bindValue(":salary",salary);qryUpdate.exec();if(!qryEmpList.next())break;}theModel->query().exec();QMessageBox::information(this,"notice","update salary finish",QMessageBox::Ok,QMessageBox::NoButton);
}

3、wDialogData类文件代码如下:
wDialogData.h

 #ifndef WDIALOGDATA_H
#define WDIALOGDATA_H#include <QDialog>
#include <QSqlRecord>namespace Ui {
class WDialogData;
}class WDialogData : public QDialog
{Q_OBJECTpublic:explicit WDialogData(QWidget *parent = 0);~WDialogData();void setUPdateRecord(QSqlRecord &recData);void setInsertRecord(QSqlRecord &recData);QSqlRecord getRecord();
private:QSqlRecord mRecord;
private:Ui::WDialogData *ui;
private slots:void on_setPhoto_clicked();void on_clearPhoto_clicked();
};#endif // WDIALOGDATA_H

wDialogData.cpp

#include "wdialogdata.h"
#include "ui_wdialogdata.h"
#include <QDebug>
#include <QDate>
#include <QFileDialog>WDialogData::WDialogData(QWidget *parent) :QDialog(parent),ui(new Ui::WDialogData)
{ui->setupUi(this);}WDialogData::~WDialogData()
{delete ui;
}void WDialogData::setUPdateRecord(QSqlRecord &recData)
{mRecord = recData;ui->spinEmpNo->setEnabled(false);setWindowTitle("update");ui->spinEmpNo->setValue(recData.value("id").toInt());ui->editName->setText(recData.value("name").toString());ui->spinAge->setValue(recData.value("age").toInt());QString strDate =  recData.value("birthday").toString();ui->EditBirth->setDate(QDate::fromString(strDate,"yyyy-MM-dd"));ui->comboSex->setCurrentText(recData.value("sex").toString());ui->spinSalary->setValue(recData.value("salary").toInt());QVariant va = recData.value("photo");if(!va.isValid())ui->labPhoto->clear();else{QByteArray data = va.toByteArray();QPixmap pic;pic.loadFromData(data);ui->labPhoto->setPixmap(pic.scaledToWidth(ui->labPhoto->size().width()));}
}void WDialogData::setInsertRecord(QSqlRecord &recData)
{mRecord = recData;qDebug()<<recData.value("id").toInt();ui->spinEmpNo->setEnabled(true);setWindowTitle("insert a new record");ui->spinEmpNo->setValue(recData.value("id").toInt());
}QSqlRecord WDialogData::getRecord()
{mRecord.setValue("id",ui->spinEmpNo->value());mRecord.setValue("name",ui->editName->text());mRecord.setValue("sex",ui->comboSex->currentText());mRecord.setValue("age",ui->spinAge->value());mRecord.setValue("birthday",ui->EditBirth->date());mRecord.setValue("salary",ui->spinSalary->value());return mRecord;}void WDialogData::on_setPhoto_clicked()
{QString aFile = QFileDialog::getOpenFileName(this,"select photo","","photo(*.jpg)");if(aFile.isEmpty())return;QByteArray data;QFile *file = new QFile(aFile);file->open(QIODevice::ReadOnly);data = file->readAll();file->close();mRecord.setValue("photo",data);QPixmap pic;pic.loadFromData(data);ui->labPhoto->setPixmap(pic.scaledToWidth(ui->labPhoto->size().width()));}void WDialogData::on_clearPhoto_clicked()
{ui->labPhoto->clear();mRecord.setNull("photo");
}

qt项目:员工信息管理系统相关推荐

  1. Java项目员工信息管理系统

    在Java SE中,对IO流与集合的操作在应用中比较重要.接下来,我以一个小型项目的形式,演示IO流.集合等知识点在实践中的运用. 该项目名称为"员工信息管理系统"(或" ...

  2. SSM整合项目—员工信息管理系统

    文章目录 项目源码资料获取: 项目基本信息 编写说明 一.问题描述及分析 二.功能模块 三.主要算法或流程描述 四.系统使用说明 五.问题及解决办法 六.项目总结 项目源码资料获取: SSM员工信息管 ...

  3. java ee 员工管理系统,fb3492 javaEE_原生Servlet_MySql企业员工信息管理系统的设计与实现,java源码含论文与答辩PPT...

    fb3492 javaEE_原生Servlet_MySql企业员工信息管理系统的设计与实现,java源码含论文与答辩PPT 存储:百度网盘 --/资源热下载站/VIP源码/Java源码/fb3492 ...

  4. 基于SSH的员工信息管理系统

    员工信息管理系统主要功能如下: (1)员工方面: ①人事管理:能够看到自己的基本信息,对自己的合同进行下载,可以看公司的培训信息: ②招聘管理:查看企业的招聘信息,包括应聘者: ③考勤管理:查看自己的 ...

  5. Eclipse+Java+Swing+Mysql实现员工信息管理系统

    目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 4.数据库 二.系统展示 1.登录系统 2.主页面 3.部门管理 4.职位管理 5.员工管理 三.部分代码 AdminDao.java D ...

  6. 【java毕业设计】基于javaEE+原生Servlet+MySql的企业员工信息管理系统设计与实现(毕业论文+程序源码)——企业员工信息管理系统

    基于javaEE+原生Servlet+MySql的企业员工信息管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于javaEE+原生Servlet+MySql的企业员工信息管理系统设计 ...

  7. Javaweb实现员工信息管理系统

    员工信息管理系统 一.项目介绍 1.项目用到的技术栈 开发工具:idea 语言:java.js.html+ajax 数据库:MySQL 服务器:Tomcat 框架:mybatis.jQuery.lay ...

  8. 数据库课程设计-员工信息管理系统(基于python和MySQL实现)

    一.项目地址 具体项目相关信息可移步至我的Github查看,那里有整套项目文件以及课程设计报告等,仅供交流学习和参考,如有错误之处请多多指正哦. 二.系统定义 随着计算机技术的不断发展,计算机作为知识 ...

  9. JavaWeb EMS员工信息管理系统(servlet+jsp版本)

    EMS员工信息管理系统 MVC的设计模式 M层:Model模型层,负责业务,封装数据库的相关操作 Jdbc+javabean+方法-dao工厂 util DBUtil.java package uti ...

最新文章

  1. miniui文件上传 linux,MINIUI grid学习笔记
  2. object转换成xml
  3. 最大概率法分词及性能测试
  4. java大string排序_java中字符串排序,String 转化为int比较大小
  5. python保存表格_python怎么把数据保存为excel
  6. ustc小道消息20220120
  7. 键盘按下某键 停止运行java_实现按下一个键执行操作/松开一个键停止操作
  8. Cache相关基本概念理解
  9. Qt Creator添加套件
  10. 神了!用命令行管理你的 GitHub 项目,不必再开网页!
  11. Windows Azure 真实案例:CCH 财政服务独立软件开发商(ISV)通过托管服务获得了灵活性并节省成本...
  12. Dubbo学习笔记(二)
  13. linux 标准函数注释,Linux 驱动程序中相关函数注释汇总(跟新中)
  14. CF1110D Jongmah
  15. Linux 常见命令操作(杀死全部screen)
  16. python 移动文件语句_python移动文件
  17. SQL Server 2008 R2 是免费版下载地址
  18. eclipse、myeclipse大代码格式化 (自动对齐) 功能,太长的行会被强制换行
  19. 系统集成项目管理工程师11《项目风险管理》
  20. 计算机未响应怎样解决方案,电脑提示Internet Explorer未响应怎么办?解决IE浏览器未响应的解决方法...

热门文章

  1. JS配合CSS3实现动画和拖动小星星小Demo
  2. 显卡核心 短路 原因是什么?
  3. 用python画树_python画树
  4. 中山大学计算机技术考,中山大学(专业学位)计算机技术考研难吗
  5. 怎么学习用python编程序
  6. Volcano火山:容器与批量计算的碰撞
  7. cad抛物线曲线lisp_如何用CAD画正弦曲线????有lisp的最好。。。谢谢了
  8. Windows电脑如何更改账户类型
  9. 直播预告:如何极速、低成本构建数字孪生系统
  10. 线上linux在线linux,linux下追查线上问题常用命令