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