# sdd_contact **Repository Path**: bitpg/sdd_contact ## Basic Information - **Project Name**: sdd_contact - **Description**: sdd的方式实现C语言通讯录的多个版本 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-13 - **Last Updated**: 2026-06-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 通讯录管理系统 一个前后端分离的通讯录管理 Web 应用,在浏览器上完成联系人的增删改查操作。 ## 架构 ``` 浏览器 (HTML/CSS/JS) ←→ HTTP (RESTful API) ←→ C 后端 (socket 手写) 前端 SPA JSON 请求/响应 业务逻辑 + 文件持久化 ``` - **前端**:纯原生实现,零框架依赖,简约直观 - **后端**:C11 + Winsock2 手写 HTTP 服务器 - **数据**:柔性数组 + 动态扩容 + 二进制文件持久化 ## 技术栈 | 层 | 技术 | |--------|------------------------------------------| | 前端 | HTML5 + CSS3 + 原生 JS | | 后端 | C11 + Winsock2 (Windows) | | JSON | cJSON 库 | | 持久化 | 二进制文件 `contacts.dat` | | 构建 | GCC + Makefile | ## 项目结构 ``` sdd_contact/ ├── contact.h # 数据结构定义 + 函数声明 ├── contact.c # 业务逻辑实现(增删改查、持久化) ├── server.h # HTTP 服务器接口声明 ├── server.c # HTTP 服务器(socket + 路由 + 静态文件) ├── api.h # API 路由层接口声明 ├── api.c # RESTful 路由分发 + JSON 转换 ├── cJSON.h # cJSON 库头文件 ├── cJSON.c # cJSON 库实现 ├── main.c # 程序入口 ├── Makefile # 编译脚本 ├── contacts.dat # 数据文件(自动生成) ├── spec.md # 规格说明书 ├── plan.md # 执行规划 ├── tasks.md # 任务清单 └── public/ ├── index.html # 前端页面 ├── style.css # 样式表 └── script.js # 交互逻辑 ``` ## 快速开始 ### 编译 ```bash make ``` 依赖 GCC 和 Winsock2(Windows 自带)。 ### 启动 ```bash .\contact.exe ``` ### 使用 浏览器打开 `http://localhost:8080` ## RESTful API | 方法 | 路径 | 说明 | |----------|----------------------------|--------------| | `GET` | `/api/contacts` | 获取全部 | | `GET` | `/api/contacts?q=keyword` | 模糊搜索 | | `POST` | `/api/contacts` | 添加联系人 | | `PUT` | `/api/contacts/{name}` | 修改联系人 | | `DELETE` | `/api/contacts/{name}` | 删除联系人 | | `DELETE` | `/api/contacts` | 清空全部 | ### 响应格式 ```json { "code": 0, "message": "", "data": [], "total": 0 } ``` `code`: 0 成功,1 失败。 ## 功能 - 添加联系人(自动扩容,初始容量 4,每次 +10) - 删除联系人(按姓名精确匹配) - 修改联系人(按姓名精确匹配) - 查找联系人(子串匹配,不区分大小写) - 显示全部联系人 - 清空通讯录 - 数据自动持久化(每次操作后立即保存,启动时自动加载)