프로그램을 실행하면 회원가입, 로그인, 프로그램 종료가 나오고 각각 1번에서 3번을 선택하도록 만들었습니다.
1번 회원가입을 선택하면 아이디, 비밀번호를 입력하게 되고 가입이 완료되면 시작 화면으로 돌아갑니다.
2번 로그인을 선택하면 아이디, 비밀번호를 입력 받게 되고 둘 중 하나라도 틀리면 문구가 나오며 다시 입력 받도록 나옵니다.
로그인이 완료되면 날짜선택으로 바로 이동합니다.
날짜는 연도를 먼저 선택하고 달을 선택하면 달력이 출력됩니다.
그 후 일을 선택하면 시작 화면으로 되돌아갑니다.
3번을 선택하면 프로그램이 종료됩니다.
캘린더 클래스는 if문, switch문, for문을 주로 사용하였고
회원정보 클래스는 생성자와 getter, setter를 사용하였습니다.
멤버핸들러 클래스는 스캐너와 if문, for문을 주로 사용하였습니다.
마지막으로 메인 클래스는 while문, switch문, 스캐너를 사용하였습니다.
public class DayOfCalendar {
private static boolean isLeapYear(int year) {
boolean leap = false;
if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) {
leap = true;
}
return leap;
}
private static int getDate(int year, int month) {
int tmp = 0;
if (isLeapYear(year)) {
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
tmp = 31;
break;
case 4:
case 6:
case 9:
case 11:
tmp = 30;
break;
case 2:
tmp = 29;
break;
}
} else {
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
tmp = 31;
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
tmp = 30;
} else if (month == 2) {
tmp = 28;
}
}
return tmp;
}
private static int getDayOfWeek(int year, int month) {
int dayOfWeek = 0;
int sum = 0;
for (int i = 1; i < year; i++) {
for (int j = 1; j <= 12; j++) {
sum += getDate(i, j);
}
}
for (int k = 1; k < month; k++) {
sum += getDate(year, k);
}
sum += 1;
dayOfWeek = sum % 7;
return dayOfWeek;
}
public static void calendarprint(int year, int month) {
System.out.printf("\t\t%d년 %d월\n", year, month);
System.out.printf("일\t월\t화\t수\t목\t금\t토\n");
int start = DayOfCalendar.getDayOfWeek(year, month);
int last = getDate(year, month);
for (int i = 1; i <= start; i++) {
System.out.print("\t");
}
for (int i = 1; i <= last; i++) {
System.out.printf("%d\t", i);
start++;
if (start % 7 == 0) {
System.out.println();
}
}
}
}
public class MemberInfo {
private String id, pw, name;
public MemberInfo(String id, String pw, String name) {
this.id = id;
this.pw = pw;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
import java.util.*;
public class MemberHandler {
private MemberInfo[] members;
private int idx;
public MemberHandler(int num) {
members = new MemberInfo[num];
idx = 0;
}
public void memberInsert() {
String id, pw, name;
Scanner scanner = new Scanner(System.in);
System.out.print("아이디 : ");
id = scanner.nextLine();
if (!isUniqueID(id)) {
System.out.println("이미 사용중인 아이디 입니다. \n");
return;
}
System.out.print("암 호 : ");
pw = scanner.nextLine();
System.out.print("이 름 : ");
name = scanner.nextLine();
members[idx] = new MemberInfo(id, pw, name);
idx++;
System.out.println("\n");
System.out.println("가입 완료! \t\n");
}
private boolean isUniqueID(String id) {
if (idx == 0) {
return true;
}
for (int i = 0; i < idx; i++) {
if (members[i].getId().equals(id)) {
return false;
}
}
return true;
}
public void memberLogin() {
Scanner scanner = new Scanner(System.in);
System.out.print("아이디 : ");
String id = scanner.nextLine();
System.out.print("패스워드 : ");
String pw = scanner.nextLine();
String msg = "존재하지 않는 아이디 입니다.";
for (int i = 0; i < idx; i++) {
if (members[i].getId().equals(id)) {
if (members[i].getPw().equals(pw)) {
msg = "로그인 되었습니다.";
} else {
msg = "암호가 잘못되었습니다.";
}
}
}
System.out.println(msg);
if (msg.equals("로그인 되었습니다.")) {
chooseDate();
} else {
memberLogin();
}
}
public void chooseDate() {
Scanner scanner = new Scanner(System.in);
System.out.print("연도 입력 : ");
int year = scanner.nextInt();
if (year < 1) {
System.out.println("정확히 입력해주세요.");
year = scanner.nextInt();
if (year < 1) {
System.out.println("정확히 입력해주세요.");
year = scanner.nextInt();
} else {
System.out.print("월 입력 : ");
int month = scanner.nextInt();
DayOfCalendar.calendarprint(year, month);
System.out.println("\n");
}
} else {
System.out.print("월 입력 : ");
int month = scanner.nextInt();
DayOfCalendar.calendarprint(year, month);
System.out.println("\n");
System.out.println("예약할 날짜 선택 : ");
int day = scanner.nextInt();
System.out.println(day + "일로 예약 완료");
}
}
}
import java.util.*;
import project.DayOfCalendar;
public class MemberManage {
public static void main(String[] args) {
MemberHandler handler = new MemberHandler(100);
while (true) {
System.out.println("---- 풋살 예약 프로그램 ----");
System.out.println("------- 메뉴 선택 -------");
System.out.println("1. 회원가입");
System.out.println("2. 로그인");
System.out.println("3. 종료");
try {
Scanner scanner = new Scanner(System.in);
int choice = scanner.nextInt();
switch (choice) {
case 1:
System.out.println("------------------");
handler.memberInsert();
break;
case 2:
System.out.println("------------------");
handler.memberLogin();
break;
case 3:
System.out.println("------------------");
System.out.println("프로그램 종료");
return;
}
} catch (Exception e) {
System.out.println("잘못 입력했습니다.");
}
}
}
}
존재하지 않는 아이디 입니다.
또는 암호가 잘못되었습니다.
라고 나옵니다.다 끝나면 처음 화면으로 돌아갑니다.
종료를 누르면 프로그램이 종료됩니다.
제가 생각한 것처럼 프로그램으로 구현하는게 역시나 쉽지 않다는 걸 느꼈습니다.
처음에는 '그냥 이렇게 이렇게 만들어서 하면 되지 않을까' 하고 생각했다가 설계를 해보고 코드 구현을 해보다보니 막막한 부분들이 생겼던것 같습니다.
제가 막혔던 부분을 구글에 검색해보면 거의 대부분 자동 완성으로 나왔고 그로인해 많은 도움을 받을 수 있었습니다. 정말 '구글이 없었으면 이 문제들을 어떻게 해결할 수 있었을까' 생각도 들었고, 구글링을 잘 하는 것도 능력이라고 느꼈습니다.
JAVA SWING을 활용해서 좀 더 완성도 있는 결과물을 만들고 싶었지만, 아직 프로그램 짜는 것도 버거워서 활용하지 못한게 조금 아쉬웠습니다.
ppt 만드는 게 꽤 시간과 정성이 많이 들어가는 거 같았습니다. 앞으로 프로젝트를 계속 해야하니까 잘 맞는 프로그램을 찾아봐야겠다고 생각했습니다.