基于java Web软件缺陷库系统业务系统设计与实现

基于java Web软件缺陷库系统业务系统设计与实现
博主介绍:翰文编程 专注于Java(springboot ssm 等开发框架) vue  .net  php phython node.js    uniapp 微信小程序 等诸多技术领域和课设项目实战、企业信息化系统建设,从业十八余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了2000+题目解决方法案例  方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
文末下方有源码获取地址

第4章 总体设计

4.1 系统总体模块图

软件缺陷管理系统主要设计了用户管理、菜单、软件缺陷管理管理、审批管理等功能,满足用户在网站上面进行软件缺陷管理的信息浏览与查看,具体功能模块图如4.1所示:

图4.1 系统总体模块图

4.2 数据库层的设计

4.2.1 概念模型设计

将需求分析得到的用户需求抽象为信息结构,即概念模型的过程就是概念结构设计,它是整个数据库设计的关键。


(2)系统中实体E-R图

 菜单信息实体,主要包括 菜单编号,菜单名称,序号,类型,链接,父 等信息实体。如图4.2所示:

图4.2 菜单实体属性图

角色信息实体,主要包括 角色编号,角色名称,介绍 等信息实体。如图4.3所示:

图4.3 角色实体属性图

菜单角色信息实体,主要包括 菜单角色编号,菜单,角色 等信息实体。如图4.5所示:

图4.5 菜单角色实体属性图

用户信息实体,主要包括 用户编号,用户名,密码,姓名,联系电话,联系地址,角色 等信息实体。如图4.6所示:

图4.6用户管理实体属性图

 属性信息实体,主要包括 属性编号,属性名称,属性值,标记 等信息实体。如图4.7所示:

图4.7属性实体属性图

缺陷信息实体,主要包括 缺陷编号,缺陷主题,所属系统,子系统,所属需求,测试环境,优先级,严重等级,缺陷原因,用户,时间,状态,附件,描述,缺陷状态 等信息实体。如图4.7所示:

图4.7 缺陷实体属性图

流程节点信息实体,主要包括 流程节点编号,节点,操作人,节点名称,类型,步骤序号 等信息实体

审批信息实体,主要包括 审批编号,业务,流程节点,用户时间,状态,是否同意,用户,操作人,节点名称 等信息实体.

4.2.2 关系模式设计

一个实体型转换为一个关系模式的集合。实体的属性就是关系的属性,实体的码就是关系的码。

对于实体间的联系则有以下不同的情况:

在软件缺陷管理系统中,实体有菜单实体,角色实体,菜单角色实体,用户实体,属性实体,缺陷实体,流程节点实体,审批实体等实体,他们之间的关系如图4.13所示:

图4.13 实体之间关系图


4.3 本章小结

本章主要介绍的内容是总体设计或者概要设计,介绍了软件缺陷管理系统的设计,主要是在架构设计、总体模块设计和数据库设计的方面介绍的,为进一步的详细设计做准备。


第5章  详细设计

详细设计阶段的任务就是把在总体设计阶段提出的比较抽象概括的解决问题的方法具体化,也就是“应该怎样具体地实现这个系统”。在本阶段将包括数据库的设计和每个模块的详细设计,确定实现模块功能所需要的算法和数据结构。

5.1 后台设计

5.1.1 角色权限设计

普通用户或管理员输入自己的用户账号、密码,通过身份验证后可以进入相应的管理界面首页。管理员管理页面分为菜单信息管理与查看,角色信息管理与查看,菜单角色信息管理与查看,用户信息管理与查看,属性信息管理与查看,缺陷信息管理与查看,流程节点信息管理与查看,审批信息管理与查看模块。

5.1.2 角色验证设计 

当用户需要登录的时候,需要有响应的页面来实现这一功能。登录界面是用来支持用户进行登录功能操作的界面,当在界面中输入普通用户的用户名、密码,就可以通过身份验证进入该系统。 登录界面需要让用户输入用户名、密码。如果是错误登录信息造成的还要显示错误信息。否则,当信息输入和权限选择正确时,将分别将用户导入各自对应的操作界面首页。 用户分为普通用户和管理员两种。每种用户具有不同的权限,能完成不同的操作。普通用户具有查看信息权限夹功能等。管理员用户是系统的最高权限具有系统所有功能的操作。

管理员登录信息验证界面是非常重要的一部分,它接收登录表单提交的信息,并在用户信息表里检验是否存在对应的用户,和判断用户的类型以便获得相应的权限。

5.2 数据库设计

5.2.1 逻辑结构设计

1 菜单( 菜单编号,菜单名称,序号,类型,链接,父 )

2 角色( 角色编号,角色名称,介绍 )

3 菜单角色( 菜单角色编号,菜单,角色 )

4 用户( 用户编号,用户名,密码,姓名,联系电话,联系地址,角色 )

5 属性( 属性编号,属性名称,属性值,标记 )

6 缺陷( 缺陷编号,缺陷主题,所属系统,子系统,所属需求,测试环境,优先级,严重等级,缺陷原因,用户,时间,状态,附件,描述,缺陷状态 )

7 流程节点( 流程节点编号,节点,操作人,节点名称,类型,步骤序号 )

8 审批( 审批编号,业务,流程节点,用户时间,状态,是否同意,用户,操作人,节点名称 )

  

5.2.2 物理结构设计

由各个关系模式和根据需求分析阶段数据字典的数据项描述,给出各数据表结构。

(1)菜单信息表如表5.1所示:

表5.1 菜单信息表

序号

字段名称

数据类型

长度

主键

描述

1

cdid

INTEGER

11

菜单编号

2

cdmc

VARCHAR

40

菜单名称

3

xh

VARCHAR

40

序号

4

lx

VARCHAR

40

类型

5

lj

VARCHAR

40

链接

6

f

VARCHAR

40

(2)角色如表5.2所示:

表5.2 角色表

序号

字段名称

数据类型

长度

主键

描述

1

jsid

INTEGER

11

角色编号

2

jsmc

VARCHAR

40

角色名称

3

js

VARCHAR

40

介绍

(3)菜单角色表如表5.3所示:

表5.3 菜单角色表

序号

字段名称

数据类型

长度

主键

描述

1

cdjsid

INTEGER

11

菜单角色编号

2

cd

VARCHAR

40

菜单

3

js

VARCHAR

40

角色

(4)用户管理表如表5.4所示:

表5.4 用户管理信息表

序号

字段名称

数据类型

长度

主键

描述

1

yhid

INTEGER

11

用户编号

2

yhm

VARCHAR

40

用户名

3

mm

VARCHAR

40

密码

4

xm

VARCHAR

40

姓名

5

lxdh

VARCHAR

40

联系电话

6

lxdz

VARCHAR

40

联系地址

7

js

VARCHAR

40

角色

(5)属性管理详情表如表5.5所示:

表5.5 属性管理详情表

序号

字段名称

数据类型

长度

主键

描述

1

sxid

INTEGER

11

属性编号

2

sxmc

VARCHAR

40

属性名称

3

sxz

VARCHAR

40

属性值

4

bj

VARCHAR

40

标记

(6)缺陷表如表5.6所示:

表5.缺陷表

序号

字段名称

数据类型

长度

主键

描述

1

qxid

INTEGER

11

缺陷编号

2

qxzt

VARCHAR

40

缺陷主题

3

ssxt

VARCHAR

40

所属系统

4

zxt

VARCHAR

40

子系统

5

ssxq

VARCHAR

40

所属需求

6

cshj

VARCHAR

40

测试环境

7

yxj

VARCHAR

40

优先级

8

yzdj

VARCHAR

40

严重等级

9

qxyy

VARCHAR

40

缺陷原因

10

yh

VARCHAR

40

用户

11

sj

VARCHAR

40

时间

12

zt

VARCHAR

40

状态

13

fj

VARCHAR

40

附件

14

ms

VARCHAR

40

描述

15

qxzht

VARCHAR

40

缺陷状态

流程节点

序号

字段名称

数据类型

长度

主键

描述

1

lcjdid

INTEGER

11

流程节点编号

2

jd

VARCHAR

40

节点

3

czr

VARCHAR

40

操作人

4

jdmc

VARCHAR

40

节点名称

5

lx

VARCHAR

40

类型

6

bzxh

VARCHAR

40

步骤序号

审批

序号

字段名称

数据类型

长度

主键

描述

1

spid

INTEGER

11

审批编号

2

yw

VARCHAR

40

业务

3

lcjd

VARCHAR

40

流程节点

4

yhsj

VARCHAR

40

用户时间

5

zt

VARCHAR

40

状态

6

sfty

VARCHAR

40

是否同意

7

yh

VARCHAR

40

用户

8

czr

VARCHAR

40

操作人

9

jdmc

VARCHAR

40

节点名称

6.1 登录模块界面

登录系统首页,出现用户名、密码的输入框,填写用户名和密码点击【提交】按钮,即可登录;具体的登录页面如图6.1所示:

图6.2 登录界面图

6.2 用户管理界面

该功能用于实现对系统用户信息的管理。可以添加、删除和更改用户信息,以及用户信息列表展现,在添加用户信息时,系统会自动查询系统中用户表中的用户编号字段,系统自动将用户表中最大值加1作为该用户表用户记录的用户编号,同时将用户编号,用户名,密码,姓名,联系电话,联系地址,角色 信息添加到用户信息表中;在删除一条用户记录时,先选中一条用户记录,将该条用户记录中的用户编号作为查询条件在用户信息表中进行查询,弹出“确定要删除吗?”的对话框,若是,则执行删除操作,否则退出删除操作;在更改用户记录时,先选中一条用户记录,将用户信息显示在相应的修改页面中,然后更改后保存到用户信息表中;查看用户信息记录时,选中要查看的用户记录,系统根据用户选择用户信息,在详细页面显示用户信息    

6.3  菜单管理管理界面

该功能用于实现对系统菜单信息的管理。可以添加、删除和更改菜单信息,以及菜单信息列表展现,在添加菜单信息时,系统会自动查询系统中菜单表中的菜单编号字段,系统自动将菜单表中最大值加1作为该菜单表菜单记录的菜单编号,同时将菜单编号,菜单名称,序号,类型,链接,父 信息添加到菜单信息表中;在删除一条菜单记录时,先选中一条菜单记录,将该条菜单记录中的菜单编号作为查询条件在菜单信息表中进行查询,弹出“确定要删除吗?”的对话框,若是,则执行删除操作,否则退出删除操作;在更改菜单记录时,先选中一条菜单记录,将菜单信息显示在相应的修改页面中,然后更改后保存到菜单信息表中;查看菜单信息记录时,选中要查看的菜单记录,系统根据用户选择菜单信息,在详细页面显示菜单信息     

6.4 属性管理界面

该功能用于实现对系统属性信息的管理。可以添加、删除和更改属性信息,以及属性信息列表展现,在添加属性信息时,系统会自动查询系统中属性表中的属性编号字段,系统自动将属性表中最大值加1作为该属性表属性记录的属性编号,同时将属性编号,属性名称,属性值,标记 信息添加到属性信息表中;在删除一条属性记录时,先选中一条属性记录,将该条属性记录中的属性编号作为查询条件在属性信息表中进行查询,弹出“确定要删除吗?”的对话框,若是,则执行删除操作,否则退出删除操作;在更改属性记录时,先选中一条属性记录,将属性信息显示在相应的修改页面中,然后更改后保存到属性信息表中;查看属性信息记录时,选中要查看的属性记录,系统根据用户选择属性信息,在详细页面显示属性信息

   

private void insertM(HttpServletRequest request, HttpServletResponse response){//属性添加 shuxingDao dao=new shuxingDao(); shuxing shuxing=new shuxing(); shuxing.setSxid((String)request.getParameter("keyid")); shuxing.setSxmc((String)request.getParameter("sxmc")); shuxing.setSxz((String)request.getParameter("sxz")); shuxing.setBj((String)request.getParameter("bj")); response.setCharacterEncoding("gb2312"); try { dao.insert(shuxing); request.setAttribute("flag", "操作成功"); request.getRequestDispatcher("shuxing/shuxingadd.jsp").forward(request, response); } catch (Exception e) { e.printStackTrace(); } } private void ListM(HttpServletRequest request, HttpServletResponse response){//属性信息列表 ResultSet rs=null; shuxingDao dao = new shuxingDao(); String str=(String)request.getParameter("Page"); String; response.setCharacterEncoding("gb2312"); try{ if(str==null){ str="0"; } String sxmc=(String)request.getParameter("sxmc"); if(sxmc!=null&&!sxmc.equals("")){ //如果属性名称不为空 拼接sql语句 sql+=" and+sxmc+"'";//拼接sql语句 } String sxz=(String)request.getParameter("sxz"); if(sxz!=null&&!sxz.equals("")){ //如果属性值不为空 拼接sql语句 sql+=" and+sxz+"'";//拼接sql语句 } String bj=(String)request.getParameter("bj"); if(bj!=null&&!bj.equals("")){ //如果标记不为空 拼接sql语句 sql+=" and+bj+"'";//拼接sql语句 } rs=dao.qlist(sql); PrintWriter out = response.getWriter(); request.setAttribute("rs", rs); request.getRequestDispatcher("shuxing/shuxinglist.jsp?Page="+str).forward(request, response); }catch(Exception e){ e.toString(); e.printStackTrace(); } } private void PListM(HttpServletRequest request, HttpServletResponse response){//测试信息列表 ResultSet rs=null; shuxingDao dao = new shuxingDao(); System.out.println("alist"); String; response.setCharacterEncoding("gb2312"); try{ rs=dao.qlist(sql); PrintWriter out = response.getWriter(); request.setAttribute("rs", rs); request.getRequestDispatcher("shuxing/shuxingplist.jsp").forward(request, response); }catch(Exception e){ e.toString(); e.printStackTrace(); } }

6.5 缺陷管理界面

该功能用于实现对系统缺陷信息的管理。可以添加、删除和更改缺陷信息,以及缺陷信息列表展现,在添加缺陷信息时,系统会自动查询系统中缺陷表中的缺陷编号字段,系统自动将缺陷表中最大值加1作为该缺陷表缺陷记录的缺陷编号,同时将缺陷编号,缺陷主题,所属系统,子系统,所属需求,测试环境,优先级,严重等级,缺陷原因,用户,时间,状态,附件,描述,缺陷状态 信息添加到缺陷信息表中;在删除一条缺陷记录时,先选中一条缺陷记录,将该条缺陷记录中的缺陷编号作为查询条件在缺陷信息表中进行查询,弹出“确定要删除吗?”的对话框,若是,则执行删除操作,否则退出删除操作;在更改缺陷记录时,先选中一条缺陷记录,将缺陷信息显示在相应的修改页面中,然后更改后保存到缺陷信息表中;查看缺陷信息记录时,选中要查看的缺陷记录,系统根据用户选择缺陷信息,在详细页面显示缺陷信息    

大家点赞、收藏、关注、评论啦 其他的定制服务 商务合作 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者

Read more

Semantic Kernel Python 进阶:Prompt 模板中的函数嵌套调用实战

发布日期: 2025年3月2日 关键词: Semantic Kernel, Python, Prompt Engineering, Function Calling, LLM 阅读时间: 约 15 分钟 前言 Microsoft 的 Semantic Kernel (SK) 提供了一个强大的特性:允许在 Prompt 模板中直接调用其他函数。这意味着你可以在一个 Semantic Function 的 Prompt 中嵌套调用其他 Semantic Functions 或 Native Functions,实现真正的函数式编程范式。 本文将深入讲解 SK Python 中的嵌套调用机制,并通过大量实战示例展示如何构建模块化的 AI 应用。 一、核心概念:Prompt 模板语法 Semantic Kernel

By Ne0inhk
【实战干货】AI时代,个人开发者如何用 Python 实现“黄金”量化交易?

【实战干货】AI时代,个人开发者如何用 Python 实现“黄金”量化交易?

摘要:最近金价狂飙,身边不少朋友都在讨论买黄金。作为一名技术人,我们能不能不靠“直觉”和“跟风”,而是用代码和 AI 模型来帮我们辅助决策?本文将通俗易懂地介绍什么是量化交易,并手把手带你从零开始,用 Python 搭建一个简单的 AI 黄金价格预测模型。 一、 什么是量化交易? 说得高大上一点,量化交易(Quantitative Trading)是“利用数学模型和计算机算法进行投资决策”。 说人话就是: * 传统交易:看新闻、听消息、看K线图,觉得“要涨了”就买,觉得“要跌了”就卖。核心是人的主观判断(容易上头,容易被割)。 * 量化交易:把你的判断逻辑写成代码。比如,“当金价跌破 20 日均线,且 RSI 指标小于 30

By Ne0inhk
【超详细】Python FastAPI 入门:写给新手的“保姆级”教程

【超详细】Python FastAPI 入门:写给新手的“保姆级”教程

前言  作为一名大学生,最近在做 Python Web 开发时发现了一个“宝藏”框架——FastAPI。 以前学 Django 光配置就头大,学 Flask 又不知道怎么写规范。直到遇到了 FastAPI,我才体会到什么叫“写代码像呼吸一样自然”。 这篇文章不讲复杂的原理,只讲最基础、最实用的操作,带你从 0 到 1 跑通第一个 API 接口! 一、FastAPI 是什么 在 Python 的世界里,做网站后台(Web 开发)主要有三巨头: 1. Django:老大哥,功能全但笨重,像一辆重型卡车。 2. Flask:二哥,轻便灵活但插件多,像一辆自行组装的赛车。 3.

By Ne0inhk
Python RESTful API设计终极指南:从理论到企业级实战

Python RESTful API设计终极指南:从理论到企业级实战

目录 摘要 1 引言:为什么RESTful API设计如此重要 1.1 RESTful API的核心价值定位 1.2 RESTful API演进路线图 2 RESTful API设计核心技术原理 2.1 资源设计哲学与实践 2.1.1 资源识别与建模 2.1.2 资源关系建模 2.2 统一接口原则深度解析 2.2.1 HTTP方法语义化使用 2.2.2 状态码语义化设计 2.3 HATEOAS超媒体驱动设计 2.3.1 HATEOAS原理与实现 2.3.2 HATEOAS客户端工作流程

By Ne0inhk