控制台下登录逻辑

来源:互联网 发布:淘宝网中学生羊毛衫 编辑:程序博客网 时间:2024/04/29 05:36

        写了一个简单的控制台登录程序,使用文件存储用户信息。

主要有三个部分:用户类,登录程序,注册程序,

用户类很简单了,因为没有想好要做什么,就先写用户名和密码两个成员变量,成员函数就是setget了,没什么好说的。

注册程序中的问题:

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失效的这个问题,困扰了很久。

0 0
原创粉丝点击