├── .gitattributes ├── .htaccess ├── .user.ini ├── 404.html ├── LICENSE ├── README.md ├── UpdateDaily.txt ├── css ├── common.css ├── dashboard.css ├── login.css ├── shadow.css └── table.css ├── index.html ├── js ├── dashboard.js ├── formcheck.js ├── login.js └── tcheck.js ├── pages ├── add.php ├── add_ok.php ├── adduser.php ├── adduser_ok.php ├── changepw.php ├── changepw_ok.php ├── dashboard.php ├── login.php ├── menage.php ├── menage_ok.php ├── search.php ├── search_result.php ├── user_menage.php ├── user_menage_ok.php ├── user_view.php └── view.php ├── php ├── authorization.php ├── check_t_id.php ├── check_user_id.php ├── conn.php ├── did_dname.php ├── isadmin.php ├── login_ok.php └── logout_ok.php ├── playground ├── JS │ ├── dashboard-test.js │ └── dashboard-test2.js ├── css │ ├── common.css │ ├── dashboard-test.css │ └── dashboard-test2.css └── pages │ ├── dashboard-test.html │ └── dashboard-test2.html ├── readme.txt ├── sql └── tims.sql ├── 旧版本 ├── KS.7z └── tims.hamcoo.com.rar └── 课设.code-workspace /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.htaccess: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.user.ini: -------------------------------------------------------------------------------- 1 | open_basedir=/www/wwwroot/tims.hamcoo.com/:/tmp/:/proc/ -------------------------------------------------------------------------------- /404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 404 8 | 21 | 22 | 23 | 24 |

404,没有此页面

25 | 26 | 27 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Teacher information management system 2 | 教师信息管理系统 TIMS 3 | #Demo Guide 4 | 5 | 6 | ## 要浏览Demo,你需要 7 | 1. 合适的现代浏览器。请使用: 8 | EdgeHTML 17 9 | Chromium 76 10 | Safari 9 11 | Opera 64 12 | 以上版本浏览,不然真的很丑。 13 | 2. 互联网连接。 14 | 为减小不必要的空间占用,项目使用图床托管,首次加载需要互联网连接。 15 | 从这里开始: 16 | 1. 新建数据库,名称“tims”,用户“Hank”(注意大小写),密码“123456”。 17 | 2. 将sql/tims.sql导入到数据库中。 18 | 3. 启动PHP,通过服务器访问 index.html 来开始。 19 | 20 | ------------ 21 | 22 | 一些题外话: 23 | 1、`「dashboard-test」`是刚开始时的废案,现作为操场(playground)项目,小窗口让网页更加桌面化,工作台现在可移动了。操场项目引用了开源代码。 24 | 25 | 26 | ------------ 27 | 28 | # 项目图表 29 | ## ER-系统 30 | ![系统ER图-tims](https://cdn.jsdelivr.net/gh/hankzhangcn/CDN@master/img/系统ER图-tims.7l9gf5bwnqs0.png) 31 | 32 | 40 | 41 | # 预览 42 | ![主界面](https://cdn.jsdelivr.net/gh/hankzhangcn/CDN@master/img/主界面.14ik9y4dc1sw.png) 43 | ![教师一览](https://cdn.jsdelivr.net/gh/hankzhangcn/CDN@master/img/教师一览.7ds5nks91jw0.png) 44 | ![教师筛选](https://cdn.jsdelivr.net/gh/hankzhangcn/CDN@master/img/教师筛选.6hhzifbxdgs0.png) 45 | 46 | # 功能gif 47 | ## 登录动效 48 | ![tims-登录-未优化的gif](https://cdn.jsdelivr.net/gh/hankzhangcn/CDN@master/img/tims-登录-未优化的gif.1c0qy03jbo9s.gif) 49 | 50 | ## 模糊搜索 51 | ![模糊搜索-tims](https://cdn.jsdelivr.net/gh/hankzhangcn/CDN@master/img/模糊搜索-tims.98j1fe59ctk.gif) 52 | 53 | ## ID检查 54 | ![ID检查-tims](https://cdn.jsdelivr.net/gh/hankzhangcn/CDN@master/img/ID检查-tims.3y75qqcsrnu0.gif) 55 | 56 | ------------ 57 | 58 | 59 | # Daily 60 | 单引号`「」`标识div、注释、列名等小型内容块。 61 | 62 | 双引号`『』`标识页面,表名等文件型。 63 | 64 | 65 | ------------ 66 | 67 | 68 | ### 2020年6月11日 69 | #### 功能: 70 | 71 | 主界面新增`「提示板 noticepad」`。 72 | 73 | `「noticepad」`能够显示当前用户、提示板块功能、说明操作指南。 74 | 75 | 识别到未登录访问内部页面时,将强制跳转回`『login.php』`。 76 | 77 | #### 问题: 78 | 79 | 解决了`『仪表盘』`不能调用``「$_SESSION」``变量中``「user_id」``的问题。(定位于`『dashboard.php』` `「控制登录」`注释、提示板) 80 | 81 | 解决了把页面从 html 变成 php 通过 localhost 访问的同时,由于浏览器缓存,CSS 样式表不能更新,无法调试的问题。(定位于`『login.php』`引用样式表行) 82 | 83 | #### 优化: 84 | 分离了`「提示板」`和`「工作台」`。 85 | 86 | 优化了`『dashboard.php』`的页面结构,增加`「contentflow」`来固定右侧内容流的版式。 87 | 88 | 从`『login.php』`提出了部分代码到`『conn.php』`来复用数据库连接代码。 89 | 90 | 优化了顶栏的边距,与内容区的`「文字」`边线对齐,而不是内容区本身的边线。视觉上更加和谐。 91 | 92 | 93 | 94 | ------------ 95 | 96 | 97 | ### 2020年6月12日 98 | 99 | #### 功能: 100 | 101 | 用户现在可以从`『仪表盘』`登出了。 102 | 103 | 所有页面新增了`「版权」`栏目。 104 | 105 | #### 问题: 106 | 107 | 6月23日已修复-页面背景可能在低缩放率出现 repeat 的情况。 108 | 109 | #### 优化: 110 | 111 | 借助于 JQuery easing 库,动效得到升级,现在登录、尤其是登出的衔接更加连贯,且符合现实世界的物理规律了。 112 | 113 | 114 | 115 | ------------ 116 | 117 | 118 | 119 | ### 2020年6月13日 120 | #### 功能: 121 | 122 | 限制了登出操作仅在`『仪表盘』`,来防止误操作和数据丢失。 123 | 124 | 新增`『教师一览』`页面。可以正常工作。 125 | 126 | 新增`『教师管理』`页面,尚不能工作,也没有优化。 127 | 128 | #### 问题: 129 | 130 | `『教师一览』`表格不美观。 131 | 132 | #### 优化: 133 | 134 | 动效升级,现在登录的动画也同样优雅了。 135 | 136 | ------------ 137 | 138 | 139 | 140 | ### 2020年6月14日 141 | 142 | #### 功能: 143 | 144 | 从早到晚不停写:完成了当前规划的所有主要功能—— 145 | 146 | `『教师管理』`中: 147 | 148 | 下拉框的选项内容从数据库获取,并默认显示当前教师登记的内容。 149 | 150 | 现在可以提交教师信息的修改。 151 | 152 | 现在填写 ID 可以直达管理教师信息了。 153 | 154 | 多条件混合搜索完成,通过姓名,部门等条件快速搜索教师了。 155 | 156 | 管理员密码现在支持修改了,在keyup、submit时进行动态验证。 157 | 158 | #### 问题: 159 | 160 | 已于6月20日解决——但CSS文件仍然很乱 161 | 162 | #### 优化: 163 | 164 | `『教师管理』`中的填写框更符合内容了。(日期可以直接从万年历选择,固定内容可以下拉选择) 165 | 166 | 直接访问`『教师管理』`的操作现在可以被识别并强制后退了。(BOM) 167 | 168 | 统一了填写框和提交按钮的视觉效果。 169 | 170 | 171 | 172 | ------------ 173 | 174 | 175 | 176 | 177 | 178 | ### 2020年6月15日-2020年6月17日 179 | 180 | 复习日。 181 | 182 | 183 | 184 | ------------ 185 | 186 | 187 | 188 | 189 | 190 | ### 2020年6月17日 191 | 192 | #### 功能: 193 | 194 | ##### 模糊搜索 195 | 196 | 通过 LIKE 关键字扩展了模糊搜索,现在搜索可以只填写“可”而非强制“瀚可”了。 197 | 198 | 199 | 200 | 201 | 202 | ### 2020年6月18日 203 | 204 | 整理所有文件。 205 | 206 | #### 功能: 207 | 208 | ##### 分离 超级管理员 和 部门管理员。 209 | 210 | 超级管理员可以创建部门管理员,部门管理员只能管理相对应的部门教师信息。但仍可查看全体教师信息。 211 | 212 | #### 优化: 213 | 214 | 新增`『authorization.php』`来统一认证。 215 | 216 | 新增`『did_name.php』`来统一各页面中部门id到部门名的互相转化。 217 | 218 | 219 | 220 | 221 | 222 | ------------ 223 | 224 | 225 | 226 | 227 | 228 | ### 2020年6月20日 229 | 230 | #### 功能: 231 | 232 | 现在,超级管理员 可以在前端添加 部门管理员 了。 233 | 234 | ####优化: 235 | 236 | ##### 文件整合 237 | 238 | ###### 功能导向的 CSS 文件 239 | 240 | 不再按页面建立 CSS 文件,而是如“表格”“小部件”“通用”分类。 241 | 242 | 现在页面元素的风格更加统一。同时,表的引用更加直观,易于管理了。 243 | 244 | ###### JS 文件复用 245 | 246 | 现在,`『changepw.js』` `『add_user.js』`已被整合到`『formcheck.php』`。 247 | 248 | ###### JS命名 249 | 250 | 规范了 `『formcheck.js』`的变量名称,减少 Debug 工作量。 251 | 252 | #### 题外话 253 | 254 | ##### 命名优化 255 | 256 | 现在,文件的名称亟待统一。目标是对于页面内元素和所有变量,采用“驼峰命名法”。带来的问题是之前所有内容可能需要重新检查。 257 | 258 | 259 | 260 | 261 | 262 | ------------ 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | ### 2020年6月21日 271 | 272 | 所有功能都已经完成 273 | 274 | #### 功能: 275 | 276 | ##### 管理员 277 | 278 | 现在超级管理员可以浏览所有子管理员的信息了。 279 | 280 | 可以修改子管理员的部门信息。 281 | 282 | 可以在前端删除子管理员账号。 283 | 284 | 超管现在可以在 `「功能列表板」`发现以上功能了。 285 | 286 | ##### 教师 287 | 288 | 现在管理员可以删除教师条目了。(在24日被更改) 289 | 290 | #### 优化: 291 | 292 | 教师信息新增/编辑、密码修改 都增加了表单验证。(tcheck 分离来自 formcheck) 293 | 294 | 权限现已优化,如超管不能创建超管,也不能编辑其他人成为超管。 295 | 296 | 更改教师 ID 所导致的一系列问题现已修复。 297 | 298 | 299 | 300 | ------------ 301 | 302 | ### 2020年6月24日 303 | 304 | 根据答辩要求做出一些修改 305 | 306 | #### 功能: 307 | 308 | 教师现在拥有`在校状态`的属性了。 309 | 310 | 处于 离校 状态的教师不再显示在`『教师一览』`中。 311 | 312 | 现在,密码将以`md5()`形式存放,不再保存原密码在数据库中了。 313 | 314 | #### 优化: 315 | 316 | 将`删除`操作定义为离校、 317 | 318 | -------------------------------------------------------------------------------- /UpdateDaily.txt: -------------------------------------------------------------------------------- 1 | 单引号「」标识div、注释、列名等小型内容块。 2 | 双引号『』标识页面,表名等文件型。 3 | 4 | 备注 5 | 正在生效 6 | 7 | 已作废 8 | "VIEW\SEARCH\CHANGEPW同一个CSS\\用到表格视图 9 | Menage\add 同一个CSS" 10 | ------------------------------------------------------------------------------------------ 11 | 2020年6月11日 12 | 功能: 13 | 主界面新增「提示板 noticepad」。 14 | 「noticepad」能够显示当前用户、提示板块功能、说明操作指南。 15 | 识别到未登录访问内部页面时,将强制跳转回『login.php』。 16 | 问题: 17 | 解决了『仪表盘』不能调用「$_SESSION」变量中「user_id」的问题。(定位于『dashboard.php』「控制登录」注释、提示板) 18 | 解决了把页面从 html 变成 php 通过 localhost 访问的同时,由于浏览器缓存,CSS 样式表不能更新,无法调试的问题。(定位于『login.php』引用样式表行) 19 | 优化: 20 | 分离了「提示板」和「工作台」。 21 | 优化了『dashboard.php』的页面结构,增加「contentflow」来固定右侧内容流的版式。 22 | 从『login.php』提出了部分代码到『conn.php』来复用数据库连接代码。 23 | 优化了顶栏的边距,与内容区的「文字」边线对齐,而不是内容区本身的边线。视觉上更加和谐。 24 | ------------------------------------------------------------------------------------------ 25 | 2020年6月12日 26 | 功能: 27 | 用户现在可以从『仪表盘』登出了。 28 | 所有页面新增了「版权」栏目。 29 | 问题: 30 | 6月23日已修复-页面背景可能在低缩放率出现 repeat 的情况。 31 | 优化: 32 | 借助于 JQuery easing 库,动效得到升级,现在登录、尤其是登出的衔接更加连贯,且符合现实世界的物理规律了。 33 | ------------------------------------------------------------------------------------------ 34 | 2020年6月13日 35 | 功能: 36 | 限制了登出操作仅在『仪表盘』,来防止误操作和数据丢失。 37 | 新增『教师一览』页面。可以正常工作。 38 | 新增『教师管理』页面,尚不能工作,也没有优化。 39 | 问题: 40 | 『教师一览』表格不美观。 41 | 优化: 42 | 动效升级,现在登录的动画也同样优雅了。 43 | ------------------------------------------------------------------------------------------ 44 | 2020年6月14日 45 | 功能: 46 | 从早到晚不停写:完成了当前规划的所有主要功能—— 47 | 『教师管理』中: 48 | 下拉框的选项内容从数据库获取,并默认显示当前教师登记的内容。 49 | 现在可以提交教师信息的修改。 50 | 现在填写 ID 可以直达管理教师信息了。 51 | 多条件混合搜索完成,通过姓名,部门等条件快速搜索教师了。 52 | 管理员密码现在支持修改了,在keyup、submit时进行动态验证。 53 | 问题:已于6月20日解决——但CSS文件仍然很乱 54 | 优化: 55 | 『教师管理』中的填写框更符合内容了。(日期可以直接从万年历选择,固定内容可以下拉选择) 56 | 直接访问『教师管理』的操作现在可以被识别并强制后退了。(BOM) 57 | 统一了填写框和提交按钮的视觉效果。 58 | ------------------------------------------------------------------------------------------ 59 | 2020年6月15日-2020年6月17日 60 | 复习日。 61 | ------------------------------------------------------------------------------------------ 62 | 2020年6月17日 63 | 功能: 64 | 模糊搜索 65 | 通过 LIKE 关键字扩展了模糊搜索,现在搜索可以只填写“可”而非强制“瀚可”了。 66 | ------------------------------------------------------------------------------------------ 67 | 2020年6月18日 68 | 整理所有文件。 69 | 功能: 70 | 分离 超级管理员 和 部门管理员。 71 | 超级管理员可以创建部门管理员,部门管理员只能管理相对应的部门教师信息。但仍可查看全体教师信息。 72 | 优化: 73 | 新增『authorization.php』来统一认证。 74 | 新增『did_name.php』来统一各页面中部门id到部门名的互相转化。 75 | ------------------------------------------------------------------------------------------ 76 | 2020年6月20日 77 | 功能: 78 | 现在,超级管理员 可以在前端添加 部门管理员 了。 79 | 优化: 80 | 文件整合 81 | 功能导向的 CSS 文件 82 | 不再按页面建立 CSS 文件,而是如“表格”“小部件”“通用”分类。 83 | 现在页面元素的风格更加统一。同时,表的引用更加直观,易于管理了。 84 | JS 文件复用 85 | 现在,『changepw.js』『add_user.js』已被整合到『formcheck.php』。 86 | JS命名 87 | 规范了 『formcheck.js』的变量名称,减少 Debug 工作量。 88 | 题外话 89 | 命名优化 90 | 现在,文件的名称亟待统一。目标是对于页面内元素和所有变量,采用“驼峰命名法”。带来的问题是之前所有内容可能需要重新检查。 91 | ------------------------------------------------------------------------------------------ 92 | 2020年6月21日 93 | 所有功能都已经完成 94 | 功能: 95 | 管理员 96 | 现在超级管理员可以浏览所有子管理员的信息了。 97 | 可以修改子管理员的部门信息。 98 | 可以在前端删除子管理员账号。 99 | 超管现在可以在 「功能列表板」发现以上功能了。 100 | 教师 101 | 现在管理员可以删除教师条目了。 102 | 优化: 103 | 教师信息新增/编辑、密码修改 都增加了表单验证。(tcheck 分离来自 formcheck) 104 | 权限现已优化,如超管不能创建超管,也不能编辑其他人成为超管。 105 | 更改教师 ID 所导致的一系列问题现已修复。 106 | -------------------------------------------------------------------------------- /css/common.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; 3 | padding: 0; 4 | box-sizing: border-box; 5 | } 6 | 7 | html,body,main { 8 | height: 100%; 9 | } 10 | 11 | body { 12 | /*为 macOS 、 Windows 、以及 Linux 提供更好的字体展示*/ 13 | font-family: "Helvetica Neue", Helvetica, Arial, "PingFang SC", "Hiragino Sans GB", "Heiti SC", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; 14 | font: 14px/1.5; 15 | } 16 | 17 | a { 18 | text-decoration: none; 19 | color: rgb(44, 44, 44); 20 | } 21 | 22 | ul,li{ 23 | list-style: none; 24 | } 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | body { 35 | background: linear-gradient(to right top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0)), url(https://s1.ax1x.com/2020/06/24/NaXEAP.jpg) center center ; 36 | min-height: 500px; 37 | background-attachment: fixed; 38 | background-size: cover; 39 | 40 | } 41 | /*body::-webkit-scrollbar{/*隐藏纵向滚动条 42 | display: none; 43 | }*/ 44 | .topbar { 45 | position:fixed; 46 | top:0%; 47 | height: 65px; 48 | width: 100%; 49 | background-color: rgba(255, 255, 255, 0.623); 50 | backdrop-filter: blur(20px); 51 | /*Edge17-18*/ 52 | -webkit-backdrop-filter: blur(20px); 53 | box-shadow: 0 0 200px 2px rgba(0, 0, 0, 0.5); 54 | z-index: 9999; 55 | } 56 | 57 | .topbar .tbleft{ 58 | position: absolute; 59 | top:0px; 60 | left: 10%; 61 | height: 65px; 62 | margin-left: 30px; 63 | } 64 | .topbar .tbleft .logo { 65 | height: 65px; 66 | position: absolute; 67 | } 68 | .topbar .tbleft a{ 69 | position: relative; 70 | left: 80px; 71 | font-size: large; 72 | line-height: 65px; 73 | } 74 | 75 | 76 | .topbar .tbright{ 77 | position: absolute; 78 | top:0px; 79 | right: 10%; 80 | height: 65px; 81 | margin-right: 80px; 82 | } 83 | .topbar .tbright a{ 84 | position: relative; 85 | left: 80px; 86 | font-size: large; 87 | line-height: 65px; 88 | margin-right: 110px; 89 | } 90 | .topbar .tbright .userimg{ 91 | height: 50px; 92 | margin-top: 7px; 93 | position: absolute; 94 | opacity: 0.6; 95 | } 96 | .funclist-pad { 97 | position: fixed; 98 | left:10%; 99 | top:100px; 100 | 101 | width: 300px; 102 | border-radius: 30px; 103 | background-color: rgba(255, 255, 255, 0.623); 104 | backdrop-filter: blur(20px); 105 | /*Edge17-18*/ 106 | -webkit-backdrop-filter: blur(20px); 107 | box-shadow: 0 0 200px 2px rgba(0, 0, 0, 0.5); 108 | z-index: 1; 109 | padding: 10px; 110 | } 111 | .funclist-pad input{ 112 | border: 0px; 113 | background: rgba(20, 20, 20, 0); 114 | color: rgb(0, 0, 0); 115 | position: relative; 116 | cursor: pointer; 117 | font-size: larger; 118 | width: 100%; 119 | font-weight: 900; 120 | outline:none; 121 | border-radius: 20px; 122 | transition: background-color 0.3s ease; 123 | padding: 20px 30px; 124 | font-weight: normal; 125 | } 126 | .funclist-pad input[type=button]:hover{ 127 | background: rgba(90, 90, 90, 0.24); 128 | } 129 | .funclist-pad .crossline 130 | { 131 | width: 100%; 132 | background-color: rgba(255, 255, 255, 0.493); 133 | height: 2px; 134 | margin:10px 0px; 135 | } 136 | 137 | 138 | .contentflow{ 139 | position: relative; 140 | left: calc(10% + 350px); 141 | top:100px; 142 | width: calc(80% - 350px); 143 | z-index: 1; 144 | padding: 0px; 145 | margin-bottom: 50px; 146 | min-width: 800px; 147 | } 148 | .contentflow a{ 149 | line-height: 150%; 150 | } 151 | 152 | .contentflow .noticepad, 153 | .contentflow .workspace, 154 | .contentflow .bottom{ 155 | position: relative; 156 | width: 100%; 157 | border-radius: 30px; 158 | background-color: rgba(255, 255, 255, 0.623); 159 | backdrop-filter: blur(20px); 160 | /*Edge17-18*/ 161 | -webkit-backdrop-filter: blur(20px); 162 | /*box-shadow: 0 0 200px 2px rgba(0, 0, 0, 0.5);*/ 163 | z-index: 1; 164 | padding: 35px 30px; 165 | margin-bottom: 50px; 166 | 167 | } 168 | 169 | .contentflow .noticepad h1{ 170 | font-size: 300%; 171 | } 172 | .contentflow .noticepad a{ 173 | line-height: 30px; 174 | } 175 | 176 | .contentflow .workspace img{ 177 | max-width: calc(100%); 178 | border-radius: 30px; 179 | } 180 | .contentflow .workspace h1{ 181 | font-size: 300%; 182 | } 183 | 184 | .contentflow .bottom h1{ 185 | font-size: 300%; 186 | } 187 | 188 | 189 | ::-webkit-scrollbar-track-piece { 190 | background-color:#000000; 191 | } 192 | ::-webkit-scrollbar { 193 | width:1px; 194 | height:9px; 195 | } 196 | ::-webkit-scrollbar-thumb { 197 | background-color:#ffffff; 198 | background-clip:padding-box; 199 | min-height:28px; 200 | } -------------------------------------------------------------------------------- /css/dashboard.css: -------------------------------------------------------------------------------- 1 | /*仪表盘 的 动画必要CSS*/ 2 | .topbar{ 3 | top: -500px; 4 | } 5 | .funclist-pad{ 6 | top: 100%; 7 | } 8 | .contentflow .noticepad{ 9 | margin-top: 100%; 10 | } 11 | 12 | .contentflow .workspace{ 13 | margin-top: 100%; 14 | } 15 | 16 | .contentflow .bottom{ 17 | margin-top: 100%; 18 | } 19 | 20 | 21 | body::-webkit-scrollbar{/*隐藏纵向滚动条*/ 22 | display: none; 23 | } 24 | .topbar .tbright a{ 25 | cursor: pointer; 26 | } 27 | -------------------------------------------------------------------------------- /css/login.css: -------------------------------------------------------------------------------- 1 | /*LOGIN 页面比较特殊, 需要单独CSS*/ 2 | * { 3 | margin: 0; 4 | padding: 0; 5 | box-sizing: border-box; 6 | } 7 | 8 | html,body,main { 9 | height: 100%; 10 | } 11 | 12 | body { 13 | /*为 macOS 、 Windows 、以及 Linux 提供更好的字体展示*/ 14 | font-family: "Helvetica Neue", Helvetica, Arial, "PingFang SC", "Hiragino Sans GB", "Heiti SC", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; 15 | font: 14px/1.5; 16 | } 17 | 18 | a { 19 | text-decoration: none; 20 | color: rgb(44, 44, 44); 21 | } 22 | 23 | ul,li{ 24 | list-style: none; 25 | } 26 | 27 | body { 28 | background: linear-gradient(to right top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0)), url(https://s1.ax1x.com/2020/06/24/NaXEAP.jpg) center center ; 29 | min-height: 500px; 30 | background-attachment: fixed; 31 | background-size: cover; 32 | } 33 | 34 | .loginpad { 35 | position: absolute; 36 | left: calc(50% - 250px); 37 | top: -100%; 38 | height: 450px; 39 | border-radius:30px; 40 | width: 500px; 41 | padding: 40px 40px 80px 40px; 42 | background-color: rgba(255, 255, 255, 0.4); 43 | backdrop-filter: blur(30px); 44 | /*Edge17-18*/ 45 | -webkit-backdrop-filter: blur(30px); 46 | box-shadow: 0 0 100px 4px rgba(0,0,0,0.3) 47 | } 48 | 49 | 50 | 51 | .loginpad .title{ 52 | text-align: center; 53 | margin-bottom: 10px; 54 | } 55 | .loginpad .title a { 56 | font-size: 30px; 57 | font-family: sans-serif; 58 | } 59 | 60 | 61 | 62 | .loginpad .content { 63 | padding: 10px 40px 10px 40px; 64 | } 65 | 66 | .loginpad .errormsg { 67 | color: #ddd; 68 | font-size: 14px; 69 | } 70 | 71 | .loginpad .content .input-field { 72 | position: relative; 73 | margin-top: 20px; 74 | } 75 | 76 | 77 | 78 | .loginpad .content input[type=text], 79 | .loginpad .content input[type=password] { 80 | width: 100%; 81 | height: 50px; 82 | padding: 10px 10px 10px 28px; 83 | border: none; 84 | border-radius:15px; 85 | } 86 | 87 | .loginpad .content input[type=submit] { 88 | padding: 15px 50px; 89 | border: none; 90 | background: rgba(68, 68, 68, 0.342); 91 | border-radius: 20px; 92 | cursor: pointer; 93 | outline: none; 94 | color: #fff; 95 | position: absolute; 96 | left: calc(50% - 62px); 97 | top:calc(50% + 7px); 98 | transition: 1s background-color ease ; 99 | } 100 | 101 | .loginpad .content input[type=submit]:hover { 102 | background-color: rgba(0, 0, 0, 0.795); 103 | 104 | } 105 | 106 | 107 | -------------------------------------------------------------------------------- /css/shadow.css: -------------------------------------------------------------------------------- 1 | /*小部件美化*/ 2 | /*按钮*/ 3 | input[type="submit"], 4 | .workspace input[type="button"]{ 5 | padding: 15px 50px; 6 | margin-top: 30px; 7 | border: none; 8 | background-color: rgba(68, 68, 68, 0.342); 9 | border-radius: 20px; 10 | cursor: pointer; 11 | outline: none; 12 | color: #fff; 13 | transition:0.5s box-shadow ease ; 14 | } 15 | /*文本框*/ 16 | input[type="text"], 17 | input[type="password"], 18 | .info input[type="date"]{ 19 | height: 40px; 20 | margin: 20px; 21 | border-radius: 10px; 22 | border: none; 23 | padding-left: 10px; 24 | min-width: 300px; 25 | transition: box-shadow 0.25s ease; 26 | } 27 | /*悬浮*/ 28 | .noticepad input:hover, 29 | input[type="submit"]:hover, 30 | .workspace input:hover, 31 | .select:hover{ 32 | box-shadow:0 10px 8px rgba(0, 0, 0, 0.158); 33 | } 34 | 35 | /*边线*/ 36 | select:focus, 37 | .noticepad input:focus, 38 | .info input[type="date"]{ 39 | outline: none; 40 | } 41 | /*下拉框的DIV辅助美化*/ 42 | .select { 43 | width: 300px; 44 | overflow: hidden; 45 | border-radius: 10px; 46 | transition:0.25s box-shadow ease; 47 | margin: 20px; 48 | } 49 | select { 50 | cursor: pointer; 51 | padding: 10px; 52 | width: 100%; 53 | border: none; 54 | } 55 | -------------------------------------------------------------------------------- /css/table.css: -------------------------------------------------------------------------------- 1 | .contentflow .workspace table{ 2 | border-style: solid; 3 | border-width:1px 0px 0px 1px; 4 | padding:5px; 5 | } 6 | .contentflow .workspace td{ 7 | border-style: solid; 8 | border-width:0px 1px 1px 0px; 9 | min-width: 40px; 10 | padding:10px; 11 | text-align: center; 12 | } 13 | table{border-collapse:collapse} -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 恭喜,站点创建成功! 6 | 27 | 28 | 29 |
30 |

恭喜, 站点创建成功!

31 |

这是默认index.html,本页面由系统自动生成

32 | 37 |
38 | 39 | 40 | -------------------------------------------------------------------------------- /js/dashboard.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){ 2 | $(".funclist-pad").animate({ 3 | top:"100" 4 | },1000,'easeOutExpo'); 5 | $(".noticepad").delay(100).animate({ 6 | marginTop:"0" 7 | },1000,'easeOutExpo'); 8 | $(".workspace").delay(200).animate({ 9 | marginTop:"0px" 10 | },1000,'easeOutExpo'); 11 | $(".bottom").delay(300).animate({ 12 | marginTop:"0px" 13 | },1000,'easeOutExpo'); 14 | $(".topbar").animate({ 15 | top:"0px" 16 | },1000,'easeOutExpo'); 17 | }); 18 | 19 | 20 | $(".logout").click(function(){ 21 | $(".funclist-pad").delay(200).animate({ 22 | top:"3000px" 23 | },600,'easeInExpo',function(){ 24 | window.location.href="../php/logout_ok.php"; 25 | }); 26 | $(".noticepad").delay(200).animate({ 27 | marginTop:"3000px" 28 | },500,'easeInExpo'); 29 | $(".workspace").delay(100).animate({ 30 | marginTop:"3000px" 31 | },600,'easeInExpo'); 32 | $(".bottom").animate({ 33 | marginTop:"3000px" 34 | },700,'easeInExpo'); 35 | $(".topbar").animate({ 36 | top:"-300px" 37 | },700,'easeInExpo') 38 | }); -------------------------------------------------------------------------------- /js/formcheck.js: -------------------------------------------------------------------------------- 1 | //使用JQuery内的整合的 $.Ajax 向服务器请求用户名唯一验证 正则限制纯数字 密码与重复输入密码统一验证 2 | $(document).ready(function () { 3 | //绑定松开按键事件 4 | $("#Pw").keyup(checkPass); 5 | $("#Repw").keyup(checkRePass); 6 | $("#ID").keyup(checkID); 7 | 8 | //提交表单,调用验证函数 9 | $("#myForm").submit(function (e) { 10 | e.preventDefault(); 11 | if (checkPass() == true && checkRePass() == true && checkID() == true) 12 | $("#myForm").unbind('submit').submit(); 13 | }); 14 | }) 15 | 16 | //验证输入密码 17 | function checkPass() { 18 | var Pw = $("#Pw").val(); 19 | var divPw = $("#divPw"); 20 | divPw.html(""); 21 | if (Pw == "") { 22 | divPw.html("密码不能为空"); 23 | return false; 24 | } 25 | if (Pw.length < 6) { 26 | divPw.html("密码必须等于或大于6个字符"); 27 | return false; 28 | } 29 | return true; 30 | } 31 | //验证重复密码 32 | function checkRePass() { 33 | var Pw = $("#Pw").val(); //输入密码 34 | var Repw = $("#Repw").val(); //再次输入密码 35 | var divRepw = $("#divRepw"); 36 | divRepw.html(""); 37 | if (Pw != Repw) { 38 | divRepw.html("两次输入的密码不一致"); 39 | return false; 40 | } 41 | return true; 42 | } 43 | 44 | function checkID() 45 | { //取用户名 46 | var ID = $("#ID").val(); 47 | var divID = $("#divID"); 48 | if($("#ID").length == 0)//如果表单中没有ID条目,那么不验证 49 | return true; 50 | var regCode = /^[0-9]*$/;//仅数字验证 51 | divID.html(""); 52 | if (ID == "") 53 | { 54 | divID.html("ID 不能为空"); 55 | return false; 56 | } 57 | //调ajax 58 | $.ajax({ 59 | url:"../php/check_user_id.php", 60 | data:{user_id:ID}, 61 | type:"POST", 62 | dataType:"TEXT", 63 | success: function(data) 64 | { 65 | if(regCode.test(ID)) 66 | { 67 | if(data>0) 68 | { 69 | divID.html("该管理员ID 已存在"); 70 | return false; 71 | } 72 | else 73 | { 74 | divID.html("管理员 ID 可用"); 75 | return true; 76 | } 77 | } 78 | else 79 | { 80 | divID.html("管理员 ID 只能为数字"); 81 | return false; 82 | } 83 | } 84 | }); 85 | return true; 86 | } -------------------------------------------------------------------------------- /js/login.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){ 2 | $(".loginpad").animate({ 3 | top:"50%", 4 | marginTop:"-250px" 5 | },900,'easeOutExpo'); 6 | 7 | $("form").submit(function(e){ 8 | //阻止提交 9 | e.preventDefault(); 10 | //先播放动画 11 | $(".loginpad").animate({ 12 | top:"-100%", 13 | },500,'easeInQuart'); 14 | //播放完再提交,延迟500ms 15 | setTimeout(function(){ 16 | $("form").unbind('submit').submit(); 17 | },500); 18 | 19 | }); 20 | 21 | }); 22 | 23 | -------------------------------------------------------------------------------- /js/tcheck.js: -------------------------------------------------------------------------------- 1 | //使用JQuery内的整合的 $.Ajax 向服务器请求用户名唯一验证 正则限制纯数字 密码与重复输入密码统一验证 2 | var old_t_id; 3 | $(document).ready(function () { 4 | old_t_id = $("#t_id").val(); 5 | $("#t_id").keyup(checktid); 6 | $("#t_name").keyup(checktname); 7 | 8 | //提交表单,调用验证函数 9 | $("#myForm").submit(function (e) { 10 | e.preventDefault(); 11 | if (checktid() == true && checktname() == true) 12 | $("#myForm").unbind('submit').submit(); 13 | }); 14 | }) 15 | 16 | function checktname() 17 | { 18 | var name = $("#t_name").val(); 19 | var divName = $("#div_t_name"); 20 | divName.html(""); 21 | if(name == "") 22 | { 23 | divName.html("教师姓名不能为空"); 24 | return false; 25 | } 26 | else{ 27 | return true; 28 | } 29 | } 30 | function checktid() 31 | { 32 | var ID = $("#t_id").val(); 33 | var divID = $("#div_t_id"); 34 | divID.html(""); 35 | if (ID == "") 36 | { 37 | divID.html("ID 不能为空"); 38 | return false; 39 | } 40 | //调ajax 41 | if(ID != old_t_id) 42 | { 43 | $.ajax({ 44 | url:"../php/check_t_id.php", 45 | data:{t_id:ID}, 46 | type:"POST", 47 | dataType:"TEXT", 48 | success: function(data) 49 | { 50 | if(data>0) 51 | { 52 | divID.html("该教师 ID 已存在"); 53 | return false; 54 | } 55 | else 56 | { 57 | divID.html("教师 ID 可用"); 58 | return true; 59 | } 60 | } 61 | }); 62 | } 63 | else 64 | return true; 65 | return true; 66 | } 67 | 68 | -------------------------------------------------------------------------------- /pages/add.php: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 教师新增-TIMS 19 | 20 | 21 |
22 |
23 | 27 | 31 |
32 |
33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 |
46 | 47 | 48 | 49 | 53 |
54 | 55 | 56 | 59 |
60 | 61 | 62 | 63 |
64 | 69 |
70 |

教师新增



71 |
72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 158 | 159 |
教师 ID
姓名
性别 86 |
87 | 91 |
92 |
生日
学院 101 | 105 |
106 | 109 |
110 | 115 |
116 | 129 |
130 |
131 |
学历
职称
家庭地址
手机号码
在校状态 151 |
152 | 156 |
157 |
160 | 161 |
162 | 163 |
164 | 165 |
166 |

版权信息



167 | © Hank.
168 | All Rights Reserved.
169 | Powered by PHP on PHPSTUDY 170 |
171 |
172 |
173 | 174 | 175 | 176 | 177 | -------------------------------------------------------------------------------- /pages/add_ok.php: -------------------------------------------------------------------------------- 1 | 2 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 教师信息修改成功-TIMS 63 | 64 | 65 |
66 |
67 | 71 | 75 |
76 |
77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 |
90 | 91 | 92 | 93 | 97 |
98 | 99 | 100 | 103 |
104 |
105 | 110 | 111 |
112 |

老师的信息已经完善



113 | 114 | 115 | 116 |
117 | 118 |
119 |

版权信息



120 | © Hank.
121 | All Rights Reserved.
122 | Powered by PHP on PHPSTUDY 123 |
124 |
125 |
126 | 127 | 128 | 129 | 130 | 131 | close(); 134 | 135 | ?> 136 | -------------------------------------------------------------------------------- /pages/adduser.php: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 教师一览-TIMS 20 | 21 | 22 |
23 |
24 | 28 | 32 |
33 |
34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
47 | 48 | 49 | 50 | 54 |
55 | 56 | 57 | 60 |
61 |
62 | 67 |
68 |

新增管理员



69 |
70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 108 | 109 | 110 |
新增的管理员 ID
设置密码
再次输入设置的密码
部门
89 | 107 |
111 | 112 |
113 |
114 | 115 |
116 |

版权信息



117 | © Hank.
118 | All Rights Reserved.
119 | Powered by PHP on PHPSTUDY 120 |
121 |
122 |
123 | 124 | 125 | 126 | 127 | 128 | 129 | -------------------------------------------------------------------------------- /pages/adduser_ok.php: -------------------------------------------------------------------------------- 1 | 2 | alert('您没有新增管理员的权限。'); window.location.href='login.php';"; 10 | 11 | 12 | $new_id=$_POST['ID']; 13 | $new_pw=$_POST['Pw']; 14 | $new_dep=$_POST['Dep']; 15 | $sql="INSERT INTO user VALUES ('{$new_id}','{$new_pw}','{$new_dep}')"; 16 | $result = mysqli_query($conn,$sql); 17 | echo $sql; 18 | if(! $result ) 19 | { 20 | die('本错误来自数据库提示:' . mysqli_error($conn).'。已撤销所有操作,请手动后退'); 21 | } 22 | else{ 23 | ?> 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 密码修改成功-TIMS 34 | 35 | 36 |
37 |
38 | 42 | 46 |
47 |
48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 |
61 | 62 | 63 | 64 | 68 |
69 | 70 | 71 | 74 |
75 |
76 | 81 | 82 |
83 |

部门管理员 创建成功



84 | 85 | 86 | 87 |
88 | 89 |
90 |

版权信息



91 | © Hank.
92 | All Rights Reserved.
93 | Powered by PHP on PHPSTUDY 94 |
95 |
96 |
97 | 98 | 99 | 100 | 101 | 102 | close(); 105 | 106 | ?> 107 | -------------------------------------------------------------------------------- /pages/changepw.php: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 修改密码-TIMS 18 | 19 | 20 |
21 |
22 | 26 | 30 |
31 |
32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 |
45 | 46 | 47 | 48 | 52 |
53 | 54 | 55 | 58 |
59 |
60 | 65 |
66 |

修改密码



67 |
68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 |
您的 ID
新密码
再次输入您的新密码
85 | 86 |
87 |
88 | 89 |
90 |

版权信息



91 | © Hank.
92 | All Rights Reserved.
93 | Powered by PHP on PHPSTUDY 94 |
95 |
96 |
97 | 98 | 99 | 100 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /pages/changepw_ok.php: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 密码修改成功-TIMS 27 | 28 | 29 |
30 |
31 | 35 | 39 |
40 |
41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 |
54 | 55 | 56 | 57 | 61 |
62 | 63 | 64 | 67 |
68 |
69 | 74 | 75 |
76 |

管理员 的密码修改成功



77 | 78 | 79 | 80 |
81 | 82 |
83 |

版权信息



84 | © Hank.
85 | All Rights Reserved.
86 | Powered by PHP on PHPSTUDY 87 |
88 |
89 |
90 | 91 | 92 | 93 | 94 | 95 | close(); 98 | 99 | ?> 100 | -------------------------------------------------------------------------------- /pages/dashboard.php: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 22 | 仪表盘-TIMS 23 | 24 | 25 | 26 |
27 |
28 | 32 |
33 | 登出系统 34 | 用户头像 35 |
36 |
37 |
38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |
51 | 52 | 53 | 54 | 58 |
59 | 60 | 61 | 64 |
65 |
66 | 71 | 94 | 95 |
96 |

版权信息



97 | © Hank.
98 | All Rights Reserved.
99 | Powered by PHP on PHPSTUDY 100 |
101 |
102 |
103 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /pages/login.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 欢迎使用-TIMS 14 | 15 | 16 | 17 |
18 |
19 | 23 |
24 |
25 |
26 |
27 | 28 |
29 |
30 | 31 |
32 |
33 | 34 |
35 |
36 |
37 |
38 |
39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /pages/menage.php: -------------------------------------------------------------------------------- 1 | 2 | alert('请先选择教师。'); window.history.back();"; 10 | 11 | ?> 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 教师信息修改-TIMS 24 | 25 | 26 |
27 |
28 | 32 | 36 |
37 |
38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |
51 | 52 | 53 | 54 | 58 |
59 | 60 | 61 | 64 |
65 | 66 | 67 | 68 |
69 | 74 | alert('您没有管理此部门教师的权限。'); window.history.back();"; 93 | ?> 94 |
95 |

老师的信息



96 |
97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 211 | 212 |
教师 ID
姓名
性别 111 |
112 | 128 |
129 |
生日
学院 137 | 141 |
142 | 145 |
146 | 151 |
152 | 170 |
171 |
172 |
学历
职称
家庭地址
手机号码
在校状态 192 |
193 | 209 |
210 |
213 | 214 | 215 |
216 | 223 | alert('教师不存在。'); window.history.back();"; 226 | } 227 | ?> 228 |
229 | 230 |
231 |

版权信息



232 | © Hank.
233 | All Rights Reserved.
234 | Powered by PHP on PHPSTUDY 235 |
236 |
237 |
238 | 239 | 240 | 241 | 242 | -------------------------------------------------------------------------------- /pages/menage_ok.php: -------------------------------------------------------------------------------- 1 | 2 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 教师信息修改成功-TIMS 59 | 60 | 61 |
62 |
63 | 67 | 71 |
72 |
73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 |
86 | 87 | 88 | 89 | 93 |
94 | 95 | 96 | 99 |
100 |
101 | 106 | 107 |
108 | 112 |

老师的信息已经删除

113 | 114 | 115 | 116 | 119 | 120 |

老师的信息已经完善



121 | 122 | 123 | 124 | 127 |
128 | 129 |
130 |

版权信息



131 | © Hank.
132 | All Rights Reserved.
133 | Powered by PHP on PHPSTUDY 134 |
135 |
136 |
137 | 138 | 139 | 140 | 141 | 142 | close(); 145 | 146 | ?> 147 | -------------------------------------------------------------------------------- /pages/search.php: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 教师搜索-TIMS 20 | 21 | 22 |
23 |
24 | 28 | 32 |
33 |
34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
47 | 48 | 49 | 50 | 54 |
55 | 56 | 57 | 60 |
61 |
62 |
63 |

64 | 管理员 ,您可以在本页面搜索特定的教师的信息。
65 | 您可以使用“%”符号来代替任意字符搜索,比如“丽%巴”可以搜索到“迪丽热巴”。首尾可以不加“%”。
66 | 要登出系统,请返回仪表盘。

67 |
68 |
69 | 通过教师 ID 直达管理 70 | 71 | 72 |
73 |
74 |

75 |
76 |
77 | 通过多条件筛选 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 95 | 96 | 97 | 98 | 99 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 145 | 146 |
姓名
性别 87 |
88 | 93 |
94 |
学院 100 |
101 | 119 |
120 |
学历
职称
手机号码
在校状态 137 |
138 | 143 |
144 |
147 | 148 |
149 | 150 |
151 |
152 |
153 |

搜索结果



154 | 155 |
156 | 157 |
158 |

版权信息



159 | © Hank.
160 | All Rights Reserved.
161 | Powered by PHP on PHPSTUDY 162 |
163 |
164 |
165 | 166 | 167 | 168 | 169 | 170 | -------------------------------------------------------------------------------- /pages/search_result.php: -------------------------------------------------------------------------------- 1 | 2 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 查找结果-TIMS 51 | 52 | 53 |
54 |
55 | 59 | 63 |
64 |
65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 |
78 | 79 | 80 | 81 | 85 |
86 | 87 | 88 | 91 |
92 |
93 | 99 | 100 |
101 |

查找结果



102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 118 | 119 | 122 | 125 | 128 | 131 | 134 | 137 | 140 | 143 | 146 | 147 | 150 |
教师 ID姓名性别生日学院学历职称手机号码
120 | 121 | 123 | 124 | 126 | 127 | 129 | 130 | 132 | 133 | 135 | 136 | 138 | 139 | 144 | 145 |

151 |
152 | 153 |
154 |

版权信息



155 | © Hank.
156 | All Rights Reserved.
157 | Powered by PHP on PHPSTUDY 158 |
159 |
160 |
161 | 162 | 163 | 164 | 165 | 166 | close(); 169 | 170 | ?> 171 | -------------------------------------------------------------------------------- /pages/user_menage.php: -------------------------------------------------------------------------------- 1 | 2 | alert('请先选择管理员。'); window.history.back();"; 10 | if( $u_dep != 0) 11 | echo ""; 12 | ?> 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 教师信息修改-TIMS 25 | 26 | 27 |
28 |
29 | 33 | 37 |
38 |
39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 |
52 | 53 | 54 | 55 | 59 |
60 | 61 | 62 | 65 |
66 | 67 | 68 | 69 |
70 | 75 | 86 |
87 |

管理员 的信息



88 |
89 | 90 | 91 | 92 | 114 | 115 |
部门 93 |
94 | 111 |
112 |
113 |
116 | 117 | 118 |
119 | 120 |
121 | 122 | 123 |
124 | 125 | alert('管理员不存在。'); window.history.back();"; 128 | } 129 | ?> 130 |
131 | 132 |
133 |

版权信息



134 | © Hank.
135 | All Rights Reserved.
136 | Powered by PHP on PHPSTUDY 137 |
138 |
139 |
140 | 141 | 142 | 143 | 144 | -------------------------------------------------------------------------------- /pages/user_menage_ok.php: -------------------------------------------------------------------------------- 1 | 2 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 管理员信息修改成功-TIMS 36 | 37 | 38 |
39 |
40 | 44 | 48 |
49 |
50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 |
63 | 64 | 65 | 66 | 70 |
71 | 72 | 73 | 76 |
77 |
78 | 83 | 84 |
85 | 89 |

管理员 已经删除

90 | 91 | 92 | 93 | 96 | 97 |

管理员 的部门已经更改



98 | 99 | 100 | 101 | 104 |
105 | 106 |
107 |

版权信息



108 | © Hank.
109 | All Rights Reserved.
110 | Powered by PHP on PHPSTUDY 111 |
112 |
113 |
114 | 115 | 116 | 117 | 118 | 119 | close(); 122 | 123 | ?> 124 | -------------------------------------------------------------------------------- /pages/user_view.php: -------------------------------------------------------------------------------- 1 | 2 | alert('您没有管理 管理员 的权限。'); window.history.back();"; 9 | } 10 | ?> 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 管理员一览-TIMS 25 | 26 | 27 |
28 |
29 | 33 | 37 |
38 |
39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 |
52 | 53 | 54 | 55 | 59 |
60 | 61 | 62 | 65 |
66 |
67 | 75 |
76 |

管理员一览



77 | 78 | 79 | 80 | 81 | 82 | 0 ORDER BY user_id"; 85 | $rs=mysqli_query($conn,$sql); 86 | while($row=mysqli_fetch_array($rs)) 87 | { 88 | ?> 89 | 90 | 93 | 96 | 97 | 100 |
管理员 ID部门
91 | 92 | 94 | 95 |

101 |
102 | 103 |
104 |

版权信息



105 | © Hank.
106 | All Rights Reserved.
107 | Powered by PHP on PHPSTUDY 108 |
109 |
110 |
111 | 112 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /pages/view.php: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 教师一览-TIMS 20 | 21 | 22 |
23 |
24 | 28 | 32 |
33 |
34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
47 | 48 | 49 | 50 | 54 |
55 | 56 | 57 | 60 |
61 |
62 | 70 |
71 |

教师一览



72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 91 | 92 | 95 | 98 | 101 | 104 | 107 | 110 | 113 | 116 | 119 | 120 | 123 |
教师 ID姓名性别生日学院学历职称手机号码
93 | 94 | 96 | 97 | 99 | 100 | 102 | 103 | 105 | 106 | 108 | 109 | 111 | 112 | 117 | 118 |

124 | 以上。数据库载入完成,为您提供 125 | 132 | 名教师的个人信息 133 |
134 | 135 |
136 |

版权信息



137 | © Hank.
138 | All Rights Reserved.
139 | Powered by PHP on PHPSTUDY 140 |
141 |
142 |
143 | 144 | 145 | 146 | 147 | -------------------------------------------------------------------------------- /php/authorization.php: -------------------------------------------------------------------------------- 1 | alert('请先登录。'); window.location.href='login.php';"; 13 | } -------------------------------------------------------------------------------- /php/check_t_id.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /php/check_user_id.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /php/conn.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /php/did_dname.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /php/isadmin.php: -------------------------------------------------------------------------------- 1 | alert('您没有新增管理员的权限。'); window.location.href='login.php';"; 4 | ?> -------------------------------------------------------------------------------- /php/login_ok.php: -------------------------------------------------------------------------------- 1 | connect_error) { 13 | die("连接失败: " . $conn->connect_error); 14 | } 15 | 16 | else{ 17 | $u_id = $_POST['u_id']; 18 | $u_pw = md5($_POST['u_pw']); 19 | $sql = "SELECT * from user WHERE user_id = '$u_id' AND user_pw = '$u_pw'"; 20 | $result = mysqli_query($conn,$sql); 21 | $number = mysqli_num_rows($result); 22 | $row=mysqli_fetch_array($result); 23 | if (!empty($number)) { 24 | // 注册登陆成功的 admin 变量,并赋值 true 25 | $_SESSION["admin"] = true; 26 | $_SESSION["u_id"] = $_POST['u_id']; 27 | $_SESSION["u_dep"] = $row[2]; 28 | echo ""; 29 | } else { 30 | die(""); 31 | } 32 | 33 | } 34 | 35 | $conn->close(); 36 | 37 | ?> -------------------------------------------------------------------------------- /php/logout_ok.php: -------------------------------------------------------------------------------- 1 | window.location.href='../pages/login.php'; "; 7 | ?> 8 | -------------------------------------------------------------------------------- /playground/JS/dashboard-test.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | $(".tanchu_kuang").hide(); 3 | $("#tanchu_btn").click(function() { 4 | $(".tanchu_kuang").fadeIn(300); 5 | $("#close_x").click(function() { 6 | $(".tanchu_kuang").fadeOut(200); 7 | 8 | 9 | }); 10 | }); 11 | }); 12 | 13 | //窗口移动 14 | $(".kuang_title_box").mousedown(function(event) { 15 | var isMove = true; 16 | var abs_x = event.pageX - $('div.tanchu_kuang').offset().left; 17 | var abs_y = event.pageY - $('div.tanchu_kuang').offset().top; 18 | $(document).mousemove(function(event) { 19 | if (isMove) { 20 | var obj = $('div.tanchu_kuang'); 21 | var left_x = event.pageX - abs_x; 22 | var top_y = event.pageY - abs_y; 23 | obj.css({ 24 | 'left': left_x, 25 | 'top': top_y 26 | }); 27 | } 28 | }).mouseup(function() { 29 | isMove = false; 30 | }); 31 | }); 32 | 33 | //窗口缩放 34 | var oDiv = document.getElementById('tanchu_kuang'); 35 | oDiv.onmousedown = function(ev) { 36 | // 获取event对象,兼容性写法 37 | var ev = ev || event; 38 | // 鼠标按下时的位置 39 | var mouseDownX = ev.clientX; 40 | var mouseDownY = ev.clientY; 41 | // 方块上下左右四个边的位置和方块的长宽 42 | var T0 = this.offsetTop; 43 | var B0 = this.offsetTop + this.offsetHeight; 44 | var L0 = this.offsetLeft; 45 | var R0 = this.offsetLeft + this.offsetWidth; 46 | var W = this.offsetWidth; 47 | var H = this.offsetHeight; 48 | // 设置方块的识别范围 49 | var areaT = T0 + 10; 50 | var areaB = B0 - 10; 51 | var areaL = L0 + 10; 52 | var areaR = R0 - 10; 53 | // 判断改变方块的大小的方向 54 | // 左 55 | var changeL = mouseDownX < areaL; 56 | // 右 57 | var changeR = mouseDownX > areaR; 58 | // 上 59 | var changeT = mouseDownY < areaT; 60 | // 下 61 | var changeB = mouseDownY > areaB; 62 | // IE8 取消默认行为-设置全局捕获 63 | if (oDiv.setCapture) { 64 | oDiv.setCapture(); 65 | } 66 | document.onmousemove = function(ev) { 67 | var ev = ev || event; 68 | // 鼠标移动时的鼠标位置 69 | var mouseMoveX = ev.clientX; 70 | var mouseMoveY = ev.clientY; 71 | //根据改变方块大小的方向不同进行大小的改变 72 | // 左 73 | if (changeL) { 74 | oDiv.style.width = (mouseDownX - mouseMoveX) + W + 'px'; 75 | oDiv.style.left = L0 - (mouseDownX - mouseMoveX) + 'px'; 76 | 77 | } 78 | // 右 79 | if (changeR) { 80 | oDiv.style.width = (mouseMoveX - mouseDownX) + W + 'px'; 81 | } 82 | // 上 83 | if (changeT) { 84 | oDiv.style.height = (mouseDownY - mouseMoveY) + H + 'px'; 85 | oDiv.style.top = T0 - (mouseDownY - mouseMoveY) + 'px'; 86 | } 87 | // 下 88 | if (changeB) { 89 | oDiv.style.height = (mouseMoveY - mouseDownY) + H + 'px'; 90 | } 91 | // 限定范围 92 | if (parseInt(oDiv.style.width) < 50) { 93 | oDiv.style.width = 50 + 'px'; 94 | } 95 | if (parseInt(oDiv.style.height) < 50) { 96 | oDiv.style.height = 50 + 'px'; 97 | } 98 | } 99 | document.onmouseup = function() { 100 | document.onmousemove = null; 101 | // 释放全局捕获 102 | if (oDiv.releaseCapture) { 103 | oDiv.releaseCapture(); 104 | } 105 | } 106 | return false; 107 | } 108 | 109 | -------------------------------------------------------------------------------- /playground/JS/dashboard-test2.js: -------------------------------------------------------------------------------- 1 | var kaibi=0; 2 | $(function() { 3 | $(".workspace").hide(); 4 | $("#tanchu_btn").click(function() { 5 | $(".workspace").fadeToggle(300); 6 | kaibi++; 7 | if(kaibi%2==1) 8 | document.getElementsByTagName("title")[0].innerText = '工作台-仪表盘-TIMS'; 9 | else 10 | document.getElementsByTagName("title")[0].innerText = '仪表盘-TIMS'; 11 | /*$(".dashboard").animate({ 12 | position: 'absolute', 13 | left: '25%', 14 | top: '50%', 15 | width: '500px', 16 | padding: '40px 40px 80px 40px', 17 | },1500);*/ 18 | }); 19 | 20 | });//开关工作台 21 | -------------------------------------------------------------------------------- /playground/css/common.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; 3 | padding: 0; 4 | box-sizing: border-box; 5 | } 6 | 7 | html,body,main { 8 | height: 100%; 9 | } 10 | 11 | body { 12 | font: 14px/1.5 Arial; 13 | } 14 | 15 | a { 16 | text-decoration: none; 17 | color: rgb(44, 44, 44); 18 | } 19 | 20 | ul,li{ 21 | list-style: none; 22 | } 23 | -------------------------------------------------------------------------------- /playground/css/dashboard-test.css: -------------------------------------------------------------------------------- 1 | 2 | main { 3 | background: linear-gradient(to right top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.432)), url(https://support.apple.com/content/dam/edam/applecare/images/en_US/psp/apple-id-psp-banner-hero.image.large_2x.jpg) center center no-repeat ; 4 | background-size: cover; 5 | } 6 | 7 | .dashboard{ 8 | position: absolute; 9 | width: 300px; 10 | height: 100%; 11 | padding: 40px 40px 80px 40px; 12 | background-color: rgba(255, 255, 255, 0.623); 13 | backdrop-filter: blur(30px); 14 | /*Edge17-18*/ 15 | -webkit-backdrop-filter: blur(30px); 16 | box-shadow: 0 0 100px 4px rgba(0,0,0,0.3); 17 | border-radius: 0px 40px 40px 0px; 18 | } 19 | 20 | .dashboard .title{ 21 | text-align: center; 22 | margin-bottom: 20px; 23 | } 24 | .dashboard .title a{ 25 | font-size: large; 26 | } 27 | 28 | .dashboard .welcome{ 29 | text-align: center; 30 | margin-top: 30px; 31 | } 32 | .dashboard .funclist{ 33 | margin-top: 30px; 34 | } 35 | 36 | .dashboard .funclist input{ 37 | 38 | border: 10px; 39 | background: rgba(68, 68, 68, 0); 40 | color: rgb(0, 0, 0); 41 | position: relative; 42 | left: calc(-40px); 43 | font-size: large; 44 | cursor: pointer; 45 | font-weight: 900; 46 | } 47 | .dashboard .funclist .kqgzt{ 48 | padding: 30px 83px; 49 | } 50 | .dashboard .funclist .zxdl, 51 | .dashboard .funclist .xgmm { 52 | 53 | padding: 30px 113px; 54 | } 55 | .dashboard .funclist input[type=button]:hover{ 56 | background: rgba(255, 255, 255, 0.342); 57 | } 58 | 59 | 60 | 61 | .kuang_contant img{ 62 | max-width: 100%; 63 | border-radius: 30px; 64 | } 65 | 66 | .tanchu_kuang { 67 | width:70%; 68 | height:80%; 69 | min-width:480px!important; 70 | min-height:200px!important; 71 | position:fixed; 72 | z-index:9999; 73 | top:10%; 74 | left:23%; 75 | background:rgba(255, 255, 255, 0.445); 76 | backdrop-filter: blur(10px); 77 | border-radius:15px; 78 | box-shadow: 0 0 30px 4px rgba(0,0,0,0.3); 79 | overflow-y:auto; 80 | overflow-x:hidden; 81 | } 82 | .kuang_title_box:hover { 83 | cursor:move; 84 | } 85 | .kuang_title_box { 86 | position:absolute; 87 | top:0; 88 | right:0; 89 | width:100%; 90 | height:32px; 91 | border-bottom:1px solid #e6e6e6; 92 | z-index:100; 93 | background:#fff; 94 | text-align: center; 95 | } 96 | .kuang_title_box span { 97 | line-height:32px; 98 | padding-left:20px; 99 | display:inline-block; 100 | } 101 | .kuang_title_box a { 102 | display:block; 103 | width:32px; 104 | height:32px; 105 | line-height:32px; 106 | text-align:center; 107 | color:#333; 108 | float:right; 109 | text-decoration:none; 110 | } 111 | .kuang_title_box a:hover { 112 | background:#e6e6e6; 113 | } 114 | .kuang_contant { 115 | width:100%; 116 | height:90%; 117 | padding:40px 20px 20px 20px; 118 | position:relative; 119 | overflow-y:auto; 120 | } 121 | .tanchu_kuang:before { 122 | content:''; 123 | width:100px; 124 | height:100px; 125 | background:red; 126 | } 127 | -------------------------------------------------------------------------------- /playground/css/dashboard-test2.css: -------------------------------------------------------------------------------- 1 | 2 | main { 3 | background: linear-gradient(to right top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.432)), url(https://s1.ax1x.com/2020/06/10/toPYJP.jpg) center center ; 4 | min-height: 500px; 5 | background-size: cover; 6 | } 7 | 8 | 9 | 10 | .dashboard{ 11 | position: absolute; 12 | width: 300px; 13 | height: 100%; 14 | padding: 40px 40px 80px 40px; 15 | background-color: rgba(255, 255, 255, 0.623); 16 | backdrop-filter: blur(30px); 17 | /*Edge17-18*/ 18 | -webkit-backdrop-filter: blur(30px); 19 | box-shadow: 0 0 100px 4px rgba(0,0,0,0.3); 20 | border-radius: 0px 40px 40px 0px; 21 | overflow-y:scroll;/*纵向可以滚动*/ 22 | overflow-x: hidden;/*禁止横向滚动*/ 23 | } 24 | .dashboard::-webkit-scrollbar{/*隐藏纵向滚动条*/ 25 | display: none; 26 | } 27 | 28 | 29 | .dashboard .title{ 30 | text-align: center; 31 | margin-bottom: 20px; 32 | } 33 | .dashboard .title a{ 34 | font-size: large; 35 | } 36 | 37 | .dashboard .welcome{ 38 | text-align: center; 39 | margin-top: 30px; 40 | } 41 | .dashboard .funclist{ 42 | margin-top: 30px; 43 | } 44 | 45 | .dashboard .funclist input{ 46 | 47 | border: 10px; 48 | background: rgba(68, 68, 68, 0); 49 | color: rgb(0, 0, 0); 50 | position: relative; 51 | left: -40px; 52 | font-size: large; 53 | cursor: pointer; 54 | font-weight: 900; 55 | transition: background-color 0.3s ease; 56 | } 57 | .dashboard .funclist .kqgzt{ 58 | padding: 30px 83px; 59 | } 60 | 61 | .dashboard .funclist .xgmm, 62 | .dashboard .funclist .jszc, 63 | .dashboard .funclist .jssx, 64 | .dashboard .funclist .zxdl, 65 | .dashboard .funclist .jsll { 66 | 67 | padding: 30px 113px; 68 | } 69 | 70 | .dashboard .funclist input[type=button]:hover{ 71 | background: rgba(255, 255, 255, 0.342); 72 | } 73 | 74 | 75 | 76 | 77 | 78 | .workspace{ 79 | position: absolute; 80 | left:calc(300px + 20px); 81 | top:5%; 82 | right:20px; 83 | height: 90%; 84 | padding: 40px 40px 40px 40px; 85 | background-color: rgba(255, 255, 255, 0.623); 86 | backdrop-filter: blur(30px); 87 | box-shadow: 0 0 100px 4px rgba(0,0,0,0.3); 88 | border-radius: 10px; 89 | } 90 | .workspace .wstitle a{ 91 | 92 | font-size: 70px; 93 | font-weight: lighter; 94 | } -------------------------------------------------------------------------------- /playground/pages/dashboard-test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 仪表盘-TIMS 12 | 13 | 14 |
15 |
16 | 20 | 23 |
24 |
25 |
26 | 27 |
28 |
29 |
30 | 31 |
32 |
33 | 工作台-TIMS 34 | 35 | x 36 |
37 |
38 | 我是内容区域
39 | 我是内容区域
40 | 我是内容区域
41 | 我是内容区域
42 | 我是内容区域
43 | 44 | 我是内容区域
45 | 我是内容区域
46 | 我是内容区域
47 | 我是内容区域
48 | 我是内容区域
49 | 50 |
51 |
52 | 53 |
54 | 55 |
56 | 57 | -------------------------------------------------------------------------------- /playground/pages/dashboard-test2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 仪表盘-TIMS 11 | 12 | 13 |
14 |
15 | 19 | 22 |
23 |
24 |
25 |
26 |
27 |
28 | 29 |
30 |
31 |
32 |
33 | 教师浏览 34 |
35 |
36 |
37 | 38 |
39 | 40 | -------------------------------------------------------------------------------- /readme.txt: -------------------------------------------------------------------------------- 1 | 开始前准备:你需要 2 | 1、合适的现代浏览器。请使用: 3 | EdgeHTML 17 4 | Chromium 76 5 | Safari 9 6 | Opera 64 7 | 以上版本浏览,不然真的很丑。 8 | 2、互联网连接。 9 | 为减小不必要的空间占用,项目使用图床托管,首次加载需要互联网连接。 10 | 您还可以访问 tims.hamcoo.com 直接浏览本网站。 11 | 12 | 从这里开始: 13 | 1、新建数据库,名称“tims”,用户“Hank”(注意大小写),密码“123456”。 14 | 2、将sql/tims.sql导入到数据库中。 15 | 3、启动PHP,通过服务器访问 index.html 来开始。 16 | 17 | 一些题外话: 18 | 1、「dashboard-test」是刚开始时的废案,现作为操场(playground)项目,小窗口让网页更加桌面化,工作台现在可移动了。操场项目引用了开源代码。 -------------------------------------------------------------------------------- /sql/tims.sql: -------------------------------------------------------------------------------- 1 | /* 2 | Navicat MySQL Data Transfer 3 | 4 | Source Server : mysql 5 | Source Server Version : 50726 6 | Source Host : localhost:3306 7 | Source Database : tims 8 | 9 | Target Server Type : MYSQL 10 | Target Server Version : 50726 11 | File Encoding : 65001 12 | 13 | Date: 2020-06-21 13:22:31 14 | */ 15 | 16 | SET FOREIGN_KEY_CHECKS=0; 17 | 18 | -- ---------------------------- 19 | -- Table structure for d_info 20 | -- ---------------------------- 21 | DROP TABLE IF EXISTS `d_info`; 22 | CREATE TABLE `d_info` ( 23 | `d_id` int(11) NOT NULL, 24 | `d_name` varchar(255) NOT NULL, 25 | PRIMARY KEY (`d_id`) 26 | ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 27 | 28 | -- ---------------------------- 29 | -- Records of d_info 30 | -- ---------------------------- 31 | INSERT INTO `d_info` VALUES ('0', '信息管理中心'); 32 | INSERT INTO `d_info` VALUES ('1', '电气与信息工程学院'); 33 | INSERT INTO `d_info` VALUES ('3', '纺织服装学院'); 34 | INSERT INTO `d_info` VALUES ('5', '计算机与通信学院(人工智能产业学院)'); 35 | INSERT INTO `d_info` VALUES ('7', '计算科学与电子学院'); 36 | INSERT INTO `d_info` VALUES ('9', '外国语学院'); 37 | INSERT INTO `d_info` VALUES ('11', '设计艺术学院'); 38 | INSERT INTO `d_info` VALUES ('13', '体育教学部'); 39 | INSERT INTO `d_info` VALUES ('15', '应用技术学院'); 40 | INSERT INTO `d_info` VALUES ('17', '国际教育学院(国际交流中心)'); 41 | INSERT INTO `d_info` VALUES ('2', '机械工程学院'); 42 | INSERT INTO `d_info` VALUES ('4', '材料与化工学院'); 43 | INSERT INTO `d_info` VALUES ('6', '管理学院'); 44 | INSERT INTO `d_info` VALUES ('8', '经济学院'); 45 | INSERT INTO `d_info` VALUES ('10', '建筑工程学院'); 46 | INSERT INTO `d_info` VALUES ('12', '马克思主义学院(人文社会科学部)'); 47 | INSERT INTO `d_info` VALUES ('14', '工程训练中心'); 48 | INSERT INTO `d_info` VALUES ('16', '继续教育学院'); 49 | 50 | -- ---------------------------- 51 | -- Table structure for t_info 52 | -- ---------------------------- 53 | DROP TABLE IF EXISTS `t_info`; 54 | CREATE TABLE `t_info` ( 55 | `t_id` int(255) NOT NULL, 56 | `t_name` varchar(255) NOT NULL, 57 | `t_gender` char(255) DEFAULT NULL, 58 | `t_birthday` date DEFAULT NULL, 59 | `t_dep` varchar(255) NOT NULL, 60 | `t_edu` varchar(255) DEFAULT NULL, 61 | `t_title` varchar(255) DEFAULT NULL, 62 | `t_addr` varchar(255) DEFAULT NULL, 63 | `t_telep` varchar(255) DEFAULT NULL, 64 | PRIMARY KEY (`t_id`), 65 | KEY `t_dep` (`t_dep`) 66 | ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 67 | 68 | -- ---------------------------- 69 | -- Records of t_info 70 | -- ---------------------------- 71 | INSERT INTO `t_info` VALUES ('10001', '许光汉', '男', '1990-10-31', '5', '硕士', '高级工程师', '湖南省湘潭市岳塘区某某小区', '12345678900'); 72 | INSERT INTO `t_info` VALUES ('10002', '刘敏涛', '女', '1976-01-10', '2', '硕士', null, '湖南省湘潭市岳塘区某某小区', '12345678900'); 73 | INSERT INTO `t_info` VALUES ('10003', '刘昊然', '男', '1997-10-10', '3', '博士', '高级工程师', '北京市朝阳区某某小区', '12345678900'); 74 | INSERT INTO `t_info` VALUES ('10004', '张一山', '男', '1992-05-05', '4', null, null, null, '12345678900'); 75 | INSERT INTO `t_info` VALUES ('10005', '杨紫', '女', '1992-11-06', '5', '博士', null, null, '12345678900'); 76 | INSERT INTO `t_info` VALUES ('10006', '李易峰', '男', '1987-05-04', '6', '博士', null, null, '12345678900'); 77 | INSERT INTO `t_info` VALUES ('10007', '周冬雨', '女', '1992-01-31', '7', '硕士', null, null, '12345678900'); 78 | INSERT INTO `t_info` VALUES ('10008', '关晓彤', '女', '1997-09-17', '8', '硕士', null, null, '12345678900'); 79 | INSERT INTO `t_info` VALUES ('10009', '迪丽热巴', '女', '1992-06-03', '9', '博士', null, '', '12345678900'); 80 | INSERT INTO `t_info` VALUES ('10010', '赵丽颖', '女', '1983-08-08', '10', null, null, null, '12345678900'); 81 | INSERT INTO `t_info` VALUES ('10011', '易烊千玺', '男', '2020-11-28', '11', '博士', null, null, '12345678900'); 82 | INSERT INTO `t_info` VALUES ('10012', '魏大勋', '男', '1989-04-12', '12', null, null, null, '12345678900'); 83 | INSERT INTO `t_info` VALUES ('10013', 'Henry Lau', '男', '1989-10-11', '13', '', '', '', '12345678900'); 84 | INSERT INTO `t_info` VALUES ('10014', 'Robyn Rihanna Fenty', '女', '1988-02-20', '14', '', '', '', '12345678900'); 85 | 86 | -- ---------------------------- 87 | -- Table structure for user 88 | -- ---------------------------- 89 | DROP TABLE IF EXISTS `user`; 90 | CREATE TABLE `user` ( 91 | `user_id` int(4) NOT NULL, 92 | `user_pw` varchar(32) NOT NULL, 93 | `user_dep` int(11) NOT NULL, 94 | PRIMARY KEY (`user_id`), 95 | KEY `user_dep` (`user_dep`) 96 | ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 97 | 98 | -- ---------------------------- 99 | -- Records of user 100 | -- ---------------------------- 101 | INSERT INTO `user` VALUES ('1000', '123456', '0'); 102 | INSERT INTO `user` VALUES ('1002', '123456', '2'); 103 | INSERT INTO `user` VALUES ('1010', '123456', '10'); 104 | INSERT INTO `user` VALUES ('1001', '123456', '1'); 105 | -------------------------------------------------------------------------------- /旧版本/KS.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hankzhangcn/TIMS/760ca7c0321c05ccfa81f7488c05b0fe203db3f3/旧版本/KS.7z -------------------------------------------------------------------------------- /旧版本/tims.hamcoo.com.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hankzhangcn/TIMS/760ca7c0321c05ccfa81f7488c05b0fe203db3f3/旧版本/tims.hamcoo.com.rar -------------------------------------------------------------------------------- /课设.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": "." 5 | } 6 | ] 7 | } --------------------------------------------------------------------------------