赞
踩
目 录
1绪论 1
1.1课题背景 1
1.2 国内外研究现状 1
1.3 目的和意义 1
1.4 系统设计思想 2
1.5 系统开发环境 2
1.5.1 Spring Tool Suite简介 2
1.5.2 Spring Boot简介 3
1.5.3 JPA技术 3
1.5.4 Maven简介 3
1.5.5 B/S简介 4
2可行性分析 5
2.1 操作可行性 5
2.2 经济可行性分析 5
2.3 技术可行性 5
3需求分析 6
3.1 功能需求分析 6
3.1.1 用例图 6
3.1.2 系统类图 7
3.2 非功能性需求 7
4 总体设计 8
4.1 系统模块总体设计 8
4.2 数据库设计 9
4.2.1 数据库设计概述 9
4.2.2 数据分析 9
4.3数据库的详细设计 9
4.3.1 E-R图 10
4.3.2 数据表的设计 13
5详细设计 17
5.1 系统运行平台设计 17
5.2 系统主界面设计 17
5.3 界面层与前台交互设计 18
5.4 SpringBoot下的Druid数据库连接池 18
5.5 JPA配置 18
5.6 Spring Security配置 18
5.7 DAO组件 20
5.8 功能模块实现 20
5.8.1 管理员管理模块设计与实现 20
5.8.2 货物管理模块 21
5.8.3 供应商管理功能模块 24
5.8.4 会员管理模块 26
5.8.5 仓库管理模块 27
5.8.6 类别管理模块 29
5.8.7 进货单管理模块 30
5.8.8 销售查看模块 31
5.8.9 收银操作模块 32
6测试 34
6.1 概念 34
6.2 测试的任务和目的 34
6.3 软件测试的步骤 34
6.4 功能测试 34
6.5 数据应用测试 35
6.6 测试的安全性 36
6.7 兼容性测试 37
7总结 38
参考文献 39
致谢 40
4总体设计
系统总体设计是指对系统模块规划、系统数据库和系统功能结构的总体设计。为下一步的代码实现提供了指导。
4.1 系统模块总体设计
本系统一共分为8个系统模块,各个模块访问的是同一数据库,但是访问的数据表不同。根据每个模块的功能来设计数据库表与表之间的联系。基于对功能的分析,系统分为8个管理功能模块:
(1)货物管理:用对管理员进行操作,管理员主要有系统管理员、收银员,系统管理员能实现全部操作,而普通用户只能实现收银操作,其他的操作则不可以实现。
(2)仓库管理:对仓库信息的操作,包括按条件查询、修改、增加和删除。
(3)供应商管理:对供应商信息的操作,包括按条件查询、修改、增加和删除。
(4)用户管理:对用户信息的操作,包括按条件查询、修改、增加和删除。
(5)会员管理:用来操作会员信息,能够实现记录、删除和查看会员折扣率电话等信息,通过会员的姓名还可以查询该会员的会员号。
(6)销售统计:实现对生鲜超市单个货物的销售情况的查看。
(7)收银操作:收银操作的实现包括订单保存,计算订单价格,查找会员折扣率等操作。
(8)货物类别管理:对货物类别信息的操作,包括按条件查询、修改、增加和删除。
图4-1 系统总体设计
4.2 数据库设计
4.2.1 数据库设计概述
数据库设计可以为当前的环境构造出最优的数据库模式。创建能更好满足用户的需求的数据库,并且还使它能够有效地操作数据。
应用程序和数据之间的接口就是数据库管理系统。基于概念结构设计,把实体转化为各种关系表。
4.2.2 数据分析
数据分析就是数据库设计的第一步,数据分析需要确定、组织、编制、筛选应用程序所运用的信息。它运用一种特殊方式来获取用户的所有信息,这样便可以将模型直接转变成数据库结构。
只要确定了单个实体以及用户相关的属性,便可以确定实体和关系的性质。所以每个对象都要有完整的描述,而且有自己单独使用的要求,这就要求要确定此实体有没有使用应用程序的需要。
通过实体、关系、属性这三个基本对象,可以实现信息的建模。实体是指一个集合体,该集合体中包括使用和维护的相关特征;属性是指实体的特征和特性;实体之间的一种联系称为关系。
在本项目中,实体包括管理员和员工,管理员是管理者,员工是被管理者,实体要想改变相应的属性,就要透过与其它实体之间的关系来实现。
4.3数据库的详细设计
在详细设计阶段,要确定数据库处理过程的详细算法,明确输入输出的格式,并且完成数据库的逻辑结构设计。
数据库中的概念结构设计是会形成一个独立的概念模型,这个模型独立于具体的数据库系统,所以说它是数据库设计中非常重要的一步。它可以归纳出用户的需求并将这些需求抽象化,从上向下分析,从下向上分析,从一点扩散以及集中混合起来是概念结构设计经常使用的方法。通常,概念模型使用E-R模型来描述。属性、实体、域、码和其相互之间的联系组成了E-R模型,其可以使用E-R(实体-联系)图来表示。E-R图具有表示实体、属性和联系的方法。矩形一般表示实体,椭圆一般表示属性,而实体之间的联系大多使用菱形。三者之间则用无向边相连。无向边上可以注上联系的类型,比如1:1、1:m、n:m。
package com.security; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.builders.WebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import com.service.LoginService; @Configuration @EnableWebSecurity //@EnableGlobalMethodSecurity(prePostEnabled=true) public class SecurityConfiguration extends WebSecurityConfigurerAdapter { @Autowired private LoginService loginService; @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception{ auth.userDetailsService(loginService); // .passwordEncoder(new BCryptPasswordEncoder()); // auth.inMemoryAuthentication().withUser("user").password("password").roles("USER"); } protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .anyRequest().permitAll() // .antMatchers("/css/**","/image/*","/bootstrap/css/**","/font-awesome/**","/js/**","/bootstrap/js/**").permitAll() // .antMatchers("/main","/**/list/**").permitAll() // .antMatchers("/**").hasRole("manage") // .antMatchers("/checkout/**").hasRole("checkout") // // .anyRequest().authenticated() .and() .csrf().disable() //关闭CSRF .formLogin() .loginPage("/login") .loginProcessingUrl("/check") // .usernameParameter("username").passwordParameter("password") .defaultSuccessUrl("/main") .permitAll() .and() .rememberMe().tokenValiditySeconds(1209600).key("mykey") .and() .logout() //指定登出的url .logoutUrl("/logout") //指定登场成功之后跳转的url .logoutSuccessUrl("/login") .permitAll() .and() .headers().frameOptions().sameOrigin() ; } @Override public void configure(WebSecurity web) throws Exception{ super.configure(web); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。