164
社区成员
发帖
与我相关
我的任务
分享通讯录管理系统 - 项目说明文档
github:前端:https://github.com/wallkell/first-assignment
后端:https://github.com/wallkell/first-assignment-backend
PSP (Personal Software Process) 表格
PSP阶段 预估耗时(分钟) 实际耗时(分钟)
计划
· 估计任务时间 30 30
开发
· 需求分析 70 45
· 生成设计文档 30 30
· 设计复审 25 15
· 代码规范 35 20
· 具体设计 50 50
· 具体编码 350 360
· 代码复审 50 30
· 测试 60 150
记录时间花费
· 测试报告 40 35
· 计算工作量 20 15
· 事后总结 30 25
· 提出过程改进计划 30 20
合计 770 780
本地访问地址
前端访问地址: http://localhost:5173/
后端 API 地址:http://localhost:5165/swagger
项目概述
本项目是一个通讯录管理系统,采用前后端分离架构,实现了联系人的增删改查功能。
技术栈
前端:Vue 3, Vite Axios, Sublime Text ,原生 CSS
后端:ASP.NET Core,Entity Framework Core (EF Core),SQL Server (LocalDB/SQL Server Express),Swagger (Swashbuckle),Visual Studio
功能演示
1.系统主界面
数据库设计
字段名 数据类型 约束条件 说明
Id INT 主键、自增 联系人唯一标识,后端自动生成,前端无需传入
Name NVARCHAR(50) 非空 联系人姓名(必填)
PhoneNumber NVARCHAR(20) 非空、唯一 联系人电话(必填,避免重复)
Email NVARCHAR(100) 可空、唯一 联系人邮箱(可选,支持格式校验)
CreatedAt DATETIME 非空、默认值(当前时间) 联系人创建时间,后端自动赋值,无需前端输入
接口设计
接口功能 请求方法 接口路径 请求参数(示例) 响应结果(示例)
查询所有联系人 GET /api/Contacts 无 200 OK,返回数组:[{"id":1,"name":"测试用户","phoneNumber":"13800000000","email":"test@example.com","createdAt":"2024-01-01T10:00:00"}]
添加联系人 POST /api/Contacts JSON:{"name":"测试用户","phoneNumber":"13800000000","email":"test@example.com"} 201 Created,返回新增对象(含 Id 和 CreatedAt)
修改联系人 PUT /api/Contacts/{id} 路径参数:id=1;请求体:{"id":1,"name":"修改后名称","phoneNumber":"13811111111","email":"updated@example.com"} 200 OK,返回修改后对象
删除联系人 DELETE /api/Contacts/{id} 路径参数:id=1 204 No Content(无返回体)
代码说明
后端:
ContactController:
AppDbContext:
Contact:
Program:
前端:
Contactlist:
Api:
Main:
心路历程:
初期,我带着对前后端分离架构的初步认知着手搭建项目,Vue 3 的组件化开发让前端界面模块化清晰,ASP.NET Core 的规整框架也让后端 API 设计有章可循。本以为按部就班就能顺利推进,却在联调阶段遭遇了一连串 “拦路虎”——Network Error 的跨域问题、400 Bad Request 的数据格式不匹配、500 错误的数据库连接失败,每一个报错都让进度陷入停滞。起初面对密密麻麻的错误日志,难免会焦虑急躁,甚至怀疑自己的配置是否存在根本性问题。好在坚持了下来,不断的解决问题,虽然还是有点小瑕疵,但已经让我学会了很多。