控制台下登录逻辑
来源:互联网 发布:淘宝网中学生羊毛衫 编辑:程序博客网 时间:2024/04/29 05:36
写了一个简单的控制台登录程序,使用文件存储用户信息。
主要有三个部分:用户类,登录程序,注册程序,
用户类很简单了,因为没有想好要做什么,就先写用户名和密码两个成员变量,成员函数就是set和get了,没什么好说的。
注册程序中的问题:
1.检测输入用户名是否已存在。
因为是文件存储,每一行存储一个用户名和一个密码,中间用空格隔开,所以每次顺序读入用户名和密码,循环检测用户名是否存在,如果存在,将文件输入指向文件开头使用
in.seekg(0, std::ios::beg);即可。seekg函数第一个参数是偏移量,第二个是偏移量的参考点。
如果文件中用户名全部检测完成,文件输入达到文件末尾,就可使用if(in.eof()) break;跳出输入用户名循环。
2.使用暗文输入密码
使用c = getch();函数循环输入每一个密码字符,getch函数不回显。然后每输入一个字符,对应要输出一个’*’,当输入字符是回车(13’\r’)时,结束循环,当输入字符是退格(8‘\b’)时,输出退格,此时光标退一格,原来位置的字符还在,所以输出空格,覆盖原有字符,光标又右移一位,多出一个空格,再输出退格,光标退一位,即可达到效果。
由于密码定义的是string类型,可以使用’+’来链接存储密码,输入退格时,使用erase函数清除最后一个字符。
登录界面的问题:
1.界面有登录和注册两个选项
分别用1,2表示,这是一个unsinged short 所以当非法输入一个char类型时,就会使得cin产生错误而失效,所以需要处理cin使之有效,使用cin.clear(); cin.sync();,clear使得cin有效,sync清除cin缓存,很重要,如果不清除,cin依然是错误的,就会导致死循环问题。
OK,主要就是这几个问题,尤其是cin失效的这个问题,困扰了很久。
- 控制台下登录逻辑
- 控制台下清屏
- 控制台下的unicode
- 控制台下的万年历
- 控制台下的多线程
- 控制台下的定时器
- 控制台下 dos命令
- windows控制台下托盘
- 控制台下的扫雷
- 控制台下ping
- 控制台下画图
- Windows控制台下输入输出控制
- 在控制台下显示进度
- 控制台下设置本地化输出
- Linux控制台下的快捷键
- win32控制台下制作定时器
- 控制台下菱形的代码
- windows控制台下光标移动
- 【extern】如何使用关键字extern "C"?
- 关于ListView的优化!
- leetcode[257] Binary Tree Paths
- linux命令进阶小记
- 2015 ACM多校训练第三场
- 控制台下登录逻辑
- view的setTag与getTag来给组件绑定数据
- 各种分类算法比较
- 指针之函数的参数是数组的时候的本质
- Android系统架构——各层功能简介
- 虚拟机安装
- Xcode6无法安装VVDocumenter插件的解决方法
- DIV+CSS参数大全
- 【Free】有关free释放的的案例