struct word
//单词的结构体
{char  en[MAX_CHAR]; // 英文形式char  ch[MAX_CHAR];   //中文形式
}  s[MAX_NUM]; //单词数组
int   num;           //单词个数
int select=1;//select 为是否退出系统的标记
int d=0,c=0;
//帮助
void help()
{printf("\n本系统主要实现英语单词学习的功能。用户可对词典文件中的单词进行预览,增删改查。");printf("\n同时还可进行中英、英中测试。本系统还提供了测试成绩的显示功能。");
}//从文件中读取单词的信息
void  readfile()
{FILE *fp;int i=0;fp=fopen("data.txt","r");if(!fp){printf("\n打开文件data.txt失败!");}while(fscanf(fp,"%s %s ",s[i].en,s[i].ch)==2){i++;}num=i;if(0==i)printf("\n文件为空,请选择词典维护增加词条!");elseprintf("\n");fclose(fp);}
//从文件中读取单词的信息
void  writefile()
{FILE *fp;int i=0;fp=fopen("data.txt","w");if(!fp){printf("\n打开文件data.txt失败!");}for(i=0;i<num;i++){fprintf(fp,"\n%s %s ",s[i].en,s[i].ch);}printf("\n");fclose(fp);
}
void sort()/*按字典排序*/
{int i,j;char temp[MAX_CHAR];for(i=0;i<num-1;i++){for(j=num-1;j>i;j--)if(strcmp(s[j-1].en,s[j].en)>0){strcpy(temp,s[j-1].en);strcpy(s[j-1].en,s[j].en);strcpy(s[j].en,temp);strcpy(temp,s[j-1].ch);strcpy(s[j-1].ch,s[j].ch);strcpy(s[j].ch,temp);}}
}
//添加单词信息
void add()
{int i=num,j,flag=1;while(flag){flag=0;printf("\n请输入单词的英文形式:");scanf("%s",s[i].en);for(j=0;j<i;j++)if(strcmp(s[i].en,s[j].en)==0){printf("已有该单词,请检查后重新录入!\n");flag=1;break; /*如有重复立即退出该层循环,提高判断速度*/}}printf("\n请输入单词的中文形式:");scanf("%s",s[i].ch);num++;printf("\n您输入的信息为: 英文: %s 中文: %s  ",s[i].en,s[i].ch);sort();
}
//删除单词信息
void del()
{int i=0,j=0;char  en[MAX_CHAR];   //英文形式printf("\n请输入你要删除的单词英文形式:");   scanf("%s",en);for(i=0;i<num;i++)//先找到该英文形式对应的序号if(strcmp(s[i].en,en)==0){for(j=i;j<num-1;j++)s[j]=s[j+1];num--; //数量减少 1return;}printf("\n没有这个单词!");}
//修改单词信息
void modify()
{int i=0,choose=0,flag=1;//chooses代表选项标识,flag代表是否找到单词char  en[MAX_CHAR];   //英文形式while(flag||choose){printf("\n请输入你要修改的单词英文形式:");   scanf("%s",en);for(i=0;i<num;i++)//先找到该英文形式对应的序号if(strcmp(s[i].en,en)==0){printf("\n请输入单词正确的英文形式:");scanf("%s",s[i].en);printf("\n请输入此单词正确的的中文形式:");scanf("%s",s[i].ch);printf("\n继续修改请选1,返回上一级请选0:");scanf("%d",&choose);if(choose==0) return;  }flag=0;}if(!flag)  printf("\n没有这个单词!");
}
//单词预览
void show()
{int  i=0;printf("\n单词:     英文        中文         ");for(i=0;i<num;i++)printf("\n          %-12s%-12s",s[i].en,s[i].ch);}
//查询单词
void search()
{int i = 0;int symbol = 0;    //单词是否存在标记,非零为至少存在一个int choose = 1;char en_ch[MAX_CHAR];    //存储输入的单词的中文或者英文形式while (choose){//次级菜单选项printf("\n\n中文查英文请输入1\n");printf("英文意思查询请输入2\n");printf("返回上级菜单请输入0\n");printf("请输入查询方式:");scanf("%d", &choose);//依据中文查询英文单词if (choose == 1){symbol = 0;printf("\n请输入你要查询的单词中文形式:");//获得要查询的中文scanf("%s", en_ch);for (i = 0; i < num; i++){//在中文数组中查找啊对应中文是否存在if (strcmp(s[i].ch, en_ch) == 0){if (symbol == 0){//如果该中文为第一次输出,则执行printf("\n中文形式        英文形式       ");}printf("\n   %-12s%12s", s[i].ch, s[i].en);//进行标记,该中文单词存在symbol++;}}//若没有找到要查询的词,则输出提示信息if (symbol == 0){printf("\n未查询到该单词!");}}//依据英文查询中文单词else if (choose == 2){symbol = 0;printf("\n请输入你要查询的单词英文形式:");//获得要查询的英文单词scanf("%s", en_ch);for (i = 0; i < num; i++){//在英文单词数组中查找是否存在该单词if (strcmp(s[i].en, en_ch) == 0){printf("\n英文形式       中文形式        %d", symbol);printf("\n   %-12s%12s", s[i].en, s[i].ch);//进行标记,该英文单词存在symbol++;}}//若不存在该单词,则输出提信息if (symbol == 0){printf("\n未查询到该单词!");}}//退回上级菜单选项if (choose == 0){return;}}
}//中文翻译英文测试
void zytest()
{char b1[20];int choose = 1;int tmp = 0;int i = 0;int en_ch_num[MAX_NUM];int word_true=0;int word_false=0;while (choose){//遍历单词测试错误次数数组for (i = 0; i < num + 1; i++){//将错误次数最多的单词在单词数组中的位置记录至en_ch_num[0]if (en_ch_num[i] > en_ch_num[0]){en_ch_num[0] = en_ch_num[i];}}//若当前已有测试错误超过2次的单词,则使当前测试出现该单词if (en_ch_num[0] > 2){i = en_ch_num[0];}//若最大错误次数小余2,则随机生成数字并除以单词数量取余,得到随机的单词else{//以时间为种子生成随机数srand((unsigned)time(NULL));i = rand() % num;}printf("\n【%s】请输入英文单词:", s[i].ch);scanf("%s", b1);//判断单词是否输入正确若不正确,则输出错误提示,并将此单词标记if (strcmp(b1, s[i].en) != 0){en_ch_num[i + 1]++;printf("输入错误!!!\n");//记录总单词错误数word_false ++;}//若单词输入正确,输出正确提示,若i不为随机产生,则将当前单词记录归零else if (strcmp(b1, s[i].en) == 0){if (tmp - 1 == i){en_ch_num[0]--;en_ch_num[tmp]--;}printf("恭喜你,回答正确,加10分!\n\n");//记录总单词正确数word_true++;}printf("\n\n\n返回上一级请选0,继续测试请输入1:");scanf("%d", &choose);//若输入为0,返回上级菜单if (choose == 0){return;}}
}//英译中测试
void yztest()
{char b1[20];int choose = 1;int tmp = 0;int i = 0;int en_ch_num[MAX_NUM];int word_true=0;int word_false=0;while (choose){//遍历单词测试错误次数数组for (i = 1; i < num + 1; i++){//将错误次数最多的单词在单词数组中的位置记录至en_ch_num[0]if (en_ch_num[i] > en_ch_num[0]){en_ch_num[0] = en_ch_num[i];tmp = i;}}//若当前已有测试错误超过2次的单词,则使当前测试出现该单词if (en_ch_num[0] > 2){i = en_ch_num[0];}//若最大错误次数小于2,则随机生成数字并除以单词数量取余,得到随机的单词else{//以时间为种子生成随机数srand((unsigned)time(NULL));i = rand() % num;}printf("\n【%s】请输入中文单词:", s[i].ch);scanf("%s", b1);//判断单词是否输入正确若不正确,则输出错误提示,并将此单词标记if (strcmp(b1, s[i].ch) != 0){en_ch_num[i + 1]++;printf("输入错误!!!\n");//记录总单词错误数word_false++;}//若单词输入正确,输出正确提示,若i不为随机产生,则将当前单词记录归零else if (strcmp(b1, s[i].ch) == 0){if (tmp - 1 == i){en_ch_num[0] = 0;en_ch_num[tmp] = 0;}printf("恭喜你,回答正确,加10分!\n\n");//记录总单词正确数word_true++;}printf("\n\n\n返回上一级请选0,继续测试请输入1:");scanf("%d", &choose);//若输入为0,返回上级菜单if (choose == 0){return;}}
}
//成绩列表
void list()
{printf("\n    共计输入错误:%d次  **每次扣10分**\n",c);printf(" 共计输入正确:%d次  **每次加10分**\n",d);printf(" 你的总得分为:%d分\n\n",10*d-10*c);}
//词典维护
void maintain()
{int choose;//维护功能选择printf("   ------------------\n");printf("   1.增加单词\n");printf("   2.修改单词\n");printf("   3.删除单词\n");printf("   4.查询单词\n");printf("   5.退出本菜单\n");printf("   ------------------\n");while(1){   printf(" \n请输入维护功能编号:");scanf("%d",&choose);switch(choose){case 1:add();writefile();break;case 2:modify();writefile();break;case 3:del();writefile();break;case 4:search();break;case 5:  return;default: printf("\n请在1-5之间选择");}}
}
//用户界面
void menu()
{  int item;printf("\n"); printf("              *********************************************************\n");printf("              #                                                                   #\n");printf("              #                             百词斩                            #\n");printf("              #                                                                   #\n");printf("              #                                                                   #\n");printf("              #                                                                   #\n");printf("              *********************************************************\n");printf("              #                                                                  #\n");printf("              #       0.词库维护          1.单词预览                  #\n");printf("              #                                                                  #\n");printf("              #       2.单词背诵(中英)    3.单词背诵(英中)       #\n");printf("              #                                                                  #\n");printf("              #       4.查询成绩          5.帮助                        #\n");printf("              #                                                                  #\n");printf("              #       6.退出系统                                           #\n");printf("              #                                                                 #\n");printf("             **********************************************************\n");  printf("\n");printf("                    请选择您需要的操作序号(0-5)按回车确认:");scanf("%d",&item);printf("\n");readfile();switch(item){case 0:maintain();break;case 1:show();break; case 2:zytest();break;case 3:yztest(); break;case 4:list();break;case 5:help();break;case 6:select =0;break;default:printf("请在0-6之间选择\n");}
}
int main()
{ while(select){menu();}system("pause");return 0;
}

百词斩英语单词小助手(主要实现英语单词学习的功能。用户可对词典文件中的单词进行预览,增删改查。同时还可进行中英、英中测试。本系统还提供了测试成绩的显示功能。)相关推荐

  1. Android中数据库的一些操作(增删改查)

    提起Android的开发,就不得不提数据库,几乎每个App中都会用到Sqlit数据库存储一些数据,小编闲暇时期,写了一个小demo关于数据库的增删改查,之前也介绍过数据库的一个开源框架ORMLite, ...

  2. Mybatis中使用Dao实现类实现增删改查【实际开发中使用代理dao】

    在Mybatis开发中,使用到的是代理Dao的方式实现增删改查,这样就不需要在写Dao的实现类 但是Mybatis也支持写Dao实现类!即DaoImpl 直接上DaoImpl,之前的代码可以参考前面几 ...

  3. python操作mysql的增删改查_详解使用pymysql在python中对mysql的增删改查操作(综合)...

    这一次将使用pymysql来进行一次对MySQL的增删改查的全部操作,相当于对前五次的总结: 先查阅数据库: 现在编写源码进行增删改查操作,源码为: #!/usr/bin/python #coding ...

  4. mongodb windows的安装方法和添加到任务管理器中、检测是否成功、增删改查命令...

    转: mongodb安装方法: https://blog.csdn.net/heshushun/article/details/77776706        mongodb检测安装成功 .以及增删改 ...

  5. 华山论剑之iOS中(数组,字典,SQLite,CoreData)的“增删改查“

    我们的生活态度就应该是 "不抱怨" ! 其实我想写这篇文章很久了,因为自己做的iOS开发 ,对数据这一块有这极高的要求.所以一些必须的存储数据的使用,我们都有必要熟悉用法.在以前我 ...

  6. android中对sim卡联系人的增删改查以及监听sim卡联系数据的改变

    sim卡联系人的增删改查主要是通过ContentProvider来进行操作的,在android中对sim卡联系人操作的provider是定义在IccProvider.java这个类中的,这个类位于an ...

  7. 深入理解和使用Oracle中with as语句以及与增删改查的结合使用

    WITH AS短语,也叫做子查询部分(subquery factoring),可以做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到.有的时候,是为了让SQL语句的可读性更高些,也有 ...

  8. java中select的用法_mybaties中select用法,以及常用增删改查

    查询语句是使用 MyBatis 时最常用的元素之一 select元素配置细节如下 属性 描述 取值 默认 id 在这个模式下唯一的标识符,可被其它语句引用 parameterType 传给此语句的参数 ...

  9. Android中访问通讯录,数据的增删改查

    1.权限 <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-pe ...

  10. Spring boot 中使用BBoss-ES进行ES的增删改查

    最近项目中有文件信息需要快速索引,就打算把原来存储到MYSQL里面的数据全部存储到ES中 一下是代码 yml配置 ```yaml elasticsearch:bboss:elasticUser:ela ...

最新文章

  1. 面向汽车应用的硬件推理芯片
  2. [云炬创业基础笔记]第五章创业机会评估测试9
  3. 念数字python_我是怎样利用python PIL将图片数字读出来的?
  4. 第十七章 apache 性能调优
  5. AutoLayout自动布局,NSLayoutConstraint 视图约束使用
  6. 【C++grammar】文件系统以及path类使用
  7. 【英语学习】【WOTD】resurrection 释义/词源/示例
  8. 浅谈CSS3中的弹性布局
  9. matlab画图,想让子图使用不同的色标
  10. 昆特牌Online——客户端用到的一些技术
  11. 努力奋斗,但不想像蚂蚁那样!
  12. 无线传感器网络与数据交换解析
  13. python做大数据可视化软件_四款最受欢迎的大数据可视化工具
  14. 阅读分享——李开复老师《开工愉快:如何保持每天精力充沛》
  15. 二分查找总结——左闭右开区间和左闭右闭区间(C++语言)
  16. 随笔集:H5如何对接原生app的方法
  17. 收不到验证码怎么办?
  18. 树莓派外接can模块,can收发功能测试
  19. mt6761平台 源码内置APK报错“/lib/xxxx.so“ not found
  20. 联合证券|内外利好共振 今年A股可更乐观一点

热门文章

  1. jquery点击添加样式
  2. 滴水逆向学习笔记 -1-
  3. mysql汉字拼音缩写查询
  4. 使用 OpenAI API 构建 Next.js 应用程序的初学者指南
  5. 大作业系列之体育课 | 从NBA中看篮球精神
  6. flutter在导航栏处实现对两个列表的点击事件
  7. 3-maven学习-学习创建maven的依赖属性
  8. 规模指数介绍,如何使用Python获取数据
  9. 手动可以执行脚本,crontab执行失败,可能和环境变量有关(如果涉及到环境变量)
  10. Psins代码解析之test_SINS_east_west.mtest_SINS_north_south.m