程序示例精選
VS+Qt+C++醫(yī)院排隊(duì)叫號(hào)系統(tǒng)
如需安裝運(yùn)行環(huán)境或遠(yuǎn)程調(diào)試,見文章底部個(gè)人QQ名片,由專業(yè)技術(shù)人員遠(yuǎn)程協(xié)助!
前言
這篇博客針對(duì)<<VS+Qt+C++醫(yī)院排隊(duì)叫號(hào)系統(tǒng)>>編寫代碼,帶用戶登錄,管理員登錄,增刪改查,代碼整潔,規(guī)則,易讀。 學(xué)習(xí)與應(yīng)用推薦首選。
文章目錄
一、所需工具軟件
二、使用步驟
????????1. 引入庫
????????2. 代碼實(shí)現(xiàn)
???????3. 運(yùn)行結(jié)果
三、在線協(xié)助
一、所需工具軟件
1. VS, Qt
2. C++
二、使用步驟
1.引入庫
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_AdminManager.h"
#include <QWidget>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlError>
#include <QtSql/QtSql>
2. 代碼實(shí)現(xiàn)
代碼如下:
namespace
{
using namespace std;
// 結(jié)構(gòu)體
struct Person
{
int id;
QString name;
};
// 類
class AddressBooks
{
public:
std::vector<Person> datas;
public:
void InitAddrssBooks();
bool AddPerson(Person p);
bool DeletePerson(QString personid);
bool UpdatePerson(Person p);
Person* FindPerson(QString personid);
};
Person* AddressBooks::FindPerson(QString personid)
{
Person* p = NULL;
int index = -1;
for (size_t i = 0; i < datas.size(); i++)
{
auto person = datas.at(i);
if (QString::number(person.id) == personid)
{
index = i;
break;
}
}
if (index != -1)
{
p = &datas.at(index);
}
return p;
}
bool AddressBooks::AddPerson(Person p)
{
qDebug() << "iddd: " << QString::number(p.id);
if (FindPerson(QString::number(p.id)))
{
qDebug() << "iddddd: " << p.id;
return false;
}
datas.push_back(p);
qDebug() << "data size:" << datas.size();
return true;
}
bool AddressBooks::UpdatePerson(Person p)
{
auto person = FindPerson(QString::number(p.id));
if (!person) return false;
person->id = p.id;
person->name = p.name;
return true;
}
bool AddressBooks::DeletePerson(QString personid) {
if (!FindPerson(personid)) return false;
int index = -1;
for (size_t i = 0; i < datas.size(); i++)
{
auto person = datas.at(i);
if (person.id == personid.toInt())
{
index = i;
break;
}
}
datas.erase(datas.begin() + index);
return true;
}
AddressBooks AddrDatabase;
}
AdminManager::AdminManager(QWidget* parent)
: QMainWindow(parent)
{
ui.setupUi(this);
QObject::connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(on_addButton_clicked()));
QObject::connect(ui.pushButton_2, SIGNAL(clicked()), this, SLOT(on_delButton_clicked()));
QObject::connect(ui.pushButton_3, SIGNAL(clicked()), this, SLOT(on_updateButton_clicked()));
QObject::connect(ui.pushButton_4, SIGNAL(clicked()), this, SLOT(on_findButton_clicked()));
QObject::connect(ui.pushButton_5, SIGNAL(clicked()), this, SLOT(on_check_clicked()));
QObject::connect(ui.pushButton_6, SIGNAL(clicked()), this, SLOT(on_backLoginWindow()));
//背景色
ui.tableWidget->setStyleSheet("QTableView::Item{background-color:green}");
}
//顯示所有
void AdminManager::on_findButton_clicked()
{
qDebug() << "顯示所有********************************** ";
memset(&AddrDatabase, 0, sizeof(AddrDatabase)); //清空結(jié)構(gòu)體
readCSV(); //讀取csv
ui.tableWidget->clearContents();
ui.tableWidget->setRowCount(0);
for (int i = 0; i < AddrDatabase.datas.size(); i++)
{
auto person = AddrDatabase.datas.at(i);
//qDebug() << "aaa: " << person.id;
//qDebug() << "aaa: " << person.name;
//qDebug() << "aaa: " << person.gender;
//qDebug() << "aaa: " << person.age;
//qDebug() << "aaa: " << person.classL;
//std::cout << "test_add2 " << person.name<< std::endl;
int rowCount = ui.tableWidget->rowCount();
ui.tableWidget->insertRow(rowCount);
QTableWidgetItem* columnItem0 = new QTableWidgetItem(
QString::number(person.id));
QTableWidgetItem* columnItem1 = new QTableWidgetItem(
person.name);
//QTableWidgetItem* columnItem5 = new QTableWidgetItem(
// query.value(5).toString());
ui.tableWidget->setItem(rowCount, 0, columnItem0);
ui.tableWidget->setItem(rowCount, 1, columnItem1);
//ui.tableWidget->setItem(rowCount, 5, columnItem5);
}
}
//刪除
void AdminManager::on_delButton_clicked()
{
Person p;
p.id = ui.idLineEdit->text().toInt();
qDebug() << p.id;
AddrDatabase.DeletePerson(QString::number(p.id));
qDebug() << "test2";
exportCSV(); //輸出到csv
on_findButton_clicked();
}
//修改
void AdminManager::on_updateButton_clicked()
{
qDebug() << "修改********************************** ";
memset(&AddrDatabase, 0, sizeof(AddrDatabase)); //清空結(jié)構(gòu)體
readCSV(); //讀取csv
ui.tableWidget->clearContents();
ui.tableWidget->setRowCount(0);
for (int i = 0; i < AddrDatabase.datas.size(); i++)
{
auto person = AddrDatabase.datas.at(i);
qDebug() << "aaa: " << person.id;
qDebug() << "aaa: " << person.name;
if (person.id == ui.idLineEditUpdate->text().toInt())
{
qDebug() << "testIf -----------------------";
qDebug() << "person.id" << person.id;
person.name = ui.comboBox->currentText();
qDebug() << "person.name" << person.name;
AddrDatabase.UpdatePerson(person);
}
}
exportCSV(); //輸出到csv
on_findButton_clicked(); //執(zhí)行顯示所有信息函數(shù)
}
//添加
void AdminManager::on_addButton_clicked()
{
on_findButton_clicked(); //執(zhí)行顯示所有信息函數(shù)
std::cout << "test_add " << std::endl;
Person p;
p.id = ui.idLineEdit_2->text().toInt();
qDebug() << p.id;
AddrDatabase.AddPerson(p); //執(zhí)行添加函數(shù)
exportCSV(); //輸出到csv
on_findButton_clicked(); //執(zhí)行顯示所有信息函數(shù)
}
//查找
void AdminManager::on_check_clicked()
{
qDebug() << "查找********************************** ";
memset(&AddrDatabase, 0, sizeof(AddrDatabase)); //清空結(jié)構(gòu)體
readCSV(); //讀取csv
ui.tableWidget->clearContents();
ui.tableWidget->setRowCount(0);
for (int i = 0; i < AddrDatabase.datas.size(); i++)
{
auto person = AddrDatabase.datas.at(i);
qDebug() << "aaa: " << person.id;
qDebug() << "aaa: " << person.name;
if (person.id == ui.lineEdit_2->text().toInt())
{
int rowCount = ui.tableWidget->rowCount();
ui.tableWidget->insertRow(rowCount);
QTableWidgetItem* columnItem0 = new QTableWidgetItem(
QString::number(person.id));
QTableWidgetItem* columnItem1 = new QTableWidgetItem(
person.name);
//QTableWidgetItem* columnItem5 = new QTableWidgetItem(
// query.value(5).toString());
ui.tableWidget->setItem(rowCount, 0, columnItem0);
ui.tableWidget->setItem(rowCount, 1, columnItem1);
//ui.tableWidget->setItem(rowCount, 5, columnItem5);
}
}
}
void AdminManager::readCSV()
{
qDebug() << "test readCSV ";
QFile file("data.csv");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
qDebug() << "Can't open the file!" << endl;
}
//一行一行直接讀取文件
while (!file.atEnd()) {
qDebug() << "test readCSV ";
QByteArray line = file.readLine();
qDebug() << "line: " << line;
QString str(line);
str.replace("\n", "");
qDebug() << str;
auto list = str.split(",");
Person p;
p.id = list[0].toInt();
p.name = list[1];
AddrDatabase.AddPerson(p);
//AddrDatabase.datas.push_back(p);
for (int i = 0; i < AddrDatabase.datas.size(); i++)
{
auto person = AddrDatabase.datas.at(i);
//qDebug() << "aaa: " << person.id;
//qDebug() << "aaa: " << person.name;
//qDebug() << "aaa: " << person.gender;
//qDebug() << "aaa: " << person.age;
//qDebug() << "aaa: " << person.classL;
}
}
file.close();
}
void AdminManager::exportCSV()
{
QString fileNamePath = "data.csv";
QFile file(fileNamePath);
if (!file.open(QIODevice::WriteOnly)) {
qDebug() << "Can't open the file!" << endl;
return;
}
QTextStream filestream(&file);//QTextStream 與file關(guān)聯(lián)
filestream.setCodec("utf-8");
QStringList lines;
for (size_t i = 0; i < AddrDatabase.datas.size(); i++)
{
Person p = AddrDatabase.datas.at(i);
QString strline = QString::number(p.id) + "," + p.name;
lines << strline;
}
QString str = lines.join("\n");
qDebug() << str;
filestream << str;
file.flush();
file.close();
}
//返回登錄窗口
void AdminManager::on_backLoginWindow()
{
std::cout << "test_ " << std::endl;
this->close();
LoginResiger* ad;
ad = new LoginResiger;
ad->show();
}
3. 運(yùn)行結(jié)果
三、在線協(xié)助:
如需安裝運(yùn)行環(huán)境或遠(yuǎn)程調(diào)試,見文章底部個(gè)人 QQ 名片,由專業(yè)技術(shù)人員遠(yuǎn)程協(xié)助!
1)遠(yuǎn)程安裝運(yùn)行環(huán)境,代碼調(diào)試
2)Qt, C++, Python入門指導(dǎo)
3)界面美化
4)軟件制作
博主推薦文章:python人臉識(shí)別統(tǒng)計(jì)人數(shù)qt窗體-CSDN博客
博主推薦文章:Python Yolov5火焰煙霧識(shí)別源碼分享-CSDN博客
? ? ? ? ? ? ? ? ? ? ? ? ?Python OpenCV識(shí)別行人入口進(jìn)出人數(shù)統(tǒng)計(jì)_python識(shí)別人數(shù)-CSDN博客
個(gè)人博客主頁:alicema1111的博客_CSDN博客-Python,C++,網(wǎng)頁領(lǐng)域博主文章來源:http://www.zghlxwxcb.cn/news/detail-434897.html
博主所有文章點(diǎn)這里:alicema1111的博客_CSDN博客-Python,C++,網(wǎng)頁領(lǐng)域博主文章來源地址http://www.zghlxwxcb.cn/news/detail-434897.html
到了這里,關(guān)于VS+Qt+C++醫(yī)院排隊(duì)叫號(hào)系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!