From c7df7556e073d5e3953d17f94c35517f1ee48410 Mon Sep 17 00:00:00 2001
From: ywl <2586593062@qq.com>
Date: 星期三, 02 七月 2025 15:32:37 +0800
Subject: [PATCH] Merge branch 'master' of ssh://115.28.86.8:29418/~admin/智能网联_25-0305_617_v1
---
Client/陈豪/log/日志_陈豪_250627.doc | 0
Client/魏强/code/log_table.sql | 23
Client/舒海林/code/0630 -/main.cpp | 19
Client/舒海林/code/0630 -/users.sql | 30
Server/汪卫军/log/日志_汪卫军_0702.doc | 0
Client/王国壮/log/~$_王国壮_0625.doc | 0
Client/魏强/log/日志_魏强_0627.doc | 0
Client/舒海林/code/0630 -/LoginSystem.pro.user | 812 ++++++++++++++++++++
Server/段延冲/log/日志_段延冲_0626.doc | 0
Client/舒海林/code/0630 -/loginwindow.ui | 128 +++
Client/舒海林/code/0630 -/registerwindow.h | 37
Client/舒海林/code/0630 -/loginwindow.cpp | 81 ++
Server/汪卫军/log/日志_汪卫军_0629.doc | 0
功能模块_介绍.txt | 630 +++++++++++++++
Client/师浩/log/日志_师浩_250629.doc | 0
Client/舒海林/code/0630 -/loginwindow.h | 33
Client/舒海林/log/日志_舒海林_0629.doc | 0
Client/舒海林/code/0630 -/mainwindow.cpp | 15
Server/common_type.h | 104 +
Client/徐蔓云/log/日志_徐蔓云_0627.doc | 0
Server/梁博/log/日志_梁博_0626.doc | 0
Client/魏强/code/LogExportModule_PageSizeFinal_changeOK.rar | 0
Client/舒海林/code/0630 -/registerwindow.cpp | 139 +++
Client/魏强/code/LogExportModule_PageSizeFinal.zip | 0
Client/舒海林/code/0630 -/LoginSystem.pro | 43 +
Server/梁博/code/config.rar | 0
Server/汪卫军/code/图像处理.rar | 0
Client/魏强/log/日志_魏强_0630.doc | 0
Server/梁博/log/日志_梁博_0627.doc | 0
Client/徐蔓云/log/日志_徐蔓云_0628.doc | 0
Server/徐逸凡/log/日志_徐逸凡_250628.doc | 0
Server/梁博/log/日志_梁博_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc | 0
Server/刘斌/log/日志_刘斌_20250626.doc | 0
Client/王国壮/code/untitled1.7z | 0
Server/林余杰/log/日志_林余杰_20250626.doc | 0
Server/汪卫军/log/日志_汪卫军_0626.doc | 0
Client/魏强/document/日志需求分析文档.docx | 0
Client/寇百盛/log/日志_寇百盛_0627.doc | 0
蚂蚁智能网联项目计划表.xlsx | 0
Client/杨高权/log/日志_杨高权_250629.doc | 0
Client/舒海林/code/0630 -/datastructures.h | 33
Client/王国壮/log/日志_王国壮_0627.doc | 0
Client/舒海林/code/0630 -/mainwindow.ui | 21
Server/胡重阳/log/数据模型预处理日志_胡重阳_20250628.doc | 0
Server/梁博/log/日志_梁博_0626.doc~日报提交 | 0
Server/刘斌/log/日志_刘斌_20250628.doc | 0
Client/魏强/log/日志_魏强_0629.doc | 0
Server/徐逸凡/log/日志_徐逸凡_250701.doc | 0
Client/寇百盛/log/日志_寇百盛_0629.doc | 0
Client/杨高权/log/日志_杨高权_250627.doc | 0
Client/魏强/document/log_table_structure.docx | 0
/dev/null | 0
Client/牛彦江/log/日志_牛彦江_250627.doc | 0
Client/舒海林/code/0630 -/mainwindow.h | 22
Client/王国壮/document/实时环境信息展示.xlsx | 0
Client/舒海林/code/0630 -/registerwindow.ui | 223 +++++
Server/胡重阳/log/数据模型预处理日志_胡重阳_20250626.doc | 0
Client/王国壮/log/日志_王国壮_0629.doc | 0
58 files changed, 2,358 insertions(+), 35 deletions(-)
diff --git "a/Client/\345\257\207\347\231\276\347\233\233/log/\346\227\245\345\277\227_\345\257\207\347\231\276\347\233\233_0627.doc" "b/Client/\345\257\207\347\231\276\347\233\233/log/\346\227\245\345\277\227_\345\257\207\347\231\276\347\233\233_0627.doc"
new file mode 100644
index 0000000..f29b7e9
--- /dev/null
+++ "b/Client/\345\257\207\347\231\276\347\233\233/log/\346\227\245\345\277\227_\345\257\207\347\231\276\347\233\233_0627.doc"
Binary files differ
diff --git "a/Client/\345\257\207\347\231\276\347\233\233/log/\346\227\245\345\277\227_\345\257\207\347\231\276\347\233\233_0629.doc" "b/Client/\345\257\207\347\231\276\347\233\233/log/\346\227\245\345\277\227_\345\257\207\347\231\276\347\233\233_0629.doc"
new file mode 100644
index 0000000..1ec4f50
--- /dev/null
+++ "b/Client/\345\257\207\347\231\276\347\233\233/log/\346\227\245\345\277\227_\345\257\207\347\231\276\347\233\233_0629.doc"
Binary files differ
diff --git "a/Client/\345\270\210\346\265\251/log/\346\227\245\345\277\227_\345\270\210\346\265\251_250629.doc" "b/Client/\345\270\210\346\265\251/log/\346\227\245\345\277\227_\345\270\210\346\265\251_250629.doc"
new file mode 100644
index 0000000..66d700b
--- /dev/null
+++ "b/Client/\345\270\210\346\265\251/log/\346\227\245\345\277\227_\345\270\210\346\265\251_250629.doc"
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp" "b/Client/\345\276\220\350\224\223\344\272\221/log/\346\227\245\345\277\227_\345\276\220\350\224\223\344\272\221_0627.doc"
similarity index 67%
copy from "Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
copy to "Client/\345\276\220\350\224\223\344\272\221/log/\346\227\245\345\277\227_\345\276\220\350\224\223\344\272\221_0627.doc"
index 17190ff..4aa62aa 100644
--- "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
+++ "b/Client/\345\276\220\350\224\223\344\272\221/log/\346\227\245\345\277\227_\345\276\220\350\224\223\344\272\221_0627.doc"
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp" "b/Client/\345\276\220\350\224\223\344\272\221/log/\346\227\245\345\277\227_\345\276\220\350\224\223\344\272\221_0628.doc"
similarity index 65%
copy from "Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
copy to "Client/\345\276\220\350\224\223\344\272\221/log/\346\227\245\345\277\227_\345\276\220\350\224\223\344\272\221_0628.doc"
index 17190ff..bbad3b9 100644
--- "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
+++ "b/Client/\345\276\220\350\224\223\344\272\221/log/\346\227\245\345\277\227_\345\276\220\350\224\223\344\272\221_0628.doc"
Binary files differ
diff --git "a/Client/\346\235\250\351\253\230\346\235\203/log/\346\227\245\345\277\227_\346\235\250\351\253\230\346\235\203_250627.doc" "b/Client/\346\235\250\351\253\230\346\235\203/log/\346\227\245\345\277\227_\346\235\250\351\253\230\346\235\203_250627.doc"
new file mode 100644
index 0000000..fc02d45
--- /dev/null
+++ "b/Client/\346\235\250\351\253\230\346\235\203/log/\346\227\245\345\277\227_\346\235\250\351\253\230\346\235\203_250627.doc"
Binary files differ
diff --git "a/Client/\346\235\250\351\253\230\346\235\203/log/\346\227\245\345\277\227_\346\235\250\351\253\230\346\235\203_250629.doc" "b/Client/\346\235\250\351\253\230\346\235\203/log/\346\227\245\345\277\227_\346\235\250\351\253\230\346\235\203_250629.doc"
new file mode 100644
index 0000000..e3c240b
--- /dev/null
+++ "b/Client/\346\235\250\351\253\230\346\235\203/log/\346\227\245\345\277\227_\346\235\250\351\253\230\346\235\203_250629.doc"
Binary files differ
diff --git "a/Client/\347\211\233\345\275\246\346\261\237/log/\346\227\245\345\277\227_\347\211\233\345\275\246\346\261\237_250627.doc" "b/Client/\347\211\233\345\275\246\346\261\237/log/\346\227\245\345\277\227_\347\211\233\345\275\246\346\261\237_250627.doc"
new file mode 100644
index 0000000..2c3e2d2
--- /dev/null
+++ "b/Client/\347\211\233\345\275\246\346\261\237/log/\346\227\245\345\277\227_\347\211\233\345\275\246\346\261\237_250627.doc"
Binary files differ
diff --git "a/Client/\347\216\213\345\233\275\345\243\256/code/untitled1.7z" "b/Client/\347\216\213\345\233\275\345\243\256/code/untitled1.7z"
new file mode 100644
index 0000000..0cd4ad4
--- /dev/null
+++ "b/Client/\347\216\213\345\233\275\345\243\256/code/untitled1.7z"
Binary files differ
diff --git "a/Client/\347\216\213\345\233\275\345\243\256/document/\345\256\236\346\227\266\347\216\257\345\242\203\344\277\241\346\201\257\345\261\225\347\244\272.xlsx" "b/Client/\347\216\213\345\233\275\345\243\256/document/\345\256\236\346\227\266\347\216\257\345\242\203\344\277\241\346\201\257\345\261\225\347\244\272.xlsx"
index 573784f..0d3f529 100644
--- "a/Client/\347\216\213\345\233\275\345\243\256/document/\345\256\236\346\227\266\347\216\257\345\242\203\344\277\241\346\201\257\345\261\225\347\244\272.xlsx"
+++ "b/Client/\347\216\213\345\233\275\345\243\256/document/\345\256\236\346\227\266\347\216\257\345\242\203\344\277\241\346\201\257\345\261\225\347\244\272.xlsx"
Binary files differ
diff --git "a/Client/\347\216\213\345\233\275\345\243\256/log/~$_\347\216\213\345\233\275\345\243\256_0625.doc" "b/Client/\347\216\213\345\233\275\345\243\256/log/~$_\347\216\213\345\233\275\345\243\256_0625.doc"
new file mode 100644
index 0000000..7758d96
--- /dev/null
+++ "b/Client/\347\216\213\345\233\275\345\243\256/log/~$_\347\216\213\345\233\275\345\243\256_0625.doc"
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp" "b/Client/\347\216\213\345\233\275\345\243\256/log/\346\227\245\345\277\227_\347\216\213\345\233\275\345\243\256_0627.doc"
similarity index 62%
copy from "Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
copy to "Client/\347\216\213\345\233\275\345\243\256/log/\346\227\245\345\277\227_\347\216\213\345\233\275\345\243\256_0627.doc"
index 17190ff..177051f 100644
--- "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
+++ "b/Client/\347\216\213\345\233\275\345\243\256/log/\346\227\245\345\277\227_\347\216\213\345\233\275\345\243\256_0627.doc"
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp" "b/Client/\347\216\213\345\233\275\345\243\256/log/\346\227\245\345\277\227_\347\216\213\345\233\275\345\243\256_0629.doc"
similarity index 62%
copy from "Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
copy to "Client/\347\216\213\345\233\275\345\243\256/log/\346\227\245\345\277\227_\347\216\213\345\233\275\345\243\256_0629.doc"
index 17190ff..426deb4 100644
--- "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
+++ "b/Client/\347\216\213\345\233\275\345\243\256/log/\346\227\245\345\277\227_\347\216\213\345\233\275\345\243\256_0629.doc"
Binary files differ
diff --git "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/LoginSystem.pro" "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/LoginSystem.pro"
new file mode 100644
index 0000000..e526f2c
--- /dev/null
+++ "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/LoginSystem.pro"
@@ -0,0 +1,43 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2025-06-30T15:45:00
+#
+#-------------------------------------------------
+QT += core gui
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
+
+# The following define makes your compiler emit warnings if you use
+# any feature of Qt which has been marked as deprecated (the exact warnings
+# depend on your compiler). Please consult the documentation of the
+# deprecated API in order to know how to port your code away from it.
+
+TARGET = LoginSystem
+TEMPLATE = app
+
+DEFINES += QT_DEPRECATED_WARNINGS
+
+
+SOURCES += \
+ main.cpp \
+ mainwindow.cpp \
+ loginwindow.cpp \
+ registerwindow.cpp
+
+HEADERS += \
+ mainwindow.h \
+ loginwindow.h \
+ registerwindow.h \
+ datastructures.h
+
+FORMS += \
+ mainwindow.ui \
+ loginwindow.ui \
+ registerwindow.ui
+
+# You can also make your code fail to compile if you use deprecated APIs.
+# In order to do so, uncomment the following line.
+# You can also select to disable deprecated APIs only up to a certain version of Qt.
+#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
+
+CONFIG -= makefile
diff --git "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/LoginSystem.pro.user" "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/LoginSystem.pro.user"
new file mode 100644
index 0000000..39f131e
--- /dev/null
+++ "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/LoginSystem.pro.user"
@@ -0,0 +1,812 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE QtCreatorProject>
+<!-- Written by QtCreator 4.5.0, 2025-06-30T16:03:17. -->
+<qtcreator>
+ <data>
+ <variable>EnvironmentId</variable>
+ <value type="QByteArray">{c2271f90-78ed-4b4d-8641-5113ffa02668}</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.ActiveTarget</variable>
+ <value type="int">0</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.EditorSettings</variable>
+ <valuemap type="QVariantMap">
+ <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
+ <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
+ <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
+ <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
+ <value type="QString" key="language">Cpp</value>
+ <valuemap type="QVariantMap" key="value">
+ <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
+ </valuemap>
+ </valuemap>
+ <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
+ <value type="QString" key="language">QmlJS</value>
+ <valuemap type="QVariantMap" key="value">
+ <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
+ </valuemap>
+ </valuemap>
+ <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
+ <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
+ <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
+ <value type="int" key="EditorConfiguration.IndentSize">4</value>
+ <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
+ <value type="int" key="EditorConfiguration.MarginColumn">80</value>
+ <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
+ <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
+ <value type="int" key="EditorConfiguration.PaddingMode">1</value>
+ <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
+ <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
+ <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
+ <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
+ <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
+ <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
+ <value type="int" key="EditorConfiguration.TabSize">8</value>
+ <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
+ <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
+ <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
+ <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
+ <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
+ <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.PluginSettings</variable>
+ <valuemap type="QVariantMap"/>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Target.0</variable>
+ <valuemap type="QVariantMap">
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.9.4 MinGW 32bit</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.9.4 MinGW 32bit</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.594.win32_mingw53_kit</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/Users/27962/Desktop/build-LoginSystem-Desktop_Qt_5_9_4_MinGW_32bit-Debug</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鏋勫缓</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">娓呯悊</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/Users/27962/Desktop/build-LoginSystem-Desktop_Qt_5_9_4_MinGW_32bit-Release</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鏋勫缓</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">娓呯悊</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/Users/27962/Desktop/build-LoginSystem-Desktop_Qt_5_9_4_MinGW_32bit-Profile</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鏋勫缓</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">娓呯悊</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">閮ㄧ讲</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鍦ㄦ湰鍦伴儴缃�</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+ <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
+ <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
+ <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
+ <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
+ <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
+ <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
+ <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
+ <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
+ <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
+ <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
+ <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
+ <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
+ <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
+ <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
+ <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
+ <value type="int">0</value>
+ <value type="int">1</value>
+ <value type="int">2</value>
+ <value type="int">3</value>
+ <value type="int">4</value>
+ <value type="int">5</value>
+ <value type="int">6</value>
+ <value type="int">7</value>
+ <value type="int">8</value>
+ <value type="int">9</value>
+ <value type="int">10</value>
+ <value type="int">11</value>
+ <value type="int">12</value>
+ <value type="int">13</value>
+ <value type="int">14</value>
+ </valuelist>
+ <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+ <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">LoginSystem</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">LoginSystem2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:C:/Users/27962/Desktop/0630 -/LoginSystem.pro</value>
+ <value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">LoginSystem.pro</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">C:/Users/27962/Desktop/build-LoginSystem-Desktop_Qt_5_9_4_MinGW_32bit-Debug</value>
+ <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
+ <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+ <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Target.1</variable>
+ <valuemap type="QVariantMap">
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.9.4 MSVC2015 32bit</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.9.4 MSVC2015 32bit</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.594.win32_msvc2015_kit</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/Users/27962/Desktop/build-LoginSystem-Desktop_Qt_5_9_4_MSVC2015_32bit-Debug</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鏋勫缓</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">娓呯悊</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/Users/27962/Desktop/build-LoginSystem-Desktop_Qt_5_9_4_MSVC2015_32bit-Release</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鏋勫缓</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">娓呯悊</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/Users/27962/Desktop/build-LoginSystem-Desktop_Qt_5_9_4_MSVC2015_32bit-Profile</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鏋勫缓</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">娓呯悊</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">閮ㄧ讲</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鍦ㄦ湰鍦伴儴缃�</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+ <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
+ <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
+ <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
+ <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
+ <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
+ <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
+ <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
+ <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
+ <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
+ <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
+ <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
+ <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
+ <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
+ <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
+ <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
+ <value type="int">0</value>
+ <value type="int">1</value>
+ <value type="int">2</value>
+ <value type="int">3</value>
+ <value type="int">4</value>
+ <value type="int">5</value>
+ <value type="int">6</value>
+ <value type="int">7</value>
+ <value type="int">8</value>
+ <value type="int">9</value>
+ <value type="int">10</value>
+ <value type="int">11</value>
+ <value type="int">12</value>
+ <value type="int">13</value>
+ <value type="int">14</value>
+ </valuelist>
+ <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+ <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">LoginSystem</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:C:/Users/27962/Desktop/0630/LoginSystem.pro</value>
+ <value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">LoginSystem.pro</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">C:/Users/27962/Desktop/build-LoginSystem-Desktop_Qt_5_9_4_MinGW_32bit-Debug</value>
+ <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
+ <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+ <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Target.2</variable>
+ <valuemap type="QVariantMap">
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.9.4 MSVC2015 64bit</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.9.4 MSVC2015 64bit</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.594.win64_msvc2015_64_kit</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/Users/27962/Desktop/build-LoginSystem-Desktop_Qt_5_9_4_MSVC2015_64bit-Debug</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鏋勫缓</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">娓呯悊</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/Users/27962/Desktop/build-LoginSystem-Desktop_Qt_5_9_4_MSVC2015_64bit-Release</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鏋勫缓</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">娓呯悊</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/Users/27962/Desktop/build-LoginSystem-Desktop_Qt_5_9_4_MSVC2015_64bit-Profile</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鏋勫缓</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">娓呯悊</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">閮ㄧ讲</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">鍦ㄦ湰鍦伴儴缃�</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+ <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
+ <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
+ <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
+ <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
+ <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
+ <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
+ <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
+ <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
+ <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
+ <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
+ <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
+ <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
+ <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
+ <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
+ <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
+ <value type="int">0</value>
+ <value type="int">1</value>
+ <value type="int">2</value>
+ <value type="int">3</value>
+ <value type="int">4</value>
+ <value type="int">5</value>
+ <value type="int">6</value>
+ <value type="int">7</value>
+ <value type="int">8</value>
+ <value type="int">9</value>
+ <value type="int">10</value>
+ <value type="int">11</value>
+ <value type="int">12</value>
+ <value type="int">13</value>
+ <value type="int">14</value>
+ </valuelist>
+ <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+ <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">LoginSystem</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:C:/Users/27962/Desktop/0630/LoginSystem.pro</value>
+ <value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">LoginSystem.pro</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">C:/Users/27962/Desktop/build-LoginSystem-Desktop_Qt_5_9_4_MinGW_32bit-Debug</value>
+ <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
+ <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+ <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.TargetCount</variable>
+ <value type="int">3</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
+ <value type="int">18</value>
+ </data>
+ <data>
+ <variable>Version</variable>
+ <value type="int">18</value>
+ </data>
+</qtcreator>
diff --git "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/datastructures.h" "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/datastructures.h"
new file mode 100644
index 0000000..dd716cc
--- /dev/null
+++ "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/datastructures.h"
@@ -0,0 +1,33 @@
+#ifndef DATASTRUCTURES_H
+#define DATASTRUCTURES_H
+
+// 娉ㄥ唽璇锋眰缁撴瀯浣�
+struct RegisterReq {
+ int type; // 鍔熻兘绫诲瀷
+ int len; // 灏佸寘闀垮害
+ char username[32]; // 鐢ㄦ埛鍚�
+ char password[32]; // 瀵嗙爜
+ char email[32]; // 閭
+ char tel[32]; // 鎵嬫満鍙�
+ char dept[32]; // 閮ㄩ棬
+
+ RegisterReq() {
+ type = 400; // 娉ㄥ唽鍔熻兘绫诲瀷鍊�
+ len = sizeof(RegisterReq); // 璁$畻缁撴瀯浣撳ぇ灏�
+ }
+};
+
+// 鐧诲綍璇锋眰缁撴瀯浣�
+struct LoginReq {
+ int type; // 鍔熻兘绫诲瀷
+ int len; // 灏佸寘闀垮害
+ char username[32]; // 鐢ㄦ埛鍚�
+ char password[32]; // 瀵嗙爜
+
+ LoginReq() {
+ type = 401; // 鐧诲綍鍔熻兘绫诲瀷鍊�
+ len = sizeof(LoginReq); // 璁$畻缁撴瀯浣撳ぇ灏�
+ }
+};
+
+#endif // DATASTRUCTURES_H
\ No newline at end of file
diff --git "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/loginwindow.cpp" "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/loginwindow.cpp"
new file mode 100644
index 0000000..baa31d4
--- /dev/null
+++ "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/loginwindow.cpp"
@@ -0,0 +1,81 @@
+#include "loginwindow.h"
+#include "ui_loginwindow.h"
+#include "registerwindow.h"
+#include "datastructures.h"
+#include <QMessageBox>
+#include <QRegExpValidator>
+#include <QTextCodec>
+
+LoginWindow::LoginWindow(QWidget *parent) :
+ QWidget(parent),
+ ui(new Ui::LoginWindow)
+{
+ ui->setupUi(this);
+ setWindowTitle("鐧诲綍");
+
+ // 璁剧疆杈撳叆妗嗛獙璇�
+ ui->passwordLineEdit->setEchoMode(QLineEdit::Password);
+}
+
+LoginWindow::~LoginWindow()
+{
+ delete ui;
+}
+
+void LoginWindow::on_loginButton_clicked()
+{
+ QString username = ui->usernameLineEdit->text().trimmed();
+ QString password = ui->passwordLineEdit->text().trimmed();
+
+ if (validateInput(username, password)) {
+ // 鏋勯�犵櫥褰曡姹傜粨鏋勪綋
+ LoginReq loginReq;
+ strncpy(loginReq.username, username.toUtf8().constData(), sizeof(loginReq.username)-1);
+ strncpy(loginReq.password, password.toUtf8().constData(), sizeof(loginReq.password)-1);
+
+ // 杩欓噷鍙戦�佺櫥褰曡姹�
+
+ emit loginSuccess();
+ }
+}
+
+void LoginWindow::on_registerButton_clicked()
+{
+ RegisterWindow registerWindow(this);
+ registerWindow.setWindowModality(Qt::ApplicationModal);
+ registerWindow.exec();
+}
+
+bool LoginWindow::validateInput(const QString &username, const QString &password)
+{
+ if (username.isEmpty() || password.isEmpty()) {
+ QMessageBox::warning(this, "閿欒", "鐢ㄦ埛鍚嶅拰瀵嗙爜涓嶈兘涓虹┖");
+ return false;
+ }
+
+ if (!isUsernameValid(username)) {
+ QMessageBox::warning(this, "閿欒", "鐢ㄦ埛鍚嶅寘鍚潪娉曞瓧绗�");
+ return false;
+ }
+
+ if (!isPasswordValid(password)) {
+ QMessageBox::warning(this, "閿欒", "瀵嗙爜闀垮害搴斿湪6-16浣嶄箣闂达紝涓斿彧鑳藉寘鍚瓧姣嶃�佹暟瀛楀拰涓嬪垝绾�");
+ return false;
+ }
+
+ return true;
+}
+
+bool LoginWindow::isUsernameValid(const QString &username)
+{
+ // 鍏佽涓枃銆佸瓧姣嶃�佹暟瀛楀拰涓嬪垝绾�
+ QRegExp regex("^[\u4e00-\u9fa5a-zA-Z0-9_]{1,16}$");
+ return regex.exactMatch(username);
+}
+
+bool LoginWindow::isPasswordValid(const QString &password)
+{
+ // 瀵嗙爜闀垮害6-16浣嶏紝鍖呭惈瀛楁瘝銆佹暟瀛楀拰涓嬪垝绾�
+ QRegExp regex("^[a-zA-Z0-9_]{6,16}$");
+ return regex.exactMatch(password);
+}
diff --git "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/loginwindow.h" "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/loginwindow.h"
new file mode 100644
index 0000000..e4f66c9
--- /dev/null
+++ "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/loginwindow.h"
@@ -0,0 +1,33 @@
+#ifndef LOGINWINDOW_H
+#define LOGINWINDOW_H
+
+#include <QWidget>
+#include <QString>
+
+namespace Ui {
+class LoginWindow;
+}
+
+class LoginWindow : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit LoginWindow(QWidget *parent = nullptr);
+ ~LoginWindow();
+
+signals:
+ void loginSuccess();
+
+private slots:
+ void on_loginButton_clicked();
+ void on_registerButton_clicked();
+
+private:
+ Ui::LoginWindow *ui;
+ bool validateInput(const QString &username, const QString &password);
+ bool isUsernameValid(const QString &username);
+ bool isPasswordValid(const QString &password);
+};
+
+#endif // LOGINWINDOW_H
\ No newline at end of file
diff --git "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/loginwindow.ui" "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/loginwindow.ui"
new file mode 100644
index 0000000..04e48a5
--- /dev/null
+++ "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/loginwindow.ui"
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>LoginWindow</class>
+ <widget class="QWidget" name="LoginWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>300</width>
+ <height>200</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>鐧诲綍</string>
+ </property>
+ <widget class="QLabel" name="usernameLabel">
+ <property name="geometry">
+ <rect>
+ <x>30</x>
+ <y>30</y>
+ <width>60</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>鐢ㄦ埛鍚�:</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" name="usernameLineEdit">
+ <property name="geometry">
+ <rect>
+ <x>100</x>
+ <y>30</y>
+ <width>150</width>
+ <height>20</height>
+ </rect>
+ </property>
+ </widget>
+ <widget class="QLabel" name="passwordLabel">
+ <property name="geometry">
+ <rect>
+ <x>30</x>
+ <y>70</y>
+ <width>60</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>瀵嗙爜:</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" name="passwordLineEdit">
+ <property name="geometry">
+ <rect>
+ <x>100</x>
+ <y>70</y>
+ <width>150</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="echoMode">
+ <enum>QLineEdit::Password</enum>
+ </property>
+ </widget>
+ <widget class="QPushButton" name="loginButton">
+ <property name="geometry">
+ <rect>
+ <x>50</x>
+ <y>120</y>
+ <width>80</width>
+ <height>30</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>鐧诲綍</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" name="registerButton">
+ <property name="geometry">
+ <rect>
+ <x>170</x>
+ <y>120</y>
+ <width>80</width>
+ <height>30</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>娉ㄥ唽</string>
+ </property>
+ </widget>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>loginButton</sender>
+ <signal>clicked()</signal>
+ <receiver>LoginWindow</receiver>
+ <slot>on_loginButton_clicked()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>99</x>
+ <y>128</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>149</x>
+ <y>99</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>registerButton</sender>
+ <signal>clicked()</signal>
+ <receiver>LoginWindow</receiver>
+ <slot>on_registerButton_clicked()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>249</x>
+ <y>128</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>149</x>
+ <y>99</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
\ No newline at end of file
diff --git "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/main.cpp" "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/main.cpp"
new file mode 100644
index 0000000..90fd63e
--- /dev/null
+++ "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/main.cpp"
@@ -0,0 +1,19 @@
+#include "mainwindow.h"
+#include "loginwindow.h"
+#include <QApplication>
+
+int main(int argc, char *argv[])
+{
+ QApplication a(argc, argv);
+ LoginWindow loginWindow;
+ MainWindow mainWindow;
+
+ // 杩炴帴鐧诲綍鎴愬姛淇″彿涓庝富绐楀彛鏄剧ず妲藉嚱鏁�
+ QObject::connect(&loginWindow, &LoginWindow::loginSuccess, &mainWindow, &MainWindow::show);
+ QObject::connect(&loginWindow, &LoginWindow::loginSuccess, &loginWindow, &LoginWindow::close);
+
+ // 鏄剧ず鐧诲綍绐楀彛
+ loginWindow.show();
+
+ return a.exec();
+}
\ No newline at end of file
diff --git "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/mainwindow.cpp" "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/mainwindow.cpp"
new file mode 100644
index 0000000..c3713f3
--- /dev/null
+++ "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/mainwindow.cpp"
@@ -0,0 +1,15 @@
+#include "mainwindow.h"
+#include "ui_mainwindow.h"
+
+MainWindow::MainWindow(QWidget *parent) :
+ QMainWindow(parent),
+ ui(new Ui::MainWindow)
+{
+ ui->setupUi(this);
+ setWindowTitle("涓荤晫闈�");
+}
+
+MainWindow::~MainWindow()
+{
+ delete ui;
+}
\ No newline at end of file
diff --git "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/mainwindow.h" "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/mainwindow.h"
new file mode 100644
index 0000000..68883cf
--- /dev/null
+++ "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/mainwindow.h"
@@ -0,0 +1,22 @@
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QMainWindow>
+
+namespace Ui {
+class MainWindow;
+}
+
+class MainWindow : public QMainWindow
+{
+ Q_OBJECT
+
+public:
+ explicit MainWindow(QWidget *parent = nullptr);
+ ~MainWindow();
+
+private:
+ Ui::MainWindow *ui;
+};
+
+#endif // MAINWINDOW_H
\ No newline at end of file
diff --git "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/mainwindow.ui" "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/mainwindow.ui"
new file mode 100644
index 0000000..9bca2da
--- /dev/null
+++ "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/mainwindow.ui"
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>800</width>
+ <height>600</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>涓荤晫闈�</string>
+ </property>
+ <widget class="QWidget" name="centralWidget"/>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources/>
+ <connections/>
+</ui>
\ No newline at end of file
diff --git "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/registerwindow.cpp" "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/registerwindow.cpp"
new file mode 100644
index 0000000..6435959
--- /dev/null
+++ "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/registerwindow.cpp"
@@ -0,0 +1,139 @@
+#include "registerwindow.h"
+#include "ui_registerwindow.h"
+#include "datastructures.h"
+#include <QMessageBox>
+#include <QRegExpValidator>
+#include <QTextCodec>
+
+RegisterWindow::RegisterWindow(QWidget *parent) :
+ QDialog(parent),
+ ui(new Ui::RegisterWindow)
+{
+ ui->setupUi(this);
+ setWindowTitle("娉ㄥ唽");
+
+ // 璁剧疆瀵嗙爜杈撳叆妗嗕负瀵嗙爜妯″紡
+ ui->passwordLineEdit->setEchoMode(QLineEdit::Password);
+ ui->confirmPasswordLineEdit->setEchoMode(QLineEdit::Password);
+}
+
+RegisterWindow::~RegisterWindow()
+{
+ delete ui;
+}
+
+void RegisterWindow::on_registerButton_clicked()
+{
+ QString username = ui->usernameLineEdit->text().trimmed();
+ QString password = ui->passwordLineEdit->text().trimmed();
+ QString confirmPassword = ui->confirmPasswordLineEdit->text().trimmed();
+ QString email = ui->emailLineEdit->text().trimmed();
+ QString tel = ui->telLineEdit->text().trimmed();
+ QString dept = ui->deptLineEdit->text().trimmed();
+
+ if (validateInput(username, password, confirmPassword, email, tel, dept)) {
+ // 鏋勯�犳敞鍐岃姹傜粨鏋勪綋
+ RegisterReq registerReq;
+ strncpy(registerReq.username, username.toUtf8().constData(), sizeof(registerReq.username)-1);
+ strncpy(registerReq.password, password.toUtf8().constData(), sizeof(registerReq.password)-1);
+ strncpy(registerReq.email, email.toUtf8().constData(), sizeof(registerReq.email)-1);
+ strncpy(registerReq.tel, tel.toUtf8().constData(), sizeof(registerReq.tel)-1);
+ strncpy(registerReq.dept, dept.toUtf8().constData(), sizeof(registerReq.dept)-1);
+
+ // 杩欓噷鍙戞敞鍐屽寘
+
+
+ QMessageBox::information(this, "鎴愬姛", "娉ㄥ唽鎴愬姛锛岃鐧诲綍");
+ emit registrationSuccess();
+ close();
+ }
+}
+
+void RegisterWindow::on_cancelButton_clicked()
+{
+ close();
+}
+
+bool RegisterWindow::validateInput(const QString &username, const QString &password, const QString &confirmPassword,
+ const QString &email, const QString &tel, const QString &dept)
+{
+ // 妫�鏌ユ墍鏈夊瓧娈垫槸鍚︿负绌�
+ if (username.isEmpty() || password.isEmpty() || confirmPassword.isEmpty() ||
+ email.isEmpty() || tel.isEmpty() || dept.isEmpty()) {
+ QMessageBox::warning(this, "閿欒", "鎵�鏈夊瓧娈典笉鑳戒负绌�");
+ return false;
+ }
+
+ // 楠岃瘉鐢ㄦ埛鍚�
+ if (!isUsernameValid(username)) {
+ QMessageBox::warning(this, "閿欒", "鐢ㄦ埛鍚嶅彧鑳藉寘鍚腑鏂囥�佸瓧姣嶃�佹暟瀛楀拰涓嬪垝绾匡紝涓旈暱搴︿笉瓒呰繃16浣�");
+ return false;
+ }
+
+ // 楠岃瘉瀵嗙爜
+ if (!isPasswordValid(password)) {
+ QMessageBox::warning(this, "閿欒", "瀵嗙爜闀垮害搴斿湪6-16浣嶄箣闂达紝涓斿彧鑳藉寘鍚瓧姣嶃�佹暟瀛楀拰涓嬪垝绾�");
+ return false;
+ }
+
+ // 楠岃瘉涓ゆ瀵嗙爜鏄惁涓�鑷�
+ if (password != confirmPassword) {
+ QMessageBox::warning(this, "閿欒", "涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鑷�");
+ return false;
+ }
+
+ // 楠岃瘉閭
+ if (!isEmailValid(email)) {
+ QMessageBox::warning(this, "閿欒", "閭鏍煎紡涓嶆纭�");
+ return false;
+ }
+
+ // 楠岃瘉鎵嬫満鍙�
+ if (!isTelValid(tel)) {
+ QMessageBox::warning(this, "閿欒", "鎵嬫満鍙锋牸寮忎笉姝g‘");
+ return false;
+ }
+
+ // 楠岃瘉閮ㄩ棬
+ if (!isDeptValid(dept)) {
+ QMessageBox::warning(this, "閿欒", "閮ㄩ棬鍚嶇О鍙兘鍖呭惈涓枃銆佸瓧姣嶃�佹暟瀛楀拰涓嬪垝绾匡紝涓旈暱搴︿笉瓒呰繃16浣�");
+ return false;
+ }
+
+ return true;
+}
+
+bool RegisterWindow::isUsernameValid(const QString &username)
+{
+ // 鍏佽涓枃銆佸瓧姣嶃�佹暟瀛楀拰涓嬪垝绾匡紝闀垮害1-16浣�
+ QRegExp regex("^[\u4e00-\u9fa5a-zA-Z0-9_]{1,16}$");
+ return regex.exactMatch(username);
+}
+
+bool RegisterWindow::isPasswordValid(const QString &password)
+{
+ // 瀵嗙爜闀垮害6-16浣嶏紝鍖呭惈瀛楁瘝銆佹暟瀛楀拰涓嬪垝绾�
+ QRegExp regex("^[a-zA-Z0-9_]{6,16}$");
+ return regex.exactMatch(password);
+}
+
+bool RegisterWindow::isEmailValid(const QString &email)
+{
+ // 閭鏍煎紡楠岃瘉
+ QRegExp regex("^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$");
+ return regex.exactMatch(email);
+}
+
+bool RegisterWindow::isTelValid(const QString &tel)
+{
+ // 鎵嬫満鍙锋牸寮忛獙璇侊紙绠�鍗曢獙璇�11浣嶆暟瀛楋級
+ QRegExp regex("^1[3-9]\\d{9}$");
+ return regex.exactMatch(tel);
+}
+
+bool RegisterWindow::isDeptValid(const QString &dept)
+{
+ // 閮ㄩ棬鍚嶇О鍏佽涓枃銆佸瓧姣嶃�佹暟瀛楀拰涓嬪垝绾匡紝闀垮害1-16浣�
+ QRegExp regex("^[\u4e00-\u9fa5a-zA-Z0-9_]{1,16}$");
+ return regex.exactMatch(dept);
+}
diff --git "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/registerwindow.h" "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/registerwindow.h"
new file mode 100644
index 0000000..4b41b26
--- /dev/null
+++ "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/registerwindow.h"
@@ -0,0 +1,37 @@
+#ifndef REGISTERWINDOW_H
+#define REGISTERWINDOW_H
+
+#include <QDialog>
+#include <QString>
+
+namespace Ui {
+class RegisterWindow;
+}
+
+class RegisterWindow : public QDialog
+{
+ Q_OBJECT
+
+public:
+ explicit RegisterWindow(QWidget *parent = nullptr);
+ ~RegisterWindow();
+
+signals:
+ void registrationSuccess();
+
+private slots:
+ void on_registerButton_clicked();
+ void on_cancelButton_clicked();
+
+private:
+ Ui::RegisterWindow *ui;
+ bool validateInput(const QString &username, const QString &password, const QString &confirmPassword,
+ const QString &email, const QString &tel, const QString &dept);
+ bool isUsernameValid(const QString &username);
+ bool isPasswordValid(const QString &password);
+ bool isEmailValid(const QString &email);
+ bool isTelValid(const QString &tel);
+ bool isDeptValid(const QString &dept);
+};
+
+#endif // REGISTERWINDOW_H
\ No newline at end of file
diff --git "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/registerwindow.ui" "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/registerwindow.ui"
new file mode 100644
index 0000000..1ad0503
--- /dev/null
+++ "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/registerwindow.ui"
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>RegisterWindow</class>
+ <widget class="QWidget" name="RegisterWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>350</width>
+ <height>350</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>娉ㄥ唽</string>
+ </property>
+ <widget class="QLabel" name="usernameLabel">
+ <property name="geometry">
+ <rect>
+ <x>30</x>
+ <y>20</y>
+ <width>60</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>鐢ㄦ埛鍚�:</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" name="usernameLineEdit">
+ <property name="geometry">
+ <rect>
+ <x>100</x>
+ <y>20</y>
+ <width>200</width>
+ <height>20</height>
+ </rect>
+ </property>
+ </widget>
+ <widget class="QLabel" name="passwordLabel">
+ <property name="geometry">
+ <rect>
+ <x>30</x>
+ <y>60</y>
+ <width>60</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>瀵嗙爜:</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" name="passwordLineEdit">
+ <property name="geometry">
+ <rect>
+ <x>100</x>
+ <y>60</y>
+ <width>200</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="echoMode">
+ <enum>QLineEdit::Password</enum>
+ </property>
+ </widget>
+ <widget class="QLabel" name="confirmPasswordLabel">
+ <property name="geometry">
+ <rect>
+ <x>30</x>
+ <y>100</y>
+ <width>60</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>纭瀵嗙爜:</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" name="confirmPasswordLineEdit">
+ <property name="geometry">
+ <rect>
+ <x>100</x>
+ <y>100</y>
+ <width>200</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="echoMode">
+ <enum>QLineEdit::Password</enum>
+ </property>
+ </widget>
+ <widget class="QLabel" name="emailLabel">
+ <property name="geometry">
+ <rect>
+ <x>30</x>
+ <y>140</y>
+ <width>60</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>閭:</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" name="emailLineEdit">
+ <property name="geometry">
+ <rect>
+ <x>100</x>
+ <y>140</y>
+ <width>200</width>
+ <height>20</height>
+ </rect>
+ </property>
+ </widget>
+ <widget class="QLabel" name="telLabel">
+ <property name="geometry">
+ <rect>
+ <x>30</x>
+ <y>180</y>
+ <width>60</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>鎵嬫満鍙�:</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" name="telLineEdit">
+ <property name="geometry">
+ <rect>
+ <x>100</x>
+ <y>180</y>
+ <width>200</width>
+ <height>20</height>
+ </rect>
+ </property>
+ </widget>
+ <widget class="QLabel" name="deptLabel">
+ <property name="geometry">
+ <rect>
+ <x>30</x>
+ <y>220</y>
+ <width>60</width>
+ <height>20</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>閮ㄩ棬:</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" name="deptLineEdit">
+ <property name="geometry">
+ <rect>
+ <x>100</x>
+ <y>220</y>
+ <width>200</width>
+ <height>20</height>
+ </rect>
+ </property>
+ </widget>
+ <widget class="QPushButton" name="registerButton">
+ <property name="geometry">
+ <rect>
+ <x>70</x>
+ <y>270</y>
+ <width>80</width>
+ <height>30</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>娉ㄥ唽</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" name="cancelButton">
+ <property name="geometry">
+ <rect>
+ <x>190</x>
+ <y>270</y>
+ <width>80</width>
+ <height>30</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>鍙栨秷</string>
+ </property>
+ </widget>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>registerButton</sender>
+ <signal>clicked()</signal>
+ <receiver>RegisterWindow</receiver>
+ <slot>on_registerButton_clicked()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>119</x>
+ <y>278</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>174</x>
+ <y>174</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>cancelButton</sender>
+ <signal>clicked()</signal>
+ <receiver>RegisterWindow</receiver>
+ <slot>on_cancelButton_clicked()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>239</x>
+ <y>278</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>174</x>
+ <y>174</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
\ No newline at end of file
diff --git "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/users.sql" "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/users.sql"
new file mode 100644
index 0000000..052b5d1
--- /dev/null
+++ "b/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/users.sql"
@@ -0,0 +1,30 @@
+-- 鍏堝垹闄ゅ彲鑳藉凡瀛樺湪鐨勮〃锛堥伩鍏嶉噸澶嶅垱寤洪敊璇級
+DROP TABLE IF EXISTS users;
+CREATE TABLE users (
+ id INTEGER PRIMARY KEY AUTOINCREMENT, -- 鑷涓婚敭
+ username VARCHAR(16) NOT NULL UNIQUE, -- 鐢ㄦ埛鍚�(1-16瀛楃)
+ password VARCHAR(16) NOT NULL, -- 瀵嗙爜(6-16瀛楃)
+ email VARCHAR(255) NOT NULL UNIQUE, -- 鐢靛瓙閭
+ tel VARCHAR(11) NOT NULL UNIQUE, -- 鎵嬫満鍙�(11浣�)
+ dept VARCHAR(16) NOT NULL, -- 閮ㄩ棬鍚嶇О(1-16瀛楃)
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 鍒涘缓鏃堕棿
+
+ -- 瀛楁绾︽潫鏉′欢
+ CHECK (length(username) BETWEEN 1 AND 16), -- 鐢ㄦ埛鍚嶉暱搴︽鏌�
+
+ CHECK (length(password) BETWEEN 6 AND 16), -- 瀵嗙爜闀垮害妫�鏌�
+ CHECK (password GLOB '*[^a-zA-Z0-9_]*' = 0), -- 瀵嗙爜瀛楃妫�鏌�
+
+ CHECK (email LIKE '%_@__%.__%'), -- 閭鏍煎紡鍩虹妫�鏌�
+ CHECK (email GLOB '*[^a-zA-Z0-9._%+-@]*' = 0), -- 閭瀛楃妫�鏌�
+
+ CHECK (length(tel) = 11), -- 鎵嬫満鍙烽暱搴︽鏌�
+ CHECK (tel GLOB '1[3-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), -- 鎵嬫満鍙锋牸寮忔鏌�
+
+ CHECK (length(dept) BETWEEN 1 AND 16) -- 閮ㄩ棬鍚嶇О闀垮害妫�鏌�
+);
+
+-- 鍒涘缓鏌ヨ绱㈠紩锛堟彁楂樻煡璇㈡�ц兘锛�
+CREATE INDEX idx_username ON users(username); -- 鐢ㄦ埛鍚嶇储寮�
+CREATE INDEX idx_email ON users(email); -- 閭绱㈠紩
+CREATE INDEX idx_tel ON users(tel); -- 鎵嬫満鍙风储寮�
\ No newline at end of file
diff --git "a/Client/\350\210\222\346\265\267\346\236\227/log/\346\227\245\345\277\227_\350\210\222\346\265\267\346\236\227_0629.doc" "b/Client/\350\210\222\346\265\267\346\236\227/log/\346\227\245\345\277\227_\350\210\222\346\265\267\346\236\227_0629.doc"
new file mode 100644
index 0000000..7170017
--- /dev/null
+++ "b/Client/\350\210\222\346\265\267\346\236\227/log/\346\227\245\345\277\227_\350\210\222\346\265\267\346\236\227_0629.doc"
Binary files differ
diff --git "a/Client/\351\231\210\350\261\252/log/\346\227\245\345\277\227_\351\231\210\350\261\252_250627.doc" "b/Client/\351\231\210\350\261\252/log/\346\227\245\345\277\227_\351\231\210\350\261\252_250627.doc"
new file mode 100644
index 0000000..3972207
--- /dev/null
+++ "b/Client/\351\231\210\350\261\252/log/\346\227\245\345\277\227_\351\231\210\350\261\252_250627.doc"
Binary files differ
diff --git "a/Client/\351\255\217\345\274\272/code/LogExportModule_PageSizeFinal.zip" "b/Client/\351\255\217\345\274\272/code/LogExportModule_PageSizeFinal.zip"
new file mode 100644
index 0000000..221cc7d
--- /dev/null
+++ "b/Client/\351\255\217\345\274\272/code/LogExportModule_PageSizeFinal.zip"
Binary files differ
diff --git "a/Client/\351\255\217\345\274\272/code/LogExportModule_PageSizeFinal_changeOK.rar" "b/Client/\351\255\217\345\274\272/code/LogExportModule_PageSizeFinal_changeOK.rar"
new file mode 100644
index 0000000..d989a3c
--- /dev/null
+++ "b/Client/\351\255\217\345\274\272/code/LogExportModule_PageSizeFinal_changeOK.rar"
Binary files differ
diff --git "a/Client/\351\255\217\345\274\272/code/log_table.sql" "b/Client/\351\255\217\345\274\272/code/log_table.sql"
new file mode 100644
index 0000000..14cf323
--- /dev/null
+++ "b/Client/\351\255\217\345\274\272/code/log_table.sql"
@@ -0,0 +1,23 @@
+-- 鍒涘缓鏃ュ織琛�
+CREATE TABLE IF NOT EXISTS log_entries (
+ id INTEGER PRIMARY KEY AUTOINCREMENT, -- 涓婚敭锛岃嚜澧� ID
+ timestamp DATETIME NOT NULL, -- 鏃ュ織鏃堕棿鎴�
+ level VARCHAR(10) NOT NULL, -- 鏃ュ織绾у埆锛圛NFO/WARN/ERROR锛�
+ module VARCHAR(50), -- 鎵�灞炴ā鍧楋紙濡侷PC銆乁I锛�
+ source_file VARCHAR(100), -- 鏉ユ簮鏂囦欢鍚�
+ line_number INTEGER, -- 琛屽彿
+ message TEXT NOT NULL, -- 鏃ュ織娑堟伅
+ extra TEXT -- 鍙�夋墿灞曚俊鎭紙濡侸SON瀛楃涓诧級
+);
+
+-- 鎻掑叆绀轰緥鏁版嵁
+INSERT INTO log_entries (timestamp, level, module, source_file, line_number, message, extra)
+VALUES (
+ '2025-06-29 16:00:00',
+ 'ERROR',
+ 'CAN',
+ 'can_driver.cpp',
+ 125,
+ 'CAN 璁惧鍒濆鍖栧け璐�',
+ '{"thread_id": "0x12345", "user_id": "admin"}'
+);
diff --git "a/Client/\351\255\217\345\274\272/document/log_table_structure.docx" "b/Client/\351\255\217\345\274\272/document/log_table_structure.docx"
new file mode 100644
index 0000000..37508ed
--- /dev/null
+++ "b/Client/\351\255\217\345\274\272/document/log_table_structure.docx"
Binary files differ
diff --git "a/Client/\351\255\217\345\274\272/document/\346\227\245\345\277\227\351\234\200\346\261\202\345\210\206\346\236\220\346\226\207\346\241\243.docx" "b/Client/\351\255\217\345\274\272/document/\346\227\245\345\277\227\351\234\200\346\261\202\345\210\206\346\236\220\346\226\207\346\241\243.docx"
index aa9f15a..624e618 100644
--- "a/Client/\351\255\217\345\274\272/document/\346\227\245\345\277\227\351\234\200\346\261\202\345\210\206\346\236\220\346\226\207\346\241\243.docx"
+++ "b/Client/\351\255\217\345\274\272/document/\346\227\245\345\277\227\351\234\200\346\261\202\345\210\206\346\236\220\346\226\207\346\241\243.docx"
Binary files differ
diff --git "a/Client/\351\255\217\345\274\272/log/~$_\351\255\217\345\274\272_0626.doc" "b/Client/\351\255\217\345\274\272/log/~$_\351\255\217\345\274\272_0626.doc"
deleted file mode 100644
index 035e78c..0000000
--- "a/Client/\351\255\217\345\274\272/log/~$_\351\255\217\345\274\272_0626.doc"
+++ /dev/null
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp" "b/Client/\351\255\217\345\274\272/log/\346\227\245\345\277\227_\351\255\217\345\274\272_0627.doc"
similarity index 60%
copy from "Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
copy to "Client/\351\255\217\345\274\272/log/\346\227\245\345\277\227_\351\255\217\345\274\272_0627.doc"
index 17190ff..f6ecd92 100644
--- "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
+++ "b/Client/\351\255\217\345\274\272/log/\346\227\245\345\277\227_\351\255\217\345\274\272_0627.doc"
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp" "b/Client/\351\255\217\345\274\272/log/\346\227\245\345\277\227_\351\255\217\345\274\272_0629.doc"
similarity index 60%
copy from "Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
copy to "Client/\351\255\217\345\274\272/log/\346\227\245\345\277\227_\351\255\217\345\274\272_0629.doc"
index 17190ff..1db4b6a 100644
--- "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
+++ "b/Client/\351\255\217\345\274\272/log/\346\227\245\345\277\227_\351\255\217\345\274\272_0629.doc"
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp" "b/Client/\351\255\217\345\274\272/log/\346\227\245\345\277\227_\351\255\217\345\274\272_0630.doc"
similarity index 60%
copy from "Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
copy to "Client/\351\255\217\345\274\272/log/\346\227\245\345\277\227_\351\255\217\345\274\272_0630.doc"
index 17190ff..c1d7ece 100644
--- "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
+++ "b/Client/\351\255\217\345\274\272/log/\346\227\245\345\277\227_\351\255\217\345\274\272_0630.doc"
Binary files differ
diff --git a/Server/common_type.h b/Server/common_type.h
index f9524ae..22b8098 100644
--- a/Server/common_type.h
+++ b/Server/common_type.h
@@ -1,31 +1,44 @@
#ifndef TCPDATATYPE_H
#define TCPDATATYPE_H
-/* */
+
+/*
+ * 瀹㈡埛绔笌鏈嶅姟鍣ㄤ氦浜掔殑鍔ㄤ綔绫诲瀷鏋氫妇
+ * 娉ㄦ剰锛氫娇鐢� enum class 閬垮厤鍛藉悕鍐茬獊锛圕++11鐗规�э級
+ */
enum class ActionType
{
- HeartCheck = 100,
- Login = 110,
- Register = 120,
- Msg = 200,
- Download = 300
+ HeartCheck = 100, // 蹇冭烦妫�娴嬶紙淇濇寔杩炴帴娲绘�э級
+ Login = 110, // 鐧诲綍璇锋眰
+ Register = 120, // 娉ㄥ唽璇锋眰
+ Msg = 200, // 鏅�氭秷鎭紶杈�
+ Download = 300 // 鏂囦欢涓嬭浇璇锋眰
};
-/* 慰 HTTP 应 */
+
+/*
+ * HTTP椋庢牸鍝嶅簲鐘舵�佺爜锛堢畝鍖栫増锛�
+ * 鐢ㄤ簬鏈嶅姟鍣ㄥ悜瀹㈡埛绔繑鍥炴搷浣滅粨鏋滅姸鎬�
+ */
enum class ResponseCode
{
- ResponseOK = 200, // 晒
- BadRequest = 400, // 突 螅 薹
- Unauthorized = 401, // 要 没 证
- Forbidden = 403, // 突 说 螅 蔷芫 执 写
- NotFound = 404, // 薹 业 源
- MethodNotAllowed = 405 // 突 械姆 止
-
+ ResponseOK = 200, // 鎴愬姛锛圤K锛�
+ BadRequest = 400, // 閿欒璇锋眰锛堝鎴风璇锋眰璇硶閿欒锛�
+ Unauthorized = 401, // 鏈巿鏉冿紙闇�瑕佽韩浠介獙璇侊級
+ Forbidden = 403, // 绂佹璁块棶锛堟潈闄愪笉瓒筹級
+ NotFound = 404, // 鏈壘鍒帮紙璇锋眰璧勬簮涓嶅瓨鍦級
+ MethodNotAllowed = 405 // 鏂规硶涓嶅厑璁革紙濡傜敤GET璇锋眰POST鎺ュ彛锛�
};
-/* 息 */
+
+/*
+ * 閫氱敤娑堟伅澶寸粨鏋勶紙鎵�鏈夋暟鎹寘蹇呴』鍖呭惈锛�
+ * 浣滅敤锛氭爣璇嗘秷鎭被鍨嬪拰鍩烘湰淇℃伅
+ */
struct Head
{
- ActionType type;
- int len;
- int version;
+ ActionType type; // 娑堟伅绫诲瀷锛堝搴擜ctionType鏋氫妇锛�
+ int len; // 鏁翠釜鏁版嵁鍖呯殑闀垮害锛堝瓧鑺傛暟锛�
+ int version; // 鍗忚鐗堟湰鍙凤紙鐢ㄤ簬鍏煎鎬ф帶鍒讹級
+
+ // 鏋勯�犲嚱鏁帮紙鍒濆鍖栨椂蹇呴』鎻愪緵涓変釜鍙傛暟锛�
Head(ActionType ptype, int plen, int pversion)
{
len = plen;
@@ -33,40 +46,61 @@
version = pversion;
}
};
-struct HeartCheckReq //
+
+/*
+ * 蹇冭烦妫�娴嬭姹傜粨鏋�
+ * 鐗圭偣锛氬浐瀹氱被鍨嬪拰闀垮害锛堜笉闇�瑕侀澶栨暟鎹級
+ */
+struct HeartCheckReq
{
- ActionType type;
- int len;
+ ActionType type; // 鍥哄畾涓篈ctionType::HeartCheck
+ int len; // 缁撴瀯浣撹嚜韬ぇ灏�
+
HeartCheckReq()
{
type = ActionType::HeartCheck;
- len = sizeof(HeartCheckReq);
+ len = sizeof(HeartCheckReq); // 鑷姩璁$畻缁撴瀯浣撳ぇ灏�
}
};
-struct HeartCheckRes // 应
+/*
+ * 蹇冭烦妫�娴嬪搷搴旂粨鏋�
+ * 娉ㄦ剰锛氫笌璇锋眰缁撴瀯鐩稿悓锛堝疄闄呭彲鑳藉寘鍚湇鍔″櫒鐘舵�佷俊鎭級
+ */
+struct HeartCheckRes
{
- ActionType type;
- int len;
+ ActionType type; // 鍥哄畾涓篈ctionType::HeartCheck
+ int len; // 缁撴瀯浣撹嚜韬ぇ灏�
+
HeartCheckRes()
{
type = ActionType::HeartCheck;
len = sizeof(HeartCheckRes);
}
};
+
+/*
+ * 鐢ㄦ埛娉ㄥ唽璇锋眰缁撴瀯
+ * 缁勬垚锛氭秷鎭ご + 鐢ㄦ埛淇℃伅瀛楁
+ */
struct RegisterRequest
{
- Head head;
- char name[64];
- char password[64];
- char email[32];
- char phone[32];
+ Head head; // 蹇呴』鍖呭惈鐨勬秷鎭ご
+ char name[64]; // 鐢ㄦ埛鍚嶏紙鍥哄畾闀垮害64瀛楄妭锛�
+ char password[64];// 瀵嗙爜锛堝缓璁姞瀵嗗瓨鍌級
+ char email[32]; // 閭锛堢敤浜庢壘鍥炲瘑鐮侊級
+ char phone[32]; // 鎵嬫満鍙凤紙鍙�夐獙璇侊級
};
+
+/*
+ * 鐢ㄦ埛鐧诲綍璇锋眰缁撴瀯
+ * 娉ㄦ剰锛氭瘮娉ㄥ唽璇锋眰灏戦偖绠卞拰鎵嬫満瀛楁
+ */
struct LoginRequest
{
-
- Head head;
- char name[64];
- char password[64];
+ Head head; // 娑堟伅澶达紙type搴斾负ActionType::Login锛�
+ char name[64]; // 鐢ㄦ埛鍚�
+ char password[64];// 瀵嗙爜锛堝缓璁姞瀵嗕紶杈擄級
};
-#endif
+
+#endif // TCPDATATYPE_H
\ No newline at end of file
diff --git "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp" "b/Server/\345\210\230\346\226\214/log/\346\227\245\345\277\227_\345\210\230\346\226\214_20250626.doc"
similarity index 70%
copy from "Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
copy to "Server/\345\210\230\346\226\214/log/\346\227\245\345\277\227_\345\210\230\346\226\214_20250626.doc"
index 17190ff..c029260 100644
--- "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
+++ "b/Server/\345\210\230\346\226\214/log/\346\227\245\345\277\227_\345\210\230\346\226\214_20250626.doc"
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp" "b/Server/\345\210\230\346\226\214/log/\346\227\245\345\277\227_\345\210\230\346\226\214_20250628.doc"
similarity index 69%
copy from "Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
copy to "Server/\345\210\230\346\226\214/log/\346\227\245\345\277\227_\345\210\230\346\226\214_20250628.doc"
index 17190ff..d638ccb 100644
--- "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
+++ "b/Server/\345\210\230\346\226\214/log/\346\227\245\345\277\227_\345\210\230\346\226\214_20250628.doc"
Binary files differ
diff --git "a/Server/\345\276\220\351\200\270\345\207\241/log/\346\227\245\345\277\227_\345\276\220\351\200\270\345\207\241_250628.doc" "b/Server/\345\276\220\351\200\270\345\207\241/log/\346\227\245\345\277\227_\345\276\220\351\200\270\345\207\241_250628.doc"
new file mode 100644
index 0000000..2ae5173
--- /dev/null
+++ "b/Server/\345\276\220\351\200\270\345\207\241/log/\346\227\245\345\277\227_\345\276\220\351\200\270\345\207\241_250628.doc"
Binary files differ
diff --git "a/Server/\345\276\220\351\200\270\345\207\241/log/\346\227\245\345\277\227_\345\276\220\351\200\270\345\207\241_250701.doc" "b/Server/\345\276\220\351\200\270\345\207\241/log/\346\227\245\345\277\227_\345\276\220\351\200\270\345\207\241_250701.doc"
new file mode 100644
index 0000000..fd490d6
--- /dev/null
+++ "b/Server/\345\276\220\351\200\270\345\207\241/log/\346\227\245\345\277\227_\345\276\220\351\200\270\345\207\241_250701.doc"
Binary files differ
diff --git "a/Server/\346\236\227\344\275\231\346\235\260/log/\346\227\245\345\277\227_\346\236\227\344\275\231\346\235\260_20250626.doc" "b/Server/\346\236\227\344\275\231\346\235\260/log/\346\227\245\345\277\227_\346\236\227\344\275\231\346\235\260_20250626.doc"
new file mode 100644
index 0000000..e8b15b6
--- /dev/null
+++ "b/Server/\346\236\227\344\275\231\346\235\260/log/\346\227\245\345\277\227_\346\236\227\344\275\231\346\235\260_20250626.doc"
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/code/config.rar" "b/Server/\346\242\201\345\215\232/code/config.rar"
new file mode 100644
index 0000000..ce852ea
--- /dev/null
+++ "b/Server/\346\242\201\345\215\232/code/config.rar"
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/log/~$_\346\242\201\345\215\232_0624.doc" "b/Server/\346\242\201\345\215\232/log/~$_\346\242\201\345\215\232_0624.doc"
deleted file mode 100644
index 7cf3296..0000000
--- "a/Server/\346\242\201\345\215\232/log/~$_\346\242\201\345\215\232_0624.doc"
+++ /dev/null
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp" "b/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc"
similarity index 74%
copy from "Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
copy to "Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc"
index 17190ff..7387a3b 100644
--- "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
+++ "b/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc"
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp" "b/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc"
similarity index 74%
copy from "Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
copy to "Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc"
index 17190ff..7387a3b 100644
--- "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
+++ "b/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc"
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp" "b/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~\346\227\245\346\212\245\346\217\220\344\272\244"
similarity index 74%
copy from "Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
copy to "Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~\346\227\245\346\212\245\346\217\220\344\272\244"
index 17190ff..7387a3b 100644
--- "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
+++ "b/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~\346\227\245\346\212\245\346\217\220\344\272\244"
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp" "b/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0627.doc"
similarity index 74%
rename from "Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
rename to "Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0627.doc"
index 17190ff..4a30bf2 100644
--- "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
+++ "b/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0627.doc"
Binary files differ
diff --git "a/Server/\346\256\265\345\273\266\345\206\262/log/\346\227\245\345\277\227_\346\256\265\345\273\266\345\206\262_0626.doc" "b/Server/\346\256\265\345\273\266\345\206\262/log/\346\227\245\345\277\227_\346\256\265\345\273\266\345\206\262_0626.doc"
new file mode 100644
index 0000000..8a3c03e
--- /dev/null
+++ "b/Server/\346\256\265\345\273\266\345\206\262/log/\346\227\245\345\277\227_\346\256\265\345\273\266\345\206\262_0626.doc"
Binary files differ
diff --git "a/Server/\346\261\252\345\215\253\345\206\233/code/ImageStorage.cpp" "b/Server/\346\261\252\345\215\253\345\206\233/code/ImageStorage.cpp"
deleted file mode 100644
index b43bc2e..0000000
--- "a/Server/\346\261\252\345\215\253\345\206\233/code/ImageStorage.cpp"
+++ /dev/null
@@ -1,54 +0,0 @@
-// ImageStorage.cpp - 照片存储模块实现
-#include "stdafx.h"
-#include "ImageStorage.h"
-#include <fstream>
-#include <opencv2/opencv.hpp>
-
-ImageStorage::ImageStorage() {}
-
-ImageStorage::~ImageStorage() {}
-
-bool ImageStorage::SaveImage(const std::string& filePath, const unsigned char* imageData,
- int width, int height) {
- try {
- // 创建OpenCV图像
- cv::Mat image(height, width, CV_8UC3, const_cast<unsigned char*>(imageData));
-
- // 保存图像
- return cv::imwrite(filePath, image);
- }
- catch (const std::exception& e) {
- std::cerr << "保存图像失败: " << e.what() << std::endl;
- return false;
- }
-}
-
-bool ImageStorage::LoadImage(const std::string& filePath, unsigned char*& imageData,
- int& width, int& height) const {
- try {
- // 加载图像
- cv::Mat image = cv::imread(filePath, cv::IMREAD_COLOR);
-
- if (image.empty()) {
- return false;
- }
-
- // 分配内存并复制数据
- width = image.cols;
- height = image.rows;
- size_t dataSize = width * height * 3;
-
- imageData = new unsigned char[dataSize];
- memcpy(imageData, image.data, dataSize);
-
- return true;
- }
- catch (const std::exception& e) {
- std::cerr << "加载图像失败: " << e.what() << std::endl;
- return false;
- }
-}
-
-bool ImageStorage::DeleteImage(const std::string& filePath) {
- return (remove(filePath.c_str()) == 0);
-}
\ No newline at end of file
diff --git "a/Server/\346\261\252\345\215\253\345\206\233/code/ImageStorage.h" "b/Server/\346\261\252\345\215\253\345\206\233/code/ImageStorage.h"
deleted file mode 100644
index 3b754d6..0000000
--- "a/Server/\346\261\252\345\215\253\345\206\233/code/ImageStorage.h"
+++ /dev/null
@@ -1,17 +0,0 @@
-// ImageStorage.h - 照片存储模块
-#pragma once
-#include <string>
-#include <vector>
-#include "FaceImageManager.h"
-
-class ImageStorage {
-public:
- ImageStorage();
- ~ImageStorage();
-
- bool SaveImage(const std::string& filePath, const unsigned char* imageData,
- int width, int height);
- bool LoadImage(const std::string& filePath, unsigned char*& imageData,
- int& width, int& height) const;
- bool DeleteImage(const std::string& filePath);
-};
\ No newline at end of file
diff --git "a/Server/\346\261\252\345\215\253\345\206\233/code/\345\233\276\345\203\217\345\244\204\347\220\206.rar" "b/Server/\346\261\252\345\215\253\345\206\233/code/\345\233\276\345\203\217\345\244\204\347\220\206.rar"
new file mode 100644
index 0000000..84ae583
--- /dev/null
+++ "b/Server/\346\261\252\345\215\253\345\206\233/code/\345\233\276\345\203\217\345\244\204\347\220\206.rar"
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp" "b/Server/\346\261\252\345\215\253\345\206\233/log/\346\227\245\345\277\227_\346\261\252\345\215\253\345\206\233_0626.doc"
similarity index 63%
copy from "Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
copy to "Server/\346\261\252\345\215\253\345\206\233/log/\346\227\245\345\277\227_\346\261\252\345\215\253\345\206\233_0626.doc"
index 17190ff..34957f4 100644
--- "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
+++ "b/Server/\346\261\252\345\215\253\345\206\233/log/\346\227\245\345\277\227_\346\261\252\345\215\253\345\206\233_0626.doc"
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp" "b/Server/\346\261\252\345\215\253\345\206\233/log/\346\227\245\345\277\227_\346\261\252\345\215\253\345\206\233_0629.doc"
similarity index 63%
copy from "Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
copy to "Server/\346\261\252\345\215\253\345\206\233/log/\346\227\245\345\277\227_\346\261\252\345\215\253\345\206\233_0629.doc"
index 17190ff..4e3d6fa 100644
--- "a/Server/\346\242\201\345\215\232/log/~WRL0005.tmp"
+++ "b/Server/\346\261\252\345\215\253\345\206\233/log/\346\227\245\345\277\227_\346\261\252\345\215\253\345\206\233_0629.doc"
Binary files differ
diff --git "a/Server/\346\261\252\345\215\253\345\206\233/log/\346\227\245\345\277\227_\346\261\252\345\215\253\345\206\233_0702.doc" "b/Server/\346\261\252\345\215\253\345\206\233/log/\346\227\245\345\277\227_\346\261\252\345\215\253\345\206\233_0702.doc"
new file mode 100644
index 0000000..ed55814
--- /dev/null
+++ "b/Server/\346\261\252\345\215\253\345\206\233/log/\346\227\245\345\277\227_\346\261\252\345\215\253\345\206\233_0702.doc"
Binary files differ
diff --git "a/Server/\350\203\241\351\207\215\351\230\263/log/\346\225\260\346\215\256\346\250\241\345\236\213\351\242\204\345\244\204\347\220\206\346\227\245\345\277\227_\350\203\241\351\207\215\351\230\263_20250626.doc" "b/Server/\350\203\241\351\207\215\351\230\263/log/\346\225\260\346\215\256\346\250\241\345\236\213\351\242\204\345\244\204\347\220\206\346\227\245\345\277\227_\350\203\241\351\207\215\351\230\263_20250626.doc"
new file mode 100644
index 0000000..97021c0
--- /dev/null
+++ "b/Server/\350\203\241\351\207\215\351\230\263/log/\346\225\260\346\215\256\346\250\241\345\236\213\351\242\204\345\244\204\347\220\206\346\227\245\345\277\227_\350\203\241\351\207\215\351\230\263_20250626.doc"
Binary files differ
diff --git "a/Server/\350\203\241\351\207\215\351\230\263/log/\346\225\260\346\215\256\346\250\241\345\236\213\351\242\204\345\244\204\347\220\206\346\227\245\345\277\227_\350\203\241\351\207\215\351\230\263_20250628.doc" "b/Server/\350\203\241\351\207\215\351\230\263/log/\346\225\260\346\215\256\346\250\241\345\236\213\351\242\204\345\244\204\347\220\206\346\227\245\345\277\227_\350\203\241\351\207\215\351\230\263_20250628.doc"
new file mode 100644
index 0000000..3da8f4a
--- /dev/null
+++ "b/Server/\350\203\241\351\207\215\351\230\263/log/\346\225\260\346\215\256\346\250\241\345\236\213\351\242\204\345\244\204\347\220\206\346\227\245\345\277\227_\350\203\241\351\207\215\351\230\263_20250628.doc"
Binary files differ
diff --git "a/~$\350\232\202\350\232\201\346\231\272\350\203\275\347\275\221\350\201\224\351\241\271\347\233\256\345\210\206\345\267\245\350\241\250.xlsx" "b/~$\350\232\202\350\232\201\346\231\272\350\203\275\347\275\221\350\201\224\351\241\271\347\233\256\345\210\206\345\267\245\350\241\250.xlsx"
deleted file mode 100644
index 18d27b9..0000000
--- "a/~$\350\232\202\350\232\201\346\231\272\350\203\275\347\275\221\350\201\224\351\241\271\347\233\256\345\210\206\345\267\245\350\241\250.xlsx"
+++ /dev/null
Binary files differ
diff --git "a/\345\212\237\350\203\275\346\250\241\345\235\227_\344\273\213\347\273\215.txt" "b/\345\212\237\350\203\275\346\250\241\345\235\227_\344\273\213\347\273\215.txt"
new file mode 100644
index 0000000..430e3b2
--- /dev/null
+++ "b/\345\212\237\350\203\275\346\250\241\345\235\227_\344\273\213\347\273\215.txt"
@@ -0,0 +1,630 @@
+
+
+
+妯″潡鍒掑垎锛�
+
+瀹㈡埛绔細C --Qt寮�鍙戠晫闈�--璺ㄥ钩鍙颁娇鐢�
+
+缁熶竴鐨勮姹傦細
+ 鍔熻兘缁撴瀯浣擄細
+ 璇锋眰缁撴瀯浣擄細
+ 鏁版嵁澶�--鍥哄畾
+ 鏁版嵁浣�--涓嶅悓妯″潡锛屼笉涓�鏍�
+
+ 鍝嶅簲缁撴瀯浣擄細
+ 鏁版嵁澶�
+ 鏁版嵁浣�
+
+ 涓句緥锛�
+ enum TypeInfo
+ {
+ REGISTER_REQ, // 娉ㄥ唽璇锋眰
+ REGISTER_RES, // 娉ㄥ唽鍝嶅簲
+ };
+
+ struct Head // 閫氱敤
+ {
+ int type;
+ int len;
+ };
+ 浠ユ敞鍐屼负渚嬶細
+
+
+ struct RegisterReq
+ {
+ Head head;
+
+ char username[32];
+ char password[32];
+ char email[32];
+ char tel[32];
+ char department[32];
+
+ RegisterReq()
+ {
+ head.type = REGISTER_REQ;
+ head.len = sizeof(RegisterReq);
+ }
+ };
+
+ struct RegisterRes
+ {
+ Head head;
+
+ char username[32];
+ int status;
+
+ RegisterRes()
+ {
+ head.type = REGISTER_RES;
+ head.len = sizeof(RegisterRes);
+ }
+ };
+
+3鏄� 1銆佹敞鍐岀櫥褰�
+ 娉ㄥ唽锛�
+ 杈撳叆淇℃伅锛氱敤鎴峰悕銆佸瘑鐮併�佺‘璁ゅ瘑鐮併�侀偖绠便�佹墜鏈哄彿銆侀儴闂�
+ 鑷姩琛ュ厖鐨勪俊鎭細鐘舵�併�佹敞鍐屾椂闂淬�侀粯璁ょ殑鏉冮檺--鍦ㄦ湇鍔$琛ュ厖
+
+ 鏍¢獙锛氬鎴风鏈湴鏍¢獙锛氱敤鎴峰悕銆佸瘑鐮併�佸悎娉曞瓧绗︾殑鍒ゆ柇
+ 閭銆佹墜鏈哄彿鏍煎紡鐨勫垽鏂�佷袱娆″瘑鐮佹瘮杈冩槸鍚︿竴鏍�
+
+ 鏈嶅姟绔簩娆℃牎楠岋細鐢ㄦ埛鍚嶃�佸瘑鐮併�佸悎娉曞瓧绗︾殑鍒ゆ柇
+ 鏈嶅姟绔垽鏂細鐢ㄦ埛鍚嶆槸鍚﹀瓨鍦紝涓嶅瓨鍦ㄥ垯鍐欏叆[鐢ㄦ埛鍚嶅敮涓�]
+
+ 瀹夊叏锛氬瘑鐮佸姞瀵嗙殑澶勭悊锛岄槻姝㈡槑鏂囦紶杈撳拰鏄庢枃鏄剧ず
+ 鍔犲瘑绠楁硶锛氬弻鍚戦潪瀵圭О鍔犲瘑 RSA 鍏挜--绉侀挜锛氬叕閽ュ姞瀵嗭紝绉侀挜瑙e瘑
+ 瀹㈡埛绔細鎷垮埌鍏挜锛屽姞瀵嗭紝鏀惧埌缁撴瀯浣撻噷闈紶杈撳瘑鏂�
+ 鏈嶅姟绔細鐢ㄧ閽ヨВ瀵嗭紝寰楀埌瀵嗙爜鏄庢枃
+
+ 鍏挜銆佺閽ョ殑浜х敓锛屾槸鍦ㄦ湇鍔$姣忔闅忔満鐢熸垚鍥哄畾闀垮害鐨勪竴缁勫瘑閽�
+ 灏嗗叕閽ュ彂缁欏搴旂殑瀹㈡埛绔紝绉侀挜鍦ㄦ湇鍔$鐣欑潃鐢ㄦ潵瑙e瘑瀵嗘枃
+
+ 鍘熷鍐呭锛�123456
+ 瀵嗛挜锛氬叕閽� xxww99
+ 鍔犲瘑绠楁硶锛�(2涓弬鏁帮細鍘熷鍐呭锛屽瘑閽�-鍏挜) --> 杩斿洖璁$畻缁撴灉锛氬瘑鏂囷細x8sdsdsaxxxxadsadsadsadsda889e21ess
+
+ 瀵嗛挜锛氱閽� uuyy84
+ 灏嗗瘑鏂囧彂缁欏彟涓�绔箣鍚庯紝瑙e瘑绠楁硶(2涓弬鏁帮細瀵嗘枃,瀵嗛挜-绉侀挜)--> 鏄庢枃锛�123456
+
+ 鐧诲綍锛�
+ 杈撳叆淇℃伅锛氱敤鎴峰悕銆佸瘑鐮併�侀獙璇佺爜[鍙�塢
+ 鏍¢獙锛氬鎴风鏈湴鏍¢獙锛氱敤鎴峰悕銆佸瘑鐮併�佸悎娉曞瓧绗︾殑鍒ゆ柇
+ 鏈嶅姟绔簩娆℃牎楠岋細鐢ㄦ埛鍚嶃�佸瘑鐮併�佸悎娉曞瓧绗︾殑鍒ゆ柇
+ 瀹夊叏锛氬瘑鐮佸姞瀵嗙殑澶勭悊锛岄槻姝㈡槑鏂囦紶杈撳拰鏄庢枃鏄剧ず
+
+ 鐘舵�侊細鎴愬姛--鏄剧ず涓荤晫闈�--鏍规嵁鐢ㄦ埛鎷ユ湁鐨勬潈闄愶紝鏉ユ樉绀轰笉鍚岀殑瀛愮晫闈�
+ 澶辫触--鍐嶆鐧诲綍
+
+ UI缇庡寲锛歈SS鏍峰紡缇庡寲
+ --------------------------------------------
+ 鏁版嵁搴撹〃锛氱敤鎴蜂俊鎭〃銆佽鑹叉潈闄愯〃
+ ---------------------------------------------
+
+
+
+5鏄� 2銆佽�冨嫟璇嗗埆銆佺鐞嗐�佸紓甯稿鐞�
+ 鑰冨嫟璇嗗埆锛�
+ AI璇嗗埆锛岄渶瑕佷紶鍏ュ浘鐗囷紝灏嗗浘鐗囨斁鍒癆I绠楁硶閲岄潰璋冪敤妯″瀷杩涜璇嗗埆锛岃繑鍥炴墍灞炵殑鍒嗙被锛岄�氳繃鍒嗙被ID鑾峰彇鏁版嵁搴撻噷闈㈢敤鎴蜂俊鎭〃涓殑鐢ㄦ埛淇℃伅锛屽苟涓斿皢淇℃伅灞曠ず鍒扮晫闈笂銆�
+
+ 鑾峰彇鍥剧墖锛氭墦寮�鎽勫儚澶�--鑾峰彇涓�寮犳湁浜鸿劯鐨勭収鐗�
+ OpenCV搴撴潵鎵撳紑鎽勫儚澶村苟鑾峰彇浜鸿劯鐓х墖
+
+ 鏈嶅姟绔瘑鍒細瀹㈡埛绔笂浼犲浘鐗囧埌鏈嶅姟绔紝璋冪敤鏈嶅姟绔疉I绠楁硶锛岃繑鍥炶瘑鍒粨鏋�
+ 鏈湴璇嗗埆锛氶渶瑕佸湪瀹㈡埛绔満鍣ㄤ笂閮ㄧ讲AI妯″瀷锛屽皢鍥剧墖浼犲叆璋冪敤AI绠楁硶璇嗗埆锛屾嬁鍒板垎绫籌D锛屽啀鎶奍D鍙戦�佺粰鏈嶅姟绔紝杩涜鏁版嵁搴撴煡璇紝鎷垮埌鏌ヨ缁撴灉锛屽湪瀹㈡埛绔疷I灞曠ず
+
+ 璇嗗埆锛氭垚鍔�--瑕佽褰曚汉鑴告墦寮�淇℃伅锛氳�冨嫟淇℃伅琛�--鐢ㄦ埛鍚峓id]銆佽�冨嫟鏃堕棿銆佽�冨嫟璁惧id
+ 澶辫触--鎻愮ず澶辫触
+
+ 绠$悊锛�
+ 鏌ヨ--灞曠ず涓�涓壒瀹氭椂闂存鐨勮�冨嫟缁熻缁撴灉
+ 鑰冨嫟鍒ゆ柇锛氫笂鐝椂闂存--涓嬬彮鏃堕棿娈�
+ 蹇樻墦鍗�--琛ユ墦鍗℃鏁�: 5娆�/鏈�
+
+ 寮傚父澶勭悊锛�
+ 鑰冨嫟寮傚父锛氳繜鍒般�佹棭閫�銆佺己鍕ゃ�佽鍋�-[缁嗗垎....]
+
+
+
+
+
+4鏄� 3銆佹潈闄愮鐞�
+ 鍓嶆彁鏉′欢锛氱鐞嗗憳鎵嶈兘绠$悊杩欎釜妯″潡
+ 绠$悊锛� 鍏堟煡璇㈠埌鐗瑰畾鐢ㄦ埛锛屽啀鐐瑰紑鐗瑰畾鐢ㄦ埛鐨勬潈闄愪俊鎭紝瀵规潈闄愬嬀閫�/鍘诲嬀閫夛紝鏈�鍚庢彁浜や慨鏀癸紝淇濆瓨鍒版湇鍔$鏄暟鎹簱
+
+ 鐣岄潰锛氭煡璇㈡潯浠�----鐢ㄦ埛鍚嶃�佸伐鍙枫�佹敞鍐屾椂闂存銆侀儴闂ㄣ�侀偖绠便�佹墜鏈哄彿绛�
+ 鏌ヨ缁撴灉灞曠ず----鐢ㄤ簩缁磋〃瑙嗗浘灞曠ず[MVD]
+ 鍙冲嚮鑿滃崟--閫夋嫨鐗瑰畾鐢ㄦ埛--淇敼鏉冮檺銆佺鐢ㄧ敤鎴穂淇敼鐘舵�乚
+ 淇敼鏉冮檺----鏄剧ず褰撳墠閫夊畾鐢ㄦ埛鎷ユ湁鐨勬潈闄怺鍕鹃�夆垰]锛屾病鏈夌殑鏉冮檺涓嶅嬀
+ 淇敼鐨勮瘽锛屽閫夐」鍕鹃�夋垨鍘诲嬀閫変箣鍚庯紝鎻愪氦淇敼
+
+ 鏉冮檺锛氭湁灏辨槸1锛屾棤灏辨槸0
+ admin 绠$悊鍛�
+ export 鎶ヨ〃瀵煎嚭
+ log_search 鏃ュ織鏌ヨ
+ img_in 鍥惧儚褰曞叆
+ map_mark_change 鍦板浘鏍囨敞淇敼
+ history 鍘嗗彶鍥炴斁銆佸巻鍙叉煡璇�
+ warning_man 璀︽姤绠$悊
+ device_man 璁惧绠$悊
+ version_man 瀹㈡埛绔増鏈鐞�
+
+ 鏁版嵁搴撹〃锛�
+ id 瑙掕壊鍚� 鍏蜂綋鐨勬潈闄�...銆�9涓��
+
+
+5鏄� 4銆佸鎴风鐗堟湰鏇存柊
+ 鏇存柊鏂瑰紡锛氬閲忔洿鏂般�佸叏閲忔洿鏂�
+ 澧為噺鏇存柊锛氶�愮増鏈洿鏂�
+ 鍏ㄩ噺鏇存柊锛氭煇涓増鏈殑瀹屾暣鏇存柊锛屽氨鏄暣涓畨瑁呭寘
+
+ 鏇存柊閫昏緫锛氭瘮杈冪増鏈�--鏈�鏂癧涓嶆洿鏂癩
+ --涓嶆槸鏈�鏂�--鏇存柊--姣旇緝瑕佽鏇存柊鏂囦欢鐨勫ぇ灏�--閫夋嫨鏇存柊鏂瑰紡
+
+ 澧為噺鏇存柊锛� 寰幆鎿嶄綔锛� 褰撳墠鐗堟湰--鎵惧埌涓嬩竴涓増鏈鏇存柊鐨勬枃浠�--涓嬭浇--瑕嗙洊鍒板鎴风鏈湴鐩綍--瀹屾垚鏇存柊--鍐嶆帴鐫�姣旇緝鐗堟湰...
+
+ 鍏ㄩ噺鏇存柊锛氫笅杞芥渶鏂扮増鐨勫畬鏁村畨瑁呭寘锛屽畨瑁呭埌鏈湴鍗冲彲
+
+ 鏍稿績锛�
+ 鏂囦欢浼犺緭--澶ф枃浠�--瑕佹敮鎸� 鏂偣缁紶--璁板綍涓�浜涗紶杈撶殑淇℃伅--纭鏂偣浣嶇疆--缁紶
+
+ 鏁版嵁搴撹〃锛� 鐗堟湰淇℃伅琛�--璇诲彇
+ id 褰撳墠鐗堟湰鍙� 渚濊禆鐗堟湰鍙穂鍓嶇疆鐗堟湰] 鏂囦欢鍚� 鏂囦欢澶у皬 鏂囦欢MD5 鏂囦欢S绔矾寰� 鏂囦欢C绔矾寰刐鐩稿璺緞] 鐘舵�� 浜х敓鏃堕棿
+
+ 浼犺緭璁板綍琛╗鍙�塢
+
+ 鐣岄潰锛� 鏇存柊杩涘害灞曠ず锛氳繘搴︽潯銆佽缁嗕俊鎭綏鍒�...
+
+ 鏇存柊绋嬪簭锛氬拰涓荤▼搴忚鐩镐簰鐙珛
+ update.exe client.exe
+
+ 鐗堟湰濡備綍璁板綍锛�
+ 閰嶇疆鏂囦欢鏉ヨ褰曪紝鍙互鏄� version.ini 鎴� version.xml
+
+
+3鏄� 5銆佹姤琛ㄥ鍑�
+ 閫昏緫锛氭彁鍓嶆暟鎹甗鏃ュ織銆佸巻鍙�...]--瀵煎嚭鍒版枃浠�: 鏂囨。銆佽〃鏍糩csv,xlsx]銆乸df
+ 銆乭tml--淇濆瓨鍒版湰娆$鐩�
+
+ 涓�銆佹彁渚涙帴鍙o紝璁╁埆鐨勬ā鍧椾紶鍙傝皟鐢�
+ 浜屻�佺敤鍒楄〃灞曠ず宸茬粡瀵煎嚭鐨勮褰曪紝鍙瑙堢浉搴旂殑鏂囦欢
+
+
+
+5鏄� 6銆佸疄鏃舵挱鏀�
+ 閫昏緫锛氬鎴风鍏堣幏鍙栨墍鏈夊彲鏌ョ湅鐨勬憚鍍忓ご淇℃伅锛屽舰鎴愪竴涓彍鍗曢厤缃甗1-4-9-16-25]
+ 鐒跺悗鍦ㄦ牴鎹挱鏀捐鍥鹃�夋嫨锛岀粍鍚堣彍鍗曢厤缃舰鎴愭挱鏀剧殑瀹炴椂鐢婚潰
+
+ 鎾斁锛氳缁欓�夊ソ鐨勭敾闈㈣繛鎺ワ紝杩涜澶氱嚎绋嬬殑鎷夋祦澶勭悊--RTSP鍗忚--FFmpeg
+ --鎷夋祦杩囨潵涔嬪悗锛氳В鐮佸舰鎴愬浘鐗�--鍦ㄦ爣绛句笂鏄剧ず
+
+ 鏁版嵁搴撹〃锛�
+ 鎽勫儚澶翠俊鎭�--璁惧淇℃伅琛�--浼氬寘鍚瘡涓憚鍍忓ご鐨剈rl[缃戝潃]
+
+ 鏁版嵁娴侊細H.265鍘嬬缉鍐呭锛�200鍊嶇殑鍘嬬缉姣旓紝瑕佽В鍘�--瑙g爜
+ 鍦ㄤ笁鏂瑰簱涓凡缁忓畬鎴愪簡锛欶Fmpeg搴�
+
+ 鏈�2閮ㄥ垎鐨勪笢瑗匡細
+ 1銆佸父瑙勪笟鍔�
+ 鏌ヨ璇锋眰--鎷垮埌鎵�鏈夊彲鐢ㄦ憚鍍忓ご鐨勪俊鎭�
+ 璇锋眰锛氬彧闇�瑕佹寚瀹氱粨鏋勪綋澶撮噷闈㈢殑鍔熻兘绫诲瀷鍊煎氨琛�
+ struct RealtimeShowReq
+ {
+ Head head;
+ RealtimeShowReq()
+ {
+ head.type = xx; // xx涓烘彁鍓嶅畾濂界殑鏋氫妇鍙橀噺
+ head.len = sizeof(RealtimeShowReq);
+ }
+ };
+
+ 鍝嶅簲锛氬洖涓�涓憚鍍忓ご淇℃伅[鏌旀�ф暟缁刔鐨勫搷搴�
+ struct VideoInfo
+ {
+ int id;
+ char url[256]; // 鎷兼帴濂界殑鎽勫儚澶寸綉鍧� 鍗忚://ip:port/1/last.ts
+ // ...
+ };
+
+ struct RealtimeShowRes
+ {
+ Head head;
+ VideoInfo vi[0]; // 鏌旀�ф暟缁�
+ };
+
+ 2銆佽棰戜笟鍔�
+ 鐢‵Fmpeg鍘绘媺rtsp url鐨勫湴鍧�娴佹暟鎹繃鏉ワ紝鐢‵Fmpeg鏉ヨВ鍘嬬缉銆佽В鐮佸氨琛�
+
+
+
+
+3鏄� 7銆佺郴缁熻缃�
+ 瀹㈡埛绔殑璁剧疆锛�
+ 鏍峰紡鎺у埗锛氬瓧浣撱�侀鑹层�佸瑙傝皟鏁�
+ 鍥介檯鍖栫殑鏄剧ず锛氫腑鏂囥�佽嫳鏂囥�佹硶鏂�...
+ 蹇嵎閿細
+ 鑷惎鍔ㄧ殑鏈嶅姟锛氬紑鏈哄惎鍔�
+ 鑷姩鐧诲綍锛氳璁板綍鐢ㄦ埛鍚嶃�佸瘑鐮乕鍔犲瘑璁板綍]
+ ......
+
+ 濡備綍鐢熸晥锛氬皢閰嶇疆淇℃伅淇濆瓨鍒皒ml鏂囦欢涓紝鍚姩鏃跺姞杞借缃�
+
+
+3鏄� 8銆佹棩蹇楁煡璇�
+ 鏌ヨ鏉′欢锛氱骇鍒�佹椂闂存绛�
+
+ 鏄剧ず缁撴灉锛氱敤琛ㄦ牸鏄剧ず[MVD鐨勮鍥綸銆佸垎椤垫樉绀�--鍒嗛〉绠楁硶-灏嗙粨鏋滃垎鎴愭洿灏忕殑鍧楁潵鏄剧ず锛屾彁鍗囨�ц兘
+ 1 2 3 ... 98 99 100 璺宠浆__椤礫涓嬫媺妗�/缂栬緫妗哴
+
+ 瀵煎嚭锛氳皟鐢ㄦ姤琛ㄥ鍑烘帴鍙�
+
+
+4鏄� 9銆佸浘鍍忓綍鍏�
+ 鐢ㄤ簬璁粌妯″瀷锛屾瘡涓柊鍛樺伐閮介渶瑕侀噰闆嗕竴浜涚壒瀹氭暟閲忕殑鍥剧墖鏉ヨ缁冿紝璁粌瀹屼簡涔嬪悗锛岀敤浜庤瘑鍒�--鑰冨嫟绛�
+
+ 閫昏緫锛氬鎴风--鍏堟妸瑕佸綍鍏ョ殑鍛樺伐宸ュ彿杈撳叆--纭宸ュ彿淇℃伅姝g‘--鍐嶇偣寮�鎽勫儚澶�--鑾峰彇璇ュ憳宸ョ壒瀹氭暟閲忋�佽瑙掔殑鐓х墖--涓婁紶鍒版湇鍔$鐗瑰畾鐩綍涓嬩繚瀛�--鐢ㄤ簬妯″瀷璁粌
+
+ 鐣岄潰锛�
+ 閫氳繃杈撳叆宸ュ彿--鑾峰彇鍛樺伐淇℃伅--鏄剧ず--閫氳繃鎿嶄綔鍛樺垽鏂纭惁
+ 鐐逛竴涓嬪綍鍏ユ寜閽細灏变細鎻愮ず鍒嗗埆璺摢浜涜瑙掞細姝h劯銆佷晶鑴搞�佺湪鐪笺�佸紶鍢寸瓑
+ 姣忎釜褰曞畬涔嬪悗锛岀敤鏍囩鏄剧ず涓�涓嬪綍鍒扮殑鐓х墖--棰勮
+ 纭鏃犺--鎻愪氦--涓婁紶鍒版湇鍔″櫒鐗瑰畾宸ュ彿鐩綍淇濆瓨--鍚屾椂璁板綍鍒版暟鎹簱琛�
+
+ 鏁版嵁搴撹〃锛氬浘鐗囦俊鎭〃锛歩d銆佸浘鐗囧悕瀛椼�佽矾寰勩�佹墍灞炲伐鍙枫�佷笂浼犳椂闂淬�佹槸鍚﹀凡璁粌...
+
+
+5鏄� 10銆佸湴鍥炬爣娉�-鎽勫儚澶淬�佽澶�
+ 鐗规畩鐨勫湴鏂癸細缂栬瘧鍣ㄥ緱浣跨敤MSVC鐨勭紪璇戝櫒锛屾墠鑳芥敮鎸佹祻瑙堝櫒鐨勭粯鍒�
+ 閫氳繃缁樺埗鐨勬祻瑙堝櫒锛屽姞杞界櫨搴﹀湪绾垮湴鍥�
+ 鏍囨敞锛氳澶囩殑鍧愭爣[缁忓害銆佺含搴锛岃澶囧悕绉般�佺紪鍙枫�佺姸鎬佺瓑鏄剧ず鍑烘潵
+
+ 鏍稿績锛�
+ QT 鍜� 缃戦〉鐨凧S瑕佷氦浜掞紝浣跨敤淇″彿妲芥潵浜や簰
+ 鐢ㄥ埌鐨勬妧鏈� webchannal.js
+ 闇�瑕侀澶栨帉鎻★細HTML銆丣S浠g爜鐨勭紪鍐� [浼欳/C++,蹇呯劧鑳界鎳俔
+
+ 閫昏緫锛�
+ 鏄剧ず鍦板浘鐨勬爣娉ㄧ偣--鍘绘煡璇㈣澶囩殑缁忕含搴�--鎷垮埌鎵�鏈夊彲鐢ㄨ澶囩粡绾害--鏍囪鍒扮綉椤靛湴鍥鹃噷
+
+ 淇敼鏍囨敞鐐癸細鏀圭姸鎬併�佹敼鍚嶅瓧銆佽皟鏁寸粡绾害绛�
+
+ 鏁版嵁搴撹〃锛�
+ 璁惧淇℃伅琛� 瑕佺粡搴︺�佺淮搴� 鍚嶅瓧 id 鐘舵�� 绛�
+
+
+
+5鏄� 11銆佸巻鍙插洖鏀俱�佸巻鍙叉暟鎹煡璇㈠垎鏋�
+ 鍘嗗彶鍥炴斁 -- 鍥炴斁鐨勬槸瑙嗛鍐呭
+ 鏌ヨ鐗瑰畾鏃堕棿娈点�佺壒瀹氳澶囩被鍨嬨�佺紪鍙�---鎷垮埌浜嗙壒瀹氭椂闂存鍐呯殑瑙嗛鏂囦欢url
+ ----浣跨敤FFmpeg瀵广�怰TSP銆憉rl 杩涜鎷夋祦--瑙g爜鏄剧ず
+
+ 鎿嶄綔锛�
+ 鎴浘--淇濆瓨鏌愪竴甯у浘鐗�
+ 蹇繘銆佸悗閫�銆佹殏鍋溿�佹挱鏀剧瓑鎺у埗瑙嗛鐨勬搷浣�
+
+ 鍘嗗彶鏁版嵁鏌ヨ鍒嗘瀽 -- 鏌ョ湅鐨勬槸鐜淇℃伅鐨勫巻鍙叉暟鎹�
+ 闇�瑕佹寚瀹氭煡璇㈡潯浠�--鏃堕棿娈点�佽澶囩瓑--鎷垮埌鍘嗗彶鏁版嵁--灞曠ず鍒颁簩缁磋〃
+ --鍒嗘瀽[鏃ャ�佸懆銆佹湀銆佸勾]锛氭渶灏忓�笺�佹渶澶у�笺�佸钩鍧囧�笺�佷腑浣嶆暟--褰㈡垚鍥惧舰銆佹洸绾�
+ --鐢ㄥ埌QChart搴擄紝鎴栬�呬笁鍒嗗簱 QCustomPlot鏉ユ樉绀烘洿澶氭暟鎹噺鐨勫浘褰�
+
+ 缁撴瀯浣撻噷闈㈠浣曡〃绀哄唴瀹规瘡娆℃煡璇㈤兘涓嶄竴鏍凤紝浣嗘槸閮借兘鎷垮埌锛氱敤涓嶅畾闀跨粨鏋勪綋[鏌旀�ф暟缁刔
+
+ 鏁版嵁搴撹〃锛� 瑙嗛淇℃伅琛ㄣ�佺幆澧冧俊鎭〃......
+
+5鏄� 12銆佸疄鏃剁幆澧冧俊鎭睍绀�
+ 閫昏緫锛� 寰楃敤涓�涓ぇ灞忔潵瀹炴椂鏄剧ず鐜淇℃伅
+ 鍒嗕笉鍚屽尯鍩熸潵鏄剧ず锛岃繕鍙互鏄剧ず鍒殑鏁版嵁鍒板ぇ灞忛噷闈㈡潵
+ 涓昏鏄幆澧冧俊鎭痆娓╁害銆佹箍搴︺�佺矇灏樻祿搴︺�佹柦宸ヨ繘搴︾瓑]
+ 鍏朵粬淇℃伅锛氱湅涓�涓嬪皬鍦板浘銆佺湅涓�涓嬭�冨嫟鎯呭喌銆佸姩鎬佸垏鎹竴涓嬬洃鎺ф憚鍍忓ご鎯呭喌
+ 璺熷叿浣撴ā鍧楄礋璐d汉瀵规帴锛岃鎺ュ彛灏辫
+
+ 瀹炴椂鐜淇℃伅锛氱幇鍦虹殑鍚勭浼犳劅鍣ㄩ噰闆嗚�屾潵
+ 娴嬭瘯鐜--鍙互妯℃嫙鏁版嵁鍙戦�佽繃鏉�
+
+ 瀹炴椂淇℃伅锛氶�氳繃纭欢涓婁紶鏁版嵁涔嬪悗锛屽埌鏈嶅姟绔簡锛岀粰鎵�鏈夊湪绾跨殑瀹㈡埛绔浆鍙戠殑
+
+ 鏁版嵁搴撹〃锛� 鐜淇℃伅琛細id 璁惧id 娓╁害 閫傚害 绮夊皹娴撳害
+ 鏂藉伐杩涘害琛細id 鏂藉伐绫诲瀷 棰勮宸ヤ綔閲� 褰撳墠瀹屾垚閲� 鏃堕棿 ...
+
+ 鐪熷亣瀹炴椂锛氳浆鍙戜负鐪燂紝杞涓哄亣
+
+
+4鏄� 13銆佽鎶ョ鐞�
+ 閽堝鍝簺鍋氬嚭璀︽姤鐨勫垽鏂紵
+ 娓╁害銆佹箍搴︺�佺矇灏樻祿搴︺�佹柦宸ヨ繘搴︾瓑
+
+ 瑕佸鐗瑰畾鎸囨爣杩涜闃堝�肩殑绠$悊锛氬彲浠ュ姩鎬佽皟鏁撮槇鍊�--鏈�澶с�佹渶灏忓��
+
+ 鍙戠敓浜嗚鎶ワ紝鎬庝箞澶勭悊锛�
+ 1銆侀璀�--纭欢绔厛瑙﹀彂澹般�佸厜璀︽姤锛屾帴鐫�杞欢閮ㄥ垎浼氱粰鎵�鏈夊湪绾垮鎴风鎻愮ず棰勮淇℃伅
+ 2銆佽В鍐�--鎺у埗鐜板満璁惧锛岃嚜鍔ㄨ皟鑺�--澶辫触浜�--缁欏�肩彮瀹ゆ淳鍗�--瑙e喅闂
+
+ 鏁版嵁搴撹〃锛�
+ 闃堝�间俊鎭〃銆佽鎶ヤ俊鎭〃
+
+ 鐣岄潰锛�
+ 绠$悊闃堝�肩殑鐣岄潰--鍏堟煡璇�-鍐嶄慨鏀�
+ 鏄剧ず璀︽姤鐨勭晫闈�--瑕佸湪涓荤獥鍙d腑锛屾墍鏈夊瓙妯″潡閮借兘鍚屾椂鐪嬭鐨勪綅缃樉绀�
+
+ 濡備綍瑙﹀彂锛�
+ 鏁版嵁鍒颁簡鏈嶅姟绔箣鍚庯紝闄や簡瀹炴椂杞彂鐨勬搷浣滐紝杩樿涓�涓璀﹀垽鏂殑鎿嶄綔
+ 鍙戠敓寮傚父浜嗭紝鍚屾椂璁板綍鍒拌鎶ヤ俊鎭〃锛屼笖缁欐墍鏈夊湪绾垮鎴风杞彂璀︽姤鎻愮ず
+
+
+3鏄� 14銆佽澶囩鐞�
+ 璁惧锛氭憚鍍忓ご銆佺‖鐩樺綍鍍忔満銆佸悇绉嶅伐鍦扮殑璁惧[璧勪骇绠$悊鐨刔
+ 瀵硅澶囪繘琛屽鍒犳敼鏌�
+ 娣诲姞锛氭柊璁惧--褰曞叆淇℃伅--瀵逛簬澶栭湶鍥哄畾浣嶇疆鐨勮澶囷紝瑕佹湁瀹夎浣嶇疆鐨勭粡绾害
+
+ 鍒犻櫎锛氫慨鏀硅澶囩姸鎬�--搴熷純銆佷笉鍙敤銆佺淮淇�佹甯�
+ 鏀癸細淇敼宸茬粡褰曞叆鐨勪俊鎭�
+ 鏌ヨ锛氭煡鐪嬮兘鏈夊摢浜涜澶�
+
+ 鏁版嵁搴撹〃锛氳澶囦俊鎭〃
+ id 璁惧绫诲瀷 鍚嶅瓧 搴忓垪鍙� 鐘舵�� 瀹夎鏃堕棿 缁忓害 缁村害 璐熻矗浜�
+
+
+
+鏈嶅姟绔細S
+
+5鏄� 1銆佺綉缁滄惌寤恒�乀CP銆乁DP瀹炵幇
+ 纭畾骞跺彂閲忥細1000--5000鐨勫苟鍙戦噺鏉ヨ缃�
+ select + 绾跨▼姹�
+ 鏈�缁堢殑鏈嶅姟绔細鍦╨inux骞冲彴涓嬭繍琛�--Ubuntu 20.3--涔熷彲浠ヤ娇鐢╡poll鏉ュ鐞嗛珮骞跺彂
+
+ 瑙h�︽搷浣滐細
+ 鎶婁笟鍔″綋浠诲姟澶勭悊锛岃鍐欎竴涓�氱敤鐨勪换鍔$被鏉ヨ〃绀轰笉鍚岀殑涓氬姟
+
+ 绾跨▼姹犵殑瀹炵幇锛氬厛鑰冭檻浣跨敤C++瀹炵幇--楦胯挋绯荤粺鐨勭嚎绋嬫睜
+
+ 杩橀渶瑕佺‘瀹氱殑锛�
+ 1銆佹瘡涓敤鍒扮綉缁滅殑妯″潡锛岃鎻愪氦锛氳姹傜粨鏋勪綋銆佸搷搴旂粨鏋勪綋
+ 2銆佽缁欐瘡涓�涓姹傘�佸搷搴旂粨鏋勪綋锛屽垎閰嶆灇涓剧被鍨嬪唴瀹�--type--鐢ㄦ潵鍖哄垎涓嶅悓鐨勪笟鍔″姛鑳�
+ 3銆佷换鍔$被鍙互浣跨敤妯℃澘鏉ュ鐞嗭紝缁撳悎涓氬姟鎶借薄绫籟绾櫄鍑芥暟]锛屽畾濂界粺涓�褰撴帴鍙�
+ 4銆佽�冭檻浣跨敤楂樼骇鐨勬搷浣�--璁捐妯″紡鐨勯�夋嫨锛氬伐鍘傛ā寮忋�佽瀵熻�呮ā寮忕瓑
+
+ 鍗忚鐩稿叧锛�
+ TCP--蹇冭烦妫�娴嬨�佺矘鍖呭鐞�
+ RTSP[udp]--浣跨敤Live555妗嗘灦鏉ユ敮鎾憆tsp鏈嶅姟鍗冲彲--寮�婧愭鏋�
+
+
+
+4鏄� 2銆佹暟鎹簱鎼缓
+ MySQL鏁版嵁搴�--寤哄簱--寤鸿〃
+ 寤哄簱锛氱粺涓�寤轰竴涓簱鍚�: znwl_db
+ 寤鸿〃锛氶渶瑕佸拰姣忎竴涓敤鍒版暟鎹簱鐨勮礋璐d汉--瀵规帴--瑕佷粬浠殑鏁版嵁搴撹〃--鏁村悎閲嶅鐨勫唴瀹�--寤鸿〃
+ SQL鑴氭湰瀵煎嚭锛氬畬鎴愬缓搴撱�佸缓琛ㄤ箣鍚庯紝瑕佸鍑簊ql璇彞锛屽舰鎴愪竴涓剼鏈紝鍏朵粬浜轰娇鐢ㄨ剼鏈紝鏈湴鍗冲彲鐢熸垚涓�涓柊鐨勫簱銆佽〃
+
+ 灏佽锛氭彁渚涙帴鍙o紝缁欏叾浠栦汉浣跨敤--浣滀负瀛愭湇鍔℃潵浣跨敤鐨�
+ 绫�--鍏湁鐨勬帴鍙�--缁欎粬浜鸿皟鐢�
+ 鎺ュ彛锛氬鍒犳敼鏌ョ殑鎿嶄綔--鍏堜互sql璇彞涓哄弬鏁�--鎷跨粨鏋滈泦鎴栨嬁鏉℃暟
+ 鍗囩骇v2锛氬啓涓�涓被鏉ョ粍瑁卻ql璇彞锛屾瘡涓�鏉¤鍙ワ紝灏辨槸涓�涓璞★紝杈冨畨鍏�
+
+ 瀹夊叏鏍¢獙锛氶槻娉ㄥ叆鏍¢獙--姝e垯鍖归厤
+
+ 绉佹湁API锛氳嚜鍔ㄥ垵濮嬪寲浣跨敤鐨�--瀹炰緥鍖栧璞℃椂锛岃嚜鍔ㄦ妸鏁版嵁搴撹繛涓�
+
+ 鍗囩骇锛氭暟鎹簱杩炴帴姹�--瑙e喅杩炴帴澶嶇敤鐨勯棶棰�
+
+ 澶囦唤瀵煎嚭锛歴hell鑴氭湰--瀹氭椂瀵煎嚭--鎵撳寘--涓婁紶鍒版寚瀹氱殑ftp鏈嶅姟鍣ㄤ繚瀛�
+
+
+3鏄� 3銆佹棩蹇楀皝瑁�
+ 鏃ュ織浣滅敤锛氱敤浜庨棶棰樺畾浣嶇殑
+ 绾у埆锛氬父瑙勩�佽皟璇曘�佽鍛娿�侀敊璇�佽嚧鍛界瓑
+ 鍐欏埌鍝噷锛� 鏂囦欢銆佹暟鎹簱琛�
+ 鏂囦欢锛氭墍鏈夌骇鍒殑璁板綍 -- 瓒呰繃鎸囧畾澶у皬涔嬪悗-- 鏂囦欢缈绘粴 -- 鎹竴涓枃浠剁户缁褰� -- 瀹炵幇鏂囦欢缈绘粴绠楁硶
+
+ 鏁版嵁搴撹〃锛� 璀﹀憡銆侀敊璇�佽嚧鍛界瓑閲嶈鐨勭骇鍒殑鏃ュ織鍐呭
+
+ 鍐欐棩蹇楋細鍚屾銆佸紓姝ョ殑閫夋嫨锛�---- 寮傛楂樻晥 -- 鐢ㄩ槦鍒楁潵缂撳啿--璁板綍浠诲姟
+
+ 灏佽锛氱被--鎻愪緵瀵瑰簲鐨勬帴鍙�--鍑芥暟瀹廩璺熺骇鍒寕閽锛氬彧闇�瑕侀�夋嫨瀹忥紝缁欎竴涓棩蹇楁弿杩帮紝鍏朵粬鐨勮嚜鍔ㄧ敓鎴�
+
+ 鍐呭锛�
+ id 绾у埆 鏃堕棿 鏃ュ織鎻忚堪 鏂囦欢鍚� 鍑芥暟鍚� 琛屽彿 绛�
+
+ 鍐呭涓�寮忎袱浠斤紝涓�涓啓鍒版枃浠讹紝涓�涓啓鍒版暟鎹簱琛�
+
+ 鍙傝�冩鏋讹細
+ log4c log4cPlus绛夋鏋讹紝浠呬綔鍙傝�冿紝杩樻槸瑕佽嚜宸卞疄鐜板皝瑁呯殑鍔熻兘
+
+
+5鏄� 4銆丆NN妯″瀷鎼缓
+ 浣滅敤锛氭彁渚涜瘑鍒姛鑳界殑妯″潡锛�
+ 闇�瑕佷骇鐢熶竴涓ā鍨嬫枃浠讹紝閫氳繃璁粌鐨勬柟寮忎骇鐢�
+ 瀵逛紶杩涙潵鐨勫浘鐗囷紝浣跨敤妯″瀷鍘诲揩閫熷尮閰嶅埌鐩稿簲鐨勫垎绫伙紝浠庤�屽疄鐜癆I鐨勪汉鑴歌瘑鍒姛鑳�
+
+ CNN: 鍗风Н绁炵粡缃戠粶绠楁硶锛氭牳蹇冭繃绋�--鍗风Н--姹犲寲--鍏ㄨ繛鎺�
+ 鍙嶅悜璁粌锛氶殢鏈烘搴︿笅闄嶇畻娉�
+
+ 鎼缓锛氱缁忕綉缁�--闇�瑕佹惌寤哄緢澶氬眰锛岄�愬眰鍘昏绠楀苟澶勭悊鍚勭鐗瑰緛--鍥剧墖鐗瑰緛--鑳芥渶缁堝揩閫熸壘鍒板垎绫�--浜х敓锛氳缁冨ソ鐨勬ā鍨�
+
+ 璁粌锛�
+ 杈撳叆锛氫竴鍫嗗浘鐗囩壒寰�--閮芥槸澶勭悊杩囩殑鍥剧墖
+ 杈撳嚭锛氭ā鍨嬫枃浠�
+
+ 璇嗗埆锛�
+ 杈撳叆锛� 涓�寮犲浘鐗�
+ 杩囩▼锛氬皢鍥剧墖澶勭悊涔嬪悗锛屽幓璁粌濂界殑妯″瀷閲岄潰锛屽尮閰嶇壒寰侊紝鎵惧埌鍒嗙被锛岃繑鍥�
+
+ 杈撳嚭锛� 杩欏紶鍥剧墖瀵瑰簲鐨勬墍灞炲垎绫�
+
+ 鎻愪緵锛�
+ 妯″瀷鏂囦欢
+ 鎺ュ彛鍑芥暟
+
+ ---------------------------------------------
+ 杩佺Щ瀛︿範锛�
+ 宸茬粡璁粌浜嗕竴涓ā鍨嬩簡锛屽啀鏉ユ柊鍛樺伐锛屽浣曞姞鍒版ā鍨嬮噷闈㈠幓
+ 涓ょ鏂规锛氫竴銆佸姞杩涙潵涔嬪悗锛岄噸鏂板叏閮ㄥ啀鏉ヤ竴閬�
+ 浜屻�佸姞杩涙潵涔嬪悗锛屽湪宸叉湁鐨勫熀纭�涓婏紝杩涜浜屾璁粌--杩佺Щ
+ ---------------------------------------------
+ 缁嗚妭锛�
+ 鎷熷悎闂锛氳繃鎷熷悎銆佹瑺鎷熷悎
+ 娲讳綋妫�娴嬮棶棰橈細3缁存垚鍍忔晥鏋�--绔嬩綋鐨勬柟寮�
+ 閰嶅悎鍔ㄤ綔鏉ヨ瘑鍒�
+ -----------------------------------------
+ 鎶�鏈細
+ 妗嗘灦 TensorFlow--璋锋瓕鐨勫紑婧愭鏋�
+
+ 鐪熸鐨勬櫤鑳戒綋锛屼篃灏辨槸鎵�璋撶殑閫氱敤AI锛岀湡姝g墰閫艰捣鏉ョ殑鏃跺�欙細閲忓瓙璁$畻鏈洪噺浜х殑鏃跺��
+ -----------------------------------------
+
+
+
+4鏄� 5銆佸浘鍍忕鐞�
+ 鍥惧儚--浜鸿劯鐓х墖
+ 鐢ㄦ潵鐩存帴璁粌鐨勫浘鐗�--閲囬泦濂界殑
+ 璇嗗埆浜х敓鐨勫崟寮犵収鐗�--璇嗗埆鏃朵繚瀛樼殑
+
+ 鍒嗙被锛氱敤宸ュ彿鏉ヤ綔涓哄瓙鐩綍锛屼繚瀛樻瘡涓憳宸ョ殑浜鸿劯鐓х墖
+ 浠�涔堟椂鍊欏垱寤哄瓙鐩綍锛�
+ 娉ㄥ唽鎴愬姛鐨勬椂鍊欙紝浜х敓浜嗗憳宸d锛屾鏃跺氨鍙互瑙﹀彂--璋冪敤鎺ュ彛鏉ュ垱寤哄瓙鐩綍
+ 鎺ュ彛锛氫紶杩涙潵涓�涓伐鍙穂瀛楃涓瞉锛屼細鍒板浘鍍忔牴鐩綍鍘诲垱寤鸿繖涓伐鍙峰瓙鐩綍
+
+ 瀵逛簬鐢ㄤ簬涓嶅悓鍔熻兘鐨勫浘鐗囷紝璁板綍鐨勬椂鍊欙紝鍙互鍔犱笂鏍囧織--璁粌鍚�
+
+ 鎺ュ彛锛氬垹闄ゅ凡缁忔棤鐢ㄧ殑鐓х墖--涓嶅啀鐢ㄤ簬璁粌鐨勭収鐗囥�佹湁骞叉壈鐨勭収鐗�
+
+ 銆愭槸鍚﹁鐢ㄧ晫闈㈡樉绀哄搴斿瓙鐩綍涓嬬殑鐓х墖锛屽苟杩涜鐩稿簲鐨勬搷浣�--鏌ヨ銆佷慨鏀广��
+
+4鏄� 6銆佹ā鍨嬫暟鎹澶勭悊
+ 澶勭悊鐨勬槸鐓х墖锛岃鎶婂師濮嬬殑鐓х墖--澶勭悊--鍙樻垚鐭╅樀鐗瑰緛
+ 澶勭悊鏂瑰紡锛氬悜閲忓寲銆佺伆搴﹀寲銆佷簩鍊煎寲銆佹诞鐐瑰綊涓�鍖栥�侀檷鍣瓑澶勭悊鏂瑰紡
+ 鍘熺悊锛氬浘鐗囦腑鐨勬瘡涓�涓儚绱犵偣锛屼綋鐜扮殑閮芥槸RGB鐨勯鑹插�� (255,255,255)
+ 浣跨敤鐨勬鏋讹細OpenCV
+
+3鏄� 7銆侀厤缃鐞�
+ 浣滅敤锛氫娇寰楁湇鍔$锛屼笉闇�瑕佸啀杩涜浜屾缂栫爜锛岀壒鍒槸涓�浜涘弬鏁拌鍙樼殑鏃跺�欙細ip銆乸ort銆佽矾寰�......
+
+ 閰嶇疆淇℃伅瀛樻斁锛歺ml鏂囦欢鏉ヤ繚瀛橈紝濡傦細config.xml
+ 鍐呭锛�
+ socket锛歩p銆乸ort
+ MySQL: host銆乽ser銆乸assword銆乨b銆乸ort绛�
+ log: 鏂囦欢缈绘粴--澶у皬闄愬畾锛屽瓨鏀剧殑璺緞銆佹槸鍚﹀惎鍔ㄥ紓姝ユā寮�
+ 鍥剧墖瀛樻斁锛氭牴鐩綍
+ 閰嶇疆鏈嶅姟鐨勫惎鍔ㄦ柟寮忥細鍐峰惎鍔ㄣ�佺儹鍚姩
+ 鍐呭鎻愪緵鏂瑰紡锛氶タ姹�=0銆佹噿姹�=1
+ 瀹㈡埛绔枃浠剁増鏈瓨鏀撅細鏍圭洰褰�
+
+ 瑙f瀽搴擄細tinyxml2 浣跨敤涓夋柟搴撶殑澶存枃浠跺拰婧愭枃浠跺氨鍙互鎼炲畾
+
+ 鎻愪緵鍐呭鐨勬柟寮忥細
+ 鍦ㄤ富鍑芥暟涓涓�涓姞杞借捣鏉�
+ 楗挎眽寮忥細涓�寮�濮嬪氨鍏ㄥ眬鎵�鏈夌殑鍐呭--鍙互浣跨敤鍏ㄥ眬鍙橀噺鏉ュ瓨鍌ㄦ渶鏂扮殑鍐呭
+ 鎳掓眽寮忥細闇�瑕佹椂锛屽啀鎻愪緵--鎻愪緵鍑芥暟鎺ュ彛锛岃皟鐢�--杩斿洖缁撴灉
+
+ 鍚姩鏂规锛�
+ 瀹氭椂鐩戞帶閰嶇疆鍐呭鏄惁鍙戠敓鍙樺寲锛屽彉鍖栦簡锛岃闅忔椂鍋氬嚭鐩稿簲鐨勯噸鍚湇鍔�
+ 瀹氭椂鐩戞帶锛氫娇鐢ㄤ竴鏉″瓙绾跨▼锛岄棿闅�10绉掕涓�涓媥ml閰嶇疆鏂囦欢鍜屼笂涓�娆$殑鏁版嵁瀵规瘮
+ 鏈夊彉鍖栦簡锛屽氨鎸夐厤缃殑鏂瑰紡鍚姩
+
+5鏄� 8銆佸鎴风鏂囦欢鐗堟湰绠$悊
+ 鏉冮檺--鐗堟湰绠$悊鏉冮檺
+ 鑾峰彇鐗堟湰鍙凤細鏌ヨ鍒版墍鏈夌増鏈彿锛屾斁鍒颁竴涓笅鎷夋涓睍绀�
+ 娣诲姞宸茬粡鍙樺寲鐨勬枃浠讹細-- 澧為噺鏇存柊
+ 涓撻棬鐨刄I鐣岄潰锛�
+ 閫夋嫨鏂囦欢鐨勬湰鍦拌矾寰�
+ 鐗堟湰鍙穂瑙勫垯]锛屼緷璧栫増鏈彿
+ 鏈嶅姟绔殑瀛樻斁璺緞锛屽鎴风鐨勫瓨鏀捐矾寰�
+ 浜岀淮琛細鐐瑰嚮娣诲姞鏂囦欢涔嬪悗锛屼細灏嗕笂杩扮殑鍐呭锛屽啓鍒拌〃鏍间腑
+ 褰撴坊鍔犲畬鎵�鏈夊彉鍖栫殑鏂囦欢涔嬪悗
+
+ 鍐嶇偣鍑绘彁浜ゆ寜閽紝涓婁紶鍒版湇鍔$锛屾枃浠跺瓨鍒扮鐩樺搴旂洰褰昜鏈嶅姟绔殑瀛樻斁璺緞],鐩稿簲鐨勪俊鎭啓鍒版暟鎹簱琛�
+
+ 鎶�鏈細 鏂囦欢涓婁紶銆佹柇鐐圭画浼�
+ 鏂囦欢鎵撳寘锛氭墍鏈夋枃浠舵墦鍖呮垚涓�涓畨瑁呭寘锛屼綔涓哄叏閲忔洿鏂扮殑瀹夎鍖�
+
+ 鏁版嵁搴撹〃锛氱増鏈俊鎭〃--鍐欏叆
+
+
+
+3鏄� 9銆佽棰戝瓨鍌ㄧ鐞�
+ 鍏堥摵鍨竴涓嬶細瑙嗛鏂囦欢鍦ㄥ摢閲岋紵
+ 瀛樺湪纭洏褰曞儚鏈洪噷闈�
+
+ 鎽勫儚澶�--鏁版嵁绾�--纭洏褰曞儚鏈篬瀛樿棰戞枃浠禲--杞欢鏈嶅姟绔�--MySQL鏁版嵁搴揫瀛樹俊鎭痌
+ |
+ 瀹㈡埛绔�
+
+ 绠$悊瑙嗛鏂囦欢锛�
+ 杩炰笂姣忎竴涓‖鐩樺綍鍍忔満--鏌ョ湅瀵瑰簲鐨勬憚鍍忓ご鐩綍涓嬮兘鏈夊摢浜涜棰戞枃浠�
+ 杩樺彲浠ヨ皟鏁翠竴涓嬫憚鍍忓ご瀵瑰簲鐨勬枃浠跺す鍚嶅瓧--榛樿鏄憚鍍忓ごid
+
+ 鍔ㄤ綔锛氭煡璇€�佷慨鏀�
+ 澧炲姞--鏄憚鍍忓ご鐨勪簨鎯�
+
+ [杩樺彲浠ュ姞涓奤I鏉ユ樉绀猴紝鎿嶄綔浼氭洿鍔犳柟渚縘
+
+ 璁剧疆瑕嗙洊鍛ㄦ湡锛氬彧浼氫繚瀛樺涔呯殑瑙嗛--30澶┿��60澶�...
+ 璁剧疆姣忎釜瑙嗛鏂囦欢鐨勬椂闀匡細5min,10min......
+
+ 鍝佺墝锛�
+ 娴峰悍濞佽銆佸ぇ鍗庛�佸畤瑙嗙鎶�绛塠鍏ㄥ浗鍓嶄笁]
+
+4鏄� 10銆佹椿浣撴娴嬪鐞�
+4鏄� 11銆佹帹閫併�侀�氱煡绠$悊
+ 鏈川锛氱兢鍙戯紝缁欐墍鏈夊湪绾跨殑瀹㈡埛绔兢鍙戠殑
+ 浠�涔堟椂鍊欏彂锛� 鏈夋柊閫氱煡鐨勬椂鍊欙紝缇ゅ彂
+ 缇ゅ彂涔嬪悗锛岃璁板綍姣忎竴涓凡缁忓彂杩囩殑璐﹀彿淇℃伅
+ 濡傛灉鍚庨潰鍦ㄧ櫥褰曪紝瑕佸垽鏂槸鍚﹀凡缁忓彂杩囨煇涓�鏉¢�氱煡锛屾病鍙戣繃鐨勬帴鐫�鍙戯紝鍙戣繃鐨勪笉瑕佸啀鍙戜簡
+
+ 鎺ㄩ�佽褰曡〃锛歩d銆佺敤鎴峰悕銆侀�氱煡id銆佸彂閫佹椂闂淬�佺姸鎬�
+ 閫氱煡淇℃伅琛�: id銆侀�氱煡鏍囬銆侀�氱煡鍐呭銆佸垱寤烘椂闂淬�佺姸鎬併�佺敤鎴穒d
+
+ 绠$悊閫氱煡锛�
+ 澧炲垹鏀规煡
+ 鏈�濂芥槸鐢ㄤ竴涓猽i鐣岄潰绠$悊涓�涓嬬浉鍏崇殑閫氱煡
+
+ 淇濊瘉鎵�鏈夌櫥褰曟垚鍔熺殑鐢ㄦ埛锛岄兘鑳芥敹鍒颁竴娆℃渶鏂扮殑閫氱煡
+ 銆愬弬鑰冮偖浠剁郴缁熴��
+
+ 閫氱煡锛氳繕鍙互鏈夋帹閫佺殑璁板綍锛屼互鍙婇槄璇荤殑鐘舵��:鏈銆佸凡璇�
+
+
+
+==================================================================================
+ 涓氬姟鍒嗙锛氬彧瑕佹槸鑷繁涓氬姟鐩稿叧鐨勶紝涓嶇鍦ㄥ鎴风杩樻槸鏈嶅姟绔紝 閮借鍐欎唬鐮佸幓瀹炵幇
+
+ 鍓嶅悗鍒嗙锛氬垎鐣岀嚎鏄細鍓嶇(瀹㈡埛绔�)锛屽悗绔�(鏈嶅姟绔�)
+ 鍓嶇鍙仛鍓嶇鐨勪笟鍔�
+ 鍚庣鍙仛鍚庣鐨勪笟鍔�
+ 鍓嶅悗鐨勪笟鍔¢�氫俊锛岄渶瑕佸晢閲忓ソ鐗瑰畾鐨勬牸寮�
+ ---------------------------------------
+ 涓氬姟鍒嗙锛� 蹇呴』寰�2涓鐨勫紑鍙戣瑷�涓�鏍�
+
+ 鍓嶅悗鍒嗙锛� 2涓寮�鍙戠殑璇█涓嶄竴鏍锋椂锛屽氨寰椾娇鐢�
+ ---------------------------------------
+ 鐜板湪鐨勯」鐩細閲囩敤涓氬姟鍒嗙鐨勬柟寮�
+==============================================================================================
+ 鍚堜唬鐮佺殑涓�浜涚粏鑺傦細
+
+ 1銆佸鎴风鐨勪唬鐮佸悎骞�
+ A銆佷繚璇佹墍鏈夋ā鍧椾娇鐢ㄥ悓涓�涓鎺ュ瓧锛岃繖鏍锋敹鍖呯殑鏃跺�欙紝灏辩粺涓�鍦ㄤ竴涓湴鏂逛簡
+
+ B銆佹ā鍧楀搴旂殑绫诲悕锛屼竴瀹氳鏍规嵁鍔熻兘鏉ュ懡鍚嶏紝涓嶅厑璁镐娇鐢ㄩ粯璁ょ殑鍚嶅瓧
+
+ C銆佸悎浠g爜鐨勫師鍒欙細灏介噺灏戜慨鏀圭殑鍘熷垯锛屽彧闇�瑕佸湪涓绘ā鍧楁坊鍔犻�傚綋鐨勪唬鐮佷负涓�
+ 瀛愭ā鍧楃殑鍔熻兘淇濇寔涓嶅姩
+
+ D銆佸悎浠g爜涔嬪悗锛屼繚璇佸師鏈夌殑鍔熻兘涓嶄細琚慨鏀癸紝涓斾笉褰卞搷鍏朵粬妯″潡鐨勪娇鐢�
+
+
+
+ 2銆佹湇鍔$鐨勪唬鐮佸悎骞�
+ A銆佽嚜宸辩殑瀛愭湇鍔℃ā鍧楄鍏堝悎骞跺ソ锛屾槸涓�绉嶈鍔ㄨ皟鐢ㄧ殑鏂瑰紡
+
+ B銆佸鎴风鐨勪笟鍔¤鍚堝埌鏈嶅姟绔潵鏃讹紝瑕佺敤绫荤殑鏂瑰紡鏉ュ悎骞禰xx.h,xx.cpp]
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/\350\232\202\350\232\201\346\231\272\350\203\275\347\275\221\350\201\224\351\241\271\347\233\256\350\256\241\345\210\222\350\241\250.xlsx" "b/\350\232\202\350\232\201\346\231\272\350\203\275\347\275\221\350\201\224\351\241\271\347\233\256\350\256\241\345\210\222\350\241\250.xlsx"
index f959e4c..8849dae 100644
--- "a/\350\232\202\350\232\201\346\231\272\350\203\275\347\275\221\350\201\224\351\241\271\347\233\256\350\256\241\345\210\222\350\241\250.xlsx"
+++ "b/\350\232\202\350\232\201\346\231\272\350\203\275\347\275\221\350\201\224\351\241\271\347\233\256\350\256\241\345\210\222\350\241\250.xlsx"
Binary files differ
--
Gitblit v1.8.0