VS+Qt+C++医院排队叫号系统

这篇具有很好参考价值的文章主要介绍了VS+Qt+C++医院排队叫号系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

程序示例精选

VS+Qt+C++医院排队叫号系统

如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助!

前言

这篇博客针对<<VS+Qt+C++医院排队叫号系统>>编写代码,带用户登录,管理员登录,增删改查,代码整洁,规则,易读。 学习与应用推荐首选。


文章目录

一、所需工具软件

二、使用步骤

        1. 引入库

        2. 代码实现

       3. 运行结果

三、在线协助

一、所需工具软件

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. 代码实现

代码如下:

namespace
{
    using namespace std;

    // 结构体
    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)); //清空结构体

    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)); //清空结构体

    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(); //执行显示所有信息函数
}

//添加
void AdminManager::on_addButton_clicked()
{
    on_findButton_clicked(); //执行显示所有信息函数

    std::cout << "test_add " << std::endl;
    Person p;
    p.id = ui.idLineEdit_2->text().toInt();
    qDebug() << p.id;


    AddrDatabase.AddPerson(p); //执行添加函数

    exportCSV(); //输出到csv

    on_findButton_clicked(); //执行显示所有信息函数

}

//查找
void AdminManager::on_check_clicked()
{
    qDebug() << "查找********************************** ";

    memset(&AddrDatabase, 0, sizeof(AddrDatabase)); //清空结构体

    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关联
    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. 运行结果

VS+Qt+C++医院排队叫号系统

VS+Qt+C++医院排队叫号系统

三、在线协助:

如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助!
1)远程安装运行环境,代码调试
2)Qt, C++, Python入门指导
3)界面美化
4)软件制作

博主推荐文章:python人脸识别统计人数qt窗体-CSDN博客

博主推荐文章:Python Yolov5火焰烟雾识别源码分享-CSDN博客

                         Python OpenCV识别行人入口进出人数统计_python识别人数-CSDN博客

个人博客主页:alicema1111的博客_CSDN博客-Python,C++,网页领域博主

博主所有文章点这里:alicema1111的博客_CSDN博客-Python,C++,网页领域博主文章来源地址https://www.toymoban.com/news/detail-434897.html

到了这里,关于VS+Qt+C++医院排队叫号系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WPF 医院叫号系统

    C# .Net 4.8 WPF 桌面版医院叫号系统 数据库 SQLServer 2012 数据队列 Redis 日志 log4net         医生客户端登陆 科室设置,医生职称设置,医生科室和房间设置,就诊设置,用户设置,用户就诊记录,医生看诊记录,用户预约记录,用户叫号记录,分配记录,用户扫码机自助扫描签

    2024年02月02日
    浏览(82)
  • C语言模拟银行排队叫号(顺序队)

    队列 是一种具有先进先出(FIFO)特性的线性数据结构,它只允许在队列的两端进行插入和删除操作。队列的一端称为队尾(rear),另一端称为队头(front)。新元素总是插入在队列的队尾,而从队列中删除元素时则总是删除队头元素。 由于队列具有FIFO特性,因此队列通常用

    2024年02月09日
    浏览(35)
  • 0072-基于单片机的排队叫号仿真设计

    1、采用51/52单片机作为主控芯片; 2、采用两个1602液晶,各显示取号和叫号信息; 3、共四个窗口,每个窗口均有单独叫号键及重复叫号键,叫号时会有铃声提醒; 4、有一个取号键,液晶显示您的号码及等待人数;   采用Proteus作为仿真设计工具。Proteus是一款著名的EDA工具(

    2024年02月19日
    浏览(28)
  • JavaScript中的CRUD操作指南示例 - 用DHTMLX创建医院管理系统!

    创建、读取、更新和删除(CRUD)是现代web和移动应用程序执行的四个基本功能。然而这些函数是如何产生的,它们到底是做什么的? 在本文中,我们将简要介绍CRUD的含义以及它何时被引入编程的。文中我们还将使用用于医院管理的JavaScript演示应用程序,展示如何使用DHTMLX小部

    2024年02月10日
    浏览(54)
  • 代驾预约小程序系统源码 :提起预约,避免排队 带完整搭建教程

    大家好啊,又到罗峰来给大家分享好用的源码系统的时间了。今天要给大家分享的第一款代驾预约小程序源码系统。传统的代驾服务中,用户往往需要在酒后代驾、长途驾驶等场景下,面对排队等待代驾司机空闲时间的繁琐过程。这不仅浪费了用户的时间和精力,也影响了代

    2024年02月03日
    浏览(45)
  • ideaSSM医院挂号管理系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

    一、源码特点   SSM医院挂号管理系统是一套完善的完整医院类型系统,结合SSM框架和bootstrap完成本系统SpringMVC spring mybatis ,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式 开发),系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 ideaSSM医院挂号管理系

    2024年02月03日
    浏览(38)
  • 案例精选|成武县人民医院“流量探针部署”及“智慧云+端安全运营服务”项目

    成武县人民医院始建于1949年10月,是一所集医疗、教学、科研、预防、保健、康复于一体的现代化三级综合医院。院区占地270亩,建筑面积23.1万平方米,设有55个临床医技科室,开放床位1700张,年门急诊量超50万人次。医院先后获评“国家爱婴医院”、“国家级节约型公共机

    2024年02月03日
    浏览(39)
  • vs+opencv+QT调试程序

    2021-09-28vs+opencv+QT简单的图像处理工程_opencv 用qt还是vs_二两山栀子的博客-CSDN博客 【vs+opencv+Qt搭建简单的图像处理界面】https://www.bilibili.com/video/BV16T411j7XQ?vd_source=0aeb782d0b9c2e6b0e0cdea3e2121eba 调试过程一直出现这种问题,后来改DEBUG为release就可以了 mainwindow.hpp mainwindow.cpp

    2024年02月10日
    浏览(34)
  • 基于微信小程序的医院挂号系统小程序

    文末联系获取源码 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏览器:谷歌浏览器 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序运行软件:微信开发者 进入21世纪网络和

    2024年02月09日
    浏览(44)
  • Qt中实时更新UI程序示例

    Qt在运行时会开启一个主线程,如果没有开启工作线程的话,所有界面上的操作都是在主线程,包括更新界面或者处理数据等操作。我们都知道如果处理数据比较多的话,最好是在单独开启一个线程来处理数据,这样就不会影响主线程的运行。 Windows系统:Windows10 Qt版本:Qt

    2023年04月08日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包