一个开发的记单词小程序

2023-11-02

效果演示

输入1 敲下Enter(回车键)后,进入第一个功能英译汉,给出Hello 用户输入中文意思 你好 敲下回车确定.进入下一个单词

在这里插入图片描述

功能1测试

在这里插入图片描述
在这里插入图片描述

功能简介

/*
(1)分别编辑中文和英文词库,可用两个数组存储;
(2)选择背诵的词库类型;
(3)显示中文时要求学生输入英文意思,并判断词义是否正确,如正确给以鼓励,如不正确给出提示并要求用户重新输入;显示英文时要求学生输入中文意思,并进行判断;
(4)统计并输出成绩。

*/

/*
1、选择英译汉
2、选择汉译英
3、选择添加单词
4、选择修改单词

*/

代码实现

#include<stdio.h>
#include<iostream>
#include<Windows.h>
#include<stdlib.h>
#include<string>
//#include<graphics.h>
#include<conio.h>

int allcount = 0;
#define SIZE 40

//准备闯关胜利图片

using namespace std;
struct word {

	char Chinese[20];
	char English[20];

};
void middledisplay() {

	int Count;
	int leftSpace;
	int length;
	int max = 0;

	string menu[] = {
		"----- 欢迎来到小聂带你学英语-----!",
		"               ",
		"               ",
		"1、选择英译汉",
		"2、选择汉译英",
		"3、选择增加词汇",
		"4、选择已经会了的词汇删除",
		"5、选择替换单词",
		"6、退出"

	};
	Count = sizeof(menu) / sizeof(menu[0]);

	for (int i = 0; i < Count; i++) {
		if (max < menu[i].length()) {
			max = menu[i].length();

		}
	}
	leftSpace = (80 - max) / 2;


	for (int j = 0; j < Count; j++) {
		for (int i = 0; i < leftSpace; i++) {
			cout << " ";

		}
		cout << menu[j] << endl;
	}

}

//欢迎界面
void Welcome() {
	system("mode con cols=80 lines=25 ");

	middledisplay();

};
//用户选择1,给出英文说出它的中文
void chioce1(struct word Size[20]) {
	int score = 0;
	system("cls");
	int i = 0;
	int k = 0;

	char ch[20];



	while (i < allcount) {
		cout << "请输入第" << i + 1 << "个单词的中文意思:" << Size[i].English << endl;
		scanf_s("%s", &ch, sizeof(ch));


		if (!strcmp(ch, Size[i].Chinese)) {

			cout << "第一次就答对了不错哦!" << endl;
			i++;
			score += 5;
			Sleep(500);
			system("cls");

		}
		else {
			while (k < 3) {
				k++;
				cout << "你错了,请重新输入该单词的中文意思:" << Size[i].English << endl;
				scanf_s("%s", &ch, sizeof(ch));


				if (!strcmp(ch, Size[i].Chinese)) {
					cout << "经过第" << k + 1 << "次你终于答对了" << endl;
					score += 3;
					i++;
					Sleep(500);
					system("cls");
					break;
				}
				else if (k == 2) {
					k++;
					i++;
					cout << "对于这个单词你无可救药了,谈下一个单词" << endl;
					Sleep(500);
					system("cls");
					break;
				}
			}
			k = 0;


		}


	}
	if (100 * score / allcount >= 60) {

		system("cls");




	}
	system("pause");

}
//给出中文说英文意思
void chioce2(struct word Size[20]) {

	int score = 0;
	system("cls");
	int i = 0;
	int k = 0;

	char ch[20];



	while (i < allcount) {
		cout << "请输入第" << i + 1 << "个单词的中文意思:" << Size[i].Chinese << endl;
		scanf_s("%s", &ch, sizeof(ch));


		if (!strcmp(ch, Size[i].English)) {
			score += 5;
			cout << "第一次就答对了不错哦!" << endl;
			i++;
			Sleep(500);
			system("cls");

		}
		else {
			while (k < 3) {
				k++;
				cout << "你错了,请重新输入该单词的中文意思:" << Size[i].Chinese << endl;
				scanf_s("%s", &ch, sizeof(ch));


				if (!strcmp(ch, Size[i].English)) {
					score += 3;
					cout << "经过第" << k + 1 << "次你终于答对了" << endl;
					i++;
					Sleep(500);
					system("cls");
					break;
				}
				else if (k == 2) {
					k++;
					i++;
					cout << "对于这个单词你无可救药了,谈下一个单词" << endl;
					Sleep(500);
					system("cls");
					break;
				}
			}
			k = 0;


		}


	}
	if (100 * score / allcount >= 60) {
		system("cls");


	}
	system("pause");

}
//用户添加单词模块
void addword(struct word size[], int count) {
	int Count;
	char eng[20];
	char chi[20];
	while (1) {
		cout << "请输入您要添加的单词个数:" << endl;
		cin >> Count;
		if (Count <= 96) {
			break;
		}
		else {
			cout << "输入错误,您输入的数字必须小于96,请重输入单词的个数" << endl;
			Sleep(1000);
			system("cls");

		}

	}
	for (int i = 0; i < Count; i++) {

		Sleep(100);
		system("cls");
		cout << "请输入该单词:" << endl;
		cin >> eng;
		cout << "请输入该单词的中文意思:" << endl;
		cin >> chi;

		strcpy_s(size[count + i].Chinese, 20, chi);
		strcpy_s(size[count + i].English, 20, eng);


	}
	allcount = count + Count;

}
/*1、让用户输入要添加的单词个数
·2、然后让用户输入单词的拥吻和中文

*/
//替换单词
void change(struct word size[], int count) {
	char eng[20];
	char chi[20];

	int x;

	//给用户预览单词
	for (int i = 0; i < allcount - 1; i = i + 6) {
		cout << i + 1 << ":" << size[i].Chinese << " " << size[i].English << " ";
		cout << i + 2 << ":" << size[i + 1].Chinese << " " << size[i + 1].English << " ";
		cout << i + 3 << ":" << size[i + 2].Chinese << " " << size[i + 2].English << " ";
		cout << i + 4 << ":" << size[i + 3].Chinese << " " << size[i + 3].English << " ";
		cout << i + 5 << ":" << size[i + 4].Chinese << " " << size[i + 4].English << " ";
		cout << i + 6 << ":" << size[i + 5].Chinese << " " << size[i + 5].English << " ";

		cout << endl;

	}

	while (1) {
		cout << "请输入您要替换的单词的个数:" << endl;
		cin >> x;
		if (x <= allcount) {
			break;
		}
		else {
			cout << "输入的个数应该小于等于" << allcount << "个" << endl << "请重新输入" << endl;
		}


	}

	for (int i = 0; i < x; i++) {
		int which;
		char tmpeng[20];
		char tmpchi[20];

		cout << "请输入您要修改的是哪一个" << endl;
		cin >> which;

		//输入合法性检查
		while (1) {
			if (which > allcount) {
				cout << "无效输入,请重新输入" << endl;
			}
			else {
				break;

			}
		}

		cout << "请输入修改中文意思:" << endl;
		cin >> tmpchi;
		cout << "请输入要修改的英文意思:" << endl;
		cin >> tmpeng;
		strcpy_s(size[which - 1].Chinese, 20, tmpchi);
		strcpy_s(size[which - 1].English, 20, tmpeng);


	}
	system("cls");

	for (int i = 0; i < allcount; i = i + 6) {

		cout << i + 1 << ":" << size[i].Chinese << " " << size[i].English << " ";
		cout << i + 2 << ":" << size[i + 1].Chinese << " " << size[i + 1].English << " ";
		cout << i + 3 << ":" << size[i + 2].Chinese << " " << size[i + 2].English << " ";
		cout << i + 4 << ":" << size[i + 3].Chinese << " " << size[i + 3].English << " ";
		cout << i + 5 << ":" << size[i + 4].Chinese << " " << size[i + 4].English << " ";
		cout << i + 6 << ":" << size[i + 5].Chinese << " " << size[i + 5].English << " ";
		cout << endl;

	}

}
//删除单词
void deleted(struct word size[], int count) {
	system("cls");
	int x;
	int inttmp = allcount;
	int index;

	char tmp[20] = { '\0' };


	//让用户预览单词
	for (int i = 0; i < allcount - 1; i = i + 6) {
		cout << i + 1 << ":" << size[i].Chinese << " " << size[i].English << " ";
		cout << i + 2 << ":" << size[i + 1].Chinese << " " << size[i + 1].English << " ";
		cout << i + 3 << ":" << size[i + 2].Chinese << " " << size[i + 2].English << " ";
		cout << i + 4 << ":" << size[i + 3].Chinese << " " << size[i + 3].English << " ";
		cout << i + 5 << ":" << size[i + 4].Chinese << " " << size[i + 4].English << " ";
		cout << i + 6 << ":" << size[i + 5].Chinese << " " << size[i + 5].English << " ";

		cout << endl;

	}

	while (1) {
		cout << "请输入你要删除的单词的个数:" << endl;
		cin >> x;

		if (x > allcount || x <= 0) {
			cout << "输入无效请重新输入:" << endl;

		}
		else {
			break;
		}

	}
	inttmp = allcount;

	for (int i = 0; i < x; i++) {
		int which;

		cout << "请输入你要删除哪一个单词:" << endl;

		cin >> which;

		which = which - (inttmp - allcount);
		//which -= 1;

		//合法性检查
		cout << inttmp << endl;
		while (1) {
			if (which > allcount || which < 1) {
				cout << "输入无效请重新输入:" << endl;
				cin >> which;
				which = which - (inttmp - allcount);

				//which -= 1;
			}
			else {
				break;
			}

		}


		//把第which个后的单词和但与意思往前推进一个,并把第which个的去掉,循环次数为allcount-which
		index = allcount - which;
		if (index == 0) {
			strcpy_s(size[allcount - 1].Chinese, 20, tmp);
			strcpy_s(size[allcount - 1].English, 20, tmp);
			allcount--;
		}
		else {
			for (int i = 0; i < index; i++) {
				strcpy_s(size[which - 1].Chinese, 20, size[which].Chinese);
				strcpy_s(size[which - 1].English, 20, size[which].English);
				which++;

			}
			strcpy_s(size[allcount - 1].Chinese, 20, tmp);
			strcpy_s(size[allcount - 1].English, 20, tmp);

			allcount--;

		}

	}
	system("cls");
	for (int i = 0; i < allcount - 1; i = i + 6) {
		cout << i + 1 << ":" << size[i].Chinese << " " << size[i].English << " ";
		cout << i + 2 << ":" << size[i + 1].Chinese << " " << size[i + 1].English << " ";
		cout << i + 3 << ":" << size[i + 2].Chinese << " " << size[i + 2].English << " ";
		cout << i + 4 << ":" << size[i + 3].Chinese << " " << size[i + 3].English << " ";
		cout << i + 5 << ":" << size[i + 4].Chinese << " " << size[i + 4].English << " ";
		cout << i + 6 << ":" << size[i + 5].Chinese << " " << size[i + 5].English << " ";

		cout << endl;

	}


}

//菜单选择模块
int menuchioce() {

	Welcome();
	int n = 0;
	cout << "请用户选择功能项:" << endl;
	cin >> n;

	while (1) {

		if (n > 6) {
			cout << "输入无效,请重输入" << endl;
			cin >> n;
		}
		else {
			break;

		}

	}

	return n;
}



int main(void) {



	//定义结构体数组并初始化
	int count;
	struct word  Size[100] = { { "你好", "hello" }, { "随机", "rank" }, { "n狼人", "wolf" }, { "中国", "china" } };


	//strcpy_s(Size[1].Chinese,20,"你好");
	count = 4;
	allcount = count;
	//Welcome();
	//addword(Size, count);
	//cout << Size[4].Chinese<< Size[4].English << endl;
	//change(Size, allcount);
	//deleted(Size, allcount);

	while (1) {
		int num;

		num = menuchioce();

		switch (num)
		{

		case 1:
			chioce1(Size);
			break;
		case 2:
			chioce2(Size);
			break;
		case 3:
			addword(Size, allcount);
			break;
		case 4:
			deleted(Size, allcount);
			break;
		case 5:
			change(Size, allcount);

		case 6:
			return 0;
		default:
			cout << "输入错误请重输:" << endl;
			break;
		}




	}

	system("pause");
	return 0;

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一个开发的记单词小程序 的相关文章

  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • 将数组向左或向右旋转一定数量的位置,复杂度为 o(n)

    我想编写一个程序 根据用户的输入 正 gt 负 include
  • 未解决的包含:“cocos2d.h” - Cocos2dx

    当我在 Eclipse 中导入 cocos2dx android 项目时 我的头文件上收到此警告 Unresolved inclusion cocos2d h 为什么是这样 它实际上困扰着我 该项目可以正确编译并运行 但我希望这种情况消失
  • linux perf:如何解释和查找热点

    我尝试了linux perf https perf wiki kernel org index php Main Page今天很实用 但在解释其结果时遇到了困难 我习惯了 valgrind 的 callgrind 这当然是与基于采样的 pe
  • 如何忽略“有符号和无符号整数表达式之间的比较”?

    谁能告诉我必须使用哪个标志才能使 gcc 忽略 有符号和无符号整数表达式之间的比较 警告消息 gcc Wno sign compare 但你确实应该修复它警告你的比较
  • Newtonsoft JSON PreserveReferences处理自定义等于用法

    我目前在使用 Newtonsoft Json 时遇到一些问题 我想要的很简单 将要序列化的对象与所有属性和子属性进行比较以确保相等 我现在尝试创建自己的 EqualityComparer 但它仅与父对象的属性进行比较 另外 我尝试编写自己的
  • 当 contains() 工作正常时,xpath 函数ends-with() 工作时出现问题

    我正在尝试获取具有以特定 id 结尾的属性的标签 like span 我想获取 id 以 国家 地区 结尾的跨度我尝试以下xpath span ends with id Country 但我得到以下异常 需要命名空间管理器或 XsltCon
  • C#:如何防止主窗体过早显示

    在我的 main 方法中 我像往常一样启动主窗体 Application EnableVisualStyles Application SetCompatibleTextRenderingDefault false Application
  • C 预处理器库

    我的任务是开发源分析工具C程序 并且我需要在分析本身之前预处理代码 我想知道什么是最好的图书馆 我需要一些重量轻 便于携带的东西 与其推出自己的 为什么不使用cpp这是的一部分gcc suite http gcc gnu org onlin
  • Qt moc 在头文件中实现?

    是否可以告诉 Qt MOC 我想声明该类并在单个文件中实现它 而不是将它们拆分为 h 和 cpp 文件 如果要在 cpp 文件中声明并实现 QObject 子类 则必须手动包含 moc 文件 例如 文件main cpp struct Sub
  • Web API - 访问 DbContext 类中的 HttpContext

    在我的 C Web API 应用程序中 我添加了CreatedDate and CreatedBy所有表中的列 现在 每当在任何表中添加新记录时 我想填充这些列 为此目的我已经覆盖SaveChanges and SaveChangesAsy
  • 使用 System.Text.Json 即时格式化 JSON 流

    我有一个未缩进的 Json 字符串 例如 hash 123 id 456 我想缩进字符串并将其序列化为 JSON 文件 天真地 我可以使用缩进字符串Newtonsoft如下 using Newtonsoft Json Linq JToken
  • 当操作繁忙时,表单不执行任何操作(冻结)

    我有一个使用 C 的 WinForms 应用程序 我尝试从文件中读取一些数据并将其插入数据表中 当此操作很忙时 我的表单冻结并且无法移动它 有谁知道我该如何解决这个问题 这可能是因为您在 UI 线程上执行了操作 将文件和数据库操作移至另一个
  • 将 xml 反序列化为类,list<> 出现问题

    我有以下 XML
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • 控制到达非 void 函数末尾 -wreturn-type

    这是查找四个数字中的最大值的代码 include
  • WCF:将随机数添加到 UsernameToken

    我正在尝试连接到用 Java 编写的 Web 服务 但有些东西我无法弄清楚 使用 WCF 和 customBinding 几乎一切似乎都很好 除了 SOAP 消息的一部分 因为它缺少 Nonce 和 Created 部分节点 显然我错过了一
  • Validation.ErrorTemplate 的 Wpf 动态资源查找

    在我的 App xaml 中 我定义了一个资源Validation ErrorTemplate 这取决于动态BorderBrush资源 我打算定义独特的BorderBrush在我拥有的每个窗口以及窗口内的不同块内
  • 限制C#中的并行线程数

    我正在编写一个 C 程序来生成并通过 FTP 上传 50 万个文件 我想并行处理4个文件 因为机器有4个核心 文件生成需要更长的时间 是否可以将以下 Powershell 示例转换为 C 或者是否有更好的框架 例如 C 中的 Actor 框
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我

随机推荐

  • Android开机流程(一)

    参考文章 Android系统开篇 一 概述 简单梳理下Andorid启动流程 一般操作系统启动流程如下图 Android系统启动流程概览 system server服务启动流程 启动过程 Loader gt Kernel gt Native
  • JSP数据交互(一)---内置对象》request(乱码解决)理解原理解决乱码问题

    Jsp内置对象之out JSp内置对象是Web容器创建的一组对象 没有进行声明创建但却可以使用out对象 不经常使用的内置对象 pageContext 内置对象的集大成者 config 指定Jsp页面初始配置的 Servlet page 当
  • C语言-----标识符、关键字、常量、变量

    这篇文章主要对C语言的标识符 关键字 常量 变量的一些细致知识点进行详细的讲解 比如 1 标识符的命名规范 也就是常量 变量 函数名的命名规则进行规范的讲解 2 C语言的关键字列表 3 常量的定义及其分类 4 对全局变量和局部变量的细节知识
  • 带你掌握Vue3新宠——快速Diff算法

    前言 我们都知道Vue 2中用的diff算法是双端Diff 而Vue 3的其中一个特性就是把底层的diff算法改成了快速Diff 与字面意思一样 快速diff是目前已知的最快的diff算法 本文将带大家解剖一下快速diff的原理 预处理 在
  • 常用服务器命令

    ssh 用户名 服务器地址 密码 nvidia smi查看当前显卡状态11 top 用户使用进程 Q 推出top CUDA VISIBLE DEVICESE 2 3 nohup python u test py gt test log 2
  • notepad++ json 排版插件 NPPJSONViewer dll

    将下载的32位或者64位插件dll文件拷贝到notepad 安装目录Notepad plugins 下面 例如我的目录 C Program Files Notepad plugins 拷贝后 或者在此路径下新建一个文件夹 重启notepad
  • cart回归树备忘录

    Cart回归树相关 决策树回顾 Cart树 分类树 回归树 最小二乘回归树 决策树回顾 1 决策树进化 ID3 C4 5 Cart 提问 异同点 2 决策树节点分裂评估准则 分类 信息增益 信息增益比率 gini系数 回归 MSE 提问 优
  • Python3,掌握这4个自动化脚本,让工作效率提升200%。

    4个自动化脚本 1 引言 2 自动发送多封邮件 2 1 模块介绍 2 2 代码实战 3 自动桌面提示 3 1 模块介绍 3 2 代码实战 4 自动生成素描草图 4 1 模块介绍 4 2 代码实战 5 自动化阅读网页新闻 5 1 模块介绍 5
  • kafka在Linux上的安装 运行,Linux下Kafka单机安装配置

    说明 操作系统 CentOS 6 x 64位 Kafka版本 kafka 2 11 0 8 2 1 实现目的 单机安装配置kafka 具体操作 一 关闭SELINUX 开启防火墙9092端口 1 关闭SELINUX vi etc selin
  • 8086汇编语言:标志寄存器的各个标志位的详细介绍

    一 基本介绍 CPU的内部的寄存器中 有一类特殊的寄存器 对于不同的处理机 其个数和结构都可能不同 它具有以下三种作用 这种特殊的寄存器在8086CPU中 被称为标志寄存器flag 8086CPU的标志寄存器有16位 其中存储的信息通常又被
  • 电路中VCC VDD VSS VEE GND的含义

    在电路中 芯片引脚经常会出现VCC VDD VSS VEE和GND这些标示 其中VCC一般表示通用芯片的电源引脚 比如一些模拟运放的正电源引脚 74系列数字芯片的电源引脚 VCC一般接相应的正电源电压 VDD一般表示数字芯片的电源引脚 如果
  • 手写Promise

    Promise是JS进行异步操作的重要API 也是开发基本上绕不开的技术 所以很有必要对其进行深入的了解 本文我们就 一步步手动实现Promise的相关功能 Promise属性和构造函数 原生功能 Promise对象的属性 验证原生Prom
  • python 工具变量回归_工具变量多重高维固定效应ivreghdfe

    Stable versionTo install reghdfe open Stata and run ssc install reghdfeNote that reghdfe requires at least Stata 11 2 an
  • win10启动项_win10系统开机启动项的设置教程

    小编给大家详解win10系统开机启动项的设置教程 使用win10系统过程中 有时会遇到启动项过多影响开机速度的问题 为此事困扰的用户 可参照以下的方法进行开机启动项的设置 win10系统的开机启动项如果过多的话 就会影响电脑的开机速度 其实
  • 计算机专业毕业设计一

    概述 从一个医学生转行成为一名程序员 对于我来说 是一个超前的跨越 好奇的朋友会问了 医学这么吃香的行业 怎么转行做码农呢 这个道理很简单 就是想象和显示差距太大了 距离梦想的专业差了点距离 请允许我去小黑屋哭上半个小时 想当年 我意气风发
  • JSP与Servlet之间的值传递种种

    这几天搞那个网上书店的过程中对JSP河Servlet有有了很多的认识 恩 下面是我遇到的问题解决了以后总结了一下 希望对大家有用吧 JSP与 servlet之间的传值有两种情况 JSP gt servlet servlet gt JSP 通
  • HTTPSConnectionPool(host='xxxxx', port=443): Max retries exceeded with url:xxxxxxxx (Caused by Ne...

    requests exceptions ConnectionError HTTPSConnectionPool host baike baidu com port 443 Max retries exceeded with url http
  • 提升mysql服务器性能(分库、分片与监控)

    节点一的建立 节点2 3 也要建立
  • MySQL学习5:事务、存储引擎

    事务 简介 事务是一组数据库操作的执行单元 它要么完全执行 要么完全不执行 事务是确保数据库中的数据一致性和完整性的重要机制之一 事务具有以下四个特性 称为ACID特性 原子性 Atomicity 事务作为一个整体被执行 要么全部操作成功
  • 一个开发的记单词小程序

    这里写目录标题 效果演示 功能1测试 功能简介 代码实现 效果演示 输入1 敲下Enter 回车键 后 进入第一个功能英译汉 给出Hello 用户输入中文意思 你好 敲下回车确定 进入下一个单词 功能1测试 功能简介 1 分别编辑中文和英文