背单词软件

1ˎ问题描述

设计一个程序,能实现将单词存入文件,并能随机及顺序显示英文或汉语意思,能判断回答的正确与否,并统计个数,可以利用英文或汉语意思查找。

2ˎ功能要求

1).录入单词

China 中国
Japan 日本
…….
使用文件存放。

2).随机测试

系统随机显示单词(用户可以选择中译英,或英译中),对回答错误的单词应该可再回答一次。能够统计回答的正确单词的个数。

3). 顺序测验

4).查找单词的汉语或英语意思

(输入中文查对应的英语意思,输入英文查对应汉语意思)

3ˎ功能实现

在这里插入图片描述

1)

struct word                                 //定义结构体
{
      char Chinese[20];
	char English[20];
};	word w[N];                       //结构体数组

定义结构体数组,每个结构体分为w[i].English与w[i].Chinese两部分,并且在每个函数中定义FILE类型指针变量fp,fp=fopen(“word.dat”,“wb+” )通过fp指向结构体变量w[i]而访问定义的文件word.dat。

2)录入函数

{
      cout<<"请输入英语单词:"<<endl;
	cin>>w[i].English;
	cout<<"请输入相应的汉语意思:"<<endl;
	cin>>w[i].Chinese;
	i++;}

重新录入以wb+方式打开文件,分别将英语及汉语意思赋值给结构体数组;

for(q=0;q<i;q++)
	{
   	fwrite(&w[q],sizeof(word),1,fp);} 

再将结构体数组内容用一个for循环顺序写入文件,并替换原有文件。
而继续录入以ab+方式打开fp=fopen(“word.dat”,“ab+” ),将结构体数组顺序写入原有内容的后边。

3)测试函数

以只读的方式打开文件,用while循环实现持续的测试,若选择退出测试,则break推出循环。以j记录共答题个数,m与s分别记录汉译英与英译汉答对个数,(以选择英译汉为例)

srand(time(0));
k=rand()%(q+1);
cout<<w[k].Chinese<<"的英文单词是:"<<endl;

随机测试利用time函数作为rand()的种子值,随机产生一个不大于结构体个数的整数k,输出w[k].English;

{
   K1=0;
cout<<w[k1].English<<"的中文意思是:"<<endl;
K1++;}

顺序测试则是从第一个开始输出w[k1].English,并指向下一个结构体。待用户输入之后利用strcmp比较输入字符与所产生单词对应汉语意思比较,相同strcmp(w[k].Chinese,c)==0回答正确,两次未答对输出w[k2].Chinese。

4)查找函数

cin>>c;
for(k=0;k<=q;k++)
{
   if(strcmp(c,w[k].English)==0)
	{
   cout<<"相应的汉语意思是:"<<w[k].Chinese<<endl;
		break;}  }
			if(k>q)              //将输入字符与每个w[k].English比较过后没有相同的
			{
   cout<<"你要查找的单词不存在!"<<endl;}

以只读方式打开文件,(以英译汉为例)输入单词,用for循环strcmp函数将w[i].English与输入单词比较,若相同输出对应的w[i].Chinese,利用一个if语句判断查找次数大于单词个数显示没有找到。

4ˎ源代码及注释说明

#include<iostream>
#include<time.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
using namespace std; 
#define N 100
char c[20];
struct word                                 //定义结构体
{
   
	char Chinese[20];
	char English[20];
};	word w[N];                                   //定义结构体数组
void luru1()                                       //重新录入函数
{
   
	FILE *fp;
	int i=0,n,q;
	if((fp=fopen("word.dat","wb+"))==NULL)             //可读可写方式打开
	{
   
		cout<<<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值