package accountbookDao;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import accountbookDto.AccountBookDto;
import accountbookDto.AccountbookDto2;
import accountbookDto.AccountBookDto3;
import singleton.SingleTon;
public class AccountBookDaoMpl implements AccountBookDao {
Scanner sc = new Scanner(System.in);
//예산 설정
@Override
public void budget() {
while(true){
System.out.println("=========== 예산관리===========" );
System.out.println(" [1] 예산 설정");
System.out.println(" [2] 예산 현황");
System.out.println(" [3] 나가기");
System.out.println(" 원하시는 작업 번호를 선택하세요. ");
System.out.println("=================================");
System.out.print(" = >");
int work1 = sc.nextInt();
sc.nextLine(); // 버퍼에 남아있는 엔터(\n)를 청소
switch(work1) {
case 1:
System.out.println("=========== 예산 설정===========" );
System.out.println(" - 월별 예산을 설정합니다 ");
System.out.println(" 1. 가계부 이름 -> ");
System.out.println(" 2. 기간 설정 -> 예) 1998-02");
System.out.println(" 3. 예산 -> 예) 2000000 ");
System.out.println("============================" );
System.out.print("1. -> ");
String book_name = sc.next();
System.out.print("2. -> ");
String book_budget_month = sc.next();
System.out.print("3. -> ");
int book_budget_money = sc.nextInt();
sc.nextLine();
System.out.println("============================" );
//케이스 2에서 꺼내올 상자 생성
AccountBookDto dto = new AccountBookDto(); // 빈상자 생성
// 2. dto에 이름, 기간. 금액 담기
dto.setAccountbookname(book_name); // 이름 따로 담기
dto.setBudget_Month(book_budget_month); // 기간 따로 담기
dto.setUser_budget(book_budget_money); // 금액 따로 담기
// 3. dto 상자 리스트에 추가하기
SingleTon.getInstance().budgetList.add(dto);
System.out.println(book_name + " 가계부 예산 설정이 완료되었습니다.");
System.out.println( book_budget_month + " 월에 사용하실 수 있는 금액은 " +book_budget_money + " 원 입니다. ");
break;
case 2:
System.out.println("=========== 예산 현황===========" );
System.out.println(" 원하시는 가계부와 예산을 입력해 주세요 ");
System.out.println(" 1. 가계부 이름 -> ");
System.out.println(" 2. 조회하실 월 -> 예 : 1988-02");
System.out.println("============================" );
System.out.print("1. -> ");
String now_budget_name = sc.next();
System.out.print("2. -> ");
String now_budget_mont = sc.next();
sc.nextLine();
System.out.println("============================" );
AccountBookDto founddto = null;
for (AccountBookDto i : SingleTon.getInstance().budgetList) {
if(i.getAccountbookname().equals(now_budget_name)&& i.getBudget_Month().equals(now_budget_mont)) {
founddto= i;
break;
}
}
if (founddto != null) {
//founddto 상자에서 꺼낸 getUser_budget 데이터를 find_budget_money 에 담기
int find_budget_money = founddto.getUser_budget();
//남은 예산
int now_buget_total = find_budget_money - 0;
System.out.println(" 가계부 이름: " + founddto.getAccountbookname());
System.out.println(" 조회하신 월 : " + founddto.getBudget_Month());
System.out.println(" 조회하신 기간 예산: " + find_budget_money + "원");
System.out.println(" 남은 예산: " + now_buget_total + 0 + "원");
}
else { System.out.println(" 입력하신 조건과 일치하는 정보가 없습니다.");}
break;
case 3:
} break;
}
}
//작성
@Override
public void insert() {
System.out.println("========== 가계부 작성하기 ==========" );
System.out.println(" [1] 수입");
System.out.println(" [2] 지출");
System.out.println(" [3] 나가기");
System.out.println(" 원하시는 작업 번호를 선택하세요. ");
System.out.println("=================================");
System.out.print(" = >");
int work2 = sc.nextInt();
while(true){
switch(work2) {
case 1:
System.out.println("=========== 수입 작성 ===========" );
System.out.println(" - 수입 내용을 작성합니다 ");
System.out.println(" 1. 가계부 이름 -> ");
System.out.println(" 2. 수입 날짜 -> ");
System.out.println(" 3. 수입 제목 -> 예) 1998-02-22");
System.out.println(" 4. 수입 금액 -> 예) 2000000 ");
System.out.println(" 5. 세부 내용 -> ");
System.out.println("============================" );
System.out.print("1. -> ");
String insert_accountbookname = sc.next();
//빈상자 만들기 ,비교해서 있으면 상자에 담기
AccountBookDto foundBudget = null;
for (AccountBookDto i : SingleTon.getInstance().budgetList) {
if (i.getAccountbookname().equals(insert_accountbookname)) {
foundBudget = i;
break;
}
}
//가계부 없을때
if (foundBudget == null) {
System.out.println( insert_accountbookname + "로 설정된 가계부가 없습니다.");
System.out.println(" 메인 메뉴의 [1] 예산 메뉴에서 먼저 가계부를 생성해 주세요.");
System.out.println("============================" );
return; // insert() 메소 즉시 종료
}
System.out.print("2. -> ");
String insert_earnings_date = sc.next();
System.out.print("3. -> ");
String insert_earnings_title = sc.next();
System.out.print("4. -> ");
int insert_earnings_money = sc.nextInt();
System.out.print("5. -> ");
String insert_earnings_content = sc.next();
sc.nextLine();
System.out.println("============================" );
AccountbookDto2 dto2 = new AccountbookDto2();
//가계부 이름에 수입 넣기 -> 나중에 수입 호출하려고
dto2.setEarnings(foundBudget.getAccountbookname());
dto2.setDate_earnings(insert_earnings_date);
dto2.setTitle_earnings(insert_earnings_title);
dto2.setMoney_earnings(insert_earnings_money);
dto2.setContent_earnings(insert_earnings_content);
SingleTon.getInstance().earningsList.add(dto2);
System.out.println("[" + foundBudget.getAccountbookname() + "] 가계부에 수입 내역이 성공적으로 추가되었습니다.");
System.out.println(" 수입 날짜: " + insert_earnings_date);
System.out.println(" 수입 제목: " + insert_earnings_title);
System.out.println(" 수입 금액: " + insert_earnings_money + "원");
System.out.println(" 수입 세부내용: " + insert_earnings_content);
break;
case 2:
System.out.println("=========== 지출 작성 ===========" );
System.out.println(" - 지출 내용을 작성합니다 ");
System.out.println(" 1. 가계부 이름 -> ");
System.out.println(" 2. 수입 날짜 -> ");
System.out.println(" 3. 수입 제목 -> 예) 1998-02-22");
System.out.println(" 4. 수입 금액 -> 예) 2000000 ");
System.out.println(" 5. 세부 내용 -> ");
System.out.println("============================" );
System.out.print("1. -> ");
String expenditure_bookname2 = sc.next();
//빈상자 만들기 ,비교해서 있으면 상자에 담기
AccountBookDto foundBudget2 = null;
for (AccountBookDto i : SingleTon.getInstance().budgetList) {
if (i.getAccountbookname().equals(expenditure_bookname2)) {
foundBudget2 = i;
break;
}
}
//가계부 없을때
if (foundBudget2 == null) {
System.out.println( expenditure_bookname2 + "로 설정된 가계부가 없습니다.");
System.out.println(" 메인 메뉴의 [1] 예산 메뉴에서 먼저 가계부를 생성해 주세요.");
System.out.println("============================" );
return; // insert() 메소 즉시 종료
}
System.out.print("2. -> ");
String expenditure_date = sc.next();
System.out.print("3. -> ");
String expenditure_title = sc.next();
System.out.print("4. -> ");
int expenditure_money = sc.nextInt();
System.out.print("5. -> ");
String expenditure_content = sc.next();
sc.nextLine();
System.out.println("============================" );
AccountBookDto3 dto3 = new AccountBookDto3();
//가계부 이름에 지출넣기 -> 나중에 지출 호출하려고
dto3.setExpenditure(foundBudget2.getAccountbookname());
dto3.setDate_expenditures(expenditure_content);
dto3.setTitle_expenditures(expenditure_title);
dto3.setMoney_expenditures(expenditure_money);
dto3.setContent_expenditures(expenditure_content);
SingleTon.getInstance().expenditureList.add(dto3);
System.out.println("[" + foundBudget2.getAccountbookname() + "] 가계부에 지출 내역이 성공적으로 추가되었습니다.");
System.out.println(" 수입 날짜: " + expenditure_date);
System.out.println(" 수입 제목: " + expenditure_title);
System.out.println(" 수입 금액: " + expenditure_money + "원");
System.out.println(" 수입 세부내용: " + expenditure_content);
break;
case 3:
} break;
}//와일문 닫기
}//인서트문 닫기
@Override
public void delete() {
System.out.println("============삭제============" );
System.out.println(" [1] 해당일 수입 내역삭제 ");
System.out.println(" [2] 해당일 지출 내역삭제 ");
System.out.println(" [3] 전체 삭제 (모든 데이터가 삭제 됩니다) ");
System.out.println(" [4] 나가기");
System.out.println(" 원하시는 작업 번호를 선택하세요. ");
System.out.println("=================================");
System.out.print(" = >");
int work3= sc.nextInt();
while(true){
switch(work3) {
case 1:
System.out.println("==========해당일 수입 내역삭제 ==========" );
System.out.println(" 해당일 수입 내용을 전부 삭제합니다 ");
System.out.println(" 해당일을 입력하세요 예)1998-02 ");
System.out.println("============================" );
System.out.print(" = >");
String delete_earningsdate=sc.next();
// 1. 삭제할 대상을 담아둘 리스트 생성
List<AccountbookDto2> deleteList1 = new ArrayList<>();
// 2. 지출 리스트를 돌면서 날짜가 일치하는 수입내역을 모두 찾아서 deleteList에 담기
for (AccountbookDto2 delete_box1 : SingleTon.getInstance().earningsList) {
if (delete_box1.getDate_earnings().equals(delete_earningsdate)) {
deleteList1.add(delete_box1);
}
}
// 3. 찾은 데이터가 있으면 한꺼번에 삭제
if (!deleteList1.isEmpty()) {
SingleTon.getInstance().expenditureList.removeAll(deleteList1);
System.out.println(deleteList1.size() + "개의 수입 내역이 삭제되었습니다.");
} else {
System.out.println("해당 날짜에 수입 내역이 존재하지 않습니다.");
}
break;
case 2:
System.out.println("==========해당일 지출 내역삭제 ==========" );
System.out.println(" 해당일 지출 내용을 전부 삭제합니다 ");
System.out.println(" 해당일을 입력하세요 예)1998-02 ");
System.out.println("============================" );
System.out.print(" = >");
String delete_expendituredate=sc.next();
List<AccountBookDto3> deleteList2 = new ArrayList<>();
for (AccountBookDto3 delete_box2 : SingleTon.getInstance().expenditureList) {
if (delete_box2.getDate_expenditures().equals(delete_expendituredate)) {
deleteList2.add(delete_box2);
}
}
if (!deleteList2.isEmpty()) {
SingleTon.getInstance().expenditureList.removeAll(deleteList2);
System.out.println(deleteList2.size() + "개의 지출 내역이 삭제되었습니다.");
} else {
System.out.println("해당 날짜에 지출 내역이 존재하지 않습니다.");
}
break;
case 3:
break;
case 4:
}break;
}
}
@Override
public void update() {
System.out.println("=========== 수정하기===========" );
System.out.println(" [1] 예산 수정");
System.out.println(" [2] 일별 수입 내용 수정");
System.out.println(" [3] 일별 지출 내용 수정");
System.out.println(" [3] 나가기");
System.out.println(" 원하시는 작업 번호를 선택하세요. ");
System.out.println("=================================");
System.out.print(" = >");
int work4 = sc.nextInt();
while(true){
switch(work4) {
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
}break;
}
}
@Override
public void select() {
System.out.println("=========== 검색하기===========" );
System.out.println(" [1] 날짜로 검색");
System.out.println(" [2] 제목으로 검색");
System.out.println(" [3] 나가기");
System.out.println(" 원하시는 작업 번호를 선택하세요. ");
System.out.println("=================================");
System.out.print(" = >");
int work5 = sc.nextInt(); //1번 2번 중 선택하게 만들기
while(true){
switch(work5) {
case 1:
break;
case 2:
break;
case 3:
}break;
}
}
@Override
public void allprint() {
System.out.println("============보기============" );
System.out.println(" [1] 해당월로 찾아 내용 보기 ");
System.out.println(" [2] 해당일로 찾아 내용 보기 ");
System.out.println(" [2] 제목으로 찾아 내용 보기 ");
System.out.println(" [3] 월별 결산 합계 ");
System.out.println(" [4] 일일 결산 합계 ");
System.out.println(" [5] 나가기");
System.out.println(" 원하시는 작업 번호를 선택하세요. ");
System.out.println("=================================");
System.out.print(" = >");
int work6= sc.nextInt();
while(true){
switch(work6) {
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
}break;
}
}
@Override
public void file_Load() {
}
@Override
public void file_Save() {
}
@Override
public void out() {
}
}
package accountbookDto;
public class AccountBookDto {
//예산 입력
private String accountbookname; //가계부 이름
private int user_budget; //월별 예산
private String budget_Month; //예산 설정 기간
public AccountBookDto() {
}
//1. 예산
//using
public AccountBookDto(String accountbookname, int user_budget, String budget_Month) {
super();
this.accountbookname = accountbookname;
this.user_budget = user_budget;
this.budget_Month = budget_Month;
}
//get/set
public String getAccountbookname() {
return accountbookname;
}
public void setAccountbookname(String accountbookname) {
this.accountbookname = accountbookname;
}
public int getUser_budget() {
return user_budget;
}
public void setUser_budget(int user_budget) {
this.user_budget = user_budget;
}
public String getBudget_Month() {
return budget_Month;
}
public void setBudget_Month(String budget_Month) {
this.budget_Month = budget_Month;
}
@Override
public String toString() {
return " [ 가계부 이름 =" + accountbookname + ", 예산 기간 = " + budget_Month +", 예산 =" + user_budget + "]";
}
}
package accountbookDto;
public class AccountbookDto2 {
private String earnings; //수입
private String date_earnings; //날짜
private String title_earnings; //제목
private int money_earnings; //금액
private String content_earnings; //세부내용
public AccountbookDto2() {
}
//using
public AccountbookDto2(String earnings, String date_earnings, String title_earnings, int money_earnings,
String content_earnings) {
super();
this.earnings = earnings;
this.date_earnings = date_earnings;
this.title_earnings = title_earnings;
this.money_earnings = money_earnings;
this.content_earnings = content_earnings;
}
//get, set
public String getEarnings() {
return earnings;
}
public void setEarnings(String earnings) {
this.earnings = earnings;
}
public String getDate_earnings() {
return date_earnings;
}
public void setDate_earnings(String date_earnings) {
this.date_earnings = date_earnings;
}
public String getTitle_earnings() {
return title_earnings;
}
public void setTitle_earnings(String title_earnings) {
this.title_earnings = title_earnings;
}
public int getMoney_earnings() {
return money_earnings;
}
public void setMoney_earnings(int money_earnings) {
this.money_earnings = money_earnings;
}
public String getContent_earnings() {
return content_earnings;
}
public void setContent_earnings(String content_earnings) {
this.content_earnings = content_earnings;
}
//to string
@Override
public String toString() {
return "수입 [" + ", 날짜 : " + date_earnings + ", 제목 : "
+ title_earnings + ", 금액 : " + money_earnings + ", 세부내용 : " + content_earnings + "]";
}
public void earnings_bookname(String accountbookname) {
// TODO Auto-generated method stub
}
}
package accountbookDto;
public class AccountBookDto3 {
private String expenditure; //지출
private String date_expenditures; //날짜
private String title_expenditures; //제목
private int money_expenditures; //금액
private String content_expenditures; //세부내용
public AccountBookDto3() {
}
public AccountBookDto3(String expenditure, String date_expenditures, String title_expenditures,
int money_expenditures, String content_expenditures) {
super();
this.expenditure = expenditure;
this.date_expenditures = date_expenditures;
this.title_expenditures = title_expenditures;
this.money_expenditures = money_expenditures;
this.content_expenditures = content_expenditures;
}
public String getExpenditure() {
return expenditure;
}
public void setExpenditure(String expenditure) {
this.expenditure = expenditure;
}
public String getDate_expenditures() {
return date_expenditures;
}
public void setDate_expenditures(String date_expenditures) {
this.date_expenditures = date_expenditures;
}
public String getTitle_expenditures() {
return title_expenditures;
}
public void setTitle_expenditures(String title_expenditures) {
this.title_expenditures = title_expenditures;
}
public int getMoney_expenditures() {
return money_expenditures;
}
public void setMoney_expenditures(int money_expenditures) {
this.money_expenditures = money_expenditures;
}
public String getContent_expenditures() {
return content_expenditures;
}
public void setContent_expenditures(String content_expenditures) {
this.content_expenditures = content_expenditures;
}
@Override
public String toString() {
return expenditure + "지출 날짜 =" + date_expenditures
+ "지출 제목=" + title_expenditures + "지출 금액 =" + money_expenditures
+ "세부내용" + content_expenditures + "]";
}
}
package accountbookDao;
public interface AccountBookDao {
// 1. 예산 계산 , 예산 계산한 내용 자동 저장 -> (가계부 이름 , 기간별 예산 설정, 남은 예산 계산)
public void budget(); // 1. 예산 설정하기 -> 예산 생성자 -가계부 이름 , 기간별 예산 설정 /dto
// 2. 가계부 작성하기 - insert
public void insert(); // 수입,지출 -> 수입 생성자 -> 추가한 내용 자동 저장 ( 날짜, 수입/ 지출, 제목, 세부내용, 금액, ) /dto
// 3. 삭제 -> 삭제한 내용 자동 저장
public void delete (); // 일별로 검색해서 해당일에 입력된 내용 불러와서 삭제하기
// 전체 내용 삭제하기
// 4. 수정 -> 수정한 내용 자동 저장
public void update();
//_budget(); // 예산 수정하기
//public void update_earnings_date(); // 일별로 검색해서 해당일에 입력된 수입 내용 불러와서 수정
//public void update_expenditure_date(); // 일별로 검색해서 해당일에 입력된 지출 내용 불러와서 수정
//
// 5. 검색
public void select();
//_Date(); //날짜검색 -> 날짜 포함하고 있으면 검색1
//public void select_Title(); //내용검색 -> 내용 포함하고 있으면 검색 2
// 6. 보기(출력)
public void allprint();
//_month(); //월별출력 1
//public void allprint_date(); //일별 출력 2
//public void allprint_title(); //제목포함시 출력 2
//public void Total_month(); //월별결산합계 검색 3
//public void Total_date(); //일별결산합계 검색 4
// 7. 불러오기
public void file_Load(); //데이터 불러오기 -이전에 저장된 모든 데이터 불러오기
// 8. 저장하기
public void file_Save(); //데이터 저장 -현재 입력한 내용 저장 (안 보여도 됨 )
// 9.프로그램 종료
public void out(); // 프로그램 종료 - 프로그램 종료시 수정한 내용 모두 저장(?)
}
package accountbookDao;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import accountbookDto.AccountBookDto;
import accountbookDto.AccountbookDto2;
import accountbookDto.AccountBookDto3;
import singleton.SingleTon;
public class AccountBookDaoMpl implements AccountBookDao {
Scanner sc = new Scanner(System.in);
//예산 설정
@Override
public void budget() {
while(true){
System.out.println("=========== 예산관리===========" );
System.out.println(" [1] 예산 설정");
System.out.println(" [2] 예산 현황");
System.out.println(" [3] 나가기");
System.out.println(" 원하시는 작업 번호를 선택하세요. ");
System.out.println("=================================");
System.out.print(" = >");
int work1 = sc.nextInt();
sc.nextLine(); // 버퍼에 남아있는 엔터(\n)를 청소
switch(work1) {
case 1:
System.out.println("=========== 예산 설정===========" );
System.out.println(" - 월별 예산을 설정합니다 ");
System.out.println(" 1. 가계부 이름 -> ");
System.out.println(" 2. 기간 설정 -> 예) 1998-02");
System.out.println(" 3. 예산 -> 예) 2000000 ");
System.out.println("============================" );
System.out.print("1. -> ");
String book_name = sc.next();
System.out.print("2. -> ");
String book_budget_month = sc.next();
System.out.print("3. -> ");
int book_budget_money = sc.nextInt();
sc.nextLine();
System.out.println("============================" );
//케이스 2에서 꺼내올 상자 생성
AccountBookDto dto = new AccountBookDto(); // 빈상자 생성
// 2. dto에 이름, 기간. 금액 담기
dto.setAccountbookname(book_name); // 이름 따로 담기
dto.setBudget_Month(book_budget_month); // 기간 따로 담기
dto.setUser_budget(book_budget_money); // 금액 따로 담기
// 3. dto 상자 리스트에 추가하기
SingleTon.getInstance().budgetList.add(dto);
System.out.println(book_name + " 가계부 예산 설정이 완료되었습니다.");
System.out.println( book_budget_month + " 월에 사용하실 수 있는 금액은 " +book_budget_money + " 원 입니다. ");
break;
case 2:
System.out.println("=========== 예산 현황===========" );
System.out.println(" 원하시는 가계부와 예산을 입력해 주세요 ");
System.out.println(" 1. 가계부 이름 -> ");
System.out.println(" 2. 조회하실 월 -> 예 : 1988-02");
System.out.println("============================" );
System.out.print("1. -> ");
String now_budget_name = sc.next();
System.out.print("2. -> ");
String now_budget_mont = sc.next();
sc.nextLine();
System.out.println("============================" );
AccountBookDto founddto = null;
for (AccountBookDto i : SingleTon.getInstance().budgetList) {
if(i.getAccountbookname().equals(now_budget_name)&& i.getBudget_Month().equals(now_budget_mont)) {
founddto= i;
break;
}
}
if (founddto != null) {
//founddto 상자에서 꺼낸 getUser_budget 데이터를 find_budget_money 에 담기
int find_budget_money = founddto.getUser_budget();
//남은 예산
int now_buget_total = find_budget_money - 0;
System.out.println(" 가계부 이름: " + founddto.getAccountbookname());
System.out.println(" 조회하신 월 : " + founddto.getBudget_Month());
System.out.println(" 조회하신 기간 예산: " + find_budget_money + "원");
System.out.println(" 남은 예산: " + now_buget_total + 0 + "원");
}
else { System.out.println(" 입력하신 조건과 일치하는 정보가 없습니다.");}
break;
case 3:
} break;
}
}
//작성
@Override
public void insert() {
System.out.println("========== 가계부 작성하기 ==========" );
System.out.println(" [1] 수입");
System.out.println(" [2] 지출");
System.out.println(" [3] 나가기");
System.out.println(" 원하시는 작업 번호를 선택하세요. ");
System.out.println("=================================");
System.out.print(" = >");
int work2 = sc.nextInt();
while(true){
switch(work2) {
case 1:
System.out.println("=========== 수입 작성 ===========" );
System.out.println(" - 수입 내용을 작성합니다 ");
System.out.println(" 1. 가계부 이름 -> ");
System.out.println(" 2. 수입 날짜 -> ");
System.out.println(" 3. 수입 제목 -> 예) 1998-02-22");
System.out.println(" 4. 수입 금액 -> 예) 2000000 ");
System.out.println(" 5. 세부 내용 -> ");
System.out.println("============================" );
System.out.print("1. -> ");
String insert_accountbookname = sc.next();
//빈상자 만들기 ,비교해서 있으면 상자에 담기
AccountBookDto foundBudget = null;
for (AccountBookDto i : SingleTon.getInstance().budgetList) {
if (i.getAccountbookname().equals(insert_accountbookname)) {
foundBudget = i;
break;
}
}
//가계부 없을때
if (foundBudget == null) {
System.out.println( insert_accountbookname + "로 설정된 가계부가 없습니다.");
System.out.println(" 메인 메뉴의 [1] 예산 메뉴에서 먼저 가계부를 생성해 주세요.");
System.out.println("============================" );
return; // insert() 메소 즉시 종료
}
System.out.print("2. -> ");
String insert_earnings_date = sc.next();
System.out.print("3. -> ");
String insert_earnings_title = sc.next();
System.out.print("4. -> ");
int insert_earnings_money = sc.nextInt();
System.out.print("5. -> ");
String insert_earnings_content = sc.next();
sc.nextLine();
System.out.println("============================" );
AccountbookDto2 dto2 = new AccountbookDto2();
//가계부 이름에 수입 넣기 -> 나중에 수입 호출하려고
dto2.setEarnings(foundBudget.getAccountbookname());
dto2.setDate_earnings(insert_earnings_date);
dto2.setTitle_earnings(insert_earnings_title);
dto2.setMoney_earnings(insert_earnings_money);
dto2.setContent_earnings(insert_earnings_content);
SingleTon.getInstance().earningsList.add(dto2);
System.out.println("[" + foundBudget.getAccountbookname() + "] 가계부에 수입 내역이 성공적으로 추가되었습니다.");
System.out.println(" 수입 날짜: " + insert_earnings_date);
System.out.println(" 수입 제목: " + insert_earnings_title);
System.out.println(" 수입 금액: " + insert_earnings_money + "원");
System.out.println(" 수입 세부내용: " + insert_earnings_content);
break;
case 2:
System.out.println("=========== 지출 작성 ===========" );
System.out.println(" - 지출 내용을 작성합니다 ");
System.out.println(" 1. 가계부 이름 -> ");
System.out.println(" 2. 수입 날짜 -> ");
System.out.println(" 3. 수입 제목 -> 예) 1998-02-22");
System.out.println(" 4. 수입 금액 -> 예) 2000000 ");
System.out.println(" 5. 세부 내용 -> ");
System.out.println("============================" );
System.out.print("1. -> ");
String expenditure_bookname2 = sc.next();
//빈상자 만들기 ,비교해서 있으면 상자에 담기
AccountBookDto foundBudget2 = null;
for (AccountBookDto i : SingleTon.getInstance().budgetList) {
if (i.getAccountbookname().equals(expenditure_bookname2)) {
foundBudget2 = i;
break;
}
}
//가계부 없을때
if (foundBudget2 == null) {
System.out.println( expenditure_bookname2 + "로 설정된 가계부가 없습니다.");
System.out.println(" 메인 메뉴의 [1] 예산 메뉴에서 먼저 가계부를 생성해 주세요.");
System.out.println("============================" );
return; // insert() 메소 즉시 종료
}
System.out.print("2. -> ");
String expenditure_date = sc.next();
System.out.print("3. -> ");
String expenditure_title = sc.next();
System.out.print("4. -> ");
int expenditure_money = sc.nextInt();
System.out.print("5. -> ");
String expenditure_content = sc.next();
sc.nextLine();
System.out.println("============================" );
AccountBookDto3 dto3 = new AccountBookDto3();
//가계부 이름에 지출넣기 -> 나중에 지출 호출하려고
dto3.setExpenditure(foundBudget2.getAccountbookname());
dto3.setDate_expenditures(expenditure_content);
dto3.setTitle_expenditures(expenditure_title);
dto3.setMoney_expenditures(expenditure_money);
dto3.setContent_expenditures(expenditure_content);
SingleTon.getInstance().expenditureList.add(dto3);
System.out.println("[" + foundBudget2.getAccountbookname() + "] 가계부에 지출 내역이 성공적으로 추가되었습니다.");
System.out.println(" 수입 날짜: " + expenditure_date);
System.out.println(" 수입 제목: " + expenditure_title);
System.out.println(" 수입 금액: " + expenditure_money + "원");
System.out.println(" 수입 세부내용: " + expenditure_content);
break;
case 3:
} break;
}//와일문 닫기
}//인서트문 닫기
@Override
public void delete() {
System.out.println("============삭제============" );
System.out.println(" [1] 해당일 수입 내역삭제 ");
System.out.println(" [2] 해당일 지출 내역삭제 ");
System.out.println(" [3] 전체 삭제 (모든 데이터가 삭제 됩니다) ");
System.out.println(" [4] 나가기");
System.out.println(" 원하시는 작업 번호를 선택하세요. ");
System.out.println("=================================");
System.out.print(" = >");
int work3= sc.nextInt();
while(true){
switch(work3) {
case 1:
System.out.println("==========해당일 수입 내역삭제 ==========" );
System.out.println(" 해당일 수입 내용을 전부 삭제합니다 ");
System.out.println(" 해당일을 입력하세요 예)1998-02 ");
System.out.println("============================" );
System.out.print(" = >");
String delete_earningsdate=sc.next();
// 1. 삭제할 대상을 담아둘 리스트 생성
List<AccountbookDto2> deleteList1 = new ArrayList<>();
// 2. 지출 리스트를 돌면서 날짜가 일치하는 수입내역을 모두 찾아서 deleteList에 담기
for (AccountbookDto2 delete_box1 : SingleTon.getInstance().earningsList) {
if (delete_box1.getDate_earnings().equals(delete_earningsdate)) {
deleteList1.add(delete_box1);
}
}
// 3. 찾은 데이터가 있으면 한꺼번에 삭제
if (!deleteList1.isEmpty()) {
SingleTon.getInstance().expenditureList.removeAll(deleteList1);
System.out.println(deleteList1.size() + "개의 수입 내역이 삭제되었습니다.");
} else {
System.out.println("해당 날짜에 수입 내역이 존재하지 않습니다.");
}
break;
case 2:
System.out.println("==========해당일 지출 내역삭제 ==========" );
System.out.println(" 해당일 지출 내용을 전부 삭제합니다 ");
System.out.println(" 해당일을 입력하세요 예)1998-02 ");
System.out.println("============================" );
System.out.print(" = >");
String delete_expendituredate=sc.next();
List<AccountBookDto3> deleteList2 = new ArrayList<>();
for (AccountBookDto3 delete_box2 : SingleTon.getInstance().expenditureList) {
if (delete_box2.getDate_expenditures().equals(delete_expendituredate)) {
deleteList2.add(delete_box2);
}
}
if (!deleteList2.isEmpty()) {
SingleTon.getInstance().expenditureList.removeAll(deleteList2);
System.out.println(deleteList2.size() + "개의 지출 내역이 삭제되었습니다.");
} else {
System.out.println("해당 날짜에 지출 내역이 존재하지 않습니다.");
}
break;
case 3:
break;
case 4:
}break;
}
}
@Override
public void update() {
System.out.println("=========== 수정하기===========" );
System.out.println(" [1] 예산 수정");
System.out.println(" [2] 일별 수입 내용 수정");
System.out.println(" [3] 일별 지출 내용 수정");
System.out.println(" [3] 나가기");
System.out.println(" 원하시는 작업 번호를 선택하세요. ");
System.out.println("=================================");
System.out.print(" = >");
int work4 = sc.nextInt();
while(true){
switch(work4) {
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
}break;
}
}
@Override
public void select() {
System.out.println("=========== 검색하기===========" );
System.out.println(" [1] 날짜로 검색");
System.out.println(" [2] 제목으로 검색");
System.out.println(" [3] 나가기");
System.out.println(" 원하시는 작업 번호를 선택하세요. ");
System.out.println("=================================");
System.out.print(" = >");
int work5 = sc.nextInt(); //1번 2번 중 선택하게 만들기
while(true){
switch(work5) {
case 1:
break;
case 2:
break;
case 3:
}break;
}
}
@Override
public void allprint() {
System.out.println("============보기============" );
System.out.println(" [1] 해당월로 찾아 내용 보기 ");
System.out.println(" [2] 해당일로 찾아 내용 보기 ");
System.out.println(" [2] 제목으로 찾아 내용 보기 ");
System.out.println(" [3] 월별 결산 합계 ");
System.out.println(" [4] 일일 결산 합계 ");
System.out.println(" [5] 나가기");
System.out.println(" 원하시는 작업 번호를 선택하세요. ");
System.out.println("=================================");
System.out.print(" = >");
int work6= sc.nextInt();
while(true){
switch(work6) {
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
}break;
}
}
@Override
public void file_Load() {
}
@Override
public void file_Save() {
}
@Override
public void out() {
}
}
package singleton;
import java.util.ArrayList;
import java.util.List;
import accountbookDto.AccountBookDto;
import accountbookDto.AccountbookDto2;
import accountbookDto.AccountBookDto3;
public class SingleTon {
private static SingleTon singleton = null;
public List<AccountBookDto> budgetList; // 예산들 모음 (Dto1)
public List<AccountbookDto2> earningsList; // 수입들 모음 (Dto2)
public List<AccountBookDto3> expenditureList; // 지출들 모음 (Dto3)
private SingleTon() {
budgetList = new ArrayList<AccountBookDto>();
earningsList = new ArrayList<AccountbookDto2>();
expenditureList = new ArrayList<AccountBookDto3>();
}
public static SingleTon getInstance() {
if(singleton == null) {
singleton = new SingleTon();
}
return singleton;
}
}