From 79f7163245e04b2dcc9dee074007aeadd7724283 Mon Sep 17 00:00:00 2001
From: ygq <1004401811@qq.com>
Date: 星期四, 03 七月 2025 15:55:56 +0800
Subject: [PATCH] Merge branch 'master' of ssh://115.28.86.8:29418/~admin/智能网联_25-0305_617_v1

---
 Client/于文龙/code/project_client_permission_management.rar |    0 
 Client/寇百盛/log/日志_寇百盛_0701.doc                           |    0 
 Server/刘斌/code/video-management-system-vs-project.zip    |    0 
 Server/胡重阳/log/数据模型预处理日志_胡重阳_20250701.doc                |    0 
 Client/王国壮/log/日志_王国壮_0701.doc                           |    0 
 Client/魏强/log/日志_魏强_0702.doc                             |    0 
 Server/梁博/code/server_config.zip                         |    0 
 Client/舒海林/log/日志_舒海林_0702.doc                           |    0 
 Client/陈豪/log/日志_陈豪_250702.doc                           |    0 
 Server/胡重阳/code/lmagePreprocessor.zip                    |    0 
 Server/胡重阳/log/数据模型预处理日志_胡重阳_20250629.doc                |    0 
 Server/林余杰/log/日志_林余杰_20250701.doc                       |    0 
 Server/梁博/log/日志_梁博_0629.doc                             |    0 
 Client/徐蔓云/log/日志_徐蔓云_0701.doc                           |    0 
 Server/刘斌/log/~WRL0001.tmp                               |    0 
 Server/刘斌/log/日志_刘斌_20250629.doc                         |    0 
 Client/Qt_ZNWL_0702_Client.7z                            |    0 
 Client/王国壮/document/项目总结.md                              |   33 ++++
 Server/王鹏哲/log/日志_王鹏哲_20250701.doc                       |    0 
 Server/梁博/log/日志_梁博_0701 .doc                            |    0 
 Server/王鹏哲/log/日志_王鹏哲_20250630.doc                       |    0 
 /dev/null                                                |    0 
 Server/王鹏哲/code/logger.h                                 |  334 +++++++++++++++++++++++++++++++++++++++++++++++
 Client/于文龙/log/日志-于文龙-250702.doc                         |    0 
 Server/刘斌/log/~$_刘斌_20250701.doc                         |    0 
 Server/刘斌/log/日志_刘斌_20250701.doc                         |    0 
 Server/王鹏哲/document/项目总结.docx                            |    0 
 Server/王鹏哲/log/日志_王鹏哲_20250629.doc                       |    0 
 28 files changed, 367 insertions(+), 0 deletions(-)

diff --git a/Client/Qt_ZNWL_0702_Client.7z b/Client/Qt_ZNWL_0702_Client.7z
new file mode 100644
index 0000000..5102ad0
--- /dev/null
+++ b/Client/Qt_ZNWL_0702_Client.7z
Binary files differ
diff --git "a/Client/\344\272\216\346\226\207\351\276\231/code/project_client_permission_management.rar" "b/Client/\344\272\216\346\226\207\351\276\231/code/project_client_permission_management.rar"
new file mode 100644
index 0000000..a011c02
--- /dev/null
+++ "b/Client/\344\272\216\346\226\207\351\276\231/code/project_client_permission_management.rar"
Binary files differ
diff --git "a/Client/\344\272\216\346\226\207\351\276\231/log/\346\227\245\345\277\227-\344\272\216\346\226\207\351\276\231-250702.doc" "b/Client/\344\272\216\346\226\207\351\276\231/log/\346\227\245\345\277\227-\344\272\216\346\226\207\351\276\231-250702.doc"
new file mode 100644
index 0000000..6cc925c
--- /dev/null
+++ "b/Client/\344\272\216\346\226\207\351\276\231/log/\346\227\245\345\277\227-\344\272\216\346\226\207\351\276\231-250702.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_0701.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_0701.doc"
new file mode 100644
index 0000000..d0a2ca0
--- /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_0701.doc"
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc" "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_0701.doc"
similarity index 66%
copy from "Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc"
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_0701.doc"
index 7387a3b..4231518 100644
--- "a/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc"
+++ "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_0701.doc"
Binary files differ
diff --git "a/Client/\347\216\213\345\233\275\345\243\256/document/\351\241\271\347\233\256\346\200\273\347\273\223.md" "b/Client/\347\216\213\345\233\275\345\243\256/document/\351\241\271\347\233\256\346\200\273\347\273\223.md"
new file mode 100644
index 0000000..55c581e
--- /dev/null
+++ "b/Client/\347\216\213\345\233\275\345\243\256/document/\351\241\271\347\233\256\346\200\273\347\273\223.md"
@@ -0,0 +1,33 @@
+### 1. **瀹炴椂鐜淇℃伅灞曠ず妯″潡**
+
+#### **瀹炵幇鏂瑰紡锛�**
+
+- **纭欢涓庢暟鎹敹闆嗭細** 閫氳繃鐜板満浼犳劅鍣紙濡傛俯搴︺�佹箍搴︺�佺矇灏樻祿搴︾瓑锛夊疄鏃堕噰闆嗙幆澧冩暟鎹�傝繖浜涙暟鎹紶杈撳埌鏈嶅姟鍣ㄧ锛岄�氳繃鎺ュ彛杩涜杞彂銆�
+- **澶у睆灞曠ず锛�** 鏁版嵁閫氳繃鍓嶇鐣岄潰灞曠ず鍦ㄥぇ灞忎笂锛屽尯鍩熷垝鍒嗘樉绀轰笉鍚屼俊鎭紝鍖呮嫭鐜淇℃伅銆佹柦宸ヨ繘搴︺�佸皬鍦板浘銆佽�冨嫟鎯呭喌鍜岀洃鎺ф憚鍍忓ご鐨勫姩鎬佽疆鎾��
+- **鏁版嵁浼犺緭锛�** 鏁版嵁涓婁紶鍚庨�氳繃鏈嶅姟绔浆鍙戠粰鎵�鏈夊湪绾垮鎴风锛屽疄鐜板疄鏃跺悓姝ャ��
+
+#### **瑙e喅闂锛�**
+
+- **鏁版嵁鍑嗙‘鎬э細** 鐢变簬浼犳劅鍣ㄦ湰韬殑璇樊锛屽疄鏃舵暟鎹彲鑳戒細鍑虹幇娉㈠姩锛屽鑷村睍绀轰笉绋冲畾銆傞�氳繃绠楁硶浼樺寲銆�
+
+- **寮傛鏇存柊锛�** 灏嗘暟鎹洿鏂扮殑鎿嶄綔涓庣晫闈㈡覆鏌撹В鑰︼紝閬垮厤闃诲涓荤嚎绋嬶紝纭繚澶у睆灞曠ず娴佺晠銆�
+- **MSVC2015涓嶹indows SDK鐗堟湰鍏煎闂**锛氬皬鍦板浘闇�瑕佷娇鐢╳ebenginewidgets妯″潡锛屾墍浠ュ垏鎹㈠埌MSVC2015缂栬瘧鍣紝鍙堜骇鐢熷吋瀹归棶棰橈紝 閫氳繃**浠呭崌绾t Creator**瑙e喅锛屾柊鐗圦t Creator鍙寚瀹歋DK鐗堟湰銆�
+
+------
+
+### 2. **璀︽姤绠$悊妯″潡**
+
+#### **瀹炵幇鏂瑰紡锛�**
+
+- **璀︽姤鍒ゆ柇锛�** 閽堝鐜鏁版嵁涓殑娓╁害銆佹箍搴︺�佺矇灏樻祿搴︾瓑璁剧疆闃堝�硷紝瓒呭嚭鑼冨洿鏃惰Е鍙戣鎶ャ��
+- **闃堝�肩鐞嗭細** 绯荤粺鍏佽绠$悊鍛樺姩鎬佽皟鏁撮槇鍊硷紝纭繚绯荤粺鍦ㄤ笉鍚屾儏鍐典笅浠嶈兘鏈夋晥鎶ヨ銆�
+- **璀︽姤鍝嶅簲锛�** 褰撹鎶ヨЕ鍙戞椂锛岀‖浠剁浼氬彂鍑哄0鍏夎鎶ワ紝杞欢绔細閫氳繃鏈嶅姟绔帹閫佽鎶ヤ俊鎭埌鎵�鏈夊湪绾垮鎴风銆傝嫢闂鏈В鍐筹紝鑷姩娲惧崟鍒板�肩彮瀹ゅ鐞嗐��
+- **璀︽姤鏁版嵁搴擄細** 璁剧疆鈥滈槇鍊间俊鎭〃鈥濆拰鈥滆鎶ヤ俊鎭〃鈥濓紝鍒嗗埆瀛樺偍姣忎釜璀︽姤椤圭殑闃堝�间互鍙婂彂鐢熺殑鍏蜂綋璀︽姤璁板綍銆�
+
+#### **瑙e喅闂锛�**
+
+- **瀹炴椂鎬т笌绋冲畾鎬э細** 璀︽姤闇�瑕佸湪鍙戠敓寮傚父鐨勭灛闂磋Е鍙戯紝濡傛灉绯荤粺鍝嶅簲寤惰繜鎴栧彂鐢熼敊璇紝鍙兘閿欒繃鏈�浣冲鐞嗘椂鏈恒��
+- **鐣岄潰璁捐锛�** 纭繚璀︽姤淇℃伅鑳藉瀹炴椂銆佹竻鏅板湴灞曠ず缁欑鐞嗗憳锛岄伩鍏嶄俊鎭繃杞藉拰鏄剧ず涓嶄竴鑷淬��
+
+- **骞跺彂澶勭悊锛�** 閫氳繃骞跺彂鍜屽紓姝ユ妧鏈紝淇濊瘉璀︽姤澶勭悊鍜屾暟鎹洿鏂拌兘澶熷悓鏃惰繘琛岋紝鎻愰珮鍝嶅簲閫熷害銆�
+- **鍔ㄦ�佺晫闈紭鍖栵細** 璀︽姤淇℃伅搴斿湪涓荤晫闈㈢獊鍑烘樉绀猴紝骞剁‘淇濈晫闈㈣兘澶熷揩閫熸洿鏂帮紝閬垮厤鍥犱俊鎭繃杞藉鑷寸鐞嗕汉鍛橀仐婕忛噸瑕佷俊鎭��
\ No newline at end of file
diff --git "a/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc" "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_0701.doc"
similarity index 61%
copy from "Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc"
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_0701.doc"
index 7387a3b..ee1838d 100644
--- "a/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc"
+++ "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_0701.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"
deleted file mode 100644
index e526f2c..0000000
--- "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/LoginSystem.pro"
+++ /dev/null
@@ -1,43 +0,0 @@
-#-------------------------------------------------
-#
-# 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"
deleted file mode 100644
index 39f131e..0000000
--- "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/LoginSystem.pro.user"
+++ /dev/null
@@ -1,812 +0,0 @@
-<?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"
deleted file mode 100644
index dd716cc..0000000
--- "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/datastructures.h"
+++ /dev/null
@@ -1,33 +0,0 @@
-#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"
deleted file mode 100644
index baa31d4..0000000
--- "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/loginwindow.cpp"
+++ /dev/null
@@ -1,81 +0,0 @@
-#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"
deleted file mode 100644
index e4f66c9..0000000
--- "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/loginwindow.h"
+++ /dev/null
@@ -1,33 +0,0 @@
-#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"
deleted file mode 100644
index 04e48a5..0000000
--- "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/loginwindow.ui"
+++ /dev/null
@@ -1,128 +0,0 @@
-<?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"
deleted file mode 100644
index 90fd63e..0000000
--- "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/main.cpp"
+++ /dev/null
@@ -1,19 +0,0 @@
-#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"
deleted file mode 100644
index c3713f3..0000000
--- "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/mainwindow.cpp"
+++ /dev/null
@@ -1,15 +0,0 @@
-#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"
deleted file mode 100644
index 68883cf..0000000
--- "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/mainwindow.h"
+++ /dev/null
@@ -1,22 +0,0 @@
-#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"
deleted file mode 100644
index 9bca2da..0000000
--- "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/mainwindow.ui"
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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"
deleted file mode 100644
index 6435959..0000000
--- "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/registerwindow.cpp"
+++ /dev/null
@@ -1,139 +0,0 @@
-#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"
deleted file mode 100644
index 4b41b26..0000000
--- "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/registerwindow.h"
+++ /dev/null
@@ -1,37 +0,0 @@
-#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"
deleted file mode 100644
index 1ad0503..0000000
--- "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/registerwindow.ui"
+++ /dev/null
@@ -1,223 +0,0 @@
-<?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"
deleted file mode 100644
index 052b5d1..0000000
--- "a/Client/\350\210\222\346\265\267\346\236\227/code/0630 -/users.sql"
+++ /dev/null
@@ -1,30 +0,0 @@
--- 鍏堝垹闄ゅ彲鑳藉凡瀛樺湪鐨勮〃锛堥伩鍏嶉噸澶嶅垱寤洪敊璇級
-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_0702.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_0702.doc"
new file mode 100644
index 0000000..ce28b93
--- /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_0702.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_250702.doc" "b/Client/\351\231\210\350\261\252/log/\346\227\245\345\277\227_\351\231\210\350\261\252_250702.doc"
new file mode 100644
index 0000000..16e47c3
--- /dev/null
+++ "b/Client/\351\231\210\350\261\252/log/\346\227\245\345\277\227_\351\231\210\350\261\252_250702.doc"
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc" "b/Client/\351\255\217\345\274\272/log/\346\227\245\345\277\227_\351\255\217\345\274\272_0702.doc"
similarity index 60%
copy from "Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc"
copy to "Client/\351\255\217\345\274\272/log/\346\227\245\345\277\227_\351\255\217\345\274\272_0702.doc"
index 7387a3b..e4c62b7 100644
--- "a/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc"
+++ "b/Client/\351\255\217\345\274\272/log/\346\227\245\345\277\227_\351\255\217\345\274\272_0702.doc"
Binary files differ
diff --git "a/Server/\345\210\230\346\226\214/code/video-management-system-vs-project.zip" "b/Server/\345\210\230\346\226\214/code/video-management-system-vs-project.zip"
new file mode 100644
index 0000000..2aef533
--- /dev/null
+++ "b/Server/\345\210\230\346\226\214/code/video-management-system-vs-project.zip"
Binary files differ
diff --git "a/Server/\345\210\230\346\226\214/log/~$_\345\210\230\346\226\214_20250701.doc" "b/Server/\345\210\230\346\226\214/log/~$_\345\210\230\346\226\214_20250701.doc"
new file mode 100644
index 0000000..b8a4629
--- /dev/null
+++ "b/Server/\345\210\230\346\226\214/log/~$_\345\210\230\346\226\214_20250701.doc"
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc" "b/Server/\345\210\230\346\226\214/log/~WRL0001.tmp"
similarity index 67%
copy from "Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc"
copy to "Server/\345\210\230\346\226\214/log/~WRL0001.tmp"
index 7387a3b..7f52a79 100644
--- "a/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc"
+++ "b/Server/\345\210\230\346\226\214/log/~WRL0001.tmp"
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc" "b/Server/\345\210\230\346\226\214/log/\346\227\245\345\277\227_\345\210\230\346\226\214_20250629.doc"
similarity index 67%
copy from "Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc"
copy to "Server/\345\210\230\346\226\214/log/\346\227\245\345\277\227_\345\210\230\346\226\214_20250629.doc"
index 7387a3b..219fbd0 100644
--- "a/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc"
+++ "b/Server/\345\210\230\346\226\214/log/\346\227\245\345\277\227_\345\210\230\346\226\214_20250629.doc"
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc" "b/Server/\345\210\230\346\226\214/log/\346\227\245\345\277\227_\345\210\230\346\226\214_20250701.doc"
similarity index 67%
copy from "Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc"
copy to "Server/\345\210\230\346\226\214/log/\346\227\245\345\277\227_\345\210\230\346\226\214_20250701.doc"
index 7387a3b..c859c7a 100644
--- "a/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc"
+++ "b/Server/\345\210\230\346\226\214/log/\346\227\245\345\277\227_\345\210\230\346\226\214_20250701.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_20250701.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_20250701.doc"
new file mode 100644
index 0000000..61a95c1
--- /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_20250701.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"
deleted file mode 100644
index ce852ea..0000000
--- "a/Server/\346\242\201\345\215\232/code/config.rar"
+++ /dev/null
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/code/server_config.zip" "b/Server/\346\242\201\345\215\232/code/server_config.zip"
new file mode 100644
index 0000000..8805ac0
--- /dev/null
+++ "b/Server/\346\242\201\345\215\232/code/server_config.zip"
Binary files differ
diff --git "a/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" "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"
deleted file mode 100644
index 7387a3b..0000000
--- "a/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"
+++ /dev/null
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc" "b/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0629.doc"
similarity index 82%
rename from "Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc"
rename to "Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0629.doc"
index 7387a3b..406bb4b 100644
--- "a/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc"
+++ "b/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0629.doc"
Binary files differ
diff --git "a/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc" "b/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0701 .doc"
similarity index 78%
copy from "Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc"
copy to "Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0701 .doc"
index 7387a3b..6fb4b7d 100644
--- "a/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0626.doc~81bc9be03b12d7a29e9bc4cc1ede5c433a7af1dc"
+++ "b/Server/\346\242\201\345\215\232/log/\346\227\245\345\277\227_\346\242\201\345\215\232_0701 .doc"
Binary files differ
diff --git "a/Server/\347\216\213\351\271\217\345\223\262/code/logger.h" "b/Server/\347\216\213\351\271\217\345\223\262/code/logger.h"
new file mode 100644
index 0000000..10cf437
--- /dev/null
+++ "b/Server/\347\216\213\351\271\217\345\223\262/code/logger.h"
@@ -0,0 +1,334 @@
+#pragma once
+#include "common.h"
+#include <cstring> // 用于strerror
+#include <cstdio>  // 用于std::rename, std::remove
+#include <utility> // 用于std::forward
+// 日志级别枚举
+enum class LogLevel {
+	TRACE,   // 最详细的跟踪信息
+	DEBUG,   // 调试信息
+	INFO,    // 常规信息
+	WARNING, // 警告信息
+	ERRORL,  // 错误信息
+	FATAL    // 严重错误
+};
+
+// 将日志级别转换为字符串
+inline const char* levelToString(LogLevel level) {
+	switch (level) {
+	case LogLevel::TRACE:   return "TRACE";
+	case LogLevel::DEBUG:   return "DEBUG";
+	case LogLevel::INFO:    return "INFO";
+	case LogLevel::WARNING: return "WARNING";
+	case LogLevel::ERRORL:  return "ERROR";
+	case LogLevel::FATAL:   return "FATAL";
+	default:                return "UNKNOWN";
+	}
+}
+
+// 日志配置结构
+struct LogConfig {
+	LogLevel minLevel = LogLevel::INFO; // 最小日志级别
+	bool consoleOutput = true;          // 是否输出到控制台
+	bool fileOutput = false;            // 是否输出到文件
+	std::string logFilePath = "temp.log";// 日志文件路径
+	bool includeTimestamp = true;       // 是否包含时间戳
+	bool includeThreadId = false;       // 是否包含线程ID
+	size_t maxFileSize = 10 * 1024 * 1024; // 最大文件大小 (10MB)
+	int maxBackupFiles = 5;             // 最大备份文件数
+};
+
+class Logger {
+public:
+	// 获取日志实例 
+	static Logger& instance() {
+		static Logger instance;
+		return instance;
+	}
+
+	// 配置日志系统 
+	void configure(const LogConfig& config) {
+		std::lock_guard<std::mutex> lock(configMutex_);
+		config_ = config;
+
+		// 如果启用文件输出,确保文件已打开
+		if (config.fileOutput) {
+			openLogFile();
+		}
+	}
+
+	// 记录日志 (模板方法,支持任何可流式输出的类型)
+	template<typename... Args>
+	void log(LogLevel level, Args&&... args) {
+		if (shutdown_) return;
+
+		// 复制配置以最小化锁范围
+		LogConfig currentConfig;
+		{
+			std::lock_guard<std::mutex> lock(configMutex_);
+			if (level < config_.minLevel) return;
+			currentConfig = config_;
+		}
+
+		// 构造日志消息
+		std::ostringstream oss;
+		formatLogPrefix(oss, level, currentConfig);
+
+		using expander = int[];
+		(void)expander {
+			0, (void(oss << std::forward<Args>(args)), 0)...
+		};
+
+		// 添加换行符
+		oss << '\n';
+		std::string message = oss.str();
+
+		// 直接写入日志
+		/*writeLog(message);*/
+
+		// 将日志消息加入队列
+		{
+			std::lock_guard<std::mutex> lock(queueMutex_);
+			logQueue_.push(std::move(message));
+		}
+
+		// 通知日志线程有新消息
+		queueCond_.notify_one();
+	}
+	// 便捷日志方法
+	template<typename... Args> void trace(Args&&... args) {
+		log(LogLevel::TRACE, std::forward<Args>(args)...);
+	}
+
+	template<typename... Args> void debug(Args&&... args) {
+		log(LogLevel::DEBUG, std::forward<Args>(args)...);
+	}
+
+	template<typename... Args> void info(Args&&... args) {
+		log(LogLevel::INFO, std::forward<Args>(args)...);
+	}
+
+	template<typename... Args> void warning(Args&&... args) {
+		log(LogLevel::WARNING, std::forward<Args>(args)...);
+	}
+
+	template<typename... Args> void error(Args&&... args) {
+		log(LogLevel::ERRORL, std::forward<Args>(args)...);
+	}
+
+	template<typename... Args> void fatal(Args&&... args) {
+		log(LogLevel::FATAL, std::forward<Args>(args)...);
+		flush();
+		std::exit(EXIT_FAILURE);
+	}
+
+	// 刷新日志缓冲区
+	void flush() {
+		std::lock_guard<std::mutex> lock(fileMutex_);
+		if (logFile_.is_open()) {
+			logFile_.flush();
+		}
+	}
+
+	// 析构函数
+	~Logger() {
+		shutdown();
+		flush();
+	}
+	// 安全关闭日志系统
+	void shutdown() {
+		if (shutdown_) return;
+
+		shutdown_ = true;
+		queueCond_.notify_all();  // 唤醒线程以处理退出
+
+		if (workerThread_.joinable()) {
+			workerThread_.join(); // 等待线程结束
+		}
+
+		flush();  // 最终刷新
+	}
+	// 删除拷贝构造函数和赋值运算符
+	Logger(const Logger&) = delete;
+	Logger& operator=(const Logger&) = delete;
+
+private:
+	LogConfig config_;                      // 日志配置
+	std::ofstream logFile_;                 // 日志文件流
+	std::mutex configMutex_;                // 配置互斥锁
+	std::mutex fileMutex_;                  // 文件操作互斥锁
+	std::atomic<bool> shutdown_{ false };   // 关闭标志
+	// 新增线程安全队列相关成员
+	std::queue<std::string> logQueue_;      // 日志消息队列
+	std::mutex queueMutex_;                 // 队列互斥锁
+	std::condition_variable queueCond_;     // 队列条件变量
+	std::thread workerThread_;              // 日志写入线程
+
+	// 私有构造函数
+	Logger() {
+		// 启动日志写入线程
+		workerThread_ = std::thread(&Logger::processLogs, this);
+	};
+	// 日志处理线程函数
+	void processLogs() {
+		while (true) {
+			std::unique_lock<std::mutex> lock(queueMutex_);
+
+			// 等待新日志或关闭信号
+			queueCond_.wait(lock, [this] {
+				return !logQueue_.empty() || shutdown_;
+				});
+
+			// 处理关闭信号
+			if (shutdown_ && logQueue_.empty()) {
+				break;
+			}
+
+			// 取出所有待处理日志
+			std::queue<std::string> tempQueue;
+			std::swap(logQueue_, tempQueue);
+			lock.unlock();
+
+			// 处理所有取出的日志
+			while (!tempQueue.empty()) {
+				writeLog(tempQueue.front());
+				tempQueue.pop();
+			}
+		}
+	}
+
+	// 格式化日志前缀
+	void formatLogPrefix(std::ostringstream& oss, LogLevel level, const LogConfig& config) {
+		// 日志级别标签
+		oss << "[" << levelToString(level) << "] ";
+
+		// 时间戳
+		if (config.includeTimestamp) {
+			auto now = std::chrono::system_clock::now();
+			auto in_time_t = std::chrono::system_clock::to_time_t(now);
+			auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(
+				now.time_since_epoch()) % 1000;
+
+			std::tm tm;
+#ifdef _WIN32
+			localtime_s(&tm, &in_time_t);
+#else
+			localtime_r(&in_time_t, &tm);
+#endif
+
+			oss << std::put_time(&tm, "%Y-%m-%d %H:%M:%S");
+			oss << '.' << std::setfill('0') << std::setw(3) << ms.count() << " ";
+		}
+
+		// 线程ID
+		if (config.includeThreadId) {
+			oss << "[Thread:" << std::this_thread::get_id() << "] ";
+		}
+	}
+
+	// 打开日志文件
+	void openLogFile() {
+		// 关闭当前文件(如果已打开)
+		if (logFile_.is_open()) {
+			logFile_.close();
+		}
+
+		// 检查文件大小,必要时轮转
+		std::ifstream in(config_.logFilePath, std::ios::binary | std::ios::ate);
+		if (in) {
+			auto size = in.tellg();
+			if (static_cast<size_t>(size) >= config_.maxFileSize) {
+				rotateLogFiles();
+			}
+		}
+		in.close();
+
+		// 打开新日志文件
+		logFile_.open(config_.logFilePath, std::ios::out | std::ios::app);
+		if (!logFile_.is_open()) {
+			std::cerr << "Failed to open log file: "
+				<< config_.logFilePath << " - "
+				<< errno << std::endl;
+		}
+	}
+
+	// 轮转日志文件
+	void rotateLogFiles() {
+		// 删除最旧的备份文件
+		if (config_.maxBackupFiles > 0) {
+			std::string oldestFile = config_.logFilePath + "." + std::to_string(config_.maxBackupFiles);
+			std::remove(oldestFile.c_str());
+
+			// 重命名现有备份文件
+			for (int i = config_.maxBackupFiles - 1; i >= 1; i--) {
+				std::string oldName = config_.logFilePath + "." + std::to_string(i);
+				std::string newName = config_.logFilePath + "." + std::to_string(i + 1);
+
+				if (fileExists(oldName)) {
+					std::rename(oldName.c_str(), newName.c_str());
+				}
+			}
+
+			// 重命名当前日志文件为备份1
+			if (fileExists(config_.logFilePath)) {
+				std::string newName = config_.logFilePath + ".1";
+				std::rename(config_.logFilePath.c_str(), newName.c_str());
+			}
+		}
+	}
+
+	// 检查文件是否存在
+	bool fileExists(const std::string& path) {
+		std::ifstream f(path);
+		return f.good();
+	}
+
+	// 实际写入日志
+	void writeLog(const std::string& message) {
+		LogConfig currentConfig;
+		{
+			std::lock_guard<std::mutex> configLock(configMutex_);
+			currentConfig = config_;
+		}
+
+		// 输出到控制台
+		if (currentConfig.consoleOutput) {
+			if (message.find("[ERROR]") != std::string::npos ||
+				message.find("[FATAL]") != std::string::npos) {
+				std::cerr << message;
+			}
+			else {
+				std::cout << message;
+			}
+		}
+
+		// 输出到文件
+		if (currentConfig.fileOutput) {
+			std::lock_guard<std::mutex> fileLock(fileMutex_);
+			if (!logFile_.is_open() || !logFile_.good()) {
+				openLogFile();
+			}
+
+			if (logFile_.good()) {
+				logFile_ << message;
+				logFile_.flush(); // 实时刷新到磁盘
+
+				// 检查文件大小
+				auto pos = logFile_.tellp();
+				if (static_cast<size_t>(pos) >= currentConfig.maxFileSize) {
+					logFile_.close();
+					rotateLogFiles();
+					logFile_.open(currentConfig.logFilePath, std::ios::out | std::ios::app);
+				}
+			}
+		}
+	}
+};
+
+// 日志宏定义 - 提供文件名和行号信息
+#define LOG_TRACE(...)   Logger::instance().trace("(", __FILE__, ":", __LINE__, ") ", __VA_ARGS__)
+#define LOG_DEBUG(...)   Logger::instance().debug("(", __FILE__, ":", __LINE__, ") ", __VA_ARGS__)
+#define LOG_INFO(...)    Logger::instance().info(__VA_ARGS__)
+#define LOG_WARN(...)    Logger::instance().warning("(", __FILE__, ":", __LINE__, ") ", __VA_ARGS__)
+#define LOG_ERROR(...)   Logger::instance().error("(", __FILE__, ":", __LINE__, ") ", __VA_ARGS__)
+#define LOG_FATAL(...)   Logger::instance().fatal("(", __FILE__, ":", __LINE__, ") ", __VA_ARGS__)
\ No newline at end of file
diff --git "a/Server/\347\216\213\351\271\217\345\223\262/document/\351\241\271\347\233\256\346\200\273\347\273\223.docx" "b/Server/\347\216\213\351\271\217\345\223\262/document/\351\241\271\347\233\256\346\200\273\347\273\223.docx"
new file mode 100644
index 0000000..625faff
--- /dev/null
+++ "b/Server/\347\216\213\351\271\217\345\223\262/document/\351\241\271\347\233\256\346\200\273\347\273\223.docx"
Binary files differ
diff --git "a/Server/\347\216\213\351\271\217\345\223\262/log/\346\227\245\345\277\227_\347\216\213\351\271\217\345\223\262_20250629.doc" "b/Server/\347\216\213\351\271\217\345\223\262/log/\346\227\245\345\277\227_\347\216\213\351\271\217\345\223\262_20250629.doc"
new file mode 100644
index 0000000..25b1c97
--- /dev/null
+++ "b/Server/\347\216\213\351\271\217\345\223\262/log/\346\227\245\345\277\227_\347\216\213\351\271\217\345\223\262_20250629.doc"
Binary files differ
diff --git "a/Server/\347\216\213\351\271\217\345\223\262/log/\346\227\245\345\277\227_\347\216\213\351\271\217\345\223\262_20250630.doc" "b/Server/\347\216\213\351\271\217\345\223\262/log/\346\227\245\345\277\227_\347\216\213\351\271\217\345\223\262_20250630.doc"
new file mode 100644
index 0000000..78def34
--- /dev/null
+++ "b/Server/\347\216\213\351\271\217\345\223\262/log/\346\227\245\345\277\227_\347\216\213\351\271\217\345\223\262_20250630.doc"
Binary files differ
diff --git "a/Server/\347\216\213\351\271\217\345\223\262/log/\346\227\245\345\277\227_\347\216\213\351\271\217\345\223\262_20250701.doc" "b/Server/\347\216\213\351\271\217\345\223\262/log/\346\227\245\345\277\227_\347\216\213\351\271\217\345\223\262_20250701.doc"
new file mode 100644
index 0000000..61462ad
--- /dev/null
+++ "b/Server/\347\216\213\351\271\217\345\223\262/log/\346\227\245\345\277\227_\347\216\213\351\271\217\345\223\262_20250701.doc"
Binary files differ
diff --git "a/Server/\350\203\241\351\207\215\351\230\263/code/lmagePreprocessor.zip" "b/Server/\350\203\241\351\207\215\351\230\263/code/lmagePreprocessor.zip"
new file mode 100644
index 0000000..19725fb
--- /dev/null
+++ "b/Server/\350\203\241\351\207\215\351\230\263/code/lmagePreprocessor.zip"
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_20250629.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_20250629.doc"
new file mode 100644
index 0000000..1644a04
--- /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_20250629.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_20250701.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_20250701.doc"
new file mode 100644
index 0000000..bb342b2
--- /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_20250701.doc"
Binary files differ

--
Gitblit v1.8.0