IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c++账号登陆 -> 正文阅读

[C++知识库]c++账号登陆

#include<iostream>
#include<fstream>
#include<string>
#include<map> ? ? ? ? ? ? ? ? //map容器yyds 辣鸡array狗都不用

using namespace std;

#define FILENAME "Account.txt"
#define SIZE 100 ? ? ? ? ? ? ?//最大容量
map<int, int> arr_user;

class User {
public:
?? ?//显示菜单
?? ?void ShowMenu() {
?? ??? ?cout << "欢迎使用账号管理系统" << endl;
?? ??? ?cout << "1.注册" << endl;
?? ??? ?cout << "2.登录" << endl;
?? ??? ?cout << "0.退出" << endl;
?? ?}

?? ?//注册账号
?? ?void Register(User *user) {
?? ??? ?//读取已注册账号记录
?? ??? ?user->Read();

?? ??? ?int i_acc;
?? ??? ?int i_psw;
?? ??? ?int i_psw02; //用于校验两次密码是否一致

?? ??? ?string str_acc;
?? ??? ?string str_psw;
?? ??? ?string str_psw02;

?? ??? ?for (int i = arr_user.size(); i < SIZE; i++) {
?? ??? ?FLAG01:
?? ??? ??? ?
?? ??? ??? ??? ?cout << "请输入账号:";

?? ??? ??? ??? ?cin >> str_acc;

?? ??? ??? ??? ?//检测是否含特殊字符
?? ??? ??? ??? ?for (int i = 0; i < str_acc.size(); i++) {

?? ??? ??? ??? ??? ?if (str_acc[i] >= 48 && str_acc[i] <= 57) {
?? ??? ??? ??? ??? ??? ?continue;
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?else {
?? ??? ??? ??? ??? ??? ?cout << "使用非法字符,请重试" << endl;
?? ??? ??? ??? ??? ??? ?goto FLAG01;
?? ??? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ??? ?}

?? ??? ??? ??? ?}

?? ??? ??? ??? ?i_acc = atoi(str_acc.c_str());
?? ??? ??? ?
?? ??? ??? ?//查找是否已注册
?? ??? ??? ?auto pos_acc = arr_user.find(i_acc);
?? ??? ??? ?if (pos_acc != arr_user.end()) {
?? ??? ??? ??? ?cout << "已存在该账号,请返回登陆" << endl;
?? ??? ??? ??? ?system("pause");
?? ??? ??? ??? ?system("cls");
?? ??? ??? ??? ?return;
?? ??? ??? ?}

?? ??? ??? ?FLAG02:
?? ??? ??? ?cout << "请输入密码:";
?? ??? ??? ?cin >> str_psw;
?? ??? ??? ?//检测是否含特殊字符
?? ??? ??? ?for (int i = 0; i < str_psw.size(); i++) {

?? ??? ??? ??? ?if (str_psw[i] >= 48 && str_psw[i] <= 57) {
?? ??? ??? ??? ??? ?continue;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else {
?? ??? ??? ??? ??? ?cout << "使用非法字符,请重试" << endl;
?? ??? ??? ??? ??? ?goto FLAG02;
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?}

?? ??? ??? ?}

?? ??? ??? ?i_psw = atoi(str_psw.c_str());

?? ??? ??? ?//注册密码 二次确认
?? ??? ??? ?cout << "请再次输入密码:";
?? ??? ??? ?cin >> str_psw02;

?? ??? ??? ?//检测是否含特殊字符
?? ??? ??? ?for (int i = 0; i < str_psw02.size(); i++) {

?? ??? ??? ??? ?if (str_psw02[i] >= 48 && str_psw02[i] <= 57) {
?? ??? ??? ??? ??? ?continue;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else {
?? ??? ??? ??? ??? ?cout << "使用非法字符,请重试" << endl;
?? ??? ??? ??? ??? ?goto FLAG02;
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?}

?? ??? ??? ?}

?? ??? ??? ?i_psw02 = atoi(str_psw02.c_str());

?? ??? ??? ?if (i_psw != i_psw02) {
?? ??? ??? ??? ?cout << "两次密码不一致,请重新输入" << endl;
?? ??? ??? ??? ?goto FLAG02;
?? ??? ??? ?}

?? ??? ??? ?//插入map
?? ??? ??? ?arr_user.insert(make_pair(i_acc, i_psw));

?? ??? ??? ?//保存文件
?? ??? ??? ?user->Save();

?? ??? ??? ?cout << "注册成功,请返回登陆" << endl;
?? ??? ??? ?system("pause");
?? ??? ??? ?system("cls");
?? ??? ??? ?break;

?? ??? ?}

?? ?}

?? ?//读取数据
?? ?void Read() {
?? ??? ?ifstream fin;
?? ??? ?fin.open(FILENAME, ios::in);

?? ??? ?if (!fin.is_open()) {
?? ??? ??? ?//cout<<"记录为空";
?? ??? ??? ?return;
?? ??? ?}
?? ??? ?
?? ??? ?int i_acc;
?? ??? ?int i_psw;
?? ??? ?auto it = arr_user.begin();

?? ??? ?//存入map
?? ??? ?while (!fin.eof()) {
?? ??? ??? ?fin >> i_acc;
?? ??? ??? ?fin >> i_psw;
?? ??? ??? ?arr_user.insert(make_pair(i_acc, i_psw));
?? ??? ?
?? ??? ?}

?? ??? ?fin.close();

?? ?}

?? ?//存储数据
?? ?void Save() {
?? ??? ?ofstream fout;
?? ??? ?fout.open(FILENAME, ios::out);

?? ??? ?for (auto it = arr_user.begin(); it != arr_user.end(); it++) {
?? ??? ??? ?fout << it->first << " " << it->second << endl;
?? ??? ?}

?? ??? ?fout.close();
?? ?}

?? ?//登陆账号
?? ?void Login(User* user) {

?? ??? ?user->Read();

?? ??? ?//判断是否已有注册账号
?? ??? ?ifstream fin;
?? ??? ?char ch;
?? ??? ?fin.open(FILENAME, ios::in);
?? ??? ?fin >> ch;
?? ??? ?if (fin.eof()) {
?? ??? ??? ?//cout << "文件为空" << endl;
?? ??? ??? ?cout << "无账号记录" << endl;
?? ??? ??? ?system("cls");
?? ??? ??? ?return;
?? ??? ?}

?? ??? ?int i_acc;
?? ??? ?int i_psw;
?? ??? ?string str_acc;
?? ??? ?string str_psw;

?? ??? ?//输入账号
?? ??? ?FLAG03:
?? ??? ?cout << "请输入账号:";
?? ??? ?cin >> str_acc;
?? ??? ?//检测是否含特殊字符
?? ??? ?for (int i = 0; i < str_acc.size(); i++) {

?? ??? ??? ?if (str_acc[i] >= 48 && str_acc[i] <= 57) {
?? ??? ??? ??? ?continue;
?? ??? ??? ?}
?? ??? ??? ?else {
?? ??? ??? ??? ?cout << "使用非法字符,请重试" << endl;
?? ??? ??? ??? ?goto FLAG03;
?? ??? ??? ??? ?break;
?? ??? ??? ?}

?? ??? ?}

?? ??? ?i_acc = atoi(str_acc.c_str());

?? ??? ?//查找是否存在该账号
?? ??? ?auto pos_acc = arr_user.find(i_acc);
?? ??? ?if (pos_acc == arr_user.end()) {
?? ??? ??? ?cout << "该账号未注册" << endl;
?? ??? ??? ?goto FLAG03;
?? ??? ?}
?? ??? ?
?? ??? ?//输入密码
?? ??? ?FLAG04:
?? ??? ?cout << "请输入密码:";
?? ??? ?cin >> str_psw;

?? ??? ?//检测是否含特殊字符
?? ??? ??? ?for (int i = 0; i < str_psw.size(); i++) {

?? ??? ??? ??? ?if (str_psw[i] >= 48 && str_psw[i] <= 57) {
?? ??? ??? ??? ??? ?continue;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else {
?? ??? ??? ??? ??? ?cout << "使用非法字符,请重试" << endl;
?? ??? ??? ??? ??? ?goto FLAG04;
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?}

?? ??? ??? ?}

?? ??? ??? ?i_psw = atoi(str_psw.c_str());

?? ??? ?//匹配账号密码
?? ??? ?if (pos_acc->second == i_psw) {
?? ??? ??? ?cout << "登陆成功" << endl;
?? ??? ?}
?? ??? ?else {
?? ??? ??? ?cout << "密码错误,请重新登录" << endl;
?? ??? ??? ?goto FLAG03;
?? ??? ?}

?? ??? ?system("pause");
?? ??? ?system("cls");
?? ?}

};

int main() {

?? ?User user;

?? ?int choice = 0;

?? ?while (true) {
?? ??? ?//菜单调用
?? ??? ?user.ShowMenu();

?? ??? ?cin >> choice;

?? ??? ?switch (choice) {
?? ??? ?case 1://注册
?? ??? ??? ?user.Register(&user);
?? ??? ??? ?break;
?? ??? ?case 2://登录
?? ??? ??? ?user.Login(&user);
?? ??? ??? ?break;
?? ??? ?case 0://退出
?? ??? ??? ?exit(0);
?? ??? ??? ?break;
?? ??? ?default:
?? ??? ??? ?cout << "输入有误,请重新输入" << endl;
?? ??? ??? ?break;
?? ??? ?}

?? ?}

?? ?system("pause");
?? ?return 0;
}
?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-17 11:49:20  更:2021-10-17 11:51:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:42:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码