qt mysql药品订购系统_基于RFID,QT,MYSQL开发的医疗电子病历系统

本文介绍了使用RFID技术、QT界面和MYSQL数据库开发的一个简单的医疗电子病历系统。系统功能包括通过RFID读取病人信息、存储和检索数据、查询与修改患者信息,以及实现计费功能。此外,讨论了物联网技术在医疗领域的应用,如感知技术中的RFID,强调电子病历系统的便捷性和安全性。
摘要由CSDN通过智能技术生成

没事做,跟着模版随便做了一个电子病历系统,功能很简陋,界面也不太好看,各位大神看到别见怪啊~

功能包括有通过RFID读写器读取S50卡中的卡号把病人详细信息存入数据库、通过RFID读写器读取S50卡把病人的详细信息从数据库中进行读取并显示到QT程序界面上、在QT程序中进行病人信息的查询,包括修改与删除、计费功能(通过读取卡号,可进行对账户的充值与扣费)

随着物联网技术的成熟,物联网可以应用到各方各面,无论家居,农业,医疗等等都可以利用到物联网技术。而物联网技术的核心技术有:应用技术、网络技术和感知技术。我们所设计的系统正正利用了物联网的核心技术:感知技术中的RFID。在以前,病人去医院看病必须带上病历,而纸质不易保存,易潮,易脏。于是我们设计的电子病历既解决了纸质病历的问题,更加在此中增加了结算和电子钱包的功能。

电子病历是高质量,更快捷,更方便的医疗系统,电子病历不仅可以用于病人的随身携带,而且只需要带一张不到20克的卡,就可以不带钱去看医生。电子病历系统更加合理化,信息化,对医院也便于统计和整理病人数据。所以电子病历对医院和病人都有着莫大的好处,电子病历在当今社会是发展趋势。

1.  用户:

(1)       随身携带:轻便,简单。

(2)       电子钱包:预存费用,方便结算。

2.  医生:

(1)       过往病史:方便医生对症下药,对过往病史、过敏病史清楚了解。

(2)       记录病历:写入数据库,节约资源。

3.  管理员:

(1)       用户管理:用户的增加,删除,修改,查询。

(2)       余额管理:用户余额的增加与减少。

管理员登陆相关代码:

dialog.h:

#ifndef DIALOG_H

#define DIALOG_H

#include

namespace Ui {

class Dialog;

}

class Dialog : public QDialog

{

Q_OBJECT

public:

explicit Dialog(QWidget *parent = 0);

~Dialog();

private slots:

void on_login_clicked();

void on_cancel_clicked();

private:

Ui::Dialog *ui;

};

#endif // DIALOG_H

dialog.cpp

#include "dialog.h"

#include "ui_dialog.h"

#include"QMessageBox"

#include"mainwindow.h"

Dialog::Dialog(QWidget *parent) :

QDialog(parent),

ui(new Ui::Dialog)

{

ui->setupUi(this);

}

Dialog::~Dialog()

{

delete ui;

}

void Dialog::on_login_clicked()

{

if(ui->username->text().trimmed()=="admin" && ui->password->text().trimmed()=="admin")

{

MainWindow *m=new MainWindow;

m->show();

this->hide();

}

else

{

QMessageBox::critical(this,"error",tr("用户名或密码出错!"));

}

}

void Dialog::on_cancel_clicked()

{

this->close();

}

RFID读卡界面相关代码:

reader.h

#ifndef    READER_H

#define READER_H

//#include "function.h"

#include

#include

#include "function.h"

class Reader

{

public:

Reader(QWidget *parent);

~Reader();

bool LoadDll();

bool CloseDll();

MF_Read_Func MF_Read;

MF_Write_Func MF_Write;

MF_InitValue_Func MF_InitValue;

MF_Dec_Func MF_Dec;

MF_Inc_Func MF_Inc;

MF_Halt_Func MF_Halt;

MF_Getsnr_Func MF_Getsnr;

ControlBuzzer_Func ControlBuzzer;

ControlLED_Func ControlLED;

GetVersionNum_Func GetVersionNum;

SetSerNum_Func SetSerNum;

GetSerNum_Func GetSerNum;

TypeB_Request_Func TypeB_Request;

TYPEB_SFZSNR_Func TYPEB_SFZSNR;

TypeB_TransCOS_Func TypeB_TransCOS;

UL_Request_Func UL_Request;

UL_HLRead_Func UL_HLRead;

UL_HLWrite_Func UL_HLWrite;

ISO15693_Inventory_Func ISO15693_Inventory;

ISO15693_Read_Func ISO15693_Read;

ISO15693_Write_Func ISO15693_Write;

ISO15693_GetSysInfo_Func ISO15693_GetSysInfo;

ISO15693_Lock_Func ISO15693_Lock;

ISO15693_Select_Func ISO15693_Select;

ISO15693_WriteAFI_Func ISO15693_WriteAFI;

ISO15693_LockAFI_Func ISO15693_LockAFI;

ISO15693_WriteDSFID_Func ISO15693_WriteDSFID;

ISO15693_LockDSFID_Func ISO15693_LockDSFID;

ISO15693_GetMulSecurity_Func ISO15693_GetMulSecurity;

private:

QLibrary *functionLib;

int DeviceAddress;

};

#endif

reader.cpp

#include "reader.h"

#include

Reader::Reader(QWidget *parent)

{

DeviceAddress = 0;

functionLib = new QLibrary("function.dll");

if (!LoadDll())

{

QMessageBox::critical(parent,"Error",QString::fromLocal8Bit("��ȡfunction.dllʧ��"));

}

}

Reader::~Reader()

{

CloseDll();

}

bool Reader::LoadDll()

{

if ( !functionLib->load() )

{

qDebug()<

return false;

}

qDebug()<

MF_Read        = (MF_Read_Func)functionLib->resolve("MF_Read");

MF_Write       = (MF_Write_Func)functionLib->resolve("MF_Write");

MF_InitValue   = (MF_InitValue_Func)functionLib->resolve("MF_InitValue");

MF_Dec         = (MF_Dec_Func)functionLib->resolve("MF_Dec");

MF_Inc         = (MF_Inc_Func)functionLib->resolve("MF_Inc");

MF_Halt        = (MF_Halt_Func)functionLib->resolve("MF_Halt");

MF_Getsnr      = (MF_Getsnr_Func)functionLib->resolve("MF_Getsnr");

ControlLED           = (ControlLED_Func)functionLib->resolve("ControlLED");

ControlBuzzer        = (ControlBuzzer_Func)functionLib->resolve("ControlBuzzer");

GetVersionNum        = (GetVersionNum_Func)functionLib->resolve("GetVersionNum");

SetSerNum            = (SetSerNum_Func)functionLib->resolve("SetSerNum");

GetSerNum            = (GetSerNum_Func)functionLib->resolve("GetSerNum");

TypeB_Request        = (TypeB_Request_Func)functionLib->resolve("TypeB_Request");

TYPEB_SFZSNR         = (TYPEB_SFZSNR_Func)functionLib->resolve("TYPEB_SFZSNR");

TypeB_TransCOS          = (TypeB_TransCOS_Func)functionLib->resolve("TypeB_TransCOS");

ISO15693_Inventory            = (ISO15693_Inventory_Func)functionLib->resolve("ISO15693_Inventory");

ISO15693_Read                   = (ISO15693_Read_Func)functionLib->resolve("ISO15693_Read");

ISO15693_Write                  = (ISO15693_Write_Func)functionLib->resolve("ISO15693_Write");

ISO15693_GetSysInfo   = (ISO15693_GetSysInfo_Func)functionLib->resolve("ISO15693_GetSysInfo");

ISO15693_Lock                   = (ISO15693_Lock_Func)functionLib->resolve("ISO15693_Lock");

ISO15693_Select                 = (ISO15693_Select_Func)functionLib->resolve("ISO15693_Select");

ISO15693_WriteAFI            = (ISO15693_WriteAFI_Func)functionLib->resolve("ISO15693_WriteAFI");

ISO15693_LockAFI             = (ISO15693_LockAFI_Func)functionLib->resolve("ISO15693_LockAFI");

ISO15693_WriteDSFID = (ISO15693_WriteDSFID_Func)functionLib->resolve("ISO15693_WriteDSFID");

ISO15693_LockDSFID  = (ISO15693_LockDSFID_Func)functionLib->resolve("ISO15693_LockDSFID");

ISO15693_GetMulSecurity=(ISO15693_GetMulSecurity_Func)functionLib->resolve("ISO15693_GetMulSecurity");

UL_Request           = (UL_Request_Func)functionLib->resolve("UL_Request");

UL_HLRead            = (UL_HLRead_Func)functionLib->resolve("UL_HLRead");

UL_HLWrite           = (UL_HLWrite_Func)functionLib->resolve("UL_HLWrite");

if(//14443A

MF_Read        == NULL       ||

MF_Write            == NULL       ||

MF_InitValue       == NULL       ||

MF_Dec              == NULL       ||

MF_Inc               == NULL       ||

MF_Getsnr          == NULL       ||

MF_Halt             == NULL       ||

SetSerNum            == NULL       ||

GetSerNum           == NULL       ||

ControlLED           == NULL       ||

ControlBuzzer        == NULL       ||

GetVersionNum      == NULL       ||

TypeB_Request      == NULL       ||

TYPEB_SFZSNR   == NULL       ||

TypeB_TransCOS   == NULL       ||

ISO15693_Inventory     == NULL ||

ISO15693_Read            == NULL||

ISO15693_Write           == NULL ||

ISO15693_GetSysInfo == NULL ||

ISO15693_Lock            == NULL ||

ISO15693_Select          == NULL ||

ISO15693_WriteAFI     == NULL ||

ISO15693_LockAFI      == NULL ||

ISO15693_WriteDSFID == NULL ||

ISO15693_LockDSFID  == NULL ||

UL_Request                 == NULL  ||

UL_HLRead                 == NULL  ||

UL_HLWrite                 == NULL)

{

qDebug()<

return false;

}

qDebug()<

return true;

}

bool Reader::CloseDll()

{

if(functionLib)

{

functionLib->unload();

return true;

}

return false;

}

showsick.h

#ifndef SHOWALLSICK_H

#define SHOWALLSICK_H

#include

#include

namespace Ui {

class ShowAllSick;

}

class ShowAllSick : public QDialog

{

Q_OBJECT

public:

explicit ShowAllSick(QWidget *parent = 0);

~ShowAllSick();

void connectMySql();

private slots:

void on_delete_2_clicked();

void on_update_clicked();

void on_insert_clicked();

void gettotalrecords();

void showdata();

void on_select_clicked();

void on_first_clicked();

void on_next_clicked();

void on_pre_clicked();

void on_last_clicked();

void on_go_clicked();

private:

Ui::ShowAllSick *ui;

QSqlTableModel *tablemodel;

int page;

int records;

int totalrecords;

int totalpages;};

#endif // SHOWALLSICK_H

showsick.cpp

#include "showsick.h"

#include "ui_showsick.h"

#include

showsick::showsick(QWidget *parent) :

QDialog(parent),

ui(new Ui::showsick)

{

ui->setupUi(this);

//timer read rfid

timer=new QTimer;

connect(timer,SIGNAL(timeout()),this,SLOT(readcardid()));

//rfid

cardReader = new Reader(this);

//mysql

connectMySql();

}

showsick::~ showsick ()

{

delete ui;

}

void showsick::on_read_clicked()

{

if(ui->id->text()=="")

{

timer->start(1000);

ui->read->setEnabled(false);

}

QSqlQuery query;

query.prepare("select no,sex,intro intro,image from tbl_sick where id=?");

query.addBindValue(ui->id->text());

query.exec();

if(query.next())

{

ui->no->setText(query.value(0).toString());

ui->sex->setText(query.value(1).toString());

ui->intro->setText(query.value(2).toString());

QPixmap photo;

photo.loadFromData(query.value(3).toByteArray());

ui->img->setPixmap(photo.scaled(ui->img->size()));

}}

void showsick::on_stop_clicked()

{

timer->stop();

ui->read->setEnabled(true);

}

//读取卡号

void showsick::readcardid()

{

unsigned int cardid;

unsigned char snr[7];

unsigned char mode =00;

int result = cardReader->UL_Request(mode, snr);

if(result==0)

{

cardid= (snr[0]<<24) |(snr[1]<<16) | (snr[2]<<8) | (snr[3]);

//根据读出的卡号查询数据

showdata(cardid);    }}

//rfid beer

void showsick::beer()

{

int freq =20;

int duration = 1;

unsigned char buffer;

int result = cardReader->ControlBuzzer(freq, duration, &buffer);}

//mysql

void showsick::connectMySql()

{

QSqlDatabase db =QSqlDatabase::addDatabase("QMYSQL"); // becomes the new default connection

db.setUserName("root");//用户名

db.setPassword("root");//密码

db.setHostName("172.16.170.47");

db.setDatabaseName("book");//数据库名

db.setConnectOptions("CLIENT_SSL=1;CLIENT_IGNORE_SPACE=1");//使用SSL

db.setPort(3306);//端口

if(db.open())

{

QMessageBox::information(this,"open","OK!");

}

else

{

QMessageBox::information(this,"open","False");

}

}

//mysql

void showsick::showdata(unsigned int cardid)

{

//根据读出的卡号查询数据

QSqlQuery query;

query.prepare("SELECT id,no,sex,intro,image FROM tbl_sick WHERE rfidno = ?");

query.addBindValue(QString::number(cardid,16));

query.exec();

while (query.next())

{

if (query.isNull(0) == false)

{

//显示病人数据

ui->id->setText(query.value(0).toString());//身份证

ui->no->setText(query.value(1).toString());//姓名

ui->intro->setText(query.value(2).toString());//病症

ui->sex->setText(query.value(3).toString());//性别

//显示病人头像

QPixmap photo;

photo.loadFromData(query.value(3).toByteArray());

ui->img->setPixmap(photo.scaled(ui->img->size()));

qDebug()<

beer();         }

else

{

qDebug()<

}     }}

显示全部病人信息界面:

showallsick.h

#ifndef SHOWALLSICK_H

#define SHOWALLSICK_H

#include

//mysql

#include

namespace Ui {

class ShowAllSick;}

class ShowAllSick : public QDialog

{

Q_OBJECT

public:

explicit ShowAllSick(QWidget *parent = 0);

~ShowAllSick();

void connectMySql();

private slots:

void on_delete_2_clicked();

void on_update_clicked();

void on_insert_clicked();

void gettotalrecords();

void showdata();

void on_select_clicked();

void on_first_clicked();

void on_next_clicked();

void on_pre_clicked();

void on_last_clicked();

void on_go_clicked();

private:

Ui::ShowAllSick *ui;

QSqlTableModel *tablemodel;

int page;

int records;

int totalrecords;

int totalpages;};

#endif // SHOWALLSICK_H

showallsick.cpp

#include "showallsick.h"

#include "ui_showallsick.h"

#include"sickinfo.h"

#include"updatesickinfo.h"

#include

QString globaldata;

ShowAllSick::ShowAllSick(QWidget *parent) :

QDialog(parent),

ui(new Ui::ShowAllSick)

{

ui->setupUi(this);

ui->tableView->horizontalHeader()->setResizeMode(QHeaderView::Stretch);

connectMySql();

tablemodel=new QSqlTableModel(this);

tablemodel->setTable("tbl_sick");

tablemodel->setEditStrategy(QSqlTableModel::OnFieldChange);

tablemodel->select();

tablemodel->removeColumn(8);

tablemodel->setHeaderData(0,Qt::Horizontal,QObject::tr("卡号"));

tablemodel->setHeaderData(1,Qt::Horizontal,QObject::tr("姓名"));

tablemodel->setHeaderData(2,Qt::Horizontal,QObject::tr("身份证号"));

tablemodel->setHeaderData(3,Qt::Horizontal,QObject::tr("性别"));

tablemodel->setHeaderData(4,Qt::Horizontal,QObject::tr("出生日期"));

tablemodel->setHeaderData(5,Qt::Horizontal,QObject::tr("病症"));

tablemodel->setHeaderData(6,Qt::Horizontal,QObject::tr("照片"));

tablemodel->setHeaderData(7,Qt::Horizontal,QObject::tr("余额"));

ui->tableView->setModel(tablemodel);}

ShowAllSick::~ShowAllSick()

{

delete ui;

}

//mysql

void ShowAllSick::connectMySql()

{

QSqlDatabase db =QSqlDatabase::addDatabase("QMYSQL"); // becomes the new default connection

db.setUserName("root");//用户名

db.setPassword("root");//密码

db.setHostName("172.16.170.47");

db.setDatabaseName("book");//数据库名

db.setConnectOptions("CLIENT_SSL=1;CLIENT_IGNORE_SPACE=1");//使用SSL

db.setPort(3306);//端口

if(!db.open())

{

QMessageBox::information(this,"open","False");

}}

void ShowAllSick::on_delete_2_clicked()

{

QItemSelectionModel *selections = ui->tableView->selectionModel();

QModelIndexList selected = selections->selectedIndexes();

QSqlQuery query;

int ok = QMessageBox::warning(this,QObject::tr("删除当前行!"),QObject::tr("确定删除当前行?"),

QMessageBox::Yes,QMessageBox::No);

if(ok==QMessageBox::Yes)

{

foreach (QModelIndex index, selected)

{

QString no=index.sibling(index.row(),0).data().toString();

query.prepare("delete from tbl_sick where rfidno =?");

query.addBindValue(no);

query.exec();        }

tablemodel->select();

}}

void ShowAllSick::on_update_clicked()

{

int curRow = ui->tableView->currentIndex().row();

QModelIndex index = ui->tableView->currentIndex();

globaldata=index.sibling(curRow,2).data().toString();

UpdateSickInfo *updatesickinfo=new UpdateSickInfo;

updatesickinfo->show();}

void ShowAllSick::on_insert_clicked()

{

SickInfo *sickinfo=new SickInfo;

sickinfo->show();

sickinfo->resize(600,450);

}

void ShowAllSick::on_select_clicked(){

QString id=ui->id->text().trimmed();

if(id!="")    {

tablemodel->setFilter(QString("id=%1").arg(id));

tablemodel->select();

}else{

tablemodel->setTable("tbl_sick");

tablemodel->select();

}}

void ShowAllSick::gettotalrecords()

{

QSqlQuery query;

query.clear();

query.exec("select count(*) from tbl_sick");

query.next();

totalrecords=query.value(0).toInt();

records=ui->record->text().toInt();

totalpages=(totalrecords%records)?(totalrecords/records)+1:(totalrecords/records);

ui->totalpage->setText("totalpage:"+QString::number(totalpages));}

void ShowAllSick::showdata()

{

QString strFilter = QString("1=1 LIMIT %1,%2;").arg(0).arg(records);

tablemodel->setFilter(strFilter);

tablemodel->select();

ui->tableView->setModel(tablemodel);

}

void ShowAllSick::on_first_clicked()

{

showdata();

ui->page->setText("1");}

void ShowAllSick::on_next_clicked()

{

page=ui->page->text().trimmed().toInt();

records=ui->record->text().trimmed().toInt();

if(page

{

QString strFilter = QString("1=1 LIMIT %1,%2;").arg(page*records).arg(records);

tablemodel->setFilter(strFilter);

tablemodel->select();

ui->tableView->setModel(tablemodel);

ui->page->setText(QString::number(page+1));

}}

void ShowAllSick::on_pre_clicked()

{

page=ui->page->text().trimmed().toInt();

records=ui->record->text().trimmed().toInt();

if(page>1)    {

QString strFilter = QString("1=1 LIMIT %1,%2;").arg((page-2)*records).arg(records);

tablemodel->setFilter(strFilter);

tablemodel->select();

ui->tableView->setModel(tablemodel);

ui->page->setText(QString::number(page-1));

}}

void ShowAllSick::on_last_clicked(){

records=ui->record->text().trimmed().toInt();

int lastpages=(totalrecords%records)?(totalrecords/records):(totalrecords/records)-1;

QString strFilter=QString("1=1 LIMIT %1,%2").arg((lastpages)*records).arg(records);

tablemodel->setFilter(strFilter);

tablemodel->select();

ui->tableView->setModel(tablemodel);

ui->page->setText(QString::number(lastpages+1));}

void ShowAllSick::on_go_clicked(){

page=ui->page->text().trimmed().toInt();

records=ui->record->text().trimmed().toInt();

totalpages=(totalrecords%records)?(totalrecords/records)+1:(totalrecords/records);

if(page<=totalpages)    {

QString strFilter=QString("1=1 LIMIT %1,%2").arg((page-1)*records).arg(records);

tablemodel->setFilter(strFilter);

tablemodel->select();

ui->tableView->setModel(tablemodel);

}else{

QString strFilter=QString("1=1 LIMIT %1,%2;").arg(0).arg(records);

tablemodel->setFilter(strFilter);

tablemodel->select();

ui->tableView->setModel(tablemodel);

ui->page->setText("1");    }

ui->totalpage->setText(tr("totalpage:")+QString::number(totalpages));}

增加用户数据:

sickinfo.c

#ifndef SICKINFO_H

#define SICKINFO_H

#include

//rfid

#include"reader.h"

//mysql

#include

namespace Ui {

class SickInfo;}

class SickInfo : public QDialog{

Q_OBJECT

public:

explicit SickInfo(QWidget *parent = 0);

~SickInfo();

//rfid

void beer();

//mysql

void connectMySql();

private slots:

void on_ok_clicked();

void on_openimage_clicked();

void on_readcard_clicked();

private:

Ui::SickInfo *ui;

QString fileName;

//rfid

Reader *cardReader;

//mysql

QSqlDatabase db;

};

sickinfo.cpp

#endif // SICKINFO_H

#include "sickinfo.h"

#include "ui_sickinfo.h"

#include

#include

SickInfo::SickInfo(QWidget *parent) :

QDialog(parent),

ui(new Ui::SickInfo){

ui->setupUi(this);

//rfid

cardReader = new Reader(this);

//mysql

connectMySql();}

SickInfo::~SickInfo()

{

delete ui;

}

//mysql的save

void SickInfo::on_ok_clicked()

{

QString s="";

s.append(ui->rfidno->text()+"\n");

s.append(ui->no->text()+"\n");

s.append(ui->id->text()+"\n");

s.append(fileName+"\n");

s.append(ui->sex->checkedButton()->text()+"\n");

s.append(ui->birthday->text()+"\n");

s.append(ui->textEdit->toPlainText());

QMessageBox::information(this,tr("infromation"),tr("%1").arg(s));    //读取数据

QString rfidno=ui->rfidno->text().trimmed();

QString no=ui->no->text().trimmed();

QString id=ui->id->text().trimmed();

QString sex=ui->sex->checkedButton()->text().trimmed();

QString birthday=ui->birthday->text();

QString intro=ui->textEdit->toPlainText();

//读取图片数据为二进制数据

QByteArray bytes;

QBuffer buffer(&bytes);

buffer.open(QIODevice::WriteOnly);

ui->img->pixmap()->save(&buffer, "PNG");

QByteArray data;

QFile* file=new QFile(fileName);

file->open(QIODevice::ReadOnly);

data = file->readAll();

file->close();

QVariant var(data);

//mysql的insert操作

QSqlQuery query;

bool value;

query.prepare("insert into tbl_sick(rfidno,no,id,sex,intro,birthday,image) values(?,?,?,?,?,?,?)");

query.addBindValue(rfidno);

query.addBindValue(no);

query.addBindValue(id);

query.addBindValue(sex);

query.addBindValue(intro);

query.addBindValue(birthday);

query.addBindValue(var);

value=query.exec();

if(value)      {

QMessageBox::information(this,"adduser","Add user successed!");

}

else

{

QMessageBox::information(this,"adduser","Add user failed!");

}}

void SickInfo::on_openimage_clicked()

{

fileName = QFileDialog::getOpenFileName(this,

tr("Open File"), QDir::currentPath());

if (!fileName.isEmpty())

{

QMessageBox::information(this, tr("Image Viewer"),

tr("path: %1.").arg(fileName));

QImage image(fileName);

if (image.isNull())

{

QMessageBox::information(this, tr("Image Viewer"),

tr("Cannot load %1.").arg(fileName));

return;

}

//ui->img->setPixmap(QPixmap::fromImage(image));

ui->img->setPixmap(QPixmap(fileName).scaled(ui->img->size()));        }}

//rfid

void SickInfo::on_readcard_clicked()

{

unsigned int cardid;

unsigned char snr[7];

unsigned char mode =00;

int result = cardReader->UL_Request(mode, snr);

if(result==0)

{

cardid= (snr[0]<<24) |(snr[1]<<16) | (snr[2]<<8) | (snr[3]);

ui->rfidno->setText(QString::number(cardid,16));

beer();    }}

//rfid

void SickInfo::beer()

{

int freq =20;

int duration = 1;

unsigned char buffer;

int result = cardReader->ControlBuzzer(freq, duration, &buffer);

}//mysql

void SickInfo::connectMySql(){

QSqlDatabase db =QSqlDatabase::addDatabase("QMYSQL"); // becomes the new default connection

db.setUserName("root");//用户名

db.setPassword("root");//密码

db.setHostName("172.16.170.47");

db.setDatabaseName("book");//数据库名

db.setConnectOptions("CLIENT_SSL=1;CLIENT_IGNORE_SPACE=1");//使用SSL

db.setPort(3306);//端口

if(db.open())    {

QMessageBox::information(this,"open","OK!");

}

else

{

QMessageBox::information(this,"open","False");

}}

更新病人资料:

updatesickinfo.c

#ifndef UPDATESICKINFO_H

#define UPDATESICKINFO_H

#include

//rfid

#include"reader.h"

//mysql

#include

namespace Ui {

class UpdateSickInfo;

}

class UpdateSickInfo : public QDialog

{

Q_OBJECT

public:

explicit UpdateSickInfo(QWidget *parent = 0);

~UpdateSickInfo();

void connectMySql();

void beer();

private slots:

void on_openimage_clicked();

void on_readcard_clicked();

void on_ok_clicked();

private:

Ui::UpdateSickInfo *ui;

QString fileName;    //rfid

Reader *cardReader;

};

#endif // UPDATESICKINFO_H

updatesickinfo.cpp

#include "updatesickinfo.h"

#include "ui_updatesickinfo.h"

#include

#include

#include

extern QString globaldata;

UpdateSickInfo::UpdateSickInfo(QWidget *parent) :

QDialog(parent),

ui(new Ui::UpdateSickInfo)

{

ui->setupUi(this);

//rfid

cardReader = new Reader(this);

//mysql读数据

QSqlQuery query;

query.prepare("select * from tbl_sick where id=?");

query.addBindValue(globaldata);

if(query.exec())    {

query.next();

ui->rfidno->setText(query.value(0).toString());

ui->no->setText(query.value(1).toString());

ui->id->setText(query.value(2).toString());

ui->birthday->setDateTime(query.value(4).toDateTime());

ui->textEdit->setText(query.value(5).toString());        //显示学生头像

QPixmap photo;

photo.loadFromData(query.value(6).toByteArray());

ui->img->setPixmap(photo.scaled(ui->img->size()));  }}

UpdateSickInfo::~UpdateSickInfo()

{

delete ui;

}

//mysql的save

void UpdateSickInfo::on_ok_clicked()

{

QString s="";

s.append(ui->rfidno->text()+"\n");

s.append(ui->no->text()+"\n");

s.append(ui->id->text()+"\n");

s.append(fileName+"\n");

s.append(ui->sex->checkedButton()->text()+"\n");

s.append(ui->birthday->text()+"\n");

s.append(ui->textEdit->toPlainText());

QMessageBox::information(this,tr("infromation"),tr("%1").arg(s));

//读取数据

QString rfidno=ui->rfidno->text().trimmed();

QString no=ui->no->text().trimmed();

QString id=ui->id->text().trimmed();

QString sex=ui->sex->checkedButton()->text().trimmed();

QString birthday=ui->birthday->text();

QString intro=ui->textEdit->toPlainText();

//读取图片数据为二进制数据

QByteArray bytes;

QBuffer buffer(&bytes);

buffer.open(QIODevice::WriteOnly);

ui->img->pixmap()->save(&buffer, "PNG");

QByteArray data;

QFile* file=new QFile(fileName);

file->open(QIODevice::ReadOnly);

data = file->readAll();

file->close();

QVariant var(data);

//mysql的insert操作

QSqlQuery query;

bool value;

query.prepare("update tbl_sick set rfidno=?,no=?,sex=?,birthday=?,intro=?,image=? where id=?");

query.addBindValue(rfidno);

query.addBindValue(no);

query.addBindValue(sex);

query.addBindValue(birthday);

query.addBindValue(intro);

query.addBindValue(var);

query.addBindValue(id);

value=query.exec();

if(value)    {

QMessageBox::information(this,"adduser","update user successed!");

}else{

QMessageBox::information(this,"adduser","update user failed!");

}}

void UpdateSickInfo::on_openimage_clicked()

{

fileName = QFileDialog::getOpenFileName(this,

tr("Open File"), QDir::currentPath());

if (!fileName.isEmpty())

{

QMessageBox::information(this, tr("Image Viewer"),

tr("path: %1.").arg(fileName));

QImage image(fileName);

if (image.isNull())

{

QMessageBox::information(this, tr("Image Viewer"),

tr("Cannot load %1.").arg(fileName));

return;

}

//ui->img->setPixmap(QPixmap::fromImage(image));

ui->img->setPixmap(QPixmap(fileName).scaled(ui->img->size()));        }}

//rfid

void UpdateSickInfo::on_readcard_clicked()

{

unsigned int cardid;

unsigned char snr[7];

unsigned char mode =00;

int result = cardReader->UL_Request(mode, snr);

if(result==0)    {

cardid= (snr[0]<<24) |(snr[1]<<16) | (snr[2]<<8) | (snr[3]);

ui->rfidno->setText(QString::number(cardid,16));

beer();

}}

//rfid

void UpdateSickInfo::beer()

{

int freq =20;

int duration = 1;

unsigned char buffer;

int result = cardReader->ControlBuzzer(freq, duration, &buffer);}

//mysql

void UpdateSickInfo::connectMySql()

{

QSqlDatabase db =QSqlDatabase::addDatabase("QMYSQL"); // becomes the new default connection

db.setUserName("root");//用户名

db.setPassword("root");//密码

db.setHostName("172.16.170.47");

db.setDatabaseName("book");//数据库名

db.setConnectOptions("CLIENT_SSL=1;CLIENT_IGNORE_SPACE=1");//使用SSL

db.setPort(3306);//端口

if(!db.open())    {

QMessageBox::information(this,"open","False");    }

}

1)        管理者登录页面:

553663dcfd456d4ea08efb925227961e.png

2)        系统首界面:

c5638f1979b6fef4091375e96e0ad3b7.png

3)        增加用户资料界面:

5d82a6fd9fdd0b2c9fab48849789d6af.png

4)        RFID读取用户资料界面:

781a35bed6139f14f58c79a43fe0050b.png

5)        操作全部用户资料界面:

5134124119cfaa1022c4c349db006f78.png

6)        用户充值扣费界面:

a331bc72980deae41e63186532a19b51.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值