news 2026/4/30 23:00:34

EE308FZ 软件工程课程 Extreme Programming 任务

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
EE308FZ 软件工程课程 Extreme Programming 任务

Course for This Assignment:EE308FZ

Team Members:LinQixuan | LinJuntian

MU ID:23126302 | 23125543

Repository Address: LinQixuan1985/Extreme-Programming

目录

1.任务要求 Requirements

2.PSP table

3.功能设计思路

3.1整体设计目标

3.2系统架构设计

3.3技术选型

3.4核心功能模块设计

3.4.1. 联系人管理

3.4.2. 书签(收藏)功能

3.4.3. 多联系方式

3.4.4. Excel 导入/导出

4.github repository commit

5.项目展示

5.1代码截图

5.2运行视频

6.项目总结

6.1遇到的困难与解决方法

6.2成员贡献评价


1.任务要求 Requirements

1.1 书签

实现的关键功能之一是允许用户收藏/收藏联系人。这应允许用户将某些联系人标记为重要或频繁联系,以便他们未来快速访问这些联系人。
1.2. 添加多个联系方式

在你的申请中,你应该允许用户将多个联系方式关联到一个联系人。这可能包括但不限于电话号码、电子邮件地址、社交媒体账号和实体地址。
1.3. 导入导出

导出:将每个联系人及其地址簿中的所有信息导出到Excel表格。正确格式化电子表格,将每个联系人的信息放在单独行,每种信息类型(例如姓名、电话号码)放在单独列。
导入:能够读取并添加格式正确Excel文件中的信息到通讯录中。
1.4. 网页部署(可选)

将通讯录部署到云服务器上。该项目部署在华为云或阿里云等服务器上,且与localhost的链接不算作云部署

2.PSP table

阶段内容描述计划时间(min)实际时间(min)差异分析
Planning(计划)• 理解需求
• 确定技术栈(Flask + MySQL + HTML)
• 制定开发计划
3040需求细节考虑不足,额外花时间确认数据库设计
Analysis(分析)• 设计数据库表结构
• 规划 API 接口
• 明确前后端交互逻辑
4050电话号码唯一性约束需反复验证
Design(设计)•编写models.pyconfig.py
• 设计前端页面布局
• 定义错误处理机制
5060前端样式调整耗时略超预期
Coding(编码)• 实现后端 CRUD 接口
• 编写前端 JS 交互逻辑
• 集成fetch请求与 DOM 操作
120150调试 CORS 和Failed to fetch问题占用较多时间
Test(测试)• 手动测试增删改查功能
• 检查浏览器兼容性与错误提示
6070发现并修复一个删除后未刷新列表的 bug
Reporting(报告)• 编写项目文档README
• 整理 SQL 初始化脚本
• 填写 PSP 表格
4050文档撰写力求清晰,耗时稍长
总计340420+80 分钟(+23.5%)

3.功能设计思路

3.1整体设计目标

轻量级:无需复杂云服务,无需公网 IP 或域名,单机即可运行

全功能:支持书签、多联系方式、Excel 导入导出等功能

前后端分离:前端 HTML + 后端 Python API,便于维护和扩展

3.2系统架构设计

+---------------------+ | 前端 (Frontend) | | contacts.html | ← 用户界面(浏览器打开) +----------+----------+ | HTTP (localhost:5000) | +----------v----------+ | 后端 (Backend) | | Flask + SQLAlchemy | +----------+----------+ | SQLite / MySQL (本地数据库)

3.3技术选型

模块技术分析
前端HTML无框架依赖,直接双击contacts.html可预览(但 API 需后端)
后端Python + Flask轻量、易写、适合小型应用
数据库MySQL单文件存储,完美适配本地场景
Excel 处理前端使用 SheetJS(xlsx)避免后端依赖pandas/openpyxl,减轻环境配置负担

3.4核心功能模块设计

3.4.1.联系人管理
  • 字段:
    • name(必填)
    • phone_numbers: list[str](至少1个)
    • emails: list[str]
    • addresses: list[str]
    • socials: list[str]
    • is_bookmarked: bool(默认 False)
3.4.2.书签(收藏)功能
  • 点击 ★ 切换is_bookmarked状态
  • 支持“仅显示收藏”筛选
  • 前端实时更新,无需刷新页面
3.4.3.多联系方式
  • 每类联系方式可动态添加/删除
  • 存储为 JSON 数组(SQLite 使用 TEXT + JSON 序列化)
3.4.4.Excel 导入/导出
  • 导出:前端将联系人列表转为 Excel 并下载(.xlsx
  • 导入:用户选择 Excel 文件 → 前端解析 → 调用后端批量创建接口

4.github repository commit

5.项目展示

5.1代码截图

部分后端代码截图

部分数据库代码截图

部分前端代码截图

5.2运行视频

软件工程Extreme Programming任务演示

6.项目总结

6.1遇到的困难与解决方法

为了简化本地使用,我希望用户只需双击contacts.html文件即可打开前端界面(即通过file://C:/.../contacts.html访问)。但当页面尝试向http://localhost:5000/api/contacts发送 AJAX 请求时,浏览器控制台报错。经查询,这是因为现代浏览器出于安全策略,禁止从file://页面发起网络请求(如 fetch/XHR),即使目标是localhost,这导致前端无法与本地运行的 Flask 后端通信。

我们的解决方案是,将前端嵌入 Flask(简化架构),直接让 Flask 同时提供 API 和前端页面,避免两个服务:

# app.py @app.route('/') def index(): return send_from_directory('.', 'contacts.html') @app.route('/<path:filename>') def static_files(filename): return send_from_directory('.', filename)

然后用户只需访问http://localhost:5000即可,完全无需额外 HTTP 服务器。

6.2成员贡献评价

成员分工完成度(合计50)贡献度(合计50)总计(合计100)
LinQixuan后端,数据库,git仓库管理252550
LinJuntian前端,测试,博客撰写252550
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 23:45:05

毕业设计 stm32 wifi远程可视化与农业灌溉系统(源码+硬件+论文)

文章目录 0 前言1 主要功能2 硬件设计(原理图)3 核心软件设计4 实现效果5 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉…

作者头像 李华
网站建设 2026/5/1 7:31:58

平台无关的嵌入式通用按键管理器

平台无关的嵌入式通用按键管理器 本文代码仓库地址&#xff1a;https://gitee.com/holymiao/Platform-independent-Embedded-Universal-Key-Manager.git 本文是在《通用的按键代码&#xff08;上&#xff09;》和《通用按键代码&#xff08;下&#xff09;》两篇文章的基础上添…

作者头像 李华
网站建设 2026/5/1 4:48:54

Jmeter性能测试详解

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 今天我们来说说jmeter如何进行性能测试&#xff0c;我们都知道jmeter工具除了可以进行接口功能测试外&#xff0c;还可以进行性能测试。当项目趋于稳定&#xf…

作者头像 李华
网站建设 2026/5/1 7:29:35

Blender 3DM文件导入终极指南:跨平台协作的完整解决方案

Blender 3DM文件导入终极指南&#xff1a;跨平台协作的完整解决方案 【免费下载链接】import_3dm Blender importer script for Rhinoceros 3D files 项目地址: https://gitcode.com/gh_mirrors/im/import_3dm 你是否曾经面临这样的困境&#xff1a;在Rhinoceros中精心设…

作者头像 李华
网站建设 2026/5/1 6:27:09

接口测试基础:如何划分接口文档?

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、首先最主要的就是要分析接口测试文档&#xff0c;每一个公司的测试文档都是不一样的。具体的就要根据自己公司的接口而定&#xff0c;里面缺少的内容自己需…

作者头像 李华