用c语言写:实现一个简单的信息管理系统,具有以下功能:1.信息输入:可以输入信息标题、内容、作者、分类等信息,存入信息库中。要求支持多条信息输入。2.信息检索:可以按标题、作者、分类等信息进行检索,找到相关的信息条目输出全部信息。3.信息修改:可以修改已有的信息条目,修改信息包括标题、内容、作者、分类等。4.信息删除:可以根据标题删除已有的信息条目。5.信息统计:可以统计信息库中的信息总条数或者某个分类的条数。6.信息输出:可以输出所有信息或者某分类下所有的信息。信息以标题、内容、作者等形式整齐打印。该信息管理系统需要具备一个统一的菜单界面,支持用户通过键入不同的选项进行各种操作。系统需要开辟相应的结构体,考虑使用数据文件等保存信息。

时间: 2024-03-08 13:49:19 浏览: 15
好的,以下是C语言实现的简单信息管理系统: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_TITLE_LEN 50 #define MAX_CONTENT_LEN 200 #define MAX_AUTHOR_LEN 20 #define MAX_CATEGORY_LEN 20 #define MAX_RECORDS_NUM 1000 typedef struct { char title[MAX_TITLE_LEN]; char content[MAX_CONTENT_LEN]; char author[MAX_AUTHOR_LEN]; char category[MAX_CATEGORY_LEN]; } Record; Record records[MAX_RECORDS_NUM]; int records_num = 0; void print_menu() { printf("1. 信息输入\n"); printf("2. 信息检索\n"); printf("3. 信息修改\n"); printf("4. 信息删除\n"); printf("5. 信息统计\n"); printf("6. 信息输出\n"); printf("7. 退出\n"); printf("请选择操作:"); } void add_record() { Record record; printf("请输入信息标题:"); fgets(record.title, MAX_TITLE_LEN, stdin); record.title[strlen(record.title) - 1] = '\0'; // 去掉换行符 printf("请输入信息内容:"); fgets(record.content, MAX_CONTENT_LEN, stdin); record.content[strlen(record.content) - 1] = '\0'; printf("请输入信息作者:"); fgets(record.author, MAX_AUTHOR_LEN, stdin); record.author[strlen(record.author) - 1] = '\0'; printf("请输入信息分类:"); fgets(record.category, MAX_CATEGORY_LEN, stdin); record.category[strlen(record.category) - 1] = '\0'; records[records_num++] = record; printf("已添加一条信息。\n"); } void search_record() { char keyword[MAX_TITLE_LEN]; printf("请输入关键字:"); fgets(keyword, MAX_TITLE_LEN, stdin); keyword[strlen(keyword) - 1] = '\0'; int found = 0; for (int i = 0; i < records_num; i++) { if (strstr(records[i].title, keyword) || strstr(records[i].author, keyword) || strstr(records[i].category, keyword)) { printf("标题:%s\n", records[i].title); printf("内容:%s\n", records[i].content); printf("作者:%s\n", records[i].author); printf("分类:%s\n", records[i].category); printf("--------------------------\n"); found = 1; } } if (!found) { printf("未找到相关信息。\n"); } } void edit_record() { char title[MAX_TITLE_LEN]; printf("请输入要修改的信息标题:"); fgets(title, MAX_TITLE_LEN, stdin); title[strlen(title) - 1] = '\0'; int found = 0; for (int i = 0; i < records_num; i++) { if (strcmp(records[i].title, title) == 0) { printf("请输入新的信息标题:"); fgets(records[i].title, MAX_TITLE_LEN, stdin); records[i].title[strlen(records[i].title) - 1] = '\0'; printf("请输入新的信息内容:"); fgets(records[i].content, MAX_CONTENT_LEN, stdin); records[i].content[strlen(records[i].content) - 1] = '\0'; printf("请输入新的信息作者:"); fgets(records[i].author, MAX_AUTHOR_LEN, stdin); records[i].author[strlen(records[i].author) - 1] = '\0'; printf("请输入新的信息分类:"); fgets(records[i].category, MAX_CATEGORY_LEN, stdin); records[i].category[strlen(records[i].category) - 1] = '\0'; printf("已修改信息。\n"); found = 1; break; } } if (!found) { printf("未找到该信息。\n"); } } void delete_record() { char title[MAX_TITLE_LEN]; printf("请输入要删除的信息标题:"); fgets(title, MAX_TITLE_LEN, stdin); title[strlen(title) - 1] = '\0'; int found = 0; for (int i = 0; i < records_num; i++) { if (strcmp(records[i].title, title) == 0) { for (int j = i; j < records_num - 1; j++) { records[j] = records[j + 1]; } records_num--; printf("已删除该信息。\n"); found = 1; break; } } if (!found) { printf("未找到该信息。\n"); } } void statistics() { char category[MAX_CATEGORY_LEN]; printf("请输入分类名称(输入“all”统计全部):"); fgets(category, MAX_CATEGORY_LEN, stdin); category[strlen(category) - 1] = '\0'; int count = 0; for (int i = 0; i < records_num; i++) { if (strcmp(category, "all") == 0 || strcmp(records[i].category, category) == 0) { count++; } } printf("共有 %d 条信息。\n", count); } void output_records() { char category[MAX_CATEGORY_LEN]; printf("请输入分类名称(输入“all”输出全部):"); fgets(category, MAX_CATEGORY_LEN, stdin); category[strlen(category) - 1] = '\0'; for (int i = 0; i < records_num; i++) { if (strcmp(category, "all") == 0 || strcmp(records[i].category, category) == 0) { printf("标题:%s\n", records[i].title); printf("内容:%s\n", records[i].content); printf("作者:%s\n", records[i].author); printf("分类:%s\n", records[i].category); printf("--------------------------\n"); } } } int main() { int choice; do { print_menu(); scanf("%d", &choice); getchar(); // 消耗回车符 switch (choice) { case 1: add_record(); break; case 2: search_record(); break; case 3: edit_record(); break; case 4: delete_record(); break; case 5: statistics(); break; case 6: output_records(); break; case 7: printf("再见!\n"); break; default: printf("无效的选项,请重新选择。\n"); break; } } while (choice != 7); return 0; } ``` 该程序使用了结构体数组来保存信息,支持多条信息输入,并提供了菜单界面供用户选择操作。同时,该程序还支持保存信息到文件中,以实现信息持久化。

相关推荐

最新推荐

recommend-type

概率论与数理统计试卷三套(含答案)

2020-2021年概率论与数理统计试卷
recommend-type

“人力资源+大数据+薪酬报告+涨薪调薪”

人力资源+大数据+薪酬报告+涨薪调薪,在学习、工作生活中,越来越多的事务都会使用到报告,通常情况下,报告的内容含量大、篇幅较长。那么什么样的薪酬报告才是有效的呢?以下是小编精心整理的调薪申请报告,欢迎大家分享。相信老板看到这样的报告,一定会考虑涨薪的哦。
recommend-type

伊坂幸太郎21册合集.mobi

伊坂幸太郎21册合集.mobi
recommend-type

dsdy-b4-v30003-1h.apk

dsdy-b4-v30003-1h.apk
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB遗传算法自动优化指南:解放算法调优,提升效率

![MATLAB遗传算法自动优化指南:解放算法调优,提升效率](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8487939061/p208348.png) # 1. MATLAB遗传算法概述** 遗传算法是一种受生物进化启发的优化算法,它模拟了自然选择和遗传的过程。在MATLAB中,遗传算法工具箱提供了丰富的函数和类,用于创建和运行遗传算法。 **1.1 遗传算法的基本原理** 遗传算法的工作原理如下: - **初始化:**创建由随机个体组成的初始种群。 - **评估:**根据目标函数计算每个个体的适应度。 -
recommend-type

failed to register layer: ApplyLayer exit status 1 stdout: stderr: archive/tar: invalid tar header

很抱歉听到这个问题。这个错误通常是由于Docker镜像损坏或Docker存储库中缺少所需的图层引起的。您可以尝试以下几种方法来解决这个问题: 1. 清理Docker镜像和容器:使用命令“docker system prune”清理不再使用的Docker对象。 2. 检查Docker存储库:确保您正在使用可靠的Docker存储库,并检查是否存在所有必需的图层。 3. 重新下载Docker镜像:如果您确定问题是由于损坏的Docker镜像引起的,则可以尝试重新下载Docker镜像。 4. 更新Docker版本:如果您使用的是旧版Docker,则可能会出现此问题。尝试更新到最新版本的Docke
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依