想找个专业做网站公司,wordpress fluxus下载,微信小程序推广引流怎么做,微信公众号如何开通小程序摘要 随着信息技术在管理上越来越深入而广泛的应用#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了个人证书管理系统的开发全过程。通过分析个人证书管理系统管理的不足#xff0c;创建了一个计算机管理个人证书管理系统的方案。文章介绍了个人证书管理系统的系… 摘要 随着信息技术在管理上越来越深入而广泛的应用管理信息系统的实施在技术上已逐步成熟。本文介绍了个人证书管理系统的开发全过程。通过分析个人证书管理系统管理的不足创建了一个计算机管理个人证书管理系统的方案。文章介绍了个人证书管理系统的系统分析部分包括可行性分析等系统设计部分主要介绍了系统功能设计和数据库设计。 本个人证书管理系统有管理员和普通用户两个角色。管理员功能有后台首页、系统用户管理证书分类管理、证书信息管理、系统管理、通知公告管理等。用户功能有首页、通知公告、证书信息、我的账户、个人中心等。因而具有一定的实用性。 本站是一个B/S模式系统采用Spring Boot框架MYSQL数据库设计开发充分保证系统的稳定性。系统具有界面清晰、操作简单功能齐全的特点使得个人证书管理系统管理工作系统化、规范化。本系统的使用使管理人员从繁重的工作中解脱出来实现无纸化办公能够有效的提高个人证书管理系统管理效率。 关键词个人证书管理系统Springboot框架Java技术 Springboot Personal Certificate Management System abstract With the deepening and widespread application of information technology in management, the implementation of management information systems has gradually matured in technology. This article introduces the entire development process of a personal certificate management system. By analyzing the shortcomings of personal certificate management system management, a computer managed personal certificate management system scheme has been created. The article introduces the system analysis part of the personal certificate management system, including feasibility analysis, etc. The system design part mainly introduces the system function design and database design. This personal certificate management system has two roles: administrator and regular user. The administrator functions include backend homepage, system user management, certificate classification management, certificate information management, system management, notification and announcement management, etc. The user functions include homepage, notification announcements, certificate information, my account, personal center, etc. Therefore, it has certain practicality. This site is a B/S mode system, using the Spring Boot framework and MYSQL database design and development to fully ensure the stability of the system. The system has the characteristics of clear interface, simple operation, and complete functions, making the management of personal certificate management system systematic and standardized. The use of this system frees management personnel from heavy work and enables paperless office work, effectively improving the efficiency of personal certificate management system management. Keywords: personal certificate management system, Springboot framework, Java technology; 目 录 摘要 第1章 绪 论 1.1课题背景 1.2 研究意义 1.3研究方法 1.4 开发技术 1.4.1 JAVA技术 第2章 系统分析 2.1 可行性分析 2.2总体设计原则 2.3 系统需求分析 2.4 业务流程分析 第3章 系统设计 3.1 系统概要设计 3.2系统结构设计 3.3 数据库设计 表access_token (登陆访问时长) 表auth (用户权限管理) 表certificate_classification (证书分类) 表certificate_information (证书信息) 表collect (收藏) 表comment (评论) 表hits (用户点击) 表notice (公告) 表praise (点赞) 表regular_users (普通用户) 表sensitive_vocabulary (敏感词汇) 表slides (轮播图) 表upload (文件上传) 表user (用户账户用于保存用户登录信息) 表user_group (用户组用于用户前端身份和鉴权) 第4章系统实现 4.1用户功能模块 4.2管理员功能模块 第5章软件测试 5.1软件测试的重要性 5.2测试实例的研究与选择 5.3测试环境与测试条件 5.4系统运行情况 5.5系统评价 第6章 总结 参考文献 致 谢 绪 论
1.1课题背景
随着数字化转型的推进越来越多的个人和组织开始依赖数字证书来进行身份验证、数据加密和安全通信。个人证书管理系统的研究旨在提供一种便捷、安全的方式来管理和使用个人证书保障信息安全和隐私保护个人证书有其特定的生命周期包括生成、颁发、更新和撤销等过程。研究个人证书管理系统可以帮助个人更好地管理证书的各个阶段确保证书的有效性和合规性。
传统的个人证书管理方式往往需要依赖复杂的命令行工具或专业知识对普通用户来说较为繁琐。通过研究开发基于Spring Boot的个人证书管理系统可以提供直观易用的用户界面和简化的操作流程提升用户体验和操作效率。
1.2 研究意义
提高个人证书管理效率:个人证书管理涉及到个人身份信息、资质认证等敏感数据通过研究和开发个人证书管理系统可以提供一种便捷、高效的方式来管理和维护个人证书提高证书的生成、颁发和验证的效率减少人力和时间成本。
加强个人信息安全保障:个人证书管理系统可以采用各种安全技术来确保个人身份信息的安全性例如加密算法、数字签名等。通过合理的设计和实现可以有效防止个人证书被伪造、篡改或盗用提高个人信息的安全保障水平。
便于个人证书的使用和共享:个人证书管理系统可以提供统一的接口和标准方便个人证书的使用和共享。通过该系统个人可以方便地使用自己的证书进行身份认证、电子签名等操作并且可以将证书共享给其他需要的人或机构进一步提升证书的价值和应用范围。
推动数字化社会发展:个人证书管理系统是数字化社会建设的重要组成部分。通过研究和开发该系统可以促进数字化社会的发展推动各种电子服务的普及和应用提升社会治理和公共服务的效率和便利性。
总之研究和开发个人证书管理系统在Spring Boot框架下具有重要的实际意义和应用价值对于提高证书管理效率、加强个人信息安全保障、便于证书使用和共享以及推动数字化社会发展等方面都具有积极作用。 1.3研究方法
首先通过引擎搜索或者查阅相关文献资料了解了本系统开发的背景以及设计系统的意义所在收集用户需求信息。其次在开发工具上最终确定是基于Mysql数据库在Java的Springboot框架设计的基础上实现设计出系统大致的功能模块。主要从方便系统用户和系统管理员的角度进行分析明确该系统应该具有的功能。最终是测试系统通过用例测试发现存在的问题并找到解决的方案。利用现有的开发平台结合自己所学的知识在老师的指导帮助下来完成该设计确保系统的可用性、实用性。
1.4 开发技术
本系统前端部分基于MVVM模式进行开发采用B/S模式后端部分基于Java的Springboot框架进行开发。
前端部分前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信Element UI组件库使页面快速成型项目前端通过栅格布局实现响应式可适应PC端、平板端、手机端等不同屏幕大小尺寸的完美布局展示。
后端部分采用Springboot作为开发框架同时集成MyBatis、Redis等相关技术。
1.4.1 JAVA技术
JAVA语言是目前软件市场上应用最广泛的语言开发程序。可以在多种平台上运用的兼容性比较强适应市面上大多数操作系统不会出现乱码的现像其扩展性和维护性都更好具有分析问题和解决问题的能力是面向过程的程序设计方便我们编写的代码更强壮。
JAVA相对其它语言来说比较简单编译起来更方便一些安全可靠性高。不完全统计现在全世界大约有2000多万人在使用它JAVA既可以镶嵌使用又可以独力的使用。JAVA大致可以分成两个部分一种部分是JAVA负责的编译另一种是JAVA负责的运行。JAVA和C语言很相像但JAVA在编程时是一种以对象为导向的方式来进行编译的使得编出来的软件可以单机使用也可以在互联网上使用检查出错更为方便。JAVA分布式、体系结构中立的特点也使得其存储更快编议更简单。面向对象包括四个特点一是封装就是说在定义类的时候可以实现一定的功能和属性。二是抽象属于类的一种可以把一个具有共同属性的类封装在一个抽象里便于简单编议。三是继承顾名思义就是带有前者的特性。还有一个就是多态的特点可以多种一起运用表现了它可扩展性好。 1.4.2 MVVM模式
MVVM模式是常用的开发模式主要是在代码实现上将其分为M层、V层和C层。
视图View代表用户交互界面一个 Web 应用就可能有很多的界面在 MVVM 模式中视图仅仅处理的只有数据采集、处理还有用户的请求 并不包括业务流程的处理业务流程由模型Model来处理。
模型Model就是业务流程/状态的处理及业务规则的制定。模型处理业务流程的过程其它层是无法看见了的它就像黑箱子在接受视图请求的数据之后然后返回最终的处理结果。MVVM 最主要的核心就是业务模型的设计一个典型的应用例子就是目前流行的 EJB 模型它从应用技术实现的角度对模型做了进一步的划分以便充分利用现有的组件但是它不能作为应用设计模型的框架。
控制器Controller可以理解为接收用户的请求然后视图和模型匹配在一起一起再完成用户请求。它有非常明显的作用在划分控制层上可以很清晰地告诉你它就是一个分发器选择什么样的模型、视图可以完成用户的什么样的请求。控制层不做所有的数据处理比如说用户点击一个连接控制层接受到请求之后并不处理业务信息它只是向模型传递用户的信息同时告诉模型做什么然后选择符合需求的视图返回给用户。
1.4.3 B/S结构
B/SBrowser/Server比前身架构更为省事的架构。它借助Web server完成数据的传递交流。只需要下载浏览器作为客户端那么工作就达到“瘦身”效果 不需要考虑不停装软件的问题。
1.4.4 Spring boot框架
Spring框架是Java平台上的一种开源应用框架提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制但其在Java应用中的频繁使用让它备受青睐以至于后来让它作为EJBEnterpriseJavaBeans模型的补充甚至是替补。Spring框架为开发提供了一系列的解决方案比如利用控制反转的核心特性并通过依赖注入实现控制反转来实现管理对象生命周期容器化利用面向切面编程进行声明式的事务管理整合多种持久化技术管理数据访问提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转IOC特性IOC旨在方便项目维护和测试它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期容器可以通过扫描XML文件或类上特定Java注解来配置对象开发者可以通过依赖查找或依赖注入来获得对象。Spring框架具有面向切面编程AOP框架SpringAOP框架基于代理模式同时运行时可配置AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性虽无法与AspectJ框架相比但通过与AspectJ的集成也可以满足基本需求。Spring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制使本地和全局事务以及嵌套事务能够与保存点一起工作并且几乎可以在Java平台的任何环境中工作。Spring集成多种事务模板系统可以通过事务模板、XML或Java注解进行事务配置并且事务框架集成了消息传递和缓存等功能。Spring的数据访问框架解决了开发人员在应用程序中使用数据库时遇到的常见困难。它不仅对Java:JDBC、iBATS/MyBATIs、Hibernate、Java数据对象JDO、ApacheOJB和ApacheCayne等所有流行的数据访问框架中提供支持同时还可以与Spring的事务管理一起使用为数据访问提供了灵活的抽象。Spring框架最初是没有打算构建一个自己的WebMVC框架其开发人员在开发过程中认为现有的StrutsWeb框架的呈现层和请求处理层之间以及请求处理层和模型之间的分离不够于是创建了SpringMVC。
1.4.5 Mysql数据库
Mysql 经过多次的更新功能层面已经非常的丰富和完善了从Mysql4版本到5版本进行了比较大的更新在商业的实际使用中取得了很好的实际应用效果。最新版本的Mysql支持对信息的压缩同时还能进行加密能更好的满足对信息安全性的需求。同时经过系统的多次更新数据库自身的镜像功能也得到了很大的增强运行的流畅度和易用性方面有了不小的进步驱动的使用和创建也更加的高效快捷。最大的变动还是进行了空间信息的显示优化能更加方便的在应用地图上进行坐标的标注和运算。强大的备份功能也保证了用户使用的过程会更加安心同时支持的Office特性还支持用户的自行安装和使用。在信息的显示形式上也进行了不小的更新增加了两个非常使用的显示区一个是信息区对表格和文字进行了分类处理界面的显示更加清爽和具体。第二是仪表的信息控件能在仪表信息区进行信息的显示同时还能进行多个信息的比对为用户的实际使用带来了很大的便捷。
针对本文中设计的个人证书管理系统在实际的实现过程中最终选择Mysql数据库的主要原因在于在企业的应用系统应用及开发的过程中会存在大量的数据库比较频繁的操作而且数据的安全性要求也是非常的高。综合这些因素最终选择安全性系数比较高的Mysql来对个人证书管理系统后台数据进行存储操作。
系统分析
2.1 可行性分析
可行性分析的目的是确定一个系统是否有必要开发、确定系统是否能以最小的代价实现。其工作主要有三个方面分别是技术、经济和社会三方面的可行性。我会从这三个方面对个人证书管理系统进行详细的分析。
2.1.1技术可行性
该系统主要使用Springboot框架啊和MySQL数据库进行开发Java易于学习和使用灵活。在校期间也接触过Springboot和MySQL数据库的课程对此有一定的开发经验因此开发难度不高所以从技术上来说是可行的。
2.1.2经济可行性
本系统设计所选择的开发工具和服务器都是免费的开源软件又或者是适合学生使用的免费版本并不需要支付费用而且由作者本人单独完成也不存在团队费用几乎没有经济成本具备经济可行性。
2.1.3社会可行性 社会可行性主要包括法律和用户两个方面下面将从这两方面进行分析。
(1)法律因素
本系统是学习开发所制作的程序并不用作商业用途是在根据实际调研的结果结合现有的校园交流论坛后得出的而且系统制作的全部过程都是在个人的工作电脑中完成的使用的都是开源和免费的开发环境、分析软件和数据库不存在侵权问题。
(2)用户可行性
操作人员或者客户只需要具备一定的windows电脑操作常识不需要精通计算机技能。此外系统管理人员只需要在windows常识之上再熟悉下使用Tomcat服务器的操作流程只要掌握一定的计算机知识即可在正式上线运营之前仅需要对操作人员进行简单的熟悉流程培训即可。所以从用户可行性上也是可行的。
2.2总体设计原则
一个系统要在开发和维护的过程中方便使用必须采取一定的设计原则其主要设计原则有
简单性系统功能简单易懂只需要掌握基本的计算机操作能力即可使用。
针对性针对特定的用户没有多余的其他功能使用户可以专心使用。
实用性能够满足用户查看证书信息等方面的需求。
先进性本系统的代码采用读取数据的方式方便后续开发、拓展。
2.3 系统需求分析
个人证书管理系统需要满足的需求有以下几个
1.信息获取方便用户可在网页上快速浏览到新的信息
2.查看新闻资讯详情等。
3.注册登录需要吸引用户即通过注册来提高用户的存留率。
4.修改用户信息可以修改用户密码或者用户名等一些个性化操作。
5.管理员功能管理员可以对用户或者证书分类、敏感词等进行管理。
6.系统安全操作简便不过于复杂。
7.系统可以稳定运行不存在卡顿等问题造成用户反感。
2.4 业务流程分析
2.4.1登录流程
登录模块主要满足管理员以及用户的权限登录用户登录流程图如图2-1所示。 图2-1 登录流程图
2.4.2注册流程
未有账号的用户可进入注册界面进行注册操作用户注册流程图如图2-2所示。 图2-2 注册流程图
2.4.3添加信息流程
用户在添加信息时信息编号自动生成系统会对添加的信息进行验证验证通过则添加至数据库添加信息成功反之添加失败。添加信息流程如图2-3所示。 图2-3 添加信息流程图
2.4.4删除信息流程
用户可选择要删除的信息进行信息删除操作在删除信息时系统提示是否确定删除信息是则删除信息成功系统数据库将信息进行删除。删除信息流程图如图2-4所示。 图2-4删除信息流程图
系统设计
3.1 系统概要设计
本个人证书管理系统选择B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式。适合在互联网上进行操作只要用户能连网任何时间、任何地点都可以进行系统的操作使用。系统工作原理图如图3-1所示 图3-1 系统工作原理图
3.2系统结构设计
整个系统是由多个功能模块组合而成的要将所有的功能模块都一一列举出来然后进行逐个的功能设计使得每一个模块都有相对应的功能设计然后进行系统整体的设计。
本个人证书管理系统结构图如图3-2所示。 图3-2 个人证书管理系统结构图
3.3 数据库设计
数据库可以说是所有软件的根本如果数据库存在缺陷那么会导致系统开发的不顺利、维护困难、用户使用不顺畅等一系列问题严重时将会直接损害企业的利益同时在开发完成后数据库缺陷也更加难以解决。所以必须要对数据库设计重点把握做到认真细致。因此数据库设计是这个个人证书管理系统的重点要素。
3.3.1概念结构设计
(1)管理员实体属性图如下图3-3所示 图3-3管理员实体属性图 (2) 用户信息实体属性如下图3-4所示 图3-4用户信息实体属性图
(2) 证书信息实体属性如下图3-5所示 图3-5证书信息实体属性图
3个人证书管理系统总E-R图如下图3-6所示 图3-6个人证书管理系统总E-R图
3.3.2数据库表设计
将数据库概念设计的E-R图转换为关系数据库。在关系数据库中数据关系由数据表组成但是表的结构表现在表的字段上。
表access_token (登陆访问时长) 编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明 1 token_id int 10 0 N Y 临时访问牌ID 2 token varchar 64 0 Y N 临时访问牌 3 info text 65535 0 Y N 4 maxage int 10 0 N N 2 最大寿命默认2小时 5 create_time timestamp 19 0 N N CURRENT_TIMESTAMP 创建时间 6 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间 7 user_id int 10 0 N N 0 用户编号:
表auth (用户权限管理) 编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明 1 auth_id int 10 0 N Y 授权ID 2 user_group varchar 64 0 Y N 用户组 3 mod_name varchar 64 0 Y N 模块名 4 table_name varchar 64 0 Y N 表名 5 page_title varchar 255 0 Y N 页面标题 6 path varchar 255 0 Y N 路由路径 7 position varchar 32 0 Y N 位置 8 mode varchar 32 0 N N _blank 跳转方式 9 add tinyint 3 0 N N 1 是否可增加 10 del tinyint 3 0 N N 1 是否可删除 11 set tinyint 3 0 N N 1 是否可修改 12 get tinyint 3 0 N N 1 是否可查看 13 field_add text 65535 0 Y N 添加字段 14 field_set text 65535 0 Y N 修改字段 15 field_get text 65535 0 Y N 查询字段 16 table_nav_name varchar 500 0 Y N 跨表导航名称 17 table_nav varchar 500 0 Y N 跨表导航 18 option text 65535 0 Y N 配置 19 create_time timestamp 19 0 N N CURRENT_TIMESTAMP 创建时间 20 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间
表certificate_classification (证书分类) 编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明 1 certificate_classification_id int 10 0 N Y 证书分类ID 2 certificate_classification varchar 64 0 Y N 证书分类 3 create_time datetime 19 0 N N CURRENT_TIMESTAMP 创建时间 4 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间
表certificate_information (证书信息) 编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明 1 certificate_information_id int 10 0 N Y 证书信息ID 2 certificate_name varchar 64 0 Y N 证书名称 3 certificate_classification varchar 64 0 Y N 证书分类 4 certificate_image varchar 255 0 Y N 证书图片 5 certificate_number varchar 64 0 Y N 证书编号 6 certificate_template varchar 255 0 Y N 证书模板 7 certificate_details text 65535 0 Y N 证书详情 8 hits int 10 0 N N 0 点击数 9 praise_len int 10 0 N N 0 点赞数 10 create_time datetime 19 0 N N CURRENT_TIMESTAMP 创建时间 11 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间
表collect (收藏) 编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明 1 collect_id int 10 0 N Y 收藏ID 2 user_id int 10 0 N N 0 收藏人ID 3 source_table varchar 255 0 Y N 来源表 4 source_field varchar 255 0 Y N 来源字段 5 source_id int 10 0 N N 0 来源ID 6 title varchar 255 0 Y N 标题 7 img varchar 255 0 Y N 封面 8 create_time timestamp 19 0 N N CURRENT_TIMESTAMP 创建时间 9 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间
表comment (评论) 编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明 1 comment_id int 10 0 N Y 评论ID 2 user_id int 10 0 N N 0 评论人ID 3 reply_to_id int 10 0 N N 0 回复评论ID空为0 4 content longtext 2147483647 0 Y N 内容 5 nickname varchar 255 0 Y N 昵称 6 avatar varchar 255 0 Y N 头像地址[0,255] 7 create_time timestamp 19 0 N N CURRENT_TIMESTAMP 创建时间 8 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间 9 source_table varchar 255 0 Y N 来源表 10 source_field varchar 255 0 Y N 来源字段 11 source_id int 10 0 N N 0 来源ID
表hits (用户点击) 编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明 1 hits_id int 10 0 N Y 点赞ID 2 user_id int 10 0 N N 0 点赞人 3 create_time timestamp 19 0 N N CURRENT_TIMESTAMP 创建时间 4 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间 5 source_table varchar 255 0 Y N 来源表 6 source_field varchar 255 0 Y N 来源字段 7 source_id int 10 0 N N 0 来源ID
表notice (公告) 编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明 1 notice_id mediumint 8 0 N Y 公告id 2 title varchar 125 0 N N 标题 3 content longtext 2147483647 0 Y N 正文 4 create_time timestamp 19 0 N N CURRENT_TIMESTAMP 创建时间 5 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间
表praise (点赞) 编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明 1 praise_id int 10 0 N Y 点赞ID 2 user_id int 10 0 N N 0 点赞人 3 create_time timestamp 19 0 N N CURRENT_TIMESTAMP 创建时间 4 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间 5 source_table varchar 255 0 Y N 来源表 6 source_field varchar 255 0 Y N 来源字段 7 source_id int 10 0 N N 0 来源ID 8 status bit 1 0 N N 1 点赞状态:1为点赞0已取消
表regular_users (普通用户) 编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明 1 regular_users_id int 10 0 N Y 普通用户ID 2 user_name varchar 64 0 Y N 用户姓名 3 user_gender varchar 64 0 Y N 用户性别 4 contact_information varchar 64 0 Y N 联系方式 5 examine_state varchar 16 0 N N 已通过 审核状态 6 user_id int 10 0 N N 0 用户ID 7 create_time datetime 19 0 N N CURRENT_TIMESTAMP 创建时间 8 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间
表sensitive_vocabulary (敏感词汇) 编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明 1 sensitive_vocabulary_id int 10 0 N Y 敏感词汇ID 2 sensitive_vocabulary varchar 64 0 Y N 敏感词汇 3 create_time datetime 19 0 N N CURRENT_TIMESTAMP 创建时间 4 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间
表slides (轮播图) 编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明 1 slides_id int 10 0 N Y 轮播图ID 2 title varchar 64 0 Y N 标题 3 content varchar 255 0 Y N 内容 4 url varchar 255 0 Y N 链接 5 img varchar 255 0 Y N 轮播图 6 hits int 10 0 N N 0 点击量 7 create_time timestamp 19 0 N N CURRENT_TIMESTAMP 创建时间 8 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间
表upload (文件上传) 编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明 1 upload_id int 10 0 N Y 上传ID 2 name varchar 64 0 Y N 文件名 3 path varchar 255 0 Y N 访问路径 4 file varchar 255 0 Y N 文件路径 5 display varchar 255 0 Y N 显示顺序 6 father_id int 10 0 Y N 0 父级ID 7 dir varchar 255 0 Y N 文件夹 8 type varchar 32 0 Y N 文件类型
表user (用户账户用于保存用户登录信息) 编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明 1 user_id mediumint 8 0 N Y 用户ID[0,8388607]用户获取其他与用户相关的数据 2 state smallint 5 0 N N 1 账户状态[0,10](1可用|2异常|3已冻结|4已注销) 3 user_group varchar 32 0 Y N 所在用户组[0,32767]决定用户身份和权限 4 login_time timestamp 19 0 N N CURRENT_TIMESTAMP 上次登录时间 5 phone varchar 11 0 Y N 手机号码[0,11]用户的手机号码用于找回密码时或登录时 6 phone_state smallint 5 0 N N 0 手机认证[0,1](0未认证|1审核中|2已认证) 7 username varchar 16 0 N N 用户名[0,16]用户登录时所用的账户名称 8 nickname varchar 16 0 Y N 昵称[0,16] 9 password varchar 64 0 N N 密码[0,32]用户登录所需的密码由6-16位数字或英文组成 10 email varchar 64 0 Y N 邮箱[0,64]用户的邮箱用于找回密码时或登录时 11 email_state smallint 5 0 N N 0 邮箱认证[0,1](0未认证|1审核中|2已认证) 12 avatar varchar 255 0 Y N 头像地址[0,255] 13 open_id varchar 255 0 Y N 针对获取用户信息字段 14 create_time timestamp 19 0 N N CURRENT_TIMESTAMP 创建时间 15 vip_level varchar 255 0 Y N 会员等级 16 vip_discount double 11 2 Y N 0.00 会员折扣
表user_group (用户组用于用户前端身份和鉴权) 编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明 1 group_id mediumint 8 0 N Y 用户组ID[0,8388607] 2 display smallint 5 0 N N 100 显示顺序[0,1000] 3 name varchar 16 0 N N 名称[0,16] 4 description varchar 255 0 Y N 描述[0,255]描述该用户组的特点或权限范围 5 source_table varchar 255 0 Y N 来源表 6 source_field varchar 255 0 Y N 来源字段 7 source_id int 10 0 N N 0 来源ID 8 register smallint 5 0 Y N 0 注册位置: 9 create_time timestamp 19 0 N N CURRENT_TIMESTAMP 创建时间 10 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间
第4章系统实现
4.1用户功能模块
用户注册用户在注册页面通过填写用户账号、密码、昵称、身份等信息完成用户注册如图4-1所示。 图4-1用户注册界面图
用户注册逻辑代码如下 * 注册 * return */ PostMapping(register) public MapString, Object signUp(HttpServletRequest request) throws IOException { // 查询用户 MapString, String query new HashMap(); MapString,Object map service.readBody(request.getReader()); query.put(username,String.valueOf(map.get(username))); List list service.selectBaseList(service.select(query, new HashMap())); if (list.size()0){ return error(30000, 用户已存在); } map.put(password,service.encryption(String.valueOf(map.get(password)))); service.insert(map); return success(1);
} public MapString,Object readBody(BufferedReader reader){ BufferedReader br null; StringBuilder sb new StringBuilder(); try{ br reader; String str; while ((str br.readLine()) ! null){ sb.append(str); } br.close(); String json sb.toString(); return JSONObject.parseObject(json, Map.class); }catch (IOException e){ e.printStackTrace(); }finally{ if (null ! br){ try{ br.close(); }catch (IOException e){ e.printStackTrace(); } } } return null; } public void insert(MapString,Object body){ E entity JSON.parseObject(JSON.toJSONString(body),eClass); baseMapper.insert(entity); log.info([{}] - 插入操作{},entity);
} 用户登录用户通过注册时的用户名和密码进行验证登录如图4-3所示。 图4-2登录界面图
登录代码如下
package com.project.demo.interceptor;
Slf4j
public class LoginInterceptor implements HandlerInterceptor { private String tokenName x-auth-token; Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String token request.getHeader(this.tokenName); setHeader(request, response); log.info([请求接口] - {} , [请求类型] - {},request.getRequestURL().toString(),request.getMethod()); if (request.getRequestURL().toString().contains(/api/user/login)){ return true; } else if (request.getRequestURL().toString().contains(/api/user/state)){ return true; } else if (request.getRequestURL().toString().contains(/api/user/register)){ return true; } } Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) { //更新token } Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } private void failure(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setHeader(Content-type, application/json;charsetUTF-8); response.setStatus(401); response.sendRedirect(https://www.baidu.com); } private void setHeader(HttpServletRequest request, HttpServletResponse response) { //跨域的header设置 response.setHeader(Access-control-Allow-Origin, request.getHeader(Origin)); response.setHeader(Access-Control-Allow-Methods, GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH); response.setHeader(Access-Control-Allow-Credentials, true); response.setHeader(Access-Control-Allow-Headers, request.getHeader(Access-Control-Request-Headers)); response.setHeader(Access-Control-Max-Age, 1800); //防止乱码适用于传输JSON数据 response.setHeader(Content-Type, application/json;charsetUTF-8); response.setStatus(HttpStatus.OK.value()); }
}
当用户进入个人证书管理系统的时候首先映入眼帘的是系统的首页首页展示的项目有通知公告、证书信息、我的账户、个人中心等内容如图4-3所示。 图4-4首页界面图
我的账户用户在此页面可对个人资料以及登录密码等信息进行修改操作如图4-5所示。 图4-5我的账户界面图
证书信息用户在“证书信息列表”页面中可通过关键字快速搜索自己想要的证书信息点击某一证书可查看详情信息可进行点赞、收藏或、线下载证书模板或分享等操作如图4-6所示。 图4-6 证书信息详情界面图
通知公告用户在“通知公告列表”页面中查看管理员发布的最新公告信息如图4-7所示。 图4-7 通知公告信息界面图
4.2管理员功能模块
管理员登录通过填写注册时输入的账号和密码进行登录如图4-8所示。 图4-8管理员登录界面图
管理员登录的关键代码如下。 * 登录 * param data * param httpServletRequest * return */ PostMapping(login) public MapString, Object login(RequestBody MapString, String data, HttpServletRequest httpServletRequest) { log.info([执行登录接口]); String username data.get(username); String email data.get(email); String phone data.get(phone); String password data.get(password); List resultList null; QueryWrapper wrapper new QueryWrapperUser(); MapString, String map new HashMap(); if(username ! null .equals(username) false){ map.put(username, username); resultList service.selectBaseList(service.select(map, new HashMap())); } else if(email ! null .equals(email) false){ map.put(email, email); resultList service.selectBaseList(service.select(map, new HashMap())); } else if(phone ! null .equals(phone) false){ map.put(phone, phone); resultList service.selectBaseList(service.select(map, new HashMap())); }else{ return error(30000, 账号或密码不能为空); } if (resultList null || password null) { return error(30000, 账号或密码不能为空); } //判断是否有这个用户 if (resultList.size()0){ return error(30000,用户不存在); } User byUsername (User) resultList.get(0); MapString, String groupMap new HashMap(); groupMap.put(name,byUsername.getUserGroup()); List groupList userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap())); if (groupList.size()1){ return error(30000,用户组不存在); } UserGroup userGroup (UserGroup) groupList.get(0); //查询用户审核状态 if (!StringUtils.isEmpty(userGroup.getSourceTable())){ String res service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId()); if (resnull){ return error(30000,用户不存在); } if (!res.equals(已通过)){ return error(30000,该用户审核未通过); } } //查询用户状态 if (byUsername.getState()!1){ return error(30000,用户非可用状态不能登录); } String md5password service.encryption(password); if (byUsername.getPassword().equals(md5password)) { // 存储Token到数据库 AccessToken accessToken new AccessToken(); accessToken.setToken(UUID.randomUUID().toString().replaceAll(-, )); accessToken.setUser_id(byUsername.getUserId()); tokenService.save(accessToken); // 返回用户信息 JSONObject user JSONObject.parseObject(JSONObject.toJSONString(byUsername)); user.put(token, accessToken.getToken()); JSONObject ret new JSONObject(); ret.put(obj,user); return success(ret); } else { return error(30000, 账号或密码不正确); }
} public String select(MapString,String query,MapString,String config){ StringBuffer sql new StringBuffer(select ); sql.append(config.get(FindConfig.FIELD) null || .equals(config.get(FindConfig.FIELD)) ? * : config.get(FindConfig.FIELD)).append( ); sql.append(from ).append().append(table).append().append(toWhereSql(query, 0.equals(config.get(FindConfig.LIKE)))); if (config.get(FindConfig.GROUP_BY) ! null !.equals(config.get(FindConfig.GROUP_BY))){ sql.append(group by ).append(config.get(FindConfig.GROUP_BY)).append( ); } if (config.get(FindConfig.ORDER_BY) ! null !.equals(config.get(FindConfig.ORDER_BY))){ sql.append(order by ).append(config.get(FindConfig.ORDER_BY)).append( ); } if (config.get(FindConfig.PAGE) ! null !.equals(config.get(FindConfig.PAGE))){ int page config.get(FindConfig.PAGE) ! null !.equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1; int limit config.get(FindConfig.SIZE) ! null !.equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10; sql.append( limit ).append( (page-1)*limit ).append( , ).append(limit); } log.info([{}] - 查询操作sql: {},table,sql); return sql.toString();
} public List selectBaseList(String select) { ListMapString,Object mapList baseMapper.selectBaseList(select); ListE list new ArrayList(); for (MapString,Object map:mapList) { list.add(JSON.parseObject(JSON.toJSONString(map),eClass)); } return list;
}
管理员登录进入个人证书管理系统可以查看首页、系统用户管理管理员、普通用户证书分类管理、证书信息管理、系统管理、通知公告管理等信息如图4-8所示。 图4-8 管理功能界面图 管理员功能界面逻辑代码如下
RequestMapping(/get_list) public MapString, Object getList(HttpServletRequest request) { MapString, Object map service.selectToPage(service.readQuery(request), service.readConfig(request)); return success(map);
}
系统用户管理管理员可对前台注册的用户以及管理员进行维护管理如图4-9所示。 图4-9系统用户管理界面图
用户管理界面逻辑代码如下
RequestMapping(/get_obj) public MapString, Object obj(HttpServletRequest request) { List resultList service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request))); if (resultList.size() 0) { JSONObject jsonObject new JSONObject(); jsonObject.put(obj,resultList.get(0)); return success(jsonObject); } else { return success(null); }
}
证书分类管理在证书分类管理中可以对证书信息添加类目进行分类管理并可根据需求进行修改或删除操作如图4-10所示。 图4-10证书分类管理界面图
证书分类管理界面逻辑代码如下
RequestMapping(/get_list) public MapString, Object getList(HttpServletRequest request) { MapString, Object map service.selectToPage(service.readQuery(request), service.readConfig(request)); return success(map);
证书信息管理证书信息管理用户在“证书信息列表”页面中查看自己添加的证书信息如需要添加新的证书信息可点击“证书信息添加”进入添加页面输入证书名称、证书分类、证书图片、证书详情和上传证书模板等信息点击“提交”即可完成证书信息的添加还可在对某个证书信息进行详情、重置或删除等操作如图4-11所示。 图4-11证书信息管理界面图
证书信息管理界面逻辑代码如下 PostMapping(/add) Transactional public MapString, Object add(HttpServletRequest request) throws IOException { service.insert(service.readBody(request.getReader())); return success(1); } Transactional public MapString, Object addMap(MapString,Object map){ service.insert(map); return success(1);
} public MapString,Object readBody(BufferedReader reader){ BufferedReader br null; StringBuilder sb new StringBuilder(); try{ br reader; String str; while ((str br.readLine()) ! null){ sb.append(str); } br.close(); String json sb.toString(); return JSONObject.parseObject(json, Map.class); }catch (IOException e){ e.printStackTrace(); }finally{ if (null ! br){ try{ br.close(); }catch (IOException e){ e.printStackTrace(); } } } return null;
} public void insert(MapString,Object body){ StringBuffer sql new StringBuffer(INSERT INTO ); sql.append().append(table).append().append( (); for (Map.EntryString,Object entry:body.entrySet()){ sql.append(humpToLine(entry.getKey())).append(,); } sql.deleteCharAt(sql.length()-1); sql.append() VALUES (); for (Map.EntryString,Object entry:body.entrySet()){ Object value entry.getValue(); if (value instanceof String){ sql.append().append(entry.getValue()).append().append(,); }else { sql.append(entry.getValue()).append(,); } } sql.deleteCharAt(sql.length() - 1); sql.append()); log.info([{}] - 插入操作{},table,sql); Query query runCountSql(sql.toString()); query.executeUpdate(); }
系统管理在系统管理中可以对前台展示的轮播图信息进行添加、重置或删除等操作如图4-12所示。 图4-12系统管理界面图
通知公告管理管理员在通知公告管理页面可查看自己添加的公告信息并可对添加新的公告信息或删除原有的信息等操作如图4-13所示。 图4-13通知公告管理界面图 第5章软件测试
测试存在于软件开发进程中的最后一个阶段它可以保证一个软件的开发质量是否符合设计者的初衷也为程序的正式上线做了最后一道质量检测的工序。软件测试主要是控制各种条件、包括软件输出方式使用模式和运行环境等来评估一个系统或应用是否符合设计标准。在软件测试过程中我们一般刻意的去制造错误和极端条件不能仅依照正常模式允许而是多去尝试那些意外的情况。
5.1软件测试的重要性
只有在运行和维护阶段之前经历大量的测试的软件才能说明它的质量是经得起检验的。最近计算机业界也都一致认为测试应该存在于软件设计的每个阶段因为越早发现错误修复起来就越容易。
实际上对于一个软件应用错误是必然存在的无论使用何种技术或手段都不可能绝对的排除软件漏洞。测试是随着软件开发一同诞生的两者是共同发展进步的。实际上测试可以大幅度的降低维护的成本如果一个漏洞在开发的早期就被发现那么修复它的成本远比上线后再修复的成本要低得多。
5.2测试实例的研究与选择
测试有白盒测试和黑盒测试两种方式。
其中白盒测试是将软件看成一个透明的白盒子按照程序的内部控制结构和处理技术逻辑来选定测试用例、软件系统测试的逻辑路径及过程需要进行管理测试又称玻璃盒测试。因此白盒测试需要选择足够多的测试用例覆盖尽可能多的代码来发现程序中的错误。
黑盒测试也称为功能测试。它将需软件看作一个黑盒像一个普通用户一样来模拟软件的使用流程。黑盒测试通过大量的输入边界值或错误数据来检查是否可产生正确的输出。
本系统测试 主要选择黑盒测试少量采用白盒测试。通过测试达到以下测试目的
1.检查各大功能模块的运行确保其能够正确运行并检查各页面的完整性保证页面完整。
2.检查各个接口是否可以正确地输入和输出保证数据流通稳定可行。
3.检查数据结构保证其和外部接口没有访问错误访问顺利。
4.检查原计划的性能需求有没有完成运行流畅。 本系统的测试用例部分 登录部分测试用例 编号 对象 项目 操作 预期结果 结果 1 登录 登录提示 使用正确的账号密码登录 成功登录 预期结果 2 登录提示 使用正确的账号但错误的密码登录 提示密码错误 预期结果 3 登录提示 使用错误的账号登录 提示不存在账户 预期结果 4 登录提示 不输入账号点击登录 提示输入账号 预期结果 5 登录提示 输入账号但不输入密码点击登录 提示输入密码 预期结果 6 登录入口 已登录账号查看登录入口 不显示登录入口 预期结果 5.3测试环境与测试条件
处理器Inter Core I7-4710MQ四核处理器
内存4GB
硬盘1T
操作系统Windows 10
数据库MySQL
5.4系统运行情况
全部测试用例都已通过包括但不限于以上测试用例且不存在漏洞实现了论文开始时所作要求。本系统运行稳定使用流畅可以满足客户需求。
5.5系统评价 5.5.1系统功能评价
试运行后进行系统评估可以认为该系统达到预定的目标要求可以满足用户的需求也满足了系统开发前所作目标。 5.5.2系统技术评价
系统在经过大量重复测试后运行十分稳定安全实用功能模块已经达到预定目标所需。 5.5.3系统经济评价
在规定的时间内实现系统的大部分功能且满足要求节省开发成本有助于提高科学管理水平符合本人经济情况。
第6章 总结
随着计算机互联网技术的迅猛发展各行各业都已经实现采用计算机相关技术对日益放大的数据进行管理。该课题是个人证书管理系统以交流为核心展开的。本研究针对个人证书管理系统需求建模数据建模及过程建模分析设计并实现程序研究的过程。给出系统应用架构并分析优劣势通过功能分解图系统组件图描述功能需求。设计建立了数据库给出系统关键数据结构的定义。通过类关系图描述组件间的协作关系给出各个类的定义方法。通过描述每一个类的字段属性及方法实现系统的前后端代码。最终给出系统集成整合方法完成个人证书管理系统的设计与实现。投入运行时各功能均运行正常。系统的每个界面的操作符合常规逻辑对使用者来说操作简单界面友好。整个系统的各个功能设计合理体现了人性化。
但是由于自己在系统开发过程中对一些用到的相关知识和技术掌握不够牢固再加上自身开发经验欠缺因此系统在有些方面的功能还不够完善考虑的不够全面因此整个系统还有待日后逐步完善。参考文献
[1]夏磊, 李珩, 秦新峰, 张鹏, 张维, 邹杰, 智明, 杨飞, 沈晔青, 王晨光. 一种配电自动化终端加密证书管理系统[P]. 江苏省: CN115292683B, 2024-01-23.
[2]袁琳琳. 计算机软件Java编程特点及技术分析[J]. 数字通信世界, 2023, (12): 87-89.
[3]马庆. 计算机软件开发中JAVA编程语言的应用[J]. 山西电子技术, 2023, (06): 84-8698.
[4]张国芳. Java编程语言在计算机软件开发中的应用方向分析[J]. 信息记录材料, 2023, 24 (11): 138-141.
[5]郝晓雪, 张晓京, 赵思远, 叶可可, 曹树鹏, 方有轩, 黄梦芝, 朱昊然, 代玉星, 杨璐纯, 李翎, 戴治城. 基于EOS的分布式数字证书管理系统、方法及设备[P]. 北京市: CN116976889A, 2023-10-31.
[6]王坤, 赵锋, 张文科. 基于Web服务和Access数据库的证书管理系统[J]. 办公自动化, 2023, 28 (16): 55-57.
[7]李亚荣, 杨艳梅, 白健, 杨文兵, 邱锋. 联盟链分布式证书管理解决方案[J]. 信息安全与通信保密, 2023, (07): 100-109.
[8]Irfan Ali Kandhro, Fayyaz Ali, Asif Ali Wagan, Iqra Tabassum M. Ali, Farhan Afzal. Safe and secure: an automated library management system for monitoring book rotation using face recognition[J]. International Journal of Electronic Security and Digital Forensics, 2023, 15 (3): 225-239.
[9]Song Zhiming, Wang Guiwen, Yu Yimin, Chen Taowei. Digital Identity Verification and Management System of Blockchain-Based Verifiable Certificate with the Privacy Protection of Identity and Behavior[J]. Security and Communication Networks, 2022, 2022
[10]高茂云, 周科. 基于区块链的证书管理系统的设计[J]. 湖北第二师范学院学报, 2022, 39 (08): 45-51.
[11]PericàsGornals Rosa, MutPuigserver Macià, PayerasCapellà M Magdalena. Highly private blockchain-based management system for digital COVID-19 certificates.[J]. International journal of information security, 2022, 21 (5): 21-22.
[12]王锵. 基于区块链的学业证书管理系统的设计与实现[D]. 北京邮电大学, 2022.
[13]董红斌, 张楠, 张毅, 梁艳. 检验检测电子证书/报告归档与电子档案管理系统初探[J]. 中国检验检测, 2022, 30 (03): 71-7365.
[14]许丹. 区块链技术在职业教育证书管理中的运用[J]. 湖南教育(C版), 2022, (05): 30-32.
[15]Tellew Jeffrey, Kuo TsungTing. CertificateChain: decentralized healthcare training certificate management system using blockchain and smart contracts.[J]. JAMIA open, 2022, 5 (1): ooac019-ooac019.
[16]史晓倩. 论医院员工技术档案中各类证书的管理[J]. 黑龙江档案, 2022, (01): 264-266.
[17]吴喜生. 培训资格证书管理系统的设计与实现——以民航西南空管局培训资格证书管理为背景[J]. 中国管理信息化, 2021, 24 (16): 181-183.
[18]樊景义. 铁路职工岗位培训电子证书管理系统. 北京市, 北京京天威科技发展有限公司, 2021-06-10.
[19]敬菲菲. 信大捷安移动证书管理系统V1.0. 河南省, 郑州信大捷安信息技术股份有限公司, 2021-06-01.
[20]曾月星. 基于信誉激励的自动化证书管理系统[D]. 华中师范大学, 2022.
致 谢
大学生活在这个时候即将划上一个句号但是对于我的人生道路来说这仅仅是一个逗号我将面对的是又一次征程的开始。
回忆过去许许多多的事情浮现在脑海刚上大学时欢乐心情和兴奋的场景还历历在目。一切都是那么新鲜那么富有吸引力。有快乐也有艰辛有收获也有失落。衷心感谢信息学院所有支持帮助过我的老师谢谢你们多年来的关心和爱护。同窗的友情同样难忘你们与我共同走过了人生中不平凡的道路给我留下了值得珍藏的美好记忆。
最后我要特别感谢指导个人证书管理系统设计的老师。本论文是在他的悉心指导和热情帮助下完成的老师认真负责的工作态度严谨的治学精神和精深的理论水平都使我受益匪浅。老师无论在理论上还是在实践中都给予我很大的帮助使我专业技能的应用水平得到很大提高这对于我以后的工作和学习都有益处。值此论文完成之际特别向老师表示衷心的感谢和崇高的敬意谢谢他细心而又耐心地辅导使得我得以顺利的完成毕业设计开发工作同时也要感谢其他帮助过我的老师和同学他们在我成长过程中给予了我很大的帮助在此一并表示感谢。
由于本人水平有限加上时间紧促本文一定有不少缺点和不足恳请各位老师给予帮助和指正。 免费领取项目源码请关注❥点赞收藏并私信博主谢谢~