# 校园新闻发布管理系统
# 一、功能需求说明
(必须采用结构体和动态链表、数据用文件存储实现)
- 种类型的用户:新闻系统管理员、普通用户、访客,只有被授权的用户才能访问本新闻管理系统的资源。
- 普通用户:能在本系统中进行新闻浏览,阅读,新闻检索。用户点击每条新闻的标题就能进行新闻阅读;新闻阅读页面,每条新闻的详细信息将被取出,包括内容、标题等;用户能根据自己的需要搜索新闻,如可以通过新闻标题或新闻内容对新闻进行搜索,这样可以快速地找到符合条件的新闻,并输出搜索结果;用户能对新闻进行评论。
- 新闻系统管理员:可以进行新闻分类管理、添加新闻、修改新闻、新闻审核和删除新闻,同时系统管理员能完成用户管理如包括系统用户管理、添加用户和更改帐号。
- 访客:只能浏览新闻。
- 功能结构图如下
![](https://www.writebug.com/myres/static/uploads/2023/2/1/521f7e51ec702e49524e142fda1aa699.writebug)
- 新闻记录存在文件news.txt中,格式如下:
- 每一条记录至少包括一个新闻的标题、内容、发布者、新闻分类、发布日期等内容
- 其中新闻分类:分为通知、公告、简讯三类
- 查询搜索功能
- 授权用户能够查询新闻:可以按年、月、日查询
- 用户可以自定义一个时间段进行查询自己发布新闻的情况
![](https://www.writebug.com/myres/static/uploads/2023/2/1/18bef8e554ac829cf44d25907a84185b.writebug)
- 用户可以按标题关键字、分类、发布时间进行组合条件查询新闻
- 管理员可查询任一新闻记录,包括已删除记录查询
- 排序功能:按发布日期、发布人中一个进行(升序或降序)排序。
- 新闻录入:授权用户能录入某条新闻信息。
- 显示功能:可进行全部新闻显示,也可按查询结果进行显示,显示每条新闻的评论信息
- 数据变更:管理员可以更改或删除用户的某条新闻记录,但删除的信息要保存在另外一个文件news_del.txt
- 统计功能:(1)用户可统计自己在一个自定义时间段里的新闻发布次数情况
- 管理员可统计各用户在自定义时间段里的新闻发布情况
- 用户和管理员的权限要分开。
- 其他未描述的功能自行设计。
- 加分项
- 使用图形界面; 2.使用线、图表示查询记录和统计
- 可参考实际情况对软件进行功能扩充 ; 4.可以显示新闻图片信息
- 设计要求(*注意红色字体部分)
- 要一个主界面进行功能实现上述功能使用(文本界面和图形界面均可)。要求编程序实现新闻信息查询、排序、统计、录入、更新、评论等功能。
- 不同的模块都要有出错处理,并能给出出错提示。如输入数据错误,文件操作错误
- 以上各个功能均编写成子函数,有良好的注释说明,由主函数调用实现。
- 所设计函数须存放到多个文件,不允许所有的函数存放到一个文件里;
- 必须采用结构体和动态链表实现对新闻记录数据的存储和访问;
- 必须使用文件保存数据;
- 应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观
- 测试数据要求
不少于8个用户;(2)每个用户不少于15条新闻;
- 每个新闻至少不少于3个评论; (4)删除的记录不少于10条;
## 1.1 需求分析
### 1.1.1 功能需求
- 信息管理:发布、删除、修改、查看、排序、搜索、评论新闻,添加、删除、修改、查看、搜索用户账号和密码,统计用户发布新闻情况。
- 数据处理:保存新闻数据、用户数据、被删除新闻的数据。
- 权限分离:管理员和用户的权限要分开,不同的权限对应着不同的功能,访客仅能查看新闻。
### 1.1.2 交互需求
- 管理员、用户、访客的菜单界面要分开。
- 每一级的界面可进可退,比如在登陆界面登录管理员后即可跳转管理员菜单界面,在管理员菜单界面退出登陆可以返回登陆界面。
- 出错处理,出错时可以出现错误提示并且有出错后的反应。
- 功能执行成功反馈。
- 每一种功能的执行过程中都有着相应的操作提示,可以协助使用者更好地进行操作。
## 1.2 概要设计
### 1.2.1 系统总体设计
![](https://www.writebug.com/myres/static/uploads/2023/2/1/298822f04d8267c906c0080cc11185d4.writebug)
### 1.2.2 模块设计
#### 1.2.2 主函数模块
- 文件名:main.c
- 函数:void main()
- 作用:启动程序,提供登录选项。
#### 1.2.2 菜单函数模块
文件名:menu.c
函数:void login_interface()
```c++
void administrator_menu()
void user_menu
void search_menu
```
功能:输出各个界面的功能信息。
#### 1.2.2 管理员功能函数模块
文件名:admin.c
函数: void admin_login(struct user_node* user_list, struct news_node* news_list)
```c++
void admin_login(struct user_node* user_list, struct news_node* news_list)
void admid_function(struct user_node* user_list, struct news_node* news_list)
struct user_node* create_user_list()
struct user_node* create_user_node(User data)
void insert_user_node(struct user_node* head, User data)
struct news_node* create_news_list()
struct news_node* create_news_node(News data)
void insert_news_node(struct news_node* head, News data)
void print_user_list(struct user_node* head)
void print_news_list(struct news_node* head)
void print_news_node(struct news_node* cur_news_node)
void print_user_node(struct user_node* cur_user_node)
void delete_user_node_by_account(struct user_node* head, char* account)
void delete_news_node_by_title(struct news_node* head, char* title,struct news_node* deleted_news_list)
struct user_node* search_user_by_account(struct user_node* head, char* account)
struct news_node* search_news_by_title(struct news_node* head, char* title)
void save_user_file(char* user_file_name, struct user_node* user_list)
void read_user_file(char* user_file_name, struct user_node* user_list)
void save_news_file(char* news_file_name, struct news_node* news_list)
void read_news_file(char* news_file_name, struct news_node* news_list)
```
作用:实现管理员所拥有的各项功能。
#### 1.2.2 用户功能函数模块
文件:uesr.c
函数:
```c++
void user_login(struct user_node* user_list, struct news_node* news_list)
void user_function(struct user_node* user_list, struct news_node* news_list)
void search_function(struct news_node* news_list)
int check_user_account(char account[N], char password[N], struct user_node* user_list)
struct news_node* search_news_by_date(struct news_node* head, News temp_news)
void search_news_by_time(struct news_node* head, Date date_1,Date date_2)
void search_news_by_category(struct news_node* head, char* category)
void combined_search(struct news_node* head, Date date_1, Date date_2,char* keyword, char* category)
int Count(struct news_node* head, Date date_1, Date date_2, char* account,int* A,int* B,int* C)
struct news_node* sorting_from_ago_to_latest(struct news_node* news_list)
struct news_node* sorting_from_latest_to_ago(struct news_node* news_list)
```
作用:实现用户所拥有的各项功能。
#### 1.2.2 公用数据结构和函数声明
文件:struct..c
结构�
基于C语言实现校园新闻发布管理系统【100011558】
版权申诉
5星 · 超过95%的资源 9 浏览量
2023-04-04
09:23:13
上传
评论 3
收藏 2.25MB ZIP 举报
神仙别闹
- 粉丝: 2687
- 资源: 7658
最新资源
- 以简单、易用、高性能为目标、开源的时序数据库,支持Linux及Windows, Time Series Database.zip
- python-leetcode面试题解之第198题打家劫舍-题解.zip
- python-leetcode面试题解之第191题位1的个数-题解.zip
- python-leetcode面试题解之第186题反转字符串中的单词II-题解.zip
- 一个基于python的web后端高性能开发框架,下载可用
- python-leetcode面试题解之第179题最大数-题解.zip
- python-leetcode面试题解之第170题两数之和III数据结构设计-题解.zip
- python-leetcode面试题解之第168题Excel表列名称-题解.zip
- python-leetcode面试题解之第167题两数之和II输入有序数组-题解.zip
- python-leetcode面试题解之第166题分数到小数-题解.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
前往页