news 2026/1/8 6:22:53

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进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/24 18:54:15

Markdown Viewer浏览器扩展:打造完美Markdown阅读体验的终极指南

Markdown Viewer浏览器扩展&#xff1a;打造完美Markdown阅读体验的终极指南 【免费下载链接】markdown-viewer Markdown Viewer / Browser Extension 项目地址: https://gitcode.com/gh_mirrors/ma/markdown-viewer 在当今数字化工作环境中&#xff0c;Markdown已成为编…

作者头像 李华
网站建设 2025/12/26 2:55:54

NBTExplorer终极指南:轻松掌握Minecraft数据编辑的完整攻略

NBTExplorer终极指南&#xff1a;轻松掌握Minecraft数据编辑的完整攻略 【免费下载链接】NBTExplorer A graphical NBT editor for all Minecraft NBT data sources 项目地址: https://gitcode.com/gh_mirrors/nb/NBTExplorer 还在为复杂的Minecraft数据文件而头疼吗&am…

作者头像 李华
网站建设 2025/12/25 21:58:15

小程序分销商城的功能实现,接小程序商城,分享等功能开发。

技术架构设计小程序分销商城采用前后端分离架构&#xff0c;前端基于微信小程序原生框架或Uniapp跨平台方案&#xff0c;后端可选择Node.js、Java Spring Boot或PHP等语言。数据库推荐MySQL或MongoDB&#xff0c;配合Redis缓存提升性能。核心功能模块用户系统微信授权登录与手机…

作者头像 李华
网站建设 2025/12/24 9:59:23

人形机器人关节执行器__轻量化摆线减速器PEEK精密注塑降本方案

人形机器人的规模化落地&#xff0c;对关节核心传动部件提出了轻量化与低成本的双重挑战。以精密注塑工艺&#xff0c;将高性能特种工程塑料一体成型为摆线减速器的技术方案&#xff0c;正成为突破传统金属方案局限、开启产业化新路径的关键。这不仅实现了部件性能的跃升&#…

作者头像 李华
网站建设 2025/12/24 11:18:27

[特殊字符]《Shell 编程没那么难!给完全新手的温柔入门指南》

适合谁&#xff1f;第一次听说 “Shell 脚本” 的你看到 #!/bin/bash 就头大的你觉得“命令行好可怕”的你只想“让电脑帮我干点重复活”的实用派读完你能做到&#xff1a; ✅ 理解 Shell 到底是什么 ✅ 写出第一个能运行的脚本 ✅ 修改现成脚本为自己所用 ✅ 不再害怕那些奇怪…

作者头像 李华