#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_SIZE 100
//定义结构体数组最大长度
struct Book
{
char word[20];//单词
char ans[20];//解释
};
//显示信息
void Display(struct Book book[],int n)
{
int i;
printf("%-15s%-20s\n","单词","释义");
for(i=0;i<n;i++)//遍历结构体数组 输出
{
printf("%-15s%-20s\n",book[i].word,book[i].ans);
}
}
//根据查找
void Search_By_Word(struct Book book[],int m)
{
int i;
int flag=0;
char temp[20];
system("cls");
printf("请输入要查询单词:");
scanf("%s",temp);
for(i=0;i<m;i++)
{
if(!strcmp(temp,book[i].word))//如果作者相同
{
Display(&book[i],1);//显示该信息
flag=1;//说明已经找到
}
}
if(flag==0)
{
printf("无该书名!\n");
}
system("pause");
}
//输入信息
int Input(struct Book book[],int n)
{
system("cls");
printf("请输入单词拼写:");
scanf("%s",book[n].word);
printf("请输入单词释义:");
scanf("%s",book[n].ans);
printf("录入成功!\n");
system("pause");
return n+1;
}
//删除信息
void Del(struct Book book[],int* n)
{
int i,m=*n,j;
int flag=0;
char temp[20];
system("cls");
printf("请输入要删除的单词:");
scanf("%s",temp);
for(i=0;i<m;i++)
{
if(!strcmp(temp,book[i].word))//如果相同
{
flag=1;//说明已经找到
break;
}
}
if(flag==0)
{
printf("无该单词!\n");
printf("\t\t\t");
system("pause");
return ;
}
Display(&book[i],1);//显示信息
for(j=i;j<m;j++)//结构体数组前移
{
book[j]=book[j+1];//用后一个数据覆盖前一个 达到删除效果
}
printf("删除成功!\n");
system("pause");
(*n)--;//删除成功 结构体数组长度减一
}
//修改信息
void Modify(struct Book book[],int m)
{
int i;
int flag=0;
char temp[20];
system("cls");
printf("请输入要修改的单词拼写:");
scanf("%s",temp);
for(i=0;i<m;i++)
{
if(!strcmp(temp,book[i].word))//如果相同
{
flag=1;//说明已经找到
break;
}
}
if(flag==0)
{
printf("无该单词!\n");
system("pause");
return ;
}
Display(&book[i],1);//显示该信息
printf("请输入单词拼写:");
scanf("%s",book[i].word);
printf("请输入单词释义:");
scanf("%s",book[i].ans);
printf("修改成功!\n");
system("pause");
}
int Menu()
{
int i;
system("cls");
printf("1:词条录入\n");
printf("2:信息显示\n");
printf("3:词条修改\n");
printf("4:词条删除\n");
printf("5:单词查询\n");
printf("0:退出系统\n");
printf("请输入选择:");
scanf("%d",&i);
while(i<0||i>5)//判断输入的是不是0-5范围内
{
printf("\t\t\t请重新选择:");
scanf("%d",&i);
}
return i;
}
void Save(struct Book stu[],int n)//保存信息到文件
{
int i;
FILE* fp;
fp= fopen("book_info.txt","w+");//打开文件
if(fp==NULL)//打开失败则退出
{
return;
}
for(i=0;i<n;i++)//循环写入到文件
{
fwrite(&stu[i],1,sizeof(struct Book),fp);
}
fclose(fp);
}
int Read(struct Book stu[])//读取文件
{
int i=0;
FILE* fp;
fp= fopen("book_info.txt","r+");
if(fp==NULL)
{
return 0;
}
while(fread(&stu[i++],1,sizeof(struct Book),fp));//当文件不为空 一直读取
fclose(fp);
if(i>=1)//把读取的回车去掉
{
return i-1;
}
return 0;
}
int main()
{
int choice;
struct Book book[MAX_SIZE];//记录图书信息
int n=Read(book);//图书数量
while(1)
{
choice=Menu();//获取用户选择
switch(choice)//根据选择进入相应功能
{
case 0:
Save(book,n);//保存文件
exit(0);//退出
break;
case 1:
n=Input(book,n);
Save(book,n);
break;
case 2:
system("cls");
Display(book,n);
system("pause");
break;
case 3:
Modify(book,n);
Save(book,n);
break;
case 4:
Del(book,&n);
Save(book,n);
break;
case 5:
Search_By_Word(book,n);
break;
}
}
return 0;
}
电子英汉词典
最新推荐文章于 2023-07-09 11:26:45 发布