博主简介
作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企互助经验,被多个学校常年聘为校外企业导师,引导学生毕业设计并参与学生毕业答辩引导,有较为丰富的相关经验。期待与各位高校西席、企业讲师以及偕行交换互助
重要内容:Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能与大数据、单片机开发、物联网设计与开发设计、简历模板、学习资料、口试题库、技能互助、就业引导等
业务范围:免费功能设计、开题报告、任务书、中期检查PPT、体系功能实现、代码编写、论文编写和辅导、论文降重、长期答辩答疑辅导、腾讯会议一对一专业讲解辅导答辩、模仿答辩演练、和理解代码逻辑思路等。
收藏点赞不迷路 关注作者有利益
文末获取源码
体系演示录像
文章底部名片,联系我获取更具体的演示视频
体系实际运行结果图
可行性分析
可行性分析是每开发一个项目必不可少的一部分,可行性分析可以直接影响一个体系的存活题目,针对开发意义进行分析,尚有就是是否可以通过所开发的体系来补充传统手工统计模式的不敷,是否能够更好的解决阿博图书馆管理体系存在的题目等,通过对该阿博图书馆管理体系的开发设计,不仅能够逐步镌汰工作人员的工作量,而且还可以进行高效工作和管理。以是该体系的开发实现了最大的意义和价值,在体系完成后,利益是否大过于本钱,是否能够达到预期结果,这些方面都要进行可行性分析,再通太过析之后,就可以决定是否开发此体系。该阿博图书馆管理体系的开发设计中,以下几点进行了可行性分析:技能可行性:通过Java技能的采用,由于该技能不断成熟,以是使用该技能设计阿博图书馆管理体系是具有可行性的。经济可行性:在开发过程中,体系完成后的利益是否大过于开发本钱。操作可行性:阿博图书馆管理体系的开发设计中,方便用户的可操作性和实用性。
体系测试
体系测试是软件开发生命周期中的一个关键阶段,旨在验证整个软件体系在集成后是否满足最初的设计要求和预期功能。它是软件测试中最全面的一种测试类型,涵盖了体系的各个方面,包罗功能、性能、安全性、可靠性等。
体系测试的目的
体系测试的目的是在软件开发生命周期的后期阶段,对整个体系进行全面的评估,以确保它符合预期的需求和质量标准。具体来说,体系测试的目的包罗以下几个方面:1. 验证功能完整性,体系测试的重要目的是验证体系的全部功能是否按预期工作。这包罗检查每个功能模块、各模块之间的交互、输入输出的处置惩罚、以及用户界面的响应,以确保体系在功能上符合需求规格说明书的要求。2. 发现缺陷,体系测试通过模仿各种使用场景和操作,发现体系中的潜伏缺陷和错误。这些缺陷大概包罗功能性题目、性能题目、兼容性题目、大概安全漏洞。通过体系测试,能够在软件发布前发现和修复这些题目,制止在生产环境中出现庞大故障。3. 确保体系集成,体系测试验证各个模块和子体系在集成后的团体表现。纵然各个模块在单元测试和集成测试中表现正常,体系测试仍然必要确保这些模块在整个体系环境中的协同工作没有题目。
体系功能测试
体系功能测试是体系测试的一部分,重要关注验证软件体系的功能是否符合需求规格说明书中的描述。其目的是确保体系的每个功能模块、组件和子体系都能够按照预期实行,并且各个功能模块之间的交互正确无误。
输入数据预期结果实际结果结果分析用户名:guanliyuan 暗码:123456 验证码:正确输入登入体系成功登入体系和估算结果一样用户名:guanliyuan 暗码:111111 验证码:正确输入暗码错误暗码错误,请重新输入暗码和估算结果一样用户名:guanliyuan 暗码:123456 验证码:错误输入验证码错误验证码信息错误和估算结果一样用户名:空 暗码:123456 验证码:正确输入用户名必填请输入用户名和估算结果一样用户名:guanliyuan 暗码:空 验证码:正确输入暗码错误暗码错误,请重新输入暗码和估算结果一样 用户管理功能测试方案:用户管理重要有添加、编辑、删除、查找用户功能。添加用户时,必填项不填,查验体系是否有非空查验;添加已有的用户信息,查验是否提示用户名已被使用;删除用户信息,体系将查验是否进行此操作;更改用户信息,更改用户信息后页面是否可以展示出来。用户管理测试用例如下表所示。
输入数据预期结果实际结果结果分析填入用户基本信息添加成功,在用户列表中显示该用户出现在在列表中和估算结果一样修改用户信息编辑成功,修改信息成功被修改用户信息被修改和估算结果一样选中删除用户体系扣问是否删除用户,确认后用户被删除体系扣问是否删除用户,确认后查找不到用户信息和估算结果一样添加用户时不填用户名提示用户名不能为空提示用户名不能为空和估算结果一样填入已有效户名添加失败,提示用户名重复添加失败,提示用户名重复和估算结果一样 数据库表设计(供参考)
1. 用户表(t_user)
- 描述: 存储用户的基本信息
- 字段: 字段名数据类型主键是否为空描述user_idBIGINT是否用户ID(唯一标识)usernameVARCHAR(50)否否用户名passwordVARCHAR(255)否否暗码emailVARCHAR(100)否否邮箱phoneVARCHAR(20)否是电话号码statusTINYINT否否状态(0-禁用,1-启用)create_timeDATETIME否否创建时间update_timeDATETIME否否更新时间
2. 脚色表(t_role)
- 描述: 存储脚色信息
- 字段: 字段名数据类型主键是否为空描述role_idBIGINT是否脚色ID(唯一标识)role_nameVARCHAR(50)否否脚色名称descriptionVARCHAR(255)否是脚色描述create_timeDATETIME否否创建时间update_timeDATETIME否否更新时间
核心代码展示
- /**
- * 商家
- * 后端接口
- * @author
- * @email
- */
- @RestController
- @Controller
- @RequestMapping("/shangjia")
- public class ShangjiaController {
- private static final Logger logger = LoggerFactory.getLogger(ShangjiaController.class);
- @Autowired
- private ShangjiaService shangjiaService;
- @Autowired
- private TokenService tokenService;
- @Autowired
- private DictionaryService dictionaryService;
- //级联表service
- @Autowired
- private YonghuService yonghuService;
-
- /**
- * 后端修改
- */
- @RequestMapping("/update")
- public R update(@RequestBody ShangjiaEntity shangjia, HttpServletRequest request){
- logger.debug("update方法:,,Controller:{},,shangjia:{}",this.getClass().getName(),shangjia.toString());
- String role = String.valueOf(request.getSession().getAttribute("role"));
- // if(false)
- // return R.error(511,"永远不会进入");
- //根据字段查询是否有相同数据
- Wrapper<ShangjiaEntity> queryWrapper = new EntityWrapper<ShangjiaEntity>()
- .notIn("id",shangjia.getId())
- .andNew()
- .eq("username", shangjia.getUsername())
- .or()
- .eq("shangjia_phone", shangjia.getShangjiaPhone())
- .andNew()
- .eq("shangjia_delete", 1)
- ;
- logger.info("sql语句:"+queryWrapper.getSqlSegment());
- ShangjiaEntity shangjiaEntity = shangjiaService.selectOne(queryWrapper);
- if("".equals(shangjia.getShangjiaPhoto()) || "null".equals(shangjia.getShangjiaPhoto())){
- shangjia.setShangjiaPhoto(null);
- }
- if(shangjiaEntity==null){
- shangjiaService.updateById(shangjia);//根据id更新
- return R.ok();
- }else {
- return R.error(511,"账户或者联系方式已经被使用");
- }
- }
- /**
- * 审核
- */
- @RequestMapping("/shenhe")
- public R shenhe(@RequestBody ShangjiaEntity shangjia, HttpServletRequest request){
- logger.debug("shenhe方法:,,Controller:{},,shangjia:{}",this.getClass().getName(),shangjia.toString());
- // if(shangjia.getShangjiaYesnoTypes() == 2){//通过
- // shangjia.setShangjiaTypes();
- // }else if(shangjia.getShangjiaYesnoTypes() == 3){//拒绝
- // shangjia.setShangjiaTypes();
- // }
- shangjia.setShangjiaShenheTime(new Date());//审核时间
- shangjiaService.updateById(shangjia);//审核
- return R.ok();
- }
- /**
- * 删除
- */
- @RequestMapping("/delete")
- public R delete(@RequestBody Integer[] ids){
- logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
- ArrayList<ShangjiaEntity> list = new ArrayList<>();
- for(Integer id:ids){
- ShangjiaEntity shangjiaEntity = new ShangjiaEntity();
- shangjiaEntity.setId(id);
- shangjiaEntity.setShangjiaDelete(2);
- list.add(shangjiaEntity);
- }
- if(list != null && list.size() >0){
- shangjiaService.updateBatchById(list);
- }
- return R.ok();
- }
-
- /**
- * 登录
- */
- @IgnoreAuth
- @RequestMapping(value = "/login")
- public R login(String username, String password, String captcha, HttpServletRequest request) {
- ShangjiaEntity shangjia = shangjiaService.selectOne(new EntityWrapper<ShangjiaEntity>().eq("username", username));
- if(shangjia==null || !shangjia.getPassword().equals(password))
- return R.error("账号或密码不正确");
- else if(shangjia.getShangjiaDelete() != 1)
- return R.error("账户已被删除");
- else if(shangjia.getShangjiaYesnoTypes() == 1)
- return R.error("请等待审核结果");
- else if(shangjia.getShangjiaYesnoTypes() == 3)
- return R.error("账户审核已被拒绝,有疑问请联系服务人员");
- // // 获取监听器中的字典表
- String token = tokenService.generateToken(shangjia.getId(),username, "shangjia", "商家");
- R r = R.ok();
- r.put("token", token);
- r.put("role","商家");
- r.put("username",shangjia.getShangjiaName());
- r.put("tableName","shangjia");
- r.put("userId",shangjia.getId());
- return r;
- }
- /**
- * 注册
- */
- @IgnoreAuth
- @PostMapping(value = "/register")
- public R register(@RequestBody ShangjiaEntity shangjia){
- // ValidatorUtils.validateEntity(user);
- Wrapper<ShangjiaEntity> queryWrapper = new EntityWrapper<ShangjiaEntity>()
- .eq("username", shangjia.getUsername())
- .or()
- .eq("shangjia_phone", shangjia.getShangjiaPhone())
- .andNew()
- .eq("shangjia_delete", 1)
- ;
- ShangjiaEntity shangjiaEntity = shangjiaService.selectOne(queryWrapper);
- if(shangjiaEntity != null)
- return R.error("账户或者联系方式已经被使用");
- shangjia.setShangjiaXingjiTypes(1);
- shangjia.setNewMoney(0.0);
- shangjia.setShangjiaYesnoTypes(1);
- shangjia.setShangjiaDelete(1);
- shangjia.setCreateTime(new Date());
- shangjiaService.insert(shangjia);
- return R.ok();
- }
- /**
- * 重置密码
- */
- @GetMapping(value = "/resetPassword")
- public R resetPassword(Integer id){
- ShangjiaEntity shangjia = new ShangjiaEntity();
- shangjia.setPassword("123456");
- shangjia.setId(id);
- shangjiaService.updateById(shangjia);
- return R.ok();
- }
- /**
- * 忘记密码
- */
- @IgnoreAuth
- @RequestMapping(value = "/resetPass")
- public R resetPass(String username, HttpServletRequest request) {
- ShangjiaEntity shangjia = shangjiaService.selectOne(new EntityWrapper<ShangjiaEntity>().eq("username", username));
- if(shangjia!=null){
- shangjia.setPassword("123456");
- boolean b = shangjiaService.updateById(shangjia);
- if(!b){
- return R.error();
- }
- }else{
- return R.error("账号不存在");
- }
- return R.ok();
- }
- /**
- * 获取用户的session用户信息
- */
- @RequestMapping("/session")
- public R getCurrShangjia(HttpServletRequest request){
- Integer id = (Integer)request.getSession().getAttribute("userId");
- ShangjiaEntity shangjia = shangjiaService.selectById(id);
- if(shangjia !=null){
- //entity转view
- ShangjiaView view = new ShangjiaView();
- BeanUtils.copyProperties( shangjia , view );//把实体数据重构到view中
- //修改对应字典表字段
- dictionaryService.dictionaryConvert(view, request);
- return R.ok().put("data", view);
- }else {
- return R.error(511,"查不到数据");
- }
- }
- /**
- * 退出
- */
- @GetMapping(value = "logout")
- public R logout(HttpServletRequest request) {
- request.getSession().invalidate();
- return R.ok("退出成功");
- }
- }
复制代码 数据库脚本
- CREATE TABLE `yonghu` (
- `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
- `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `yonghuming` varchar(200) NOT NULL COMMENT '用户名',
- `mima` varchar(200) NOT NULL COMMENT '密码',
- `xingming` varchar(200) DEFAULT NULL COMMENT '姓名',
- `xingbie` varchar(200) DEFAULT NULL COMMENT '性别',
- `touxiang` varchar(200) DEFAULT NULL COMMENT '头像',
- `shouji` varchar(200) DEFAULT NULL COMMENT '手机',
- `shenfenzheng` varchar(200) DEFAULT NULL COMMENT '身份证',
- PRIMARY KEY (`id`),
- UNIQUE KEY `yonghuming` (`yonghuming`)
- ) ENGINE=InnoDB AUTO_INCREMENT=1616222324596 DEFAULT CHARSET=utf8mb3 COMMENT='用户';
- CREATE TABLE `messages` (
- `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
- `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- `userid` bigint NOT NULL COMMENT '留言人id',
- `username` varchar(200) DEFAULT NULL COMMENT '用户名',
- `content` longtext NOT NULL COMMENT '留言内容',
- `reply` longtext COMMENT '回复内容',
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB AUTO_INCREMENT=1616222424131 DEFAULT CHARSET=utf8mb3 COMMENT='留言板';
- CREATE TABLE `token` (
- `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
- `userid` bigint NOT NULL COMMENT '用户id',
- `username` varchar(100) NOT NULL COMMENT '用户名',
- `tablename` varchar(100) DEFAULT NULL COMMENT '表名',
- `role` varchar(100) DEFAULT NULL COMMENT '角色',
- `token` varchar(200) NOT NULL COMMENT '密码',
- `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
- `expiratedtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '过期时间',
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3 COMMENT='token表';
复制代码 找我做步调,有什么保障?
我本人就是科技工作室负责人,步调大部分由博主亲自带领主导开发完成,页面设计、接口设计多由博主个人为广大需求者定制开发,假如必要其他功能,也可以联系我进行定制开发,找我们做的步调项目,都享有代码讲解服务,会议博主亲自讲解,可以全程灌音录屏!这就是我们的保障,团队开发让您更省心省力,得到更大的保障!!!
联系我们
大家点赞、收藏、关注、评论 啦
查看 |