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<<<

最低0.47元/天 解锁文章
3393

被折叠的 条评论
为什么被折叠?



