# Pet **Repository Path**: Estyz/pet ## Basic Information - **Project Name**: Pet - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-18 - **Last Updated**: 2025-05-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 宠物管理系统 ## 系统概述 宠物管理系统是一个基于控制台的C语言应用程序,用于管理宠物商店的宠物信息。系统支持宠物的添加、删除、修改、查询和统计等功能,通过简单直观的用户界面,帮助用户高效管理宠物信息。 ## 功能特点 ### 基础功能 - **数据初始化**:系统启动时自动初始化,如无数据文件则创建默认数据 - **宠物管理**:添加、修改、删除宠物信息 - **信息查询**:按品种或种类查询宠物信息 - **数据展示**:分页显示所有宠物信息,按品种分组 - **统计分析**:统计宠物总数、品种数、总价值等信息 ### 高级特性 - **双向链表存储**:使用双向链表高效存储和管理宠物数据 - **按品种分组显示**:直观展示不同品种的宠物信息 - **分页浏览**:大量数据时支持分页浏览,提升用户体验 - **表格化显示**:采用规范的表格显示数据,增强可读性 - **中文支持**:完全支持中文字符显示,正确处理中文宽度 - **数据持久化**:自动将数据保存到文件,重启系统仍可恢复数据 ## 系统架构 系统采用模块化设计,主要包含以下模块: 1. **初始化模块**:负责系统启动和数据加载 2. **用户界面模块**:提供交互界面和菜单选项 3. **数据管理模块**:处理宠物信息的增删改查 4. **统计分析模块**:提供宠物信息的统计功能 5. **文件操作模块**:处理数据的读取和保存 6. **显示优化模块**:优化表格展示,支持中文宽度计算 ## 数据结构 系统主要使用以下数据结构: - **宠物信息结构体(Pet)**:存储单个宠物的基本信息 - **双向链表节点(ListPet)**:用于构建宠物信息的双向链表 - **宠物系统结构体(PetSystem)**:管理整个系统的宠物信息和统计数据 ## 使用说明 ### 系统运行 1. 通过编译主程序文件`main.c`生成可执行文件 2. 运行生成的可执行文件即可启动系统 ### 主菜单操作 系统主菜单提供以下选项: - **1. 初始化默认数据**:重置系统并加载默认数据 - **2. 添加新宠物**:添加新宠物信息或增加现有宠物数量 - **3. 修改宠物信息**:修改已有宠物的各项信息 - **4. 删除宠物记录**:删除指定的宠物记录 - **5. 查询宠物信息**:按种类或品种查询宠物 - **6. 显示所有宠物**:分类显示所有宠物信息 - **7. 查看统计信息**:显示宠物相关的统计数据 - **0. 退出系统**:保存数据并退出系统 ### 数据浏览 - 使用表格形式展示数据,支持中文字符 - 大量数据时支持分页浏览(使用P/N键切换页面) - 按Q键返回主菜单 ## 技术实现细节 1. **UTF-8编码支持**:系统使用`SetConsoleOutputCP(CP_UTF8)`和`SetConsoleCP(CP_UTF8)`设置控制台编码,确保中文字符正确显示 2. **中文字符宽度处理**:通过`get_string_display_width`函数计算字符串实际显示宽度,使表格对齐 3. **文件存储格式**:使用Tab分隔的文本格式存储数据,便于阅读和维护 4. **输入验证**:所有用户输入都经过严格验证,避免非法输入引起的程序错误 5. **内存管理**:程序退出时释放所有分配的内存,防止内存泄漏 ## 系统要求 - 操作系统:Windows - 编译器:支持C99或更高标准的C编译器(如GCC、MSVC等) - 控制台:支持UTF-8编码的控制台环境 ## 开发信息 - 开发语言:C语言 - 数据存储:文本文件(pets.txt) - 代码规范:采用函数注释、统一的变量命名和模块化设计