一中的考评系统是从软考完开始的,从开始到结束大概用了2个多月,真心的觉得战线很长,学习到的东西也甚多。不论从技术上还是从沟通上我觉得以后不会再有这么好的机会能够如此顺畅了吧。
当初我们讨论需求的时候,其实并不是很难。整个数据库的设计也就只有20多张表,每一张表都是通过很严格的设计,在连海师哥的引导下完成的。我和江霄先前设计的时候完全是按照不存在冗余来设计的。因为是一个评分的需求:
首先先要存在教职工信息。(教职工信息表、系列表、科室及年纪组表)
管理员会先进行配置:配置权重、配置互评信息、配置考核项、配置分值表、配置详细评分表。
这样上面的表格配置好了,教职工会开始评分,评分的信息就会存在详细评分表中。
我们的设计是这样的:教职工表、互评信息表、考核项目表、分值项目表、详细评分表、系列表、科室及年级组表、权重表。
管理员首先编辑系列表、科室及年级组表,在这两个表中存放各个系列或科室及年级组的教职工信息。有了教职工信息,根据系列给系列评分进行配置权重和互评信息,这时候,将这些信息保存到互评信息表和权重表中。然后就是管理员编辑考核项目和分值表。之后知道了谁给谁评,评哪些项,那就可以进行评分了。详细评分表是用来记录品分的信息的。
详细评分表为了能记录下每位教职工的详细的评分,设计原则:谁给谁在那个项目上评分为多少。这样就会使数据更灵活。
但是这样设计也有弊端,就是大数据:一中有200名老师,每个老师评分就有40000条互评信息,考核项目有5条的话,就是20万条数据,每次查询都要查询20万条记录是在是很恐怖的一件事情,所以我们在v2.0的时候,在数据库表中添加一个表,这个表是动态生成的,就是根据考核项目表和成绩表合起来,这样的话就会只有4万条数据了。
当然,我去实现过这个,但是一直没有实现,因为单是实现动态生成类就很难,更别说动态生成数据库表了,还有待研究。
底层架构,连海师哥一直在知道我们,我做了D层,江霄做了B层,我觉得两层都很相似,深刻的体会到了面向接口的编程思想和设计模式灵活使用。
我们在敲的时候,我负责的事评分,师哥说一个系统可能复杂就复杂在逻辑上面,我第一开始里一个逻辑大概就要里半天的时间,恨不得再长个脑袋,后来慢慢的就不那么难了。在这一块学到了很多知识,知道了泛型、知道了委托,EF中的lambda表达式怎么写,MVC中的Controller。。。当然这里也有缺陷就是:我觉得我写的代码除了我自己没有人可以看懂的。还需要修改和完善。实现功能不是目的。
前台用的是Easyui,以前写BS很神秘的,但是做了这个项目之后,就不觉得很神秘了,感觉只要做就一定可以做出来。这一块在传值的时候我一般用的是JSON字符串来传值的,由于前台是字符串,后台是对象,要将字符串转换为对象要进行序列化,当后台没有向对应的对象来接受这些字符串的时候,就只能用拼接字符串,放在datatable中了,这个其实是当时设计数据库时候出现的问题,说明咱的数据库有问题还需要修改。
连海师哥懂得东西很多的,我很佩服他,师哥的善良有时候可能拖延了这个项目,对我们总是笑咪咪的,我想要是我带这个项目的话,可能没有师哥这样的人缘,哈哈哈,忠义不能两全嘛~~~~~
江霄是很棒的搭档,我很喜欢她,我们两个交流不是很多,但是每一次交流都相当愉快,我觉得她很聪明,我跟别人说半天的东西,她一听就能明白,我很开心,有一种相见恨晚的感觉,哈哈。
一中的老师在2-13号的时候来给我们验收的,验收很成功,当然也有一些不足需要修改的地方,很高兴还有东西可以学习到。