学院每学期会对学生进行“综合测评”。测评规则最早较为简单，可以通过网上常用的电子表单服务实现，但随着测评规则和配套表格的复杂化，其他班级不得不回到填写 Word 表格后手工统计的模式。本系统集成了测评表格和计算规则，设计用于班级内的测评表格收集、自动统计，直接导出要求的测评结果表格，并支持多班级分别使用。
系统在班内（29 人）已使用两个学期，应实际使用需求，在使用过程中增加了测评项目、单次填写多学期的支持。此外系统也为其他 1 个班级提供过服务。使用过的班长均反馈效果良好。
The school has a term evaluation for every student. Previously the evaluation rules are so simple that it is easy to digitalize the procedure with popular web-based form services. However, as the rules become complex, other classes have returned to the regular "fill forms in paper, and do manual aggregation in Excel" workflow. This system has implemented the complex evaluation form and calculation rules, and is designed to collect evaluation data and aggregate automatically class-wide, with output of required evaluation result forms. The system also supports use among classes.
The system has been used in my class (29 people) for two terms, and added multi-term input support afterwards. It has also served another one class. The students in charge of the evaluation in different classes spoke highly of the system.
技术概况 Technical Overview
系统初版开发时间为 50 小时左右，利用 PHP 的 Laravel 框架进行构建，数据库采用 SQLite 的轻量方案。
系统内采用学生、评测项目内容、管理用户三个模型，其中学生对应的进度设计了未填写、正在填写、已填写、已审核四个状态。评测项目内容设有学期、类别、内容、获奖情况、测评分等固定栏位。导出的表单格式为系统内置（采用 PHPOffice 的模板引擎生成），管理用户可通过后台自助导出。
The system uses PHP Laravel framework and SQLite as the database. It took about 50 hours to develop the initial version. (Actually at that time I was new to Laravel.)
In the system, there are three models: student, evaluation item content, and admin user. The students are with four status: unopened, filling, submitted, and approved. The evaluation item content has fields of term, type, content, prize, and points. The exported form file is generated by PHPOffice's template engine, which can be exported by admin users at the dashboard.
The system is built upon the specific complex evaluation rules. For example, type-based item count limit and total points limit, class-based evaluation items, pre-imported and self-modifiable items like GPA are supported. The object-oriented design in the system makes it easy to customize further, which is proved in the multi-term support development.
系统使用 Bootstrap 实现自适应界面，支持 PC 端、手机端访问，所有表格在手机端均会优化显示。
The system utilizes Bootstrap to have responsive views in both PC and mobile. In mobile all tables have a optimized view.
For simplicity, students can log in with their student ID to fill the form. To prevent illegal filling, one student can only keep online in one browser session. Students can log in as many times as they want, and they need to check evaluation summary before submitting. After submitting, the form will be locked, which is unable to view in the "frontend". Admins can view and unlock the form (rejected for modification) in the dashboard.
The evaluation detail interface complies with webform standards. The frontend shows evaluation rule hintings according to the input, and the backend will check the form according to the rules. There may be special circumstances though, so only some rules are enforced in the system, and other rules are enforced by manual moderation. The sum-up is automatically calcalated by rules in the code.
Admin users can view and modify students' forms in his/her own class. If admin approves the form, the student will be exportable. If admin doubts the reported items, he can modify the specific items himself, or notify the student by means out of the system to fill the form again.
管理员可一键导出自动生成的 Excel 统计表。为满足学院的纸质处理流程，系统还支持导出 Word 详细表单。
Statistics in Excel spreadsheets can be exported. In order to meet school requirements for hard copies, the system also supports evaluation form export as Word.
In my opinion this actually can be achieved by a workflow engine. I am glad to have this chance to solve a practical issue by building a information management system from scratch.
See in Real
Please contact me (comments are good) if you would like to see this in real. It may get offline at any time bacause of its low-frenquency usage, so the contact is necessary.