基于ssm的住户管理系统
目录 TOC \o "1-3" \h \z \u 1 设计目的... PAGEREF _Toc76630017 \h 1 1.1 目的... PAGEREF _Toc76630018 \h 1 1.2 环境... PAGEREF _Toc76630019 \h 1 2 总体设计... PAGEREF _Toc76630020 \h 2 2.1 系统概述... PAGEREF _Toc76630021 \h 2 2.1.1 SSM架构... PAGEREF _Toc76630022 \h 2 2.1.2 系统架构设计... PAGEREF _Toc76630023 \h 2 2.2 系统架构... PAGEREF _Toc76630024 \h 3 2.2.1 模块组成图... PAGEREF _Toc76630025 \h 3 2.3.2 流程图... PAGEREF _Toc76630026 \h 4 2.3.3 数据表结构... PAGEREF _Toc76630027 \h 5 3 详细设计... PAGEREF _Toc76630028 \h 6 3.1 模块功能... PAGEREF _Toc76630029 \h 6 3.1.1 登录模块... PAGEREF _Toc76630030 \h 6 3.1.2 管理模块... PAGEREF _Toc76630031 \h 7 3.2 数据库... PAGEREF _Toc76630032 \h 11 4 测试... PAGEREF _Toc76630033 \h 13 4.1登录测试... PAGEREF _Toc76630034 \h 13 4.2管理测试... PAGEREF _Toc76630035 \h 13 4.2.1新建住户... PAGEREF _Toc76630036 \h 13 4.2.2修改住户... PAGEREF _Toc76630037 \h 14 4.2.3查询住户... PAGEREF _Toc76630038 \h 15 4.2.4删除住户... PAGEREF _Toc76630039 \h 15 5 总结收获... PAGEREF _Toc76630040 \h 17 参考文献... PAGEREF _Toc76630041 \h 18
1 设计目的
1.1 目的
《Java高级应用》是计算机科学与技术专业的一门专业必修课,是一门实践性较强的课程。旨在通过实践巩固和加深学生对企业级应用程序设计的基本概念、基本理论和实现技术的理解;培养学生掌握企业级应用软件系统分析与设计的基本方法和步骤,并能针对简单的实际应用问题进行初步地分析和设计及实现。
课程设计要求学生完成一个应用场景的分析、设计并拓展为企业级应用系统的实现。通过真实的项目实战过程,将理论与实际相结合,强化学生的项目开发和团队意识,提高学生分析能力、业务逻辑能力、创新能力和文档制作能力。
随着信息化社会的快速发展,小区服务智能化、网络化成为了当今社会的一种发展趋势。本文主要工作可归纳如下:(1)采用面向对象分析法对用户需求进行逐一分析,从角色用例入手,分析了住户、管理员的角色用例分析,确立系统的功能需求。(2)针对系统中的关键技术进行了阐述,从性能、易用性、框架优势三个方面对Spring、SpringMvc、Mybatis进行了分析,对比其他框架,明确优缺点和最终选用的理由。(3)根据需求分析内容对系统进行了总体设计、数据库设计以及功能模块设计,并依据设计思路对系统框架进行了整合,选择合理的实现形式对关键模块进行了实现。(4)针对系统关键模块编写了测试用例,进行了相关的测试与结果分析,测试结果满足要求。
1.2 环境
操作系统:Windows 10 Web服务器:Tomcat v9.0 Java开发包:jdk_13.0.1 开发工具:Eclipse Java EE IDE for Web Developers 数据库:MySQL 5.7 浏览器:Google Chrome或IE8.0以上版本
2 总体设计
2.1 系统概述
2.1.1 SSM架构
Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。 SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。 mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。 页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。
2.1.2 系统架构设计
持久对象层(也称持久层或持久化层):该层由若干持久化类(实体类)组成。 数据访问层(DAO层):该层由若干DAO接口和MyBatis映射文件组成。接口的名称统一以Dao结尾,且MyBatis的映射文件名称要与接口的名称相同。 业务逻辑层(Service层):该层由若干Service接口和实现类组成。在本系统中,业务逻辑层的接口统一使用Service结尾,其实现类名称统一在接口名后加Impl。该层主要用于实现系统的业务逻辑。 Web表现层:该层主要包括Spring MVC中的Controller类和JSP页面。Controller类主要负责拦截用户请求,并调用业务逻辑层中相应组件的业务逻辑方法来处理用户请求,然后将相应的结果返回给JSP页面。
2.2 系统架构
2.2.1 模块组成图
本系统中主要实现了两大功能模块:用户登录模块和客户管理模块,如图2.1所示。
图2.1 模块组成图
2.3.2 流程图
如图2.2所示。
图2.2 流程图
2.3.3 数据表结构
2.住户信息表
3.数据字典表
3 详细设计
3.1 模块功能
3.1.1 登录模块
在登录页面对应的输入框输入用户名,密码;确认后登录。在提交后,首先判断用户名和密码是否为空,若为空,提示“账号或密码不能为空!”,若不为空,通过用户名在数据库中的sys_user表进行检索,若检索到的记录集为空,则说明用户名错误,从而转到相应的出错处理程序,若记录集不为空,再进行密码判断,检查密码是否相等,不相等,作出错处理;相等则跳转到操作界面。如图3.1。
图3.1 登录流程图 假设在其他控制器类中也包含一个访问客户管理页面的方法,那么用户完全可以绕过登录步骤,而直接通过访问该方法的方式进入客户管理页面。为了避免此种情况的发生,并提升系统的安全性,创建一个登录拦截器来拦截所有请求。只有已登录用户的请求才能够通过,而对于未登录用户的请求,系统会将请求转发到登录页面,并提示用户登录。 在项目中创建一个登录拦截器LoginInterceptor.java。 然后在springmvc-config.xml文件中配置。 <mvc:interceptors> <mvc:interceptor> <mvc:mappingpath="/**" /> <beanclass="com.itheima.core.interceptor.LoginInterceptor" /> </mvc:interceptor> </mvc:interceptors>
3.1.2 管理模块
①查询住户信息 实现的功能包括按条件查询、查询所有客户信息,以及分页查询启动项目后,进入住户管理页面,然后单击“查询”按钮即可查询出所有客户信息,并且这些信息都已分页显示。效果图如图3.2所示。
<div id="page-wrapper"> <div class="row"> <!-- /.col-lg-12--> </div> <!-- /.row --> <div class="panelpanel-default"> <div class="panel-body"> <form class="form-inline" method="get" action="${pageContext.request.contextPath}/customer/list.action"> <div class="form-group"> <label for="customerName">住户名称</label> <input type="text" class="form-control" id="customerName" value="${custName}" name="custName" /> </div> <div class="form-group"> <label for="customerFrom">住户来源</label> <select class="form-control" id="customerFrom" name="custSource"> <option value="">--请选择--</option> <c:forEach items="${fromType}" var="item"> <option value="${item.dict_id}" <c:if test="${item.dict_id ==custSource}">selected</c:if>> ${item.dict_item_name } </option> </c:forEach> </select> </div>
图3.2 查询功能
②添加住户信息 点击新建按钮,弹出一个页面,输入相关住户信息,点击创建住户按钮即可成功创建,效果图如图3.3所示。 <tbody> <c:forEach items="${page.rows}" var="row"> <tr> <td>${row.cust_id}</td> <td>${row.cust_name}</td> <td>${row.cust_source}</td> <td>${row.cust_industry}</td> <td>${row.cust_level}</td> <td>${row.cust_mobile}</td> <td>${row.cust_address}</td> <td> <ahref="#" class="btn btn-primary btn-xs" data-toggle="modal" data-target="#customerEditDialog" onclick= "editCustomer(${row.cust_id})">修改</a> <ahref="#" class="btn btn-danger btn-xs" onclick="deleteCustomer(${row.cust_id})">删除</a> </td> </tr> </c:forEach></tbody>
图3.3 添加功能
③修改住户信息 点击修改按钮,弹出一个页面,输入相关住户信息,点击保存修改按钮即可成功创建,效果图如图3.4所示。 function editCustomer(id) { $.ajax({ type:"get", url:"<%=basePath%>customer/getCustomerById.action", data:{"id":id}, success:function(data) { $("#edit_cust_id").val(data.cust_id); $("#edit_customerName").val(data.cust_name); $("#edit_customerFrom").val(data.cust_source) $("#edit_custIndustry").val(data.cust_industry) $("#edit_custLevel").val(data.cust_level) $("#edit_linkMan").val(data.cust_linkman); $("#edit_phone").val(data.cust_phone); $("#edit_mobile").val(data.cust_mobile); $("#edit_zipcode").val(data.cust_zipcode); $("#edit_address").val(data.cust_address); } });}
图3.4 修改功能
④删除住户信息 点击删除按钮即可删除。 function deleteCustomer(id) { if(confirm('确实要删除该住户吗?')) { $.post("<%=basePath%>customer/delete.action",{"id":id}, function(data){ if(data=="OK"){ alert("住户删除成功!"); window.location.reload(); }else{ alert("删除住户失败!"); window.location.reload(); } }); }}
3.2 数据库
根据系统功能设计的要求以及功能模块的划分,可以列出以下主要数据项和数据库,主要分为3个表:user表、customer表、base表。 1.用户表
2.住户信息表
3.数据字典表
4 测试
4.1登录测试
数据表如图4.1所示。
图4.1 用户表 ①用户名和密码均为空,提示“账号或密码不能为空!”。 ②用户名m0001,密码为空,提示“账号或密码不能为空!”。 ③用户名m0005,密码123,提示“账号或密码错误,请重新输入!”。 ④用户名m0001,密码123,登录成功,跳转到主页面。
4.2管理测试
4.2.1新建住户
测试结果如图4.2、4.3所示。
图4.2 新建住户 图4.3 新建住户
4.2.2修改住户
测试结果如图4.4、4.5所示。
图4.4 修改住户图4.5 修改住户
4.2.3查询住户
测试结果如图4.6所示。图4.6 查询住户
4.2.4删除住户
测试结果如图4.7、4.8所示。图4.7 删除住户
图4.8 删除住户
5 总结收获
参考文献
[1]黑马程序员.Java EE企业级应用开发教程[M].北京:人民邮电出版社,2017 [2]张海藩、牟永敏.软件工程导论[M].北京:清华大学出版社,2013 [3]黑马程序员.Java Web程序设计任务教程[M].北京:人民邮电出版社,2017 [4]何玉洁.数据库原理与应用[M].北京:清华大学出版社,2017 [5]吕军.软件项目综合实训[M]. 北京:清华大学出版社,2010.6 [6]杜文洁、白萍.实用软件工程与实训[M]. 北京:清华大学出版社,2009.4 [7]王能斌.数据库系统原理[M].北京:电子工业出版社,2000 [8]徐保民.数据库原理及应用[M].北京:人民邮电出版社,2008
.
├── boot-crm
│ ├── WebContent
│ │ ├── META-INF
│ │ │ └── MANIFEST.MF
│ │ ├── WEB-INF
│ │ │ ├── jsp
│ │ │ │ ├── customer.jsp
│ │ │ │ └── login.jsp
│ │ │ ├── lib
│ │ │ │ ├── ant-1.9.6.jar
│ │ │ │ ├── ant-launcher-1.9.6.jar
│ │ │ │ ├── aopalliance-1.0.jar
│ │ │ │ ├── asm-5.1.jar
│ │ │ │ ├── aspectjweaver-1.8.4.jar
│ │ │ │ ├── cglib-3.2.4.jar
│ │ │ │ ├── commons-dbcp2-2.1.1.jar
│ │ │ │ ├── commons-lang3-3.4.jar
│ │ │ │ ├── commons-logging-1.2.jar
│ │ │ │ ├── commons-pool2-2.4.2.jar
│ │ │ │ ├── jackson-annotations-2.8.6.jar
│ │ │ │ ├── jackson-core-2.8.6.jar
│ │ │ │ ├── jackson-databind-2.8.6.jar
│ │ │ │ ├── javassist-3.21.0-GA.jar
│ │ │ │ ├── log4j-1.2.17.jar
│ │ │ │ ├── log4j-api-2.3.jar
│ │ │ │ ├── log4j-core-2.3.jar
│ │ │ │ ├── mybatis-3.4.2.jar
│ │ │ │ ├── mybatis-spring-1.3.1.jar
│ │ │ │ ├── mysql-connector-java-8.0.25.jar
│ │ │ │ ├── ognl-3.1.12.jar
│ │ │ │ ├── slf4j-api-1.7.22.jar
│ │ │ │ ├── slf4j-log4j12-1.7.22.jar
│ │ │ │ ├── spring-aop-4.3.6.RELEASE.jar
│ │ │ │ ├── spring-aspects-4.3.6.RELEASE.jar
│ │ │ │ ├── spring-beans-4.3.6.RELEASE.jar
│ │ │ │ ├── spring-context-4.3.6.RELEASE.jar
│ │ │ │ ├── spring-core-4.3.6.RELEASE.jar
│ │ │ │ ├── spring-expression-4.3.6.RELEASE.jar
│ │ │ │ ├── spring-jdbc-4.3.6.RELEASE.jar
│ │ │ │ ├── spring-tx-4.3.6.RELEASE.jar
│ │ │ │ ├── spring-web-4.3.6.RELEASE.jar
│ │ │ │ ├── spring-webmvc-4.3.6.RELEASE.jar
│ │ │ │ ├── taglibs-standard-impl-1.2.5.jar
│ │ │ │ └── taglibs-standard-spec-1.2.5.jar
│ │ │ ├── tld
│ │ │ │ └── commons.tld
│ │ │ └── web.xml
│ │ ├── css
│ │ │ ├── boot-crm.css
│ │ │ ├── bootstrap.min.css
│ │ │ ├── dataTables.bootstrap.css
│ │ │ ├── font-awesome.min.css
│ │ │ ├── metisMenu.min.css
│ │ │ ├── sb-admin-2.css
│ │ │ └── style.css
│ │ ├── fonts
│ │ │ ├── FontAwesome.otf
│ │ │ ├── fontawesome-webfont.eot
│ │ │ ├── fontawesome-webfont.svg
│ │ │ ├── fontawesome-webfont.ttf
│ │ │ └── fontawesome-webfont.woff
│ │ ├── images
│ │ │ └── rightbg.jpg
│ │ ├── index.jsp
│ │ └── js
│ │ ├── bootstrap.min.js
│ │ ├── dataTables.bootstrap.min.js
│ │ ├── jquery-1.11.3.min.js
│ │ ├── jquery.dataTables.min.js
│ │ ├── metisMenu.min.js
│ │ └── sb-admin-2.js
│ ├── build
│ │ └── classes
│ │ ├── applicationContext.xml
│ │ ├── com
│ │ │ └── itheima
│ │ │ ├── common
│ │ │ │ └── utils
│ │ │ │ ├── NavigationTag.class
│ │ │ │ └── Page.class
│ │ │ └── core
│ │ │ ├── dao
│ │ │ │ ├── BaseDictDao.class
│ │ │ │ ├── BaseDictDao.xml
│ │ │ │ ├── CustomerDao.class
│ │ │ │ ├── CustomerDao.xml
│ │ │ │ ├── UserDao.class
│ │ │ │ └── UserDao.xml
│ │ │ ├── interceptor
│ │ │ │ └── LoginInterceptor.class
│ │ │ ├── po
│ │ │ │ ├── BaseDict.class
│ │ │ │ ├── Customer.class
│ │ │ │ └── User.class
│ │ │ ├── service
│ │ │ │ ├── BaseDictService.class
│ │ │ │ ├── CustomerService.class
│ │ │ │ ├── UserService.class
│ │ │ │ └── impl
│ │ │ │ ├── BaseDictServiceImpl.class
│ │ │ │ ├── CustomerServiceImpl.class
│ │ │ │ └── UserServiceImpl.class
│ │ │ └── web
│ │ │ └── controller
│ │ │ ├── CustomerController.class
│ │ │ └── UserController.class
│ │ ├── db.properties
│ │ ├── log4j.properties
│ │ ├── mybatis-config.xml
│ │ ├── resource.properties
│ │ └── springmvc-config.xml
│ ├── config
│ │ ├── applicationContext.out.xml
│ │ ├── applicationContext.xml
│ │ ├── db.properties
│ │ ├── log4j.properties
│ │ ├── mybatis-config.xml
│ │ ├── resource.properties
│ │ └── springmvc-config.xml
│ └── src
│ └── com
│ └── itheima
│ ├── common
│ │ └── utils
│ │ ├── NavigationTag.java
│ │ └── Page.java
│ └── core
│ ├── dao
│ │ ├── BaseDictDao.java
│ │ ├── BaseDictDao.xml
│ │ ├── CustomerDao.java
│ │ ├── CustomerDao.xml
│ │ ├── UserDao.java
│ │ └── UserDao.xml
│ ├── interceptor
│ │ └── LoginInterceptor.java
│ ├── po
│ │ ├── BaseDict.java
│ │ ├── Customer.java
│ │ └── User.java
│ ├── service
│ │ ├── BaseDictService.java
│ │ ├── CustomerService.java
│ │ ├── UserService.java
│ │ └── impl
│ │ ├── BaseDictServiceImpl.java
│ │ ├── CustomerServiceImpl.java
│ │ └── UserServiceImpl.java
│ └── web
│ └── controller
│ ├── CustomerController.java
│ └── UserController.java
├── boot_crm.sql
└── 找例子网_基于ssm的住户管理系统.rar
39 directories, 115 files
评论