c语言 英汉词典

c语言期末作业

声明:未经允许,请勿转载

英译汉词典
本系统实现一个迷你小辞典,能够实现英中翻译,包括:
1.输入英文,查询其中文含义。
2.查看单词列表。 来
3.删除一个单词。
4.增加一个单词。
5.程序容量:100个单词以上。
6.单词应该保存进文件,程序初始化时从文件中进行读取

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rGQeWF-,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5rGQeWF-,size_20,color_FFFFFF,t_70,g_se,x_16

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
int number;           //全局变量单词总数



void menu();          //主界面
void translation_e(); //英译汉
void translation_c(); //汉译英
void view();          //查看单词
void remove_();       //删除单词
void add();           //增加单词

void color(short x); //改变字体颜色
void read();          //从文件中读取信息
void save() ;         //保存单词到文件里函数

void back_t_e();      //英译汉 返回界面
void back_t_c();      //汉译英 返回界面
void back_v();        //查看单词 返回界面
void back_r();        //删除单词 返回界面
void back_a();        //增加单词 返回界面






struct words{

    char english[30];
    char chinese[50];

}word[100];

int main()
{
    menu();
    return 0;
}

void menu()//主界面
{
    read();
    int l;
            printf("\t欢迎使用小汐英汉词典\t\n");
            printf("\t     1.英译汉 \t\n");
            printf("\t     2.汉译英 \t\n");
            printf("\t     3.查看单词 \t\n");
            printf("\t     4.删除单词 \t\n");
            printf("\t     5.增加单词 \t\n");
            printf("\t     6.刷新   \n");
            printf("\t     7.退出   \n");
            printf("=================================\n");
            printf("请输入选择的登陆端: ");
            scanf("%d",&l);

    switch(l){
        case 1:
            system("cls");
            translation_e();
            break;
        case 2:
            system("cls");
            translation_c();
            break;
        case 3:
            system("cls");
            view();
            break;
        case 4:
            system("cls");
            remove_();
            break;
        case 5:
            system("cls");
            add();
            break;
        case 6:
            system("cls");
            menu();
            break;
        case 7:
            printf("感谢您的使用,已退出!\n");
            exit(0);
        default:
            color(772);
            printf("[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            system("cls");
            menu();
            break;
        }
}

void color(short x) //改变字体颜色
{
  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);
}

void translation_e() //英译汉
{
    char eng[30]="\0";
    int i;
    printf("输入单词: ");
    getchar();//去掉回车
	scanf("%s",eng);
	for ( i =0;i<number;i++)
	{
		if (strcmp(eng,word[i].english)==0 )
		{
            printf("\n该单词含义:  ");
            printf("%s\n",word[i].chinese);
            break;
               }
	}
	 if (i == number)
        {
            color(772);
            printf("\n[错误]未找到该单词!\n");
            color(7);
            }
   back_t_e();
}

void back_t_e()  //英译汉 返回界面
{
    int l;
    printf("\n1.继续");
    printf("\n2.返回");
    printf("\n=========================");
    printf("\n请输入要执行的操作: ");
    scanf("%d",&l);
    switch(l){
         case 1:
            system("cls");
            translation_e();
            break;
        case 2:
            system("cls");
            menu();
            break;
        default:
            color(772);
            printf("[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            back_t_e();
            break;
        }
}

void translation_c() //汉译英
{
    char chi[30];
    int i;
    printf("输入中文: ");
	scanf("%s",chi);
	for ( i =0;i<number;i++)
	{
		if (strcmp(chi,word[i].chinese)==0 )
		{
            printf("\n该单词为:  ");

            printf("%s\n",word[i].english);
            break;
               }
	}
	 if (i == number)
        {
            color(772);
            printf("\n[错误]未找到该单词!\n");
            color(7);
            }
   back_t_c();
}

void back_t_c()  //汉译英 返回界面
{
    int l;
    printf("\n1.继续");
    printf("\n2.返回");
    printf("\n=========================");
    printf("\n请输入要执行的操作: ");
    scanf("%d",&l);
    switch(l){
         case 1:
            system("cls");
            translation_c();
            break;
        case 2:
            system("cls");
            menu();
            break;
        default:
            color(772);
            printf("[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            back_t_c();
            break;
        }
}

void save()  //保存单词到文件里函数
{
	FILE* fp;
	int i,ret;
	fp=fopen("单词.txt", "w");
	if (fp == NULL)
	{
		color(772);
        printf("\n[警告]文件打开失败\n");
        color(7);
	}
    fprintf(fp,"%d\n",number);

	for (i = 0; i <number; i++)
	{

	    ret=fprintf(fp,"%s %s\n",word[i].english,word[i].chinese);
		}

		if (ret<0)
		{
		    color(772);
            printf("\n[错误]文件写入失败\n");
            color(7);
		}
		else
		{
		    color(2);
            printf("\n[tip]文件写入成功\n");
            color(7);

	}
	fclose(fp);		//关闭文件指针
}

void read()//从文件中读取信息
{
    FILE *fp;
    int i;
    fp=fopen("单词.txt","r");
    if(fp==NULL)
        {
            color(772);
            printf("[警告]文件打开失败\n");
            color(7);
    }
        else {
            color(2);
            printf("[tip]文件读取成功\n");
            color(7);
             fscanf(fp,"%d\n",&number);
             for(i=0;i<number;i++)
            {
            	fscanf(fp,"%s %s\n",word[i].english,word[i].chinese);
			}
        }

    fclose(fp);
}

void add()    //增加单词
{
    int i = number, j, flag,m;
	printf("待增加的单词数:");
	scanf("%d", &m);
	getchar();
	if (m > 0){
		do
		{
			flag = 1;
			printf("\n请输入第%d个单词:\n", i + 1);
			while (flag)
			{
				flag = 0;

				printf("英文:");
				scanf("%s",word[i].english);
				for (j = 0; j < i; j++){
					if (strcmp(word[i].english,word[j].english)==0){
						color(772);
                        printf("[错误]已存在该单词,请重新输入!\n");
                        color(7);
						flag = 1;
						break;
					}
				}
			}
            getchar();

			printf("中文: ");
            scanf("%s",word[i].chinese);

            if (0 == flag){
				i++;
			}
		} while (i<number + m);

		number += m;
		color(2);
        printf("[成功]单词添加完毕!!!");
        color(7);
        save();
	}
	else{
             color(772);
            printf("[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            system("cls");
            color(7);
            add();
	}
	back_a();
}

void back_a()  //增加单词 返回界面
{
    int l;
    printf("\n1.继续");
    printf("\n2.返回");
    printf("\n=========================");
    printf("\n请输入要执行的操作: ");
    scanf("%d",&l);
    switch(l){
         case 1:
            system("cls");
            add();
            break;
        case 2:
            system("cls");
            menu();
            break;
        default:
            color(772);
            printf("[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            back_a();
            break;
        }
}


void view()  //查看单词
{
    int i;
    printf(" 英文\t\t\t 中文\n");
    printf(" --------------------------------------------------------------------------\n");
    for(i=0;i<number;i++)
    {
        printf(" %-25s%s\n",word[i].english,word[i].chinese);
    }
    printf(" --------------------------------------------------------------------------\n");
    back_v() ;
}

void back_v()  //查看单词 返回界面
{
    int l;
    printf("1.继续");
    printf("\n2.返回");
    printf("\n=========================");
    printf("\n请输入要执行的操作: ");
    scanf("%d",&l);
    switch(l){
         case 1:
            system("cls");
            view();
            break;
        case 2:
            system("cls");
            menu();
            break;
        default:
            color(772);
            printf("[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            back_v();
            break;
        }
}

void remove_() //删除单词
{
    int a;
    char eng1[30];
	printf("请输入单词:");
	scanf("%s",eng1);
	int i, j;
	for (i = 0;i<number; i++)
   {
		if (strcmp(word[i].english,eng1)==0)
		{
			printf("你将要删除该单词\n\n");
            printf(" --------------------------------------------------------------------------\n");
			printf(" %-25s%s\n",word[i].english,word[i].chinese);
            printf(" --------------------------------------------------------------------------\n");
			printf("\n1.确认删除");
			printf("\n2.取消删除");
			printf("\n=========================");
			printf("\n请输入:");
			scanf("%d", &a);
			if (a == 1)
			{
			    for(j=i;j<number-1;j++){
                        word[j]=word[j+1];
			    }
				color(2);
				printf("\n[tip]删除成功!");
				color(7);
				number--;
				save();
				break;
			}
			else
			{
			    color(2);
				printf("\n[tip]已取消操作!");
				color(7);
				break;
			}
		}
   }
	   if(i==number)
	   {
	       color(772);
	       printf("\n[错误]未找到该单词!!!");
	       color(7);
	       }
	       back_r() ;
}

void back_r() //删除单词 返回界面
{
    int l;
    printf("\n1.继续");
    printf("\n2.返回");
    printf("\n=========================");
    printf("\n请输入要执行的操作: ");
    scanf("%d",&l);
    switch(l){
         case 1:
            system("cls");
            remove_();
            break;
        case 2:
            system("cls");
            menu();
            break;
        default:
            color(772);
            printf("[输入错误]请3秒后重新输入有效数字!\n");
            Sleep(3000);
            color(7);
            back_r();
            break;
        }
}

 注意:1.汉译英功能输入中文 需要跟文件里一模一样;

         2.增加单词后需刷新主界面,重新读取文件

 文件素材

18
account   n.账,账目;
addition n.增加,附加物,加,加法
adjustment n.调整
advertisement adv.广告
agreement n.同意,一致,协议
amount n.数量,总额vi.总计,等于
amusement n.娱乐,消遣
animal n.动物,兽,牲畜
answer vt.&vi.答复
apparatus n.装置,器具,机构,组织
approval n.批准,认可,同意,赞同
argument n.辩论,争论,论点(据),理由
art adj.美术(品)的,艺术(品)的n.艺术,技术,阴谋,美术
attack vi.攻击,进攻,抨击
attempt vt.试图
attention n.注意(力),关心,立正
attraction n.吸引,吸引力,有吸引力的人或事物
authority n.权威;权力;当局

  • 24
    点赞
  • 138
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 21
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汐ya~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值