디시인사이드 갤러리

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

갤러리 본문 영역

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

한숨만(112.163) 2011.11.07 01:02:09
조회 158 추천 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 - -
이슈 [디시人터뷰] 충무로가 주목하는 신예, '세계의 주인' 서수빈 운영자 25/11/24 - -
AD 대학생 필수템! What's in my Bag 운영자 25/11/21 - -
286674 내 신상을 파해치는 세력이 있어.. [5] SuCo갤로그로 이동합니다. 11.11.07 99 0
286672 아우 진짜 저밑에 도그테이프글 너무 웃긴다ㅋㅋ Stan(220.244) 11.11.07 46 0
286671 난 굳센남자다 Adelposs갤로그로 이동합니다. 11.11.07 31 0
286670 이런 사이트 아는형님 ?? [1] 츄젹방지(121.134) 11.11.07 51 0
286669 아 존니 이쁘네 ㅡㅡ 쌀거같다 [1] SuCo갤로그로 이동합니다. 11.11.07 125 0
286667 나무심는다는게 [1] Adelposs갤로그로 이동합니다. 11.11.07 52 0
286666 스크립트 편집하기 편한 프리웨어 없나요 ㅠㅠㅠ [4] 123(121.144) 11.11.07 64 0
286665 앜!!!!!!!!!!!!! 셐스하고싶다 셐스!!!!!!!!!!!꺄악! Stan(220.244) 11.11.07 64 0
286664 내일 멸망할지도 모르는데 다들 나무는 심고 있냐??? [1] 거칠게갤로그로 이동합니다. 11.11.07 62 0
286662 이클립스로 C개발환경 만들어쓰는사람 있나여? [2] Blazer사마갤로그로 이동합니다. 11.11.07 82 0
286661 안드로이드 애니메이션 만드는 어플 만들라고 하는데 [1] 갤럭시s갤로그로 이동합니다. 11.11.07 209 0
286660 지구 멸망전 직접 그린 그림 몇점 공개 [1] Stan(220.244) 11.11.07 97 0
286659 지금내얼굴이 내가 전생에 가장 사랑했던사람 얼굴이래 [2] 중간점검갤로그로 이동합니다. 11.11.07 61 0
286658 안드로이드 좀 해본 사람 있음? [1] ㅇㅇㅁㅇㄻㅁ갤로그로 이동합니다. 11.11.07 60 0
286657 아아 이제 목숨이 하루도 안남았구나... [2] 거칠게갤로그로 이동합니다. 11.11.07 86 0
286656 요즘 시대는 프로그래머가 대우 좀 받나여?? 거칠게갤로그로 이동합니다. 11.11.07 71 0
286655 자바 함수 선언 질문좀 [3] ㅈㅈㅈㅈ(118.47) 11.11.07 229 0
286654 여직원 셋이상 있는 회사 가면 둘중 하나를 택해라. [2] 고기BASIC(58.122) 11.11.07 139 0
286653 8 시 넘어서 면접 제의 오는 회사는 뭐냐 거칠게갤로그로 이동합니다. 11.11.07 80 0
286652 홈페이지 만들 때요 도그테이프 퍼블릭 있잖아요.. 개드립(218.147) 11.11.07 66 0
286651 케이 앱스 전망은 어케 생각하심 [1] [성대아싸]갤로그로 이동합니다. 11.11.07 92 0
286649 Stan님 2차원 배열 개념 자체가 헷갈리고 있습니다 ㅠㅠ [9] 치킨맛맛폰갤로그로 이동합니다. 11.11.07 97 0
286646 수치해석 파워메소드 소스좀 ㅜㅜ 살고싶다 ㅈㅈㅈㅈ(118.47) 11.11.07 41 0
286645 근데 너네 보면 과제 쳐묻지 말라면서 정작어려운거 물어보면 대답 못하더라 [14] 유동닉ㅈㅅ(211.232) 11.11.07 225 0
286644 open cv 해본사람있어?? [7] 꺌꺌(210.123) 11.11.07 149 0
286642 html+css+자바스크립트까지 배웠는데 php가 낳나요 asp가 낳나요 [6] 개드립(218.147) 11.11.07 141 0
286640 횽들 공부하다가 구문이 뭘 하려는지는 아는데... [3] 치킨맛맛폰갤로그로 이동합니다. 11.11.07 53 0
286639 스플릿 이 부분 어떻게 해야해??ㅠㅠ 틀린 부분 좀 봐줘!!ㅠ 젠장(180.66) 11.11.07 32 0
286638 취직할때 이것도 정말 중요한 조건인거같아 Dawnwalkre갤로그로 이동합니다. 11.11.07 109 0
286637 원래 여자직원들은 서로 파벌 나누냐? [2] ㅁㄴㅇㄹ(112.155) 11.11.07 123 0
286636 [미갤펌] 나사가 새로 공개한 소행성 루트.png [4] Stan(220.244) 11.11.07 111 0
286635 코딩하느냐 마느냐의 차이 [4] 면섬유갤로그로 이동합니다. 11.11.07 129 0
286634 이건 무슨 소스냐 ㅈㅈㅈㅈ(118.47) 11.11.07 60 0
286633 자바로 데이터베이스 만들 수 있으신 분 구합니다!(사례금있음) [16] JK(180.66) 11.11.07 230 0
286632 자바에서 이게 왜 널포인터를 가리킬까요 [7] 하히후헤홉(112.163) 11.11.07 104 0
286631 프로그래머는 여자 꼬실때 무슨 멘트 날림? [11] 쥬어없는그분(121.179) 11.11.07 335 0
286628 자바가 어려웡... [2] SPlCA갤로그로 이동합니다. 11.11.07 106 0
286626 니들 초봉 얼마 예상하냐 [4] ㅍㅌ갤로그로 이동합니다. 11.11.07 270 0
286625 누구 FMOD Ex 쓰는 형 없어? laoshanlong갤로그로 이동합니다. 11.11.07 42 0
286624 혹시 수치해석 파워메소드 소스 있으신분? [2] ㅈㅈㅈㅈ(118.47) 11.11.07 51 0
286623 아 드디어 맥심보고 안꼴리는 수준까지 와버렸다 ㅡㅡ... [2] Lover♥갤로그로 이동합니다. 11.11.07 99 0
286621 동국대,숭실대 컴공 어디가 더 닭이맛있죠? [14] 보노쨔응(121.139) 11.11.07 418 0
286616 c로배우는 알고리즘 보고있는데.. 치킨맛맛폰갤로그로 이동합니다. 11.11.07 72 0
286615 형들 오류가 뜨는데 도와줘... [4] 도와줘(210.220) 11.11.07 184 1
286614 닭 튀기는게 뭐 그리 대수냐 [1] 전간디갤로그로 이동합니다. 11.11.07 55 0
286613 현대가 제 4이통사 사업에 출자한다는데 Dawnwalkre갤로그로 이동합니다. 11.11.07 58 0
286612 [즐딸]여태동안 본 꼴리는 동영상들 지구멸망전 공유.swf [2] Stan(220.244) 11.11.07 335 0
286611 대학에서 전공한사람하고 학원서 배운사람하고 차이가없어? [2] 저격甲갤로그로 이동합니다. 11.11.07 148 0
286608 전간디님이 퇴근하였습니다 [2] 전간디갤로그로 이동합니다. 11.11.07 57 0
286607 자바스크립트에서 주로 사용하는 객체 뭐뭐 있나요? [3] 초보(218.147) 11.11.07 89 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2