用c语言帮我完成一个笔记管理系统,功能要求为打开笔记、删除笔记,支持笔记创建,允许用户自主创建笔记以及命名;支持笔记查询,允许用户通过搜索功能查找所需的笔记
时间: 2023-10-27 14:04:28 浏览: 211
好的,下面是一个简单的笔记管理系统的C语言代码,实现了您的功能要求。代码中使用了链表来存储笔记,每一个节点代表一个笔记,包含笔记名和笔记内容。具体实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 笔记结构体
typedef struct note {
char name[100]; // 笔记名
char content[1000]; // 笔记内容
struct note *next; // 下一个笔记指针
} Note;
// 创建笔记
Note *create_note() {
Note *note = (Note *)malloc(sizeof(Note));
printf("请输入笔记名:");
scanf("%s", note->name);
printf("请输入笔记内容:");
scanf("%s", note->content);
note->next = NULL;
return note;
}
// 打开笔记
void open_note(Note *head) {
char name[100];
printf("请输入要打开的笔记名:");
scanf("%s", name);
Note *p = head->next;
while (p != NULL) {
if (strcmp(p->name, name) == 0) {
printf("笔记内容:%s\n", p->content);
return;
}
p = p->next;
}
printf("未找到该笔记!\n");
}
// 删除笔记
void delete_note(Note *head) {
char name[100];
printf("请输入要删除的笔记名:");
scanf("%s", name);
Note *p = head;
while (p->next != NULL) {
if (strcmp(p->next->name, name) == 0) {
Note *temp = p->next;
p->next = temp->next;
free(temp);
printf("笔记已删除!\n");
return;
}
p = p->next;
}
printf("未找到该笔记!\n");
}
// 搜索笔记
void search_note(Note *head) {
char keyword[100];
printf("请输入要搜索的关键词:");
scanf("%s", keyword);
Note *p = head->next;
int count = 0;
while (p != NULL) {
if (strstr(p->content, keyword) != NULL) {
printf("笔记名:%s,笔记内容:%s\n", p->name, p->content);
count++;
}
p = p->next;
}
if (count == 0) {
printf("未找到相关笔记!\n");
}
}
// 显示菜单
void display_menu() {
printf("欢迎使用笔记管理系统!\n");
printf("1. 创建笔记\n");
printf("2. 打开笔记\n");
printf("3. 删除笔记\n");
printf("4. 搜索笔记\n");
printf("5. 退出系统\n");
printf("请选择操作:");
}
int main() {
// 创建头节点
Note *head = (Note *)malloc(sizeof(Note));
head->next = NULL;
int choice;
while (1) {
display_menu();
scanf("%d", &choice);
switch (choice) {
case 1: {
Note *note = create_note();
note->next = head->next;
head->next = note;
printf("笔记创建成功!\n");
break;
}
case 2: {
open_note(head);
break;
}
case 3: {
delete_note(head);
break;
}
case 4: {
search_note(head);
break;
}
case 5: {
printf("感谢使用笔记管理系统!\n");
return 0;
}
default: {
printf("无效的选项,请重新选择!\n");
break;
}
}
}
}
```
在代码中,我们使用了一个`Note`结构体来表示笔记,包含笔记名和笔记内容,以及一个指向下一个笔记的指针。首先在`main`函数中创建了一个头节点,作为链表的起始节点,之后根据用户的输入进行相应的操作,例如创建笔记、打开笔记、删除笔记和搜索笔记等。具体实现过程见代码注释。
阅读全文