电子生词库实验报告

时间:2024.3.15

专业技能训练报告

    院:肇庆学院                               

课程名称:       C程序设计综合实践      

专业班级:  计算机科学与技术12科技2   

学生姓名:     陈振孝        学号:   46             

指导教师:           邵平                         

完成时间:20##625

 

  

第1部分 课程设计题目与要求.................................. 1

1.问题描述...................................................... 1

2.功能要求...................................................... 1

3.任务分工...................................................... 1

第2部分 设计与功能实现 ..................................... 3

1.总体设计...................................................... 3

2.数据结构...................................................... 4

3.算法设计...................................................... 2

4.程序代码设计.................................................. 8

5.测试与调试................................................... 11

第3部分 实训总结.......................................... 16

1.个人总结..................................................... 16

2.结束语....................................................... 17

附录Ⅰ 程序清单............................................ 17

附录Ⅱ 用户使用说明书....................................... 37

参考文献................................................... 38



第1部分 课程设计题目与要求

1.问题描述

根据需要,建立属于自己的生词库,使用起来方便。生词选自本人常需要的单词中,对于英语单词,给出中文含义,对于中文单词给出英文含义

2.功能要求

循环显示如图(a)所示的主菜单。

在主菜单中选择1:创建生词库。用文件建立一个单词库,中英文单词均有,对于英文单词,给出中文解释,对于中文单词给出英文解释。

在主菜单中选择2:进入子菜单,并显示词库。显示是哟有单词和单词数、所有中文单词和单词数、所有英文单词和单词数,显示英文单词时按字母从小到大的顺序排列。在子菜单选择4,返回主菜单;选择0,推出整个系统。

在主菜单中选择3:首先确认密码。然后进入子菜单,并编辑词库,如添加新词、删除旧词、修改旧词。在子菜单中选择4,返回主菜单,选择0,推出整个程序。

在主菜单中选择4:查找生词。显示所要查找的单词和其含义。

在主菜单中选择5:记忆单词。

在主菜单中选择0:显示结束信息。按任意键后退出主序。

3.任务分工

完成所有的功能模块。


第2部分  设计与功能实现

1.总体设计

被调用的函数:

void CJ();//创建生词库

void CJE();//创建英汉

void CJC();//创建汉英

void XSCK();//显示词库

void XSSY();//显示所有单词

void XSZW();//显示中文单词

void XSYW();//显示英文单词

void BJCK();//编辑词库

void TJ();//添加新词

void SC();//删除旧词

void dele();//删除英汉类型

void delc();//删除汉英类型

void XG();//修改旧词

void xge();//修改英汉类型

void xgc();//修改汉英类型

void CZCC();//查找生词

void cze();//查找英文

void czc();//查找中文

void CXGN();//创新功能

//void xxe();//学习英汉类型

//void xxc();//学习汉英类型

头文件名:

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

2.数据结构

struct English

{

       char word[20];

       char explain[20];

};

struct Chinese

{

       char word[20];

       char explain[20];

};

3.算法设计

采用模块化的思想,按照“自顶向下,逐步细化”的原则设计算法。

主模块:

创建函数:

显示函数:

编辑函数:

查找函数:

单词记忆:

4.算法设计与程序代码设计

主函数:

int choose;

 while(1)

 {

       printf("                   |------------------------------------|\n");

       printf("                   |         请输入选项编号(0--5)     |\n");

       printf("                   |------------------------------------|\n");

       printf("                   |           1--创建生词库            |\n");

       printf("                   |           2--显示词库              |\n");

    printf("                   |           3--编辑词库              |\n");

       printf("                   |           4--查找生词              |\n");

       printf("                   |           5--创新功能              |\n");

       printf("                   |           0--退出系统              |\n");

       printf("                   |------------------------------------|\n");

       printf("请输入选项\n");

        scanf("%d",&choose);

        if(choose>5||choose<0)

        {

              fflush(stdin); continue;

        }

        else

        switch(choose)

        {

               

                  case 1:CJ();;break; 

                     case 2:XSCK();break;

                     case 3:BJCK();;break;

                     case 4:CZCC();break;

                     case 5:CXGN();break;

                     case 0:exit(0);

                     default:printf("非法输入!\n");break;

        }

        

        

 }

}

void XSCK()//显示词库

{

       fflush(stdin);

       char yn;

  int choose;

  do{

    printf("                   *-------------------------------------*\n");

       printf("                   *            请输入编号(0--4)       *\n");

       printf("                   *-------------------------------------*\n");

       printf("                   *             1--显示所有单词         *\n");

       printf("                   *             2--显示中文单词         *\n");

       printf("                   *             3--显示英文单词         *\n");

       printf("                   *             4--返回                 *\n");

    printf("                   *             0--退出系统             *\n");

       printf("                   *-------------------------------------*\n");

  printf("请输入你的选择!\n");

  scanf("%d",&choose);

  switch(choose)

  {

  case 1:XSSY();break;

  case 2:XSZW();break;

  case 3:XSYW();break;

  case 4:return;

  case 0:exit(-1);

  default:printf("输入错误\n");

  }

int num;

              do{

       printf("                    |*************************************|\n");

       printf("                    |          请输入选项编号(0--4)     |\n");

       printf("                    |*************************************|\n");

       printf("                    |              1--添加新词            |\n");

       printf("                    |              2--删除旧词            |\n");

       printf("                    |              3--修改旧词            |\n");

       printf("                    |              4--返回                |\n");

       printf("                    |              0--退出系统            |\n");

       printf("                    |*************************************|\n");

              printf("请输入你的选项!\n");

              scanf("%d",&num);

              if(num>4||num<0)

        {

              fflush(stdin); continue;

        }

              switch(num)

              {

              case 1:TJ();break;

              case 2:SC();break;

              case 3:XG();break;

              case 4:return;

              case 0:exit(0);

              }

              continue;

       }while(1);

注:完整程序请详见附录A,这里省略。

5.测试与调试

                   |------------------------------------|

                   |         请输入选项编号(0--5)     |

                   |------------------------------------|

                   |           1--创建生词库            |

                   |           2--显示词库              |

                   |           3--编辑词库              |

                   |           4--查找生词              |

                   |           5--创新功能              |

                   |           0--退出系统              |

                   |------------------------------------|

请输入选项

1

请输入创建的类型(E表示英汉,C表示汉英)

e

请输入英文单词:

happy

请输入中文的解释:

幸福的

 操作成功!你要继续吗?(Y/N)

n

                   |------------------------------------|

                   |         请输入选项编号(0--5)     |

                   |------------------------------------|

                   |           1--创建生词库            |

                   |           2--显示词库              |

                   |           3--编辑词库              |

                   |           4--查找生词              |

                   |           5--创新功能              |

                   |           0--退出系统              |

                   |------------------------------------|

请输入选项

2

                   *-------------------------------------*

                   *            请输入编号(0--4)       *

                   *-------------------------------------*

                   *             1--显示所有单词         *

                   *             2--显示中文单词         *

                   *             3--显示英文单词         *

                   *             4--返回                 *

                   *             0--退出系统             *

                   *-------------------------------------*

请输入你的选择!

1

单词:happy     解释:幸福的

单词:sd        解释:ds

单词:男人      解释:man

单词:同学      解释:classmate

单词:鞋子      解释:shoot

单词:振孝      解释:zhenxiao

单词:中国      解释:china

单词:男人      解释:man

单词:同学      解释:classmate

单词:鞋子      解释:shoot

单词:振孝      解释:zhenxiao

单词:我        解释:me

生词总数为:12

要继续显示吗(Y/N)?

4

要继续显示吗?请重新输入!

n

                   |------------------------------------|

                   |         请输入选项编号(0--5)     |

                   |------------------------------------|

                   |           1--创建生词库            |

                   |           2--显示词库              |

                   |           3--编辑词库              |

                   |           4--查找生词              |

                   |           5--创新功能              |

                   |           0--退出系统              |

                   |------------------------------------|

请输入选项

3

快快输入密码:

111

密码错误!请重新输入密码

快快输入密码:

1111

                    |*************************************|

                    |          请输入选项编号(0--4)     |

                    |*************************************|

                    |              1--添加新词            |

                    |              2--删除旧词            |

                    |              3--修改旧词            |

                    |              4--返回                |

                    |              0--退出系统            |

                    |*************************************|

请输入你的选项!

2

请选择选择删除的类型(E/C)

happy

                    |*************************************|

                    |          请输入选项编号(0--4)     |

                    |*************************************|

                    |              1--添加新词            |

                    |              2--删除旧词            |

                    |              3--修改旧词            |

                    |              4--返回                |

                    |              0--退出系统            |

                    |*************************************|

请输入你的选项!

请选择选择删除的类型(E/C)

e

输入要删除的单词:happy

删除成功

你想继续继续吗(Y/N)

n

                    |*************************************|

                    |          请输入选项编号(0--4)     |

                    |*************************************|

                    |              1--添加新词            |

                    |              2--删除旧词            |

                    |              3--修改旧词            |

                    |              4--返回                |

                    |              0--退出系统            |

                    |*************************************|

请输入你的选项!

4

                   |------------------------------------|

                   |         请输入选项编号(0--5)     |

                   |------------------------------------|

                   |           1--创建生词库            |

                   |           2--显示词库              |

                   |           3--编辑词库              |

                   |           4--查找生词              |

                   |           5--创新功能              |

                   |           0--退出系统              |

                   |------------------------------------|

请输入选项

4

请选择选择查找的类型(E/C)

c

请输入你想要查找的单词!

中国

该单词的英文释义是:china

你想继续继续吗(Y/N)

n5

                   |------------------------------------|

                   |         请输入选项编号(0--5)     |

                   |------------------------------------|

                   |           1--创建生词库            |

                   |           2--显示词库              |

                   |           3--编辑词库              |

                   |           4--查找生词              |

                   |           5--创新功能              |

                   |           0--退出系统              |

                   |------------------------------------|

请输入选项

5

显示汉语意思,写出正确的英文单词!

解释:中国

请输入正确的单词

英文:china

恭喜你答对了!

解释:男人

请输入正确的单词

英文:man

恭喜你答对了!

解释:同学

请输入正确的单词

英文:classmate

恭喜你答对了!

解释:鞋子

请输入正确的单词

英文:shoote

回答错误,请重新输入!

解释:鞋子

请输入正确的单词

英文:shoot

恭喜你答对了!

解释:振孝

请输入正确的单词

英文:zhenxiao

恭喜你答对了!

解释:我

请输入正确的单词

英文:me

恭喜你答对了!

练习结束!

要继续选择听写单词吗(Y/N)?

n

                   |------------------------------------|

                   |         请输入选项编号(0--5)     |

                   |------------------------------------|

                   |           1--创建生词库            |

                   |           2--显示词库              |

                   |           3--编辑词库              |

                   |           4--查找生词              |

                   |           5--创新功能              |

                   |           0--退出系统              |

                   |------------------------------------|

请输入选项

0

Press any key to continue

第3部分 实训总结

1.个人总结

由于实验做得比较着急,所以在实验基本完成后进行测试才发现存在很多的错误,甚至有些错误是错的很白痴的。可能是太想把实验马上完成了,才导致有时候一个小小错误自己看了一个多小时后还是没有发现,而且还把思路换了又换,没办法,直到自己真的是疲倦的时候,一个不小心才无意的看到原来是标点符号中文化了。这让又兴奋又让我感到无奈。

在这次的小小的错误而花费大量的时间后,我觉得个人的心态是很重要的,有时候想快一点完成任务,结果却发现原来过程竟然出现了那么多自己本该知道的错误,所以,一个编程员的心态很重要,它决定了你心细!

虽然这个系统任务让我花费了很多的时间,但是我也尝试到了成功的美味。档每一个小小的模块成功建立的时候,我的神经都会被兴奋一下。我能感受到那种成功的喜悦!

每个目的的达成都是不简单的、一开始,我看到这个实验系统要求的时候。我个人真的是有点感到些头晕,知道能做,但是就是不知道从何下手。不过,经过和大家探讨和上网查询一些相关的资料之后,发现自己的思路越来越清晰了。最后,在一个完整的思路中开始了一个又一个的模块。。。

当然,软件是完成了,但是,也会存在不足之处,还不够健壮,而且个人觉得软件内存空间比较大,运行起来比较慢,如果能用指针和链表来实现的话,运行的效率可能会大大的提高。

总的来说,困难是必须的,克服是一定的,只要努力,进步是绝对的!

2.结束语

感谢邵平老师的指导,和同学们热心的帮助!

附录Ⅰ 程序清单

/*

题目:4.电子生词库系统

姓名:陈振孝

*/

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<time.h>

#define M 100

struct English

{

       char word[20];

       char explain[20];

};

struct Chinese

{

       char word[20];

       char explain[20];

};

void CJ();//创建生词库

void CJE();//创建英汉

void CJC();//创建汉英

void XSCK();//显示词库

void XSSY();//显示所有单词

void XSZW();//显示中文单词

void XSYW();//显示英文单词

void BJCK();//编辑词库

void TJ();//添加新词

void SC();//删除旧词

void dele();//删除英汉类型

void delc();//删除汉英类型

void XG();//修改旧词

void xge();//修改英汉类型

void xgc();//修改汉英类型

void CZCC();//查找生词

void cze();//查找英文

void czc();//查找中文

void CXGN();//创新功能

void main()

{

int choose;

 while(1)

 {

       printf("                   |------------------------------------|\n");

       printf("                   |         请输入选项编号(0--5)     |\n");

       printf("                   |------------------------------------|\n");

       printf("                   |           1--创建生词库            |\n");

       printf("                   |           2--显示词库              |\n");

    printf("                   |           3--编辑词库              |\n");

       printf("                   |           4--查找生词              |\n");

       printf("                   |           5--创新功能              |\n");

       printf("                   |           0--退出系统              |\n");

       printf("                   |------------------------------------|\n");

       printf("请输入选项\n");

        scanf("%d",&choose);

        if(choose>5||choose<0)

        {

              fflush(stdin); continue;

        }

        else

        switch(choose)

        {

               

                  case 1:CJ();;break; 

                     case 2:XSCK();break;

                     case 3:BJCK();;break;

                     case 4:CZCC();break;

                     case 5:CXGN();break;

                     case 0:exit(0);

                     default:printf("非法输入!\n");break;

        }

        

        

 }

}

void CJ()//创建生词库

{

       char choice;

   fflush(stdin);

       printf("请输入创建的类型(E表示英汉,C表示汉英)\n");

       scanf("%c",&choice);

      

       switch(choice)

       {

       case 'E':CJE();break;

       case 'e':CJE();break;

       case 'C':CJC();break;

       case 'c':CJC();break;

       default:printf("输入错误!\n");break;

       }

      

}

void CJE()//创建英汉

{

       int i=0;

       char yn;

       struct English EH[M];

       FILE* fp=NULL;

       fp=fopen("c://english.txt","a");

              if(fp==NULL)

              {

                     printf("文件打开失败\n");

                     return ;

              }

             

      

                     printf("请输入英文单词:\n");

                     scanf("%s",EH[i].word );

                     printf("请输入中文的解释:\n");

                     scanf("%s",EH[i].explain );

                     fprintf(fp,"%10s%10s",EH[i].word ,EH[i].explain );

                     printf(" 操作成功!你要继续吗?(Y/N)\n");

            fflush(stdin);

                     yn=getchar();

            if(yn=='n'||yn=='N')

                     {

                                   fclose(fp);

                                return;

                     }

                     if(yn=='y'||yn=='Y')

                     {

                     while(1)

                     {

                            i++;

                  printf("请输入英文单词:\n");

                            scanf("%s",EH[i].word );

                     printf("请输入中文的解释:\n");

                     scanf("%s",EH[i].explain );

                     fprintf(fp,"%10s%10s",EH[i].word ,EH[i].explain );

                     printf("操作成功!你要继续吗?(Y/N)\n");

                    

            fflush(stdin);

                     yn=getchar();

                     if(yn=='n'||yn=='N')

                            break;

                     }

                     }

                     fclose(fp);

                     return;

}

void CJC()//创建汉英

{

 int i=0;

 char yn;

 struct Chinese HE[M];

 FILE *fp=NULL;

 fp=fopen("c:\\chinese.txt","a");

 if(fp==NULL)

 {

        printf("很遗憾,文件打不开!\n");

        return;

 }

   printf("请输入中文单词:\n");

   scanf("%s",HE[i].word );

   printf("请输入英文单词:\n");

   scanf("%s",HE[i].explain );

   fprintf(fp,"%10s%10s",HE[i].word,HE[i].explain);

   printf("操作成功!你要继续吗?(Y/N)\n");

   fflush(stdin);

                     yn=getchar();

            if(yn=='n'||yn=='N')

                     {

                                   fclose(fp);

                                return;

                     }

                     if(yn=='y'||yn=='Y')

                     {

                     while(1)

                     {

                            i++;

                  printf("请输入中文单词:\n");

                            scanf("%s",HE[i].word );

                     printf("请输入英文的解释:\n");

                     scanf("%s",HE[i].explain );

                     fprintf(fp,"s10%10s",HE[i].word ,HE[i].explain );

                     printf("操作成功!你要继续吗?(Y/N)\n");

                    

            fflush(stdin);

                     yn=getchar();

                     if(yn=='n'||yn=='N')

                            break;

                     }

                     }

                     fclose(fp);

                     return;

                    

}

void XSCK()//显示词库

{

       fflush(stdin);

       char yn;

  int choose;

  do{

    printf("                   *-------------------------------------*\n");

       printf("                   *            请输入编号(0--4)       *\n");

       printf("                   *-------------------------------------*\n");

       printf("                   *             1--显示所有单词         *\n");

       printf("                   *             2--显示中文单词         *\n");

       printf("                   *             3--显示英文单词         *\n");

       printf("                   *             4--返回                 *\n");

    printf("                   *             0--退出系统             *\n");

       printf("                   *-------------------------------------*\n");

  printf("请输入你的选择!\n");

  scanf("%d",&choose);

  switch(choose)

  {

  case 1:XSSY();break;

  case 2:XSZW();break;

  case 3:XSYW();break;

  case 4:return;

  case 0:exit(-1);

  default:printf("输入错误\n");

  }

  fflush(stdin);

  printf("要继续显示吗(Y/N)?\n");

  yn=getchar();

   while(yn!='y'&&yn!='Y'&&yn!='N'&&yn!='n')

        {

               printf("要继续显示吗?请重新输入!\n");

               fflush(stdin);

               yn=getchar();

        };

       }while(yn=='Y'||yn=='y');

}

void XSSY()//显示所有单词

{

  int j=0;

  int n=0;

  int i=0,k=0;

  struct English EH[M];

  struct English t;

  struct Chinese HE[M];

  FILE* fp=NULL,*fp1=NULL;

  if((fp=fopen("c:\\english.txt","r"))==NULL)

  {

  printf("很遗憾,文件打开失败!\n");

  return;

  }

  fp1=fopen("c:\\chinese.txt","r");

  if(fp1==NULL)

  {

          printf("很遗憾,文件打开失败!\n");

          return;

  }

  fscanf(fp,"%s%s",EH[n].word,EH[n].explain);

  while(feof(fp)==0)

  {

           n++;

         fscanf(fp,"%10s%10s",EH[n].word,EH[n].explain);

      

  }

 for(i=0;i<n+1;i++)

 {

        k=i;

        for(j=k;j<n+1;j++)

        {

               if(strcmp(EH[i].word,EH[j].word)>=0)

               {

           k=j;

                 t=EH[i];

                 EH[i]=EH[j];

                 EH[j]=t;

               }

        }

 }

 for(i=0;i<n;i++)

 {

   printf("单词:%s\t解释:%s\n",EH[i].word,EH[i].explain);

 }

 j=0;

 fscanf(fp1,"%s%s",HE[j].word,HE[j].explain);

 fflush(stdin);

 while(feof(fp1)==0)

 {

         j++;

        fscanf(fp1,"%10s%10s",HE[j].word,HE[j].explain);

      

 }

 for(i=0;i<j+1;i++)

 {

  printf("单词:%s\t解释:%s\n",HE[i].word,HE[i].explain);

 }

  fclose(fp);

  fclose(fp1);

  if((n+j)==0)

         printf("不好意思,没有任何数据!\n");

  else

    printf("生词总数为:%d\n",n+j+1);

}

void XSZW()//显示中文单词

{

        FILE *fp1=NULL;

        struct Chinese HE[M];

        int i=0,j=0,n=0;

       fp1=fopen("c:\\chinese.txt","r");

  if(fp1==NULL)

          printf("很遗憾,文件打开失败!\n");

  fscanf(fp1,"%s%s",HE[j].word,HE[j].explain);

   while(feof(fp1)==0)

 {

              j++;

        fscanf(fp1,"%10s%10s",HE[j].word,HE[j].explain);

 }

 for(i=0;i<j+1;i++)

 {

  printf("单词:%s\t解释:%s\n",HE[i].word,HE[i].explain);

 }

 fclose(fp1);

 if(j==0)

        printf("不好意思,没有任何数据!\n");

 else

       printf("生词总数为:%d\n",j+1);

}

void XSYW()//显示英文单词

{

       int i=0,j=0,k=0;

       int n=0;

       struct English EH[M];

       struct English t;

       FILE *fp=NULL;

      

       if((fp=fopen("c:\\english.txt","r"))==NULL)

       {

      printf("很遗憾,文件打开失败!\n");

         return;

       }

       fscanf(fp,"%10s%10s",EH[n].word,EH[n].explain);

       while(feof(fp)==0)

       {    

            n++;

              fscanf(fp,"%10s%10s",EH[n].word,EH[n].explain); 

      

       }

       for(i=0;i<n+1;i++)

 {

        k=i;

        for(j=k;j<n+1;j++)

        {

               if(strcmp(EH[i].word,EH[j].word)>=0)

               {

           k=j;

                 t=EH[i];

                 EH[i]=EH[j];

                 EH[j]=t;

               }

        }

 }

       for(i=0;i<n+1;i++)

       {

               printf("单词:%s\t解释:%s\n",EH[i].word,EH[i].explain);

       }

       fclose(fp);

       if(n==0)

   printf("不好意思,没有任何数据!\n");

 else

      printf("生词总数为:%d\n",n);

}

void BJCK()//编辑词库

{

       char choice[20]="1111";

       char choice1[20]="";

       int count=0;

       int count1=0;

       int num=0;

       do{

          printf("快快输入密码:\n");

          scanf("%s",choice1);

              if(strcmp(choice,choice1)==0)

              {

                     count++;

                     break;

              }

              else

              {

                     count1++;

                     printf("密码错误!请重新输入密码\n");

              }

       }while(count1<=3);

       if(count>0)

       {

              int num;

              do{

       printf("                    |*************************************|\n");

       printf("                    |          请输入选项编号(0--4)     |\n");

       printf("                    |*************************************|\n");

       printf("                    |              1--添加新词            |\n");

       printf("                    |              2--删除旧词            |\n");

       printf("                    |              3--修改旧词            |\n");

       printf("                    |              4--返回                |\n");

       printf("                    |              0--退出系统            |\n");

       printf("                    |*************************************|\n");

              printf("请输入你的选项!\n");

              scanf("%d",&num);

              if(num>4||num<0)

        {

              fflush(stdin); continue;

        }

              switch(num)

              {

              case 1:TJ();break;

              case 2:SC();break;

              case 3:XG();break;

              case 4:return;

              case 0:exit(0);

              }

              continue;

       }while(1);

}

}

void TJ()//添加新词

{

       fflush(stdin);

       char yn='\0';

       char choice;

       do{

       printf("请选择添加的类型:E/C(E为英汉,C为汉英)\n");

       scanf("%c",&choice);

       switch(choice)

       {

       case 'E':CJE(),printf("恭喜你!已添加成功!\n");break;

       case 'e':CJE(),printf("恭喜你!已添加成功!\n");break;

       case 'C':CJC(),printf("恭喜你!已添加成功!\n");break;

       case 'c':CJC(),printf("恭喜你!已添加成功!\n");break;

       default:printf("输入错误!");break;

       }

       fflush(stdin);

       printf("要继续吗(Y/N)?\n");

    yn=getchar();

   while(yn!='y'&&yn!='Y'&&yn!='N'&&yn!='n')

        {

               printf("要继续显示吗?请重新输入!\n");

               fflush(stdin);

               yn=getchar();

        };

      fflush(stdin);

     if(yn=='n'||yn=='N')

                            return;

       }while(yn=='Y'||yn=='y');

}

void SC()//删除旧词

{

       char ch;

       fflush(stdin);

       printf("请选择选择删除的类型(E/C)\n");

       scanf("%c",&ch);

       if(ch=='e'||ch=='E')  dele();

       if(ch=='c'||ch=='C')  delc();

}

void dele()//删除英汉类型

{     char word[20]="";

       char yn;

    int n=0,i=0,j=0,k=-1;

       struct English de[M];

       FILE *fp=NULL;

      

       fp=fopen("C:\\english.txt","r");

       if(fp==NULL)

       {

              printf("很不好意思,文件打不开!\n");

            return;

       }

       while(feof(fp)==0)

       {

      

              fscanf(fp,"%s%s\n",de[n].word,de[n].explain);

             

              n++;

      

       }

       fclose(fp);

       do

       {

              fflush(stdin);

              printf("输入要删除的单词:");

              gets(word);

              for(i=0;i<n;i++)

              {

                     if(strcmp(word,de[i].word)==0)

                     {

                            j=i,k=0;

                            for(i=j;i<n-1;i++)

                                   de[i]=de[i+1];

                     }

              }

              n--;

              if(k<0)

              {

                     printf("没有该单词\n");

                     printf("你想继续继续吗(Y/N)\n");

              }

       else

       {

              printf("删除成功\n");

       printf("你想继续继续吗(Y/N)\n");

       }

             

              fflush(stdin);

              yn=getchar();

              while(yn!='y'&&yn!='Y'&&yn!='N'&&yn!='n')

              {

                     printf("要继续删除吗?请重新输入!\n");

                     fflush(stdin);

                     yn=getchar();

              };

       }while(yn=='Y'||yn=='y');

       fp=fopen("C:\\english.txt","w");

       if(fp==NULL)

       {    

              printf("文件打开失败!\n");

              return;

       }

    for(i=0;i<n;i++)

       fprintf(fp,"%10s%10s\n",de[i].word,de[i].explain);

    fclose(fp);

}

void delc()//删除汉英类型

{

      

      

       char word[20]="";

       char yn;

    int n=0,i=0,j=0,k=-1;

       struct English de[M];

       FILE *fp=NULL;

      

       fp=fopen("C:\\chinese.txt","r");

       if(fp==NULL)

       {

              printf("很不好意思,文件打不开!\n");

            return;

       }

       while(feof(fp)==0)

       {

      

              fscanf(fp,"%s%s\n",de[n].word,de[n].explain);

             

              n++;

      

       }

       fclose(fp);

       do

       {

              fflush(stdin);

              printf("输入要删除的单词:");

              gets(word);

              for(i=0;i<n;i++)

              {

                     if(strcmp(word,de[i].word)==0)

                     {

                            j=i,k=0;

                            for(i=j;i<n-1;i++)

                                   de[i]=de[i+1];

                     }

              }

              n--;

              if(k<0)

              {

                     printf("没有该单词\n");

                     printf("你想继续继续吗(Y/N)\n");

              }

       else

       {

              printf("删除成功\n");

       printf("你想继续继续吗(Y/N)\n");

       }

             

              fflush(stdin);

              yn=getchar();

              while(yn!='y'&&yn!='Y'&&yn!='N'&&yn!='n')

              {

                     printf("要继续删除吗?请重新输入!\n");

                     fflush(stdin);

                     yn=getchar();

              };

       }while(yn=='Y'||yn=='y');

       fp=fopen("C:\\english.txt","w");

       if(fp==NULL)

       {    

              printf("文件打开失败!\n");

              return;

       }

    for(i=0;i<n;i++)

       fprintf(fp,"%10s%10s\n",de[i].word,de[i].explain);

    fclose(fp);

}

void XG()//修改旧词

{

       char ch;

       fflush(stdin);

       printf("请选择选择修改的类型(E/C)\n");

       scanf("%c",&ch);

       if(ch=='e'||ch=='E')  xge();

       if(ch=='c'||ch=='C')  xgc();

}

void xge()//修改英汉类型

{

      

       char word[20];

       char yn;

    int n=0,i=0,j=0,k=-1;

       struct English de[M];

       FILE *fp=NULL;

      

       fp=fopen("C:\\english.txt","r");

       if(fp==NULL)

       {

              printf("很不好意思,文件打不开!\n");

            return;

       }

       while(feof(fp)==0)

       {

              fscanf(fp,"%s%s\n",de[n].word,de[n].explain);

              n++;

       }

       fclose(fp);

       do

       {

              fflush(stdin);

              printf("输入要修改的英文单词:\n");

              gets(word);

              for(i=0;i<n;i++)

              {

                     if(strcmp(word,de[i].word)==0)

                     {

                           

                            k=1;

                            printf("请输入想修改后的英文单词:\n");

                            scanf("%s",de[i].word);

                            printf("请输入该单词的中文意思:\n");

                            scanf("%s",de[i].explain );

                     }

              }

             

              if(k<0)

              {

                     printf("没有该单词\n");

                     printf("你想继续继续吗(Y/N)\n");

              }

       else

       {

              printf("修改成功\n");

       printf("你想继续继续吗(Y/N)\n");

       }

             

              fflush(stdin);

              yn=getchar();

              while(yn!='y'&&yn!='Y'&&yn!='N'&&yn!='n')

              {

                     printf("你想继续继续吗(Y/N)\n");

                     fflush(stdin);

                     yn=getchar();

              };

       }while(yn=='Y'||yn=='y');

       fp=fopen("C:\\english.txt","w");

       if(fp==NULL)

       {    

              printf("文件打开失败!\n");

              return;

       }

    for(i=0;i<n;i++)

       fprintf(fp,"%10s%10s\n",de[i].word,de[i].explain);

    fclose(fp);

}

void xgc()//修改汉英类型

{

       char word[20];

       char yn;

    int n=0,i=0,j=0,k=-1;

       struct English de[M];

       FILE *fp=NULL;

      

       fp=fopen("C:\\chinese.txt","r");

       if(fp==NULL)

       {

              printf("很不好意思,文件打不开!\n");

            return;

       }

       while(feof(fp)==0)

       {

              fscanf(fp,"%s%s\n",de[n].word,de[n].explain);

              n++;

       }

       fclose(fp);

       do

       {

              fflush(stdin);

              printf("输入要修改的英文单词:\n");

              gets(word);

              for(i=0;i<n;i++)

              {

                     if(strcmp(word,de[i].word)==0)

                     {

                           

                            k=1;

                            printf("请输入修改后的中文单词:\n");

                            scanf("%s",de[i].word);

                            printf("请输入该单词的英文意思:\n");

                            scanf("%s",de[i].explain );

                     }

              }

             

              if(k<0)

              {

                     printf("没有该单词\n");

                     printf("你想继续继续吗(Y/N)\n");

              }

       else

       {

              printf("修改成功\n");

       printf("你想继续继续吗(Y/N)\n");

       }

             

              fflush(stdin);

              yn=getchar();

              while(yn!='y'&&yn!='Y'&&yn!='N'&&yn!='n')

              {

                     printf("要继续修改吗?请重新输入!\n");

                     fflush(stdin);

                     yn=getchar();

              };

       }while(yn=='Y'||yn=='y');

       fp=fopen("C:\\chinese.txt","w");

       if(fp==NULL)

       {    

              printf("文件打开失败!\n");

              return;

       }

    for(i=0;i<n;i++)

       fprintf(fp,"%10s%10s\n",de[i].word,de[i].explain);

    fclose(fp);

}

void CZCC()//查找生词

{

       char ch;

       fflush(stdin);

       printf("请选择选择查找的类型(E/C)\n");

       scanf("%c",&ch);

       if(ch=='e'||ch=='E')  cze();

       if(ch=='c'||ch=='C')  czc();

}

void cze()//查找英文

{

       char word[20];

       char yn;

       struct Chinese dc[M];

       int n=0,i=0,k=-1;

       FILE* fp;

       if((fp=fopen("c:\\english.txt","r"))==NULL)

              printf("很不好意思,文件打不开!\n");

while(feof(fp)==0)

{

       fscanf(fp,"%s%s",dc[n].word ,dc[n].explain );

       ++n;

}

fclose(fp);

do

{

       printf("请输入你想要查找的单词!\n");

       fflush(stdin);

       gets(word);

       for(i=0;i<n;i++)

       {

              if(strcmp(word,dc[i].word )==0)

              {

                  printf("该单词的英文释义是:%s\n",dc[i].explain );

                         k=1;

                            break;

              }

       }

      

       if(k<0)

              printf("没有该单词\n");

       printf("你想继续继续吗(Y/N)\n");

       fflush(stdin);

       yn=getchar();

       while(yn!='y'&&yn!='Y'&&yn!='N'&&yn!='n')

              {

                     printf("要继续查找吗?请重新输入!\n");

                     fflush(stdin);

                     yn=getchar();

              };

}while(yn=='Y'||yn=='y');

fflush(stdin);

fclose(fp);

}

void czc()//查找中文

{

       char word[20];

       char yn;

       struct Chinese dc[M];

       int n=0,i=0,k=-1;

       FILE* fp;

       if((fp=fopen("c:\\chinese.txt","r"))==NULL)

              printf("很不好意思,文件打不开!\n");

while(feof(fp)==0)

{

       fscanf(fp,"%s%s",dc[n].word ,dc[n].explain );

       ++n;

}

fclose(fp);

do

{

       printf("请输入你想要查找的单词!\n");

       fflush(stdin);

       gets(word);

       for(i=0;i<n;i++)

       {

              if(strcmp(word,dc[i].word )==0)

              {

                  printf("该单词的英文释义是:%s\n",dc[i].explain );

                         k=1;

                            break;

              }

       }

      

       if(k<0)

              printf("没有该单词\n");

       printf("你想继续继续吗(Y/N)\n");

       fflush(stdin);

       yn=getchar();

       while(yn!='y'&&yn!='Y'&&yn!='N'&&yn!='n')

              {

                     printf("要继续查找吗?请重新输入!\n");

                     fflush(stdin);

                     yn=getchar();

              };

}while(yn=='Y'||yn=='y');

fflush(stdin);

fclose(fp);

}

void CXGN()//创新功能

{

              do{

     char yn;

    int n=0,i=0,j=0;

       int count;

       char word[20];

       struct Chinese bei[M];

       FILE *fq;

       printf("显示汉语意思,写出正确的英文单词!\n");

       if((fq=fopen("c:\\chinese.txt","r"))==NULL)

       {    

              printf("文件打开失败!\n");

              return;

       }

       fscanf(fq,"%s%s",bei[n].explain,bei[n].word);

       while(feof(fq)==0)

       {

              n++;

              fscanf(fq,"%s%s",bei[n].explain,bei[n].word);

       }

       count=0;

       printf("\n");

       fclose(fq);

      

      

              do

              {

                     fflush(stdin);

                     printf("解释:%s\n",bei[i].explain);

                     printf("请输入正确的单词\n");

                     printf("英文:");

                     gets(word);

                     if(strcmp(word,bei[i].word)==0)

                     {

                    

                            count++;

                            printf("恭喜你答对了!\n");

                     }

                     else

                     {

                            printf("回答错误,请重新输入!\n");

             

                            continue;

                     }

                    

                     i++;

              }while(count<=n);

              printf("练习结束!\n");

                

        printf("要继续选择听写单词吗(Y/N)?\n");

              fflush(stdin);

        yn=getchar();

        while(yn!='y'&&yn!='Y'&&yn!='N'&&yn!='n')

        {

               printf("n请重新输入!\n");

               fflush(stdin);

                     yn=getchar();

        };

              if(yn=='Y'||yn=='y')

              {  

                     fclose(fq);

                     continue;

              }

              else

                     return;

       }while(1);

}

附录B 用户使用说明书

应用本程序需要使用Microsoft Visual C++6.0,根据信息提示可以顺利运行。使用情况如下:

运行程序后:

                          

             选择1:创建生词库

             选择2:显示词库

                           选择1:显示所有单词 

                     选择2:显示中文单词

                     选择3:显示英文单词

                     选择4:返回主菜单

                     选择5:退出系统

             选择3:编辑词库

                           选择1:添加新词

                     选择2:删除旧词

                     选择3:修改旧词

                     选择4:返回主菜单

                     选择5:退出系统

             选择4:查找生词

                           选择c:按中文查找

                     选择e:按英文查找

             选择5:单词练习

参考文献

参考文献一:《C程序设计教程》

参考文献二:《C程序设计辅导与实训》

《C程序设计综合实践》评分表

                                  指导教师签名:                 

                          日        期:_2013625_

更多相关推荐:
电子束的偏转与聚焦(北京科技大学物理实验报告)

北京科技大学实验预习报告实验名称电子束的偏转与聚焦实验目的研究带电粒子在电场和磁场中偏转和聚焦的规律了解电子束线管的构造和工作原理实验原理A电子束流的产生与控制通过阴极K发射电子控制栅极G是一个顶端有小孔的圆筒...

实验九、电子束的偏转

605舍海霞晓珍春云文静实验九电子束的偏转实验时间20xx1125

电子束电偏转实验报告册

实验项目名称电子射线束的电偏转和磁偏转学号姓名班级实验序号时间第周星期第节课联系方式实验目的1研究带电粒子在电场及磁场中偏转的规律2了解电子阴极射线管的结构和原理3学会用外加磁场的方法使示波管中的电子射线束产生...

电子荷质比的测定(实验报告)

大学物理实验报告实验名称磁聚焦法测电子荷质比实验日期20xx0424实验人员袁淳20xx02120xx6实验目的大学物理实验报告磁聚焦法测电子荷质比1了解电子在电场和磁场中的运动规律2学习用磁聚焦法测量电子的荷...

扫描电镜实验报告

扫描电镜实验报告姓名xxx专业xxx学号xxxxxxxx一实验目的1了解扫描电镜的构造及工作原理2学习扫描电镜的样品制备3学习扫描电镜的操作3利用扫描电镜对铝粉的形貌进行观察二实验原理扫描电镜原理是由电子枪发射...

物理设计实验---电子束实验

物理设计实验电子束实验摘要根据电荷在磁场中的运动特点分析了电子束的磁聚焦原理推导了测量电子荷质比的计算公式并测量电子荷质比附带舟山地磁水平分量测量关键词地磁磁聚焦电子荷质比螺旋运动测量物理学方面的一些常数是物理...

电子束实验

电选二电子束实验随着近代科学的发展电子技术的应用已深入到各个领域关于带电粒子在电场磁场中运动规律已成为掌握现代科学技术必不可少的居处知识我们常用示波器中的示波管又名阴极射线管来研究带电粒子在电场磁场中运动的归路...

SEM实验报告

扫描电镜的操作一实验目的1熟悉SEM的一些基本操作2对样品表面显微结构进行观察二仪器用具SEMJSMEMP800日本电子株式会社导电胶电脑及相关软件等三实验原理从电子枪阴极发出的直径20m30m的电子束受到阴阳...

SEM实验报告

Lab1扫描电镜与能谱仪的原理及应用一实验目的1熟悉扫描电子显微镜的结构与工作原理2熟悉试样制备的要求3了解真空镀碳膜仪真空镀铂膜仪的操作步骤及状态参数了解扫描电子显微镜的操作规程熟悉二次电子像与背散射电子像的...

电子测量课程实验报告

福建农林大学计算机与信息学院课程名称姓名系专业年级学号指导教师职称信息工程类实验报告电子测量技术电子信息工程系电子信息工程年月日实验项目列表福建农林大学计算机与信息学院信息工程类实验报告系电子信息工程系专业电子...

扫描电镜实验报告

扫描电镜分析实验一实验目的1了解扫描电子显微镜的原理结构2运用扫描电子显微镜进行样品微观形貌观察二实验原理扫描电镜SEM是用聚焦电子束在试样表面逐点扫描成像试样为块状或粉末颗粒成像信号可以是二次电子背散射电子或...

扫描电镜实验报告

研究生实验报告实验项目名称扫描电子显微镜的使用课程名称现代物理实验方法姓名学号专业凝聚态物理年级院所物理学院年月日研究生实验报告评价标准一实验目的1了解扫描电子显微镜及能谱仪的基本原理2能简单使用扫描电子显微镜...

电子束实验实验报告(50篇)