디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

자바 코딩중 막힘.......... 길잡이좀 해주세요..코딩 부탁 xㅠㅠ

한숨만(112.163) 2011.11.07 01:02:09
조회 159 추천 0 댓글 14

/*
데이터 수정 메소드=> 수입/지출 나눠 가능하게 수정
*/

import java.util.Scanner;

class UserInfo {
 String year,month,date;
 String money;
 String contents;

 public UserInfo(String year, String month, String date, String money, String contents) {
  this.year = year;
  this.month = month;
  this.date = date;
  this.money = money;
  this.contents = contents;
 }

 public void showUserInfo() {
  System.out.print("년 : "+year+"    월 : "+month+"    일 : "+date+"    금액 : "+money+"    내용 : "+contents);
  System.out.println();
 }
}

class baseData  {
 String y, m, d, mon="0";
 public baseData(String y, String m, String d, String mon) {
  this.y = y;
  this.m = m;
  this.d = d;
  this.mon = mon;
 }
}
class inputData {
 static final int MAX_CNT = 100;
 static UserInfo[] user1 = new UserInfo[MAX_CNT]; // 배열 선언
 static baseData[] base = new baseData[MAX_CNT];
 
 int curCnt = 0;

 public void inputData() {
  System.out.println("데이터 입력을 시작합니다..");
  System.out.print("년 : ");
  String year = MenuViewer.keyboard.nextLine();
  System.out.print("월 : ");
  String month = MenuViewer.keyboard.nextLine();
  System.out.print("일 : ");
  String date = MenuViewer.keyboard.nextLine();
  System.out.print("금액 : ");
  String money = MenuViewer.keyboard.nextLine();
  System.out.print("내용 : ");
  String contents = MenuViewer.keyboard.nextLine();
  user1[curCnt++] = new UserInfo(year, month, date, money, contents);
  if(curCnt==0)
   base[curCnt] = new baseData(year, month, date, money);
  System.out.println("데이터 입력이 완료되었습니다. \\n");
 }
}

class Change extends inputData {

 public void searchData() {
  System.out.println("데이터 검색을 시작합니다..");
  System.out.print("년 : ");
  String searchYear = MenuViewer.keyboard.nextLine();
  System.out.print("월 : ");
  String searchMonth = MenuViewer.keyboard.nextLine();
  System.out.print("일 : ");
  String searchDate = MenuViewer.keyboard.nextLine();

  int dataIdx = search(searchYear, searchMonth, searchDate);
  if (dataIdx < 0) {
   System.out.println("해당하는 데이터가 존재하지 않습니다. \\n");
  } else {
   user1[dataIdx].showUserInfo();
   System.out.println("데이터 검색이 완료되었습니다. \\n");
  }
 }

 public void printData() {
  for (int dataIdx = 0; dataIdx < curCnt; dataIdx++) {
   user1[dataIdx].showUserInfo();
  }
  System.out.println("데이터 출력이 완료되었습니다. \\n");
 }

 public void changeData() {
  int spendMoney = 0;
  int saveMoney = 0;
  String updateMoney;
  int a;
  int Money;
  int choice;
  System.out.println("데이터 수정을 시작합니다..");
  System.out.print("수정하실 날짜 : ");
  String searchYear = MenuViewer.keyboard.nextLine();
  System.out.print("수정하실 날짜 : ");
  String searchMonth = MenuViewer.keyboard.nextLine();
  System.out.print("수정하실 날짜 : ");
  String searchDate = MenuViewer.keyboard.nextLine();

  int dataIdx = search(searchYear, searchMonth, searchDate);

  if (dataIdx < 0) {
   System.out.println("해당하는 데이터가 존재하지 않습니다. \\n");
  } else {
   System.out.println("데이터 수정을 시작합니다");
   System.out.println("1. 수입");
   System.out.println("2. 지출");
   choice = MenuViewer.keyboard.nextInt();
   MenuViewer.keyboard.nextLine();
   if (choice == 1) {
    String year = user1[dataIdx].year;
    String month = user1[dataIdx].month;
    String date = user1[dataIdx].date;
    System.out.print("금액 : ");
    String money = MenuViewer.keyboard.nextLine();

    saveMoney = Integer.parseInt(money);
    Money = Integer.parseInt(user1[dataIdx].money);
    a = Money + saveMoney;
    updateMoney = Integer.toString(a);

    System.out.print("내용 : ");
    String contents = MenuViewer.keyboard.nextLine();
    user1[dataIdx] = new UserInfo(year, month, date, updateMoney, contents);
    
    System.out.println("데이터 수정이 완료되었습니다. \\n");
   } else {
    String year = user1[dataIdx].year;
    String month = user1[dataIdx].month;
    String date = user1[dataIdx].date;
    System.out.print("금액 : ");
    String money = MenuViewer.keyboard.nextLine();

    spendMoney = Integer.parseInt(money);
    Money = Integer.parseInt(user1[dataIdx].money);
    a = Money - spendMoney;
    updateMoney = Integer.toString(a);

    System.out.print("내용 : ");
    String contents = MenuViewer.keyboard.nextLine();
    user1[dataIdx] = new UserInfo(year, month, date, updateMoney, contents);
    System.out.println("데이터 수정이 완료되었습니다. \\n");
   }
  }
 }

 public void deleteData() {
  System.out.println("데이터 삭제를 시작합니다..");

  System.out.print("년 : ");
  String year = MenuViewer.keyboard.nextLine();
  System.out.print("월 : ");
  String month = MenuViewer.keyboard.nextLine();
  System.out.print("일 : ");
  String date = MenuViewer.keyboard.nextLine();

  int dataIdx = search(year, month, date);
  if (dataIdx < 0) {
   System.out.println("해당하는 데이터가 존재하지 않습니다. \\n");
  } else {
   for (int idx = dataIdx; idx < (curCnt - 1); idx++)
    user1[idx] = user1[idx + 1];

   curCnt--;
   System.out.println("데이터 삭제가 완료되었습니다. \\n");
  }
 }

 private int search(String year, String month, String date) {
  for (int idx = 0; idx < curCnt; idx++) {
   UserInfo curInfo = user1[idx];
   if (year.compareTo(curInfo.year) == 0&month.compareTo(curInfo.month) == 0&date.compareTo(curInfo.date) == 0)
    return idx;
  }
  return -1;
 }
}

class MenuViewer {
 public static Scanner keyboard = new Scanner(System.in);

 public static void showMenu() {
  System.out.println("금전 출납 관리 프로그램 입니다.");
  System.out.println("1. 데이터 입력");
  System.out.println("2. 데이터 검색");
  System.out.println("3. 데이터 출력");
  System.out.println("4. 데이터 수정");
  System.out.println("5. 데이터 삭제");
  System.out.println("6. 프로그램 종료");
  System.out.print("선택: ");
 }
}

class MoneyManage2 {
 public static void main(String[] args) {
  Change change = new Change();
  
  int choice;

  while (true) {
   MenuViewer.showMenu();
   choice = MenuViewer.keyboard.nextInt();
   MenuViewer.keyboard.nextLine();
   

   switch (choice) {
   case 1:
    change.inputData();
    break;
   case 2:
    change.searchData();
    break;
   case 3:
    change.printData();
    break;
   case 4:
    change.changeData();
    break;
   case 5:
    change.deleteData();
    break;
   case 6:
    System.out.println("프로그램을 종료합니다");
    return;
   }
  }
 }
}
이 프로그램의 목적은 돈 수입, 지출이 있을때마다 기록하여 그것을 계산 하는게 목적입니다.
우선 지금까지 진행사항은 프로그램 실행시 입력을 받아 바로 위 case문을 돌게 됩니다. 그러면서 진행을 하는데
우선 case1의 inputData는 그냥 데이터 입력입니다. 수입, 지출이 아닌 그냥 데이터만 입력받도록 구현했습니다..(수입 지출은 추가하려고요,,)
그리고 searchData는 검색 print는 출력 changedata는 수정 입니다.
문제는 데이터 입력과 수정입니다. 데이터 입력을 할때 수입인지 지출인지를 결정해서 수입이면 현재까지의 (같은날짜) 돈에 대해 계산을 해야 됩니다
그런데 이걸 현재의 changeData를 쓰려고 하니까 몇가지 문제가 발생합니다.. 아무것도 입력이 없을때 넣으면 money에 대한게 없기때문에 포인터를 못가리키는 오류가 발생하구요... 그래서 제 생각은 년,월,일 을 입력할때 그게 그 날짜의 첫번째 데이터면 기준(?) 데이터도 같이 생성해서 기준데이터에 대해서 계산을 하려고 생각하는데.... 자세한 방법이 생각 나질 않습니다. change.changeData(); 이 메소드를 비슷하게 이용하고 싶은데 어떤식으로 하면 될까요.....

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 뛰어난 운동 신경으로 남자와 싸워도 이길 것 같은 여자 스타는? 운영자 25/11/24 - -
AD 따뜻한 겨울나기! 방한용품 SALE 운영자 25/11/27 - -
286478 윤성우 c++ 책 샀는데 개독이 확실 [4] 1(118.220) 11.11.07 202 0
286477 아참 프로페셔널하고 익스프레스하고 무슨차이야? [6] Rocket Queen갤로그로 이동합니다. 11.11.07 76 0
286476 근데 궁금한게 대학교에서는 왜 6.0 써?? [4] Rocket Queen갤로그로 이동합니다. 11.11.07 94 0
286475 근데 비주얼6.0이랑 2005 이후버전들은 인터페이스 너무 틀리지 않냐? 버틸수가없ㅋ다갤로그로 이동합니다. 11.11.07 46 0
286474 아그리구 미안한데 비쥬얼스튜디오 2010 다운받아 쓸수없을까 ㅜㅡ [5] Rocket Queen갤로그로 이동합니다. 11.11.07 104 0
286473 다음 면접 끝 ㅎㄷㄷㄷ [8] [성대아싸]갤로그로 이동합니다. 11.11.07 310 0
286472 ㅎㅇ 늅늅이 인사올림과 덧붙여 비쥬얼스튜디오 질문 헤헤 [13] Rocket Queen갤로그로 이동합니다. 11.11.07 124 0
286470 횽들 자바로 그림판 만들려고 하는데 궁금한게 있어요 학부생(165.229) 11.11.07 77 0
286469 디자인만 보면 맥 키보드가 좋은데 [1] -ㅂ-(210.90) 11.11.07 68 0
286468 리얼포스 색깔 너무 알록달록하지 않아? [2] -ㅂ-(210.90) 11.11.07 63 0
286466 횽들은 어디서 프로그래밍 공부함? [3] 캔버스(211.197) 11.11.07 79 0
286465 형들 혹시 파일처리론 배울때 [5] ㅁㄴㅇㅁ(121.66) 11.11.07 117 0
286464 횽들 질문이요 ~ [2] 치킨맛맛폰갤로그로 이동합니다. 11.11.07 49 0
286462 욕구 불만 한주 시작... [1] 다림줄갤로그로 이동합니다. 11.11.07 68 0
286461 우리들이 정신차리는 법 [3] 분당살람갤로그로 이동합니다. 11.11.07 154 0
286460 리얼포스 지름 후기 [9] McHello갤로그로 이동합니다. 11.11.07 261 0
286459 코드는 거짓말 하지 않는다... 다만 커널이... [4] iljeomobolt갤로그로 이동합니다. 11.11.07 118 0
286458 자바 awt구현 니오늘메시갤로그로 이동합니다. 11.11.07 53 0
286456 프로그래밍 막상 하기전에는 재미있어보였는데 하고나면 재미없지않냐 [4] ㅇㅇ(61.77) 11.11.07 106 0
286454 형들 APP개발하는데 비용 얼마나 걸려요 ?? [2] Tachy갤로그로 이동합니다. 11.11.07 256 0
286453 입갤 46살 몸짱 아줌마로 인사드립니다. [1] 다림줄갤로그로 이동합니다. 11.11.07 127 0
286452 프갤 솜사탕 여러분 [1] ㅁㄴㅇㅁ(121.66) 11.11.07 60 0
286451 위대하신 갤2를 구매했으니 [5] 천회장(221.149) 11.11.07 70 0
286448 한참 밑에 스펙 평가 보고 나도 평가점 [4] dlbo갤로그로 이동합니다. 11.11.07 137 0
286445 오늘도 지식인.kin ?(118.218) 11.11.07 52 0
286443 근데 박팀장은 뭐하는놈이? Adelposs갤로그로 이동합니다. 11.11.07 45 0
286441 우리 회사 문제점이 [2] 123(125.7) 11.11.07 151 0
286440 이거 먼가문제지??? [6] 와메빡체네(112.163) 11.11.07 101 0
286439 정신차릴려면 어떻게 해야되나 [2] Adelposs갤로그로 이동합니다. 11.11.07 76 0
286438 해병대라도 다녀와야하나 Adelposs갤로그로 이동합니다. 11.11.07 47 0
286437 횽들 다 자려나? 여기 어떻게 해야 돼??ㅠ [4] 젠장(180.66) 11.11.07 82 0
286436 11월 맞음? 나 방금 모기 3마리 잡음 [3] 123(125.7) 11.11.07 86 0
286435 붉은별 OS를 잠깐 써봤는데 [4] foriequal0갤로그로 이동합니다. 11.11.07 151 0
286434 =COUNTIF($C$2:$C$15,">=90") 이거랑 [2] 갤로그로 이동합니다. 11.11.07 81 0
286432 다음부터는 조별과제 내주고 혼자하고 싶은사람 손들으라할때 바로들어야지 [3] 허접(125.139) 11.11.07 100 0
286431 조옥같은 개발자 쉐키들..! [9] 이문동쮸쮸바갤로그로 이동합니다. 11.11.07 235 0
286430 실타시러 쓰레드 [1] 돌아이바갤로그로 이동합니다. 11.11.07 52 0
286429 어허, 내 자리를 넘보다니 [4] 땡칠도사갤로그로 이동합니다. 11.11.07 117 0
286427 코딩이 잘 안될땐 뭐다? [3] System32갤로그로 이동합니다. 11.11.07 149 0
286426 여긴 걍 개발자들이 쉬는데 맞는거 같음 [1] 꼬꼬월드갤로그로 이동합니다. 11.11.07 98 0
자바 코딩중 막힘.......... 길잡이좀 해주세요..코딩 부탁 xㅠㅠ [14] 한숨만(112.163) 11.11.07 159 0
286423 여기좋음?! ㅇㅇ(222.107) 11.11.07 32 0
286421 내일 정형외과 다녀와야겠다 [1] 허접(125.139) 11.11.07 47 0
286419 옛날에 교회 수련회 가서 쪽팔렸던 썰txt ^0^갤로그로 이동합니다. 11.11.07 370 0
286417 ㅜㅜ 질문 똑바로 할게 제발 갈켜주라 [24] elwlwlwk갤로그로 이동합니다. 11.11.07 161 0
286416 뻐킹존뉴비가 질문하나만 여쭙겠사옵니다 [10] 닥회드(119.64) 11.11.07 144 0
286415 엑셀시작한지 1일되는데요 여기서 막히네요 [6] 갤로그로 이동합니다. 11.11.07 115 0
286414 난 가끔 공부하다가 모르는거 여기 물어보면 꼭 답글 병신맛 나더라 [7] 그걸(175.117) 11.11.07 89 0
286411 에이 잠이나 잘래 퇴갤 [2] 버틸수가없ㅋ다갤로그로 이동합니다. 11.11.07 34 0
286410 프갤성님들 API질문좀요 [5] 김 딜러(61.254) 11.11.07 43 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2