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。

CRM(四川网脉系统)项目总结的更多相关文章

  1. crm 系统项目(二) admin 后台操作表格

    crm 系统项目(二) admin 后台操作表格 1. app下创建 templates  运行的时候 先找全局的templates——> 按照app的注册顺序找templates中的文件 2. ...

  2. crm 系统项目(一) 登录,注册,校验

    crm 系统项目(一) 登录,注册,校验 首先创建一个Django项目,关于配置信息不多说,前面有~ models.py文件下创建需要的表格信息,之后导入数据库 from django.db impo ...

  3. crm 系统项目(三) 自动分页

    crm 系统项目(三) 自动分页 需求: 1. 做一个自动分页, 每15条数据1页 2. 让当前页数在中间显示 3. 上一页, 下一页 注意情况: 1.总页数 小于 规定显示的页数 2. 左右两边极值 ...

  4. Django CRM学员系统项目

    项目需求: 1.分讲师\学员\课程顾问角色,2.学员可以属于多个班级,学员成绩按课程分别统计3.每个班级至少包含一个或多个讲师4.一个学员要有状态转化的过程 ,比如未报名前,报名后,毕业老学员5.客户 ...

  5. VB.NET 机房收费系统项目总结

    VB.NET机房收费系统项目总结 从2013年5月3日——2013年8月20日历时三个多月的.NET机房收费系统终于完成了.项目做完了,真有一种如释重负的感觉. 下面我将从文档.UML图,代码这三个方 ...

  6. Layui框架+PHP打造个人简易版网盘系统

    网盘系统   大家应该都会注册过致命的一些网盘~如百度云.百科介绍:网盘,又称网络U盘.网络硬盘,是由互联网公司推出的在线存储服务,服务器机房为用户划分一定的磁盘空间,为用户免费或收费提供文件的存储. ...

  7. p2p网贷系统的架构设计

    p2p网贷系统,标准版已经初步完成了.    最近写点总结,也算是分享吧. 简介:p2p网贷系统,是理财类的互联网金融系统.核心功能,就是理财人用户注册,冲钱,然后投标,标到期之后,收到回款.如果不想 ...

  8. 我是如何一步步编码完成万仓网ERP系统的(四)登录的具体实现

    https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...

  9. 让Ecshop网店系统用户自动登陆

    让Ecshop网店系统用户户自动登陆,打开ecshop includes/init.php文件,可以发现Ecshop系统判断用户的SESSION不存在的时候会去读取存储在COOKIES里面的值.如下代 ...

随机推荐

  1. ystep jQuery流程、步骤插件

    今天小菜给大家带来又一款给力jQuery插件:ystep. 从名称上大致可以看出,这是一个流程步骤插件. 如果无意外的话,这可能是小菜近期最后一个作品了...苦逼的小菜即将创业,可能就没时间折腾啦~好 ...

  2. ASP.NET MVC 5 - 查询Details和Delete方法

    在这部分教程中,接下来我们将讨论自动生成的Details和Delete方法. 查询Details和Delete方法 打开Movie控制器并查看Details方法. public ActionResul ...

  3. Eclipse安装ZooKeeper插件

    Eclipse在线安装插件奇慢的解决办法 安装ZooKeeper插件步骤如下:Step 1. 在 Eclipse 菜单打开Help -> Install New Software…Step 2. ...

  4. 基础才是重中之重~Emit动态构建方法(参数和返回值)

    回到目录 对于Emit我们知道它的可以动态构建程序集,类型,方法,属性等,或者说只要手动使用C#创建的东西使用Emit也都可以动态创建它们,Emit由于它的特别之处,所以在很多领域得到了广泛的应用,像 ...

  5. python数据类型详解

    目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8.字典9.日期 1.字符串1.1.如何在Python中使用字符串a.使用单引号(')用单引号括起来表示字符串,例如:str='th ...

  6. 带你走近AngularJS - 基本功能介绍

    带你走近AngularJS系列: 带你走近AngularJS - 基本功能介绍 带你走近AngularJS - 体验指令实例 带你走近AngularJS - 创建自定义指令 ------------- ...

  7. 人之初,性本动 - G2 2.1 发布

    前言 随着可视化进入深水区,G2面临了越来越多交互上的需求.动画是提升交互必不可少的一部分,也是之前G2的薄弱环节.这个版本里我们开发并替换了动画底层,统一了时间轴,使G2的动画性能大大提升,并提供了 ...

  8. removeClass 按钮点击添加class效果

    html代码: <div class="game"> <span class="active">全部</span> < ...

  9. 即时搜索(input框)

    做搜索功能的时候,经常遇到输入框检查的需求,最常见的是即时搜索,今天好好小结一下. 即时搜索的方案: (1)change事件    触发事件必须满足两个条件: a)当前对象属性改变,并且是由键盘或鼠标 ...

  10. 【Win10应用开发】自定义桌面壁纸

    调用通用的API来设置桌面壁纸,是一件既简单又有趣的事情,结合XAML可以生成图像的特性,你甚至可以做一个应用,让用户用他所拍的照片做成一张自定义壁纸,然后作为桌面壁纸. 这个API是通用的,应用运行 ...