项目介绍
本项目是在个人项目生成小初高数学题的基础上增加UI界面,采用HTML+CSS+JS+Servlet+tomcat的方式进行传统的JavaWeb网页端设计。并运用Maven进行管理项目结构。
项目结构为便于多人开发的三层架构,通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。区分层次的目的即为了“高内聚低耦合”的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层(又称为持久层)、业务逻辑层(又或称为领域层)、表示层。
表示层(UI层)
表示层也称为界面层,位于最外层(最上层),离用户最近。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。
业务逻辑层(BLL层)
负责关键业务的处理和数据的传递。复杂的逻辑判断和涉及到数据库的数据验证都需要在此做出处理。主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。
访问层(DAL层,持久层)
主要负责对数据库的直接访问,为业务逻辑层提供数据,根据传入的值来操作数据库,增、删、改、查。
代码简介
前端由登录,注册,修改密码,选择题目级别,做题,以及分数展示六个界面(部分界面展示如下)
各个界面功能交互方式基本相同,以登录UI为例:
在网页端,用户输入完用户名和密码后,网页本身会检测输入的字符串是否合法,然后会通过POST方法将用户名和信息发送到表示层对应的Servlet,Servlet程序从Request域中取出这两个值并调用,调用业务逻辑层的函数进行数据的查询匹配操作,业务逻辑层作为连接表示层和持久层的通道,它的作用多在于数据的处理和传递,它将用户名和信息封装为一个User类实例传递给持久层,持久层直接向数据库发送查询命令,查询是否有与参数User中用户名和密码都匹配的条目,然后一层一层返回。表示层根据查询结果选择跳转到下一界面还是告知用户登录信息出错,告知信息会通过动态页面实时显示在网页上。
关于如何复用个人项目实现结对编程项目
本结对编程项目的题目本身就是依托于个人项目进行的,需要将个人项目中命令行形式的交互界面转换为图形化界面,而最重要的生成题目的核心代码,作为个人项目的一个类,稍作修改即可添加到结对编程项目中作为一个封装好的生成题目类进行调用。个人项目的复用对于结对编程项目的进展有很大的帮助,也显示出模块化代码的重要性,之前写过的代码如果本身就已经是模块化的,就可以运用于之后的项目中,如此循环往复,积累代码量,对于项目的开发会愈加简单。
结对编程的经验、教训
本次的结对编程算是本人第一次进行多人项目的开发,开发过程中难免有一些项目模块交流上和项目统筹规划能力的欠缺,使得在项目模块结合的时候出了一点小问题。而且对于项目模块分工的不明确,结构的不清晰都增加了项目流产的可能性,不过最后还是做出了符合要求的项目。这次的编程显示出做项目时项目流程和进度把握的重要性和队员之间及时沟通的重要性。