• 英汉词典(C语言)


      1 #include<stdio.h>//TXT 文档见文件末
    2 #include<stdlib.h>
    3 #include<string.h>
    4 #include<conio.h>
    5 #define N 1000
    6 typedef struct Word
    7 {
    8 char English[20];
    9 char Chinese[60];
    10 }word;
    11 void Search(word s[],int num,char *d);//查找
    12 void Revise(word s[],int *num,char *d); //修改
    13 void Add();//添加
    14 int main()
    15 {
    16 FILE *fp;
    17 word array[N];
    18 int i,sum=0;
    19 char str[20],a,n;
    20 if((fp=fopen("单词.txt","r+"))==NULL)
    21 {
    22 puts("文件打开失败!");
    23 exit(1);
    24 }
    25 while(!feof(fp))
    26 {
    27 fscanf(fp,"%s\n%s\n",array[sum].English,array[sum].Chinese);
    28 sum++;
    29 }
    30 fclose(fp);
    31 while(1)
    32 {
    33 system("cls");
    34 printf("菜 单:\n");
    35 puts("*****************************");
    36 puts("* 1: 查 找 *");
    37 puts("* 2: 修 改 *");
    38 puts("* 3: 添 加 *");
    39 puts("* 4: 退 出 *");
    40 puts("*****************************");
    41 printf("选择序号:");
    42 scanf("%c",&n);
    43 fflush(stdin);
    44 switch(n)
    45 {
    46 case '1':
    47 printf("输入查找单词:");
    48 gets(str);
    49 Search(array,sum,str);//调用查找
    50 break;
    51 case '2':
    52 printf("输入单词:");
    53 gets(str);
    54 Revise(array,&sum,str);//调用修改
    55 break;
    56 case '3':
    57 Add();//调用添加
    58 break;
    59 case '4':
    60 puts("确定退出系统?(y/n)");
    61 scanf("%c",&a);
    62 getchar();
    63 if(a=='y')
    64 exit(1);
    65 break;
    66 }
    67 puts("按任意键返回主菜单......");
    68 getch();
    69 }
    70 return 0;
    71 }
    72 void Search(word s[],int num,char *d1) //查询单词 s:创建字符串数组 num:单词个数 d1:查找的单词
    73 {
    74 int i,b=0,sum=0,n=strlen(d1);
    75 int k=0,e=1;//模糊查找换行
    76 int name[100];
    77 char a,c,d;
    78 for(i=0;i<num;i++)
    79 {
    80 if(strncmp(s[i].English,d1,n)==0)
    81 {
    82 if(strlen(s[i].English)==n)//精确
    83 {
    84 sum=i;
    85 b=1;
    86 break;
    87 }
    88 else//模糊
    89 {
    90 name[sum]=i;
    91 sum++;
    92 b=2;
    93 }
    94 }
    95 }
    96 if(b==1) /*精确查询*/
    97 printf("解释:%s\n",s[sum].Chinese);
    98 else if(b==2) /*模糊查询*/
    99 {
    100 puts("你要查找单词可能有:");
    101 while(e)
    102 {
    103 for(i=k+0;i<k+5&&i<sum;i++)
    104 {
    105 printf("%d:",i+1);
    106 puts(s[name[i]].English);
    107 }
    108 puts("******************");
    109 puts("* + 下一页 *");
    110 puts("* - 上一页 *");
    111 puts("* * 输入序号 *");
    112 puts("* # 返回主菜单 *");
    113 puts("******************");
    114 puts("请选择:");
    115 d=getch();
    116 system("cls");
    117 switch(d)
    118 {
    119 case '+':
    120 if(k+5<sum)
    121 k+=5;
    122 break;
    123 case '-':
    124 if(k-5>=0)
    125 k-=5;
    126 break;
    127 case '*':
    128 printf("输入查找单词的序号:");
    129 scanf("%d",&n);
    130 if(n>=1 && n<=sum)
    131 printf("解释:%s\n",s[name[n-1]].Chinese);
    132 break;
    133 case '#':
    134 e=0;
    135 break;
    136 }
    137 }
    138 }
    139 else
    140 puts("输入单词不存在!");
    141 }
    142 void Revise(word s[],int *num,char *d) //修改单词或解释
    143 {
    144 int i,n,b=0;
    145 char str1[20];
    146 char str2[60];
    147 FILE *fp;
    148 for(i=0;i<*num;i++)
    149 {
    150 if(strcmp(s[i].English,d)==0) //找到了用户输入的单词
    151 {
    152 b=1; //标志变量设为1
    153 break;
    154 }
    155 }
    156 if(b==0)
    157 puts("所修改的单词不存在!请添加");
    158 else //找到输入的单词
    159 {
    160 printf("原单词:%s\n",s[i].English);
    161 printf("原解释:%s\n",s[i].Chinese);
    162 puts("***********************");
    163 puts("* 1 修改解释 *");
    164 puts("* 2 追加解释 *");
    165 puts("* 3 修改单词 *");
    166 puts("* 4 修改解释和解释 *");
    167 puts("* 5 取消 *");
    168 puts("***********************");
    169 scanf("%d",&n);
    170 fflush(stdin);
    171 switch(n)
    172 {
    173 case 1: //修改解释
    174 puts("请输入解释:");
    175 gets(str2);
    176 strcpy(s[i].Chinese,str2);
    177 break;
    178 case 2: //追加解释
    179 puts("请输入解释:");
    180 gets(str2);
    181 strcat(s[i].Chinese,",");
    182 strcat(s[i].Chinese,str2);
    183 break;
    184 case 3: //修改单词
    185 puts("请输入单词:");
    186 gets(str1);
    187 strcpy(s[i].English,str1);
    188 break;
    189 case 4: //修改单词和解释
    190 puts("请输入单词:");
    191 gets(str1);
    192 puts("请输入解释:");
    193 gets(str2);
    194 strcpy(s[i].English,str1);
    195 strcpy(s[i].Chinese,str2);
    196 break;
    197 case 5: //取消修改
    198 puts("您取消了修改:");
    199 break;
    200 }
    201 }
    202 fp=fopen("单词.txt","w+");
    203 for(i=0;i<*num;i++)
    204 {
    205 fprintf(fp,"%s\n%s\n",s[i].English,s[i].Chinese);
    206 }
    207 fclose(fp);
    208 }
    209 void Add()//添加新单词
    210 {
    211 FILE *fp;
    212 char stre[20],strc[60];
    213 int n;
    214 if((fp=fopen("单词.txt","a+"))==NULL)
    215 {
    216 puts("文件打开失败!");
    217 exit(1);
    218 }
    219 puts("请输入新单词");
    220 gets(stre);
    221 puts("请输入解释:");
    222 gets(strc); //输入单词的解释
    223 printf("\t1:确定\n\t2:取消\n"); //是否保存添加
    224 scanf("%d",&n);
    225 if (n==1) //保存添加
    226 fprintf(fp,"%s\n%s\n",stre,strc);
    227 fclose(fp);
    228 }

    例子:abbreviation n.节略,缩写,缩短

  • 相关阅读:
    用__new__ 创建单例模式
    函数的列表作为默认参数
    循环闭包函数打印列表
    斐波那契函数和回调函数
    类的共享属性
    字典和format用法
    python 面试大全: 01_类变量在内部是作为字典处理的
    git 学习删除某次提交
    mysql调优
    re模块
  • 原文地址:https://www.cnblogs.com/gaorui/p/2255387.html
Copyright © 2020-2023  润新知