C++课堂杂记


前言

本文主要记录在课堂学习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;
}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值