背单词小程序文档格式.docx
- 文档编号:22339877
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:37
- 大小:362.43KB
背单词小程序文档格式.docx
《背单词小程序文档格式.docx》由会员分享,可在线阅读,更多相关《背单词小程序文档格式.docx(37页珍藏版)》请在冰豆网上搜索。
4.未背单词;
5.英汉互译;
6.退出。
主要技术:
ifelseif循环。
关键代码:
if(i==1)//进入功能1添加新词
{
system("
cls"
);
//清屏
Add_word();
、、调用添词函数
cin>
>
j;
if(j==1)
{Add();
}
elseif(j==2)
{
system("
Frame();
}
else//尽量避免在使用程序时因操作引起的失误
cout<
<
"
认真一点!
(╰_╯)#"
endl;
回答问题决定您的方向:
您是否对我的程序满意:
Y/N"
charch;
cin>
ch;
if(ch=='
Y'
||ch=='
y'
)
{system("
Frame();
else
{exit(0);
}
elseif(i==2)
Test();
Test_ByOrder();
任意键返回主目录!
//实现可以返回主目录
b'
B'
{system("
elseif(j==2)
Test_ByImmediately();
elseif(j==3)
添加单词
用户在主界面选择功能1后即执行添加单词模块。
它将提示用户输入添加单词,之前可以显示已存在的单词,利用while循环实现不定量输入单词,最后保存到单词库。
主要使用技术:
文件指针(FILE*fp)while判断循环
charch='
Q'
;
//用来判断是否继续输入单词
if((fp=fopen("
dictionary.txt"
"
ab+"
))==NULL)
cout<
文件无法打开!
exit(0);
for(i=0;
fread(&
Word[i],sizeof(WoRD),1,fp)!
=0;
i++)
{cout<
Word[i].num<
"
Word[i].E_word<
}//特别有成就感的地方!
把以前的单词输出来展示
j=i;
while(ch=='
q'
)//while循环支持不断向文件载入内容!
目前单词库单词存储量为:
j<
请分别输入新增单词的编号、单词、中文翻译和背诵记录(tt/ff):
j++;
Word[j].num>
Word[j].E_word>
Word[j].C_word>
Word[j].TF;
fwrite(&
Word[j],sizeof(WoRD),1,fp);
添加成功!
是否继续增添单词,继续则输入Q/q"
检测功能
用户在主界面选择功能2后即执行该模块。
在此模块中可以实现顺序检测和随机检测。
用户输入正确或错误都会给与提示!
并且可以输入想要检测的单词数量,量力而行。
文件的读出与写入,取随机数,if语句
if((fp=fopen("
i<
t;
i++)
fread(&
Word[i],sizeof(WoRD),1,fp);
cout<
随即检测开始!
:
请输入这次测试的单词量:
intp;
cin>
p;
if(p>
=t)
for(i=0;
charword[10];
intj;
j=rand()%t;
//产生随机数
Word[j].C_word<
___"
word;
if(strcmp(word,Word[j].E_word)==0)
{
cout<
回答正确!
chartf[3]="
tt"
strcpy(Word[i].TF,tf);
//将信息记录在案!
}
else
回答错误!
ff"
else
j=rand()%p;
已背过单词
用户在主界面选择功能3后即执行该模块,能够显示已背诵的单词。
该模块只是调用和显示,主要用到了if函数和字符串处理和文件的读出技术。
……
if((fp=fopen("
))==NULL)//打开文件并判断文件是否存在
//将文件信息读出
已背过的单词:
charch[5]="
charcf[5]="
TT"
if(strcmp(Word[i].TF,ch)==0||strcmp(Word[i].TF,cf)==0)//和英汉互译差不多的操作判断后输出
{
cout<
Word[i].C_word<
}
……
未背单词
用户在主界面选择功能3后即执行该模块,能够显示尚未背诵的单词。
{
cout<
exit(0);
}
未背过的单词:
charch[5]="
charcf[5]="
FF"
if(strcmp(Word[i].TF,ch)==0||strcmp(Word[i].TF,cf)==0)
}}
英汉互译
用户在主界面选择功能5后即执行该模块,能够进行英汉互译功能。
charE[20];
//用数组是为了下面的地址
WoRDWord[100];
输入其英文:
E;
if(strcmp(Word[i].E_word,E)==0)
头文件
本套程序一共有一个头文件。
HEAD.h用于定义单词结构体,共有“单词编号”,“单词英文”,“单词中文意思”,“标注”几项。
代码如下:
structWoRD//没有用WORD时因为#include<
windows.h>
里有叫WORD的⊙﹏⊙b汗!
{
intnum;
//单词编号
charE_word[20];
//单词英文
charC_word[30];
//单词中文意思
charTF[3];
//用来标注是否背过
};
3.调试及问题解决
本套程序的调试中遇到过许多问题。
尤以以下几个最具代表性和启发性:
1.程序无法循环使用。
刚开始程序完成一项功能后就自动退出程序,总是不能再返回主菜单,这样程序也就显得特无力。
后来通过他人指导利用函数间相互调用完成了界面间自由往来!
而且利用清屏功能让程序显得干净明了!
voidFrame()
inti,j;
Menu();
i;
if(i==1)
Add_word();
2.文件的调入后的数据更新。
每次进行单词添加的时候都只能显示10个单词,但是我渴望的是把以前的单词输出来,再把这次添加的单词也输出来。
。
后来我利用一个数组把文件里的单词信息记录了一下,再把那个全局变量记录一共多少单词数,这样就使得程序对单词信息很清晰,单词更新也不再是问题!
voidFirst()//这个函数实现了文件信息的更新每次开始它都可以将以前的文件内容跟现在串起来!
是我花费最长时间的地方!
T_T
FILE*fp;
{}
t=i;
//将上次单词数赋给现在需要使用的t记录下来!
3.显示背诵过和为背诵过的单词不能实现
试过用bool,但是失败了!
⊙﹏⊙b汗后来我从int换到char又换到字符串!
利用字符串处理函数strcmp(str1,str2)==0实现了。
有时候就是一个很简单的问题,但是就是弄不好!
挺可恶!
if(strcmp(Word[i].TF,ch)==0||strcmp(Word[i].TF,cf)==0)//条件符合就输出
cout<
4.关于重名
在用#include包含一些系统自带的头文件时会遇到自己的构造体或变量明和系统冲突,虽然这个知识点在课本一开始就知道了,但是真正在实战中还挺难发现。
必有WORD就在“windows.h”中存在。
5.一些遗憾
对于文件流相关知识的不熟悉让我感觉很受挫!
不过没关系,我可以利用下一个程序去熟悉去掌握!
这个小程序中仍旧存在的种种问题让我也压力挺大的,但是迫于时间和考试只好将修改作罢了~~不过因此我也理解了那些已经在一线奋斗的前辈的苦恼,软件真的没有那么简单
以下是附带代码:
●背单词的小程序
//头文件HEAD.H
charTF[5];
//FIRST.CPP
#include<
iostream.h>
stdio.h>
stdlib.h>
#include"
HEAD.H"
voidFrame();
intt;
//MAIN.CPP
voidFirst();
voidmain()
system("
color3E"
//屏幕及字体颜色
SetConsoleTitle("
英语也疯狂!
↖(^ω^)↗------老邓制作!
//屏幕标题
First();
Frame();
//Gamebegin!
MENU.CPP
externintt;
//全局变量
voidAdd_word();
voidAdd();
voidTest();
voidTest_ByOrder();
voidTest_ByImmediately();
voidReview();
voidDone();
voidPreview();
voidDoing();
voidTranslate();
voidTransluate_EC();
voidTransluate_CE();
voidQuit();
voidMenu()//主菜单
背单词"
①添加新词"
②进入检测"
③已背单词"
④未背单词"
⑤英汉互译"
⑥返回现实"
请选择:
Add();
elseif(i==3)
Review();
Done();
if(ch=='
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单词 程序