#include <iostream> #include <string> using namespace std; class UserAccountType{ public: string userId; // Jamal-Mutawe string encrypted_password; string FirstName; string LastName; UserAccountType(){ // default constructor userId = ""; encrypted_password = ""; FirstName = ""; LastName = ""; } UserAccountType(string id, string pass, string fn, string ln){ userId = id; if(isValidPassword(pass)){ encrypted_password = encryptPassword(pass); } else encrypted_password = ""; FirstName = fn; LastName = ln; } void setUserId(string s){ userId = s; } void setFirstName(string s){ FirstName = s; } void setLastName(string s){ LastName = s; } void setPassword(string s){ if(isValidPassword(s)){ encrypted_password = encryptPassword(s); } else encrypted_password = ""; } string getUserId(){ // return the userId// return userId; } bool isCompleteUserAccount(){ if(userId.compare("") == 0) return false; if(FirstName.compare("") == 0) return false; if(LastName.compare("") == 0) return false; if(encrypted_password.compare("") == 0) return false; return true; } string encryptPassword(string s){ //this function receives the original password and return it after encryption int start = 0; int end = s.length()-1; string rev_start = ""; string rev_end = ""; while( start <= end){ rev_start += s[end--]; rev_end = s[start++] + rev_end; } string ans = rev_start + rev_end; return ans; } void printUserInfo(){ // print the values of all member variables cout<<"First Name : "<<FirstName<<endl; cout<<"Last Name : "<<LastName<<endl; cout<<"User ID : "<<userId<<endl; cout<<"Password : "<<encrypted_password<<endl; } bool isValidPassword(string s){ // return true if the password is valid , or false otherwise. if(s.length() < 6 || s.length() > 8) return false; int digit_count = 0, special_char_count = 0, letter_count = 0; for(char c :s){ if(isdigit(c)) digit_count++; else if(isalpha(c)) letter_count++; else if(c == '#' || c == '$' || c == '*') special_char_count++; else return false; } if( special_char_count == 1 && digit_count == 1) return true; return false; } }; class UserAccountNode{ public: UserAccountType user_account; UserAccountNode *link; }; class UserAccountListType{ // object of type UserAccountType public: UserAccountNode *first; //Pointer to the first node of the list UserAccountNode *last; //Pointer to the last node of the list. int counter = 0; //A counter to hold the number of nodes of the list UserAccountListType(); // default constructor: Initializes the list to an empty state. ~UserAccountListType(); // destructor: //Deletes all the nodes from the list void destroyList(){ // Delete all the nodes from the list. first = last = NULL; counter = 0; } void print(){ // Prints the contents of the book User Account list UserAccountNode *temp = first; while(temp != NULL){ temp->user_account.printUserInfo(); temp = temp->link; } } bool isUserIdExist(string ud){ // return true if the list has user account with the user id ud UserAccountNode *temp = first; while(temp != NULL){ if(temp->user_account.userId.compare(ud) == 0) return true; } return false; } void insertUserAccount( const UserAccountType ni){ UserAccountType newItem = ni; if(newItem.isCompleteUserAccount()){ UserAccountNode *n; n->user_account = newItem; n->link = NULL; if(first == NULL && last == NULL){ first = last = n; } else { last->link = n; last = last->link; } counter++; } } void deleteUserAccount(string ud){ //delete from the list the user account UserAccountNode *temp = first; if(first->user_account.userId.compare(ud) == 0){ first = first->link; counter--; } else{ // similiar to deleting nodes in an linked list while(temp != NULL){ if(temp->link->user_account.userId.compare(ud) == 0){ temp->link = temp->link->link; counter--; break; } } } } void printInfo_of_UserId(string user_id){ UserAccountNode *temp = first; while(temp != NULL){ if(temp->user_account.userId.compare(user_id) == 0){ temp->user_account.printUserInfo(); break; } temp = temp->link; } } }; int main(){ return 0; }
Write, Run & Share C++ code online using OneCompiler's C++ online compiler for free. It's one of the robust, feature-rich online compilers for C++ language, running on the latest version 17. Getting started with the OneCompiler's C++ compiler is simple and pretty fast. The editor shows sample boilerplate code when you choose language as C++
and start coding!
OneCompiler's C++ online compiler supports stdin and users can give inputs to programs using the STDIN textbox under the I/O tab. Following is a sample program which takes name as input and print your name with hello.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string name;
cout << "Enter name:";
getline (cin, name);
cout << "Hello " << name;
return 0;
}
C++ is a widely used middle-level programming language.
When ever you want to perform a set of operations based on a condition If-Else is used.
if(conditional-expression) {
//code
}
else {
//code
}
You can also use if-else for nested Ifs and If-Else-If ladder when multiple conditions are to be performed on a single variable.
Switch is an alternative to If-Else-If ladder.
switch(conditional-expression){
case value1:
// code
break; // optional
case value2:
// code
break; // optional
......
default:
code to be executed when all the above cases are not matched;
}
For loop is used to iterate a set of statements based on a condition.
for(Initialization; Condition; Increment/decrement){
//code
}
While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.
while (condition) {
// code
}
Do-while is also used to iterate a set of statements based on a condition. It is mostly used when you need to execute the statements atleast once.
do {
// code
} while (condition);
Function is a sub-routine which contains set of statements. Usually functions are written when multiple calls are required to same set of statements which increases re-usuability and modularity. Function gets run only when it is called.
return_type function_name(parameters);
function_name (parameters)
return_type function_name(parameters) {
// code
}