2016/10/18

来源:互联网 发布:衣服好看又好的淘宝店 编辑:程序博客网 时间:2024/06/05 02:54
/*1631-5 黄加勉 <2016.10.18>
 连续第17天总结*/


A.今日任务
1.完成了注册登录程序的代码(100%)
2.继续学习了深拷贝与浅拷贝(50%)


B.具体内容
1.今天主要是写代码了
2.到现在大小写不分,函数名写错的情况还时有发生,之前一个bug找了半天发现是把 i 打成1了。。
3.这个程序用了大部分我学过的,应该算是一个复习了


附代码:

/*register & login

   version iii

   2016.10.18      */

#include <iostream>
#include <string>
#include <Windows.h>
#include <time.h>
#include <sstream>
using namespace std;
//declare class
namespace USER
{
class User
{
public:
User();
~User();
//basic I/O functions
void set_register_name(string _Rname);
void set_register_password1(string _password1);
void set_register_password2(string _password2);
void set_register_code(string _code);
void set_login_name(string _Lname);
void set_login_password(string _password);
void store_name(string _Stoname);
void store_password(string _Stopassword);
string get_register_name();
string get_register_password1();
string get_register_password2();
string get_register_code();
string get_login_name();
string get_login_password();
string get_name();
string get_password();
private:
string m_strName;
string m_strPassword;
string m_strRegisterName;
string m_strRegisterPassword1;
string m_strRegisterPassword2;
string m_strRegisterCode;
string m_strLoginName;
string m_strLoginPassword;
};
class Library
{
public:
//store functions
void store_data(string _name, string _password, int val);
//basic i/o functions
void set_user_data(string _name, string _password, int val);
string get_name(int _val);
string get_password(int _val);
//check functions
int check_register_name_repeat(string name, int val);
int check_register_name(string _Rname);
int check_register_password1(string _password1);
int check_register_compare(string _password1, string password2);
int check_register_code(string _Ocode, string _Rcode);
int check_login_name(string _Lname, int val);
int check_login_password(string _Lpassword, int val);
//code function
string getCode(clock_t start, clock_t finish);
private:
User user[100];
string dataLibrary[100][2];
};
}
namespace PRINT
{
inline void print_title_register();
inline void print_title_login();
inline void print_register_name();
inline void print_register_password1();
inline void print_register_password2();
inline void print_register_codeO();
inline void print_register_codeI();
inline void print_login_name();
inline void print_login_password();
inline void print_tip_register_name(int _value1);
inline void print_tip_register_name_repeat(int value);
inline void print_tip_register_password1(int _value2);
inline void print_tip_register_password2(int _value3);
inline void print_tip_register_code(int _value4);
inline void print_tip_register_sucess();
inline void print_tip_login_name(int _valueA);
inline void print_tip_login_password(int _valueB);
inline void print_tip_login_sucess();
}
//main function
int main()
{
clock_t start, finish;
start = clock();
USER::Library lib;//instance object
int value = 0;
while (1)
{
bool a_value_that_i_have_no_idea_how_to_name_it;
bool flag = 1;
PRINT::print_title_register();//print "register"
PRINT::print_register_name();//print "name:"
while (flag) //loop(1) -> register name
{
string tempName;
cin >> tempName;
int check1 = 1;
int check = lib.check_register_name_repeat(tempName, value);
PRINT::print_tip_register_name_repeat(check);
if (!check)
{
check1 = lib.check_register_name(tempName);
PRINT::print_tip_register_name(check1);//print register name situation
}
if (!check1 && !check)//register name correct
{
flag = 0; //end loop(1)
bool flag2 = 1;
while (flag2) //loop(2) -> register password1
{
string tempPassword1;
PRINT::print_register_password1();
cin >> tempPassword1;
int check2 = lib.check_register_password1(tempPassword1);
PRINT::print_tip_register_password1(check2);
if (!check2) //register password1 correct
{
flag2 = 0; //end loop(2)
bool flag3 = 1;
while (flag3) //loop(3) -> register password2
{
string tempPassword2;
PRINT::print_register_password2();
cin >> tempPassword2;
int check3 = lib.check_register_compare(tempPassword1, tempPassword2);
PRINT::print_tip_register_password2(check3);
if (!check3) //register password2 correct
{
flag3 = 0; //end loop(3)
bool flag4 = 1;
while (flag4) //loop(4) -> register code
{
finish = clock();
string code = lib.getCode(start, finish);//get random code
string tempCode;
PRINT::print_register_codeO();
cout << code << endl;
PRINT::print_register_codeI();
cin >> tempCode;
int check4 = lib.check_register_code(tempCode, code);
PRINT::print_tip_register_code(check4);
if (!check4) //end loop(4)
{
flag4 = 0;
string choice;
cout << "Submit or Rewrite (S/R)  : ";
cin >> choice;
if (choice == "S")//submit chart
{
lib.set_user_data(tempName, tempPassword1, value);
lib.store_data(tempName, tempPassword1, value);
PRINT::print_tip_register_sucess();
value++;
Sleep(1000);
system("cls");
}
else if (choice == "R")//rewrite chart
{
flag = 1;
system("cls");
PRINT::print_title_register();
PRINT::print_register_name();
}
}
else
{
Sleep(1000);
system("cls");
PRINT::print_title_register();
PRINT::print_register_name();
cout << tempName << endl;
PRINT::print_tip_register_name(check1);
PRINT::print_register_password1();
cout << tempPassword1 << endl;
PRINT::print_tip_register_password1(check2);
PRINT::print_register_password2();
cout << tempPassword2 << endl;
PRINT::print_tip_register_password2(check3);
//return to loop(4)
}


}
}
else //register password2 error
{
Sleep(1000);
system("cls");
PRINT::print_title_register();
PRINT::print_register_name();
cout << tempName << endl;
PRINT::print_tip_register_name(check1);
PRINT::print_register_password1();
cout << tempPassword1 << endl;
PRINT::print_tip_register_password1(check2);
//return to loop(3)
}
}


}
else //register password1 error
{
Sleep(1000);
system("cls");
PRINT::print_title_register();
PRINT::print_register_name();
cout << tempName << endl;
PRINT::print_tip_register_name(check1);
//return to loop(2)
}
}
}
else //register error
{
Sleep(1000);
system("cls");
PRINT::print_title_register();
PRINT::print_register_name();
//return to loop(1)
}
}
/*for (int i = 0; i < value; i++)
{
cout << lib.get_name(i) << endl;
}*/
string choice;
cout << "Login or Register (L/R) :";
cin >> choice;
if (choice == "L") a_value_that_i_have_no_idea_how_to_name_it = 1;
else if (choice == "R") a_value_that_i_have_no_idea_how_to_name_it = 0;
while (a_value_that_i_have_no_idea_how_to_name_it)//loop(1) -> login name
{
system("cls");
PRINT::print_title_login();
string tempName1;
PRINT::print_login_name();
cin >> tempName1;
int check = lib.check_login_name(tempName1, value);
PRINT::print_tip_login_name(check);
if (check >= 0)//name correct and return its place
{
//a_value_that_i_have_no_idea_how_to_name_it = 0;
bool temp = 1;
PRINT::print_login_password();
while (temp) //loop(2) -> login password
{
string tempPassword;
cin >> tempPassword;
int check1 = lib.check_login_password(tempPassword, check);
PRINT::print_tip_login_password(check1);
if (!check1) //password correct
{
temp = 0; //end loop(2)
PRINT::print_tip_login_sucess();
Sleep(2000);
system("cls");
cout << "Login or Register (L/R) :";
cin >> choice;
if (choice == "L") a_value_that_i_have_no_idea_how_to_name_it = 1;
//login again and end loop(1)
else if (choice == "R") a_value_that_i_have_no_idea_how_to_name_it = 0;
//register and return to loop(1)
}
else
{
Sleep(1000);
system("cls");
PRINT::print_title_login();
PRINT::print_login_name();
cout << tempName1 << endl;
PRINT::print_tip_login_name(check);
PRINT::print_login_password();
//return to loop(2)
}
}
}
else
{
Sleep(1000);
//return to loop(1)
}
}
while (!a_value_that_i_have_no_idea_how_to_name_it) //register
{
system("cls");
break;
}
}
system("pause");
return 0;
}
//define function
//namespace USER
USER::User::User() :m_strName("NULL"), m_strPassword("NULL") {}
USER::User::~User()
{
cout << "end" << endl;
}
void USER::User::set_register_name(string _Rname)
{
m_strRegisterName = _Rname;
}
void USER::User::set_register_password1(string _password1)
{
m_strRegisterPassword1 = _password1;
}
void USER::User::set_register_password2(string _password2)
{
m_strRegisterPassword2 = _password2;
}
void USER::User::set_register_code(string _code)
{
m_strRegisterCode = _code;
}
void USER::User::set_login_name(string _Lname)
{
m_strLoginName = _Lname;
}
void USER::User::set_login_password(string _password)
{
m_strLoginPassword = _password;
}
void USER::User::store_name(string _Stoname)
{
m_strName = _Stoname;
}
void USER::User::store_password(string _Stopassword)
{
m_strPassword = _Stopassword;
}
string USER::User::get_register_name()
{
return m_strRegisterName;
}
string USER::User::get_register_password1()
{
return m_strRegisterPassword1;
}
string USER::User::get_register_password2()
{
return m_strRegisterPassword2;
}
string USER::User::get_register_code()
{
return m_strRegisterCode;
}
string USER::User::get_login_name()
{
return m_strLoginName;
}
string USER::User::get_login_password()
{
return m_strLoginPassword;
}
string USER::User::get_name()
{
return m_strName;
}
string USER::User::get_password()
{
return m_strPassword;
}
int USER::Library::check_register_name(string _Rname)
{
int size = _Rname.size();
if (size < 6)
{
return 1; //too short
}
else if (size > 20)
{
return 2; //too long
}
else if (size >= 6 || size <= 20)//length match
{
bool temp1 = false, temp2 = false;
for (int i = 0; i < size; i++)
{
int iStrMemberNumber = _Rname[i] - '0';
int iStrMemberWord = (int)_Rname[i];
while ((iStrMemberWord >= 33 && iStrMemberWord <= 47) ||
(iStrMemberWord >= 58 && iStrMemberWord <= 64) ||
(iStrMemberWord >= 91 && iStrMemberWord <= 96) ||
(iStrMemberWord >= 123 && iStrMemberWord <= 127)) return 3;  //cotain special character    //contain number
if (iStrMemberNumber >= 0 && iStrMemberNumber <= 9)
temp1 = true;
//contain word
if ((iStrMemberWord >= 65 && iStrMemberWord <= 90) ||
(iStrMemberWord >= 97 && iStrMemberWord <= 122))
temp2 = true; //cout << _Rname[i] << endl;
}
while ((!temp1 && temp2) || (temp1 && !temp2)) return 4;//lack number or words
while (temp1 && temp2) return 0;//correct form
}
return 0;
}
int USER::Library::check_register_password1(string _password1)
{
int size = _password1.size();
if (size < 6)
{
return 1; //too short
}
else if (size > 20)
{
return 2; //too long
}
else if (size >= 6 && size <= 20)
{
int first = (int)_password1[0];
bool temp = false;
if (first >= 65 && first <= 90)
{
for (int i = 1; i < size; i++)
{
int iStrMember = _password1[i] - '0';
if (iStrMember >= 0 && iStrMember <= 9)
{
temp = true;
break;
}
}
while (!temp) return 4;//lack number
while (temp) return 0;//correct form
}
else
{
return 3; //first error
}
}
return 0;
}
int USER::Library::check_register_compare(string _password1, string _password2)
{
if (_password1 == _password2) return 0;//password match
else if (_password1 != _password2) return 1;//password doesnt match
return -1;
}
int USER::Library::check_register_code(string _Ocode, string _Rcode)
{
if (_Ocode == _Rcode) return 0;//code correct
else if (_Ocode != _Rcode) return 1;//code wrong
return -1;
}
int USER::Library::check_login_name(string _Lname, int val)
{
for (int i = 0; i < val; i++)
{
if (get_name(i) == _Lname) return i;//name exist and return its place
}
return -1; //name doesnt exist
}
int USER::Library::check_login_password(string _Lpassword, int val)
{
if (get_password(val) == _Lpassword) return 0;//password correct
else if (get_password(val) != _Lpassword) return 1;//password wrong
return -1;
}
void USER::Library::set_user_data(string _name, string _password, int val)
{
user[val].store_name(_name);
user[val].store_password(_password);
}
void USER::Library::store_data(string _name, string _password, int val)
{
dataLibrary[val][0] = _name;
dataLibrary[val][1] = _password;
}
string USER::Library::get_name(int _val)
{
return user[_val].get_name();
}
string USER::Library::get_password(int _val)
{
return user[_val].get_password();
}
int USER::Library::check_register_name_repeat(string name, int val)
{
for (int k = 0; k < val; k++)
{
if (name == dataLibrary[k][0]) return 1;
}
return 0;
}
string USER::Library::getCode(clock_t start, clock_t finish)
{
clock_t a;
a = finish - start;
int b = ((int)a) % 10;
int c = ((int)a) % 9;
int d = ((int)a) % 5;
int e = ((int)a) % 3;
stringstream s1, s2, s3, s4;
string str1, str2, str3, str4, code;
s1 << b;
s2 << c;
s3 << d;
s4 << e;
s1 >> str1;
s2 >> str2;
s3 >> str3;
s4 >> str4;
code = str1 + str2 + str3 + str4;
return code;
}
//namespace PRINT
inline void PRINT::print_title_register()
{
cout << "--------------------< REGISTER >--------------------" << endl << endl;
}
inline void PRINT::print_title_login()
{
cout << "----------------------< LOGIN >---------------------" << endl << endl;
}
inline void PRINT::print_register_name()
{
cout << "NAME : ";
}
inline void PRINT::print_register_password1()
{
cout << "PASSWORD : ";
}
inline void PRINT::print_register_password2()
{
cout << "TYPE IN PASSWORD AGAIN : ";
}
inline void PRINT::print_register_codeO()
{
cout << "CODE : ";
}
inline void PRINT::print_register_codeI()
{
cout << "TYPE IN CODE : ";
}
inline void PRINT::print_login_name()
{
cout << "NAME : ";
}
inline void PRINT::print_login_password()
{
cout << "PASSWORD : ";
}
inline void PRINT::print_tip_register_name(int _value1)
{
switch (_value1)
{
case 1: cout << endl << '\t' << ">>------Name must have at least 6 elements------<<" << endl; break;
case 2: cout << endl << '\t' << ">>------Name must have at most 20 elements------<<" << endl; break;
case 3: cout << endl << '\t' << ">>------cannot cotain special character------<<" << endl; break;
case 4: cout << endl << '\t' << ">>------lack number or words------<<" << endl; break;
case 0: cout << "                                      √  " << endl; break;
}
}
inline void PRINT::print_tip_register_name_repeat(int value)
{
if (value) cout << endl << '\t' << ">>------such name was registered------<<" << endl;
}
inline void PRINT::print_tip_register_password1(int _value2)
{
switch (_value2)
{
case 1: cout << endl << '\t' << ">>------Password must have at least 6 elements------<<" << endl; break;
case 2: cout << endl << '\t' << ">>------Password must have at most 20 elements------<<" << endl; break;
case 3: cout << endl << '\t' << ">>------First character must be a captial word------<<" << endl; break;
case 4: cout << endl << '\t' << ">>------lack number------<<" << endl; break;
case 0: cout << "                                      √  " << endl; break;
}
}
inline void PRINT::print_tip_register_password2(int _value3)
{
switch (_value3)
{
case 0: cout << "                                      √  " << endl; break;
case 1: cout << endl << endl <<'\t' << ">>------Passwords doesnot match------<<" << endl; break;
}
}
inline void PRINT::print_tip_register_code(int _value4)
{
switch (_value4)
{
case 0: cout << "                                      √  " << endl; break;
case 1: cout << '\t' << ">>------code is wrong------<<" << endl; break;
}
}
inline void PRINT::print_tip_register_sucess()
{
cout << endl << ">>>>>>>>>>  register successfully !  <<<<<<<<<<" << endl;
}
inline void PRINT::print_tip_login_name(int _valueA)
{
if (_valueA >= 0)  cout << "                                      √  " << endl;
else if (_valueA == -1) cout << '\t' << ">>------name doesnt exist------<<" << endl;
}
inline void PRINT::print_tip_login_password(int _valueB)
{
switch (_valueB)
{
case 0: cout << "                                    √  " << endl; break;
case 1: cout << '\t' << ">>------Password wrong------<<" << endl; break;
}
}

inline void PRINT::print_tip_login_sucess()
{
cout << endl << endl << ">>>>>>>>>>  login successfully !  <<<<<<<<<<" << endl;
}

C.明日计划
1.拷贝构造函数继续学习
2.对象指针
0 0
原创粉丝点击