#include <iostream>
#include <string>
#include <vector>
using namespace std;
// 회원가입할 때에 필수 정보들 (Model)
class User {
private:
string id;
string pw;
string name;
int age;
public:
// 기본 생성자
User() { ; }
// 초기 생성자
User(string id, string pw, string name, int age) : id(id), pw(pw), name(name), age(age) {
;
}
// getter (반환)
string getId() {
return id;
}
string getPw() {
return pw;
}
// setter (수정)
void setPw(string pw) {
this->pw = pw;
}
string getName() {
return name;
}
void setName(string name) {
this->name = name;
}
int getAge() {
return age;
}
void setAge(int age) {
this->age = age;
}
// 객체 정보 확인용 메소드
void printData() {
cout << "아이디 : " << id << endl;
cout << "비밀번호 : " << pw << endl;
cout << "이름 : " << id << endl;
cout << "나이 : " << age << endl;
}
};
// 회원가입할 때 모든 내용 함수들을 여기다 때려박기 (Controler)
class UserField {
public:
// 회원들의 정보를 저장할 DB
vector<User>users;
// 아이디 중복검사
bool checkId(string id) {
for (int i = 0; i < users.size(); i++) {
if (users[i].getId() == id) { // 중복이 된다.
return false; // 중복되는 아이디가 있다면 false 리턴
}
}
return true; // 중복되는 아이디가 없다!
}
// 회원가입
void join(const User& user) {
users.push_back(user);
}
};
// 보여주는 곳 (View, MVC)
int main() {
// User u1("Minsoo", "0405", "김민수", 26);
// u1.printData();
UserField uf;
// 만드는 도중에 사용할 테스트용.
uf.users.push_back(User("hogeun", "1234", "류호근", 22));
string mainMsg = "김민수 페이지에 오신 걸 환영합니다. \n메뉴를 선택해주세요.";
string menuMsg = "1.회원가입 \n2.로그인 \n3.프로그램 종료";
string myPageMsg = "1.내 정보 보기 \n2.로그아웃";
string idMsg = "아이디를 입력: ";
string pwMsg = "비밀번호를 입력: ";
string nameMsg = "이름을 입력: ";
string ageMsg = "나이를 입력: ";
string idErrorMsg = "존재하는 아이디가 있습니다.";
string choiceErrorMsg = "다시 입력해주세요.";
string loginErrorMsg = "아이디와 비밀번호를 확인해주세요.";
int choice, age;
string id, pw, name;
bool check;
while (true) {
cout << mainMsg << endl;
cout << menuMsg << endl;
cin >> choice;
if (choice == 3) {
break;
}
switch (choice) {
case 1: // 회원가입
do {
cout << idMsg;
cin >> id;
check = uf.checkId(id);
if (!check) {
cout << idErrorMsg << endl;
}
} while (!check);
cout << pwMsg;
cin >> pw;
cout << nameMsg;
cin >> name;
cout << ageMsg;
cin >> age;
uf.join(User(id, pw, name, age));
cout << "회원가입에 성공하였습니다. \n" << endl;
break;
case 2: // 로그인
break;
default:
break;
} // 메인메뉴 switch 닫는 중괄호
} // 큰 while문 닫는 중괄호
return 0;
}
#include <iostream>
#include <string>
#include <vector>
using namespace std;
// 회원가입할 때에 필수 정보들 (Model)
class User {
private:
string id;
string pw;
string name;
int age;
public:
// 기본 생성자
User() { ; }
// 초기 생성자
User(string id, string pw, string name, int age) : id(id), pw(pw), name(name), age(age) {
;
}
// getter (반환)
string getId() {
return id;
}
string getPw() {
return pw;
}
// setter (수정)
void setPw(string pw) {
this->pw = pw;
}
string getName() {
return name;
}
void setName(string name) {
this->name = name;
}
int getAge() {
return age;
}
void setAge(int age) {
this->age = age;
}
// 객체 정보 확인용 메소드
void printData() {
cout << "아이디 : " << id << endl;
cout << "비밀번호 : " << pw << endl;
cout << "이름 : " << id << endl;
cout << "나이 : " << age << endl;
}
};
// 회원가입할 때 모든 내용 함수들을 여기다 때려박기 (Controler)
class UserField {
public:
// 회원들의 정보를 저장할 DB
vector<User>users;
// 아이디 중복검사
int checkId(string id) {
for (int i = 0; i < users.size(); i++) {
if (users[i].getId() == id) { // 중복이 된다.
return i; // 중복되는 아이디가 있다면 해당 인덱스 번호를 리턴
}
}
return -1; // 중복되는 아이디가 없다!
}
// 회원가입
void join(const User& user) {
users.push_back(user);
}
// 로그인
int login(string id, string pw) {
int idx = checkId(id);
if (idx == -1) {
return idx;
}
User user = users[idx];
if (user.getPw() == pw) {
return idx;
}
else {
return -1;
}
// 비밀번호 틀렸을 때를 잡지 않음.
// return idx;
}
void changeName(string name, int idx) {
users[idx].setName(name);
}
};
// 보여주는 곳 (View, MVC)
int main() {
// User u1("Minsoo", "0405", "김민수", 26);
// u1.printData();
UserField uf;
// 만드는 도중에 사용할 테스트용.
uf.users.push_back(User("hogeun", "1234", "류호근", 22));
string mainMsg = "김민수 페이지에 오신 걸 환영합니다. \n메뉴를 선택해주세요.";
string menuMsg = "1.회원가입 \n2.로그인 \n3.프로그램 종료";
string myPageMsg = "1.내 정보 보기 \n 2.이름변경 \n3.로그아웃";
string idMsg = "아이디를 입력: ";
string pwMsg = "비밀번호를 입력: ";
string nameMsg = "이름을 입력: ";
string ageMsg = "나이를 입력: ";
string idErrorMsg = "존재하는 아이디가 있습니다.";
string choiceErrorMsg = "다시 입력해주세요.";
string loginErrorMsg = "아이디와 비밀번호를 확인해주세요.";
int choice, age, loginUserIdx;
string id, pw, name;
bool check;
while (true) {
cout << mainMsg << endl;
cout << menuMsg << endl;
cin >> choice;
if (choice == 3) {
break;
}
switch (choice) {
case 1: // 회원가입
do {
cout << idMsg;
cin >> id;
check = uf.checkId(id) == -1;
if (!check) {
cout << idErrorMsg << endl;
}
} while (!check);
cout << pwMsg;
cin >> pw;
cout << nameMsg;
cin >> name;
cout << ageMsg;
cin >> age;
uf.join(User(id, pw, name, age));
cout << "회원가입에 성공하였습니다. \n" << endl;
break;
case 2: // 로그인
cout << idMsg;
cin >> id;
cout << pwMsg;
cin >> pw;
loginUserIdx = uf.login(id, pw);
if (loginUserIdx == -1) {
cout << loginErrorMsg << endl;
continue;
}
cout << "\n" << uf.users[loginUserIdx].getName()
<< "님 환영합니다. \n" << endl;
while (true) {
cout << myPageMsg << endl;
cin >> choice;
if (choice == 3) {
break;
}
if (choice == 1) {
uf.users[loginUserIdx].printData();
}
else if (choice == 2) {
cout << "새 " << nameMsg;
cin >> name;
uf.changeName(name, loginUserIdx);
cout << "변경 완료" << endl;
}
} // 마이 페이지 while
break;
default:
cout << choiceErrorMsg << endl;
break;
} // 메인메뉴 switch 닫는 중괄호
} // 큰 while문 닫는 중괄호
return 0;
}
'C++언어 공부 > 개념 공부' 카테고리의 다른 글
2024.02.06 C++ 언어 공부 10일 차 (학원 방특 끝, vector) (0) | 2024.02.12 |
---|---|
2024.02.05 C++ 언어 공부 9일 차 (template(2), 매크로 & 인라인 함수) (1) | 2024.02.12 |
2024.02.05 C++ 언어 공부 9일 차 (template (1)) (0) | 2024.02.08 |
2024.02.02 C++ 언어 공부 8일 차 (exception) (0) | 2024.02.08 |
2024.02.02 C++ 언어 공부 8일 차 (오퍼레이터) (0) | 2024.02.08 |