软件工程第二次结对作业 编程实现

news/2024/10/10 21:40:41
这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13281
这个作业的目标 Web、APP、小程序中三选一实现,可以让用户在其中发布自己想做的项目(包含必要项目信息),用户能够在其中实时交流,除此外随意发挥
学号 102201630
结对队友

1、Github项目地址:https://github.com/yuebai243694/102201630

PSP表格

PSP2.1 Personal Software Process Stages 预计耗时(天) 实际耗时(天)
Planning 计划 5 5
Estimate 估计这个任务需要多少时间 5 5
Development 开发 4 3
Analysis 需求分析 (包括学习新技术) 5 5
Design Spec 生成设计文档 0.4 0.4
Design Review 设计复审 2 2
Coding Standard 代码规范 (为目前的开发制定合适的规范) 5 5
Design 具体设计 5 5
Coding 具体编码 5 5
Code Review 代码复审 1 1.5
Test 测试(自我测试,修改代码,提交修改) 0.5 0.5
Reporting 报告 0.3 0.4
Test Repor 测试报告 0.2 0.1
Size Measurement 计算工作量 5 5
Postmortem&Process Improvement Plan 事后总结, 并提出过程改进计划 5 5
合计 5 5

具体分工(无结对队友,一人揽活,一人烂活,累死累活)

2、解题思路描述与设计实现说明

要实现的功能:

1.用户注册、登录(留几个常驻人口确保后续相关登录出错时,判断数据库或者表是否出错)

2.用户可以在页面发布项目且项目保留于列表中

3.用户可实时交流(重点,在基本确定无特别捣乱人群情况下,设计一个公共聊天室,省力且高效)

设计想法:

先做个大概框架(包含用户模型<用于注册登录>、项目模型<创建、保存项目>、信息模型<只管理聊天室的消息>)

1.创建用户信息表,创建用户模型,记录账密,同时设定两个常驻人口

2.在1的基础上,创建项目模型,然后可选择创建新表或者迁移数据库实现项目信息的创建和保存(出于省力且后续时间不够拓展新功能的考量选择后者)

3.创建消息模型,保存消息到数据库中,确保消息可被存储和被调出

大致思路

个人认为有价值的代码片段




这些代码最终实现了创建一个公共聊天室的功能,在服务器端不停止运行的情况下,与QQ的实时交流有着一定的相似之处,在不超出数据库承受范围(虽然是轻量级,但应该也不容易超出范围)的前提下,相当于创建了一个极小型的办公聊天室,再被更有能力的人开发之后,或许可以应用于一些小型私企

3、附加特点设计与展示

没想到整体做完还能有一定的时间拓展功能,但由于之前使用过数据库迁移了,进行新的模型创建和后端改造时数据库的更新跟不上新创模型的变动,而且再进行数据库的初始化和新的表的创建十分麻烦,推翻重来的时间不足,就新增了“搜索项目”的功能。

“搜索”这个功能并不特殊,缺乏新意,但有心意,实用。在数据库中项目信息过多,当前页面承载过多项目超出一眼可见的范围时,使用“搜索”可以直接从数据库里索取出包含关键字的项目,并且过滤掉其他项目。能帮助快速检索个人会感兴趣的项目。实现思路:新增项目搜索的路由,在主页面增加搜索框。


成果展示






4、目录说明

flaskProject+++
│ app.py
│ init1.py
│ test_app.py
│ test_index_route.py
│ test_init_db.py
│ test_logout.py
│ test_user_loader.py

├─.idea
│ │ .gitignore
│ │ app.py
│ │ dataSources.local.xml
│ │ dataSources.xml
│ │ flaskProject.iml
│ │ init1.py
│ │ misc.xml
│ │ modules.xml
│ │ workspace.xml
│ │
│ ├─.idea
│ │ │ .gitignore
│ │ │ dataSources.local.xml
│ │ │ dataSources.xml
│ │ │ flaskProject.iml
│ │ │ misc.xml
│ │ │ modules.xml
│ │ │ workspace.xml
│ │ │
│ │ ├─dataSources
│ │ │ │ 84b2feac-4664-43d3-b05e-b1916b8a2eb6.xml
│ │ │ │
│ │ │ └─84b2feac-4664-43d3-b05e-b1916b8a2eb6
│ │ │ └─storage_v2
│ │ │ └─_src_
│ │ │ └─schema
│ │ │ main.uQUzAA.meta
│ │ │
│ │ └─inspectionProfiles
│ │ profiles_settings.xml
│ │
│ ├─dataSources
│ │ │ 84b2feac-4664-43d3-b05e-b1916b8a2eb6.xml
│ │ │
│ │ └─84b2feac-4664-43d3-b05e-b1916b8a2eb6
│ │ └─storage_v2
│ │ └─_src_
│ │ └─schema
│ │ main.uQUzAA.meta
│ │
│ ├─inspectionProfiles
│ │ profiles_settings.xml
│ │
│ ├─instance
│ │ projects.db
│ │ sqlite.db
│ │
│ ├─migrations
│ │ │ alembic.ini
│ │ │ env.py
│ │ │ README
│ │ │ script.py.mako
│ │ │
│ │ ├─versions
│ │ │ │ b6f7c19366e4_add_description_and_due_date_to_project.py
│ │ │ │
│ │ │ └─__pycache__
│ │ │ b6f7c19366e4_add_description_and_due_date_to_project.cpython-312.pyc
│ │ │
│ │ └─__pycache__
│ │ env.cpython-312.pyc
│ │
│ ├─static
│ │ image1.png
│ │ image2.png
│ │ image3.png
│ │ image4.png
│ │ image5.png
│ │
│ ├─Templates
│ │ chat.html
│ │ create_project.html
│ │ dashboard.html
│ │ index.html
│ │ login.html
│ │ register.html
│ │
│ └─__pycache__
│ app.cpython-312.pyc

├─.pytest_cache
│ │ .gitignore
│ │ CACHEDIR.TAG
│ │ README.md
│ │
│ └─v
│ └─cache
│ lastfailed
│ nodeids
│ stepwise

├─instance
│ projects.db
│ sqlite.db

├─migrations
│ │ alembic.ini
│ │ env.py
│ │ README
│ │ script.py.mako
│ │
│ ├─versions
│ │ │ b6f7c19366e4_add_description_and_due_date_to_project.py
│ │ │
│ │ └─__pycache__
│ │ b6f7c19366e4_add_description_and_due_date_to_project.cpython-312.pyc
│ │
│ └─__pycache__
│ env.cpython-312.pyc

├─static
│ image1.png
│ image2.png
│ image3.png
│ image4.png
│ image5.png

├─Templates
│ chat.html
│ create_project.html
│ dashboard.html
│ index.html
│ login.html
│ register.html

└─__pycache__
app.cpython-312.pyc
test_app.cpython-312-pytest-8.3.3.pyc
test_index_route.cpython-312.pyc

4.1使用说明:可以参照上方成果展示的图进行网页的运行,页面中的所有按钮基本都能完成相应的功能,请注意:注册时,如果跳出已经“注册成功”的弹窗,不要信,本人写晕了,把注册成功的弹窗和登录的弹窗显示搞混了,不过不影响正常功能实现,只要当弹窗不存在即可。如果还有疑问的话,请联系邮箱316591862@qq.com。不想下载安装SQLite且时间不多的同学请联系我使用我在Github中所标注的第一种办法。

5、单元测试

1.测试工具的使用:包括但不限于:Python 的 unittest 模块以及 Flask 提供的测试工具 Flask.testing。对于功能性代码的单元测试,本人基本是交给chatgpt指定用某种测试工具进行测试,时间较少,该模块的内容还没有涉猎太多。



2.如上图,测试的函数功能为聊天室中的用户发消息时,数据库能否正确接收保存

3.基于chatgpt给出的测试代码,找到测试数据模块的时候,随意改动测试数据的值和后续检验的测试值(保证传输的和检验的数据相同),功能性代码设计之初,考虑的大框架即为可被识别的消息即可进行尽可能正确传输,在框架想法较大较理想时,有BUG也是必然,既然有BUG那就考虑BUG是否会有恶性影响,在无恶性影响的情况下,适当保留但需要做记录以备日后可能得改动。

6、Github的代码签入记录截图

7、遇到的代码模块异常或结对困难及解决方法

1.在优先保证注册登录和实时交流功能完整的前提下,因为对数据库的使用还不是很深刻,对数据库迁移后可能带来的麻烦没有做进一步的考量,导致构建项目模型,想将项目信息也保存进数据库时,出现了数据库错误使用的大困难;而后重新做数据库初始化后甚至又一次犯错导致拓展的特色功能无法再下决定推翻重来

2.结对困难主要体现在本人比较孤僻,斗胆和四个陌生人发出结对请求已经超出心理限定了,最终磕磕绊绊一个人做结对作业

3.个人编码能力并没有显著提高,挑错能力却有长进

8、评价队友→无队友,无法评价,希望大团队作业能有和别人协作的机会(本人编程弱还望未来队友海涵)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/69965.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

25年se保研经验帖

前言 之前看了许多与保研相关的经验贴,对我帮助很大,现在对我个人来说也算是保研成功了,也写下自己的一个保研经历,希望对后来人有帮助。 个人情况 本科学校:末二 排名:7% 科研:无 竞赛:计算机设计大赛、互联网+(比较水) 英语:四级低分,六级没过 最终推免学校:湖南…

2024秋软件工程结对作业(第二次之程序实现)

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13281这个作业的目标 根据前一次作业中设计的原型,合作开发一个微信小程序“CrossCollab”学号 102201211结对成员学号 102201317我的…

DCL并发事务问题与解决 -2024/10/10

DCL use mysql;-- 创建用户 create user yd@localhost identified by 123456; -- 修改用户的密码 alter user yd@localhost identified by 1234; -- % 表示任意主机都可以访问 -- 删除用户 drop user yd@localhost; -- 查询权限 show grants for yd@localhost; -- 授予权限 gra…

20222321 2024-2025-1 《网络与系统攻防技术》实验一实验报告

一.实验内容 1 实验目标 本次实践的对象是一个名为pwn1的linux可执行文件。 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。 该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们实践的目…

20222304 2024-2025-1 《网络与系统攻防技术》实验一实验报告

1.实验内容 1.1本周学习内容 1)反汇编 反汇编是指将计算机程序的机器代码转换回其相应的汇编代码的过程。在计算机编程和逆向工程领域中,反汇编是一种常见的技术,用于理解和分析二进制程序的功能和内部结构。 通常情况下,程序员编写的源代码会被编译器转换成机器码,这是计…

一个0day的开端-失败的man与nday

最近在审计java的CMS,跟着文章进行nday审计,找准目标newbee-mall Version1.0.0,并跟着网上文章进行审计,没想到nday全部复现失败,但在一番审计后找到了一个新的漏洞点:ssrf,且在前台可以被用户触发。最近在审计java的CMS,跟着文章进行nday审计,找准目标newbee-mall Ve…

第二次结对作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13281这个作业的目标 设计一个小程序解决学生问题学号 102202133结对成员 022204045结对同学的博客链接 https://www.cnblogs.com/ino…

2024秋软件工程第二次结对作业之程序实现

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13281这个作业的目标 完善改进第一次结对作业的内容自学新技术,完成程序的实现与结对队友合作,共同完成web的制作本人学号 10220130…