简单谈谈我是怎么被逼的学习QT框架的,C++要做大作业,而这学期又比较特殊(至今未开学),划水一学期,到了交作业的临界点,只能自己从零开始,一边跟着学,一边做,但无奈的是离交作业的时间很近了,所以,管理系统该有的增删改查,只保留了增加和查找。

本文简单介绍了QT的使用方法,但内容相对较简单,后期空闲时间可能会对此管理系统做相应更新

目录

甲、增加病患功能

AddPatient.ui

AddPatient.cpp

AddPatient.h

乙、点击主窗口菜单跳转至增加患者窗口

给项目添加新文件

mainwindow.h

mainwindow.cpp

丙、查询病患信息功能

QueryPatient.ui

QueryPatient.cpp

QueryPatient.h

丁、成品展示

主页面

登陆界面

mainwindow界面

AddPatient界面

QueryPatient界面

戊、总结语


甲、增加病患功能

AddPatient.ui

很简单的一个ui,姓名、身份证号这些字用的是label标签,后面需要输入的则是line Edit标签,男女的选择用的是Radio Button标签,确定和取消用的是Push Button标签

AddPatient.cpp

上面ui的确定按钮通过鼠标右键单击转到槽--clicked方式,在里面增添代码

又写了两个函数,ClearUserInterface()和writeToFile,就是字面意思,一个是在输入完成后清除数据,一个是写入文件

好了好了,直接走代码吧

#include "addpatient.h"
#include "ui_addpatient.h"
#include "QString"
#include "QDebug"
#include "QMessageBox"
#include "QFile"
#include "QTextStream"
#include "QIODevice"AddPatient::AddPatient(QWidget *parent) :QMainWindow(parent),ui(new Ui::AddPatient)
{ui->setupUi(this);
}AddPatient::~AddPatient()
{delete ui;
}void AddPatient::on_pB_ok_clicked()                   //在ui中转到槽跳转至此
{QString name = this->ui->le_name->text();    //le_name是ui中输入姓名的Line Edit标签属性的object name,在ui界面可以定义QString id = this->ui->le_id->text();QString sex =this->ui->sexGroup->checkedButton()->text();QString age = this->ui->le_age->text();QString information = name + '\n' + id + '\n' + sex + '\n' + age;QString cnt = name + ' ' + id + ' ' + sex + ' ' + age;if(name.length() < 1 || id.length() != 18){         //简易查错,姓名身份证号输入不正确时,会弹出messagebox报错QMessageBox::critical(this,"错误","信息填写有误,请重新检查","确定");}else{int ret = QMessageBox::question(this,"请确认信息",information,"取消","确认");if(ret==1){ClearUserInterface();       //清除函数,在点击确认后,清除在对话框中填入的数据writeToFile(cnt);           //写入文件函数,点击确认后,将填入的数据保存至文件}}
}void AddPatient::ClearUserInterface()      //清除函数
{this->ui->le_name->clear();this->ui->le_age->clear();this->ui->le_id->clear();this->ui->te_bingshi->clear();
}void AddPatient::writeToFile(QString cnt)        //写入文件函数
{QFile file("patient.txt");                   //用QFile,patient.txt保存在相对路径下if(! file.open(QIODevice::Append | QIODevice::Text)){return;}QTextStream out(&file);out << cnt + '\n';file.close();
}void AddPatient::on_pB_no_clicked()            //点击取消时关闭这个窗口
{this->close();
}

AddPatient.h

AddPatient是在建立好ui后自己生成的,只需要简单的修改,在public中提前声明ClearUserInterface()和writeToFile两个函数,这两个函数在上面的AddPatient.cpp中使用

#ifndef ADDPATIENT_H
#define ADDPATIENT_H#include <QMainWindow>namespace Ui {
class AddPatient;
}class AddPatient : public QMainWindow
{Q_OBJECTpublic:explicit AddPatient(QWidget *parent = 0);~AddPatient();void ClearUserInterface();                //在此提前声明函数void writeToFile(QString cnt);private slots:void on_pB_ok_clicked();void on_pB_no_clicked();private:Ui::AddPatient *ui;
};#endif // ADDPATIENT_H

此时,增加病患的功能就完成了,新增的患者会提前保存到相对路径中的patient.txt中

乙、点击主窗口菜单跳转至增加患者窗口

给项目添加新文件

右击项目名称,选择添加新文件,选择Qt的设计师界面类,根据自己的情况选择界面模板

我选的是Dialog without Buttons,即空白模板,然后你就可以在ui中画你想要的模型了,我画的是这个样子,超级简单(如果你愿意,也可以做的好看一些)

之后,在左上角可以添加菜单,在其中添加患者管理--AddPatient,像这样

在最底下有Action Editor,右键单击AddPatient,选择转到槽--triggered方式

mainwindow.h

要注意的一点是,头文件需提前包含#include “addpatient.h”

然后在private里增加AddPatient a;意为让AddPatient为mainwindow的成员,命名为a

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include "addpatient.h"namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();private slots:void on_actionAddPatient_triggered();private:Ui::MainWindow *ui;AddPatient a;
};#endif // MAINWINDOW_H

mainwindow.cpp

下述代码最后几行,即在上面ui转到槽后的槽函数中写入this->a.show();

a则为mainwindow.h中的成员AddPatient

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "addpatient.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_actionAddPatient_triggered()
{this->a.show();         //槽函数,意为点击后就会show a这个界面,而a在头文件中提前声明过是AddPatient,则点击后会跳转至AddPatient界面
}

此时,在mainwindow的左上角菜单中点击AddPatient就可以跳转至该页面了

丙、查询病患信息功能

QueryPatient.ui

这个是ui设计,可以根据姓名,性别,身份证号方式进行查询

注意下面的一大片空白用了tableview标签

QueryPatient.cpp

#include "querypatient.h"
#include "ui_querypatient.h"
#include "QTextStream"
#include "QMessageBox"
#include "QDebug"
#include "QStringList"QueryPatient::QueryPatient(QWidget *parent) :QDialog(parent),ui(new Ui::QueryPatient)
{ui->setupUi(this);if(readFromFile() == -1){                   //查询时需打开文件,若未打开文件则会报错QMessageBox::critical(this,"严重错误","文件打开失败,请重试");this->close();}this->model = new QStandardItemModel;        //StandardItemModel,在tableview中显示姓名、身份证号、性别、年龄的表头this->model->setHorizontalHeaderItem(0,new QStandardItem("姓名"));this->model->setHorizontalHeaderItem(1,new QStandardItem("身份证号"));this->model->setHorizontalHeaderItem(2,new QStandardItem("性别"));this->model->setHorizontalHeaderItem(3,new QStandardItem("年龄"));this->ui->tableView->setModel(model);
}QueryPatient::~QueryPatient()
{delete ui;
}int QueryPatient::readFromFile()      //读取文件函数
{QFile file("patient.txt");if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){return -1;}QTextStream in(&file);while(!in.atEnd()){QString line = in.readLine();patient_lines.append(line);}file.close();int i = 0;for(i = 0 ; i < patient_lines.length(); i++){qDebug()<<patient_lines.at(i);}return 0;
}void QueryPatient::on_pB_search_clicked()      //ui中搜索按钮的槽函数
{int index = this->ui->cB_method->currentIndex();QString cnt = this->ui->le_cnt->text();doQuery(index,cnt);
}void QueryPatient::doQuery(int index, QString cnt)       //查询函数
{int i = 0;int row = 0;for(i = 0;i < patient_lines.length(); i++){QString line = patient_lines.at(i);line = line.trimmed();QStringList subs = line.split(" ");switch (index) {case 1:if(cnt == subs.at(0)){display(row++,subs);}break;case 2:if(cnt == subs.at(1)){display(row++,subs);}break;case 3:if(cnt == subs.at(2)){display(row++,subs);}break;default:break;}}
}void QueryPatient::display(int row , QStringList subs)
{int i = 0;for(i = 0;i < subs.length(); i++){this->model->setItem(row,i,new QStandardItem(subs.at(i)));}
}

QueryPatient.h

这个头文件没什么可说的,基本上是Qt自己生成的,只是添加了一些声明

#ifndef QUERYPATIENT_H
#define QUERYPATIENT_H#include <QDialog>
#include "QFile"
#include "QList"
#include "QString"
#include "QStandardItem"
#include "QStandardItemModel"namespace Ui {
class QueryPatient;
}class QueryPatient : public QDialog
{Q_OBJECTpublic:explicit QueryPatient(QWidget *parent = 0);~QueryPatient();int readFromFile();void doQuery(int index , QString cnt);            //自己定义的函数声明void display(int row , QStringList subs);private slots:void on_pB_search_clicked();void on_pushButton_clicked();private:Ui::QueryPatient *ui;QList<QString> patient_lines;QStandardItemModel * model;
};#endif // QUERYPATIENT_H

然后呢,我们需要根据文章乙段所讲的方法,将mainwindow和QueryPatient连接起来

丁、成品展示

主页面

主页面有三个push button,分为患者登陆,社区管理,医院后台登陆三部分

因为偷了懒,所以患者登陆界面进去后会跳转到AddPatient界面

社区管理和医院后台点击后会跳转到登陆界面(因为这两个权限更高,所以跳转到登陆界面输入用户名和密码,正确后才能进入)

登陆界面

登陆界面用了if函数,用户名为admin,密码为123

输入正确,则成功登陆,跳转至mainwindow界面

输入错误,则弹出messagebox,并设置为严重警告

if(name == "admin" && psw == "123"){this->m.show();}else{QMessageBox::critical(this,"错误","信息填写有误,请重新检查","确定");}

mainwindow界面

mianwindow界面就是文章乙段讲过的很low的界面

患者管理菜单有AddPatient和QueryPatient两个功能

点击后会分别跳至相应界面

AddPatient界面

QueryPatient界面

戊、总结语

到这,基本上这个超级简单的管理系统就完成了,也确实是因为时间有限,但我想说的是,Qt真的不难,想要学习的可以认真学习一下,相信每个人都能很快的掌握

因为,大作业交了,后期马上也要考试了,所以这个管理系统可能很长时间都不会更新了,陆续可能会更新一些C++的学习笔记,之后有空闲时间时可能会对此系统做一个更新

Qt/C++管理系统相关推荐

  1. QT疫情信息管理系统

    QT疫情信息管理系统 QT+MySql实现疫情信息管理系统. 现需开发一套疫情信息管理系统,实现对用户疫苗接种.核酸检测.每日健康.行程上报等信息的管理.用户具备账号注册.信息上报.个人信息修改等功能 ...

  2. QT 停车场管理系统

    源码链接: QT停车场管理系统,有图形界面-C++文档类资源-CSDN下载 停车场管理模拟商场的地下停车场,有一个入口.一个出口,在入口前有便道,如果车库满了, 可以在便道上排队等候. 自己定义停车场 ...

  3. Qt物料管理系统--局域网版

    Qt物料管理系统--局域网版 项目报告 目录 第一章 绪论 第二章 环境介绍 第三章 项目总体设计 第四章 数据库设计 项目介绍 第六章 关键代码详解 结尾 项目报告 项目名称 萤火虫物料管理系统 项 ...

  4. [mysql+qt] 图书管理系统

    关于乱码问题:         后来亲测加上qstringliteral有效,而官方给出的tr函数,似乎对中文没啥用 出现编码错误,如字符常量这些,是qt自身的问题,用记事本存为utf-8应该就好了. ...

  5. QT水费管理系统 ——纯C++开发

    这是一款之前开发的水费管理系统,现在开源出来给有需要的人,源代码在此 以下是此款软件的一些特性 采用sqlite3数据库 支持管理用户 支持管理水表(一户最多支持四块水表) 智能提醒未缴费项目 支持复 ...

  6. qt学生管理系统(一)

    主界面: 添加页面dialog: dialog头文件: #ifndef DIALOG_H #define DIALOG_H #include"student.h" #include ...

  7. 【Qt图书管理系统】4.完整版源码及下载地址

    文章目录 使用技术 源码目录 代码实现 源代码下载链接 使用技术 Qt5.15.2 sqlite3 qstatickwidget tableview model sql 源码目录  |-

  8. C++\OpenGL\QT 房源管理系统

    目录 一.项目介绍 二.项目展示 三.源码分享 一.项目介绍 一.登录注册:分角色登录:用户可以注册.登录:中介输入账号密码即可登录 二.首页:用户可以浏览所有房源列表.并可以3D看房 三.实现房源的 ...

  9. QT 5.9学习笔记

    QT 5.9学习笔记 写在前面 S1:初识QT:QT简介 S2:QT在Windows和Linux平台下的安装 Qt调出模态与非模态对话框 写在前面 本文章为我在学习QT5.9时的记录文章,里面会涉及所 ...

最新文章

  1. 从零开始学Win32平台缓冲区溢出(Part1)
  2. ExtJs与JavaScript的call方法
  3. java浮点数原理,浮点型数据存储原理
  4. JeeSite 4.0 内置功能模块规划
  5. Myesclipe+SSH+jsp+mysql+tomcate实现一个简单的CRM客户关系管理系统
  6. 2019年最流行的七大编程语言:学习编程,你会选择哪一种语言呢?
  7. 创新创业大讲堂第一讲
  8. 只允许,同一域名下IFRAME,禁止直接访问页面
  9. PJAX,站点加速之翼
  10. PyQt5+爬虫打造磁力链接搜索工具
  11. FileZilla Server目录显示失败的处理方法
  12. unity 保存数据到本地的方法
  13. Generative Face Completion
  14. Android之Intent详解
  15. mysql 基数_MySQL 索引基数
  16. Azkaban停留在 Logging initialized using configuration in jar:file:/application/cloudera/parcels/XXXXXX
  17. 抢红包算法 c语言版本,抢红包算法实现示例
  18. 计算机中线性结构定义,数据结构基本概念
  19. 李笑来python自学_自学是门手艺--李笑来
  20. 搭建Spring Boot2.X集成Hibernate5项目,并集成传统SSH老项目的安全认证组件,以Spring Boot方式开发项目并集成到老系统

热门文章

  1. Arduino-中断函数介绍和使用
  2. 如何获取bssid_如何获得所有wifi接入点的BSSID?
  3. js页面跳转和js打开新窗口
  4. CSS伪类和伪元素以及选择器的权重
  5. AcWing 1874. 哞加密(枚举,哈希)
  6. Layui表格好看样式
  7. 浅析Mediator
  8. 2010年通信IT类公司薪水工资待遇(应届硕士-电子通信)
  9. admui 框架源码 模板结构
  10. APP内H5调试方法