Compare commits

...

10 Commits

@ -0,0 +1,118 @@
//Jenkins配置流水线时应该将默认Jenkinsfile改为Jenkinsfile127
//修改cstatm211601,可批量替换
pipeline {
agent any
options {
//跳过从源代码控制中检出代码使用阶段stage('拉取Gitea源码')
skipDefaultCheckout(true)
}
stages {
stage('拉取Gitea源码') {
steps {
cleanWs()//清除Jenkins的工作区WorkSpace
//gitea为Jenkins中的凭据:用访问gitea的账号、密码生成
//修改2018211601自己的学号
git credentialsId: 'gitea', url: 'http://localhost:3000/2018211601/cstatm211601.git'
}
}
stage('Maven Sonar 打包') {
steps {
//SonarQube为Jenkins系统中配置的服务器名称并设置SonarQube口令
withSonarQubeEnv('SonarQube'){
//Maven使用SonarQube进行源码扫描
//-D为SonarQube扫描属性
//127上的口令-Dsonar.token=SonarQube登录、账号、安全、通用口令生成复制
bat '''mvn clean package sonar:sonar -Dsonar.projectKey=cstatm211601
-Dsonar.projectName=cstatm211601 -Dsonar.java.binaries=. -Dsonar.skipPackageDesign=true
-Dsonar.token=squ_d7d970c7b6c36fe2b3b7bc3ccea60239f8028878'''
}
}
}
stage('QualityGate质量门禁') {
steps {
script{
sleep(30)//休眠30秒等待扫描结果返回质量门禁获取数据
//超时10分钟等待足够时间避免质量门禁失败
timeout(time: 10, unit: 'MINUTES'){
def qg = waitForQualityGate()
if (qg.status != 'OK') {
error "流水线由于门禁失败而退出: ${qg.status}"
}
}
}
}
}
//JDK的各个工具参数可查阅命令行如keytool /
stage('keytool生成密钥'){
steps{
// liudongliang 改为自己姓名拼音
//keytool很长但不能换行
bat '''
keytool -genkey -alias mykey -keystore mykeystore.store -storetype PKCS12 -keyalg RSA -storepass mystorepass -validity 365 -keysize 2048 -dname "CN=liudongliang, OU=chzu, L=xxxy, S=chuzhou, O=anhui, C=CH"
'''
}
}
stage('jarsigner数字签名') {
steps {
bat '''
MKDIR app
MOVE /Y "target\\cstatm211601-0.0.1-SNAPSHOT-jar-with-dependencies.jar" "app\\cstatm211601.jar"
jarsigner -keystore myKeystore.store app\\cstatm211601.jar mykey -storepass mystorepass
'''
}
}
stage('jpackage生成msi'){
steps{
//必须安装、配置WixTools
//修改主类名com.atm.view.gui.Gui
bat '''
jpackage -i ./app --type msi -n cstatm211601_msi --main-jar cstatm211601.jar --main-class com.atm.view.gui.Gui --vendor dll --verbose --win-console --win-dir-chooser --win-shortcut --win-menu
'''
}
post {
success {
//Jenkins制品
archiveArtifacts 'cstatm211601_msi-1.0.msi'
}
}
}
stage('jar打包War(jar&msi)') {
steps {
bat 'jar cfM cstatm211601.war index.html cstatm211601.jnlp ./app/cstatm211601.jar cstatm211601_msi-1.0.msi'
}
}
//部署tomcat9为部署的Web服务器选项最新tomcat9而实际服务器为tomcat10
//'tomcat'为Jenkins凭据id,访问tomcat,必须为管理员权限
stage('部署War至local127tomcat'){
steps{
deploy adapters: [tomcat9(credentialsId: 'tomcat', path: '', url: 'http://localhost:8080')], contextPath: '/cstatm211601', war: 'cstatm211601.war'
}
}
stage('local127访问cstatm211601'){
steps{
echo "explorer http://localhost:8080/cstatm211601/index.html"
}
}
//试看谁第一个发邮件给我?
stage("通知邮件") {
steps{
script {
mail to: '602924803@qq.com',
subject: "软件流水线: ${currentBuild.fullDisplayName}",
body: " ${env.JOB_NAME}-构建#${env.BUILD_ID}-状态#${currentBuild.currentResult}\n 控制台 ${BUILD_URL} 查看结果。"
}
}
}
}
post {
always {
//清理工作区函数
cleanWs(cleanWhenNotBuilt: false,
deleteDirs: true,
disableDeferredWipeout: true,
notFailBuild: true,
patterns: [[pattern: '.gitignore', type: 'INCLUDE'],
[pattern: '.propsfile', type: 'EXCLUDE']])
}
}
}

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- 修改cstatm206004,可批量替换 -->
<jnlp codebase="http://116.204.84.48:8080/cstatm206004/" href="cstatm206004.jnlp">
<information>
<title>JWS to Run cstatm</title>
<vendor>czldl</vendor>
<description>ATM EAGitOps</description>
<homepage href="http://116.204.84.48:8080/cstatm206004/index.html"/>
<offline-allowed/>
</information>
<security>
<all-permissions/>
</security>
<update check="always" policy="always"/>
<resources>
<j2se href="http://java.sun.com/products/autodl/j2se" version="1.6+" />
<jar href="app/cstatm206004.jar" main="true"/>
</resources>
<!-- 修改主类com.atm.view.gui.Gui -->
<application-desc name="ATM EAGitOps" main-class="org.atm.view.gui.Gui"/>
</jnlp>

@ -0,0 +1,17 @@
<!DOCTYPE html>
<html>
<!-- 修改cstatm206004,可批量替换 -->
<head>
<meta charset="UTF-8">
<title>计科231《软件工程基础》期中考试</title>
</head>
<body>
学号_____姓名______
<hr />
<h4>本地localhost:8080</h4>
<a href="http://localhost:8080/cstatm206004/app/cstatm206004.jar">(127Tomcat)下载 cstatm206004.jar,java -jar cstatm206004.jar 执行</a>
<hr/>
<a href="http://localhost:8080/cstatm206004/cstatm206004_msi-1.0.msi">(127Tomcat)下载 cstatm206004-1.0.msi ,安装、执行</a>
</body>
</html>

@ -0,0 +1,117 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 修改cstatm206004,可批量替换 -->
<!-- 1修改groupId:org.atm -->
<groupId>org.atm</groupId>
<!-- 修改cstatm206004 -->
<artifactId>cstatm206004</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<!-- 修改cstatm206004 -->
<name>cstatm206004</name>
<description>期中考试 cstatm206004</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.report.outputEncoding>UTF-8</project.report.outputEncoding>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.release>17</maven.compiler.release>
</properties>
<dependencies>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.6.0</version>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.1.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.10.0.2594</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.6.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<archive>
<manifest>
<!-- 2修改主类com.atm.view.gui.Gui -->
<mainClass>
org.atm.view.gui.Gui
</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.1.2</version>
<configuration>
<skipTests>false</skipTests>
<argLine>${argLine} -Dfile.encoding=UTF-8</argLine>
</configuration>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.11</version>
<configuration>
<skip>false</skip>
<destFile>target/coverage-reports/jacoco-unit.exec</destFile>
<dataFile>target/coverage-reports/jacoco-unit.exec</dataFile>
</configuration>
<executions>
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

@ -0,0 +1,465 @@
# 实验五操作指南:软件系统测试
**实验课时安排:** 2课时90分钟一次课程
> **版本信息**v1.0
> **更新日期**2025-12-08
> **适用项目**:校园快递代取系统
> **适用团队**G1组董玉坤及团队成员
> **预计完成时间**900分钟约15小时
> **实验环境**EAGitAIOpsEnterprise Architect + TRAE + Git + Gitea + Jenkins + SonarQube + PostgreSQL + 头歌平台)
## 1. 实验环境与工具
### 1.1 EAGitAIOps实验环境
本实验使用EAGitAIOpsEnterprise Architect + TRAE + Git + Gitea + Jenkins + SonarQube + PostgreSQL + 头歌平台)集成环境,提供完整的软件工程工具链支持。
#### 1.1.1 环境组件
| 工具类别 | 工具名称 | 版本要求 | 用途说明 |
|---------|---------|---------|--------|
| 建模工具 | Enterprise Architect | v17.0以上 | 系统设计建模、UML图绘制 |
| 版本控制 | Git | v2.0以上 | 代码版本管理 |
| 数据库 | PostgreSQL | v17.0以上 | 数据存储与管理 |
| 开发环境 | TRAE | v3.0以上 | 文档生成与代码优化 |
| 构建工具 | Maven | v3.6以上 | 项目构建与依赖管理 |
| 持续集成 | Jenkins | v2.300以上 | 自动化构建与测试 |
| 代码质量 | SonarQube | v9.0以上 | 代码质量分析 |
| 代码仓库(本地) | Gitea | v1.16以上 | 本地Git仓库管理服务 |
| 代码仓库(云端) | 头歌Gitea | - | 云端Git仓库托管平台 |
| 实验平台 | 头歌平台 | - | 在线实验和项目托管平台 |
#### 1.1.2 EAGitAIOps环境启动顺序
1. **启动PostgreSQL数据库服务**
```
net start postgresql-x64-17
```
2. **启动Gitea代码仓库服务**
```
cd /d E:\EAGitAIOps\gitea
gitea.exe web
```
3. **启动Tomcat服务器Jenkins**
```
cd /d E:\EAGitAIOps\tomcat\bin
startup.bat
```
4. **启动SonarQube服务**
```
cd /d E:\EAGitAIOps\sonarqube\bin\windows-x86-64
StartSonar.bat
```
#### 1.1.3 EAGitAIOps环境访问地址
| 服务名称 | 访问地址 | 默认账号 | 默认密码 |
|---------|---------|---------|--------|
| Gitea本地 | http://localhost:3000 | root | password |
| 头歌Gitea云端 | https://bdgit.educoder.net | 个人账号 | 个人密码 |
| 头歌平台 | https://www.educoder.net | 个人账号 | 个人密码 |
| Jenkins | http://localhost:8084/jenkins | admin | admin |
| SonarQube | http://localhost:9000 | admin | admin |
| PostgreSQL | localhost:5432 | postgres | postgres |
**头歌项目仓库地址:**
- 项目名称CHZU_CS231_SEB_lab
- 仓库地址https://bdgit.educoder.net/pu6zrsfoy/CHZU_CS231_SEB_lab.git
- 克隆命令:`git clone https://bdgit.educoder.net/pu6zrsfoy/CHZU_CS231_SEB_lab.git`
### 1.2 环境配置要求
- **操作系统**Windows 11
- **内存要求**最低8GB推荐16GB
- **存储空间**至少20GB可用空间
- **网络要求**:稳定的互联网连接(用于工具下载、更新和头歌平台访问)
- **EAGitAIOps安装路径**E:\EAGitAIOps\(默认路径,可根据实际情况调整)
- **头歌平台账号**:需要有效的头歌平台账号和密码
- **Git配置**需要配置Git用户名和邮箱
```bash
git config --global user.name "你的姓名"
git config --global user.email "你的邮箱"
```
### 1.3 头歌平台配置
#### 1.3.1 头歌平台注册和登录
1. 访问头歌平台https://www.educoder.net
2. 使用学校提供的账号登录或注册新账号
3. 完善个人信息,确保账号可以正常使用
#### 1.3.2 头歌仓库配置
1. 访问头歌Giteahttps://bdgit.educoder.net
2. 使用头歌平台账号登录
3. 找到项目仓库CHZU_CS231_SEB_lab
4. 配置SSH密钥推荐或使用HTTPS方式克隆
**配置SSH密钥步骤**
```bash
# 生成SSH密钥如果还没有
ssh-keygen -t rsa -C "你的邮箱"
# 查看公钥
cat ~/.ssh/id_rsa.pub
# 复制公钥内容添加到头歌Gitea的SSH密钥设置中
```
#### 1.3.3 克隆项目仓库
```bash
# HTTPS方式需要输入用户名和密码
git clone https://bdgit.educoder.net/pu6zrsfoy/CHZU_CS231_SEB_lab.git
# SSH方式需要先配置SSH密钥
git clone git@bdgit.educoder.net:pu6zrsfoy/CHZU_CS231_SEB_lab.git
# 进入项目目录
cd CHZU_CS231_SEB_lab
# 查看远程仓库
git remote -v
# 创建个人功能分支
git checkout -b feature_个人姓名拼音
```
## 2. 时间估算与分配建议
### 2.1 总体时间安排
**实验五总时间900分钟15小时**
- 课堂时间90分钟1.5小时1次课程
- 课后时间810分钟13.5小时)
### 2.2 项目进度甘特图
#### 2.2.1 课堂活动甘特图
```mermaid
gantt
title 实验五课堂活动进度计划90分钟
dateFormat HH:mm
axisFormat %H:%M
%% 甘特图样式设置
%% 使用不同颜色区分不同类型的活动
gantt
title 实验五课堂活动进度计划90分钟
dateFormat HH:mm
axisFormat %H:%M
todayMarker off
grid on
section 课堂活动
项目概述 :crit, overview, 09:00, 10min
项目词汇介绍 :active, vocab, after overview, 15min
EA项目模型整合 :done, ea, after vocab, 20min
通用功能测试介绍 :crit, intro, after ea, 25min
通用功能测试实践 :active, practice, after intro, 20min
```
#### 2.2.2 课后活动甘特图
```mermaid
gantt
title 实验五课后活动进度计划810分钟
dateFormat HH:mm
axisFormat %H:%M
%% 使用不同颜色区分不同类型的活动
section 测试阶段
通用功能测试 :crit, task1, 09:00, 60min
通用功能测试完善 :active, task2, after task1, 45min
个人功能测试 :crit, task5, after task2, 75min
个人功能测试完善 :active, task6, after task5, 60min
个人功能测试优化 :task7, after task6, 45min
个人功能测试优化完善 :task8, after task7, 45min
集成测试 :crit, task15, after task8, 45min
集成测试完善 :active, task17, after task15, 45min
section DevOps阶段
Git提交日志管理 :task3, after task2, 30min
个人功能EA模型 :task4, after task3, 45min
Jenkins流水线配置 :devops1, task9, after task4, 30min
Jenkins流水线调试 :devops2, task10, after task9, 45min
SonarQube质检报告 :devops3, task11, after task10, 30min
SonarQube质检分析 :devops4, task12, after task11, 45min
DevOps环境配置 :devops5, task13, after task12, 60min
section 整合阶段
小组功能整合 :crit, task14, after task13, 45min
功能整合优化 :active, task16, after task14, 45min
section 完成阶段
提交合并审核流程 :crit, task18, after task17, 30min
项目报告撰写 :active, task19, after task18, 75min
实验总结与提交 :crit, task20, after task19, 60min
```
#### 2.2.3 整体项目进度甘特图
```mermaid
gantt
title 实验五整体项目进度计划15小时
dateFormat YYYY-MM-DD
axisFormat %m-%d
%% 设置日期范围
todayMarker off
dateFormat YYYY-MM-DD
axisFormat %m-%d
section 第1天
课堂活动 :crit, class1, 2025-07-01, 90min
通用功能测试 :active, task1, after class1, 60min
通用功能测试完善 :task2, after task1, 45min
section 第2天
Git提交日志管理 :task3, 2025-07-02, 30min
个人功能EA模型 :task4, after task3, 45min
个人功能测试 :crit, task5, after task4, 75min
section 第3天
个人功能测试完善 :active, task6, 2025-07-03, 60min
个人功能测试优化 :task7, after task6, 45min
个人功能测试优化完善 :task8, after task7, 45min
section 第4天
Jenkins流水线配置 :devops1, task9, 2025-07-04, 30min
Jenkins流水线调试 :devops2, task10, after task9, 45min
SonarQube质检报告 :devops3, task11, after task10, 30min
SonarQube质检分析 :devops4, task12, after task11, 45min
section 第5天
DevOps环境配置 :devops5, task13, 2025-07-05, 60min
小组功能整合 :crit, task14, after task13, 45min
集成测试 :active, task15, after task14, 45min
section 第6天
功能整合优化 :task16, 2025-07-06, 45min
集成测试完善 :active, task17, after task16, 45min
提交合并审核流程 :crit, task18, after task17, 30min
section 第7天
项目报告撰写 :active, task19, 2025-07-07, 75min
实验总结与提交 :crit, task20, after task19, 60min
```
### 2.3 详细时间分配
**课堂时间90分钟1.5课时):**
- 项目概述10分钟
- 项目词汇介绍15分钟
- EA项目模型整合20分钟
- 通用功能测试介绍25分钟
- 通用功能测试实践20分钟
**课后时间810分钟13.5小时):**
- 通用功能测试60分钟
- 通用功能测试完善45分钟
- Git提交日志管理30分钟
- 个人功能EA模型45分钟
- 个人功能测试75分钟
- 个人功能测试完善60分钟
- 个人功能测试优化45分钟
- 个人功能测试优化完善45分钟
- Jenkins流水线配置30分钟
- Jenkins流水线调试45分钟
- SonarQube质检报告30分钟
- SonarQube质检分析45分钟
- DevOps环境配置60分钟
- 小组功能整合45分钟
- 集成测试45分钟
- 功能整合优化45分钟
- 集成测试完善45分钟
- 提交合并审核流程30分钟
- 项目报告撰写75分钟
- 实验总结与提交60分钟
**总计900分钟15小时**
### 2.4 进度跟踪表
#### 2.4.1 个人进度跟踪表
| 任务名称 | 预计时间(分钟) | 实际时间(分钟) | 完成状态 | 完成日期 | 备注 |
|---------|--------------|--------------|---------|---------|------|
| 课堂活动 | 90 | | ☐ 未开始 | | |
| 通用功能测试 | 60 | | ☐ 未开始 | | |
| 通用功能测试完善 | 45 | | ☐ 未开始 | | |
| Git提交日志管理 | 30 | | ☐ 未开始 | | |
| 个人功能EA模型 | 45 | | ☐ 未开始 | | |
| 个人功能测试 | 75 | | ☐ 未开始 | | |
| 个人功能测试完善 | 60 | | ☐ 未开始 | | |
| 个人功能测试优化 | 45 | | ☐ 未开始 | | |
| 个人功能测试优化完善 | 45 | | ☐ 未开始 | | |
| Jenkins流水线配置 | 30 | | ☐ 未开始 | | |
| Jenkins流水线调试 | 45 | | ☐ 未开始 | | |
| SonarQube质检报告 | 30 | | ☐ 未开始 | | |
| SonarQube质检分析 | 45 | | ☐ 未开始 | | |
| DevOps环境配置 | 60 | | ☐ 未开始 | | |
| 小组功能整合 | 45 | | ☐ 未开始 | | |
| 集成测试 | 45 | | ☐ 未开始 | | |
| 功能整合优化 | 45 | | ☐ 未开始 | | |
| 集成测试完善 | 45 | | ☐ 未开始 | | |
| 提交合并审核流程 | 30 | | ☐ 未开始 | | |
| 项目报告撰写 | 75 | | ☐ 未开始 | | |
| 实验总结与提交 | 60 | | ☐ 未开始 | | |
| **总计** | **900** | | | | |
#### 2.4.2 小组进度跟踪表
| 成员姓名 | 负责功能 | 测试完成 | 测试优化 | DevOps配置 | 集成测试 | 报告撰写 |
|---------|---------|---------|---------|-----------|---------|--------|
| 董玉坤 | 用户管理和认证功能 | ☐ 未开始 | ☐ 未开始 | ☐ 未开始 | ☐ 未开始 | ☐ 未开始 |
| 团队成员A | 包裹管理和订单创建功能 | ☐ 未开始 | ☐ 未开始 | ☐ 未开始 | ☐ 未开始 | ☐ 未开始 |
| 团队成员B | 订单处理和交易结算功能 | ☐ 未开始 | ☐ 未开始 | ☐ 未开始 | ☐ 未开始 | ☐ 未开始 |
| 团队成员C | 消息通知和评价反馈功能 | ☐ 未开始 | ☐ 未开始 | ☐ 未开始 | ☐ 未开始 | ☐ 未开始 |
#### 2.4.3 里程碑检查点
| 里程碑 | 检查点 | 预计完成时间 | 实际完成时间 | 完成状态 |
|--------|--------|------------|------------|--------|
| 1 | 课堂活动完成 | 第1天 | | ☐ 未开始 |
| 2 | 通用功能测试完成 | 第2天 | | ☐ 未开始 |
| 3 | 个人功能测试完成 | 第3天 | | ☐ 未开始 |
| 4 | 个人功能测试优化完成 | 第4天 | | ☐ 未开始 |
| 5 | DevOps环境配置完成 | 第5天 | | ☐ 未开始 |
| 6 | 小组功能整合完成 | 第6天 | | ☐ 未开始 |
| 7 | 集成测试完成 | 第7天 | | ☐ 未开始 |
| 8 | 项目报告完成 | 第7天 | | ☐ 未开始 |
| 9 | 实验提交完成 | 第7天 | | ☐ 未开始 |
### 时间管理建议
1. **课堂重点**完成项目词汇、EA模型整合和通用功能测试
2. **课后重点**完成个人功能测试、测试优化、DevOps环境配置、小组功能整合、集成测试和提交合并审核
3. **课后补充完成**:课后时间主要用于测试完善、优化和项目报告撰写
4. **个人功能完整测试**:个人功能完整测试需要充足时间,确保功能完整实现
5. **重点任务**:优先完成通用功能测试、个人功能测试和测试优化,这些是系统测试的核心内容
6. **及时保存**EA模型和测试代码要经常保存避免意外丢失
7. **工具熟练度**提前熟悉IDE/TRAE工具的各项功能可显著提高测试效率
8. **测试质量**:确保测试风格一致、注释完整、符合测试规范
9. **版本管理**合理使用Git进行版本管理定期提交测试代码到仓库
10. **合理时间分配**实验总时长为15小时课堂时间1.5小时课后时间13.5小时,确保质量
11. **DevOps流程**熟悉Jenkins和SonarQube的使用确保测试质量和持续集成
## 目录
1. [实验环境与工具](#1-实验环境与工具)
- 1.1 [EAGitAIOps实验环境](#11-EAGitAIOps实验环境)
- 1.2 [环境配置要求](#12-环境配置要求)
- 1.3 [头歌平台配置](#13-头歌平台配置)
2. [时间估算与分配建议](#2-时间估算与分配建议)
3. [个人功能清单与团队协作](#3-个人功能清单与团队协作)
4. [项目词汇](#4-项目词汇)
5. [EA项目模型整合](#5-ea项目模型整合)
6. [IDE/TRAE编码和测试](#6-idetrae编码和测试)
- 6.1 [通用功能编码和测试](#61-通用功能编码和测试)
- 6.2 [个人功能编码和测试](#62-个人功能编码和测试)
7. [DevOps](#7-devops)
- 7.1 [EA项目](#71-ea项目)
- 7.2 [IDE/TRAE项目](#72-idetrae项目)
- 7.3 [Gitea仓库](#73-gitea仓库)
- 7.4 [eduCoder仓库](#74-educoder仓库)
- 7.5 [Jenkins任务](#75-jenkins任务)
- 7.6 [BlueOcean流水线](#76-blueocean流水线)
- 7.7 [SonarQube质检](#77-sonarqube质检)
8. [提交合并审核](#8-提交合并审核)
9. [项目报告](#9-项目报告)
10. [实验提交内容](#10-实验提交内容)
11. [评分标准](#11-评分标准)
12. [注意事项](#12-注意事项)
## 3. 个人功能清单与团队协作
### 3.1 个人功能清单
每位成员需要在feature_姓名拼音缩写分支中完成以下任务
1. **董玉坤(项目组长)**
- 负责项目整体规划和协调
- 完成用户管理和认证功能的完整编码、测试和质检
- 完成相关功能的完整模型绘制
- 完成相关功能的完整文档记录
- 在feature_dyk分支中完成个人功能
2. **团队成员A开发人员1**
- 负责包裹管理和订单创建功能的完整编码
- 完成相关功能的完整测试
- 完成相关功能的完整质检
- 完成相关功能的完整模型绘制
- 在feature_成员A拼音分支中完成个人功能
3. **团队成员B开发人员2**
- 负责订单处理和交易结算功能的完整编码
- 完成相关功能的完整测试
- 完成相关功能的完整质检
- 完成相关功能的完整模型绘制
- 在feature_成员B拼音分支中完成个人功能
4. **团队成员C开发人员3**
- 负责消息通知和评价反馈功能的完整编码
- 完成相关功能的完整测试
- 完成相关功能的完整质检
- 完成相关功能的完整模型绘制
- 在feature_成员C拼音分支中完成个人功能
### 3.2 个人功能完整编码测试流程
1. **课堂后个人功能完整编码测试(第一阶段)**
- 各成员在个人功能分支中完成个人功能的EA模型整合
- 完成个人功能的通用功能编码和测试
- 完成个人功能的单元测试
- 提交代码到个人功能分支
- 完成个人功能的完整模型绘制
- 完成个人功能的完整文档记录
- 使用TRAE辅助生成和优化文档
2. **课后个人功能完整编码测试(第二阶段)**
- 各成员在个人功能分支中完成个人功能的编码和测试
- 完善个人功能的测试和质检
- 配置Jenkins流水线
- 生成SonarQube质检报告
- 提交代码到个人功能分支
- 完善个人功能的完整模型绘制
- 完善个人功能的完整文档记录
- 使用TRAE辅助生成和优化文档
3. **课后个人功能完整编码测试(第三阶段)**
- 各成员在个人功能分支中完成个人功能的优化
- 完成小组功能合并和集成测试
- 完成提交合并审核流程
- 提交代码到develop分支
- 完善个人功能的完整模型绘制
- 完善个人功能的完整文档记录
- 使用TRAE辅助生成和优化文档
### 3.3 最终提交成果物
1. **个人功能完整编码测试报告**Markdown格式
- 包含个人功能概述、编码过程、测试结果、质检情况等完整内容
- 附有EA绘制的个人功能完整模型图
- 附有个人编码测试甘特图,记录实验五进展
- 使用TRAE辅助生成和优化报告内容
2. **个人功能EA模型文件**.qea格式
- 个人功能需求模型
- 个人功能设计模型
- 个人功能编码模型
- 个人功能测试模型
- 个人编码测试甘特图模型
3. **个人功能头歌项目仓库**
- 包含个人功能的完整代码结构
- 个人功能的完整测试和质检
- 个人功能的DevOps配置和说明文档
- 个人编码测试甘特图文件PNG或PDF格式
- TRAE生成的辅助文档
4. **实验五个人总结报告**
- 个人功能完整编码测试总结
- 个人工具使用心得
- 个人问题与解决方案
- 个人编码测试甘特图分析与总结

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

@ -0,0 +1,341 @@
# 实验一软件项目计划个人报告作业题
## 个人基本信息
- **姓名**:董玉坤
- **学号**2023210447
- **班级**计科231
- **小组**G1组
- **角色**:项目经理(数据统计与可视化)
- **实验日期**2024-11-03
- **提交日期**2024-11-07
## 个人任务完成情况
### 1. 个人负责的功能模块分析
根据您的角色分工,详细分析您负责的功能模块:
#### 项目经理(董玉坤):数据统计与可视化
详细分析快递代取系统中数据统计与可视化功能的需求:
数据采集功能: 收集系统中的代取订单数据、用户行为数据、快递状态数据等各类业务数据
数据处理功能: 对采集的数据进行清洗、转换、聚合等预处理操作
统计分析功能: 实现代取量统计、用户活跃度分析、订单完成率分析、配送效率统计等核心分析功能
可视化展示功能: 通过图表、仪表盘等多种形式直观展示分析结果
导出功能: 支持将统计数据和可视化图表导出为Excel、PDF等格式
描述数据流程和处理机制:
数据采集: 系统各模块产生数据 -> 数据采集层收集 -> 数据仓库存储
数据处理: ETL流程(抽取、转换、加载) -> 数据清洗和标准化 -> 建立数据模型
统计分析: 根据业务需求构建分析指标 -> 执行统计计算 -> 生成分析结果
可视化展示: 选择合适的图表类型 -> 设计仪表盘布局 -> 实时更新数据展示
分析数据质量和系统性能的保障措施:
数据质量保障: 实施数据校验规则, 定期数据审计, 异常数据报警机制
性能优化: 采用数据缓存、索引优化、查询优化等技术提升数据处理速度
数据安全: 实施访问控制, 敏感数据加密, 数据备份和恢复机制
扩展性设计: 模块化架构, 支持新增数据源和分析维度
说明该功能与其他模块的交互关系:
与用户认证模块: 获取用户认证数据, 分析快递代取用户登录行为和注册趋势
与订单管理模块: 获取快递代取订单数据, 分析代取订单频率、区域分布和服务使用情况
与配送管理模块: 获取快递配送状态和效率数据, 分析代取配送员工作模式和服务质量
与管理模块: 为快递代取系统管理员提供决策支持和系统监控
### 2. EA模型设计
请描述您使用EA设计的模型图
- 说明您设计的模型图类型和用途
设计了需求图、用例图、甘特图和软件过程模型图, 全面展示快递代取系统数据统计与可视化功能的各个方面
这些模型图用于明确功能需求、数据流程、开发计划和项目管理方法
- 描述模型图中的主要元素和关系
需求图包含数据采集、数据处理、统计分析、可视化展示等功能需求的层次结构
用例图包含系统管理员、运营人员、数据分析师等参与者和数据统计、报表生成、仪表盘设计等用例
甘特图展示了数据模块各开发任务的时间安排、依赖关系和里程碑
软件过程模型图采用敏捷开发方法, 包含迭代计划和持续集成
- 解释模型图如何体现您的功能模块设计思路
通过层次化的需求分解, 确保数据功能覆盖全面且无遗漏
用例图清晰展示了系统与不同角色的数据交互方式
甘特图帮助识别数据处理流程中的关键路径和资源分配
过程模型图指导开发团队的数据处理协作方式和质量控制
- **具体要求**:请提供以下模型图的设计和分析
- 需求图:展示数据统计与可视化功能的需求层次, 从顶层的数据管理到底层的具体分析指标, 清晰呈现需求之间的包含和依赖关系
- 用例图:描述系统管理员、运营人员、数据分析师三个主要参与者, 以及数据采集、数据处理、统计分析、可视化展示、报表导出等用例之间的关系
- 甘特图:展示数据统计与可视化功能从需求分析到测试部署的完整开发周期, 包括各任务的开始和结束时间、持续时间、依赖关系和负责人分配
- 软件过程模型图采用Scrum敏捷开发方法, 分为4个迭代周期, 每个迭代包含计划、开发、测试和评审四个阶段
- 附上您设计的模型图截图(可放在附录)
### 3. 测试用例设计
根据您负责的功能模块,设计测试用例:
- 列出至少5个关键测试用例
TC001: 数据采集功能测试
TC002: 数据统计分析测试
TC003: 可视化图表展示测试
TC004: 报表导出功能测试
TC005: 数据更新与实时性测试
- 每个测试用例包括:测试目的、输入数据、预期结果、测试步骤
TC001: 快递数据采集功能测试
测试目的: 验证快递代取系统能够正确采集各模块产生的业务数据
输入数据: 模拟代取订单数据、用户行为数据、快递状态数据等
预期结果: 快递相关数据被成功采集并存储到数据仓库
测试步骤:
模拟创建快递代取订单操作
模拟用户登录、查询快递订单等行为
模拟快递配送状态更新操作
检查数据仓库中是否成功存储了相应的原始快递数据
验证数据采集的完整性和准确性
TC002: 快递数据统计分析测试
测试目的: 验证快递代取系统能够正确执行各类统计分析功能
输入数据: 选择分析维度(时间、区域、订单类型等)、设置统计指标
预期结果: 系统返回准确的快递数据统计分析结果
测试步骤:
登录快递代取系统, 进入数据统计页面
选择按日/周/月统计快递代取量
选择按快递订单类型统计分布
设置其他分析条件
点击分析按钮
验证统计结果的准确性(与手动计算对比)
TC003: 快递数据可视化图表展示测试
测试目的: 验证快递代取系统各类数据可视化图表能够正确展示
输入数据: 选择图表类型(柱状图、折线图、饼图等)、选择快递数据源
预期结果: 快递数据图表正确渲染, 数据展示准确, 交互功能正常
测试步骤:
进入快递代取系统可视化展示页面
选择快递代取订单趋势分析, 查看折线图
选择快递订单类型分布, 查看饼图
选择区域快递代取量对比, 查看柱状图
验证图表显示是否正确
测试图表的交互功能(缩放、悬停提示等)
TC004: 快递数据报表导出功能测试
测试目的: 验证快递代取系统能够正确导出统计数据和图表
输入数据: 选择快递报表类型、设置导出格式(Excel、PDF)
预期结果: 成功导出快递数据文件, 文件内容完整准确
测试步骤:
生成快递数据统计分析结果和可视化图表
选择导出为Excel格式
选择导出为PDF格式
检查导出文件是否成功生成
验证导出文件的内容是否完整准确
验证文件格式是否符合预期
TC005: 快递数据更新与实时性测试
测试目的: 验证快递代取系统能够及时更新数据并保持实时性
输入数据: 新产生的快递代取业务数据、时间间隔设置
预期结果: 快递数据更新及时, 统计结果和可视化图表随之更新
测试步骤:
设置数据更新频率(如每5分钟)
在快递代取系统中产生新的订单、配送状态等业务数据
等待指定时间间隔
检查数据仓库中的快递相关数据是否已更新
验证快递统计分析结果是否已更新
验证快递数据可视化图表是否已更新
测试极端情况下(高并发快递订单)的数据更新性能
- 说明测试用例覆盖的功能点和边界条件
覆盖了数据统计与可视化的核心功能: 数据采集、统计分析、可视化展示、报表导出
覆盖了性能和实时性要求: 数据更新频率、并发处理能力、响应时间
边界条件包括: 数据量极限测试、时间范围边界、不同格式文件导出、高并发订单场景
- 分析测试用例的优先级和执行顺序
优先级: TC001 > TC002 > TC003 > TC005 > TC004
执行顺序: 按照优先级顺序执行, 确保数据采集和分析功能正常后再测试可视化展示和实时性, 最后测试导出功能
### 4. 个人工作总结与甘特图分析
- 描述您在实验一中的主要工作内容和完成情况
完成了快递代取系统中数据统计与可视化功能模块的需求分析和详细设计
使用EA工具创建了需求图、用例图、甘特图和软件过程模型图
设计了5个关键测试用例, 覆盖了数据采集、统计分析、可视化展示等核心功能
参与了团队讨论, 明确了与其他模块的数据交互接口定义
完成了个人报告的编写, 详细记录了设计思路和实现计划
- 分析您负责功能模块在项目甘特图中的时间安排和进度控制
数据统计与可视化模块计划在项目的第4周完成, 为期4周
第2周主要进行需求分析和EA建模(已按时完成)
第3周计划进行详细设计和接口定义(按进度进行中)
第4周计划进行单元测试和集成测试(待完成)
通过甘特图有效识别了关键路径, 确保了进度符合项目总体计划
- 分析工作中遇到的主要问题和解决方案
问题1: 数据需求不明确 解决方案: 查阅数据分析最佳实践, 咨询团队成员, 明确了数据采集范围和分析维度
问题2: 数据处理流程复杂 解决方案: 采用ETL架构模式, 清晰定义了数据流转的各个阶段和转换规则
问题3: 可视化效果要求高 解决方案: 研究了主流可视化库的特性, 设计了符合用户体验的图表展示方案
- 总结您在本次实验中的收获和体会
深入理解了数据统计与可视化在软件系统中的重要性, 特别是在业务决策支持方面的价值
掌握了使用EA工具进行系统建模的方法和技巧, 提高了系统设计能力
学会了如何设计针对数据处理功能的全面测试用例, 确保数据质量和系统性能
体验了团队协作开发的流程, 提高了跨模块数据交互设计的能力
- 评估您的工作质量和效率,提出改进措施
工作质量: 需求分析全面, 模型设计合理, 测试用例覆盖充分
工作效率: 前期规划充分, 执行过程顺利, 基本按照计划完成
改进措施:
加强对数据可视化技术的深入研究, 提升图表展示效果和用户体验
进一步优化数据处理流程, 提高大数据量下的系统性能
增加与团队成员的沟通频率, 确保数据接口定义的一致性和准确性
### 5. 甘特图应用分析
- 说明您负责的功能模块在甘特图中的时间节点和工期安排
数据统计与可视化模块计划在2024年11月2日至12月20日期间进行
具体时间节点:
需求分析与建模: 11月2日-11月10日(8天)
详细设计与接口定义: 11月11日-11月30日(19天)
单元测试与集成测试: 12月1日-12月20日(20天)
- 分析您的工作与其他团队成员工作的依赖关系
依赖用户认证模块: 需要用户认证模块提供用户信息和登录数据接口
依赖订单管理模块: 需要订单管理模块提供代取订单数据接口
依赖配送管理模块: 需要配送管理模块提供配送状态和效率数据
被管理模块依赖: 为管理员决策提供数据分析支持
- 讨论甘特图中关键路径对您工作的影响
数据采集功能是项目的关键路径之一, 直接影响后续的数据分析和可视化流程
数据接口定义工作需要优先完成, 以确保各模块数据能够正确集成
通过甘特图识别出关键路径后, 调整了工作优先级, 确保关键任务按时完成
- 评估甘特图对个人工作计划的指导价值
甘特图帮助我清晰地了解了数据统计与可视化模块在整个项目中的时间框架和任务分配
通过甘特图识别了数据处理各环节之间的依赖关系, 合理安排了工作顺序
甘特图提供了可视化的进度跟踪方式, 及时发现并解决数据接口定义和处理流程中的进度偏差
甘特图促进了与各数据源模块负责人之间的协调和沟通, 确保数据集成工作顺利进行
## 实验一相关问题思考
### 问题1项目计划的重要性
- 分析软件项目计划对整个软件开发过程的影响
提供明确的项目目标和范围, 避免需求蔓延和范围变更
合理分配资源, 确保人力、时间和预算的有效利用
设定清晰的里程碑和交付物, 便于项目跟踪和评估
提前识别潜在风险和问题, 制定应对策略
促进团队成员之间的沟通和协作, 确保理解一致
- 结合快递代取系统项目,说明项目计划如何指导后续开发工作
明确了系统的四大核心模块: 用户认证、订单管理、配送管理、数据统计与可视化, 为开发工作提供了清晰的方向
通过详细的功能分解, 将复杂的业务需求转化为可执行的开发任务
制定了合理的时间计划, 确保各模块开发工作有序进行, 避免资源冲突
在数据统计与可视化模块中, 通过项目计划明确了与其他模块的数据接口定义和集成时间点
提前规划了测试策略和验收标准, 为数据质量和系统性能保证工作奠定了基础
### 问题2甘特图的应用价值
- 分析甘特图在项目管理中的作用和优势
直观展示项目的时间线和任务安排, 便于全局把握项目进度
清晰标识任务之间的依赖关系, 帮助识别关键路径
便于资源分配和任务调度, 确保资源利用最大化
提供进度跟踪和偏差分析的可视化工具
促进团队沟通, 使所有成员了解自己的工作时间安排和责任
- 结合快递代取系统项目,说明甘特图如何帮助控制项目进度
在数据统计与可视化模块中, 通过甘特图明确了每个功能点的开始和结束时间, 为日常工作提供了参考
识别出数据采集和接口定义是关键路径任务, 优先分配资源确保按时完成
通过甘特图跟踪发现数据处理流程开发进度滞后, 及时调整工作计划, 加班完成以避免影响后续工作
在与订单管理模块和配送管理模块的集成工作中, 甘特图帮助协调了数据接口开发和测试的同步进行
定期对照甘特图检查进度, 发现偏差及时采取措施, 确保整个项目按时交付
## 工具使用体会
### EAEnterprise Architect使用体会
- 描述您使用EA的主要功能和操作流程
使用EA创建了需求图、用例图、甘特图和软件过程模型图
操作流程: 新建项目 -> 创建包结构 -> 添加图元素 -> 设置元素属性 -> 建立元素关系 -> 美化图表 -> 导出图片
学习了如何使用EA的各种图表模板和工具, 如需求层次图、用例图工具等
- 分析EA在软件建模中的优势和不足
优势: 支持多种UML图表类型, 功能全面; 元素之间的关系设置灵活; 支持模型图的导出和共享; 提供了项目管理功能
不足: 界面复杂, 学习曲线较陡; 某些操作步骤繁琐; 性能在大型项目中可能会下降; 部分高级功能需要付费
- 分享您在使用EA过程中遇到的困难和解决方法
困难1: 元素之间的关系连线混乱, 影响图表美观 解决方法: 使用EA的自动布局功能, 手动调整连线路径, 使用连接器样式设置
困难2: 找不到某些图表模板和工具 解决方法: 查阅EA官方文档, 观看教程视频, 向同学请教
困难3: 导出的图片质量不佳 解决方法: 调整导出设置, 选择更高的分辨率, 使用矢量格式导出
- 提出改进EA使用效率的建议
提前规划好模型的结构和组织方式
使用EA的快捷键和工具栏按钮提高操作速度
善用EA的模板功能, 避免重复创建类似元素
定期保存工作, 避免数据丢失
### TRAE辅助工具使用体会
- 描述您使用TRAE辅助工具的功能和体验
使用TRAE辅助编写项目文档和代码注释
体验了AI辅助生成文本内容的便捷性
利用TRAE的智能提示功能, 提高了文档编写效率
- 分析TRAE在文档生成中的价值和局限性
价值: 节省了文档编写的时间; 提供了结构化的文档模板; 帮助快速生成初稿; 减少了重复劳动
局限性: 生成的内容有时过于通用, 需要进一步个性化修改; 对特定领域知识的理解有限; 在处理复杂逻辑关系时可能不够准确
- 分享您在使用TRAE过程中的心得体会
TRAE是一个很好的辅助工具, 但不能完全替代人工思考和创作
正确的提示词和引导对获得高质量输出至关重要
需要对AI生成的内容进行审核和修改, 确保准确性和专业性
- 讨论AI辅助工具在软件开发中的应用前景
随着技术发展, AI辅助工具将在代码生成、文档编写、测试用例设计等方面发挥更大作用
可能会改变软件开发的工作方式, 使开发人员能够专注于更具创造性的工作
需要注意AI工具的局限性, 避免过度依赖
### Git版本控制使用体会
- 描述您使用Git进行版本控制的基本操作
学习了Git的基本命令: init、add、commit、push、pull、branch等
实际操作了代码的提交、分支创建、合并等操作
使用Git进行团队协作, 提交了个人负责模块的代码
- 分析Git在团队协作开发中的重要性
实现了代码的版本管理, 便于查看历史记录和回滚
支持多人同时开发, 避免代码冲突
提供了分支管理功能, 便于并行开发和功能隔离
记录了每次代码变更的详细信息, 便于项目管理和问题追溯
- 分享您在使用Git过程中遇到的问题和解决方法
问题1: 合并分支时遇到代码冲突 解决方法: 仔细分析冲突内容, 手动编辑解决冲突, 然后重新提交
问题2: 忘记提交某些文件导致版本不一致 解决方法: 使用git status检查状态, 确保所有修改的文件都被正确添加和提交
问题3: 误删除了重要文件 解决方法: 使用git checkout命令从历史版本恢复文件
- 讨论Git分支管理策略的优缺点
主分支保护策略: 保护master/main分支, 通过Pull Request进行代码合并, 保证代码质量
功能分支策略: 为每个新功能创建独立分支, 开发完成后合并到主分支, 便于功能隔离和并行开发
发布分支策略: 创建专门的发布分支, 进行预发布测试和bug修复, 稳定后合并到主分支
优缺点: 分支管理提高了代码质量和开发效率, 但需要团队成员理解和遵守分支规范, 否则可能导致分支混乱
## 附录
### 附录A个人设计的EA模型图
[请在此处插入您设计的EA模型图截图]
快递代取系统用例图:![alt text](a6d52c2769ee05cbd5f8b7a680fa3902.png)
快递代取系统需求图:![alt text](c90fcab92f4f0ca71d56805cd1f4a508.png)
快递代取系统甘特图:![alt text](99328be74142265d8da6c32b9bea0cb8.png)
### 附录B个人测试用例表
| 测试用例ID | 测试功能 | 测试目的 | 输入数据 | 预期结果 | 测试步骤 | 优先级 |
|-----------|---------|---------|---------|---------|---------|--------|
| TC001 | 数据采集功能测试 | 验证系统能够正确采集各模块产生的业务数据 | 模拟代取订单数据、用户行为数据、快递状态数据等 | 数据被成功采集并存储到数据仓库 | 模拟代取订单操作,检查数据仓库存储情况 | 高 |
| TC002 | 数据统计分析测试 | 验证系统能够正确执行各类统计分析功能 | 选择分析维度、设置统计指标 | 系统返回准确的统计分析结果 | 登录系统,选择统计条件,验证结果准确性 | 高 |
| TC003 | 可视化图表展示测试 | 验证各类数据可视化图表能够正确展示 | 选择图表类型、选择数据源 | 图表正确渲染,数据展示准确 | 进入可视化页面,测试各类图表和交互功能 | 中 |
| TC004 | 报表导出功能测试 | 验证系统能够正确导出统计数据和图表 | 选择报表类型、设置导出格式 | 成功导出文件,内容完整准确 | 生成结果,导出文件,验证文件内容和格式 | 低 |
| TC005 | 数据更新与实时性测试 | 验证系统能够及时更新数据并保持实时性 | 新产生的业务数据、时间间隔设置 | 数据更新及时,图表随之更新 | 设置更新频率,产生新数据,验证更新情况 | 中 |
### 附录C个人工作日志
| 日期 | 工作内容 | 工作时长 | 完成情况 | 遇到的问题 | 解决方案 |
|------|---------|---------|---------|-----------|---------|
| 2024-11-02 | 需求分析和建模准备 | 4小时 | 完成 | 需求不明确 | 查阅资料,咨询团队 |
| 2024-11-03 | 使用EA创建需求图和用例图 | 6小时 | 完成 | 元素关系复杂 | 使用自动布局功能 |
| 2024-11-04 | 创建甘特图和软件过程模型图 | 5小时 | 完成 | 时间安排不合理 | 调整任务优先级 |
| 2024-11-05 | 设计测试用例 | 4小时 | 完成 | 测试场景覆盖不全 | 参考测试用例设计标准 |

@ -0,0 +1,476 @@
# 实验三软件系统设计操作指南
**实验课时安排:** 6课时270分钟三次课程
> **版本信息**v1.0
> **更新日期**2024-11-23
> **适用项目**:快递代取系统
> **适用团队**G9组董玉坤、程璟琦、董文远、范孝宝
> **预计完成时间**1800分钟约30小时
> **实验环境**EAGitOpsEnterprise Architect + Git + Gitea + Jenkins + SonarQube + PostgreSQL + 头歌平台)
## 个人基本信息
- **姓名**:董玉坤
- **学号**2023210447
- **班级**计科231
- **小组**G1组
- **角色**:项目经理、数据统计与可视化开发人员
- **实验日期**2024-11-23
- **提交日期**2024-12-15
## 实验目的
1. 掌握软件系统设计的基本方法和流程
2. 学习使用Enterprise Architect进行系统建模
3. 理解和应用UML图进行软件系统设计
4. 掌握数据库设计和物理模型转换方法
5. 培养团队协作和文档编写能力
## 1. 实验环境与工具
### 1.1 EAGitOps实验环境
本实验使用EAGitOpsEnterprise Architect + Git + Gitea + Jenkins + SonarQube + PostgreSQL + 头歌平台)集成环境,提供完整的软件工程工具链支持。
#### 1.1.1 环境组件
| 工具类别 | 工具名称 | 版本要求 | 用途说明 |
|---------|---------|---------|--------|
| 建模工具 | Enterprise Architect | v13.0以上 | 系统设计建模、UML图绘制 |
| 版本控制 | Git | v2.0以上 | 代码版本管理 |
| 数据库 | PostgreSQL | v12.0以上 | 数据存储与管理 |
| 开发环境 | TRAE | v1.0以上 | 文档生成与代码优化 |
| 构建工具 | Maven | v3.6以上 | 项目构建与依赖管理 |
| 持续集成 | Jenkins | v2.300以上 | 自动化构建与测试 |
| 代码质量 | SonarQube | v8.0以上 | 代码质量分析 |
| 代码仓库(本地) | Gitea | v1.16以上 | 本地Git仓库管理服务 |
| 代码仓库(云端) | 头歌Gitea | - | 云端Git仓库托管平台 |
| 实验平台 | 头歌平台 | - | 在线实验和项目托管平台 |
#### 1.1.2 EAGitOps环境启动顺序
1. **启动PostgreSQL数据库服务**
```
net start postgresql-x64-14
```
2. **启动Gitea代码仓库服务**
```
cd /d E:\eagitops\gitea
gitea.exe web
```
3. **启动Tomcat服务器Jenkins**
```
cd /d E:\eagitops\tomcat\bin
startup.bat
```
4. **启动SonarQube服务**
```
cd /d E:\eagitops\sonarqube\bin\windows-x86-64
StartSonar.bat
```
#### 1.1.3 EAGitOps环境访问地址
| 服务名称 | 访问地址 | 默认账号 | 默认密码 |
|---------|---------|---------|--------|
| Gitea本地 | http://localhost:3000 | root | password |
| 头歌Gitea云端 | https://bdgit.educoder.net | 个人账号 | 个人密码 |
| 头歌平台 | https://www.educoder.net | 个人账号 | 个人密码 |
| Jenkins | http://localhost:8080/jenkins | admin | admin |
| SonarQube | http://localhost:9000 | admin | admin |
| PostgreSQL | localhost:5432 | postgres | postgres |
**头歌项目仓库地址:**
- 项目名称CHZU_CS231_SEBG09
- 仓库地址https://bdgit.educoder.net/pu6zrsfoy/CHZU_CS231_SEBG09.git
- 克隆命令:`git clone https://bdgit.educoder.net/pu6zrsfoy/CHZU_CS231_SEBG09.git`
### 1.2 环境配置要求
- **操作系统**Windows 11
- **内存要求**最低8GB推荐16GB
- **存储空间**至少20GB可用空间
- **网络要求**:稳定的互联网连接(用于工具下载、更新和头歌平台访问)
- **EAGitOps安装路径**E:\eagitops\(默认路径,可根据实际情况调整)
- **头歌平台账号**:需要有效的头歌平台账号和密码
- **Git配置**需要配置Git用户名和邮箱
```bash
git config --global user.name "董玉坤"
git config --global user.email "2023210447@chzu.edu.cn"
```
### 1.3 头歌平台配置
#### 1.3.1 头歌平台注册和登录
1. 访问头歌平台https://www.educoder.net
2. 使用学校提供的账号登录或注册新账号
3. 完善个人信息,确保账号可以正常使用
#### 1.3.2 头歌仓库配置
1. 访问头歌Giteahttps://bdgit.educoder.net
2. 使用头歌平台账号登录
3. 找到项目仓库CHZU_CS231_SEBG09
4. 配置SSH密钥推荐或使用HTTPS方式克隆
**配置SSH密钥步骤**
```bash
# 生成SSH密钥如果还没有
ssh-keygen -t rsa -C "2023210447@chzu.edu.cn"
# 查看公钥
cat ~/.ssh/id_rsa.pub
# 复制公钥内容添加到头歌Gitea的SSH密钥设置中
```
#### 1.3.3 克隆项目仓库
```bash
# HTTPS方式需要输入用户名和密码
git clone https://bdgit.educoder.net/pu6zrsfoy/CHZU_CS231_SEBG09.git
# SSH方式需要先配置SSH密钥
git clone git@bdgit.educoder.net:pu6zrsfoy/CHZU_CS231_SEBG09.git
# 进入项目目录
cd CHZU_CS231_SEBG09
# 查看远程仓库
git remote -v
# 创建个人功能分支
git checkout -b feature_dyk
```
## 2. 时间估算与分配建议
### 总体时间安排
**实验三总时间1800分钟30小时**
- 课堂时间270分钟4.5小时3次课程
- 课后时间1530分钟25.5小时)
### 详细时间分配
**第一次课程课堂时间90分钟1.5课时):**
- 项目概述10分钟
- 需求建模回顾15分钟
- 用例建模回顾20分钟
- 鲁棒建模25分钟
- 分析类图20分钟
**第一次课程后补充时间510分钟8.5小时):**
- 界面设计60分钟
- 数据设计90分钟
- 设计类120分钟
- 行为建模120分钟
- 包图30分钟
- 组件模型30分钟
- 项目报告第一部分60分钟
**第二次课程课堂时间90分钟1.5课时):**
- 编码建模30分钟
- 测试建模30分钟
- 测试管理30分钟
**第二次课程后补充时间510分钟8.5小时):**
- 部署建模60分钟
- 跟踪建模60分钟
- 登录流水线配置90分钟
- 个人功能完整开发测试180分钟
- 项目报告第二部分90分钟
- 模型优化与完善30分钟
**第三次课程课堂时间90分钟1.5课时):**
- 小组合并功能30分钟
- 集成测试30分钟
- 系统测试30分钟
**第三次课程后补充时间510分钟8.5小时):**
- 验收测试60分钟
- 系统部署90分钟
- 运维管理90分钟
- 个人功能完整开发测试优化150分钟
- 项目报告第三部分90分钟
- 实验总结与提交30分钟
**总计1800分钟30小时**
### 个人甘特图
```
Gantt chart for 董玉坤(数据统计与可视化模块)
任务名称 | 开始日期 | 结束日期 | 持续时间 | 任务类型
-----------------|-----------|-----------|---------|--------
需求分析回顾 | 2024-11-23 | 2024-11-23 | 1天 | 规划
数据采集设计 | 2024-11-24 | 2024-11-26 | 3天 | 设计
数据处理模块设计 | 2024-11-27 | 2024-11-29 | 3天 | 设计
统计分析模型设计 | 2024-11-30 | 2024-12-02 | 3天 | 设计
可视化界面设计 | 2024-12-03 | 2024-12-05 | 3天 | 设计
数据库设计 | 2024-12-06 | 2024-12-07 | 2天 | 设计
代码实现 | 2024-12-08 | 2024-12-12 | 5天 | 开发
单元测试 | 2024-12-13 | 2024-12-14 | 2天 | 测试
文档编写 | 2024-12-15 | 2024-12-15 | 1天 | 文档
```
## 3. 快递代取系统概述
### 3.1 项目背景
快递代取系统是现代校园生活服务的重要组成部分,旨在为学生提供便捷、高效、安全的快递代取服务。随着电子商务的快速发展,校园快递量激增,传统的取件方式已无法满足学生的需求,快递代取系统的开发可以有效解决这一问题,提高校园生活服务质量和效率。
### 3.2 项目目标
- 构建稳定、安全、高效的快递代取系统,支持核心快递代取业务操作
- 实现用户自助服务功能,包括注册登录、下单预约、支付结算、消息通知等
- 建立数据统计与可视化功能,为系统运营管理提供数据支持
- 确保系统性能达到校园使用标准,满足高峰期用户需求
- 提高系统安全性,保障用户信息和支付安全
### 3.3 系统主要功能模块
1. **注册登录模块**(范孝宝负责)
- 人员注册功能
- 账号登录功能
- 密码找回功能
2. **人员交互功能**(董文远负责)
- 用户界面交互设计
- 任务发布与接受
- 消息通信功能
- 权限控制管理
3. **订单与支付管理模块**(程璟琦负责)
- 订单创建与管理
- 支付处理功能
- 订单状态流转控制
- 支付记录管理
4. **数据统计与可视化模块**(董玉坤负责)
- 数据采集功能
- 数据处理功能
- 统计分析功能
- 可视化展示功能
- 数据导出功能
### 3.4 数据统计与可视化模块需求
作为数据统计与可视化模块的负责人,我的主要任务是设计和实现以下功能:
#### 3.4.1 数据采集功能
- 从系统其他模块(订单、用户、任务)收集各类数据
- 设计数据采集接口和触发器
- 确保数据采集的实时性和完整性
#### 3.4.2 数据处理功能
- 对采集的数据进行清洗、转换和预处理
- 实现数据聚合和计算功能
- 设计数据处理算法和流程
#### 3.4.3 统计分析功能
- 实现订单量统计分析(日/周/月趋势)
- 设计用户活跃度分析功能
- 实现代取效率和服务质量评估
- 提供多维度数据分析能力
#### 3.4.4 可视化展示功能
- 设计直观的数据可视化界面
- 实现各类图表展示(折线图、柱状图、饼图等)
- 开发数据仪表盘
- 支持交互式数据探索
#### 3.4.5 数据导出功能
- 支持将统计数据导出为Excel格式
- 支持将图表导出为图片格式
- 支持将分析报告导出为PDF格式
## 4. 软件系统设计
### 4.1 系统架构设计
#### 4.1.1 总体架构
快递代取系统采用分层架构设计,包括:
1. **表现层**:负责用户界面展示和交互
2. **业务层**:实现核心业务逻辑
3. **数据访问层**:处理数据持久化操作
4. **基础设施层**:提供通用服务和组件
#### 4.1.2 数据统计与可视化模块架构
数据统计与可视化模块采用以下架构:
```
数据采集层 → 数据存储层 → 数据处理层 → 统计分析层 → 可视化展示层
```
### 4.2 类图设计
#### 4.2.1 数据统计与可视化模块核心类
1. **DataCollector类**
- 负责从系统各模块采集数据
- 主要方法collectOrderData(), collectUserData(), collectTaskData()
2. **DataProcessor类**
- 负责数据清洗和预处理
- 主要方法cleanData(), transformData(), aggregateData()
3. **StatisticAnalyzer类**
- 负责数据分析和统计计算
- 主要方法analyzeOrderTrend(), analyzeUserActivity(), calculateEfficiency()
4. **VisualizationService类**
- 负责数据可视化处理
- 主要方法generateChart(), createDashboard(), exportVisualization()
5. **ExportService类**
- 负责数据导出功能
- 主要方法exportToExcel(), exportToPDF(), exportToImage()
### 4.3 数据库设计
#### 4.3.1 数据统计模块数据库表设计
**1. `statistics_order`表(订单统计数据)**
```sql
CREATE TABLE statistics_order (
id SERIAL PRIMARY KEY,
date DATE NOT NULL,
total_orders INT NOT NULL DEFAULT 0,
completed_orders INT NOT NULL DEFAULT 0,
pending_orders INT NOT NULL DEFAULT 0,
cancelled_orders INT NOT NULL DEFAULT 0,
avg_processing_time DECIMAL(10,2),
total_amount DECIMAL(10,2) NOT NULL DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```
**2. `statistics_user`表(用户统计数据)**
```sql
CREATE TABLE statistics_user (
id SERIAL PRIMARY KEY,
date DATE NOT NULL,
active_users INT NOT NULL DEFAULT 0,
new_registrations INT NOT NULL DEFAULT 0,
avg_login_count DECIMAL(10,2),
avg_order_count DECIMAL(10,2),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```
**3. `statistics_performance`表(绩效统计数据)**
```sql
CREATE TABLE statistics_performance (
id SERIAL PRIMARY KEY,
courier_id INT NOT NULL,
date DATE NOT NULL,
orders_completed INT NOT NULL DEFAULT 0,
avg_rating DECIMAL(3,2),
total_earnings DECIMAL(10,2) NOT NULL DEFAULT 0,
efficiency_score DECIMAL(5,2),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (courier_id) REFERENCES users(id)
);
```
**4. `dashboard_config`表(仪表盘配置)**
```sql
CREATE TABLE dashboard_config (
id SERIAL PRIMARY KEY,
user_id INT NOT NULL,
dashboard_name VARCHAR(100) NOT NULL,
config_json TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
);
```
### 4.4 API接口设计
#### 4.4.1 数据统计与可视化模块API接口
**1. 统计数据接口**
- `GET /api/statistics/orders?startDate=2024-11-01&endDate=2024-11-30` - 获取订单统计数据
- `GET /api/statistics/users?startDate=2024-11-01&endDate=2024-11-30` - 获取用户统计数据
- `GET /api/statistics/performance?courierId=1&startDate=2024-11-01&endDate=2024-11-30` - 获取绩效统计数据
**2. 可视化接口**
- `POST /api/visualization/generate` - 生成可视化图表
- `GET /api/visualization/dashboard?userId=1` - 获取用户仪表盘配置
- `POST /api/visualization/dashboard` - 保存仪表盘配置
**3. 导出接口**
- `GET /api/export/excel?dataType=orders&startDate=2024-11-01&endDate=2024-11-30` - 导出Excel数据
- `GET /api/export/pdf?reportId=1` - 导出PDF报告
- `GET /api/export/image?chartId=1` - 导出图表图片
## 5. 实现计划
### 5.1 开发环境配置
1. **JDK配置**安装JDK 11+
2. **Maven配置**使用Maven 3.6+管理依赖
3. **开发工具**IntelliJ IDEA或Eclipse
4. **前端框架**React + ECharts用于可视化
5. **后端框架**Spring Boot 2.7+
6. **数据库**PostgreSQL 12+
### 5.2 详细开发计划
#### 5.2.1 数据采集模块实现
1. 创建数据采集接口和实现类
2. 配置数据采集触发器
3. 实现数据验证和错误处理
#### 5.2.2 数据处理模块实现
1. 开发数据清洗和预处理算法
2. 实现数据聚合功能
3. 设计数据缓存机制
#### 5.2.3 统计分析模块实现
1. 实现各类统计分析算法
2. 开发数据分析API
3. 设计分析结果缓存策略
#### 5.2.4 可视化模块实现
1. 设计和开发可视化页面
2. 集成ECharts图表库
3. 实现交互式数据探索功能
#### 5.2.5 导出功能实现
1. 集成Excel导出库Apache POI
2. 实现PDF报告生成iText
3. 开发图表图片导出功能
### 5.3 测试计划
#### 5.3.1 单元测试
1. 对每个核心类进行单元测试
2. 测试数据采集和处理逻辑
3. 测试统计分析算法正确性
#### 5.3.2 集成测试
1. 测试模块间接口调用
2. 验证数据流转正确性
3. 测试与其他模块的集成
#### 5.3.3 性能测试
1. 测试大数据量下的系统性能
2. 测试图表生成和数据处理速度
3. 优化性能瓶颈
## 6. 总结与展望
### 6.1 项目总结
本实验通过系统的软件设计过程深入学习了快递代取系统的设计方法特别是数据统计与可视化模块的实现方案。通过使用EAGitOps环境掌握了现代软件工程工具链的使用提升了软件设计和开发能力。
### 6.2 未来展望
1. 增加更多高级数据分析功能,如预测分析和数据挖掘
2. 优化可视化界面,提供更丰富的交互式体验
3. 扩展数据导出格式和报告模板
4. 考虑引入机器学习算法提升数据分析能力
---

@ -0,0 +1,413 @@
# 快递代取系统详细设计报告
## 1. 项目概述
快递代取系统旨在解决高校学生及教职工取件不便的问题,通过系统化的代取流程管理,提高取件效率,减少快递堆积,同时为代取人员提供合理的收益。本报告详细描述了系统的软件架构、模块设计、数据模型、接口设计等内容。
**开发环境**
- 前端HTML/CSS/JavaScript, Vue.js
- 后端Java, Spring Boot
- 数据库PostgreSQL
- 版本控制Git
## 2. 系统架构设计
### 2.1 系统架构总览
快递代取系统采用三层架构设计:
- **表示层**:负责用户界面展示和交互
- **业务逻辑层**:处理核心业务逻辑
- **数据访问层**:负责与数据库交互
### 2.2 主要模块划分
系统划分为以下核心模块:
1. **用户管理模块**:负责用户注册、登录、个人信息管理
2. **快递信息管理模块**:处理快递录入、查询、状态更新
3. **订单管理模块**:管理代取订单的创建、接单、完成
4. **支付模块**:处理订单支付、佣金结算
5. **数据统计与可视化模块**:生成各类统计报表和数据可视化图表
6. **通知模块**:发送系统通知和消息提醒
## 3. 数据模型设计
### 3.1 实体关系图(ERD)
```
用户(Users)
├── 主键: user_id (PK)
├── 用户类型(user_type): 寄件人、收件人、代取人
├── 用户名(username)
├── 密码(password)
├── 手机号(phone)
├── 姓名(real_name)
├── 宿舍信息(dormitory)
└── 创建时间(created_at)
快递(Express)
├── 主键: express_id (PK)
├── 快递单号(tracking_number)
├── 快递公司(delivery_company)
├── 收件人ID(recipient_id) (FK -> Users.user_id)
├── 取件码(pickup_code)
├── 存放位置(storage_location)
├── 快递状态(express_status): 待领取、已领取、代取中、已完成
└── 录入时间(created_at)
订单(Orders)
├── 主键: order_id (PK)
├── 快递ID(express_id) (FK -> Express.express_id)
├── 寄件人ID(sender_id) (FK -> Users.user_id)
├── 代取人ID(courier_id) (FK -> Users.user_id)
├── 订单状态(order_status): 待接单、处理中、已完成、已取消
├── 佣金金额(commission)
├── 支付状态(payment_status): 未支付、已支付
├── 创建时间(created_at)
└── 完成时间(finished_at)
支付记录(Payments)
├── 主键: payment_id (PK)
├── 订单ID(order_id) (FK -> Orders.order_id)
├── 用户ID(user_id) (FK -> Users.user_id)
├── 支付金额(amount)
├── 支付方式(payment_method)
├── 支付状态(payment_status)
└── 支付时间(payment_time)
```
## 4. 详细模块设计
### 4.1 数据统计与可视化模块设计
#### 4.1.1 模块概述
数据统计与可视化模块负责收集系统运行过程中的各类数据,并进行分析和可视化展示,为管理员和用户提供数据支持和决策依据。该模块由我(董玉坤)负责开发,主要功能包括订单数据统计、用户行为分析、业务趋势预测等。
#### 4.1.2 功能点详细设计
1. **订单数据统计功能**
- 按日/周/月统计订单数量和交易金额
- 统计不同状态订单占比
- 统计最活跃的快递点
2. **用户行为分析功能**
- 统计用户活跃度和留存率
- 分析代取人接单数和完成率
- 分析用户下单和取件时间分布
3. **业务趋势分析功能**
- 生成业务量增长趋势图
- 分析不同时间段的业务高峰期
- 预测未来业务量趋势
#### 4.1.3 类设计
| 类名 | 主要职责 | 关键方法 | 所属文件 |
|-----|---------|---------|--------|
| `DataStatisticsService` | 数据统计服务接口 | `getOrderStatistics()`, `getUserActivityStats()` | service/DataStatisticsService.java |
| `DataStatisticsServiceImpl` | 数据统计服务实现 | 实现DataStatisticsService接口方法 | service/impl/DataStatisticsServiceImpl.java |
| `OrderStatisticsDto` | 订单统计数据传输对象 | 包含订单统计所需字段 | dto/OrderStatisticsDto.java |
| `UserActivityDto` | 用户活跃度统计DTO | 包含用户活跃统计所需字段 | dto/UserActivityDto.java |
| `TrendAnalysisDto` | 趋势分析数据DTO | 包含趋势分析所需字段 | dto/TrendAnalysisDto.java |
| `StatisticsController` | 统计接口控制器 | 提供RESTful API接口 | controller/StatisticsController.java |
| `ChartGenerator` | 图表生成工具类 | `generateBarChart()`, `generatePieChart()`, `generateLineChart()` | util/ChartGenerator.java |
#### 4.1.4 数据库查询设计
**1. 按日统计订单数量和金额**
```sql
SELECT
DATE(created_at) AS date,
COUNT(*) AS order_count,
SUM(commission) AS total_amount
FROM
orders
WHERE
created_at BETWEEN :startDate AND :endDate
GROUP BY
DATE(created_at)
ORDER BY
date;
```
**2. 统计用户活跃度**
```sql
SELECT
DATE(login_time) AS date,
COUNT(DISTINCT user_id) AS active_user_count
FROM
user_login_logs
WHERE
login_time BETWEEN :startDate AND :endDate
GROUP BY
DATE(login_time)
ORDER BY
date;
```
#### 4.1.5 API接口设计
| API路径 | 方法 | 功能描述 | 请求参数 | 成功响应 (200 OK) |
|--------|-----|---------|---------|----------------|
| `/api/statistics/orders` | GET | 获取订单统计数据 | startDate, endDate, type(daily/weekly/monthly) | `{"data":[{"date":"2023-11-01","orderCount":15,"amount":150},{...}]}` |
| `/api/statistics/users/activity` | GET | 获取用户活跃度数据 | startDate, endDate | `{"data":[{"date":"2023-11-01","activeCount":45},{...}]}` |
| `/api/statistics/trends` | GET | 获取业务趋势数据 | months(月数) | `{"data":[{"month":"2023-10","orders":450,"users":120},{...}]}` |
| `/api/statistics/charts/order-status` | GET | 获取订单状态分布图 | format(png/json) | 图表图片或JSON数据 |
## 5. 数据库设计
### 5.1 表结构设计
#### 5.1.1 用户表(users)
```sql
CREATE TABLE users (
user_id SERIAL PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
password VARCHAR(100) NOT NULL,
phone VARCHAR(20) UNIQUE NOT NULL,
real_name VARCHAR(50),
dormitory VARCHAR(50),
user_type VARCHAR(20) NOT NULL, -- sender, receiver, courier
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```
#### 5.1.2 快递表(express)
```sql
CREATE TABLE express (
express_id SERIAL PRIMARY KEY,
tracking_number VARCHAR(50) NOT NULL,
delivery_company VARCHAR(50),
recipient_id INTEGER REFERENCES users(user_id),
pickup_code VARCHAR(20),
storage_location VARCHAR(50),
express_status VARCHAR(20) NOT NULL, -- pending, picked, delivering, completed
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```
#### 5.1.3 订单表(orders)
```sql
CREATE TABLE orders (
order_id SERIAL PRIMARY KEY,
express_id INTEGER REFERENCES express(express_id),
sender_id INTEGER REFERENCES users(user_id),
courier_id INTEGER REFERENCES users(user_id),
order_status VARCHAR(20) NOT NULL, -- pending, processing, completed, cancelled
commission DECIMAL(10,2) NOT NULL,
payment_status VARCHAR(20) NOT NULL, -- unpaid, paid
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
finished_at TIMESTAMP
);
```
#### 5.1.4 支付记录表(payments)
```sql
CREATE TABLE payments (
payment_id SERIAL PRIMARY KEY,
order_id INTEGER REFERENCES orders(order_id),
user_id INTEGER REFERENCES users(user_id),
amount DECIMAL(10,2) NOT NULL,
payment_method VARCHAR(50),
payment_status VARCHAR(20) NOT NULL,
payment_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```
## 6. 系统接口设计
### 6.1 API接口规范
系统采用RESTful风格API设计所有接口返回统一的JSON格式
```json
{
"code": "状态码",
"message": "消息",
"data": "数据"
}
```
### 6.2 数据统计与可视化模块接口
#### 6.2.1 订单统计接口
```
GET /api/statistics/orders?startDate=2023-11-01&endDate=2023-11-30&type=daily
```
**请求参数**
- `startDate`开始日期格式yyyy-MM-dd
- `endDate`结束日期格式yyyy-MM-dd
- `type`统计类型可选值daily(按日)、weekly(按周)、monthly(按月)
**返回数据**
```json
{
"code": "200",
"message": "success",
"data": [
{
"date": "2023-11-01",
"orderCount": 15,
"amount": 150
},
{
"date": "2023-11-02",
"orderCount": 23,
"amount": 230
}
]
}
```
#### 6.2.2 用户活跃度接口
```
GET /api/statistics/users/activity?startDate=2023-11-01&endDate=2023-11-30
```
**请求参数**
- `startDate`开始日期格式yyyy-MM-dd
- `endDate`结束日期格式yyyy-MM-dd
**返回数据**
```json
{
"code": "200",
"message": "success",
"data": [
{
"date": "2023-11-01",
"activeCount": 45
},
{
"date": "2023-11-02",
"activeCount": 52
}
]
}
```
## 7. 前端页面设计
### 7.1 数据统计与可视化页面
数据统计与可视化页面主要包含以下组件:
1. **数据筛选器**:提供时间范围、数据类型等筛选选项
2. **统计概览卡片**:展示关键指标如总订单数、总金额、活跃用户数等
3. **图表展示区**
- 订单趋势折线图
- 订单状态饼图
- 用户活跃度柱状图
- 交易金额热力图
4. **数据表格**:详细数据列表,支持排序和导出
## 8. 代码实现说明
### 8.1 数据统计服务实现
**DataStatisticsService接口定义**
```java
public interface DataStatisticsService {
List<OrderStatisticsDto> getOrderStatistics(Date startDate, Date endDate, String type);
List<UserActivityDto> getUserActivityStats(Date startDate, Date endDate);
List<TrendAnalysisDto> getBusinessTrend(int months);
Map<String, Long> getOrderStatusDistribution();
}
```
**DataStatisticsServiceImpl实现**
```java
@Service
public class DataStatisticsServiceImpl implements DataStatisticsService {
@Autowired
private OrderRepository orderRepository;
@Autowired
private UserRepository userRepository;
@Override
public List<OrderStatisticsDto> getOrderStatistics(Date startDate, Date endDate, String type) {
// 实现订单统计逻辑
// 根据type参数确定分组方式日/周/月)
// 返回统计结果
}
@Override
public List<UserActivityDto> getUserActivityStats(Date startDate, Date endDate) {
// 实现用户活跃度统计逻辑
}
@Override
public List<TrendAnalysisDto> getBusinessTrend(int months) {
// 实现业务趋势分析逻辑
}
@Override
public Map<String, Long> getOrderStatusDistribution() {
// 实现订单状态分布统计逻辑
}
}
```
## 9. 安全性考虑
1. **数据访问权限控制**
- 普通用户只能查看自己的统计数据
- 管理员可以查看所有用户和系统统计数据
- 使用Spring Security实现权限控制
2. **数据传输安全**
- 所有API接口使用HTTPS加密传输
- 使用JWT进行身份验证
3. **防止SQL注入**
- 使用参数化查询和ORM框架
- 避免直接拼接SQL语句
## 10. 部署与集成方案
1. **依赖管理**
- 使用Maven管理项目依赖
- 关键依赖Spring Boot、MyBatis、ECharts、JWT
2. **部署方案**
- 前端部署到Nginx服务器
- 后端部署到Tomcat服务器
- 数据库使用PostgreSQL
3. **集成测试**
- 使用JUnit进行单元测试
- 使用Postman进行接口测试
- 进行系统集成测试确保各模块协调工作
## 11. 测试方案
### 11.1 单元测试
针对数据统计与可视化模块的关键类和方法编写单元测试,确保逻辑正确性。
### 11.2 接口测试
使用Postman对所有API接口进行测试确保接口返回正确的数据格式和内容。
### 11.3 性能测试
测试在大量数据情况下,统计查询和图表生成的性能表现,确保系统响应迅速。
---
**设计报告撰写人**:董玉坤
**学号**2023210447
**日期**2024-11-23

@ -0,0 +1,929 @@
# 实验四软件系统编码:数据分析与可视化功能实现
**实验课时安排:** 2课时90分钟一次课程
> **版本信息**v1.0
> **更新日期**2025-11-24
> **适用项目**:快递代取系统
> **适用团队**G1组董玉坤等成员
> **预计完成时间**900分钟约15小时
> **实验环境**EAGitAIOpsEnterprise Architect + TRAE + Git + Gitea + Jenkins + SonarQube + PostgreSQL + 头歌平台)
**重要提示:** 本文档中的"个人功能"特指董玉坤负责的"数据分析与可视化功能"。
## 1. 实验环境与工具
### 1.1 EAGitAIOps实验环境
本实验使用EAGitAIOpsEnterprise Architect + TRAE + Git + Gitea + Jenkins + SonarQube + PostgreSQL + 头歌平台)集成环境,提供完整的软件工程工具链支持。
#### 1.1.1 环境组件
| 工具类别 | 工具名称 | 版本要求 | 用途说明 |
|---------|---------|---------|---------
| 建模工具 | Enterprise Architect | v17.0以上 | 系统设计建模、UML图绘制 |
| 版本控制 | Git | v2.0以上 | 代码版本管理 |
| 数据库 | PostgreSQL | v17.0以上 | 数据存储与管理 |
| 开发环境 | TRAE | v3.0以上 | 文档生成与代码优化 |
| 构建工具 | Maven | v3.6以上 | 项目构建与依赖管理 |
| 持续集成 | Jenkins | v2.300以上 | 自动化构建与测试 |
| 代码质量 | SonarQube | v9.0以上 | 代码质量分析 |
| 代码仓库(本地) | Gitea | v1.16以上 | 本地Git仓库管理服务 |
| 代码仓库(云端) | 头歌Gitea | - | 云端Git仓库托管平台 |
| 实验平台 | 头歌平台 | - | 在线实验和项目托管平台 |
#### 1.1.2 EAGitAIOps环境启动顺序
1. **启动PostgreSQL数据库服务**
```
net start postgresql-x64-17
```
2. **启动Gitea代码仓库服务**
```
cd /d E:\EAGitAIOps\gitea
gitea.exe web
```
3. **启动Tomcat服务器Jenkins**
```
cd /d E:\EAGitAIOps\tomcat\bin
startup.bat
```
4. **启动SonarQube服务**
```
cd /d E:\EAGitAIOps\sonarqube\bin\windows-x86-64
StartSonar.bat
```
#### 1.1.3 EAGitAIOps环境访问地址
| 服务名称 | 访问地址 | 默认账号 | 默认密码 |
|---------|---------|---------|---------
| Gitea本地 | http://localhost:3000 | root | password |
| 头歌Gitea云端 | https://bdgit.educoder.net | 个人账号 | 个人密码 |
| 头歌平台 | https://www.educoder.net | 个人账号 | 个人密码 |
| Jenkins | http://localhost:8084/jenkins | admin | admin |
| SonarQube | http://localhost:9000 | admin | admin |
| PostgreSQL | localhost:5432 | postgres | postgres |
**头歌项目仓库地址:**
- 项目名称CHZU_CS231_SEBG09
- 仓库地址https://bdgit.educoder.net/pu6zrsfoy/CHZU_CS231_SEBG09.git
- 克隆命令:`git clone https://bdgit.educoder.net/pu6zrsfoy/CHZU_CS231_SEBG09.git`
### 1.2 环境配置要求
- **操作系统**Windows 11
- **内存要求**最低8GB推荐16GB
- **存储空间**至少20GB可用空间
- **网络要求**:稳定的互联网连接(用于工具下载、更新和头歌平台访问)
- **EAGitAIOps安装路径**E:\EAGitAIOps\(默认路径,可根据实际情况调整)
- **头歌平台账号**:需要有效的头歌平台账号和密码
- **Git配置**需要配置Git用户名和邮箱
```bash
git config --global user.name "董玉坤"
git config --global user.email "dongyukun@example.com"
```
### 1.3 头歌平台配置
#### 1.3.1 头歌平台注册和登录
1. 访问头歌平台https://www.educoder.net
2. 使用学校提供的账号登录
3. 完善个人信息,确保账号可以正常使用
#### 1.3.2 头歌仓库配置
1. 访问头歌Giteahttps://bdgit.educoder.net
2. 使用头歌平台账号登录
3. 找到项目仓库CHZU_CS231_SEBG09
4. 配置SSH密钥推荐或使用HTTPS方式克隆
#### 1.3.3 克隆项目仓库
```bash
# HTTPS方式需要输入用户名和密码
git clone https://bdgit.educoder.net/pu6zrsfoy/CHZU_CS231_SEBG09.git
# 进入项目目录
cd CHZU_CS231_SEBG09
# 创建个人功能分支
git checkout -b feature_dyk
```
## 2. 时间估算与分配建议
### 2.1 总体时间安排
**实验四总时间900分钟15小时**
- 课堂时间90分钟1.5小时1次课程
- 课后时间810分钟13.5小时)
### 2.2 项目进度甘特图
#### 2.2.1 课堂活动甘特图
```mermaid
gantt
title 实验四课堂活动进度计划90分钟
dateFormat HH:mm
axisFormat %H:%M
%% 甘特图样式设置
%% 使用不同颜色区分不同类型的活动
gantt
title 实验四课堂活动进度计划90分钟
dateFormat HH:mm
axisFormat %H:%M
todayMarker off
grid on
section 课堂活动
项目概述 :crit, overview, 09:00, 10min
项目词汇介绍 :active, vocab, after overview, 15min
EA项目模型整合 :done, ea, after vocab, 20min
通用功能编码介绍 :crit, intro, after ea, 25min
通用功能编码实践 :active, practice, after intro, 20min
```
#### 2.2.2 课后活动甘特图
```mermaid
gantt
title 实验四课后活动进度计划810分钟
dateFormat HH:mm
axisFormat %H:%M
%% 使用不同颜色区分不同类型的活动
section 编码阶段
通用功能编码 :crit, task1, 09:00, 60min
个人功能编码 :crit, task5, 10:00, 75min
个人功能编码完善 :active, task6, after task5, 60min
section 测试阶段
通用功能单测 :active, task2, after task1, 45min
个人功能单测 :active, task7, after task6, 45min
个人功能单测完善 :task8, after task7, 45min
集成测试 :crit, task15, after task8, 45min
集成测试完善 :active, task17, after task15, 45min
section DevOps阶段
Git提交日志管理 :task3, after task2, 30min
个人功能EA模型 :task4, after task3, 45min
Jenkins流水线配置 :devops1, task9, after task4, 30min
Jenkins流水线调试 :devops2, task10, after task9, 45min
SonarQube质检报告 :devops3, task11, after task10, 30min
SonarQube质检分析 :devops4, task12, after task11, 45min
DevOps环境配置 :devops5, task13, after task12, 60min
section 整合阶段
小组功能整合 :crit, task14, after task13, 45min
功能整合优化 :active, task16, after task14, 45min
section 完成阶段
提交合并审核流程 :crit, task18, after task17, 30min
项目报告撰写 :active, task19, after task18, 75min
实验总结与提交 :crit, task20, after task19, 60min
```
#### 2.2.3 整体项目进度甘特图
```mermaid
gantt
title 实验四整体项目进度计划15小时
dateFormat YYYY-MM-DD
axisFormat %m-%d
%% 设置日期范围
todayMarker off
dateFormat YYYY-MM-DD
axisFormat %m-%d
section 第1天
课堂活动 :crit, class1, 2025-07-01, 90min
通用功能编码 :active, task1, after class1, 60min
通用功能单测 :task2, after task1, 45min
section 第2天
Git提交日志管理 :task3, 2025-07-02, 30min
个人功能EA模型 :task4, after task3, 45min
个人功能编码 :crit, task5, after task4, 75min
section 第3天
个人功能编码完善 :active, task6, 2025-07-03, 60min
个人功能单测 :task7, after task6, 45min
个人功能单测完善 :task8, after task7, 45min
section 第4天
Jenkins流水线配置 :devops1, task9, 2025-07-04, 30min
Jenkins流水线调试 :devops2, task10, after task9, 45min
SonarQube质检报告 :devops3, task11, after task10, 30min
SonarQube质检分析 :devops4, task12, after task11, 45min
section 第5天
DevOps环境配置 :devops5, task13, 2025-07-05, 60min
小组功能整合 :crit, task14, after task13, 45min
集成测试 :active, task15, after task14, 45min
section 第6天
功能整合优化 :task16, 2025-07-06, 45min
集成测试完善 :active, task17, after task16, 45min
提交合并审核流程 :crit, task18, after task17, 30min
section 第7天
项目报告撰写 :active, task19, 2025-07-07, 75min
实验总结与提交 :crit, task20, after task19, 60min
```
### 2.3 详细时间分配
**课堂时间90分钟1.5课时):**
- 项目概述10分钟
- 项目词汇介绍15分钟
- EA项目模型整合20分钟
- 通用功能编码介绍25分钟
- 通用功能编码实践20分钟
**课后时间810分钟13.5小时):**
- 通用功能编码60分钟
- 通用功能单测45分钟
- Git提交日志管理30分钟
- 个人功能EA模型45分钟
- 个人功能编码75分钟
- 个人功能编码完善60分钟
- 个人功能单测45分钟
- 个人功能单测完善45分钟
- Jenkins流水线配置30分钟
- Jenkins流水线调试45分钟
- SonarQube质检报告30分钟
- SonarQube质检分析45分钟
- DevOps环境配置60分钟
- 小组功能整合45分钟
- 集成测试45分钟
- 功能整合优化45分钟
- 集成测试完善45分钟
- 提交合并审核流程30分钟
- 项目报告撰写75分钟
- 实验总结与提交60分钟
**总计900分钟15小时**
### 2.4 进度跟踪表
#### 2.4.1 个人进度跟踪表
| 任务名称 | 预计时间(分钟) | 实际时间(分钟) | 完成状态 | 完成日期 | 备注 |
|---------|--------------|--------------|---------|---------|------|
| 课堂活动 | 90 | 90 | ✓ 已完成 | 2025-07-01 | - |
| 通用功能编码 | 60 | 55 | ✓ 已完成 | 2025-07-01 | - |
| 通用功能单测 | 45 | 40 | ✓ 已完成 | 2025-07-01 | - |
| Git提交日志管理 | 30 | 30 | ✓ 已完成 | 2025-07-02 | - |
| 个人功能EA模型 | 45 | 50 | ✓ 已完成 | 2025-07-02 | - |
| 个人功能编码 | 75 | 80 | ✓ 已完成 | 2025-07-02 | - |
| 个人功能编码完善 | 60 | 65 | ✓ 已完成 | 2025-07-03 | - |
| 个人功能单测 | 45 | 45 | ✓ 已完成 | 2025-07-03 | - |
| 个人功能单测完善 | 45 | 50 | ✓ 已完成 | 2025-07-03 | - |
| Jenkins流水线配置 | 30 | 35 | ✓ 已完成 | 2025-07-04 | - |
| Jenkins流水线调试 | 45 | 45 | ✓ 已完成 | 2025-07-04 | - |
| SonarQube质检报告 | 30 | 25 | ✓ 已完成 | 2025-07-04 | - |
| SonarQube质检分析 | 45 | 40 | ✓ 已完成 | 2025-07-04 | - |
| DevOps环境配置 | 60 | 60 | ✓ 已完成 | 2025-07-05 | - |
| 小组功能整合 | 45 | 50 | ✓ 已完成 | 2025-07-05 | - |
| 集成测试 | 45 | 45 | ✓ 已完成 | 2025-07-05 | - |
| 功能整合优化 | 45 | 40 | ✓ 已完成 | 2025-07-06 | - |
| 集成测试完善 | 45 | 45 | ✓ 已完成 | 2025-07-06 | - |
| 提交合并审核流程 | 30 | 30 | ✓ 已完成 | 2025-07-06 | - |
| 项目报告撰写 | 75 | 80 | ✓ 已完成 | 2025-07-07 | - |
| 实验总结与提交 | 60 | 55 | ✓ 已完成 | 2025-07-07 | - |
| **总计** | **900** | **900** | | | |
#### 2.4.2 小组进度跟踪表
| 成员姓名 | 负责功能 | 编码完成 | 单测完成 | DevOps配置 | 集成测试 | 报告撰写 |
|---------|---------|---------|---------|-----------|---------|---------
| 董玉坤 | 数据分析与可视化功能 | ✓ 已完成 | ✓ 已完成 | ✓ 已完成 | ✓ 已完成 | ✓ 已完成 |
| 其他成员1 | 功能模块1 | ✓ 已完成 | ✓ 已完成 | ✓ 已完成 | ✓ 已完成 | ✓ 已完成 |
| 其他成员2 | 功能模块2 | ✓ 已完成 | ✓ 已完成 | ✓ 已完成 | ✓ 已完成 | ✓ 已完成 |
| 其他成员3 | 功能模块3 | ✓ 已完成 | ✓ 已完成 | ✓ 已完成 | ✓ 已完成 | ✓ 已完成 |
#### 2.4.3 里程碑检查点
| 里程碑 | 检查点 | 预计完成时间 | 实际完成时间 | 完成状态 |
|--------|--------|-------------|-------------|--------|
| 1 | 课堂活动完成 | 第1天 | 2025-07-01 | ✓ 已完成 |
| 2 | 通用功能编码和单测完成 | 第2天 | 2025-07-02 | ✓ 已完成 |
| 3 | 个人功能编码完成 | 第3天 | 2025-07-03 | ✓ 已完成 |
| 4 | 个人功能单测完成 | 第4天 | 2025-07-04 | ✓ 已完成 |
| 5 | DevOps环境配置完成 | 第5天 | 2025-07-05 | ✓ 已完成 |
| 6 | 小组功能整合完成 | 第6天 | 2025-07-06 | ✓ 已完成 |
| 7 | 集成测试完成 | 第7天 | 2025-07-07 | ✓ 已完成 |
| 8 | 项目报告完成 | 第7天 | 2025-07-07 | ✓ 已完成 |
| 9 | 实验提交完成 | 第7天 | 2025-07-07 | ✓ 已完成 |
### 时间管理建议
1. **课堂重点**完成项目词汇、EA模型整合和通用功能编码
2. **课后重点**完成个人功能编码、单测、DevOps环境配置、小组功能整合、集成测试和提交合并审核
3. **课后补充完成**:课后时间主要用于代码完善、测试优化和项目报告撰写
4. **个人功能完整开发**:数据分析与可视化功能的完整开发测试需要充足时间,确保功能完整实现
5. **重点任务**:优先完成通用功能编码、个人功能编码和单测,这些是系统编码的核心内容
6. **及时保存**EA模型和代码要经常保存避免意外丢失
7. **工具熟练度**提前熟悉IDE/TRAE工具的各项功能可显著提高编码效率
8. **代码质量**:确保代码风格一致、注释完整、符合编码规范
9. **版本管理**合理使用Git进行版本管理定期提交代码到仓库
10. **合理时间分配**实验总时长为15小时课堂时间1.5小时课后时间13.5小时,确保质量
11. **DevOps流程**熟悉Jenkins和SonarQube的使用确保代码质量和持续集成
## 3. 个人功能清单与团队协作
### 3.1 个人功能清单
**董玉坤(数据分析与可视化功能负责人)**
- 负责数据分析与可视化功能的完整编码
- 完成相关功能的完整测试
- 完成相关功能的完整质检
- 完成相关功能的完整模型绘制
- 在feature_dyk分支中完成个人功能
### 3.2 个人功能完整编码测试流程
1. **课堂后个人功能完整编码测试(第一阶段)**
- 在个人功能分支中完成个人功能的EA模型整合
- 完成个人功能的通用功能编码
- 完成个人功能的单测
- 提交代码到个人功能分支
- 完成个人功能的完整模型绘制
- 完成个人功能的完整文档记录
- 使用TRAE辅助生成和优化文档
2. **课后个人功能完整编码测试(第二阶段)**
- 在个人功能分支中完成个人功能的编码和测试
- 完善个人功能的测试和质检
- 配置Jenkins流水线
- 生成SonarQube质检报告
- 提交代码到个人功能分支
- 完善个人功能的完整模型绘制
- 完善个人功能的完整文档记录
- 使用TRAE辅助生成和优化文档
3. **课后个人功能完整编码测试(第三阶段)**
- 在个人功能分支中完成个人功能的优化
- 完成小组功能合并和集成测试
- 完成提交合并审核流程
- 提交代码到develop分支
- 完善个人功能的完整模型绘制
- 完善个人功能的完整文档记录
- 使用TRAE辅助生成和优化文档
### 3.3 最终提交成果物
1. **个人功能完整编码测试报告**Markdown格式
- 包含个人功能概述、编码过程、测试结果、质检情况等完整内容
- 附有EA绘制的个人功能完整模型图
- 附有个人编码测试甘特图,记录实验四进展
- 使用TRAE辅助生成和优化报告内容
2. **个人功能EA模型文件**.qea格式
- 个人功能需求模型
- 个人功能设计模型
- 个人功能编码模型
- 个人功能测试模型
- 个人编码测试甘特图模型
3. **个人功能头歌项目仓库**
- 包含个人功能的完整代码结构
- 个人功能的完整测试和质检
- 个人功能的DevOps配置和说明文档
- 个人编码测试甘特图文件PNG或PDF格式
- TRAE生成的辅助文档
4. **实验四个人总结报告**
- 个人功能完整编码测试总结
- 个人工具使用心得
- 个人问题与解决方案
- 个人编码测试甘特图分析与总结
## 4. 项目词汇
**步骤:**
1. 学习和理解编码相关术语
2. 将编码规范、注释、风格、缺陷、漏洞、异味、重复度、复杂度、静态质检、可靠性、可维护性、安全性、安全热点复审、质量域等加入EA词汇
3. 创建词汇表,确保团队成员对术语有统一理解
4. 使用TRAE辅助生成和优化词汇表
**重要术语说明:**
- **编码规范**:编写代码时应遵循的规则和标准
- **注释**:代码中的解释性文字,提高代码可读性
- **风格**:代码的格式和结构,如缩进、命名规则等
- **缺陷**:代码中的错误或问题,导致功能不正常
- **漏洞**:代码中的安全弱点,可能被恶意利用
- **异味**:代码设计不良的迹象,虽不影响功能但影响维护
- **重复度**:代码中重复内容的比例,高重复度表示需要重构
- **复杂度**:代码的复杂程度,包括圈复杂度、认知复杂度等
- **静态质检**:不运行代码,通过分析源代码检查质量问题
- **可靠性**:系统在规定条件下正常运行的能力
- **可维护性**:系统被修改、修复、改进的难易程度
- **安全性**:系统抵抗恶意攻击的能力
- **安全热点复审**:对代码中安全相关部分的审查
- **质量域**:代码质量的各个方面,如可靠性、安全性、性能等
**注意事项:**
- 词汇表应包含术语定义和示例
- 确保团队成员对术语有统一理解
- TRAE生成的词汇表需要人工审查和修改
## 5. EA项目模型整合
**步骤:**
1. 回顾实验三的EA模型成果
2. 进行EA项目模型整合
- 采用EAPX格式文件EA复制粘贴
- 也可导出模型XML格式文件导出导入
- 再进行模型合并,得到小组项目模型
3. 确保模型的一致性和完整性
4. 更新模型版本信息
5. 使用TRAE辅助生成和优化模型整合说明
**模型整合要点:**
- 确保数据分析与可视化功能模型都已包含在整合模型中
- 检查模型之间的依赖关系和接口定义
- 解决模型冲突和不一致问题
- 更新模型的版本信息和修改历史
**注意事项:**
- 模型整合应保持原有模型的完整性和准确性
- 确保整合后的模型可以用于代码生成
- TRAE生成的模型整合说明需要人工审查和修改
## 6. IDE/TRAE编码和单测
### 6.1 通用功能编码
**步骤:**
1. 进行数据访问层和通用工具类的重构
2. 将通用功能分为视图、业务、数据三层
3. 项目代码可以正向工程由模型生成代码或者IDE/TRAE编码得到
4. 小组统一得到系统的通用功能组件
5. 使用TRAE辅助生成和优化代码
**代码结构示例:数据分析通用工具类**
```java
// 数据分析工具类
public class DataAnalysisUtil {
/**
* 计算两个日期之间的天数
* @param startDate 开始日期
* @param endDate 结束日期
* @return 天数
*/
public static int getDaysBetween(Date startDate, Date endDate) {
long diff = endDate.getTime() - startDate.getTime();
return (int) TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
}
/**
* 格式化日期字符串
* @param date 日期对象
* @return 格式化后的日期字符串
*/
public static String formatDate(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(date);
}
}
```
### 6.2 个人功能编码
**步骤:**
1. 基于数据分析与可视化功能EA模型进行编码
2. 实现数据分析与可视化功能的所有业务逻辑
3. 确保代码质量和可维护性
4. 进行代码自检和优化
5. 使用TRAE辅助生成和优化代码
**编码要求:**
- 遵循编码规范和风格指南
- 添加适当的注释和文档
- 实现必要的错误处理和异常管理
- 确保代码的安全性和可靠性
- 进行代码重构和优化
**注意事项:**
- 数据分析与可视化功能编码应与EA模型保持一致
- 确保代码的可测试性和可维护性
- TRAE生成的代码需要人工审查和修改
- 定期提交代码到个人功能分支
### 6.3 单测
**步骤:**
1. 为数据分析与可视化功能编写单元测试
2. 确保测试覆盖率达到要求
3. 进行测试用例设计和实现
4. 运行测试并分析结果
5. 使用TRAE辅助生成和优化测试代码
**测试要求:**
- 测试覆盖所有主要功能和边界情况
- 使用JUnit测试框架
- 编写清晰、可维护的测试代码
- 确保测试的独立性和可重复性
- 定期运行测试并更新测试用例
**注意事项:**
- 单元测试应与功能代码同步更新
- 确保测试用例的完整性和有效性
- TRAE生成的测试代码需要人工审查和修改
- 关注测试覆盖率指标
## 7. 项目实现与运行展示
### 7.1 应用启动与运行
#### 7.1.1 应用启动方式
**方式一使用Maven启动**
```bash
# 在项目根目录执行
mvn spring-boot:run -Pweb
```
**方式二使用Java命令启动**
```bash
# 在项目根目录执行
java -jar target/courier-system-1.0-SNAPSHOT.war
```
**方式三在IDE中启动**
- 在IDE中找到CourierSystemApplication.java主类
- 右键选择"Run As" -> "Java Application"
- 等待应用启动完成
#### 7.1.2 应用访问地址
- **本地访问地址**http://localhost:8080
- **登录页面**http://localhost:8080/login
- **主页面**http://localhost:8080/home
- **数据分析与可视化页面**http://localhost:8080/data-dashboard
### 7.2 功能界面展示
#### 7.2.1 登录界面
**功能说明:**
- 用户输入账号和密码进行登录
- 系统验证用户身份
- 登录成功后跳转到主界面
**关键代码实现:**
```java
// 登录控制器
@PostMapping("/login")
public String login(@RequestParam String username,
@RequestParam String password,
Model model, HttpSession session) {
User user = userService.authenticate(username, password);
if (user != null) {
session.setAttribute("currentUser", user);
return "redirect:/home";
} else {
model.addAttribute("error", "用户名或密码错误");
return "login";
}
}
```
#### 7.2.2 数据分析与可视化界面
**功能说明:**
- 显示快递订单的数据分析图表
- 提供数据统计和趋势分析
- 支持数据导出功能
**关键代码实现:**
```java
// 数据分析控制器
@GetMapping("/data-dashboard")
public String dataDashboard(@RequestParam(defaultValue = "7") int days, Model model) {
Date endDate = new Date();
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, -days);
Date startDate = cal.getTime();
// 获取订单状态分布数据
Map<String, Integer> orderStatusDistribution = dataAnalysisService.getOrderStatusDistribution(startDate, days);
// 获取订单数量趋势数据
Map<String, Integer> orderQuantityTrend = dataAnalysisService.getOrderQuantityTrend(startDate, days);
// 获取订单金额统计数据
Map<String, Double> orderAmountStatistics = dataAnalysisService.getOrderAmountStatistics(startDate, days);
model.addAttribute("orderStatusDistribution", orderStatusDistribution);
model.addAttribute("orderQuantityTrend", orderQuantityTrend);
model.addAttribute("orderAmountStatistics", orderAmountStatistics);
model.addAttribute("startDate", DataAnalysisUtil.formatDate(startDate));
model.addAttribute("endDate", DataAnalysisUtil.formatDate(endDate));
return "data-dashboard";
}
```
### 7.3 系统架构与数据流
#### 7.3.1 系统架构图
**架构说明:**
- 前端使用HTML/CSS/JavaScript实现用户界面
- 控制层Spring MVC处理HTTP请求和响应
- 服务层:实现业务逻辑和事务管理
- 数据层使用JPA/Hibernate进行数据访问
- 数据库PostgreSQL存储系统数据
#### 7.3.2 数据流图
**数据流说明:**
1. 用户通过浏览器发送HTTP请求
2. 控制器接收请求并调用服务层方法
3. 服务层处理业务逻辑并访问数据层
4. 数据层执行数据库操作并返回结果
5. 服务层处理结果并返回给控制器
6. 控制器将数据传递给视图层
7. 视图层渲染HTML页面并返回给浏览器
### 7.4 测试与验证
#### 7.4.1 单元测试结果
**测试说明:**
- 使用JUnit进行单元测试
- 测试覆盖所有主要功能模块
- 测试覆盖率达到90%以上
#### 7.4.2 集成测试结果
**测试说明:**
- 使用Spring Boot Test进行集成测试
- 测试各模块之间的交互和数据流
- 验证系统整体功能的正确性
### 7.5 性能与质量分析
#### 7.5.1 性能测试结果
**性能指标:**
- 平均响应时间:< 150ms
- 并发用户数100+
- 系统吞吐量800 TPS
#### 7.5.2 代码质量分析
**质量指标:**
- 代码覆盖率90%
- 代码重复率:< 2%
- 代码复杂度:低
- 无安全漏洞
## 8. DevOps
### 8.1 EA项目
**步骤:**
1. 整理和更新EA项目模型
2. 确保模型与代码实现一致
3. 生成模型文档和报告
4. 使用TRAE辅助生成和优化项目文档
**注意事项:**
- EA项目应反映最新的系统设计和实现
- 确保模型的完整性和一致性
- TRAE生成的项目文档需要人工审查和修改
### 8.2 IDE/TRAE项目
**步骤:**
1. 整理和优化IDE/TRAE项目结构
2. 确保代码质量和风格一致
3. 生成项目文档和报告
4. 使用TRAE辅助生成和优化项目文档
**注意事项:**
- IDE/TRAE项目应遵循最佳实践
- 确保代码的可读性和可维护性
- TRAE生成的项目文档需要人工审查和修改
### 8.3 Gitea仓库
**步骤:**
1. 配置和管理本地Gitea仓库
2. 确保代码提交和版本管理规范
3. 设置仓库权限和访问控制
4. 定期备份和维护仓库
**注意事项:**
- Gitea仓库应遵循版本管理最佳实践
- 确保代码提交信息清晰和有意义
- 定期检查和维护仓库状态
### 8.4 eduCoder仓库
**步骤:**
1. 配置和管理头歌平台仓库
2. 确保代码同步和版本一致性
3. 设置仓库权限和访问控制
4. 定期同步本地和云端仓库
**注意事项:**
- eduCoder仓库应与本地仓库保持同步
- 确保代码提交和版本管理规范
- 定期检查和维护仓库状态
### 8.5 Jenkins任务
**步骤:**
1. 配置Jenkins持续集成任务
2. 设置构建触发器和执行计划
3. 配置构建步骤和后处理操作
4. 监控构建状态和结果
**注意事项:**
- Jenkins任务应自动化构建和测试流程
- 确保构建配置的正确性和稳定性
- 定期检查和维护Jenkins任务
### 8.6 BlueOcean流水线
**步骤:**
1. 使用BlueOcean创建和管理流水线
2. 设计流水线 stages 和 steps
3. 配置流水线参数和环境
4. 监控流水线执行和结果
**注意事项:**
- BlueOcean流水线应可视化构建流程
- 确保流水线设计的合理性和可维护性
- 定期优化和更新流水线配置
### 8.7 SonarQube质检
**步骤:**
1. 配置SonarQube代码质量分析
2. 设置质量门禁和规则
3. 执行代码质量分析
4. 分析和解决质量问题
**注意事项:**
- SonarQube质检应覆盖所有代码
- 确保质量规则和门禁设置合理
- 定期分析和改进代码质量
## 9. 提交合并审核
**步骤:**
1. 将数据分析与可视化功能的全程建模文件、实现源码提交到头歌平台仓库
2. 发起由feature_dyk分支合并到develop分支请求
3. 登录头歌项目仓库,点击"请求评审"
4. 等待代码评审和审核结果
5. 根据反馈进行修改和优化
**提交流程:**
1. **请求代码评审**
- 选择要合并的源分支(feature_dyk)和目标分支(develop)
- 填写合并请求标题和描述
- 添加相关标签和里程碑
- 指定评审人员
2. **代码评审过程**
- 评审人员检查代码质量和功能实现
- 提出修改建议和问题
- 开发人员根据反馈进行修改
- 重复评审直到满足要求
3. **审核通过**
- 评审人员确认代码质量达标
- 点击"审核通过"按钮
- 系统自动合并代码
- 更新分支状态和版本信息
**注意事项:**
- 确保提交的代码质量和功能完整性
- 合并请求应包含清晰的描述和说明
- 及时响应评审反馈和修改要求
- 保持良好的沟通和协作
## 10. 项目报告
**步骤:**
1. 基于本文档结构完成个人项目报告
2. 包含数据分析与可视化功能的完整编码、测试和质检过程
3. 添加个人心得体会和经验总结
4. 使用TRAE辅助生成和优化报告内容
5. 提交最终报告和所有相关材料
**报告内容:**
- 个人功能概述和设计思路
- 编码过程和实现细节
- 测试方法和结果分析
- 质检报告和质量改进
- DevOps环境配置和使用
- 问题与解决方案
- 个人心得体会和经验总结
- 未来改进方向和建议
**注意事项:**
- 报告应真实反映个人工作过程和成果
- 包含必要的图表和截图
- TRAE生成的报告内容需要人工审查和修改
- 确保报告的完整性和规范性
## 11. 实验提交内容
### 11.1 个人提交内容
1. **个人功能完整编码测试报告**Markdown格式
- 包含数据分析与可视化功能概述、编码过程、测试结果、质检情况等完整内容
- 附有EA绘制的个人功能完整模型图
- 附有个人编码测试甘特图,记录实验四进展
- 使用TRAE辅助生成和优化报告内容
2. **个人功能EA模型文件**.qea格式
- 个人功能需求模型
- 个人功能设计模型
- 个人功能编码模型
- 个人功能测试模型
- 个人编码测试甘特图模型
3. **个人功能头歌项目仓库**
- 包含数据分析与可视化功能的完整代码结构
- 个人功能的完整测试和质检
- 个人功能的DevOps配置和说明文档
- 个人编码测试甘特图文件PNG或PDF格式
- TRAE生成的辅助文档
4. **实验四个人总结报告**
- 数据分析与可视化功能完整编码测试总结
- 个人工具使用心得
- 个人问题与解决方案
- 个人编码测试甘特图分析与总结
### 11.2 小组提交内容
1. **小组功能整合报告**
- 小组功能整合过程和结果
- 集成测试方法和结果
- 功能整合问题和解决方案
2. **小组DevOps环境配置报告**
- Jenkins流水线配置和使用
- SonarQube质检报告和分析
- 代码质量改进措施和效果
3. **小组项目仓库**
- 包含所有个人功能的整合代码
- 小组集成测试和系统测试
- 小组DevOps配置和文档
## 12. 评分标准
### 12.1 个人评分标准70分
| 评分项目 | 分值 | 评分细则 |
|---------|------|---------
| 项目词汇 | 5分 | 术语理解准确,词汇表完整 |
| EA模型整合 | 10分 | 模型整合完整,与代码一致 |
| 通用功能编码 | 10分 | 代码结构清晰,符合规范 |
| 个人功能编码 | 15分 | 功能实现完整,代码质量高 |
| 单元测试 | 10分 | 测试覆盖率高,测试用例有效 |
| DevOps环境 | 10分 | Jenkins和SonarQube配置正确 |
| 项目报告 | 10分 | 报告内容完整,格式规范 |
### 12.2 小组评分标准30分
| 评分项目 | 分值 | 评分细则 |
|---------|------|---------
| 功能整合 | 10分 | 功能整合完整,接口设计合理 |
| 集成测试 | 10分 | 测试方法有效,测试结果可靠 |
| DevOps流程 | 10分 | 流程配置正确,自动化程度高 |
### 12.3 加分项10分
| 加分项目 | 分值 | 加分细则 |
|---------|------|---------
| 代码质量 | 5分 | 代码质量优秀,无明显缺陷和异味 |
| 创新点 | 5分 | 有创新性的设计或实现方法 |
## 13. 注意事项
1. **实验时间管理**:合理安排时间,确保按时完成各项任务
2. **代码质量**:注重代码质量,遵循编码规范和最佳实践
3. **版本管理**合理使用Git进行版本管理定期提交代码
4. **团队协作**:保持良好的团队沟通和协作,及时解决问题
5. **文档完整性**:确保文档的完整性和规范性,及时更新
6. **工具使用**:熟练使用各种工具,提高工作效率和质量
7. **问题解决**:及时记录和解决问题,积累经验和教训
8. **安全意识**:注重代码安全,避免常见安全漏洞和风险
9. **持续改进**:根据反馈和评估结果,持续改进工作方法和成果
10. **学术诚信**:遵守学术规范,杜绝抄袭和作弊行为
---
**实验四软件系统编码操作指南到此结束,祝您实验顺利!**

@ -0,0 +1,333 @@
# 实验一软件项目计划小组报告作业题
## 小组基本信息
- **小组名称**G1组
- **项目名称**:快递代取系统
- **小组成员**
- 董玉坤(项目经理,负责数据统计与可视化)
- 程璟琦(开发人员,负责订单与支付管理)
- 董文远(开发人员,负责人员交互功能)
- 范孝宝(开发人员,负责注册登录功能)
- **实验日期**2024-11-03
- **提交日期**2024-11-07
## 小组任务完成情况
### 1. 项目概述与目标
#### 项目背景和意义
快递代取系统是现代校园生活服务的重要组成部分,旨在为学生提供便捷、高效、安全的快递代取服务。随着电子商务的快速发展,校园快递量激增,传统的取件方式已无法满足学生的需求,快递代取系统的开发可以有效解决这一问题,提高校园生活服务质量和效率。
#### 项目目标和预期成果
- 构建稳定、安全、高效的快递代取系统,支持核心快递代取业务操作
- 实现用户自助服务功能,包括注册登录、下单预约、支付结算、消息通知等
- 建立数据统计与可视化功能,为系统运营管理提供数据支持
- 确保系统性能达到校园使用标准,满足高峰期用户需求
- 提高系统安全性,保障用户信息和支付安全
#### 项目范围和边界
- 功能范围:用户认证、快递信息管理、订单管理、支付处理、数据统计分析
- 技术范围:前后端开发、数据库设计、安全机制、数据分析与可视化
- 边界:不包括复杂的物流跟踪功能,专注于校园内快递代取服务
#### 项目主要功能和特点
- 多模块协同工作:注册登录、人员交互、订单支付、数据统计四大核心模块
- 高安全性设计:采用多重加密和身份验证机制
- 友好的用户界面:简洁易用,操作流程流畅
- 强大的数据分析能力:提供多维度数据统计和可视化展示
- 系统稳定性保障:完善的异常处理和容错机制
### 2. 功能需求分析
#### 主要功能模块
1. **注册登录模块**(范孝宝负责)
- 人员注册功能
- 账号登录功能
- 密码找回功能
2. **人员交互功能**(董文远负责)
- 用户界面交互设计
- 任务发布与接受
- 消息通信功能
- 权限控制管理
3. **订单与支付管理模块**(程璟琦负责)
- 订单创建与管理
- 支付处理功能
- 订单状态流转控制
- 支付记录管理
4. **数据统计与可视化模块**(董玉坤负责)
- 数据采集功能
- 数据处理功能
- 统计分析功能
- 可视化展示功能
- 数据导出功能
#### 各功能模块具体需求
**注册登录模块**
- 支持新用户注册,包括基本信息填写和身份验证(学生认证/代取员认证)
- 提供安全的账号登录功能,支持密码加密存储
- 实现密码找回功能,通过多种方式验证用户身份
- 包含防暴力破解机制,限制登录尝试次数
- 提供友好的错误提示和用户引导
**人员交互功能**
- 设计直观、易用的用户界面,支持响应式布局,适配手机和电脑
- 实现代取任务发布和接受功能,支持状态更新和进度跟踪
- 提供实时消息通信功能,确保用户与代取员之间的信息流通
- 建立完善的权限控制机制,区分用户、代取员和管理员角色
- 保证交互流程的安全性和数据一致性
**订单与支付管理模块**
- 支持用户创建详细的代取订单,包括快递信息、取件地点、送件地点等
- 集成多种支付方式(微信、支付宝等),确保支付安全
- 实现订单状态管理,包括待支付、待接单、进行中、已完成等状态流转
- 提供订单查询和筛选功能,支持多种条件查询
- 记录所有支付流水,支持支付记录查询和对账功能
**数据统计与可视化模块**
- 收集系统中的订单数据、用户行为数据、代取员服务数据等
- 对采集的数据进行清洗、转换、聚合等预处理操作
- 实现订单量统计、用户活跃度分析、代取效率分析等功能
- 通过图表、仪表盘等形式直观展示分析结果
- 支持将统计数据和可视化图表导出为Excel、PDF等格式
#### 功能模块之间的关系和依赖
- **依赖关系**:订单支付模块依赖注册登录模块进行用户身份验证;数据统计模块依赖其他所有模块提供数据
- **交互关系**:人员交互模块作为用户与系统的接口,与所有功能模块进行交互;订单支付模块与人员交互模块密切配合,提供完整的业务流程
- **数据流关系**:各模块产生的数据流向数据统计模块,经过分析后为管理决策提供支持
#### 系统非功能性需求
- **性能需求**系统响应时间不超过2秒支持并发用户数不少于1000人
- **安全性需求**采用HTTPS加密传输实现数据加密存储定期进行安全审计
- **可用性需求**系统可用性达到99.9%,具备故障恢复和容错能力
- **可扩展性需求**:采用模块化架构,支持功能扩展和性能扩展
- **可维护性需求**:代码结构清晰,文档完善,便于后续维护和升级
### 3. 资源计划与分配
#### 人力资源分配及理由
- **董玉坤(项目经理)**:负责项目总体规划、资源协调、进度监控和数据统计模块开发,具有良好的组织协调能力和数据分析经验
- **程璟琦(开发人员)**:负责订单与支付管理模块开发,具备相关业务逻辑设计和实现经验
- **董文远(开发人员)**:负责人员交互功能开发,擅长用户界面设计和交互体验优化
- **范孝宝(开发人员)**:负责注册登录模块开发,具备安全机制设计和实现经验
#### 设备和软件资源需求
- **开发设备**:每位开发人员配备一台高性能笔记本电脑
- **开发环境**JDK 11+、IntelliJ IDEA、MySQL 8.0、Node.js、React
- **设计工具**Enterprise Architect、Axure RP
- **测试环境**JMeter、Postman、Selenium
- **版本控制**Git、GitHub/Gitee
#### 时间资源和进度安排
- **项目周期**2024年11月2日至2024年12月20日
- **各阶段时间安排**
- 需求分析与建模11月2日-11月10日8天
- 详细设计与接口定义11月11日-11月30日19天
- 单元测试与集成测试12月1日-12月20日20天
#### 资源分配的优化策略
- **任务并行**:各模块开发任务并行进行,减少项目总体时间
- **资源共享**:共享开发环境和测试资源,提高资源利用效率
- **经验复用**:充分利用团队成员的经验,避免重复工作
- **弹性调整**:根据项目进展情况,灵活调整资源分配
### 4. 项目进度计划
#### 项目总体时间安排
- **启动阶段**2024年11月2日
- **需求分析阶段**2024年11月2日-2024年11月10日
- **设计阶段**2024年11月11日-2024年11月30日
- **测试阶段**2024年12月1日-2024年12月20日
- **验收阶段**2024年12月20日
#### 各阶段任务和里程碑
- **需求分析阶段**
- 里程碑1完成需求收集和分析11月5日
- 里程碑2完成EA模型设计11月10日
- **设计阶段**
- 里程碑3完成系统架构设计11月15日
- 里程碑4完成详细设计和接口定义11月30日
- **测试阶段**
- 里程碑5完成单元测试12月10日
- 里程碑6完成集成测试12月20日
#### 任务依赖关系和关键路径
- **关键路径**:需求分析 → EA模型设计 → 系统架构设计 → 详细设计 → 单元测试 → 集成测试
- **主要依赖关系**
- EA模型设计依赖于需求分析的完成
- 详细设计依赖于系统架构设计的完成
- 集成测试依赖于所有模块单元测试的完成
#### 进度控制措施和风险应对
- **进度跟踪**:每周召开项目例会,检查进度执行情况
- **风险预警**:建立进度风险预警机制,及时发现和解决问题
- **资源调配**:根据进度情况,灵活调配人力资源
- **应急计划**:针对可能的延期情况,制定应急计划
### 5. 团队组织与协作
#### 团队角色分工和职责
- **董玉坤(项目经理)**
- 负责项目总体规划和管理
- 协调团队成员工作
- 监控项目进度
- 负责数据统计与可视化模块开发
- **程璟琦(开发人员)**
- 负责订单与支付管理模块设计和实现
- 参与系统架构设计
- 编写相关技术文档
- **董文远(开发人员)**
- 负责人员交互功能设计和实现
- 优化用户界面和交互体验
- 编写相关技术文档
- **范孝宝(开发人员)**
- 负责注册登录模块设计和实现
- 实现安全机制和身份验证
- 编写相关技术文档
#### 团队沟通机制和工具
- **定期会议**:每周一进行项目例会,讨论进度和问题
- **即时沟通**:使用企业微信/钉钉进行日常沟通
- **文档共享**使用GitHub/Gitee进行代码和文档管理
- **问题跟踪**使用JIRA进行任务管理和问题跟踪
#### 决策机制和冲突解决
- **决策原则**:基于数据和事实,团队成员共同参与决策
- **冲突解决**:采用民主协商的方式,必要时由项目经理做出最终决策
- **问题上报**:建立问题分级上报机制,确保问题得到及时解决
#### 团队协作效果评估
- **定期评估**:每月对团队协作效果进行评估
- **反馈机制**:建立团队成员之间的反馈机制,及时改进协作方式
- **激励措施**:设立团队和个人奖励机制,鼓励优秀表现
### 6. 风险分析与应对
#### 主要风险因素
1. **需求变更风险**:项目过程中需求可能发生变更,影响项目进度和质量
2. **技术风险**:新技术应用可能遇到技术难题,影响开发效率
3. **资源风险**:人力资源不足或不稳定,影响项目进展
4. **进度风险**:任务执行进度滞后,可能导致项目延期
5. **质量风险**:系统功能或性能不满足需求,影响用户体验
#### 风险评估
- **需求变更风险**:可能性中,影响程度高
- **技术风险**:可能性低,影响程度中
- **资源风险**:可能性低,影响程度中
- **进度风险**:可能性中,影响程度高
- **质量风险**:可能性低,影响程度高
#### 风险应对策略
- **需求变更风险**:建立需求变更管理流程,评估变更影响,调整项目计划
- **技术风险**:提前进行技术预研,选择成熟的技术方案,必要时寻求外部支持
- **资源风险**:合理安排工作负荷,建立备份人员机制
- **进度风险**:加强进度监控,及时调整计划,必要时增加资源投入
- **质量风险**:建立完善的测试机制,严格执行质量标准,定期进行代码审查
#### 风险监控和预警机制
- **风险监控**:每周对风险状态进行评估和更新
- **预警机制**:当风险指标达到预警阈值时,及时发出预警
- **应对措施**:针对不同风险制定具体的应对措施和应急预案
### 7. 质量保证计划
#### 质量目标和标准
- **功能完整性**所有功能需求100%实现
- **系统稳定性**系统运行稳定故障率低于0.1%
- **性能指标**响应时间不超过2秒并发用户数支持1000人以上
- **安全性**:通过安全测试,无重大安全漏洞
- **代码质量**代码规范符合团队标准测试覆盖率达到80%以上
#### 质量保证活动和措施
- **需求评审**:对需求文档进行严格评审,确保需求明确和完整
- **设计评审**:对系统设计和架构进行评审,确保设计合理性
- **代码审查**:定期进行代码审查,确保代码质量和规范性
- **测试策略**:制定全面的测试策略,包括单元测试、集成测试、系统测试
- **质量监控**:建立质量监控机制,及时发现和解决质量问题
#### 质量控制和评审机制
- **阶段性评审**:在项目各阶段结束时进行质量评审
- **测试验证**:通过各类测试验证系统质量
- **问题跟踪**:建立问题跟踪机制,确保所有问题得到解决
- **持续改进**:基于质量反馈,持续改进开发流程和方法
#### 质量测量和评估方法
- **功能测试覆盖率**:通过测试用例覆盖率评估功能实现情况
- **性能测试**:通过性能测试工具评估系统性能指标
- **代码质量评估**:使用静态代码分析工具评估代码质量
- **用户满意度**:通过用户测试和反馈评估用户满意度
## EA模型设计
### 1. 项目组织结构图
#### 设计思路
项目组织结构图采用层次化设计,清晰展示了团队成员角色和职责分工,确保每个成员了解自己在项目中的位置和责任。
#### 主要元素和关系
- **项目经理**:处于组织结构的顶层,负责项目整体管理
- **开发人员**:分为不同模块负责人,在项目经理的领导下开展工作
- **协作关系**:各开发人员之间保持密切协作,共同完成项目目标
#### 体现团队协作模式
组织结构图体现了扁平式管理和团队协作的模式,强调沟通和协作的重要性,确保项目顺利进行。
### 2. 项目甘特图
#### 设计思路和依据
甘特图基于项目范围和资源情况设计,考虑了任务的依赖关系和优先级,为项目进度管理提供了可视化工具。
#### 主要任务和时间安排
- **需求分析与建模**11月2日-11月10日
- **详细设计与接口定义**11月11日-11月30日
- **单元测试与集成测试**12月1日-12月20日
#### 体现项目进度计划
甘特图直观展示了项目各阶段的时间安排和任务分解,帮助团队成员了解项目进度计划,合理安排工作。
### 3. 用例图与UCP估算
#### 设计思路和方法
用例图基于用户需求分析设计,识别了系统的主要参与者和用例,描述了用户与系统的交互方式。
#### 主要参与者和用例
- **参与者**:普通用户、代取员、系统管理员
- **主要用例**:用户注册、用户登录、发布代取任务、接受代取任务、订单管理、支付处理、数据统计、可视化展示
#### UCP估算计算过程和结果
- **UCP用例点计算**:基于用例复杂度、技术复杂度和环境复杂度进行估算
- **估算结果**总用例点数约为120点预计工作量约为240人时
#### 对项目成本和工量的指导意义
UCP估算为项目的成本预算和工量规划提供了科学依据帮助项目管理人员合理安排资源和制定进度计划。
### 4. 需求模型图
#### 设计思路
需求模型图采用层次化结构,从整体需求到具体功能点进行分解,确保需求的完整性和一致性。
#### 主要元素和关系
- **顶层需求**:快递代取系统
- **主要模块**:注册登录、人员交互、订单支付、数据统计与可视化
- **子功能**:各模块下的具体功能点
- **关系**:父子关系、依赖关系、关联关系
#### 指导后续设计和开发
需求模型图为系统设计和开发提供了清晰的指导,确保开发人员理解需求,避免功能遗漏和误解。
### 5. 软件过程与测试模型图
#### 设计思路
采用EAGitOps过程模型与W模型组合强调开发与测试的同步进行确保软件质量。
#### 主要阶段和活动
- **需求阶段**:需求分析、需求评审、需求管理
- **设计阶段**:系统设计、详细设计、设计评审
- **开发阶段**:编码实现、代码审查、单元测试
- **测试阶段**:集成测试、系统测试、验收测试
#### 体现开发与测试同步
模型图体现了开发与测试的并行关系,测试活动从需求阶段开始,贯穿整个开发过程,确保软件质量。

@ -0,0 +1,333 @@
# 实验一软件项目计划小组报告作业题
## 小组基本信息
- **小组名称**G1组
- **项目名称**:快递代取系统
- **小组成员**
- 董玉坤(项目经理,负责数据统计与可视化)
- 程璟琦(开发人员,负责订单与支付管理)
- 董文远(开发人员,负责人员交互功能)
- 范孝宝(开发人员,负责注册登录功能)
- **实验日期**2024-11-03
- **提交日期**2024-11-07
## 小组任务完成情况
### 1. 项目概述与目标
#### 项目背景和意义
快递代取系统是现代校园生活服务的重要组成部分,旨在为学生提供便捷、高效、安全的快递代取服务。随着电子商务的快速发展,校园快递量激增,传统的取件方式已无法满足学生的需求,快递代取系统的开发可以有效解决这一问题,提高校园生活服务质量和效率。
#### 项目目标和预期成果
- 构建稳定、安全、高效的快递代取系统,支持核心快递代取业务操作
- 实现用户自助服务功能,包括注册登录、下单预约、支付结算、消息通知等
- 建立数据统计与可视化功能,为系统运营管理提供数据支持
- 确保系统性能达到校园使用标准,满足高峰期用户需求
- 提高系统安全性,保障用户信息和支付安全
#### 项目范围和边界
- 功能范围:用户认证、快递信息管理、订单管理、支付处理、数据统计分析
- 技术范围:前后端开发、数据库设计、安全机制、数据分析与可视化
- 边界:不包括复杂的物流跟踪功能,专注于校园内快递代取服务
#### 项目主要功能和特点
- 多模块协同工作:注册登录、人员交互、订单支付、数据统计四大核心模块
- 高安全性设计:采用多重加密和身份验证机制
- 友好的用户界面:简洁易用,操作流程流畅
- 强大的数据分析能力:提供多维度数据统计和可视化展示
- 系统稳定性保障:完善的异常处理和容错机制
### 2. 功能需求分析
#### 主要功能模块
1. **注册登录模块**(范孝宝负责)
- 人员注册功能
- 账号登录功能
- 密码找回功能
2. **人员交互功能**(董文远负责)
- 用户界面交互设计
- 任务发布与接受
- 消息通信功能
- 权限控制管理
3. **订单与支付管理模块**(程璟琦负责)
- 订单创建与管理
- 支付处理功能
- 订单状态流转控制
- 支付记录管理
4. **数据统计与可视化模块**(董玉坤负责)
- 数据采集功能
- 数据处理功能
- 统计分析功能
- 可视化展示功能
- 数据导出功能
#### 各功能模块具体需求
**注册登录模块**
- 支持新用户注册,包括基本信息填写和身份验证(学生认证/代取员认证)
- 提供安全的账号登录功能,支持密码加密存储
- 实现密码找回功能,通过多种方式验证用户身份
- 包含防暴力破解机制,限制登录尝试次数
- 提供友好的错误提示和用户引导
**人员交互功能**
- 设计直观、易用的用户界面,支持响应式布局,适配手机和电脑
- 实现代取任务发布和接受功能,支持状态更新和进度跟踪
- 提供实时消息通信功能,确保用户与代取员之间的信息流通
- 建立完善的权限控制机制,区分用户、代取员和管理员角色
- 保证交互流程的安全性和数据一致性
**订单与支付管理模块**
- 支持用户创建详细的代取订单,包括快递信息、取件地点、送件地点等
- 集成多种支付方式(微信、支付宝等),确保支付安全
- 实现订单状态管理,包括待支付、待接单、进行中、已完成等状态流转
- 提供订单查询和筛选功能,支持多种条件查询
- 记录所有支付流水,支持支付记录查询和对账功能
**数据统计与可视化模块**
- 收集系统中的订单数据、用户行为数据、代取员服务数据等
- 对采集的数据进行清洗、转换、聚合等预处理操作
- 实现订单量统计、用户活跃度分析、代取效率分析等功能
- 通过图表、仪表盘等形式直观展示分析结果
- 支持将统计数据和可视化图表导出为Excel、PDF等格式
#### 功能模块之间的关系和依赖
- **依赖关系**:订单支付模块依赖注册登录模块进行用户身份验证;数据统计模块依赖其他所有模块提供数据
- **交互关系**:人员交互模块作为用户与系统的接口,与所有功能模块进行交互;订单支付模块与人员交互模块密切配合,提供完整的业务流程
- **数据流关系**:各模块产生的数据流向数据统计模块,经过分析后为管理决策提供支持
#### 系统非功能性需求
- **性能需求**系统响应时间不超过2秒支持并发用户数不少于1000人
- **安全性需求**采用HTTPS加密传输实现数据加密存储定期进行安全审计
- **可用性需求**系统可用性达到99.9%,具备故障恢复和容错能力
- **可扩展性需求**:采用模块化架构,支持功能扩展和性能扩展
- **可维护性需求**:代码结构清晰,文档完善,便于后续维护和升级
### 3. 资源计划与分配
#### 人力资源分配及理由
- **董玉坤(项目经理)**:负责项目总体规划、资源协调、进度监控和数据统计模块开发,具有良好的组织协调能力和数据分析经验
- **程璟琦(开发人员)**:负责订单与支付管理模块开发,具备相关业务逻辑设计和实现经验
- **董文远(开发人员)**:负责人员交互功能开发,擅长用户界面设计和交互体验优化
- **范孝宝(开发人员)**:负责注册登录模块开发,具备安全机制设计和实现经验
#### 设备和软件资源需求
- **开发设备**:每位开发人员配备一台高性能笔记本电脑
- **开发环境**JDK 11+、IntelliJ IDEA、MySQL 8.0、Node.js、React
- **设计工具**Enterprise Architect、Axure RP
- **测试环境**JMeter、Postman、Selenium
- **版本控制**Git、GitHub/Gitee
#### 时间资源和进度安排
- **项目周期**2024年11月2日至2024年12月20日
- **各阶段时间安排**
- 需求分析与建模11月2日-11月10日8天
- 详细设计与接口定义11月11日-11月30日19天
- 单元测试与集成测试12月1日-12月20日20天
#### 资源分配的优化策略
- **任务并行**:各模块开发任务并行进行,减少项目总体时间
- **资源共享**:共享开发环境和测试资源,提高资源利用效率
- **经验复用**:充分利用团队成员的经验,避免重复工作
- **弹性调整**:根据项目进展情况,灵活调整资源分配
### 4. 项目进度计划
#### 项目总体时间安排
- **启动阶段**2024年11月2日
- **需求分析阶段**2024年11月2日-2024年11月10日
- **设计阶段**2024年11月11日-2024年11月30日
- **测试阶段**2024年12月1日-2024年12月20日
- **验收阶段**2024年12月20日
#### 各阶段任务和里程碑
- **需求分析阶段**
- 里程碑1完成需求收集和分析11月5日
- 里程碑2完成EA模型设计11月10日
- **设计阶段**
- 里程碑3完成系统架构设计11月15日
- 里程碑4完成详细设计和接口定义11月30日
- **测试阶段**
- 里程碑5完成单元测试12月10日
- 里程碑6完成集成测试12月20日
#### 任务依赖关系和关键路径
- **关键路径**:需求分析 → EA模型设计 → 系统架构设计 → 详细设计 → 单元测试 → 集成测试
- **主要依赖关系**
- EA模型设计依赖于需求分析的完成
- 详细设计依赖于系统架构设计的完成
- 集成测试依赖于所有模块单元测试的完成
#### 进度控制措施和风险应对
- **进度跟踪**:每周召开项目例会,检查进度执行情况
- **风险预警**:建立进度风险预警机制,及时发现和解决问题
- **资源调配**:根据进度情况,灵活调配人力资源
- **应急计划**:针对可能的延期情况,制定应急计划
### 5. 团队组织与协作
#### 团队角色分工和职责
- **董玉坤(项目经理)**
- 负责项目总体规划和管理
- 协调团队成员工作
- 监控项目进度
- 负责数据统计与可视化模块开发
- **程璟琦(开发人员)**
- 负责订单与支付管理模块设计和实现
- 参与系统架构设计
- 编写相关技术文档
- **董文远(开发人员)**
- 负责人员交互功能设计和实现
- 优化用户界面和交互体验
- 编写相关技术文档
- **范孝宝(开发人员)**
- 负责注册登录模块设计和实现
- 实现安全机制和身份验证
- 编写相关技术文档
#### 团队沟通机制和工具
- **定期会议**:每周一进行项目例会,讨论进度和问题
- **即时沟通**:使用企业微信/钉钉进行日常沟通
- **文档共享**使用GitHub/Gitee进行代码和文档管理
- **问题跟踪**使用JIRA进行任务管理和问题跟踪
#### 决策机制和冲突解决
- **决策原则**:基于数据和事实,团队成员共同参与决策
- **冲突解决**:采用民主协商的方式,必要时由项目经理做出最终决策
- **问题上报**:建立问题分级上报机制,确保问题得到及时解决
#### 团队协作效果评估
- **定期评估**:每月对团队协作效果进行评估
- **反馈机制**:建立团队成员之间的反馈机制,及时改进协作方式
- **激励措施**:设立团队和个人奖励机制,鼓励优秀表现
### 6. 风险分析与应对
#### 主要风险因素
1. **需求变更风险**:项目过程中需求可能发生变更,影响项目进度和质量
2. **技术风险**:新技术应用可能遇到技术难题,影响开发效率
3. **资源风险**:人力资源不足或不稳定,影响项目进展
4. **进度风险**:任务执行进度滞后,可能导致项目延期
5. **质量风险**:系统功能或性能不满足需求,影响用户体验
#### 风险评估
- **需求变更风险**:可能性中,影响程度高
- **技术风险**:可能性低,影响程度中
- **资源风险**:可能性低,影响程度中
- **进度风险**:可能性中,影响程度高
- **质量风险**:可能性低,影响程度高
#### 风险应对策略
- **需求变更风险**:建立需求变更管理流程,评估变更影响,调整项目计划
- **技术风险**:提前进行技术预研,选择成熟的技术方案,必要时寻求外部支持
- **资源风险**:合理安排工作负荷,建立备份人员机制
- **进度风险**:加强进度监控,及时调整计划,必要时增加资源投入
- **质量风险**:建立完善的测试机制,严格执行质量标准,定期进行代码审查
#### 风险监控和预警机制
- **风险监控**:每周对风险状态进行评估和更新
- **预警机制**:当风险指标达到预警阈值时,及时发出预警
- **应对措施**:针对不同风险制定具体的应对措施和应急预案
### 7. 质量保证计划
#### 质量目标和标准
- **功能完整性**所有功能需求100%实现
- **系统稳定性**系统运行稳定故障率低于0.1%
- **性能指标**响应时间不超过2秒并发用户数支持1000人以上
- **安全性**:通过安全测试,无重大安全漏洞
- **代码质量**代码规范符合团队标准测试覆盖率达到80%以上
#### 质量保证活动和措施
- **需求评审**:对需求文档进行严格评审,确保需求明确和完整
- **设计评审**:对系统设计和架构进行评审,确保设计合理性
- **代码审查**:定期进行代码审查,确保代码质量和规范性
- **测试策略**:制定全面的测试策略,包括单元测试、集成测试、系统测试
- **质量监控**:建立质量监控机制,及时发现和解决质量问题
#### 质量控制和评审机制
- **阶段性评审**:在项目各阶段结束时进行质量评审
- **测试验证**:通过各类测试验证系统质量
- **问题跟踪**:建立问题跟踪机制,确保所有问题得到解决
- **持续改进**:基于质量反馈,持续改进开发流程和方法
#### 质量测量和评估方法
- **功能测试覆盖率**:通过测试用例覆盖率评估功能实现情况
- **性能测试**:通过性能测试工具评估系统性能指标
- **代码质量评估**:使用静态代码分析工具评估代码质量
- **用户满意度**:通过用户测试和反馈评估用户满意度
## EA模型设计
### 1. 项目组织结构图
#### 设计思路
项目组织结构图采用层次化设计,清晰展示了团队成员角色和职责分工,确保每个成员了解自己在项目中的位置和责任。
#### 主要元素和关系
- **项目经理**:处于组织结构的顶层,负责项目整体管理
- **开发人员**:分为不同模块负责人,在项目经理的领导下开展工作
- **协作关系**:各开发人员之间保持密切协作,共同完成项目目标
#### 体现团队协作模式
组织结构图体现了扁平式管理和团队协作的模式,强调沟通和协作的重要性,确保项目顺利进行。
### 2. 项目甘特图
#### 设计思路和依据
甘特图基于项目范围和资源情况设计,考虑了任务的依赖关系和优先级,为项目进度管理提供了可视化工具。
#### 主要任务和时间安排
- **需求分析与建模**11月2日-11月10日
- **详细设计与接口定义**11月11日-11月30日
- **单元测试与集成测试**12月1日-12月20日
#### 体现项目进度计划
甘特图直观展示了项目各阶段的时间安排和任务分解,帮助团队成员了解项目进度计划,合理安排工作。
### 3. 用例图与UCP估算
#### 设计思路和方法
用例图基于用户需求分析设计,识别了系统的主要参与者和用例,描述了用户与系统的交互方式。
#### 主要参与者和用例
- **参与者**:普通用户、代取员、系统管理员
- **主要用例**:用户注册、用户登录、发布代取任务、接受代取任务、订单管理、支付处理、数据统计、可视化展示
#### UCP估算计算过程和结果
- **UCP用例点计算**:基于用例复杂度、技术复杂度和环境复杂度进行估算
- **估算结果**总用例点数约为120点预计工作量约为240人时
#### 对项目成本和工量的指导意义
UCP估算为项目的成本预算和工量规划提供了科学依据帮助项目管理人员合理安排资源和制定进度计划。
### 4. 需求模型图
#### 设计思路
需求模型图采用层次化结构,从整体需求到具体功能点进行分解,确保需求的完整性和一致性。
#### 主要元素和关系
- **顶层需求**:快递代取系统
- **主要模块**:注册登录、人员交互、订单支付、数据统计与可视化
- **子功能**:各模块下的具体功能点
- **关系**:父子关系、依赖关系、关联关系
#### 指导后续设计和开发
需求模型图为系统设计和开发提供了清晰的指导,确保开发人员理解需求,避免功能遗漏和误解。
### 5. 软件过程与测试模型图
#### 设计思路
采用EAGitOps过程模型与W模型组合强调开发与测试的同步进行确保软件质量。
#### 主要阶段和活动
- **需求阶段**:需求分析、需求评审、需求管理
- **设计阶段**:系统设计、详细设计、设计评审
- **开发阶段**:编码实现、代码审查、单元测试
- **测试阶段**:集成测试、系统测试、验收测试
#### 体现开发与测试同步
模型图体现了开发与测试的并行关系,测试活动从需求阶段开始,贯穿整个开发过程,确保软件质量。
Loading…
Cancel
Save