1.项目背景与需求摘要:“十年树木,百年树人”,“科教兴国,教育为本”……,在祖国大江南北,我们都以看到这样的标语。改革开放二十几年来,我国的教育事业蓬勃发展,为我国的社会主义现代化建设培养了无数人才,为中华民族的伟大复兴做出了巨大贡献。有一句俗语:学得好,不如考得好;考的好,不如报
1.1 项目背景
“十年树木,百年树人”,“科教兴国,教育为本”……,在祖国大江南北,我们都以看到这样的标语。改革开放二十几年来,我国的教育事业蓬勃发展,为我国的社会主义现代化建设培养了无数人才,为中华民族的伟大复兴做出了巨大贡献。有一句俗语:学得好,不如考得好;考的好,不如报得好。虽然观点有失偏颇,但却充分体现了高考志愿填报的重要性。随着普通高校网上录取工作的不断推进和深入,高考改革工作的不断进行,对于各院校的高考录取系统的要求也进一步细化,比如平行志愿录取,平行志愿录取的规则是“分数优先、遵循志愿、一次投档、不再补档”。平行志愿投档具有三个特点:
一是每一批次每一阶段院校录取时,高考总分高的考生先于总分较低的考生投档;二是每个考生的平行院校志愿是有先后顺序的,计算机投档时按考生填报的院校志愿顺序依次进行检索;三是平行志愿实行“多次模拟,一次投档”,不补充投档。这些不断深入的需求,对高考录取系统提出了很高的要求,特别是投档、录取工作。在投档时不但要保证程序运行的效率,还要综合比较考生的各种成绩、各种特征,根据考生的志愿由高到低进行;而对于客户端,则需要根据不同的需求采用不同的算法来满足系统的需要。
1.2 项目需求
考生进行投档时,系统除了需要保证程序的运行效率,还要在正式录取之前实现预录取、预调剂功能,从而降低录取错误发生的概率;除此之外,系统也应能对录取结果进行相应的分析,例如成绩分析、录取人数分析、成绩区间分布、生源地分布等等,因此客户端则需要根据不同的需求采用不同的算法来满足系统的需要。
2.项目主要代码展示2.1 代码组织结构
展示代码组织结构如图所示,独立编写的代码量约 2000,开源代码量约 1500,其主要是对数据的读取和部分功能的实现。
代码符合编写规范(命令、换行等符合要求)通过单元测试、集成测试检查代码逻辑等方面错误合并分支时对代码进行审查,查找缺陷
3.1 系统登录界面
登录界面,用户在此界面输入账号密码,后台进行验证。正确的话能够进入系统。
图 3.1 系统登录界面
3.2 系统主界面
主界面,用户在此界面进行重要操作。导入专业录取计划和学生志愿信息,能够进行预录取、预调剂等操作。最后完成整个录取,导出结果。
图 3.2 系统主界面
3.3 系统招生界面
招生计划界面,用户在此可以查看招生计划,并且对招生计划的详细信息进行修改。
图 3.3 系统招生界面
3.4 学生信息界面
学生信息界面,用户在此可以查看学生的具体信息。采用分页处理,每一页显示一定的数量。
图 3.4 学生信息界面
3.5 录取结果界面
录取结果界面,用户在此界面可以查询所有的录取信息,也可以根据学院,专业,名次等条件查询。
图 3.5 录取结果界面
3.6 调剂队列界面
调剂队列界面,用户在此界面可以查询学生对滴调剂信息,能够清楚哪个学生被调剂。
图 3.6 调剂队列界面
3.7 录取结果界面
图 3.7 录取结果界面
3.8 成绩分析界面
成绩分析界面,用户在此界面可以得到学生的成绩分析数据。可以按全校、学院、专业分类。
图 3.8 成绩分析界面
3.9 人数分布界面
人数分布界面,用户在此界面可以通过柱状图直观的看见不同学院的人数分布,可以通过此图进行分析学生录取信息。
图 3.9.1 人数分布界面
图 3.9.2 人数分布界面
3.10 生源地分布界面
生源地分布界面,此界面详细的显示了生源的全部过分,省内分布,以及通过柱状图显示分布的数量。
图 3.10 生源地分布界面
4.所遇问题与解决方案4.1Mapper 层配置文件
问题:在编写 Mapper 层配置文件时,由于涉及很多 SQL 语句,且 Idea 无法检查 SQL 语句语法错误,如 GroupBy 语句所以遇到很多问题
解决方法:将编写好的 SQL 放入“NavicatforMySQL”中运行,检查无误后,再移植至配置文件问题:在配置文件中,有很多查询是基于同一查询结果进行排序的
如:
重复编写同一段代码不仅使代码可读性差,且查询效率低
解决方法:使用标签,引用重复使用率较高的查询语句,优化后代码如下:
4.2Pojo 实体类
问题:在其他小组成员负责代码部分,需要大量涉及查询当前流程,验证流程合法性,但是在数据库中,流程状态以数值表示,数字不能直观表示流程意义解决方法:设计枚举类型实体类,表示每个数值的意义
该枚举类如下:
4.3Excel
问题:执行“录取”、“调剂”等操作时,对于不符合标准的数据条目,会抛出错误
解决方法:在 Excel.pojo 下,添加“@NotNull”等标注,对数据进行检验问题:当导入数据量较大时,ArrayList 无法缓存所有数据实体类,出现溢出错误
解决方法:设置静态变量,当数据条目操作该数值时,自动调用 Mapper 层相关语句,执行插入数据库操作,并清空 ArrayList,防止 ArrayList 溢出,然后继续往 ArrayList 中添加数据.
5.项目中完成要求的相关代码截图将错误信息写入 log4j 日志文件中;
错误页面处理
二级访问的虚拟路径
解决中文乱码
设置默认首页
后台数据校验
事务管理
视图解析器
本项目中所有视图解析器封装在前端代码中,如登录页面视图解析器,当用户发送登录请求后,后端 LoginController 会执行数据库查询操作,验证用户名及密码,而后返回 JSON 类型状态码及需要展示给用户的信息,前端解析 JSON 数据后,返回相应视图
其解析代码如下:
控制器代码:
public JsonResponse doLogin( String name, String pass, HttpSession session ){ if ( properties.getAdminName.equals( name ) && properties.getAdminPass.equals( pass ) ) { storage.put( "authSession", session ); return(new JsonResponse( JsonResponse.OK, null, null ) ); }else { return(new JsonResponse( JsonResponse.AUTH_ERR, null, "登陆失败" ) ); }来源:亦云菌