广西茶叶网站建设,销售产品网站有哪些,长沙网动网络科技有限公司,网销都是在那些网站做推广末尾获取源码 开发语言#xff1a;Java Java开发工具#xff1a;JDK1.8 后端框架#xff1a;SSM 前端#xff1a;采用JSP技术开发 数据库#xff1a;MySQL5.7和Navicat管理工具结合 服务器#xff1a;Tomcat8.5 开发软件#xff1a;IDEA / Eclipse 是否Maven项目#x… 末尾获取源码 开发语言Java Java开发工具JDK1.8 后端框架SSM 前端采用JSP技术开发 数据库MySQL5.7和Navicat管理工具结合 服务器Tomcat8.5 开发软件IDEA / Eclipse 是否Maven项目是 目录
一、项目简介
二、系统功能
三、系统项目截图
设计师管理
施工方管理
用户信息管理
图纸信息管理
已接订单管理
公告管理
四、核心代码
登录相关
文件上传
封装
五、系统测试
概念和意义
特性
重要性
测试方法
功能测试
可用性测试
性能测试
测试分析
测试结果分析 一、项目简介
随着信息技术在管理上越来越深入而广泛的应用管理信息系统的实施在技术上已逐步成熟。本文介绍了建筑装修图纸管理平台的开发全过程。通过分析高校学生综合素质评价管理方面的不足创建了一个计算机管理建筑装修图纸管理平台的方案。文章介绍了建筑装修图纸管理平台的系统分析部分包括可行性分析等系统设计部分主要介绍了系统功能设计和数据库设计。
本建筑装修图纸管理平台管理员用户设计师施工方。管理员功能有个人中心管理员管理设计师管理施工方管理用户管理图纸信息管理已接订单管理基础数据管理轮播图管理公告管理。用户可以看到图纸然后预定施工方审核。因而具有一定的实用性。
本站是一个B/S模式系统采用SSM框架MYSQL数据库设计开发充分保证系统的稳定性。系统具有界面清晰、操作简单功能齐全的特点使得建筑装修图纸管理平台管理工作系统化、规范化。 二、系统功能
本系统是基于B/S架构的网站系统设计的功能结构图如下图所示 三、系统项目截图
设计师管理
建筑装修图纸管理平台的系统管理员可以对设计师信息添加修改删除以及查询操作。 施工方管理
系统管理员可以查看对施工方信息进行添加修改删除以及查询操作。 用户信息管理
系统管理员可以查看对用户信息进行添加修改删除以及查询操作。 图纸信息管理
系统管理员可以查看对图纸信息进行添加修改删除以及查询操作。 已接订单管理
系统管理员可以查看已接订单。 公告管理
系统管理员可以查看对公告信息进行添加修改删除以及查询操作。 四、核心代码
登录相关 package com.controller;import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;/*** 登录相关*/
RequestMapping(users)
RestController
public class UserController{Autowiredprivate UserService userService;Autowiredprivate TokenService tokenService;/*** 登录*/IgnoreAuthPostMapping(value /login)public R login(String username, String password, String captcha, HttpServletRequest request) {UserEntity user userService.selectOne(new EntityWrapperUserEntity().eq(username, username));if(usernull || !user.getPassword().equals(password)) {return R.error(账号或密码不正确);}String token tokenService.generateToken(user.getId(),username, users, user.getRole());return R.ok().put(token, token);}/*** 注册*/IgnoreAuthPostMapping(value /register)public R register(RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapperUserEntity().eq(username, user.getUsername())) !null) {return R.error(用户已存在);}userService.insert(user);return R.ok();}/*** 退出*/GetMapping(value logout)public R logout(HttpServletRequest request) {request.getSession().invalidate();return R.ok(退出成功);}/*** 密码重置*/IgnoreAuthRequestMapping(value /resetPass)public R resetPass(String username, HttpServletRequest request){UserEntity user userService.selectOne(new EntityWrapperUserEntity().eq(username, username));if(usernull) {return R.error(账号不存在);}user.setPassword(123456);userService.update(user,null);return R.ok(密码已重置为123456);}/*** 列表*/RequestMapping(/page)public R page(RequestParam MapString, Object params,UserEntity user){EntityWrapperUserEntity ew new EntityWrapperUserEntity();PageUtils page userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));return R.ok().put(data, page);}/*** 列表*/RequestMapping(/list)public R list( UserEntity user){EntityWrapperUserEntity ew new EntityWrapperUserEntity();ew.allEq(MPUtil.allEQMapPre( user, user)); return R.ok().put(data, userService.selectListView(ew));}/*** 信息*/RequestMapping(/info/{id})public R info(PathVariable(id) String id){UserEntity user userService.selectById(id);return R.ok().put(data, user);}/*** 获取用户的session用户信息*/RequestMapping(/session)public R getCurrUser(HttpServletRequest request){Long id (Long)request.getSession().getAttribute(userId);UserEntity user userService.selectById(id);return R.ok().put(data, user);}/*** 保存*/PostMapping(/save)public R save(RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapperUserEntity().eq(username, user.getUsername())) !null) {return R.error(用户已存在);}userService.insert(user);return R.ok();}/*** 修改*/RequestMapping(/update)public R update(RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);userService.updateById(user);//全部更新return R.ok();}/*** 删除*/RequestMapping(/delete)public R delete(RequestBody Long[] ids){userService.deleteBatchIds(Arrays.asList(ids));return R.ok();}
}文件上传
package com.controller;import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import com.entity.EIException;
import com.service.ConfigService;
import com.utils.R;/*** 上传文件映射表*/
RestController
RequestMapping(file)
SuppressWarnings({unchecked,rawtypes})
public class FileController{Autowiredprivate ConfigService configService;/*** 上传文件*/RequestMapping(/upload)public R upload(RequestParam(file) MultipartFile file,String type) throws Exception {if (file.isEmpty()) {throw new EIException(上传文件不能为空);}String fileExt file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(.)1);File path new File(ResourceUtils.getURL(classpath:static).getPath());if(!path.exists()) {path new File();}File upload new File(path.getAbsolutePath(),/upload/);if(!upload.exists()) {upload.mkdirs();}String fileName new Date().getTime().fileExt;File dest new File(upload.getAbsolutePath()/fileName);file.transferTo(dest);FileUtils.copyFile(dest, new File(C:\\Users\\Desktop\\jiadian\\springbootl7own\\src\\main\\resources\\static\\upload/fileName));if(StringUtils.isNotBlank(type) type.equals(1)) {ConfigEntity configEntity configService.selectOne(new EntityWrapperConfigEntity().eq(name, faceFile));if(configEntitynull) {configEntity new ConfigEntity();configEntity.setName(faceFile);configEntity.setValue(fileName);} else {configEntity.setValue(fileName);}configService.insertOrUpdate(configEntity);}return R.ok().put(file, fileName);}/*** 下载文件*/IgnoreAuthRequestMapping(/download)public ResponseEntitybyte[] download(RequestParam String fileName) {try {File path new File(ResourceUtils.getURL(classpath:static).getPath());if(!path.exists()) {path new File();}File upload new File(path.getAbsolutePath(),/upload/);if(!upload.exists()) {upload.mkdirs();}File file new File(upload.getAbsolutePath()/fileName);if(file.exists()){/*if(!fileService.canRead(file, SessionManager.getSessionUser())){getResponse().sendError(403);}*/HttpHeaders headers new HttpHeaders();headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); headers.setContentDispositionFormData(attachment, fileName); return new ResponseEntitybyte[](FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);}} catch (IOException e) {e.printStackTrace();}return new ResponseEntitybyte[](HttpStatus.INTERNAL_SERVER_ERROR);}}封装
package com.utils;import java.util.HashMap;
import java.util.Map;/*** 返回数据*/
public class R extends HashMapString, Object {private static final long serialVersionUID 1L;public R() {put(code, 0);}public static R error() {return error(500, 未知异常请联系管理员);}public static R error(String msg) {return error(500, msg);}public static R error(int code, String msg) {R r new R();r.put(code, code);r.put(msg, msg);return r;}public static R ok(String msg) {R r new R();r.put(msg, msg);return r;}public static R ok(MapString, Object map) {R r new R();r.putAll(map);return r;}public static R ok() {return new R();}public R put(String key, Object value) {super.put(key, value);return this;}
}五、系统测试
概念和意义
测试的定义程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与目的可以描述为
目的发现程序的错误
任务通过在计算机上执行程序暴露程序中潜在的错误。
另一个预测是相关的术语叫纠错(Debugging)。它的目的与任务可以规定为
目的定位和纠正错误
任务消除软件故障保证程序的可靠运行。测试与纠错的关系可以用图6-1的数据流图来说明。图中表明每一次测试都要准备好若干必要的测试数据与被测试程序一道送入计算机执行。通常把一次程序执行需要的测试数据称为一个“测试用例(Test Case)。每一个测试用例产生一个相应的“测试结果”。如果它与“期望结果”不想符合便说明程序中存在错误需要用纠错来改正。 特性
1挑剔性
测试是为了证明程序有错而不是证明程序无错。因此对于被测程序就是要“纯毛求疵”就是要“鸡蛋里挑骨头”。
2复杂性
测试仪程序则比较容易这其实是一个误区。设计测试用力是一项需要细致和高度技巧的高能工作稍有不慎就会顾此失彼发生不应用得数楼。
3不彻底性
实际测试都是不彻底的当然不能够保证测试后的程序不存在遗漏的错误。
4经济性
通场这种测试称为“选择测试Selective Testing”。为了降低测试成本选择测试用力是应注意遵守“经济性”的原则。
重要性
软件测试在软件生命周期中占据重要的地位在传统的瀑布模型中软件测试学仅处于运行维护阶段之前是软件产品交付用户使用之前保证软件质量的重要手段。近来软件工程界趋向于一种新的观点即认为软件生命周期每一阶段中都应包含测试从而检验本阶段的成果是否接近预期的目标尽可能早的发现错误并加以修正如果不在早期阶段进行测试错误的延时扩散常常会导致最后成品测试的巨大困难。
测试方法
首先我们来说界面测试界面测试是为了使程序在不同的的操作平台上能够运行界面并且能够保持原来的风格。我把完整程序拷贝到Windows 7环境下似的程序运行正常运行界面上的字体图片等设置都能够保持得非常好。不出现字体变形等情况
其次进行功能测试。该系统测试采用的是单元测试集成测试完善性测试等多种方式进行测试。
经过测试所有功能都能得以实现没有任何变形。至此在功能的测试上也已经比较圆满的完成了。
由于经验不足写代码时出现了一些考虑不周的系统缺陷写代码的时候会出现与设想不一致比如说代码不规范导致接口与接口之间出现问题功能与客户的要求不符合这样导致产品不能过关无法交付。所以产品在上线前必须反复测试经过反复测试修改再测试再修改产品才能够不断完善。在整个系统测试中根据需求文档和设计文档逐一对功能进行检测并写好测试用例有效避免残片缺陷因为产品出现缺陷不仅影响功能而且可以导致数据的不准确导致产品质量的降低经过测试才能使得产品的稳定性和成熟度得到极大的提升产品质量也才有保证。
功能测试
功能测试主要包括五项内容适用性、准确性、可操作性、依从性、安全性。
本系统功能测试如表所示 系统功能测试 测试内容 测试结果 适用性 好 准确性 好 可操作性 好 依从性 好 安全性 好
可用性测试
可用性测试用于检测系统的可操作性、可理解性、可学习性等方面内容。具体测试方面如表所示。
系统可用性测试 测试项 测试人员的评价 窗口移动、大小改变、关闭等操作是否正常 是 操作模块是否友好 是 模块、提示内容等文字描述是否正确 是 模块布局是否协调、合理 是 模块的状态是否正确对选中项能否发生对应切换 是 鼠标、键盘操作是否支持 是 所需数据项是否正确显示 是 操作流程是否合理 是 是否提供帮助信息 是
性能测试
性能测试主要通过模拟系统运行环境测试系统性能是否符合客户需求。性能测试的重要技术指标就是系统运行速度、网络响应时间和支持并发节点数。
1系统运行速度通过在不同计算机上试运行本系统没有发现有任何迟滞、停顿现象。
2网络响应时间网络响应时间主要包括网络最小响应时间、平均响应时间、最大响应时间三个参数。经过测试在网络运营良好状态下NBA局域网内响应时间三参数为1/2/6sNBA外网响应时间三参数为3/7/12s符合客户需求属于用户心理可承受范围。
3支持并发节点数经过模拟环境测试本系统在并发节点达46个时网络运营速度会发生较大波动延迟时间10秒左右符合客户需求。
测试分析
本网站设计时借鉴了国内外优秀网站的优点从界面到系统设计都保证了用户能够方便操作。系统的主要特点和优点归纳如下
1本系统用的移置性和针对性都比较高因为针对性高可以提供更好的服务而移置性可以在多个系统上运行更给客户带来了极大的方便。
2该完整内容全面管理方便可以及时的全面的处理各种错误异常这样避免了很多因用户的马虎操作而出现的失误其操作方便用户界面友好能够上网的人都可以很好的进行操作。
测试结果分析
经过对上述测试结果分析本系统符合用户需求。所有基本功能点实现操作简单操作流程简单合理产品运行性能良好是一款值得推广的建筑装修图纸管理平台。