请用 qt c++ 编写“将人员同步到门禁设备上”的代码,其中包括增加的和删除的人员
时间: 2024-02-22 07:55:16 浏览: 116
基于qt的门禁系统
这是一个将人员同步到门禁设备上的Qt C++代码示例,它包括增加的和删除的人员,你可以参考一下:
```c++
#include <QCoreApplication>
#include <QTcpSocket>
#include <QDataStream>
#include <QFile>
#include <QTextStream>
#include <QString>
#include <QList>
struct Person {
QString name;
QString id;
QString cardNumber;
bool isDeleted;
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 从文件读取人员信息
QList<Person> persons;
QFile inputFile("person_info.txt");
if (!inputFile.open(QIODevice::ReadOnly | QIODevice::Text))
return -1;
QTextStream in(&inputFile);
while (!in.atEnd()) {
QString line = in.readLine();
QStringList fields = line.split(",", QString::SkipEmptyParts);
// 检查记录是否有效
if (fields.count() == 3) {
Person person;
person.name = fields[0];
person.id = fields[1];
person.cardNumber = fields[2];
person.isDeleted = false;
persons.append(person);
}
}
inputFile.close();
// 添加新的人员信息
Person newPerson;
newPerson.name = "张三";
newPerson.id = "001";
newPerson.cardNumber = "123456";
newPerson.isDeleted = false;
persons.append(newPerson);
// 删除一些人员信息
for (int i = 0; i < persons.count(); i++) {
if (persons[i].id == "002" || persons[i].id == "003") {
persons[i].isDeleted = true;
}
}
// 连接门禁设备
QTcpSocket socket;
socket.connectToHost("192.168.1.1", 8888);
if (!socket.waitForConnected(5000))
return -1;
// 发送人员信息到门禁设备
QDataStream out(&socket);
int count = persons.count();
out << count;
for (int i = 0; i < count; i++) {
Person person = persons[i];
if (!person.isDeleted) {
out << person.name << person.id << person.cardNumber;
}
}
// 关闭连接
socket.disconnectFromHost();
return a.exec();
}
```
这个代码示例假设人员信息存储在一个名为`person_info.txt`的文本文件中,每行包含三个字段:姓名,员工ID和门禁卡号。代码逐行读取文件并将每行分割为字段。然后,它添加了一个新的人员信息,并删除了一些人员信息。最后,它将人员信息发送到门禁设备,使用TCP连接和数据流进行通信。您可以在此处添加任何必要的逻辑来处理记录,然后将其发送到门禁设备。
阅读全文