⑴ 自行建立一个包含若干英文单词的词汇表文件,系统初始化时导入内存,用于进行句子翻译。
⑵ 用户可以输入单词或者句子,在屏幕上显示对应翻译结果。
⑶ 用户可对词汇表进行添加和删除,并能将更新的词汇表存储到文件中。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<Windows.h>
void Menu(); //菜单
int get_choice(); //获取选择(1-4)
int load(); //导入词汇表
void search(int i); //单词查找
int add(int i); //添加单词
int del(int i); //删除单词
void Save(int i); //将新的数据存如文件
void Menu() //显示菜单
{
printf("**************************************************************\n");
printf("* *\n");
printf("* 欢迎使用英语翻译程序 *\n");
printf("* *\n");
printf("* 1.单词查询 *\n");
printf("* 2.增加单词 *\n");
printf("* 3.删除单词 *\n");
printf("* 4.退出 *\n");
printf("* *\n");
printf("* 请输入你的选择: *\n");
printf("* *\n");
printf("**************************************************************\n");
}
int get_choice() //获取选择 (1-4)
{
int a;
scanf("%d", &a);
return a;
}
struct Translate
{
char English[20];
char Chinese[20];
};
struct Translate cihui[6000]; //结构体数组
int load() //导入词汇表
{
int i = 0;
FILE* fp;
if ((fp = fopen("cihuibiao.txt", "r")) == NULL) //打开文件
{
printf("无法打开文件!\n");
}
else {
do {
fscanf(fp, "%s%s", cihui[i].English, cihui[i].Chinese);
i++;
} while (feof(fp) == 0); //遍历
}
fclose(fp); //关闭文件
return i - 1;
}
void search(int i) //查询单词功能
{
int a;
char b;
system("cls");
char English[1024];
I: printf("请输入你要查询的单词\n");
scanf("%s", English); //用户输入查询的单词
for (a = 0; a <= i; a++)
{
if (strcmp(cihui[a].English, English) == 0)
{
printf("中文意思:%s\n", cihui[a].Chinese);
break;
}
}
if (a > i)
printf("not find\n");
printf("是否继续查询?(y/n)\n");
fflush(stdin); //刷新输出缓冲区
scanf("%c", &b);
if (b == 'y')
goto I;
else if (b == 'y')
return;
}
int add(int i) //实现用户添加词汇表功能
{
system("cls"); //清空屏幕
printf("请输入你要添加的英文:\n");
fflush(stdin); //刷新输出缓冲区
scanf("%s", cihui[i + 1].English);
printf("请输入你要添加的中文:\n");
fflush(stdin);
scanf("%s", cihui[i + 1].Chinese);
printf("请在文件中查看");
return i + 1;
}
int del(int i) // 实现用户删除词汇表功能
{
system("cls");
char english[20];
printf("请输入你要删除的英文:\n");
scanf("%s", english);
for (int a = 0; a <= i; a++)
{
if (strcmp(cihui[a].English, english) == 0)
{
while (1)
{
strcpy(cihui[a].English, cihui[a + 1].English);
strcpy(cihui[a].Chinese, cihui[a + 1].Chinese);
a++;
if (a > i)
goto Z;
}
}
}printf("请在文件中查看");
Z: return i - 1;
}
void Save(int i) //清空文件,并将新的数据存入文件
{
FILE* fp = NULL;
fp = fopen("词汇表.txt", "w"); //打开文件,只读方式
if ((fp = fopen("词汇表.txt", "w")) == NULL)
{
printf("写入文件失败,请重试!");
}
for (int a = 0; a <= i; a++)
{
fprintf(fp, "%s", cihui[a].English);
fputs(" ", fp);
fprintf(fp, "%s", cihui[a].Chinese);
fputs("\n", fp);
}
fclose(fp); //关闭磁盘文件
}
int Bye_bye() //退出程序
{
printf("退出程序\n");
return 0;
}
int main()
{
int a, n, b, i;
L: i = load();
system("cls");// 清空屏幕
Menu();
a = get_choice();
switch (a)
{
case 1: search(i); break;
case 2: n = add(i); Save(n); break;
case 3: b = del(i); Save(b); break;
case 4: Bye_bye();
}
Sleep(3000);
goto L;
}