前言
本文主要记录在课堂学习C++过程中学到的一些新的收获,以不断积累。
一、简单屏保程序
用程序模拟基本屏保功能,即在无用户操作时不断输出(动态), 如果检测到操作便退出。
1、代码示例
#include <iostream>
#include <conio.h>
using namespace std;
class screen
{
private:
int n;
public:
screen()
{
n=0;
}
void move()
{
while(true)
{
cout<<n;
++n;
if(n>10000)
n=0;//不断循环输出
if(kbhit()) //检测操作
break;
}
}
};
int main()
{
screen s;
s.move();
return 0;
}
2、kbhit()
(1)函数名:kbhit()(VC++6.0下为_kbhit())
(2)功能及返回值:
检查当前是否有键盘输入,若有则返回一个非0值,否则返回0
(3)用 法:int kbhit(void);
(3)包含头文件: include <conio.h>
二、输入密码的程序
1、初级
实现功能有:由程序中初始化的密码为基准,然后用户进行输入登录,在录入过程中,每当输入一个字符,对应打印出一个*号,安全考虑,检测到回车键录入结束。
//输入密码的程序:基本实现
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;
class Password
{
private:
string s;//password
public:
Password(string ss){s=ss;}
void testkey()//测试键盘码 ,可知回车键为13
{
char c;
c=getch();
cout<<(int)c<<endl;
}
string password()//输入密码,回车键结束
{
string temp="";
char c;
cout<<"password:";
while(true)
{
c=getch();
if(c==13)
{
cout<<endl;
break;
}
else
{
temp=temp+c;
cout<<"*";
}
}
s=temp;
return s;
}
};
int main()
{
Password p("123456");
p.testkey();
// cout<<p.password()<<endl;
return 0;
}
2、进阶
在上面的基础上,加入了输入密码次数的限制,以及密码正确性的判定。
//输入密码的程序:基本功能
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;
class Password
{
private:
string s;//password
int n;//times
public:
Password(string ss,int nn){s=ss;n=nn;}
void password()
{
string temp;
char c;
int i;
for(i=0;i<n;++i)
{
temp="";
cout<<"password:";
while(true)
{
c=getch();
if(c==13)break;
else
{
temp=temp+c;
cout<<"*";
}
}
if(temp==s)
{
cout<<endl<<"right!"<<endl;break;
}
else if(i<n-1)
{
cout<<endl<<"wrong!repeat..."<<endl;
}
else
{
cout<<endl<<"you dead!"<<endl;
}
}
}
};
int main()
{
Password p("123456",3);
p.password();
system("pause");
return 0;
}
3、升级
更加切实模拟密码输入,增加了退格操作,即用户输入错误可以退格删除。
常用的string函数库:
1.字符长度( length(); size(); )
2.删除字符函数(erase();)
更多请参考:常用的string函数库
//输入密码的程序:考虑退格键
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;
class password
{
private:
string pass1,pass2;
int times;
char c;
int i;
public:
password(string s,int n)
{
pass1=s;
times=n;
}
void input()
{
cout<<"input password:";
while(true)
{
c=getch();
if(c==13)
{
if(pass1==pass2)
{
cout<<"right!"<<endl;
break;
}
else
{
--times;
if(times>0)
{
cout<<endl<<"wrong!"<<endl;
cout<<"lase "<<times<<" times"<<endl;
cout<<"press anykey continue..."<<endl;
getch();
system("cls");
cout<<"input password:";
pass2="";
}
else
{
cout<<endl<<"you dead!"<<endl;
break;
}
}
}
else if(c==8)
{
if(pass2.size()>0)
{
system("cls");
cout<<"input password:";
pass2.erase(pass2.size()-1,1);
for(i=0;i<pass2.size();++i)
{
cout<<"*";
}
}
}
else
{
pass2=pass2+c;
cout<<"*";
}
}
}
string value()
{
return pass2;
}
};
int main()
{
password p1("123456",3);
p1.input();
// cout<<endl<<p1.value()<<endl;
system("pause");
return 0;
}