软件工程实践——结对作业二

这个作业属于哪个课程 软件工程实践2022年春-F班
这个作业要求在哪里 软件工程实践——结对作业二
结对学号 221900121 && 221900128
这个作业的目标 完成上次结对作业模型的具体设计
其他参考文献 优快云

1、Git仓库与代码规范链接

Git仓库地址

2、项目部署链接

项目部署链接

3、PSP表格

PSP Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划
• Estimate • 估计这个任务需要多少时间 1360 2150
Development 开发
• Analysis • 需求分析 (包括学习新技术) 20 10
• Design Spec • 生成设计文档 60 100
• Design Review • 设计复审 20 30
• Coding Standard • 代码规范 (为目前的开发制定合适的规范) 20 30
• Design • 具体设计 30 50
• Coding • 具体编码 900 1060
• Code Review • 代码复审 60 100
• Test • 测试(自我测试,修改代码,提交修改) 130 550
Reporting 报告
• Test Report • 测试报告 30 60
• Size Measurement • 计算工作量 10 20
• Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划 60 100
合计 1360 2150

4、成品展示

  • 奖牌地图:当鼠标悬停至某个参赛国时,显示其奖牌信息,同时可利用鼠标控制地图的缩放和移动。

map

  • 奖牌总榜:显示当前北京时间和奖牌榜列表,将中国对应一行高亮显示。

image-20220324161906498

  • 项目赛程:显示15个项目名称格子,点击任意一个项目,将会跳转至对应的项目赛程列表。

image-20220324161924143

  • 赛程列表:页面显示项目的赛程列表,每一行包含:时间大项比赛场馆比赛状态数据。而数据一列,对应不同比赛的成绩公报,点击后跳转至对应的详细赛程页面。

image-20220324162006660

  • 下拉列表进行分别对时间、项目、馆场进行查询。

select

  • 个人赛 以列表的形式展示数据,每一行包含:排名国家/地区姓名/代表队总成绩

image-20220324162517611

  • 参赛选手不止一位时,将其并列显示。

image-20220324162822045

  • 混合团体赛 同样以列表的形式展示数据,每一行包含:国家/姓名得分得分国家/姓名

image-20220324162700853

  • 国家赛 分成三个水平排列的块,左边为一国的出场名单,中间包含两小块:两国得分两队详细比分,右边为另一国的出场名单

image-20220324162627441

  • 了解更多:看起来很拉,主要介绍申奥的小故事以及冬奥会的吉祥物冰墩墩的来历

image-20220324162945840

5、结对讨论过程

项目分工

image-20220325191800539

  • 对于素材来源,由于在原型的设计过程中是由 WJD寻找的,所以由WJD整理素材之后发给RHL。

image-20220325191507424

  • 一开始地图的原型采用的是amcharts的组件,但是由于领土完整性原因,我们放弃了,改用echarts的地图。

image-20220325191607488

image-20220325191340857

小插曲

image-20220325191019911

6、设计实现过程

6.1 功能结构图

image-20220324183233910

6.2 项目设计与实现

设计过程主要分为两个部分,鸿林同学负责前端,建东同学负责后端和一部分前端。

前端的页面设计,主要按照原型进行设计,HTML设计结构,CSS设计样式、JavaScript用来进行地图的显示和数据的获取,配合Thymeleaf模板引擎 与后端 Spring Boot 进行数据交互。

地图部分使用echarts的地图组件进行渲染,奖牌信息通过发get请求到后端获得,同时在echarts参数option的tooltips的formatter设置function,将后台传来的奖牌信息渲染至页面。

后端使用 Controller 进行视图渲染和跳转。分别是 MedalsControllerMapControllerMatchesControllerMoreControllerDetailsController

对于需要提供数据的 Controller 都配置一个 Service ,通过前端传来的参数 给 Controller 提供对应的方法,分别是 MedalsServiceMatchesServiceDetailService

针对每一个页面设计不同的实体类 pojo,用来接收json数据的信息。分别是 MedalMatchResultInfoPersonResultTeamResultNationResult

对于数据,通过冬奥官网的API接口进行获取,设计 JsonUtil 类为 Service 提供方法,其中包含获取各类数据的方法,解析Json后装配进实体类中,返回给 Service 。

6.3 关键代码
  • 本次作业的核心主要是数据获取以及对JSON数据进行解析处理

奖牌数据获取与解析

public static List<Medal> getMedalList(String url) {
   
   
    RestTemplate template = new RestTemplate();
    List<Medal> list = new ArrayList<>();
    ResponseEntity<String> response = template.getForEntity(url, String.class);
    JSONArray matchList;
    try {
   
   
        String body = response.getBody();
        Assert.notNull(body, "响应数据为空!");
        // 去掉除json数据外其他的字符
        String replace = body.substring(body.indexOf("(") + 1, body.indexOf(")"));
        // 读取json数据
        matchList = JSON.parseObject(replace).getJSONObject("data").getJSONArray("medalsList");
        // 转换成实体类list
        list = matchList.toJavaList(Medal.class);
    } catch (Excepti
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值