电子消息系统伪代码设计文档 系统概述 电子消息系统是一个基于C语言 开发的模块化应用程序,提供用户注册 、登录 、好友管理 和消息发送 等功能。系统采用文件存储方式实现数据持久化。
graph TD
A[程序开始] --> B[初始化系统]
B --> C[显示欢迎信息]
C --> D[显示登录菜单]
D --> E{用户选择}
E -->|1. 登录| F[登录功能]
E -->|2. 注册| G[注册功能]
E -->|3. 退出| H[退出程序]
F --> I{登录验证}
I -->|成功| J[进入主服务菜单]
I -->|失败| D
G --> K{注册验证}
K -->|成功| D
K -->|失败| D
J --> L{主菜单选择}
L -->|1. 管理好友| M[好友管理菜单]
L -->|2. 管理消息| N[消息管理菜单]
L -->|3. 返回| D
M --> O{好友菜单选择}
O -->|1. 添加好友| P[添加好友功能]
O -->|2. 接受好友| Q[接受好友功能]
O -->|3. 删除好友| R[删除好友功能]
O -->|4. 显示好友| S[显示好友功能]
O -->|5. 返回| J
N --> T{消息菜单选择}
T -->|1. 发送消息| U[发送消息功能]
T -->|2. 读取消息| V[读取消息功能]
T -->|3. 删除消息| W[删除消息功能]
T -->|4. 返回| J
P --> X[保存好友关系]
X --> M
Q --> Y[更新好友列表]
Y --> M
R --> Z[更新好友列表]
Z --> M
U --> AA[保存消息数据]
AA --> N
V --> BB[标记消息已读]
BB --> N
W --> CC[更新消息文件]
CC --> N
H --> DD[程序结束]
%% 数据操作流程
F -.-> EE[加载用户数据]
G -.-> FF[保存用户数据]
P -.-> GG[加载好友关系]
Q -.-> GG
R -.-> GG
X -.-> HH[保存好友关系]
Y -.-> HH
Z -.-> HH
U -.-> II[加载好友关系]
V -.-> JJ[加载消息数据]
W -.-> JJ
AA -.-> KK[保存消息数据]
BB -.-> KK
CC -.-> KK
系统架构 1 2 3 4 5 6 7 8 9 10 11 主程序 (main.c) ahpasserby ↓ 菜单界面模块 (menu_interface.h/.c) Marina-asui ↓ 用户管理模块 (user_management.h/.c) ahpasserby 好友管理模块 (friend_management.h/.c) K122611 消息管理模块 (message_management.h/.c) Demo0115 ↓ 文件操作模块 (file_operations.h/.c) ahpasserby ↓ 公共定义模块 (common.h) ahpasserby
数据结构设计 用户结构体 (User) 1 2 3 4 5 6 7 8 用户结构体 { 用户名: 字符串(最大50字符) 密码: 字符串(最大50字符) 好友列表: 字符串数组(最多50个好友) 待确认请求: 字符串数组(最多50个请求) 好友数量: 整数 待确认数量: 整数 }
消息结构体 (Message) 1 2 3 4 5 6 7 消息结构体 { 发送者: 字符串(最大50字符) 接收者: 字符串(最大50字符) 内容: 字符串(最大255字符) 时间戳: 字符串(20字符) 已读状态: 布尔值 }
模块详细设计 1. 主程序模块 (main.c) 1 2 3 4 5 6 程序开始 初始化系统() 显示欢迎信息 循环: 显示登录菜单() 结束程序
登录菜单 1 2 3 4 5 6 7 8 9 10 显示登录菜单(): 显示菜单选项: 1. 登录 2. 注册 3. 退出 获取用户选择(1-3) 根据选择执行: 1: 登录功能() 2: 注册功能() 3: 退出程序
主服务菜单 1 2 3 4 5 6 7 8 9 10 11 主服务菜单(): 循环: 显示菜单选项: 1. 管理好友 2. 管理消息 3. 返回 获取用户选择(1-3) 根据选择执行: 1: 好友管理菜单() 2: 消息管理菜单() 3: 返回登录菜单
好友管理菜单 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 好友管理菜单(): 循环: 显示菜单选项: 1. 添加好友 2. 接受好友 3. 删除好友 4. 显示当前好友 5. 返回 获取用户选择(1-5) 根据选择执行: 1: 添加好友功能() 2: 接受好友功能() 3: 删除好友功能() 4: 显示当前好友功能() 5: 返回主菜单
消息管理菜单 1 2 3 4 5 6 7 8 9 10 11 12 13 消息管理菜单(): 循环: 显示菜单选项: 1. 发送消息 2. 读取消息 3. 删除消息 4. 返回 获取用户选择(1-4) 根据选择执行: 1: 发送消息功能() 2: 读取消息功能() 3: 删除消息功能() 4: 返回主菜单
3. 用户管理模块 (user_management.h/.c) 登录功能 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 登录功能(): 输入用户名 输入密码 清理输入缓冲区 如果 用户不存在: 如果 系统无用户: 提示"请先注册用户" 否则: 提示"用户名不存在" 返回 如果 密码不正确: 提示"密码错误" 返回 设置当前用户 提示"登录成功" 进入主服务菜单()
注册功能 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 注册功能(): 输入用户名 如果 用户已存在: 提示"用户名已存在" 清理输入缓冲区 返回 输入密码 确认密码 清理输入缓冲区 如果 密码不匹配: 提示"密码不匹配" 返回 创建新用户 保存用户数据 提示"注册成功"
4. 好友管理模块 (friend_management.h/.c) 添加好友功能 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 添加好友功能(): 输入要添加的用户名列表 对于每个用户名: 如果 是自己: 提示"不能添加自己" 否则如果 用户不存在: 提示"用户不存在" 否则如果 已是好友: 提示"已是好友" 否则如果 已有待确认请求: 提示"请求已发送" 否则: 添加待确认请求 保存好友关系 提示"请求已发送"
接受好友功能 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 接受好友功能(): 如果 无待确认请求: 提示"无待确认请求" 返回 显示待确认列表 输入要接受的好友编号 如果 选择"全部": 接受所有请求 否则如果 选择"返回": 返回 否则: 接受指定好友请求 清空待确认列表 保存好友关系
删除好友功能 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 删除好友功能(): 如果 无好友: 提示"无好友" 返回 显示好友列表 输入要删除的好友编号 如果 选择"全部": 删除所有好友 否则如果 选择"返回": 返回 否则: 删除指定好友 保存好友关系 提示"好友列表已更新"
5. 消息管理模块 (message_management.h/.c) 发送消息功能 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 发送消息功能(): 如果 无好友: 提示"无好友" 返回 输入消息内容 显示好友列表 输入接收者编号 如果 选择"全部": 发送给所有好友 否则如果 选择"返回": 返回 否则: 发送给指定好友 保存消息数据 提示"消息已发送"
读取消息功能 1 2 3 4 5 6 7 8 9 10 11 12 13 14 读取消息功能(): 加载用户消息 如果 无消息: 提示"无消息" 返回 选择读取方式: 1. 读取所有消息 2. 只读取未读消息 3. 返回 根据选择显示消息 标记消息为已读 保存消息状态
删除消息功能 1 2 3 4 5 6 7 8 9 10 11 12 13 14 删除消息功能(): 输入开始日期 输入结束日期 输入账户名(或"all") 加载用户消息 对于每条消息: 如果 在日期范围内 且 (发送者匹配 或 选择"all"): 删除消息 否则: 保留消息 保存更新后的消息 提示删除结果
6. 文件操作模块 (file_operations.h/.c) 用户数据操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 加载用户数据(): 打开用户文件 如果 文件不存在: 创建空文件 返回 读取用户名和密码 初始化用户数据 关闭文件 保存用户数据(): 打开用户文件 写入所有用户信息 关闭文件
好友关系操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 加载好友关系(): 打开好友文件 如果 文件不存在: 创建空文件 返回 解析好友和待确认列表 更新用户数据结构 关闭文件 保存好友关系(): 打开好友文件 写入所有用户的好友关系 关闭文件
消息数据操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 加载消息(用户名): 打开用户消息文件 如果 文件不存在: 返回空消息列表 解析消息格式: [时间戳] From: 发送者 消息内容 关闭文件 保存消息(用户名, 消息列表): 打开用户消息文件 写入所有消息 关闭文件
系统常量定义 1 2 3 4 5 6 7 最大用户数: 100 最大好友数: 50 最大消息数: 1000 用户名最大长度: 50 密码最大长度: 50 消息最大长度: 255 文件名最大长度: 100
数据文件格式 用户文件 (users.txt) 1 2 3 username1 password1 username2 password2 ...
好友文件 (friends.txt) 1 2 3 4 5 username1 FRIENDS: friend1 friend2 friend3 username1 PENDING: pending1 pending2 username2 FRIENDS: friend1 friend4 username2 PENDING: pending3 ...
消息文件 (username.txt) 1 2 3 4 5 [2024-11-24 16:45:30] From: sender_username 消息内容 [2024-11-24 16:46:15] From: another_sender 另一条消息内容 ...
错误处理机制
输入验证 : 所有用户输入都进行范围验证
缓冲区清理 : 在scanf后清理输入缓冲区避免残留字符
文件操作 : 检查文件打开是否成功
边界检查 : 检查数组越界和最大限制
用户反馈 : 提供清晰的错误提示信息
系统特点
模块化设计 : 功能分离,便于维护和扩展
数据持久化 : 使用文本文件存储数据
用户友好 : 清晰的菜单导航和操作提示
安全性 : 基本的用户认证和输入验证
可扩展性 : 模块化架构便于添加新功能