这个作业属于哪个课程 | 2023年福大-软件工程实践W班 |
---|---|
这个作业要求在哪里 | 要求在这里 |
这个作业的目标 | 团队协同开发一个以澳网比赛为背景的竞猜平台 |
其他参考文献 | Element组件 |
文章目录
1、项目地址
1.1 GitCode仓库
1.2 项目网页地址
2、GitCode提交日志截图
2.1 各组员commit次数
组员学号姓名 | 上传次数 |
---|---|
022000515 林翔 | 3 |
222000303 陈博源 | 5 |
222000203 陈英杰 | 3 |
221900204 陈鸿越 | 3 |
222000326 严文斌 | 3 |
222000324 郑淏 | 3 |
222000421 莫梓民 | 3 |
222000323 岳晓涵 | 3 |
2.2 commit截图
3、程序运行环境
操作系统
:Win10系统
浏览器
:Google Chrome 112.0.5615.50(正式版本) (64 位)
4、 功能需求分析建模
4.1 类图
1、比赛竞猜类图:
在参与竞猜页面,每场比赛的竞猜信息以竞猜ID
为唯一标识。在比赛未开始时,展示比赛双方选手姓名
、比赛时间
、最大竞猜人数
、竞猜开始时间
和竞猜结束时间
。比赛结束后,将调用公布竞猜结果
方法,展示比赛比分和竞猜结果,同时通知中奖用户
:
2、用户类图:
每个用户以用户ID
为唯一标识,每个用户的基本信息包括:用户名
、密码
、电话
、地址
、身份证号
(确保一人一号),和持有的积分数
。用户可以查看或修改个人信息
,修改密码
和查看已参与的竞猜
。参与竞猜后,如果猜中则更新持有的积分数
,用户可以使用积分兑换商品
:
4.2 用户用况图
4.3 一些重要数据库表的设计
1、用户信息表
以account
字段为主键。包含一些用户的基本信息。其中identity
字段为用户的身份证号,用于限制用户只能拥有一个账号参与竞猜。
2、比赛表
以match_id
字段为主键。其中包含的A_point
和B_point
字段表示所有参与该比赛竞猜的用户在比赛双方投入的所有积分。
3、参与竞猜信息表
用户参与的竞猜信息表以id
为主键。其中user_id
指向参与竞猜的用户,match_id
指向用户竞猜的比赛,team_id
指向用户预测将会胜利的队伍,point
表示用户投入的积分:
5、功能实现思路描述
5.1 问题思考
Q:用户如何快速知道有竞猜功能并参与竞猜?
A:首先,网站标题为“澳网竞猜网”,用户就可以由此得知该网站有竞猜功能。用户如果想参与竞猜,可以登录后通过点击竞猜页面查看正在进行的可竞猜比赛来参与竞猜。
Q:竞猜结果如何告知用户?
A:理想的实现方法是,为用户提供一个收件箱页面,当用户参与竞猜的比赛结束时,通过收件箱告知用户竞赛结果。但是由于时间紧迫,而且该网站的比赛结果在当前已经是已知的,实现真正的竞猜意义不大,所以我们计划用户投入积分后直接弹窗告知用户竞猜结果。
Q:如何保证一人一号?防止用户多次注册账号参与竞猜。
A:用户登录后如果想要参与竞猜,将会被要求进行实名认证,如果用户的身份证号已经被使用,将不被允许参与竞猜,以此防止用户多次注册账号参与竞猜。
5.2 比赛结束后如何分配奖池的积分?
竞猜截止前奖池内不断积累用户投入的积分,并将在比赛结束公布竞猜结果时将奖池内的积分均分给竞猜结果正确的用户。即假设竞猜截止后奖池内累计了N点积分,a位用户猜A队胜利,b位猜B队胜利。若比赛结束后A队胜利,则猜A队胜利的a位用户没人得到N/a
点积分;若比赛结束后B队胜利,则猜B队胜利的b位用户没人得到N/b
点积分。
5.3 竞猜功能是如何实现的?
用户登录后进入竞猜页面,可以查看可竞猜的比赛,并选择队伍进行投注,后台会统计所有用户在该比赛累积的积分,当比赛结束时将会通知用户竞猜结果并按照上述的分配规则为结果正确的用户给予积分奖励,并更新所有用户的积分数值。
6、程序运行截图及说明
一、首页
二、登录注册功能
登录:
注册:
三、竞猜功能
竞猜页面可以查看每天可竞猜的比赛:
点击对应队伍卡片
会出现下拉选项,用户可以选择投分数量并投入积分:
四、商城功能
展示商城中所有可兑换的商品和所需的积分:
点击积分兑换
按钮可以兑换物品:
7、合作分工
7.1 团队成员分工及贡献评估
组员学号姓名 | 分工 | 贡献度 |
---|---|---|
022000515 林翔 | 前端(登录、注册界面,个人信息界面) | 12 |
222000303 陈博源 | 后端(登录、注册界面) | 10 |
222000203 陈英杰 | 前端(竞猜界面) | 12 |
221900204 陈鸿越 | 前端(登录、注册界面,个人信息界面) | 10 |
222000326 严文斌 | 后端(竞猜界面) | 16 |
222000324 郑淏 | 前端(商城页面)、博客撰写 | 16 |
222000421 莫梓民 | 前端(竞猜界面) | 8 |
222000323 岳晓涵 | 前端(竞猜界面) | 16 |
7.2 合作中遇到的困难及解决方法
组员学号姓名 | 遇到的困难 | 解决方法 |
---|---|---|
022000515 林翔 | 前后端交互的困难 | 与后端充分沟通,查看错误信息得以解决 |
222000303 陈博源 | 后端技术的困难 | 向会这门技术的同学求教,基本学会使用所需的方法 |
222000203 陈英杰 | 因为之前Vue框架的了解较少,对vue的一些语句的使用和数据的读取和使用存在问题 | 请教在网上查询和请教其他熟悉Vue框架的同学,在同学的帮助下完成编码 |
221900204 陈鸿越 | HTML文件移植到Vue框架里时,有些函数放在特定位置会出现错误 | 接口在调用数据时,要注意拿到的是注册用的手机号还是登录用的手机号 |
222000326 严文斌 | 团队开发时间少,难以进行组员的分工 | 召开线下组会,了解组员各自技术栈,快速确定各自分工 |
222000324 郑淏 | 对element UI里的控件不了解,无法实现想要的布局效果 | 百度查找相关教程,向队伍中的前端大佬队友请教 |
222000421 莫梓民 | 对vue框架不熟悉 | 向同学请教 |
222000323 岳晓涵 | 遇到的问题 git合并代码冲突, 先拉再提交 | 发现代码仓库结构冲突,重新修改代码仓库结构 |
7.3 各组员PSP表格
022000515 林翔:
PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 25 |
• Estimate | • 估计这个任务需要多少时间 | 15 | 20 |
• Analysis | • 需求分析 | 30 | 40 |
• Concrete Design | • 具体设计 | 20 | 30 |
• Coding | • 具体编码 | 300 | 400 |
• Code Review | • 代码复审 | 30 | 40 |
• Test | • 测试(自我测试,修改代码,提交修改) | 30 | 30 |
• Size Measurement | • 计算工作量 | 10 | 10 |
• Postmortem | • 事后总结 | 10 | 10 |
合计 | 465 | 605 |
222000303 陈博源:
PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 10 | 15 |
• Estimate | • 估计这个任务需要多少时间 | 10 | 15 |
Development | 开发 | 360 | 420 |
• Analysis | • 需求分析 | 30 | 20 |
• Design | • 具体设计 | 100 | 120 |
• Coding | • 具体编码 | 200 | 240 |
• Code Review | • 代码复审 | 10 | 20 |
• Test | • 测试(自我测试,修改代码,提交修改) | 20 | 20 |
Reporting | 报告 | 15 | 20 |
• Size Measurement | • 计算工作量 | 5 | 10 |
• Postmortem | • 事后总结 | 10 | 10 |
合计 | 385 | 455 |
222000203 陈英杰:
PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 20 |
• Estimate | • 估计这个任务需要多少时间 | 15 | 15 |
• Analysis | • 需求分析 | 20 | 30 |
• Concrete Design | • 具体设计 | 50 | 60 |
• Coding | • 具体编码 | 190 | 230 |
• Code Review | • 代码复审 | 20 | 30 |
• Test | • 测试(自我测试,修改代码,提交修改) | 30 | 40 |
• Size Measurement | • 计算工作量 | 15 | 15 |
• Postmortem | • 事后总结 | 15 | 15 |
合计 | 375 | 455 |
221900204 陈鸿越:
PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 40 |
• Estimate | • 估计这个任务需要多少时间 | 10 | 10 |
• Analysis | • 需求分析 | 20 | 20 |
• Concrete Design | • 具体设计 | 30 | 40 |
• Coding | • 具体编码 | 600 | 650 |
• Code Review | • 代码复审 | 30 | 30 |
• Test | • 测试(自我测试,修改代码,提交修改) | 30 | 30 |
• Size Measurement | • 计算工作量 | 10 | 10 |
• Postmortem | • 事后总结 | 15 | 10 |
合计 | 775 | 840 |
222000326 严文斌:
PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 10 | 20 |
• Estimate | • 估计这个任务需要多少时间 | 10 | 10 |
• Analysis | • 需求分析 | 50 | 40 |
• Concrete Design | • 具体设计 | 30 | 40 |
• Coding | • 具体编码 | 220 | 420 |
• Code Review | • 代码复审 | 30 | 30 |
• Test | • 测试(自我测试,修改代码,提交修改) | 30 | 30 |
• Size Measurement | • 计算工作量 | 10 | 15 |
• Postmortem | • 事后总结 | 10 | 10 |
合计 | 400 | 615 |
222000324 郑淏:
PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 10 | 10 |
• Estimate | • 估计这个任务需要多少时间 | 10 | 15 |
• Analysis | • 需求分析 | 30 | 40 |
• Concrete Design | • 具体设计 | 40 | 50 |
• Coding | • 具体编码 | 250 | 400 |
• Code Review | • 代码复审 | 20 | 30 |
• Test | • 测试(自我测试,修改代码,提交修改) | 30 | 30 |
• Size Measurement | • 计算工作量 | 10 | 10 |
• Postmortem | • 事后总结 | 5 | 10 |
合计 | 405 | 595 |
222000421 莫梓民:
PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 10 | 15 |
• Estimate | • 估计这个任务需要多少时间 | 5 | 10 |
• Analysis | • 需求分析 | 10 | 20 |
• Concrete Design | • 具体设计 | 20 | 30 |
• Coding | • 具体编码 | 100 | 150 |
• Code Review | • 代码复审 | 20 | 30 |
• Test | • 测试(自我测试,修改代码,提交修改) | 30 | 40 |
• Size Measurement | • 计算工作量 | 10 | 10 |
• Postmortem | • 事后总结 | 10 | 10 |
合计 | 215 | 315 |
222000323 岳晓涵:
PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 15 | 15 |
• Estimate | • 估计这个任务需要多少时间 | 10 | 10 |
• Analysis | • 需求分析 | 10 | 15 |
• Concrete Design | • 具体设计 | 30 | 20 |
• Coding | • 具体编码 | 400 | 450 |
• Code Review | • 代码复审 | 20 | 20 |
• Test | • 测试(自我测试,修改代码,提交修改) | 20 | 25 |
• Size Measurement | • 计算工作量 | 30 | 30 |
• Postmortem | • 事后总结 | 10 | 10 |
合计 | 535 | 595 |
8、附加功能
一、合理的积分策略
即前文以提到的积分策略: 竞猜截止前奖池内不断积累用户投入的积分,并将在比赛结束公布竞猜结果时将奖池内的积分均分给竞猜结果正确的用户。即假设竞猜截止后奖池内累计了N点积分,a位用户猜A队胜利,b位猜B队胜利。若比赛结束后A队胜利,则猜A队胜利的a位用户没人得到N/a
点积分;若比赛结束后B队胜利,则猜B队胜利的b位用户没人得到N/b
点积分。
二、竞猜时可以选择下注的积分,积分可以兑换奖品。
选择可下注积分:
商城兑换商品: