用c语言写:实现一个简单的信息管理系统,具有以下功能:1.信息输入:可以输入信息标题、内容、作者、分类等信息,存入信息库中。要求支持多条信息输入。2.信息检索:可以按标题、作者、分类等信息进行检索,找到相关的信息条目输出全部信息。3.信息修改:可以修改已有的信息条目,修改信息包括标题、内容、作者、分类等。4.信息删除:可以根据标题删除已有的信息条目。5.信息统计:可以统计信息库中的信息总条数或者某个分类的条数。6.信息输出:可以输出所有信息或者某分类下所有的信息。信息以标题、内容、作者等形式整齐打印。该信息管理系统需要具备一个统一的菜单界面,支持用户通过键入不同的选项进行各种操作。系统需要开辟相应的结构体,考虑使用数据文件等保存信息。
时间: 2024-03-08 19:49:19 浏览: 53
好的,以下是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;
}
```
该程序使用了结构体数组来保存信息,支持多条信息输入,并提供了菜单界面供用户选择操作。同时,该程序还支持保存信息到文件中,以实现信息持久化。
阅读全文