Background: In C++, string handling can be kinda challenging. But this topic pre
ID: 3763894 • Letter: B
Question
Background:
In C++, string handling can be kinda challenging. But this topic pretty much summarizes all the things we have seen far so I think it makes for a very worthwhile assignment.
The class string in C++ provides us many use features including:
a constructor that converts c-strings into string objects; as in:
char * cstr = "Hello";
string s( cstr );
a converting to produce a c-string from a string object; as in:
char * cstr = s.c_str( );
a member that tells us the strings length; as in:
int len = s.length( );
a member that produces a letter; as in:
char c = s.at( 5 );
an operator that combines strings; as in:
string u = s + t;
With this assignment, I hope you'll get a chance to experiment with all these different features.
Project 1: Username and Password Validator
Create a C++ class which, when fed a username and password, can validate that the username and password meets the following criteria:
The username should:
- have at least 8 characters long
- contains only alpha numeric characters (no spaces or special characters)
- contain at least 1 uppercase character
- contain at least 1 lowercase character
- contain at least 1 numeric character (0-9)
The password should:
- not contain a user’s username (i.e. the username “CraigKapp1? is valid, but if that user has the password “CraigKapp1Password”, this password would not be valid because it contains the string “CraigKapp1?)
- be at least 8 characters long
- only contain alpha numeric characters (no spaces or special characters)
- contain at least 1 uppercase character
- contain at least 1 lowercase character
- contain at least 1 numeric character (0-9)
HINT: For this assignment, a very useful library of helper functions are available when you say: #include <cctype> which is documented for you here.
A number of different program dialogues describe the program I am looking for.
CS52 Username/Password Validator
Username: SmcCorsair1
Password: GoDodgers1
The Username/Password combination is valid!
CS52 Username/Password Validator
Username: SmcCorsair
Password: GoDodgers1
The Username requires numeric character
CS52 Username/Password Validator
Username: smccorsair1
Password: GoDodgers1
The Username requires an uppercase character
CS52 Username/Password Validator
Username: SMCCORSAIR1
Password: GoDodgers1
The Username requires an lowercase character
CS52 Username/Password Validator
Username: corsair
Password: GoDodgers1
The Username requires atleast 8 letters
CS52 Username/Password Validator
Username: SmcCorsair1
Password: aaSmcCorsair1aa
The Password cannot contain the Username
CS52 Username/Password Validator
Username: SmcCorsair1
Password: gododgers1
The Password requires an uppercase character
CS52 Username/Password Validator
Username: SmcCorsair1
Password: GODODGERS1
The Password requires an lowercase character
CS52 Username/Password Validator
Username: SmcCorsair1
Password: Smc1
The Password requires atleast 8 letters
Following the diagrams show below, create the class UsernamePasswordValidator.
Explanation / Answer
Program:
#include <iostream>
#include<string>
#include<cstring>
using namespace std;
int main() {
string uname,password;
int unameAlphaFlag=0,passwordAlphaFlag=0;
int unameLengthFlag=0,passwordLengthFlag=0;
int unameUpperFlag=0,unameLowerFlag=0,unameNumFlag=0;
int passwordUpperFlag=0,passwordLowerFlag=0,passwordNumFlag=0;
cout<<"CS52 Username/Password Validator";
cout<<" Username: ";
cin>>uname;
cout<<" Password: ";
cin>>password;
if(uname.length() >=8)
unameLengthFlag=1;
if(password.length() >= 8)
passwordLengthFlag=1;
return 0;
const char *c=uname.c_str();
for(int i=0;i<uname.length();i++)
{
if(c[i]>= 'A' && c[i]<='Z' )
unameUpperFlag=1;
else if(c[i]>='a' && c[i]<='z' )
unameLowerFlag=1;
else if(c[i]>='0' && c[i]<='9' )
unameNumFlag=1;
}
if(unameUpperFlag && unameLowerFlag && unameNumFlag)
unameAlphaFlag=1;
const char *c2=password.c_str();
for(int i=0;i<password.length();i++)
{
if(c2[i]>= 'A' && c2[i]<='Z' )
passwordUpperFlag=1;
else if(c2[i]>='a' && c2[i]<='z' )
passwordLowerFlag=1;
else if(c2[i]>='0' && c2[i]<='9' )
passwordNumFlag=1;
}
if(passwordUpperFlag && passwordLowerFlag && passwordNumFlag)
passwordAlphaFlag=1;
if(passwordAlphaFlag && unameAlphaFlag && passwordLengthFlag && unameLengthFlag )
cout<<" The Username/Password combination is valid!";
else
{
if(unameNumFlag==0)
{
cout<<" The Username requires numeric character";
}
if(passwordNumFlag==0)
{
cout<<" The Password requires numeric character";
}
if(unameUpperFlag==0)
{
cout<<" The Username requires an uppercase character";
}
if(passwordUpperFlag==0)
{
cout<<" The Password requires an uppercase character";
}
if(unameLowerFlag==0)
{
cout<<" The Username requires an lowercase character";
}
if(passwordLowerFlag==0)
{
cout<<" The Password requires an lowercase character";
}
if(unameLengthFlag==0)
{
cout<<" The Username requires atleast 8 letter";
}
if(passwordLengthFlag==0)
{
cout<<" The Password requires atleast 8 letters";
}
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.