英文单词小助手

题目需求分析:

英文单词小助手是帮助学生背诵单词的软件,用户可以选择背诵的词库,并可以编辑自己的词库,还应有词语预览学习功能。系统可以给出中文,让学生输入其英文词意,也可输入英文让学生输入其中文词意,并判定词意是否正确。如不正确则给出提示并要求用户重新输入,如正确则加分。

根据题目需求,系统的基本功能如下。

(1) 词库维护:基于文件进行管理,可以增加、删除和修改单词的中英文词意。每条记录应包括英文词意、中文词意。

(2) 单词预览:系统随机显示一条记录,在屏幕上显示中英文词义。

(3) 中英单词背诵:随机显示中文词汇,用户需输入正确地英文词意才可得分。如输入错误则会提示用户继续输入,直至输入正确。

(4) 英中单词背诵:随机显示英文词汇,用户需输入正确的中文词意才可得分。如输入错误则会提示用户继续输入,直至输入正确。

(5) 成绩查询:显示中英、英中背诵学习的成绩统计。

(6) 帮助:通过帮助了解系统的功能与使用方式。

(7) 退出:退出系统。

具体实现: 

/**
* @file chapter.cpp
* @brief 英语单词小助手
* @version 1.0
* @author Jack
* @date 2018年9月6日
*/#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_CHAR 20  // 最大字符
#define MAX_NUM 200  // 单词的最大个数/**
* @Description 单词的结构体
*/
struct word
{char en[MAX_CHAR]; // 英文形式char ch[MAX_CHAR]; // 中文形式
}  s[MAX_NUM]; // 单词数组int num;  // 单词个数
int select = 1;// select为是否退出系统的标记
int d = 0, c = 0;/**
* @Description 帮助
*/
void help()
{printf("\n本系统主要实现英语单词学习的功能。用户可对词典文件中的单词进行预览,增删改查。");printf("\n同时还可进行中英、英中测试。本系统还提供了测试成绩的显示功能。");
}/**
* @Description 从文件中读取单词的信息
*/
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);
}/**
* @Description 向文件中写入单词的信息
*/
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);
}/**
* @Description 按字典排序
*/
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);}}
} /**
* @Description 添加单词信息
*/
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();
}/**
* @Description 删除单词信息
*/
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没有这个单词!");
}/**
* @Description 修改单词信息
*/
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没有这个单词!");
}/**
* @Description 单词预览
*/
void show()
{int i = 0;printf("\n单词:     英文        中文         ");for(i = 0;i < num;i++)printf("\n          %-12s%-12s", s[i].en, s[i].ch);}/**
* @Description 查询单词
*/
void search()
{int i = 0, choose = 0, flag = 1,status = 0;printf("请输入查询方式(1.按中文查询 2.按英文查询):");scanf("%d", &status);if(status == 1){char ch[MAX_CHAR];// 中文形式while(choose || flag){printf("\n请输入你要查询的单词中文形式:");    scanf("%s", ch);for(i = 0;i < num;i++)// 先找到该中文形式对应的序号{while(strcmp(s[i].ch, ch) == 0){       printf("\n英文形式       中文形式        ");printf("\n   %-12s%12s", s[i].en, s[i].ch);i++;   }           }printf("\n继续查询请选1,返回上一级请选0:");scanf("%d", &choose);if(choose == 0)return;flag = 0;}if(!flag){printf("\n没有这个单词!");}  }else{char en[MAX_CHAR];// 英文形式while(choose || flag){printf("\n请输入你要查询的单词英文形式:");    scanf("%s", en);for(i = 0;i < num;i++)// 先找到该英文形式对应的序号if(strcmp(s[i].en, en) == 0){       printf("\n英文形式       中文形式        ");printf("\n   %-12s%12s", s[i].en, s[i].ch);printf("\n继续查询请选1,返回上一级请选0:");scanf("%d", &choose);if(choose == 0) return;  }flag = 0;}if(!flag){printf("\n没有这个单词!");}    }
}/**
* @Description 中英单词背诵
*/
void zytest()
{   char b1[20];int z;int choose = 1;int i;int t;while(choose){ i = rand() % num;printf("\n【%s】请输入英文单词:",s[i].ch);scanf("%s",b1);for(z = 0;strcmp(b1, s[i].en) != 0;z = z){printf("\n输入错误!!请重新输入:");scanf("%s", b1);c = c + 1;t = 0;}printf("\n恭喜你,回答正确,加10分!\n\n");d = d + 1;if(t == 0){printf("刚刚记错的单词是:%s,请再记一次!", s[i].en);}printf("\n继续测试请选1,返回上一级请选0:");t = 1;scanf("%d", &choose);if(choose == 0) return;  }
}/**
* @Description 英中单词背诵
*/
void yztest()
{char b1[20];int z,x = 41;int choose = 1;int i;i = rand() % num;while(choose){ printf("【%s】请输入中文意思:", s[i].en);scanf("%s", b1);for(z = 0;strcmp(b1, s[i].ch) != 0;z = z){printf("输入错误!!请重新输入:");scanf("%s", b1);c = c + 1;}printf("\n恭喜你,回答正确,加10分!\n\n");d = d + 1;printf("\n继续测试请选1,返回上一级请选0:");scanf("%d", &choose);if(choose == 0) return; }
}/**
* @Description 成绩列表
*/
void list()
{printf("\n    共计输入错误:%d次  **每次扣10分**\n", c);printf("    共计输入正确:%d次  **每次加10分**\n", d);printf("    你的总得分为:%d分\n\n", 10 * d - 10 * c);
}/**
* @Description 词典维护
*/
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之间选择");}}
}/**
* @Description 用户界面
*/
void menu()
{  int item;printf("\n"); printf("              *********************************************************\n");printf("              #                                                       #\n");printf("              #                     英语单词小助手                    #\n");printf("              #                                                       #\n");printf("              #                      版本 : v1.0                     #\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;
} 

C语言:英文单词小助手相关推荐

  1. (C语言)单词小助手

    问题描述 对于任意给定的单词小助手程序(现有功能可以实现查单词的增删改查.中英.英中测试和分数显示功能),完善其单词查询.错误单词重复记忆和排行功能. 问题分析 首先附上给出的初始代码(已经可以实现基 ...

  2. java设计单词英译汉小助手_C语言实现单词小助手功能完善版

    本文为大家分享了完善版的C语言单词小助手的具体实现代码,供大家参考,具体内容如下 一.题目分析 1.在原有代码基础上添加文档注释,函数注释及语句注释,使代码风格良好,易于阅读和修改. 2.完善功能,实 ...

  3. c语言英文单词倒着,C语言实现英文单词助手

    英文单词小助手的实现步骤,供大家参考,具体内容如下 题目需求分析: 英文单词小助手是帮助学生背诵单词的软件,用户可以选择背诵的词库,并可以编辑自己的词库,还应有词语预览学习功能.系统可以给出中文,让学 ...

  4. 生日小助手V3.1——跨平台多语言的农历生日提醒软件

    项目主页:http://birthdayhelper.weebly.com/   开发者:IT小小龙 个人博客:http://blog.sina.com.cn/buduanqs 电子邮箱:long50 ...

  5. java设计单词英译汉小助手_单词小助手C语言版

    单词小助手,要求完成以下任务: 1.改写程序为良好程序风格(文档注释,函数注释,语句注释). 2.将单词测试中的功能完善,可针对做错的单词重复记忆. 3.查询单词的功能添加英文词查询,中文查询的功能完 ...

  6. c语言中的单词的意思及作用,C语言实现单词助手功能

    本文实例为大家分享了C语言实现单词小助手的具体代码,供大家参考,具体内容如下 单词小助手 (声明:此程序非原创,是在已有程序上进行一些修改和添加) 一.题目分析 题目要求: 1.改写程序为良好程序风格 ...

  7. c语言50个小程序,C语言50小程序.doc

    C语言50小程序 一 基础部分: 输入1~10之间的一个数字,输出它对应的英文单词. /* Note:Your choice is C IDE */ #include "stdio.h&qu ...

  8. java计算机毕业设计腾讯网游辅助小助手源代码+数据库+系统+lw文档

    java计算机毕业设计腾讯网游辅助小助手源代码+数据库+系统+lw文档 java计算机毕业设计腾讯网游辅助小助手源代码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Java ...

  9. AI之Tool:GitHub Copilot(一款人工智能编程小助手—猜你想写的代码)的简介、安装、使用方法之详细攻略

    AI之Tool:GitHub Copilot(一款人工智能编程小助手-猜你想写的代码)的简介.安装.使用方法之详细攻略 目录 Copilot人工智能工具的简介 1.GitHub Copilot的安全性 ...

最新文章

  1. Linux免密登陆(CentOS7.2为例)
  2. 为UINavigationBar添加自定义背景
  3. 邮件办公系统Exchange
  4. 实现水电气一卡通 IC卡扇区分配
  5. springboot使用EntityManager执行自定义SQL
  6. C语言找出两个字符串唯一不同的一个字符(附完整源码)
  7. halcon 将数据保存到excel_pandas筛选、合并、批量保存excel数据
  8. restful api接口设计
  9. TensorFlow 学习指南 二、线性模型
  10. 使用iScroll时,input等不能输入内容的解决方法
  11. Codeforces 861 A k-rounding 数论
  12. shell练习DAY14
  13. 海量数据挖掘MMDS week6: MapReduce算法(进阶)
  14. 软考系统分析师备考详细介绍
  15. jeDate日期控件
  16. GDI+ C 画图 输出文字
  17. yii2中hasMany 和 hasOne 的用法及在页面中增加字段的问题
  18. Docker容器内部 DNS 解析失败的问题
  19. 持久记录精彩时刻,汉印CP4000体验
  20. OpenCV快速入门一:图片读取保存

热门文章

  1. 三种256MB SPIFLASH的高性能模式和软复位学习笔记
  2. oracle 性能基线,Oracle 11g:SQL性能分析器(一)(3)
  3. 【TWS API使用教程6】---如何使用TWS API在盈透证券中获取数据?
  4. 跨年烟花但是飘零半生
  5. gsmr归属位置服务器,01gsmr系统核心网gprs业务介绍解析.pptx
  6. JAVA 连接 Exchange服务
  7. vs2013的简单安装
  8. 用sqlserver查询数据的所有表名和行数找到餐饮管理软件菜品表名Course
  9. 回溯算法之N皇后问题
  10. Generating Images with Perceptual Similarity Metrics based on Deep Networks