首页 > 编程语言 >C++小助手1.0.1

C++小助手1.0.1

时间:2024-08-30 18:23:09浏览次数:6  
标签:case 1.0 num2 cin C++ break 助手 time ccc

注:

只能在C++6.7.5运行

小助手代码:

#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>

using namespace std;

// 显示带有动画效果的文本
void ccc(string s) {
	for (char c : s) {
		cout << c;
		Sleep(50);
	}
	cout << endl;
}

// 加密字符串(简单的移位加密)
string encrypt(string str, int shift = 4) {
	for (char &c : str) {
		c += shift;
	}
	return str;
}

// 解密字符串
string decrypt(string str, int shift = 4) {
	for (char &c : str) {
		c -= shift;
	}
	return str;
}
// 保存用户名和密码到文件
void saveUser(const string& username, const string& password) {
	ofstream file("users.txt", ios::app);
	file << username << " " << encrypt(password) << endl;
	file.close();
}

// 检查用户名和密码是否存在并正确
bool authenticateUser(const string& username, const string& password) {
	ifstream file("users.txt");
	string savedUsername, savedPassword;
	while (file >> savedUsername >> savedPassword) {
		if (savedUsername == username && savedPassword == encrypt(password)) {
			return true;
		}
	}
	return false;
}

// 注册新用户
void registerUser() {
	string username, password;
	ccc("请输入要注册的用户名:");
	cin >> username;
	ccc("请输入要注册的密码:");
	cin >> password;
	saveUser(username, password);
	ccc("注册成功!");
	Sleep(2000);
}

// 显示菜单
void showMenu() {
	ccc("1. 打开网站");
	ccc("2. 北京时间");
	ccc("3. 简单计算器");
	ccc("4. 记事本");
	ccc("5. 温度转换");
	ccc("6. U盘");
	ccc("7. 退出");
}

// 处理打开网站功能
void openWebsite() {
	ccc("输入网站名:");
	string s;
	cin >> s;
	map<string, string> websites = {
		{"YLCZ", "https://ylcz.top/"},
		{"百度", "https://www.baidu.com/"},
		{"CSDN", "https://www.csdn.net/"},
		{"洛谷", "https://www.luogu.com/"},
		{"上海月赛", "https://iai.sh.cn/"},
		{"CHATGPT", "http://ai.qujiami.cn/"}
	};

	if (websites.count(s)) {
		system(("start " + websites[s]).c_str());
	} else {
		ccc("啊哦,暂时没有这个网站呢TAT");
	}
}
// 处理时间显示功能
void showTime() {
	SYSTEMTIME time;
	while (true) {
		GetLocalTime(&time);
		printf("%04d/%02d/%02d %02d:%02d:%02d\n", time.wYear, time.wMonth, time.wDay, time.wHour, time.wMinute, time.wSecond);
		Sleep(1000);
		system("cls");
	}
}

// 处理简单计算器功能
void calculator() {
	ccc("简单计算器:");
	double num1, num2;
	char op;
	ccc("请输入计算 (如: 1 + 1): ");
	cin >> num1 >> op >> num2;

	double result;
	switch (op) {
		case '+':
			result = num1 + num2;
			break;
		case '-':
			result = num1 - num2;
			break;
		case '*':
			result = num1 * num2;
			break;
		case '/':
			if (num2 != 0)
				result = num1 / num2;
			else {
				ccc("除数不能为零!");
				return;
			}
			break;
		default:
			ccc("无效的操作符!");
			return;
	}
	cout << "结果是: " << result << endl;
	Sleep(2000);
}

// 处理记事本功能
void notepad() {
	ccc("记事本功能:");
	ccc("请输入内容,输入 'exit' 保存并退出:");
	string line;
	ofstream file("notepad.txt", ios::app);

	while (true) {
		getline(cin, line);
		if (line == "exit")
			break;
		file << line << endl;
	}
	file.close();
	ccc("内容已保存到 notepad.txt");
	Sleep(2000);
}

//打开U盘
void openUplate() {
	system("start J:\\");
}
// 处理温度转换功能
void temperatureConverter() {
	ccc("温度转换 (摄氏度<->华氏度):");
	ccc("请输入温度值和单位(C/F),例如 32 C 或 100 F:");
	double temp;
	char unit;
	cin >> temp >> unit;

	if (unit == 'C' || unit == 'c') {
		double f = temp * 9 / 5 + 32;
		cout << temp << " C = " << f << " F" << endl;
	} else if (unit == 'F' || unit == 'f') {
		double c = (temp - 32) * 5 / 9;
		cout << temp << " F = " << c << " C" << endl;
	} else {
		ccc("无效的温度单位!");
	}
	Sleep(2000);
}
// 主函数
int main() {
	int a;
	ccc("Welcome!");
	ccc("By XuJunRui");
	Sleep(3000);

	string name, password, choice;

	while (true) {
		system("cls");
		cout << "_________________________" << endl;
		cout << "|                       |" << endl;
		cout << "|                       |" << endl;
		cout << "|       登录/注册       |" << endl;
		cout << "|                       |" << endl;
		cout << "|_______________________|" << endl;
		ccc("1. 登录");
		ccc("2. 注册");
		cin >> choice;

		if (choice == "1") {
			ccc("请输入用户名:");
			cin >> name;
			ccc("请输入密码:");
			cin >> password;

			if (authenticateUser(name, password)) {
				ccc("登录成功!");
				Sleep(1000);
				system("cls");

				while (true) {
					showMenu();
					cin >> a;
					system("cls");

					switch (a) {
						case 1:
							openWebsite();
							break;
						case 2:
							showTime();
							break;
						case 3:
							calculator();
							break;
						case 4:
							notepad();
							break;
						case 5:
							temperatureConverter();
							break;
						case 6:
							openUplate();
							break;
						case 7:
							ccc("再见!");
							return 0;
						default:
							ccc("无效选项,请重新选择。");
							break;
					}
					system("cls");
				}
			} else {
				ccc("用户名或密码错误!");
				Sleep(2000);
			}
		} else if (choice == "2") {
			registerUser();
		} else {
			ccc("无效选项,请重新选择。");
			Sleep(2000);
		}
	}

	return 0;
}

更新日志

1.0.0   小助手出现了

1.0.1   新增"打开U盘"功能

标签:case,1.0,num2,cin,C++,break,助手,time,ccc
From: https://blog.csdn.net/xujunruihi/article/details/141724653

相关文章

  • 2024-08-30 error [email protected]: The engine "node" is incompatible with this m
    删掉依赖,使用yarn重新拉取,保错如下:[email protected]:Theengine"node"isincompatiblewiththismodule.Expectedversion">=18".Got"16.19.1" 错误[email protected]:引擎“节点”与此模块不兼容。预期版本“>=18”。得到“16.19.1”意思就是yarn拉取依赖过程中......
  • C++ 快速输入的优化与缓冲区管理(竞赛必用)
    在编程竞赛和性能敏感的场景中,数据输入的效率往往直接影响到程序的运行速度。为了优化输入操作,我们可以通过手动设定缓冲区的方式来提升输入的速度。本文将详细介绍两种不同的快速输入方案:手动设定缓冲区大小的方案与系统默认缓冲区大小的方案,并结合二进制位数与可表示数据范围......
  • ChatGPT学习之旅 (10) 系统全球化小助手
    LOTO****示波器统计曲线和故障分析pass/fail测试虚拟示波器可以应用在工业自动化检测中,除了常规的检测波形和测量值参数以外,由多个行业客户定制和验证的统计曲线和故障分析(pass/fail)功能也为工业自动化检测带来极大的便利。(一)故障分析(pass/fail)的基础:统计曲线功能在信号检测的......
  • uniapp js 划消小游戏 1.0 去控制台看打印(仅作参考)
    <template> <viewclass="wrap">  划消:{{sdNum}}*{{sdNum}}  <viewclass="btn"style="padding:32rpx;background:pink"@click="clickBtn">点击划消按钮</view>  <viewclass="btn&q......
  • 【效率工具】推荐几款好用的idea中的AI助手插件
    1.Tabnine特点:Tabnine提供智能代码补全功能,基于深度学习的模型来预测和补全代码块。它可以根据你当前代码的上下文,智能推荐代码、函数、类、变量名等。支持多种语言,包括Java、Python、JavaScript等,特别适合Java开发者。Tabnine可以在本地运行,保护代码隐私。优势:提高......
  • C++第十四弹 -- STL之queue和priority_queue深度剖析
    目录前言1.queue的介绍与使用1.1.queue的介绍1.2为什么容器类不选vector?1.3queue的使用1.4OJ用队列实现栈2.queue的模拟实现3.deque的介绍3.1什么是适配器3.2STL标准库中stack和queue的底层结构3.3deque的简单介绍4.priority_queue的介绍与使用4.1介绍4.2......
  • 学习笔记4——二叉树(C++版)
    关于二叉树的算法题一般都是使用递归来实现,所以要想做好二叉树的算法题,要先学会递归算法的使用。一、如何创建一个二叉树1.声明一个树节点结构体structTreeNode{intval;TreeNode*left;TreeNode*right;TreeNode(intx):val(x),left(nullptr),ri......
  • c++解析xml文件实际应用(增删改查进阶)看完必会
    《c++解析xml文件(增删改查)看完必会》遍历xml所有节点下的数据已经在上一篇文章末尾写道,写法大同小异,资源下载也在上一篇提到,这里就不再提及,这篇博客主要是对上一篇基础知识的运用,如有疑问,可以call我XML解析类#include<iostream>#include<string>#include<string.h>#include......
  • 短视频创作神器:AI助手帮你一键生成脚本草稿
    本文由ChatMoney团队出品在当今这个快节奏的数字时代,短视频以其短小精悍、内容丰富的特点迅速崛起,成为大众娱乐和信息传播的重要载体。然而,对于许多创作者而言,如何构思一个引人入胜、富有创意的脚本,往往是他们面临的第一个挑战。近期发下ChatMoneyAI的全能AI知识库系统短视频......
  • C++学习随笔——C++11的array、forward_list、tuple的用法
    1.std::arraystd::array是C++11引入的一个封装了原生数组的容器,它结合了C++标准库容器的优点和C风格数组的效率。#include<array>#include<iostream>intmain(){std::array<int,5>arr={1,2,3,4,5};//初始化一个大小为5的数组//访问元素......