#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct poem {
char name[100];
char author[100];
char content[100];
}poem;
int max = 100;
int numpoem = 0;
void addPoem(poem*p) {
if (numpoem >= max) {
printf("添加失败\n\n");
return;
}
printf("请输入要录入的唐诗名称:\n");
scanf("%s", p[numpoem].name);
printf("请输入要录入的唐诗作者:\n");
scanf("%s", p[numpoem].author);
printf("请输入要录入的唐诗内容:\n");
scanf("%s", p[numpoem].content);
numpoem++;
}
void deletePoem(char* name, poem* p) {
int index = 0;
if (numpoem == 0) {
printf("当前唐诗集为空删除失败\n\n");
return;
}
for (int i = 0; i < numpoem; i++) {
if (strcmp(name, p[i].name) == 0) {
index = i;
break;
}
if (i == numpoem - 1) {
printf("并没有找到该唐诗,删除失败\n\n");
return;
}
}
for (int i = index; i < numpoem - 1; i++) {
p[i] = p[i + 1];
}
numpoem--;
}
void findPoem(char* name, poem* p) {
int index = 0;
if (numpoem == 0) {
printf("当前唐诗集为空,查找失败\n\n");
return;
}
for (int i = 0; i < numpoem; i++) {
if (strcmp(name, p[i].name) == 0) {
printf("找到了名为《%s》的唐诗\n",p[i].name);
printf("下面为完整内容\n");
printf("%s\n", p[i].name);
printf("%s\n", p[i].author);
printf("%s\n", p[i].content);
printf("\n\n");
return;
}
index = i;
}
if (index == numpoem - 1) {
printf("没有找到该唐诗\n\n");
return;
}
}
void insertPoem(int index, char* name, char* author, char* content,poem*p) {
printf("请输入要插入的位置:\n");
scanf("%d", &index);
printf("请输入要插入的唐诗的名称:\n");
scanf("%s", name);
printf("请输入要插入的唐诗的作者:\n");
scanf("%s", author);
printf("请输入要插入的唐诗的内容:\n");
scanf("%s", content);
if(numpoem==0){
printf("当前唐诗集为空,插入失败\n\n");
return ;
}
if (index < 0 || index >= max) {
printf("插入位置非法,插入失败\n\n");
return;
}
if (index > numpoem) {
printf("插入位置非法,插入失败\n\n");
return ;
}
for (int i = numpoem - 1; i >= index; i--) {
p[i + 1] = p[i];
}
strcpy(p[index].name, name);
strcpy(p[index].author, author);
strcpy(p[index].content, content);
numpoem++;
printf("\n\n");
}
void printfPoem(poem* p) {
if (numpoem == 0) {
printf("所有唐诗:\n\n");
return;
}
for (int i = 0; i < numpoem; i++) {
printf("所有唐诗:\n");
printf("名称:%s\n", p[i].name);
printf("作者:%s\n", p[i].author);
printf("内容:%s\n", p[i].content);
printf("\n\n");
}
}
int main()
{
int choice;
poem* p = (poem*)malloc(sizeof(poem)*max);
printf("唐诗检索程序\n");
do {
printf("【1】 录入唐诗\n");
printf("【2】 查找唐诗\n");
printf("【3】 删除唐诗\n");
printf("【4】 插入唐诗\n");
printf("【5】 输出唐诗\n");
printf("【0】 退出程序\n");
printf("请输入您要操作的选项编号:");
scanf("%d", &choice);
if (choice == 1) {
addPoem(p);
system("cls");
}
if (choice == 2) {
char* name=(char*)malloc(sizeof(char)*100);
printf("请输入要查询的唐诗的名称:\n");
scanf("%s", name);
findPoem(name, p);
}
if (choice == 3) {
char* name=(char*)malloc(sizeof(char) * 100);
printf("请输入要删除的唐诗的名称:\n");
scanf("%s", name);
deletePoem(name, p);
}
if (choice == 4) {
char* name = (char*)malloc(sizeof(char) * 100);
char* author = (char*)malloc(sizeof(char) * 100);
char* content = (char*)malloc(sizeof(char) * 100);
int index;
insertPoem(index, name, author, content, p);
}
if (choice == 5) {
printfPoem(p);
}
if (choice==0) {
printf("退出程序 谢谢使用\n");
}
} while (choice != 0);
return 0;
}