技术博客 2

技术博客 2: 系统设计和开发

在上一篇博客中,我们介绍了项目的需求分析和项目规划阶段。在这篇博客中,我们将讨论项目的系统设计过程。我们详细描述了系统的架构和组件,并介绍了使用的技术栈。

系统架构

我们为项目设计了一个三层架构,分为表现层、业务逻辑层和数据访问层。表现层负责与用户交互,展示系统的界面和功能。业务逻辑层负责处理用户的请求,执行系统的核心逻辑和算法。数据访问层负责与数据库交互,存储和读取数据。三层架构可以实现系统的高内聚、低耦合、易扩展和易维护。

下图是我们的系统架构图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JvBPcqQk-1688289193374)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20230702170609852.png)]

技术栈

我们为项目选择了以下的技术栈:

  • 前端:使用HTML、CSS、JavaScript等网页技术,以及Vue框架和ArcoDesign组件库,实现系统的界面设计和交互效果。
  • 后端:使用Java语言,以及Spring Boot框架,实现系统的业务逻辑和数据访问层。
  • 数据库:使用MySQL数据库,以及MyBatis框架,实现系统的数据存储和管理。
  • 开发工具:使用IntelliJ IDEA,以及Git、Maven等工具,实现系统的开发、测试、部署等工作。

数据库设计

我们对项目的数据库进行了设计。我们定义了实体关系模型,并创建了相应的数据库表。我们还介绍了数据的结构和关系。

实体关系模型 我们根据需求分析阶段得到的功能需求,确定了以下的实体:

  • 系统管理员(Admin):包含id、用户名、密码、角色等属性。
  • 主办方(Organizer):包含id、用户名、密码、姓名、联系方式等属性。
  • 参赛者(Participant):包含id、用户名、密码、姓名、学号、联系方式等属性。
  • 赞助商(Sponsor):包含id、用户名、密码、名称、联系方式等属性。
  • 赛事活动(Event):包含id、名称、时间、地点、规则、奖品等属性。
  • 广告(Ad):包含id、名称、内容、图片等属性。
  • 奖品(Prize):包含id、名称、描述、图片等属性。

我们根据实体之间的关系,确定了以下的关联:

  • 系统管理员与赛事活动是一对多的关系,一个系统管理员可以审核多个赛事活动,一个赛事活动只能被一个系统管理员审核。
  • 系统管理员与广告是一对多的关系,一个系统管理员可以审核多个广告,一个广告只能被一个系统管理员审核。
  • 系统管理员与奖品是一对多的关系,一个系统管理员可以审核多个奖品,一个奖品只能被一个系统管理员审核。
  • 主办方与赛事活动是一对多的关系,一个主办方可以发布多个赛事活动,一个赛事活动只能由一个主办方发布。
  • 参赛者与赛事活动是多对多的关系,一个参赛者可以报名参加多个赛事活动,一个赛事活动可以有多个参赛者报名参加。
  • 赞助商与广告是一对多的关系,一个赞助商可以上传多个广告,一个广告只能由一个赞助商上传。
  • 赞助商与奖品是一对多的关系,一个赞助商可以提供多个奖品,一个奖品只能由一个赞助商提供。
  • 赛事活动与广告是多对多的关系,一个赛事活动可以有多个广告投放,一个广告可以投放到多个赛事活动上。
  • 赛事活动与奖品是多对多的关系,一个赛事活动可以有多个奖品设置,一个奖品可以设置到多个赛事活动上。

数据库表 我们根据实体关系模型,创建了以下的数据库表:

表1 用户表

序号列名数据类型长度主键是否允许为空默认值说明
1IDint用户编号
2Usernamevarchar8用户名称
3Accountvarchar11用户账号
4Passwordvarchar812345678用户密码
5Permissionvarchar4用户权限
6Rolevarchar5用户角色
7Phonenumbervarchar11联系电话
8Statusvarchar12账号状态
9Create_timedate创建时间
10Tokenvarchar150Token值

表2 赛事资讯表

序号列名数据类型长度主键是否允许为空默认值说明
1IDint资讯编号
2Titlevarchar20资讯标题
3Contentvarchar150资讯内容
4Timetimestamp发布时间
5Host_namevarchar15主办方名称
6Typevarchar6赛事类型

表3 主办方表

序号列名数据类型长度主键是否允许为空默认值说明
1IDint主办方编号
2News_IDvarchar12资讯编号
3Accountvarchar11主办方账号
4Passwordvarchar8主办方密码
5Phonenumbervarchar11联系电话
6Host _namevarchar15主办方名称

表4 赛事活动表
序号 列名 数据类型 长度 主键 是否允许为空 默认值 说明

序号列名数据类型长度主键是否允许为空默认值说明
1IDint活动编号
2Statusvarchar1活动状态
3Event_namevarchar15活动名称
4Typevarchar5赛事类型
5Contentvarchar50赛事内容
6Host _namevarchar15主办方名称
7Start_timetimestamp开始时间
8End_timetimestamp结束时间
9Sitevarchar5场地名称
10Site_locationvarchar10场地位置
11Equipmentvarchar20设备申请
12Numbervarchar20设备申请数量
13Application_timetimestamp申请时间
14Emailvarchar18申请人qq邮箱
15Check_statusvarchar10审核状态

表5 消息表

序号列名数据类型长度主键是否允许为空默认值说明
1IDint消息编号
2Contentvarchar50消息内容
3Create_timetimestamp创建时间
4Titlevarchar20消息标题
5Typevarchar4消息类型
6Statusvarchar10消息状态
7Namevarchar15创建者

表6 参赛选手信息表

序号列名数据类型长度主键是否允许为空默认值说明
1IDint选手编号
2Namevarchar8选手姓名
3Sexvarchar2选手性别
4Agevarchar3选手年龄
5Collegevarchar10所属学院
6Majorvarchar10专业名称
7Phonenumbervarchar11联系电话
8Projectvarchar10参赛项目

表7 赞助商表
序号 列名 数据类型 长度 主键 是否允许为空 默认值 说明

序号列名数据类型长度主键是否允许为空默认值说明
1IDint赞助商编号
2Sponsor_namevarchar15赞助商名称
3Phonenumbervarchar11联系电话
4Accountvarchar11账号
5Passwordvarchar8密码

表8 广告表

序号列名数据类型长度主键是否允许为空默认值说明
1IDint广告编号
2sponsorIdvarchar赞助商id
3Sponsor_namevarchar15赞助商名称
4Contentvarchar150广告内容
5Titlevarchar11广告标题
6Picturevarchar20图片地址

表9 奖品表

序号列名数据类型长度主键是否允许为空默认值说明
1IDint奖品编号
2Namevarchar15奖品名称
3Numbervarchar15奖品数量
4Pricevarchar10奖品价格
5Picturevarchar20图片地址
6Sponsor_namevarchar15赞助商名称
7sponsorIdvarchar赞助商id

表10 场地名称表

序号列名数据类型长度主键是否允许为空默认值说明
1IDint场地编号
2Namevarchar15场地名称
3Locationvarchar10场地位置

表11 场地使用情况表

序号列名数据类型长度主键是否允许为空默认值说明
1IDint场地使用编号
2Name_idint场地ID
3Event_idint活动ID
4Statusvarchar4使用状态
5daydate开始日期
6Start_timetimestamp开始时间
7End_timetimestamp结束时间

表12 场地预约时间表

序号列名数据类型长度主键是否允许为空默认值说明
1IDint预约时间编号
2Site_idint场地ID
3Event_idint活动ID
5daydate开始日期
6Start_timetimestamp开始时间
7End_timetimestamp结束时间

表13 设备名称表

序号列名数据类型长度主键是否允许为空默认值说明
1IDint设备编号
2Namevarchar5设备名称
3Numbervarchar3存储数量
4Locationvarchar10存储位置

表14 设备使用情况表

序号列名数据类型长度主键是否允许为空默认值说明
1IDint设备使用编号
2Name_idint设备ID
3Event_idint活动ID
4Numbervarchar3数量
5Statusvarchar1使用状态
6daydate开始日期
7Start_timetimestamp开始时间
8End_timetimestamp结束时间

数据结构和关系

我们使用MySQL数据库来存储和管理数据。我们使用MyBatis框架来实现数据访问层的功能。我们定义了实体类和映射文件来表示数据的结构和关系。我们使用注解和XML配置文件来配置数据库连接和SQL语句。我们使用DAO接口和Service类来封装数据访问层的方法和逻辑。

开发过程

我们采用敏捷开发方法,在多个迭代周期内进行开发。我们使用版本控制工具来管理代码,并定期进行代码审核和测试。

敏捷开发方法

我们使用Scrum框架来实现敏捷开发方法。我们将项目分为多个迭代周期,每个周期为两周。在每个周期开始时,我们进行需求分析和任务划分,确定本周期的目标和范围。在每个周期结束时,我们进行产品展示和回顾,评估本周期的成果和问题。在每个工作日,我们进行日常站立会议,汇报工作进度和遇到的困难,协调资源和任务。

版本控制工具

我们使用Git作为版本控制工具,来管理代码的版本和变更。我们使用GitHub作为代码托管平台,来存储代码的远程仓库。我们使用GitFlow作为分支管理策略,来规范代码的提交和合并。我们使用Pull Request作为代码审核机制,来保证代码的质量和一致性。

单元测试

我们使用JUnit框架来进行单元测试,编写测试用例来覆盖系统的主要功能和边界情况。我们使用Maven工具来自动化测试过程,并生成测试报告。我们使用SonarQube工具来进行静态代码分析,检测代码的潜在缺陷和漏洞,并提高代码的可维护性和可读性。

结论

通过这篇博客,我们分享了项目的系统设计和开发过程。这包括系统架构、数据库设计、敏捷开发方法、版本控制工具、代码审核和测试等方面。这些步骤为项目的顺利实施奠定了基础。在下一篇博客中,我们将介绍项目的部署阶段,敬请期待。

测试

我们使用JUnit框架来进行单元测试,编写测试用例来覆盖系统的主要功能和边界情况。我们使用Maven工具来自动化测试过程,并生成测试报告。我们使用SonarQube工具来进行静态代码分析,检测代码的潜在缺陷和漏洞,并提高代码的可维护性和可读性。

结论

通过这篇博客,我们分享了项目的系统设计和开发过程。这包括系统架构、数据库设计、敏捷开发方法、版本控制工具、代码审核和测试等方面。这些步骤为项目的顺利实施奠定了基础。在下一篇博客中,我们将介绍项目的部署阶段,敬请期待。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值