CRM系统(四川网脉系统)项目总结
为期八天的四川网脉系统(CRM系统)项目结束了,不管是在做这个项目的过程中还是答辩的过程中都有一些收获,下面对整个项目的开发做一个大致的总结。
一、项目概况
四川网脉系统主要用于对四川各地区学校的管理,整个系统共分为五个功能模块,分别是:
1、 资料管理,资料管理主要用于公司内部的员工信息、员工职位以及员工的访问权限的管理。
2、 学校管理,学校管理主要用于学校的活动开展情况和学校信息的管理。
3、 用户管理,用户管理主要用于班级的增加、删除以及学生信息的管理。
4、 统计信息,统计信息主要用于各地区学校的推广状态以及各班级中会员和非会员的统计。
5、 系统管理,系统管理主要用于密码的修改和登录日志的查看。
二、项目开发过程
这个项目和平时的练习有很大的区别,平时的练习只是针对单一的知识点的练习,而四川网脉系统项目的开发过程中用到了多个知识点,是对整个JavaOO知识点的综合练习和对项目需求的分析,同时也大大的增加了代码的练习量。
(一)、知识点的利用
1、SQL数据库:包括了数据的增删该查,个人认为数据库练习的重点在于SQL语句的联表查询和模糊查询,其中联表查询最重要的一个体现就在是手风琴,手风琴是根据城市ID查找学校,再根据学校ID显示每个学校学生的信息。模糊查询在员工管理、学校管理和学生管理都有用到,比如员工原理的话是通过员工的部分属性查找员工具有共同属性的员工集合。
2、表格,表格的主要知识点在于通过集合来定义表头和表格内容的展现,在定义表头的时候值得注意的是在新建表格的时时候要把主键的ID写进去。比如:下图中红色方框内员工的ID。
表格内容的展现是通过集合的方法展现出来的。
3、JDBC主要是整个项目的设计架构方式,也就是三层架构。三层架构包括持久层、业务层和表现层。业务层是采用Dao模式建立实体类和数据库做映射,达到完成对象数据和关系数据转换的目的;业务层是完成处理表现层中得到数据和相关的业务操作,达到保证这些操作同时成功或同时失败的目的,以免引起数据混乱的情况;表现层是完成数据的展示和搜集。
对象的抽象,对象的抽象主要是数据库驱动、和数据库建立连接以及关闭连接的操作。
接口,接口主要在三层架构的时候层与层之间采用接口耦合的方式,这样的当其中一个层的组件需要更换的时候不会影响其他层的组件。
封装,也记是get/set方法,主要是在信息添加修改的时候用到。
日期类型和字符串互转,日期类型转字符串主要在信息展示的时候用到,比如:下图红色方框中员工的生日以及员工的入职日期,因为展示出来的是一个字符串,所以初始化员工信息的时候必须先将日期类型转为字符串。
而字符串转日期类型主要在学校统计和日志一览的中通过日期查询的时候用到,代码的写法基本都是固定的,如下图所示专门用一个类来放这个方法,在使用的时候只需调用这个方法就可以,达到代码重用的目的:
集合主要是在表格的展示和模糊查询的时候用到。
(二)、项目需求的分析
项目需求的分析主要在于整个项目需要用到哪些表格以哪些表格之间需要联表查询。在需求分析的过程中需要将每个模块的信息查看方法点开以后才能完全的统计到表格的每一个列。主外键关联是一个难点,比如在查看学校信息的时候需要将城市ID和学校ID想关联,但是每个学校还有沟通记录,所以沟通记录的ID也要和学校ID相关联。
三、开发过程中遇到的代码异常
1、业务层员工添加遇到的异常
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`project_crm`.`t_employee`, CONSTRAINT `fk_a` FOREIGN KEY (`depID`) REFERENCES `t_department` (`depID`))
问题所在:持久层的findAll方法中没有封装depID
解决办法:
通过添加员工的界面从业务层一层一层的往持久层打印跟depID有关的对象或者集合
2、参数异常(参数违法)
Exceptioninthread"AWT-EventQueue-0"java.lang.IllegalArgumentException
如schBean.setActivityTime(Date.valueOf(nameTxt.getText()));
schBean.setActivityTheme(timeTxt.getText());
问题所在:标黄的地方参数不一致。
解决办法:将nameTxt改为ActivityTime,timeTxt改为ActivityTheme。
3、外键没封装
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`project_crm`.`t_schoolactivity`, CONSTRAINT `fk_7` FOREIGN KEY (`schoolID`) REFERENCES `t_school` (`schoolID`))
解决办法:封装schoolID。