c++实现计算机辅助教学英语

只谈情不闲聊 提交于 2019-12-09 20:04:16

教学生学习英语

1、功能
1、有管理功能—可以增添、删除、修改、查看词汇的功能
2、能完成回答正确的判断,有等级设计
3、记录成功个数根据正确率确认是否晋级或者降级
4、可以根据单词判断词意 根据词意判断单词

2、代码
1、word.h//类的定义和头文件

#pragma once
#include
#include
#include
#include
#include<conio.h>
#include<Windows.h>
#define FILENAME1 “words.txt”//存储词汇
#define FILENAME2 “grade.txt”//存储等级
#define FILENAME3 “account.txt”//存储密码

#define object1 30//每一关的单词数量
#define object2 0.9//过关率 升级
#define object3 0.5//降级
using namespace std;
class word
{
public:
//显示单词
word(string a, string b , string c) {//单词 词意 类别
Word = a;
Meaning = b;
Type = c;
}
word();
word **CE_Words;//存储所有单词、短语

int Num;//词汇数量(包括 单词 短语)

~word();

public:
void Init_Word();//初始化
void Init_Num();//词汇的数量

private:
string Word;//单词
string Meaning;//词义
string Type;//1 代表单词 2 代表词组

public:
//词汇设置
void Add_Words();//添加

void Del_Words();//删除

void Mod_Words();//修改

void Que_Words();//查找

void Ope_Words();//操作设置

void Set_Show();//设置界面

void Save_Words();//保存

void Show_Words();//显示

public:
//学习操作

void Start_Game();//开始学习

void Continue_Game();//继续学习

void Save_Game();//保存学习

void Ope_Game();//操作

void Menu_Game();//学习界面

void Continue_Init();//获取等级

void random(int a[]);//随机函数

word **Grade_Words;//按等级存储词汇

void Init_Grade_Num();//数量

int Grade_Num;//等级词汇数量

void Init_Game(int);//初始化

void Show_Game();//显示

void Start_Game_Words(int a[]);//单词

void Start_Game_Mean(int a[]);//意思

int grade;//等级

bool judge = false;//判断是否是开始之后的继续学习

public:
//登录

void Acc_Game();//登录界面

void Acc_Save();//保存

void Acc_Init();//初始化

string Password;//密码

void Mod_Acc();//修改密码 

string Judge_Acc();//判断密码

bool Acc_Flag = false;//锁定判断

int Acc_Num=3;//次数判断

bool Judge_Pass=false;//判读之前是否登录成功

void Exp_Game();//使用说明

};

2、word.cpp//具体功能实现

#include"word.h"
//局部颜色变化
void color(unsigned short color_index)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color_index);
}
//初始化总单词
word::word()
{
Init_Word();
}

word::~word() {}//构造函数

void word::Init_Word()//初始化
{
fstream f;
f.open(FILENAME1, ios::in | ios::out);
if (!f.is_open())
{
cout << “文件打开失败…” << endl;
return;
}
Init_Num();
CE_Words = NULL;
if (Num == 0)
{
cout << “文件为空…” << endl;
return;
}
CE_Words = new word*[Num];//开辟大小为Num的空间
word *rd;
string w;
string m;
string a;
int k = 0;
int flag = 0;
while (getline(f, w) && getline(f, m)&&getline(f,a))
{
//分三行 一行为单词 一行为词意 一行为判断
rd = new word(w, m, a);//存入rd中
CE_Words[k] = rd;//把rd中的值存入CE_Words中
k++;
}
f.close();
}
//初始化单词数量
void word::Init_Num()//词汇的数量
{
fstream f;
f.open(FILENAME1, ios::in | ios::out);
if (!f)
{
cout << “文件打开失败…” << endl;
return;
}

string w;
string m;
string a;
int k = 0;
while (getline(f, w)&&getline(f, m)&&getline(f,a))
{
	//分三行   一行为单词  一行为词意  一行为判断
	//	if (!(f >> a[k++]))
	//	break;
	k++;
}
Num = k;
f.close();

}
//添加
void word::Add_Words()//添加
{
while (1)
{
cout << “1、添加单词” << endl;
cout << “2、添加词组” << endl;
cout << “0、返回” << endl;
cout << “输入你的选择:” << endl;
string type;
cin >> type;
if (type == “0”)
{
return;
}
if (type == “1”)
{
cout << "添加形式如单词:empleeyer " << endl;
cout << “词意:老板;雇主 (加分号为一个意思)” << endl;
}
cout << “输入你想填加的数量:” << endl;
int number;
cin >> number;
word *Add_CE_Words = new word[Num + number];
for (int i = 0; i < Num; i++)
{
Add_CE_Words[i] = CE_Words[i];
}
word *rd;
string w;
string m;
int j;
for (int i = 0; i < number; i++)
{
bool n_flag = true;
cout << “输入你想添加的第” << i + 1 << “个词汇的单词” << endl;
if(i==0)
cin.get();
getline(cin, w);
w += “.”;
if (w == “.”) {
cout << “请输入单词…” << endl;
_getch();
i–;
n_flag = false;
}
if (n_flag)
{
for ( j = 0; j < Num + i; j++)
{
if (Add_CE_Words[j]->Word == w)
{
cout << “已经存在此词汇,请重新输入…” << endl;
_getch();
system(“cls”);
//n_flag = false;
break;

				}
			}
			if (j != Num + i) {
				i--;
			}
			else 
			{
				cout << "输入你想添加的第" << i + 1 << "个词汇的词意" << endl;
				//	cin.get();
				getline(cin, m);
				m += ";";
				rd = new word(w, m, type);
				Add_CE_Words[Num + i] = rd;
				cout << "添加成功!" << endl << endl;
			}
		}
	}
	//删掉开辟的空间
	delete[]CE_Words;
	//重新赋值
	CE_Words = Add_CE_Words;
	Num += number;
	cout << "是否继续添加....(y/n)" << endl;
	char ch;
	cin >> ch;
	if (ch == 'n')
	{
		Save_Words();
		break;
	}
		
}

}
//保存
void word::Save_Words()
{
fstream f;
f.open(FILENAME1, ios::in | ios::out);
if (!f.is_open())
{
cout << “文件打开失败…” << endl;
return;
}
//存入
for (int i = 0; i < Num; i++)
{
f << CE_Words[i]->Word << endl;
f << CE_Words[i]->Meaning << endl;
f << CE_Words[i]->Type << endl;
}
f.close();
}
//删除
void word::Del_Words()//删除
{
while (1)
{
string w;
string m;
string type;
int n_t;
cout << “1、输入你想删除的具体词汇的单词(注意中间空格):” << endl;
cout << “2、从词汇表中选择删除的词汇:” << endl;
cout << “0、返回” << endl;
cin >> n_t;
if (n_t == 2) {
while (1)
{
system(“cls”);
Show_Words();
int t;
cout << “输入你想选择删除的序号:” << endl;
cin >> t;
if (t > Num || t< 0) {
cout << “选择超出范围!” << endl;
cout << “请重新选择!” << endl;
_getch();
}
else
{
cout << “原单词:” << CE_Words[t - 1]->Word << endl;
cout << “原词意:” << CE_Words[t - 1]->Meaning << endl;
cout << “原编号:” << CE_Words[t - 1]->Type << endl;
//全部后移
for (int i = t - 1; i < Num; i++)
{
CE_Words[i] = CE_Words[i + 1];
}
//数量减一
Num–;
cout << “删除成功!” << endl;
system(“pause”);
cout << “是否继续删除…(y/n)” << endl;
char ch;
cin >> ch;
if (ch == ‘n’)
{
Save_Words();
system(“cls”);
break;
}
}
}
}
else if (n_t == 1)
{
cout << “1、删除单词” << endl;
cout << “2、删除词组” << endl;
cout << “输入你的选择:” << endl;
cin >> type;
cout << “输入你想要修改的单词:” << endl;
cin.get();
getline(cin, w);
w += “.”;
int j = -1;
for (int i = 0; i < Num; i++)
{
if (CE_Words[i]->Word == w)
{
j = i;
}
}
if (j == -1) {
cout << “无此词汇…” << endl;
system(“pause”);
cout << endl << endl;
cout << “是否重新删除…(y/n)” << endl;
char ch;
cin >> ch;
if (ch == ‘n’)
break;
else
system(“cls”);

		}
		else
		{//全部后移
			for (int i = j; i < Num; i++)
			{
				CE_Words[i] = CE_Words[i + 1];
			}
			//数量减一
			Num--;
			cout << "删除成功!" << endl;
			system("pause");
			cout << "是否继续删除....(y/n)" << endl;
			char ch;
			cin >> ch;
			if (ch == 'n')
			{
				Save_Words();
				break;
			}
		}
	}
	else 
		if (n_t == 0) {
		system("cls");
		return;
	}
		else
	{
		cout << "输入有误..." << endl;
		cout << "请重新输入..." << endl;
		_getch();
		system("cls");
	}
}

}
//修改
void word::Mod_Words()//修改
{
while (1)
{
string w;
string m;
string type;
int n_t;
cout << “1、输入你想修改的具体词汇的单词(注意中间空格):” << endl;
cout << “2、从词汇表中选择修改的词汇:” << endl;
cout << “0、返回” << endl;
cin >> n_t;
if (n_t == 2) {
while (1)
{
system(“cls”);
Show_Words();
int t;
cout << “输入你想选择修改的序号:” << endl;
cin >> t;
if (t > Num||t< 0) {
cout << “选择超出范围!” << endl;
cout << “请重新选择!” << endl;
_getch();
}
else
{
cout << “原单词:” << CE_Words[t-1]->Word << endl;
cout << “原词意:” << CE_Words[t-1]->Meaning << endl;
cout << “原编号:” << CE_Words[t - 1]->Type << endl;
word *rd;
cout << “输入修改后的词汇单词:” << endl;
cin.get();
getline(cin, w);
w += ‘.’;
cout << “输入修改后的词汇词意:” << endl;
//cin.get();
getline(cin, m);
m += ‘;’;
cout << “输入修改后的词汇编号:” << endl;
cin >> type;
rd = new word(w, m, type);
CE_Words[t-1] = rd;
cout << “修改成功!” << endl;
system(“pause”);
cout << “是否继续修改…(y/n)” << endl;
char ch;
cin >> ch;
if (ch == ‘n’)
{
Save_Words();//保存
system(“cls”);
break;
}
}
}
}
else if(n_t==1)
{
cout << “1、修改单词” << endl;
cout << “2、修改词组” << endl;
cout << “输入你的选择:” << endl;
cin >> type;
if (type == “0”)
{
return;
}
cout << “输入你想要修改的单词:” << endl;
cin.get();
getline(cin, w);
w += “.”;
int j = -1;
for (int i = 0; i < Num; i++)
{
if (CE_Words[i]->Word == w)
{
j = i;
}
}
if (j == -1) {
cout << “无此词汇…” << endl;
system(“pause”);
cout << endl << endl;
cout << “是否重新修改…(y/n)” << endl;
char ch;
cin >> ch;
if (ch == ‘n’)
break;
else
system(“cls”);

		}
		else
		{
			cout << "原单词:" << CE_Words[j]->Word << endl;
			cout << "原词意:" << CE_Words[j]->Meaning << endl;
			cout << "原编号:" << CE_Words[j]->Type << endl;
			word *rd;
			cout << "输入修改后的词汇单词:" << endl;
			//cin.get();
			getline(cin, w);
			w += '.';
			cout << "输入修改后的词汇词意:" << endl;
			//cin.get();
			getline(cin, m);
			cout << "输入修改后的词汇编号:" << endl; 
			cin >> type;
			m += ';';
			rd = new word(w, m, type);
			CE_Words[j] = rd;
			cout << "修改成功!" << endl;
			system("pause");
			cout << "是否继续修改....(y/n)" << endl;
			char ch;
			cin >> ch;
			if (ch == 'n')
			{
				Save_Words();
				break;
			}
		}
	}
	else if (n_t == 0) {
		system("cls");
		return;
	}
}

}
//查找
void word::Que_Words()//查找
{
while (1)
{
cout << “1、按单词查找…” << endl;
cout << “2、按词意查找…” << endl;
cout << “0、返回…” << endl;
int number;
string wm;
cin >> number;
if (number == 0)
{
return;
}
if (number == 1)
{
cout << “输入你想查找的单词…” << endl;
cin.get();
getline(cin, wm);
wm += “.”;
int j = -1;
for (int i = 0; i < Num; i++)
{
if (CE_Words[i]->Word==wm)
{
j = i;
}
}
if (j == -1) {
cout << “无此词汇…” << endl;
system(“pause”);
system(“cls”);
cout << endl << endl;
cout << “是否继续查找(y/n)…” << endl;
char ch;
cin >> ch;
if (ch == ‘n’)
break;
else
{
//system(“cls”);
}

		}
		else
		{
			cout << "单词为:" << CE_Words[j]->Word << endl;
			cout << "词意为:" << CE_Words[j]->Meaning << endl;
			system("pause");
			//system("cls");
			cout << "是否继续查找(y/n)..." << endl;
			char ch;
			cin >> ch;
			if (ch == 'n')
				break;
			else
			{
				system("cls");
			}

		}
	}
	else
		if (number == 2)
		{
			cout << "输入你想查找的单词词意..." << endl;
			cin.get();
			getline(cin, wm);
			wm += ";";
			int j = -1;
			int k = 0;
			int a[1024] = { 0 };
			for (int i = 0; i < Num; i++)
			{
				j = CE_Words[i]->Meaning.find(wm);
				if (j!=-1&&wm!=";;")
				{
					a[k++] = i;
				}
			}
			if (k == 0) {
				cout << "无此词汇..." << endl;
				system("pause");
				cout << endl << endl;
				cout << "是否继续查找(y/n)..." << endl;
				char ch;
				cin >> ch;
				if (ch == 'n')
					break;
				else
				{
					system("cls");
				}


			}
			else
			{
				for (int i = 0; i < k; i++)
				{
					cout << "单词为:" << CE_Words[a[i]]->Word << endl;
					cout << "词意为:" << CE_Words[a[i]]->Meaning << endl;
				}
				system("pause");
			//	system("cls");
				cout << "是否继续查找(y/n)..." << endl;
				char ch;
				cin >> ch;
				if (ch == 'n')
					break;
			}
		}
		else
		{
			cout << "输入错误 ..." << endl;
			system("pause");
			system("cls");
		}
}

}
//显示
void word::Show_Words()//显示
{
for (int i = 0; i < Num; i++)
{
cout << “序号:” << i + 1 << endl;
cout << “单词:” << CE_Words[i]->Word << endl;
cout << “词意:” << CE_Words[i]->Meaning << endl;
cout << “编号:” << CE_Words[i]->Type << endl << endl;
}
}
//操作词汇
void word::Ope_Words()//操作设置
{
while (1)
{
Set_Show();
int t;
cin >> t;
switch (t)
{
case 1:
Add_Words();
system(“pause”);
system(“cls”);
break;
case 2:
Mod_Words();
system(“pause”);
system(“cls”);
break;
case 3:
Que_Words();
system(“pause”);
system(“cls”);
break;
case 4:
Del_Words();
system(“pause”);
system(“cls”);
break;
case 5:
Show_Words();
system(“pause”);
system(“cls”);
break;
case 0:
system(“cls”);
return;
default:
cout << “无此选项,请重新输入…” << endl;
system(“pause”);
system(“cls”);
break;
}
}
}

void word::Set_Show()//设置界面
{
cout << “\t\t------------------------” << endl;
cout << “\t\t| 设置 |” << endl;
cout << “\t\t------------------------” << endl;
cout << “\t\t| 1、添加词汇 |” << endl;
cout << “\t\t------------------------” << endl;
cout << “\t\t| 2、修改词汇 |” << endl;
cout << “\t\t------------------------” << endl;
cout << “\t\t| 3、查找词汇 |” << endl;
cout << “\t\t------------------------” << endl;
cout << “\t\t| 4、删除词汇 |” << endl;
cout << “\t\t------------------------” << endl;
cout << “\t\t| 5、显示词汇 |” << endl;
cout << “\t\t------------------------” << endl;
cout << “\t\t| 0、返回 |” << endl;
cout << “\t\t------------------------” << endl;
cout << “\t\t输入你的选择操作:” << endl << “\t\t”;
}

//第一次继续初始化
void word::Continue_Init()
{
fstream f;
f.open(FILENAME2, ios::in | ios::out);
if (!f.is_open())
{
cout << “文件打开失败…” << endl;
return;
}
// judge = true;
f >> grade;
f.close();
}
//初始化数量
void word::Init_Grade_Num()//数量
{
fstream f;
f.open(FILENAME1, ios::in | ios::out);
if (!f.is_open())
{
cout << “文件打开失败…” << endl;
return;
}
string w;
string m;
string a;
int k = 0;
while ( getline(f, w) && getline(f, m) && getline(f, a))
{
int s = atoi(a.c_str());
switch (grade)
{
case 1:
case 2:
case 3:
if (s == 1)
k++;
break;
case 4:
case 5:
case 6:
if (s == 2)
k++;
break;
case 7:
k++;
break;
}

}
Grade_Num = k;
f.close();

}
//初次初始化
void word::Init_Game(int index)//初始化
{
fstream f;
f.open(FILENAME1, ios::in | ios::out);
if (!f.is_open())
{
cout << “文件打开失败…” << endl;
return;
}
Init_Grade_Num();
if (Grade_Num == 0)
{
cout << “文件为空…” << endl;
return;
}
delete[] Grade_Words;
Grade_Words = new word*[Grade_Num];
string w;
string m;
string a;
int k = 0;
while (getline(f, w) && getline(f, m) && getline(f, a))
{
word *rd;
//string转int
int s = atoi(a.c_str());
if (indexs||index3) {
rd = new word(w, m, a);
Grade_Words[k] = rd;
k++;
}
}
f.close();
}
//随机词汇
void word::random(int a[])//随机函数
{

int k = rand() % Grade_Num;
a[0] = k;
for (int i = 1; i < object1; )
{
	int flag = 0;
	int k = rand() % Grade_Num;
	//去掉重复的数
	for (int j = 0; j < i; j++)
	{
		flag = 1;
		if (a[j] == k) {
			flag = 0;
			i--;
			break;
		}
	}
	if (flag) {
		a[i] = k;
	}
	i++;
}

}

void word::Show_Game()//显示
{
color(1);
cout << “\t等级:” << grade << endl;
switch (grade) {
case 1:
cout << “\t随机单词,填写词意(每次只能填一个)!” << endl;
cout << “\t正确率达到90%或以上晋级…” << endl << endl;
break;
case 2:
cout << “\t随机词意,填写单词(每次只能填一个)” << endl;
cout << “\t正确率达到90%或以上晋级…” << endl << endl;
break;
case 3:
cout << “\t随机单词或词意,填写单词或词意(每次只能填一个)” << endl;
cout << “\t正确率达到90%或以上晋级…” << endl << endl;
break;
case 4:
cout <<"\t随机词组,填写词意!(每次只能填一个)" << endl;
cout << “\t正确率达到90%或以上晋级…” << endl << endl;
break;
case 5:
cout << “\t随机词组词意,填写词组!(每次只能填一个)” << endl;
cout << “\t正确率达到90%或以上晋级…” << endl << endl;
break;
case 6:
cout << “\t随机词组或词意,填写词组或词意!(每次只能填一个)” << endl;
cout << “\t正确率达到90%或以上晋级…” << endl << endl;
break;
case 7:
cout << “\t所有词汇随机出现” << endl;
cout << “\t进行分数记录(一次答对得一分,否则减一分)” << endl << endl;
break;
}
color(6);
}

void word::Start_Game_Words(int a[])//单词
{
string wm;
random(a);
int i;
int flag = 1;
float corret = 0;
for (i = 0; i < object1; i++)
{
//背景音乐
mciSendString(L"open clock.mp3", NULL, 0, 0);
mciSendString(L"play clock.mp3", NULL, 0, 0);
bool hint = true;//判断是否需要提示
color(6);
Show_Game();
cout << “\n\n\t\t需要提示输入1(提示后视为回答错误)!” << endl;
cout << “\t\t单词:” << Grade_Words[a[i]]->Word << endl << “\t\t词意:”;
color(7);
getline(cin, wm);
wm += “;”;
if (wm == “1;”) {
hint = false;
cout << “\t\t词意:” << Grade_Words[a[i]]->Meaning << endl;
}
if (hint)
{
if (Grade_Words[a[i]]->Meaning.find(wm) != -1 && wm != “;;”&&wm != “;”)
{
corret += flag;
flag = 1;
color(2);
cout << “\t\t正确!” << endl;
_getch();
system(“cls”);
}
else
{
flag = 0;
i–;
color(4);
cout << “\n\n\t\t错误!请重新输入…\n” << endl;
_getch();
system(“cls”);
}
}
else
{
flag = 0;
i–;
_getch();
system(“cls”);
}
//关掉音乐
mciSendString(L"close clock.mp3", NULL, 0, 0);
}
if (float(corret / object1) > object2) {
mciSendString(L"open 掌声.mp3", NULL, 0, 0);
mciSendString(L"play 掌声.mp3", NULL, 0, 0);
grade++;
color(1);
float choose = (corret / object1) * 100;
cout << “\n\n\t\t正确率为:” << choose << “%” << endl;
cout << “\t\t等级加一…” << endl;
cout << “\t\t现在等级为:” << grade << “级” << endl << “\t\t”;
_getch();
//system(“cls”);
mciSendString(L"close 掌声.mp3", NULL, 0, 0);
}
else
{
mciSendString(L"open call.mp3", NULL, 0, 0);
mciSendString(L"play call.mp3", NULL, 0, 0);
color(3);
float choose = (corret/object1);
if (choose <= object3) {
cout << “\n\n\t\t正确率为:” << choose * 100 << “%” << endl;
cout << “\t\t等级减一:” << endl;
grade–;
if (grade < 1) {
grade = 1;
}
cout << “\t\t现在等级为:” << grade << “级” << endl << “\t\t”;
_getch();
}
else
{
cout << “\n\n\t\t正确率为:” << choose * 100 << “%” << endl;
cout << “\t\t未达到标准!(继续加油)” << endl;
cout << “\t\t请再接再厉!(等级不变)” << endl << “\t\t”;
//system(“pause>nul”);
_getch();
}
mciSendString(L"close call.mp3", NULL, 0, 0);
}
}

void word::Start_Game_Mean(int a[])//意思
{
string wm;
random(a);
int i;
int flag = 1;
float corret = 0;
for (i = 0; i < object1; i++)
{
mciSendString(L"open clock.mp3", NULL, 0, 0);
mciSendString(L"play clock.mp3", NULL, 0, 0);
color(6);
bool hint = true;
Show_Game();
cout << “\n\n\t\t需要提示输入1(提示后视为回答错误)!” << endl;
cout << “\t\t词意:” << Grade_Words[a[i]]->Meaning << endl<<"\t\t单词:";
color(7);
getline(cin, wm);
wm += “.”;
if (wm == “1.”) {
hint = false;
cout << “\t\t单词:” << Grade_Words[a[i]]->Word << endl;
}
if (hint)
{
if (wm == Grade_Words[a[i]]->Word) {
corret += flag;
flag = 1;
color(2);
cout << “\t\t正确!” << endl;
_getch();
system(“cls”);
}
else if (wm != Grade_Words[a[i]]->Word)
{
int st = 0;
for (; st < Grade_Num; st++) {
if (wm == Grade_Words[st]->Word) {

					corret += flag;
					flag = 1;
					color(2);
					cout << "\t\t正确!" << endl;
					_getch();
					system("cls");
					break;
				}
			}
			if (st == Grade_Num) {
				flag = 0;
				i--;
				color(4);
				cout << "\t\t错误!请重新输入...." << endl;
				_getch();
				system("cls");
			}
		}
	}
	else
	{
		i--;
		flag = 0;
		_getch();
		system("cls");
	}
	mciSendString(L"close clock.mp3", NULL, 0, 0);
}
if (float(corret / object1) > object2) {
	mciSendString(L"open 掌声.mp3", NULL, 0, 0);
	mciSendString(L"play 掌声.mp3", NULL, 0, 0);
	grade++;
	color(1);
	float choose = (corret / object1) * 100;
	cout << "\n\n\t\t正确率为:" << choose << "%" << endl;
	cout << "\t\t等级加一..." << endl;
	cout << "\t\t现在等级为:" << grade << "级" << endl << "\t\t";
	_getch();
	mciSendString(L"close 掌声.mp3", NULL, 0, 0);
}
else
{
	color(3);
	float choose = (corret / object1);
	mciSendString(L"open call.mp3", NULL, 0, 0);
	mciSendString(L"play call.mp3", NULL, 0, 0);
	if (choose <= object3) {
		cout << "\n\n\t\t正确率为:" << choose * 100 << "%" << endl;
		cout << "\t\t等级减一:" << endl;
		grade--;
		if (grade < 1) {
			grade = 1;
		}
		cout << "\t\t现在等级为:" << grade  << "级" << endl << "\t\t";
		_getch();
	}
	else
	{
		cout << "\n\n\t\t正确率为:" << choose * 100 << "%" << endl;
		cout << "\t\t未达到标准!(继续加油)" << endl;
		cout << "\t\t请再接再厉!(等级不变)" << endl << "\t\t";
		_getch();
	}
	mciSendString(L"close call.mp3", NULL, 0, 0);
}

}

void word::Start_Game()//开始学习
{

color(6);
judge = true;
cout << "\t\t初始等级为:1" << endl;
cout << "\t\t一级:随机单词,填写词意。" << endl;
cout << "\t\t正确率达到90%或以上晋级....." << endl;
cout << "\t\tNow,English Word Study .... " << endl << "\t\t";
grade = 1;
Grade_Words = new word*[2];
string wm;
cout << "\n\t\t现在是否开始答题...(输入n退出,其他继续)" << endl << "\t\t";
cin.get();//吸收"\n"
getline(cin, wm);
if (wm == "n") {
	system("cls");
	return;
}
else
{
	system("cls");
}
int i;
while (1)
{
	mciSendString(L"open auther.mp3", NULL, 0, 0);
	mciSendString(L"play auther.mp3", NULL, 0, 0);
	float corret = 0;//第一次正确的个数
	int flag = 1;
	if (grade == 1 ) {
		Init_Game(1);
	}
	else 
		if (grade == 4 ) {
		Init_Game(2);
	}
	else
		if(grade==7)
	{
		Init_Game(3);
	}
	int a[object1];
	random(a);
	switch (grade)
	{
	case 1:
	case 4:	
		Start_Game_Words(a);
		break;
	case 2:
	case 5:	
		Start_Game_Mean(a);
		break;
	case 3:
	case 6:
	case 7:	
		for ( i = 0; i < object1; i++)
		{
			mciSendString(L"open clock.mp3", NULL, 0, 0);
			mciSendString(L"play clock.mp3", NULL, 0, 0);
			color(6);
			Show_Game();
			int j = rand() % 2;
			if (j == 1)
			{
				cout << "\t\t单词:" << Grade_Words[a[i]]->Word << endl<<"\t\t词意:";
				color(7);
				getline(cin, wm);
				wm += ";";
				if (Grade_Words[a[i]]->Meaning.find(wm) != -1 && wm != ";;"&&wm != ";") {
				
					corret += flag;
					flag = 1;
					color(2);
					cout << "\t\t正确!" << endl;
					_getch();
					system("cls");						
				}
				else
				{
					flag = 0;
					i--;
					color(4);
					cout << "\t\t错误!请重新输入...." << endl;
					_getch();
					system("cls");
				}						
			}
			else
			{
				cout << "\t\t词意:" << Grade_Words[a[i]]->Meaning << endl << "\t\t单词:";
				color(7);
				getline(cin, wm);
				wm += ".";
				if (Grade_Words[a[i]]->Word==wm) {						
					corret += flag;
					flag = 1;
					color(2);
					cout << "\t\t正确!" << endl;
					_getch();
					system("cls");						
				}
				else if (wm != Grade_Words[a[i]]->Word)
				{
					int st = 0;
					for (; st < Grade_Num; st++) {
					
						if (wm == Grade_Words[st]->Word) {
							corret += flag;
							flag = 1;
							color(2);
							cout << "\t\t正确!" << endl;
							_getch();
							system("cls");							
							break;
						}
					}
					if (st == Grade_Num) {
						flag = 0;
						i--;
						color(4);
						cout << "\t\t错误!请重新输入...." << endl;
						_getch();
						system("cls");
					}
				}
			}
			mciSendString(L"close clock.mp3", NULL, 0, 0);
		}
		if (float(corret / object1) > object2 && grade<7) {
			mciSendString(L"open 掌声.mp3", NULL, 0, 0);
			mciSendString(L"play 掌声.mp3", NULL, 0, 0);
			grade++;
			color(1);
			float choose = (corret / object1) * 100;
			cout << "\t\t正确率为:" << choose << "%" << endl;
			cout << "\t\t等级加一..." << endl;
			cout << "\t\t现在等级为:" << grade << "级" << endl << "\t\t";
			_getch();
			system("cls");
			//关闭
			mciSendString(L"close 掌声.mp3", NULL, 0, 0);
		}
		else if(grade<7)
		{
			mciSendString(L"open call.mp3", NULL, 0, 0);
			mciSendString(L"play call.mp3", NULL, 0, 0);
			color(3);
			float choose = (corret / object1);
			if (choose <= object3) {
				cout << "\t\t正确率为:" << choose * 100<< "%" << endl;
				cout << "\t\t等级减一:" << endl;
				grade--;
				if (grade < 1) {
					grade = 1;
				}
				cout << "\t\t现在等级为:" << grade << "级" << endl << "\t\t";
				_getch();
			}
			else
			{
				cout << "\t\t正确率为:" << choose * 100<< "%" << endl;
				cout << "\t\t未达到标准!(继续加油)" << endl;
				cout << "\t\t请再接再厉!(等级不变)" << endl << "\t\t";
				_getch();
			}
			mciSendString(L"open call.mp3", NULL, 0, 0);
		}
		else
		{
			color(7);
			cout << "\n\n\t\t恭喜通关....." << endl << "\t\t";
			_getch();
		}
		break;
	}
	color(6);
	cout << "\n\n\t\t现在是否继续答题...(输入n退出,其他继续)" << endl << "\t\t";	
	getline(cin, wm);
	if (wm == "n") {
		cout << "\t\t是否进行保存...(y/n)" << endl << "\t\t";
		getline(cin, wm);
		if (wm == "y")
		{
			Save_Game();
			cout << "\t\t保存成功!" << endl;
			_getch();
		}
		system("cls");
		return;
	}
	else
	{
		system("cls");
	}
	mciSendString(L"close auther.mp3", NULL, 0, 0);
}

}

void word::Continue_Game()//继续学习
{
color(6);
if (!judge)
{
Continue_Init();
Grade_Words = new word*[2];
}
judge = true;
string wm;
cout << “\n\t\t现在等级为” << grade << “级” << endl;
cout << “\n\t\t现在是否继续答题…(输入n退出,其他继续)” << endl << “\t\t”;
cin.get();
getline(cin, wm);
if (wm == “n”) {
system(“cls”);
return;
}
else
{
system(“cls”);
}
int i;
if (grade>=1&&grade<=3) {
Init_Game(1);
}
else
if (grade >= 4 &&grade<=6) {
Init_Game(2);
}
else
if (grade >= 7)
{
Init_Game(3);
}
while (1)
{
float corret = 0;//第一次正确的个数
int flag = 1;
if (grade == 1) {
Init_Game(1);
}
else
if (grade == 4) {
Init_Game(2);
}
else
if (grade == 7)
{
Init_Game(3);
}
int a[object1];
random(a);
switch (grade)
{
case 1:
case 4:
Start_Game_Words(a);
break;
case 2:
case 5:
Start_Game_Mean(a);
break;
case 3:
case 6:
case 7:
for (i = 0; i < object1; i++)
{
color(6);
Show_Game();
int j = rand() % 2;
if (j == 1)
{
cout << “\t\t单词:” << Grade_Words[a[i]]->Word << endl << “\t\t词意:”;
color(7);
getline(cin, wm);
wm += “;”;
if (Grade_Words[a[i]]->Meaning.find(wm) != -1 && wm != “;;”&&wm != “;”) {
corret += flag;
flag = 1;
color(2);
cout << “\t\t正确!” << endl;
_getch();
system(“cls”);
}
else
{
flag = 0;
i–;
color(4);
cout << “\t\t错误!请重新输入…” << endl;
_getch();
system(“cls”);
}
}
else
{
cout << “\t\t词意:” << Grade_Words[a[i]]->Meaning << endl << “\t\t单词:”;
color(7);
getline(cin, wm);
wm += “.”;
if (Grade_Words[a[i]]->Word == wm) {
corret += flag;
flag = 1;
color(2);
cout << “\t\t正确!” << endl;
_getch();
system(“cls”);
}
else if (wm != Grade_Words[a[i]]->Word)
{
int st = 0;
for (; st < Grade_Num; st++) {
if (wm == Grade_Words[st]->Word) {
corret += flag;
flag = 1;
color(2);
cout << “\t\t正确!” << endl;
_getch();
system(“cls”);
break;
}
}
if (st == Grade_Num) {
flag = 0;
i–;
color(4);
cout << “\t\t错误!请重新输入…” << endl << “\t\t”;
_getch();
system(“cls”);
}

				}

			}
		}

		if (float(corret / object1) > object2 && grade<7) {
			grade++;
			color(1);
			float choose = (corret / object1) * 100;
			cout << "\t\t正确率为:" << choose << "%" << endl;
			cout << "\t\t等级加一..." << endl;
			cout << "\t\t现在等级为:" << grade << "级" << endl << "\t\t";
			//system("pause");
			_getch();
			system("cls");
			color(6);
		}
		else if (grade<7)
		{
			color(3);
			float choose = (corret / object1) * 100;
			cout << "\t\t正确率为:" << choose << "%" << endl;
			cout << "\t\t未达到标准!" << endl;
			cout << "\t\t请再接再厉!" << endl << "\t\t";
			//system("pause");
			_getch();
			system("cls");
			color(6);
		}
		else
		{
			color(7);
			cout << "\n\n\t\t恭喜通关....." << endl << "\t\t";
			//system("pause");
			_getch();
			color(6);
		}

		break;
	}
	cout << "\n\n\t\t现在是否继续答题...(输入n退出,其他继续)" << endl << "\t\t";
	getline(cin, wm);
	if (wm == "n") {
		cout << "\n\n\t\t是否进行保存...(y/n)" << endl;
		getline(cin, wm);
		if (wm == "y") {
			Save_Game();
			cout << "\t\t保存成功!" << endl;
			_getch();
		}
		system("cls");
		return;
	}
	else
	{
		system("cls");
	}
}

}

void word::Save_Game()//保存学习
{
fstream f;
f.open(FILENAME2, ios::in | ios::out);
if (!f.is_open())
{
cout << “文件打开失败…” << endl;
return;
}
f << grade;
f.close();
}

void word::Ope_Game()//操作
{
Menu_Game();
int t;
cin >> t;
switch (t)
{
case 1:
system(“cls”);
Start_Game();
break;
case 2:
system(“cls”);
Continue_Game();
break;
case 3:
system(“cls”);
return;
case 0:
system(“cls”);
cout << “\n\n\t\t欢迎下次使用…” << endl << “\t\t”;
system(“pause”);
exit(0);
break;
}
}

void word::Menu_Game()
{
cout << “\t\t------------------------” << endl;
cout << “\t\t|欢迎进入英语学习系统!|” << endl;
cout << “\t\t------------------------” << endl;
cout << “\t\t| 1、开始练习 |” << endl;
cout << “\t\t------------------------” << endl;
cout << “\t\t| 2、继续练习 |” << endl;
cout << “\t\t------------------------” << endl;
cout << “\t\t| 3、返回 |” << endl;
cout << “\t\t------------------------” << endl;
cout << “\t\t| 0、退出 |” << endl;
cout << “\t\t------------------------” << endl;
cout << “\t\t输入你的选择:” << endl << “\t\t”;
}

void word::Acc_Game()
{
cout << “\t\t----------------” << endl;
cout << “\t\t|1、管理员登录 |” << endl;
cout << “\t\t----------------” << endl;
cout << “\t\t|2、学生端学习 |” << endl;
cout << “\t\t----------------” << endl;
cout << “\t\t|3、使用说明 |” << endl;
cout << “\t\t----------------” << endl;
cout << “\t\t|0、退出系统 |” << endl;
cout << “\t\t----------------” << endl;
cout << “\n\t\t输入你的选择:” << endl<<"\t\t";
Acc_Init();
int t;
int flag = 0;
cin >> t;
if (t == 0) {
cout << “\n\n\t\t谢谢使用” << endl << “\t\t”;
_getch();
exit(0);
}
else if (t == 2) {
cout << “\n\n\t\t进入学习” << endl << “\t\t”;
_getch();
system(“cls”);
Ope_Game();
}
else
if (t == 1)
{
while (1)
{
if (!Acc_Flag)
{
if (!Judge_Pass)
{
cout << “\t\t请输入密码:” << endl;
if (Judge_Acc() != Password) {
Acc_Num–;
if (Acc_Num == 0) {
Acc_Flag = true;
}
cout << “\n\n\t\t密码或账号错误,是否重新输入(y/n)…” << endl << “\t\t”;
char ch;
cin >> ch;
if (ch == ‘n’) {
system(“cls”);
return;
}
}
else
{
cout << “\n\n\t\t登录成功!” << endl << “\t\t”;
Judge_Pass = true;
_getch();
}
}
else
{
system(“cls”);
int t;
cout << “\t\t------------------------” << endl;
cout << “\t\t|欢迎进入管理员操作界面|” << endl;
cout << “\t\t------------------------” << endl;
cout << “\t\t| 1、词汇操作 |” << endl;
cout << “\t\t------------------------” << endl;
cout << “\t\t| 2、修改密码 |” << endl;
cout << “\t\t------------------------” << endl;
cout << “\t\t| 3、返回 |” << endl;
cout << “\t\t------------------------” << endl;
cout << “\t\t| 0、退出 |” << endl;
cout << “\t\t------------------------” << endl;
cout << “\n\t\t输入你的选择:” << endl << “\t\t”;
cin >> t;
switch (t)
{
case 1:
system(“cls”);
Ope_Words();
break;
case 2:
system(“cls”);
Mod_Acc();
break;
case 3:
system(“cls”);
return;
break;
case 0:
system(“cls”);
cout << “\n\n\t\t谢谢使用” << endl << “\t\t”;
_getch();
exit(0);
return;
}
}
}
else
{
cout << “\n\n\t\t三次输入错误,进行账号锁定,无法再次登录…” << endl<<"\t\t";
_getch();
system(“cls”);
return;
}
}
}
else
if (t == 3) {
system(“cls”);
Exp_Game();
_getch();
system(“cls”);
}
}

void word::Acc_Save()//保存
{
fstream f;
f.open(FILENAME3, ios::out);
if (!f) {
cout << “文件不存在!” << endl;
return;
}
f << Password;
f.close();
}

void word::Acc_Init()//初始化
{
fstream f;
f.open(FILENAME3, ios::in);
if (!f) {
cout << “文件不存在!” << endl;
return;
}
f >> Password;
f.close();
}

void word::Mod_Acc()//修改密码
{
cout << “\n\n\t\t输入新密码:” << endl << “\t\t”;
string str;
cin >> str;
Password = str;
Acc_Save();
cout << “\n\n\t\t修改成功!” << endl << “\t\t”;
_getch();
system(“cls”);
}

string word::Judge_Acc()
{
char buf[1024];
int index = 0;
string str;
cout << “\t\t”;
while (1)
{
char ch;
ch = getch();
if (ch == 8) {
if (index > 0)
{
index–;
cout << char(8) << " " << char(8);
}

	}
	else if (ch == '\r')
	{
		buf[index] = '\0';
		cout << endl;
		break;
	}
	else
	{
		cout << "*";
		buf[index++] = ch;
	}
}
for (int i = 0; i < index; i++) {
	str += buf[i];
}
return str;

}

void word::Exp_Game()//使用说明
{
cout << “\t\t 欢迎进入使用说明界面” << endl<<endl;
cout << "\t\t 管理员操作说明 " << endl;
cout << “\t\t(1)、添加词汇时,应注意输入词汇的正确。” << endl;
cout << “\t\t(2)、添加单个单词时,词汇意思由中文分号隔开末尾不能有其他字符 如:老板;雇主” << endl;
cout << “\t\t(3)、添加短语时,注意中间空格只能有一个末尾不能有其他字符 如: ask to do” << endl<<endl;
cout << "\t\t 答题操作说明 " << endl;
cout << “\t\t(1)、回答中文时只允许输入一个中文意思且末尾不允许有任何字符 如: word. 单词” << endl;
cout << “\t\t(2)、回答单词时只允许输入一个单词且末尾不允许有任何字符 如: 单词; word” << endl;
cout << “\t\t(3)、回答短语时注意中间空格且末尾不允许有任何字符 如: 要求做某事; ask to do sth” << endl;
}

3、main.cpp//主函数部分

#include"word.h"
//声音的头文件
#include <mmsystem.h>
#pragma comment(lib,“winmm.lib”)
int main()
{
system(“color 6”);
system(“title 英语学习”);
//播放
mciSendString(L"open auther.mp3", NULL, 0, 0);
mciSendString(L"play auther.mp3", NULL, 0, 0);
srand(time(NULL));
word CE;
while (1)
{
CE.Acc_Game();
}
return 0;
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!