From 58f8efc10ca8ea53e54eeede22f8d48a02cb1dd6 Mon Sep 17 00:00:00 2001 From: Euan Mactavish Date: Thu, 10 Mar 2022 15:58:26 +0800 Subject: [PATCH] added missed files to git --- server/server-config.yaml | 1 + student_client/pyqt/Pipfile.lock | 221 +++++++++++++++++++++ student_client/vue/src/assets/tip_zoom.png | Bin 0 -> 12599 bytes 3 files changed, 222 insertions(+) create mode 100644 student_client/pyqt/Pipfile.lock create mode 100644 student_client/vue/src/assets/tip_zoom.png diff --git a/server/server-config.yaml b/server/server-config.yaml index ea6e1eb..84fe4e6 100644 --- a/server/server-config.yaml +++ b/server/server-config.yaml @@ -1,3 +1,4 @@ +# 服务端软件的配置文件,应当与程序放在同一级目录下,不支持热重载,修改后需要重启程序才能生效 disable_console_color: false # console 输出是否包含颜色,如果日志输出到文件,会出现乱码 dsn: "root:12345@tcp(127.0.0.1:3306)/easy_testing?charset=utf8mb4&parseTime=True&loc=Local" # 数据库 DSN port: 9000 # 服务器监听的端口 diff --git a/student_client/pyqt/Pipfile.lock b/student_client/pyqt/Pipfile.lock new file mode 100644 index 0000000..b1b6468 --- /dev/null +++ b/student_client/pyqt/Pipfile.lock @@ -0,0 +1,221 @@ +{ + "_meta": { + "hash": { + "sha256": "315a479b65d04b74cb6de33e57fa82b2319e4e2fa39e410feaebc2279a3f4acc" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.7" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.tuna.tsinghua.edu.cn/simple", + "verify_ssl": true + } + ] + }, + "default": { + "certifi": { + "hashes": [ + "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872", + "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569" + ], + "version": "==2021.10.8" + }, + "charset-normalizer": { + "hashes": [ + "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597", + "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df" + ], + "markers": "python_version >= '3'", + "version": "==2.0.12" + }, + "click": { + "hashes": [ + "sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1", + "sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb" + ], + "markers": "python_version >= '3.6'", + "version": "==8.0.4" + }, + "colorama": { + "hashes": [ + "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b", + "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2" + ], + "markers": "platform_system == 'Windows'", + "version": "==0.4.4" + }, + "flask": { + "hashes": [ + "sha256:59da8a3170004800a2837844bfa84d49b022550616070f7cb1a659682b2e7c9f", + "sha256:e1120c228ca2f553b470df4a5fa927ab66258467526069981b3eb0a91902687d" + ], + "index": "pypi", + "version": "==2.0.3" + }, + "idna": { + "hashes": [ + "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff", + "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d" + ], + "markers": "python_version >= '3'", + "version": "==3.3" + }, + "itsdangerous": { + "hashes": [ + "sha256:29285842166554469a56d427addc0843914172343784cb909695fdbe90a3e129", + "sha256:d848fcb8bc7d507c4546b448574e8a44fc4ea2ba84ebf8d783290d53e81992f5" + ], + "markers": "python_version >= '3.7'", + "version": "==2.1.0" + }, + "jinja2": { + "hashes": [ + "sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8", + "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7" + ], + "markers": "python_version >= '3.6'", + "version": "==3.0.3" + }, + "markupsafe": { + "hashes": [ + "sha256:023af8c54fe63530545f70dd2a2a7eed18d07a9a77b94e8bf1e2ff7f252db9a3", + "sha256:09c86c9643cceb1d87ca08cdc30160d1b7ab49a8a21564868921959bd16441b8", + "sha256:142119fb14a1ef6d758912b25c4e803c3ff66920635c44078666fe7cc3f8f759", + "sha256:1d1fb9b2eec3c9714dd936860850300b51dbaa37404209c8d4cb66547884b7ed", + "sha256:204730fd5fe2fe3b1e9ccadb2bd18ba8712b111dcabce185af0b3b5285a7c989", + "sha256:24c3be29abb6b34052fd26fc7a8e0a49b1ee9d282e3665e8ad09a0a68faee5b3", + "sha256:290b02bab3c9e216da57c1d11d2ba73a9f73a614bbdcc027d299a60cdfabb11a", + "sha256:3028252424c72b2602a323f70fbf50aa80a5d3aa616ea6add4ba21ae9cc9da4c", + "sha256:30c653fde75a6e5eb814d2a0a89378f83d1d3f502ab710904ee585c38888816c", + "sha256:3cace1837bc84e63b3fd2dfce37f08f8c18aeb81ef5cf6bb9b51f625cb4e6cd8", + "sha256:4056f752015dfa9828dce3140dbadd543b555afb3252507348c493def166d454", + "sha256:454ffc1cbb75227d15667c09f164a0099159da0c1f3d2636aa648f12675491ad", + "sha256:598b65d74615c021423bd45c2bc5e9b59539c875a9bdb7e5f2a6b92dfcfc268d", + "sha256:599941da468f2cf22bf90a84f6e2a65524e87be2fce844f96f2dd9a6c9d1e635", + "sha256:5ddea4c352a488b5e1069069f2f501006b1a4362cb906bee9a193ef1245a7a61", + "sha256:62c0285e91414f5c8f621a17b69fc0088394ccdaa961ef469e833dbff64bd5ea", + "sha256:679cbb78914ab212c49c67ba2c7396dc599a8479de51b9a87b174700abd9ea49", + "sha256:6e104c0c2b4cd765b4e83909cde7ec61a1e313f8a75775897db321450e928cce", + "sha256:736895a020e31b428b3382a7887bfea96102c529530299f426bf2e636aacec9e", + "sha256:75bb36f134883fdbe13d8e63b8675f5f12b80bb6627f7714c7d6c5becf22719f", + "sha256:7d2f5d97fcbd004c03df8d8fe2b973fe2b14e7bfeb2cfa012eaa8759ce9a762f", + "sha256:80beaf63ddfbc64a0452b841d8036ca0611e049650e20afcb882f5d3c266d65f", + "sha256:84ad5e29bf8bab3ad70fd707d3c05524862bddc54dc040982b0dbcff36481de7", + "sha256:8da5924cb1f9064589767b0f3fc39d03e3d0fb5aa29e0cb21d43106519bd624a", + "sha256:961eb86e5be7d0973789f30ebcf6caab60b844203f4396ece27310295a6082c7", + "sha256:96de1932237abe0a13ba68b63e94113678c379dca45afa040a17b6e1ad7ed076", + "sha256:a0a0abef2ca47b33fb615b491ce31b055ef2430de52c5b3fb19a4042dbc5cadb", + "sha256:b2a5a856019d2833c56a3dcac1b80fe795c95f401818ea963594b345929dffa7", + "sha256:b8811d48078d1cf2a6863dafb896e68406c5f513048451cd2ded0473133473c7", + "sha256:c532d5ab79be0199fa2658e24a02fce8542df196e60665dd322409a03db6a52c", + "sha256:d3b64c65328cb4cd252c94f83e66e3d7acf8891e60ebf588d7b493a55a1dbf26", + "sha256:d4e702eea4a2903441f2735799d217f4ac1b55f7d8ad96ab7d4e25417cb0827c", + "sha256:d5653619b3eb5cbd35bfba3c12d575db2a74d15e0e1c08bf1db788069d410ce8", + "sha256:d66624f04de4af8bbf1c7f21cc06649c1c69a7f84109179add573ce35e46d448", + "sha256:e67ec74fada3841b8c5f4c4f197bea916025cb9aa3fe5abf7d52b655d042f956", + "sha256:e6f7f3f41faffaea6596da86ecc2389672fa949bd035251eab26dc6697451d05", + "sha256:f02cf7221d5cd915d7fa58ab64f7ee6dd0f6cddbb48683debf5d04ae9b1c2cc1", + "sha256:f0eddfcabd6936558ec020130f932d479930581171368fd728efcfb6ef0dd357", + "sha256:fabbe18087c3d33c5824cb145ffca52eccd053061df1d79d4b66dafa5ad2a5ea", + "sha256:fc3150f85e2dbcf99e65238c842d1cfe69d3e7649b19864c1cc043213d9cd730" + ], + "markers": "python_version >= '3.7'", + "version": "==2.1.0" + }, + "pyqt5": { + "hashes": [ + "sha256:33ced1c876f6a26e7899615a5a4efef2167c263488837c7beed023a64cebd051", + "sha256:80343bcab95ffba619f2ed2467fd828ffeb0a251ad7225be5fc06dcc333af452", + "sha256:9d2dcdaf82263ae56023410a7af15d1fd746c8e361733a7d0d1bd1f004ec2793", + "sha256:9d6efad0377aa78bf081a20ac752ce86096ded18f04c592d98f5b92dc879ad0a", + "sha256:f411ecda52e488e1d3c5cce7563e1b2ca9cf0b7531e3c25b03d9a7e56e07e7fc" + ], + "index": "pypi", + "version": "==5.15.6" + }, + "pyqt5-qt5": { + "hashes": [ + "sha256:1988f364ec8caf87a6ee5d5a3a5210d57539988bf8e84714c7d60972692e2f4a", + "sha256:750b78e4dba6bdf1607febedc08738e318ea09e9b10aea9ff0d73073f11f6962", + "sha256:76980cd3d7ae87e3c7a33bfebfaee84448fd650bad6840471d6cae199b56e154", + "sha256:9cc7a768b1921f4b982ebc00a318ccb38578e44e45316c7a4a850e953e1dd327" + ], + "version": "==5.15.2" + }, + "pyqt5-sip": { + "hashes": [ + "sha256:2d21420b0739df2607864e2c80ca01994bc40cb116da6ad024ea8d9f407b0356", + "sha256:2f24f299b44c511c23796aafbbb581bfdebf78d0905657b7cee2141b4982030e", + "sha256:53e23dcc0fc3857204abd47660e383b930941bd1aeaf3c78ed59c5c12dd48010", + "sha256:5740a1770d6b92a5dca8bb0bda4620baf0d7a726beb864f69c667ddac91d6f64", + "sha256:5d59c4a5e856a35c41b47f5a23e1635b38cd1672f4f0122a68ebcb6889523ff2", + "sha256:5e641182bfee0501267c55e687832e4efe05becdae9e555d3695d706009b6598", + "sha256:6b2e553e21b7ff124007a6b9168f8bb8c171fdf230d31ca0588df180f10bacbe", + "sha256:78ef8f1f41819661aa8e3117d6c1cd76fa14aef265e5bfd515dbfc64d412416b", + "sha256:7ee08ad0ebf85b935f5d8d38306f8665fff9a6026c14fc0a7d780649e889c096", + "sha256:82c1b3080db7634fa318fddbb3cfaa30e63a67bca1001a76958c31f30b774a9d", + "sha256:8fe5b3e4bbb8b472d05631cad21028d073f9f8eda770041449514cb3824a867f", + "sha256:9699286fcdf4f75a4b91c7e4832c0f926af18d648c62a4ed72dd294c1a93705a", + "sha256:989d51c41456cc496cb96f0b341464932b957040d26561f0bb4cf5a0914d6b36", + "sha256:b56aedf7b0a496e4a8bd6087566888cea448aa01c76126cdb8b140e3ff3f5d93", + "sha256:c9a977d2835a5fbf250b00d61267dc228bdec9e20c7420d4e8d54d6f20410f87", + "sha256:ce7a8b3af9db378c46b345d9809d481a74c4bfcd3129486c054fbdbc6a3503f9", + "sha256:cec6ebf0b1163b18f09bc523160c467a9528b6dca129753827ac0bc432b332ae", + "sha256:cfaad4a773c18b963092589b1a98153d36624601de8597a4dc287e5a295d5625", + "sha256:e2792af660da7479799f53028da88190ae8b4a0ad5acc2acbfd6c7bbfe110d58", + "sha256:ee188eac5fd94dfe8d9e04a9e7fbda65c3535d5709278d8b7367ebd54f00e27f", + "sha256:ffd25051962c593d1c3c30188b9fbd8589ba17acd23a0202dc987bd3552fa611" + ], + "markers": "python_version >= '3.5'", + "version": "==12.9.1" + }, + "pyqtwebengine": { + "hashes": [ + "sha256:30cebf455406990d5a0b859eac261ba6b45c32ce18956271733e0e96dbdca9b7", + "sha256:5c77f71d88d871bc7400c68ef6433fadc5bd57b86d1a9c4d8094cea42f3607f1", + "sha256:782aeee6bc8699bc029fe5c169a045c2bc9533d781cf3f5e9fb424b85a204e68", + "sha256:ab47608dccf2b5e4b950d5a3cc704b17711af035024d07a9b71ad29fc103b941", + "sha256:b827ad7ba0a65d5cd176797478f0ec8f599df6746b06c548649ff5674482a022" + ], + "index": "pypi", + "version": "==5.15.5" + }, + "pyqtwebengine-qt5": { + "hashes": [ + "sha256:24231f19e1595018779977de6722b5c69f3d03f34a5f7574ff21cd1e764ef76d", + "sha256:9e80b408d8de09d4e708d5d84c3ceaf3603292ff8f5e566ae44bb0320fa59c33", + "sha256:bc7b1fd1f4f8138d59b0b0245d601fb2c5c0aa1e1e7e853b713e52a3165d147e", + "sha256:ec2acb1780c0124ef060c310e00ca701f388d8b6c35bba9127f7a6f0dc536f77" + ], + "version": "==5.15.2" + }, + "requests": { + "hashes": [ + "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24", + "sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7" + ], + "index": "pypi", + "version": "==2.26.0" + }, + "urllib3": { + "hashes": [ + "sha256:000ca7f471a233c2251c6c7023ee85305721bfdf18621ebff4fd17a8653427ed", + "sha256:0e7c33d9a63e7ddfcb86780aac87befc2fbddf46c58dbb487e0855f7ceec283c" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", + "version": "==1.26.8" + }, + "werkzeug": { + "hashes": [ + "sha256:1421ebfc7648a39a5c58c601b154165d05cf47a3cd0ccb70857cbdacf6c8f2b8", + "sha256:b863f8ff057c522164b6067c9e28b041161b4be5ba4d0daceeaa50a163822d3c" + ], + "markers": "python_version >= '3.6'", + "version": "==2.0.3" + } + }, + "develop": {} +} diff --git a/student_client/vue/src/assets/tip_zoom.png b/student_client/vue/src/assets/tip_zoom.png new file mode 100644 index 0000000000000000000000000000000000000000..e68b6a385fa85c9d6dc66bdef58b0ed04dfa16be GIT binary patch literal 12599 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 LZO;A4