当前位置:首页 >> 兵器/核科学 >>

密码安全等级问题_图文

密码安全等级问题

问题描述
?

密码通常由四类字符组成:
? ? ?

?

大写字母 小写字母 数字 其他字符(不含空格)

★实验任务:
?

设计一个密码类,实现判断密码安全等级的 功 能。密码安全等级的计算公式如下:
? ?

合法密码必须以字母开头,并且长度不小于6 不合法密码的安全等级为0,合法密码的安全等级 为密码中出现的字符的种类数

?

输入示例
输入实例 输出示例

123

0

输入示例 abc123

输出示例 2

对问题的理解和分析
?

如何判断合法密码的安全级别呢? 合法密码的安全级别就是密码中出现 的字符的种类数,为了区分大写字母、 小写字母、数字和其他字符
我们采用ASCⅡ码值:第48~57号为0~9十 个阿拉伯数字;65~90号为26个大写英文字 母,97~122号为26个小写英文字母。 ? 直接判断: a<小写字母<z A<大写字母<Z
?

1<数字<9

类的设计
?

本题的目的为设计一个密码类,使用面向 对象的方法来实现判断密码安全等级的功 能。
?

成员函数的设计:主要就是判断等级的函数 数据成员的设计

?

类的设计
?

?
? ? ? ? ? ?

?
? ? ?

class Password { public : Password () ; void rank (); void input() ; void output() ; private : int kind; bool flag[4] ; char word[100]; };

//构造函数 //判断安全等级的函数 //输入密码的函数 //输出密码安全等级的函数

类的设计
? ? ? ? ? ?

?
? ? ?

?
? ? ?

?

void Password::rank() //判断安全等级的函数 { if(word[0]<65 || word[0]>122 || (word[0]>90 && word[0]<97) || strlen(word)<6) //判断密码首位是否是字母以及长度是否合法 kind=0; else for(int i=0;i < strlen(word); i++) { if(flag[0]==0) //判断大写字母 { if(word[i]>=65 && word[i]<=90) flag[0]=1; } if(flag[1]==0) //判断小写字母 …… } for (int i=0; i<4;i++){ kind += flag[ i ] ; } }

类的设计
? ? ? ? ?

?
? ?

void Password:: input() //输入密码的函数 { cin>>word; } void Password:: output() //输出密码安全等级的函 数 { cout<<kind<<endl; }

C++程序的主函数
? ? ?

?
?

?
?

void main() { Password thepassword; thepassword.input(); thepassword.rank(); thepassword.output(); }

C程序实现程序
?

?
? ? ?

?

? ? ? ? ? ? ? ? ?

void main() { char code[100]; bool flag[4]={0}; int i, level=0; cin>>code; if(((code[0]>='a'&&code[0]<='z')||(code[0]>='A'&&code[0]<='Z'))&&strlen(code)> =6) { for(i=0;code[i]!='\0';i++) if(code[i]>='a'&&code[i]<='z') flag[0]=1; else if(code[i]>='A'&&code[i]<='Z') flag[1]=1; else if(code[i]>='0'&&code[i]<='9') flag[2]=1; else flag[3]=1; } for ( i=0; i<4;i++){ level += flag[i]; } cout<<level; }

面向对象 vs 面向过程设计
面向过程 程序执行 步骤 数据项 通常按顺序执行 面向对象 在对象内执行 独立其他对象 属性;属于一个对象; 随对象而变,具有某种行为 发消息给对象 结合成对象 方法执行时

变量;独立; 位于程序中 调用函数 保持分离 函数执行时

激活方式 数据与函数 事件发生

活动涉及

函数和参数

对象,消息和参数
11

常见的错误分析
?

成员函数的书写问题:如果将代码写在类 的外面,必须现在类内进行声明
类的定义错误:在类的定义结束时,忘记 ‘;’ 类的数据成员访问错误:类的private成员不 能在类外部访问,可以通过类的成员函数 来访问 按照题目要求做题,例如本次要求使用类 ,否则影响大家成绩

?

?

?