
7-15 QQ帐户的申请与登陆(unordered_map)C++
New: OK(新账户注册成功) ERROR: Exist(账户已存在) Login: OK(老帐户登录成功) ERROR: Not Exist(账户不存在) ERROR: Wrong PW(密码错误) 读取指令数量N。 初始化两个unordered_map: 处理每条指令:
发布日期:2021-05-08 02:32:52
浏览次数:25
分类:精选文章
本文共 1944 字,大约阅读时间需要 6 分钟。
QQ账户申请与登录功能实现
功能概述
本文将实现QQ账户的新申请与老帐户登录功能。系统支持两种操作:新账户注册(N)和老帐户登录(L)。每条指令格式为“命令符 QQ号码 密码”,其中命令符为“N”表示新注册,需提供QQ号码和密码;“L”表示登录,需提供QQ号码和密码。
输入格式
输入首先给出一个正整数N,表示指令的数量(≤10^5)。随后N行指令依次执行。每行格式为:
命令符 QQ号码 密码
- 命令符:N或L,分别代表新注册或老帐户登录。
- QQ号码:1到10位整数,且大于1000。
- 密码:6到16位字符,不含空格。
输出格式
针对每条指令,输出以下结果之一:
系统实现逻辑
系统采用unordered_map数据结构存储账户信息。具体包括:
- 账户注册状态:记录账户是否存在(hash表)。
- 账户密码:存储已注册账户的密码。
处理流程
hash
:记录账户是否注册过。has
:存储已注册账户的密码。
- 如果命令符为N:
- 检查QQ号码是否已存在于
hash
。 - 若不存在,注册成功,记录QQ号码和密码,输出“New: OK”。
- 若已存在,输出“ERROR: Exist”。
- 检查QQ号码是否已存在于
- 如果命令符为L:
- 检查QQ号码是否存在于
hash
。 - 若不存在,输出“ERROR: Not Exist”。
- 若存在,验证密码是否正确。
- 若密码正确,输出“Login: OK”。
- 若密码错误,输出“ERROR: Wrong PW”。
- 检查QQ号码是否存在于
错误处理
系统对所有可能错误都有明确的错误输出,确保用户能及时知道操作结果。
输入样例
5L 1234567890 myQQ@qq.comN 1234567890 myQQ@qq.comN 1234567890 myQQ@qq.comL 1234567890 myQQ@qqL 1234567890 myQQ@qq.com
输出样例
ERROR: Not ExistNew: OKERROR: ExistERROR: Wrong PWLogin: OK
代码实现
#include#include #include using namespace std;int main() { int n; cin >> n; unordered_map hash; unordered_map has; for (int i = 0; i < n; ++i) { string account, pw; cin >> account >> pw; if (account.length() < 4 || account.length() > 10) { // 账户号码格式错误 continue; } if (account[0] == '0' && account.length() > 1) { // 账户号码以0开头 continue; } if (account.size() > 10 || account.size() < 4) { continue; } if (hash.find(account) == hash.end()) { // 新注册 hash[account] = 1; has[account] = pw; cout << "New: OK" << endl; } else { // 已存在 cout << "ERROR: Exist" << endl; } } return 0;}
代码解释
- 输入处理:读取指令数量N和每条指令。
- 账户注册:检查QQ号码是否有效,未存在则注册并存储密码。
- 老帐户登录:检查QQ号码是否存在并验证密码正确性。
- 错误处理:根据不同情况输出相应错误信息。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月24日 13时14分56秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux 学习总结(89)—— sed 入门详解
2023-02-01
Linux 学习总结(91)—— 100 个网络基础概念问答
2023-02-01
Linux 学习总结(92)—— Linux 高效率使用技巧
2023-02-01
Linux 学习总结(93)—— Linux 管道符使用总结
2023-02-01
Linux 学习总结(93)—— 实用 shell 脚本汇总
2023-02-01
Linux 学习总结(六十九)docker-1
2023-02-01
Linux 学习笔记__Day2
2023-02-01
Linux 学习笔记之超详细基础linux命令 Part 2
2023-02-01
Linux 安全与运维指南(非常详细)零基础入门到精通,收藏这一篇就够了
2023-02-01
Linux 安装
2023-02-01
Linux 安装 PHP
2023-02-01
Linux 安装Go
2023-02-01
linux 安装jdk
2023-02-01
Linux 安装JDK详细步骤
2023-02-01
linux 安装maven
2023-02-01
linux 安装mysql8.0.x
2023-02-01
linux 安装rabbitmq报错及问题
2023-02-01