Skip to content
Home » 가계부 프로그램 만들기 | 엑셀 프로그램 으로 가계부 양식 만들면서 액셀 실무에서 많이 사용하는 기능 배우세요. 24161 명이 이 답변을 좋아했습니다

가계부 프로그램 만들기 | 엑셀 프로그램 으로 가계부 양식 만들면서 액셀 실무에서 많이 사용하는 기능 배우세요. 24161 명이 이 답변을 좋아했습니다

당신은 주제를 찾고 있습니까 “가계부 프로그램 만들기 – 엑셀 프로그램 으로 가계부 양식 만들면서 액셀 실무에서 많이 사용하는 기능 배우세요.“? 다음 카테고리의 웹사이트 https://kk.taphoamini.com 에서 귀하의 모든 질문에 답변해 드립니다: kk.taphoamini.com/wiki. 바로 아래에서 답을 찾을 수 있습니다. 작성자 IB 96 이(가) 작성한 기사에는 조회수 27,115회 및 좋아요 485개 개의 좋아요가 있습니다.

가계부 프로그램 만들기 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 엑셀 프로그램 으로 가계부 양식 만들면서 액셀 실무에서 많이 사용하는 기능 배우세요. – 가계부 프로그램 만들기 주제에 대한 세부정보를 참조하세요

☞ IB96 채널 은 컴퓨터 프로그램과 스마트폰 IT 모바일 기기 사용법 응용능력 기능 을 알려드리는 교육 채널입니다 _
IB96 채널 영상은 https://www.ib96.com 에서 제공받았습니다
IB96 구독및 [가입]을 해주시면 좀더 좋은 컨텐츠로 보답하겠습니다
감사합니다
엑셀 프로그램으로 가계부를 만들면서
그에 따른 기능및 사용방법 배우기
컴퓨터 프로그램과 모바일기기 사용법을 IB96 에서 배우시고 실무에 활용하세요
#엑셀 #액셀 #excel

가계부 프로그램 만들기 주제에 대한 자세한 내용은 여기를 참조하세요.

JAVA(14) – 가계부 만들어보기 – 자바를 처음 해보는 KC

문제 ). 팀 과제 가계부 프로그램 만들기 배열을 사용하여 가계부 프로그램을 만듭니다. 10개 내역을 작성하기 수입, 지출 잔액, 전체 수입 금액, …

+ 여기에 표시

Source: kcasey.tistory.com

Date Published: 4/26/2021

View: 4611

Java를 이용한 학생 관리 프로그램/가계부 프로그램

배열을 이용한 가계부 프로그램. import java.util.Scanner; public KeepingBook { public static vo main(String[] args) { Scanner …

+ 여기에 더 보기

Source: jeonghj2050.tistory.com

Date Published: 3/14/2022

View: 6590

엑셀 프로그램 으로 가계부 양식 만들면서 액셀 실무에서 많이 …

근데 폴더 구조를 …

+ 여기에 보기

Source: you.dianhac.com.vn

Date Published: 10/20/2022

View: 7064

[Java] 개인프로젝트(가계부 프로그램) – 잡다한 공방

가계부 프로그램을 만들게 된 계기는 평소에 돈을 계획적으로 사용하지 않고 과소비를 하는 사람들에게 무분별한 소비로 인한 지출을 줄이고 계획적인 …

+ 여기에 보기

Source: dopal2.tistory.com

Date Published: 10/11/2021

View: 9083

웹 초급 과정 : 가계부 프로그램을 만들어보자

가계부 Website를 직접 제작 및 운영해 볼 수 있습니다. 프로그램 동작원리에 대해 살펴볼 수 있습니다. AJAX-JSON을 통해 가벼운(light) Web Application을 구현해 볼 …

+ 여기에 표시

Source: www.itlab.co.kr

Date Published: 11/9/2021

View: 3589

주제와 관련된 이미지 가계부 프로그램 만들기

주제와 관련된 더 많은 사진을 참조하십시오 엑셀 프로그램 으로 가계부 양식 만들면서 액셀 실무에서 많이 사용하는 기능 배우세요.. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

엑셀 프로그램 으로 가계부 양식 만들면서 액셀 실무에서 많이 사용하는 기능 배우세요.
엑셀 프로그램 으로 가계부 양식 만들면서 액셀 실무에서 많이 사용하는 기능 배우세요.

주제에 대한 기사 평가 가계부 프로그램 만들기

  • Author: IB 96
  • Views: 조회수 27,115회
  • Likes: 좋아요 485개
  • Date Published: 최초 공개: 2022. 1. 17.
  • Video Url link: https://www.youtube.com/watch?v=3DD9xoQVXUY

JAVA(14) – 가계부 만들어보기

문제 )

팀 과제

가계부 프로그램 만들기

배열을 사용하여 가계부 프로그램을 만듭니다.

10개 내역을 작성하기

수입, 지출

잔액, 전체 수입 금액, 전체 지출 금액이 출력되도록.

전체 내역 출력(마지막에 잔액 출력)

입력 데이터

날짜, 금액, 수입/지출, (내역)

메뉴

1. 내역 등록

2. 전체 출력

3. 수입 출력

4. 지출 출력

5. 종료

import java.util.Scanner; public class MoneyBook { public static void main(String[] args) { final int MAX = 2; String date[] = new String[MAX]; int money[] = new int[MAX]; int inMoney[] = new int[MAX]; int outMoney[] = new int[MAX]; String List[] = new String[MAX]; int balance = 0; int totalInMoney = 0; int totalOutMoney = 0; String totalList[] = new String[MAX]; int select = 0; //메뉴 입력 저장 변수 int input; Scanner scan = new Scanner(System.in); System.out.println(“– 가계부 프로그램 –“); while(true) { 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.print(“선택 > “); select = scan.nextInt(); if(select == 5) { System.out.println(“종료합니다.”); break; } switch (select) {// 날짜, 금액, 수입/지출, (내역) case 1: System.out.println(“내역 등록”); for (int i = 0; i < MAX; i++) { System.out.println("--------------------"); scan.nextLine(); //버퍼에 있는 엔터 제거 방법1) System.out.print("날짜 : "); date[i] = scan.nextLine(); System.out.print("금액 : "); money[i] = scan.nextInt(); System.out.print("수입: 1번입력 /지출: 2번입력 : "); input = scan.nextInt(); if(input == 1){ inMoney[i] = money[i]; totalInMoney += inMoney[i]; } else if(input == 2){ outMoney[i] = money[i]; totalOutMoney += outMoney[i]; } // System.out.print("수입 : "); // inMoney[i] = scan.nextInt(); // System.out.print("지출 : "); // outMoney[i] = scan.nextInt(); System.out.print("내역 : "); List[i] = scan.next(); } break; case 2: System.out.println("전체 출력"); for (int i = 0; i < MAX; i++) { System.out.println("--------------------"); System.out.println("날짜 : " + date[i]); // System.out.println("금액 : " + money[i]); System.out.printf("금액 : %,d원%n", money[i]); // System.out.println("수입 : " + inMoney[i]); System.out.printf("지출 : %,d원%n", money[i]); // System.out.println("지출 : " + outMoney[i]); System.out.printf("지출 : %,d원%n", money[i]); System.out.println("내역 : " + List[i]); System.out.println(); } break; case 3: System.out.println(); System.out.println("수입 출력"); for (int i = 0; i < MAX; i++) { System.out.printf("수입 금액 : %,d원%n", money[i]); } System.out.println("전체 수입 금액 : " + totalInMoney); break; case 4: System.out.println(); System.out.println("지출 출력"); for (int i = 0; i < MAX; i++) { System.out.printf("지출 금액 : %,d원%n", outMoney[i]); } System.out.printf("전체 지출 금액 : %,d원%n", totalOutMoney); break; case 5: System.out.println("내역 출력"); for (int i = 0; i < MAX; i++) { System.out.println("내역 출력 : "+ i + " " + totalList[i]); } break; default: break; } balance = totalInMoney - totalOutMoney; System.out.printf("잔액 : %,d원%n", balance); } } }

Java를 이용한 학생 관리 프로그램

배열을 이용한 가계부 프로그램

import java.util.Scanner; public class KeepingBook { public static void main(String[] args) { Scanner scan=new Scanner(System.in); final int MAX=3; String inOutDate[]=new String[MAX]; String inOutSort[]=new String[MAX]; int inOutMoney[]=new int[MAX]; int totalMoney=1517;//총 잔액 int inMon=0;//수입 총 합 int outMon=0;//지출 총 합 int select=0; System.out.println(“가계부 프로그램”); while(true) { System.out.println(“==================================================”); System.out.println(“1.내용 등록 2.전체 출력 3.수입 출력 4.지출 출력 5.종료”); System.out.println(“==================================================”); System.out.print(“선택 > “); select=scan.nextInt(); if(select==5) { System.out.println(“프로그램을 종료합니다.”); break; } switch(select) { case 1: //내용 등록 for(int i=0;i “); inOutDate[i]=scan.nextLine(); System.out.println(“금액을 입력해주세요”); inOutMoney[i]=scan.nextInt(); if(inOutSort[i].equals(“in”)) { totalMoney+=inOutMoney[i]; inMon+=inOutMoney[i]; }else if(inOutSort[i].equals(“out”)) { totalMoney-=inOutMoney[i]; outMon-=inOutMoney[i]; } } break; case 2: //전체 출력 System.out.printf(“날짜\t\t금액\t\t수입/지출

“); for(int i=0;i“); int selMenu=scan.nextInt(); return selMenu; } public static void inputStuInfo() { System.out.println(“학생을 등록해주세요!”); for(int i=0;i “); names[i]=scan.next(); System.out.print(“전공 > “); major[i]=scan.next(); System.out.print(“학번 > “); stuNumber[i]=scan.nextInt(); System.out.print(“전화번호 > “); phoneNumber[i]=scan.next(); System.out.print(“학점 > “); avgScore[i]=scan.nextFloat(); } } public static void printStuInfo() { for(int i=0;i

가계부 프로그램 만들기 | 엑셀 프로그램 으로 가계부 양식 만들면서 액셀 실무에서 많이 사용하는 기능 배우세요. 14719 투표 이 답변

당신은 주제를 찾고 있습니까 “가계부 프로그램 만들기 – 엑셀 프로그램 으로 가계부 양식 만들면서 액셀 실무에서 많이 사용하는 기능 배우세요.“? 다음 카테고리의 웹사이트 https://you.dianhac.com.vn 에서 귀하의 모든 질문에 답변해 드립니다: you.dianhac.com.vn/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 IB 96 이(가) 작성한 기사에는 조회수 26,536회 및 좋아요 475개 개의 좋아요가 있습니다.

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

☞ IB96 채널 은 컴퓨터 프로그램과 스마트폰 IT 모바일 기기 사용법 응용능력 기능 을 알려드리는 교육 채널입니다 _

IB96 채널 영상은 https://www.ib96.com 에서 제공받았습니다

IB96 구독및 [가입]을 해주시면 좀더 좋은 컨텐츠로 보답하겠습니다

감사합니다

엑셀 프로그램으로 가계부를 만들면서

그에 따른 기능및 사용방법 배우기

컴퓨터 프로그램과 모바일기기 사용법을 IB96 에서 배우시고 실무에 활용하세요

#엑셀 #액셀 #excel

문제 ). 팀 과제 가계부 프로그램 만들기 배열을 사용하여 가계부 프로그램을 만듭니다. 10개 내역을 작성하기 수입, 지출 잔액, 전체 수입 금액, …

+ 여기에 더 보기

Source: kcasey.tistory.com

Date Published: 2/3/2021

View: 8176

파이썬 소스파일과 같은 폴더 안에 ‘가계부’ 라는 이름의 폴더 … 하려고했는데 이걸 py2exe로 exe로 만들기만 하면 안된다.

+ 여기에 자세히 보기

Source: you.xosotanphat.com

Date Published: 10/23/2022

View: 8252

배열을 이용한 가계부 프로그램. import java.util.Scanner; public KeepingBook { public static vo main(String[] args) { Scanner …

+ 여기에 더 보기

Source: jeonghj2050.tistory.com

Date Published: 4/5/2022

View: 6450

오늘은 여기까지 껍데기를 만들어 보고, 다음 글에서 실제 작동하는 부분을 만들어 보겠습니다. 완성이 되면 이 프로젝트 소스는 파일로 첨부하겠습니다.

+ 더 읽기

Source: 3001ssw.tistory.com

Date Published: 2/30/2021

View: 2786

가계부 프로그램을 만들게 된 계기는 평소에 돈을 계획적으로 사용하지 않고 과소비를 하는 사람들에게 무분별한 소비로 인한 지출을 줄이고 계획적인 …

+ 여기에 표시

Source: dopal2.tistory.com

Date Published: 8/2/2022

View: 9004

주제와 관련된 더 많은 사진을 참조하십시오 엑셀 프로그램 으로 가계부 양식 만들면서 액셀 실무에서 많이 사용하는 기능 배우세요.. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

import java.util.Scanner; public class MoneyBook { public static void main(String[] args) { final int MAX = 2; String date[] = new String[MAX]; int money[] = new int[MAX]; int inMoney[] = new int[MAX]; int outMoney[] = new int[MAX]; String List[] = new String[MAX]; int balance = 0; int totalInMoney = 0; int totalOutMoney = 0; String totalList[] = new String[MAX]; int select = 0; //메뉴 입력 저장 변수 int input; Scanner scan = new Scanner(System.in); System.out.println(“– 가계부 프로그램 –“); while(true) { 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.print(“선택 > “); select = scan.nextInt(); if(select == 5) { System.out.println(“종료합니다.”); break; } switch (select) {// 날짜, 금액, 수입/지출, (내역) case 1: System.out.println(“내역 등록”); for (int i = 0; i < MAX; i++) { System.out.println("--------------------"); scan.nextLine(); //버퍼에 있는 엔터 제거 방법1) System.out.print("날짜 : "); date[i] = scan.nextLine(); System.out.print("금액 : "); money[i] = scan.nextInt(); System.out.print("수입: 1번입력 /지출: 2번입력 : "); input = scan.nextInt(); if(input == 1){ inMoney[i] = money[i]; totalInMoney += inMoney[i]; } else if(input == 2){ outMoney[i] = money[i]; totalOutMoney += outMoney[i]; } // System.out.print("수입 : "); // inMoney[i] = scan.nextInt(); // System.out.print("지출 : "); // outMoney[i] = scan.nextInt(); System.out.print("내역 : "); List[i] = scan.next(); } break; case 2: System.out.println("전체 출력"); for (int i = 0; i < MAX; i++) { System.out.println("--------------------"); System.out.println("날짜 : " + date[i]); // System.out.println("금액 : " + money[i]); System.out.printf("금액 : %,d원%n", money[i]); // System.out.println("수입 : " + inMoney[i]); System.out.printf("지출 : %,d원%n", money[i]); // System.out.println("지출 : " + outMoney[i]); System.out.printf("지출 : %,d원%n", money[i]); System.out.println("내역 : " + List[i]); System.out.println(); } break; case 3: System.out.println(); System.out.println("수입 출력"); for (int i = 0; i < MAX; i++) { System.out.printf("수입 금액 : %,d원%n", money[i]); } System.out.println("전체 수입 금액 : " + totalInMoney); break; case 4: System.out.println(); System.out.println("지출 출력"); for (int i = 0; i < MAX; i++) { System.out.printf("지출 금액 : %,d원%n", outMoney[i]); } System.out.printf("전체 지출 금액 : %,d원%n", totalOutMoney); break; case 5: System.out.println("내역 출력"); for (int i = 0; i < MAX; i++) { System.out.println("내역 출력 : "+ i + " " + totalList[i]); } break; default: break; } balance = totalInMoney - totalOutMoney; System.out.printf("잔액 : %,d원%n", balance); } } } 당신은 주제를 찾고 있습니까 “가계부 프로그램 만들기 – 엑셀 프로그램 으로 가계부 양식 만들면서 액셀 실무에서 많이 사용하는 기능 배우세요.“? 다음 카테고리의 웹사이트 https://you.xosotanphat.com 에서 귀하의 모든 질문에 답변해 드립니다: https://you.xosotanphat.com/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 IB 96 이(가) 작성한 기사에는 조회수 25,714회 및 좋아요 470개 개의 좋아요가 있습니다. 여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요! ☞ IB96 채널 은 컴퓨터 프로그램과 스마트폰 IT 모바일 기기 사용법 응용능력 기능 을 알려드리는 교육 채널입니다 _ IB96 채널 영상은 https://www.ib96.com 에서 제공받았습니다 IB96 구독및 [가입]을 해주시면 좀더 좋은 컨텐츠로 보답하겠습니다 감사합니다 엑셀 프로그램으로 가계부를 만들면서 그에 따른 기능및 사용방법 배우기 컴퓨터 프로그램과 모바일기기 사용법을 IB96 에서 배우시고 실무에 활용하세요 #엑셀 #액셀 #excel 문제 ). 팀 과제 가계부 프로그램 만들기 배열을 사용하여 가계부 프로그램을 만듭니다. 10개 내역을 작성하기 수입, 지출 잔액, 전체 수입 금액, … + 여기에 더 보기 Source: kcasey.tistory.com Date Published: 11/28/2022 View: 2654 오늘은 여기까지 껍데기를 만들어 보고, 다음 글에서 실제 작동하는 부분을 만들어 보겠습니다. 완성이 되면 이 프로젝트 소스는 파일로 첨부하겠습니다. + 자세한 내용은 여기를 클릭하십시오 Source: 3001ssw.tistory.com Date Published: 5/14/2022 View: 6580 수익, 지출로 1차 분류한 후 과목으로 2차 분류하여 거래를 CRUD 할 수 있는 가계부 응용프로그램입니다. 또한, WHERE 절을 통한 조건 검색 기능과, … + 여기에 보기 Source: velog.io Date Published: 1/8/2022 View: 2573 근데 폴더 구조를 생각하고 그러니 진짜 복잡해진다. 폴더 구조. 1. 파이썬 소스파일과 같은 폴더 안에 ‘가계부’ 라는 이름의 폴더가 … + 여기에 표시 Source: qkqhxla1.tistory.com Date Published: 4/28/2021 View: 1618 엑셀은 우리 생활에 많은 도움을 주고 있다. 엑셀만큼이나 많이 사용하는 문서 프로그램도 없을 것이다. 2000년도에는 엑셀보다 한글을 정말 많이 … + 여기에 보기 Source: act-att.tistory.com Date Published: 7/5/2022 View: 7733 배열을 이용한 가계부 프로그램. import java.util.Scanner; public KeepingBook { public static vo main(String[] args) { Scanner … + 여기를 클릭 Source: jeonghj2050.tistory.com Date Published: 2/6/2021 View: 653 주제와 관련된 더 많은 사진을 참조하십시오 엑셀 프로그램 으로 가계부 양식 만들면서 액셀 실무에서 많이 사용하는 기능 배우세요.. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다. import java.util.Scanner; public class MoneyBook { public static void main(String[] args) { final int MAX = 2; String date[] = new String[MAX]; int money[] = new int[MAX]; int inMoney[] = new int[MAX]; int outMoney[] = new int[MAX]; String List[] = new String[MAX]; int balance = 0; int totalInMoney = 0; int totalOutMoney = 0; String totalList[] = new String[MAX]; int select = 0; //메뉴 입력 저장 변수 int input; Scanner scan = new Scanner(System.in); System.out.println(“– 가계부 프로그램 –“); while(true) { 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.print(“선택 > “); select = scan.nextInt(); if(select == 5) { System.out.println(“종료합니다.”); break; } switch (select) {// 날짜, 금액, 수입/지출, (내역) case 1: System.out.println(“내역 등록”); for (int i = 0; i < MAX; i++) { System.out.println("--------------------"); scan.nextLine(); //버퍼에 있는 엔터 제거 방법1) System.out.print("날짜 : "); date[i] = scan.nextLine(); System.out.print("금액 : "); money[i] = scan.nextInt(); System.out.print("수입: 1번입력 /지출: 2번입력 : "); input = scan.nextInt(); if(input == 1){ inMoney[i] = money[i]; totalInMoney += inMoney[i]; } else if(input == 2){ outMoney[i] = money[i]; totalOutMoney += outMoney[i]; } // System.out.print("수입 : "); // inMoney[i] = scan.nextInt(); // System.out.print("지출 : "); // outMoney[i] = scan.nextInt(); System.out.print("내역 : "); List[i] = scan.next(); } break; case 2: System.out.println("전체 출력"); for (int i = 0; i < MAX; i++) { System.out.println("--------------------"); System.out.println("날짜 : " + date[i]); // System.out.println("금액 : " + money[i]); System.out.printf("금액 : %,d원%n", money[i]); // System.out.println("수입 : " + inMoney[i]); System.out.printf("지출 : %,d원%n", money[i]); // System.out.println("지출 : " + outMoney[i]); System.out.printf("지출 : %,d원%n", money[i]); System.out.println("내역 : " + List[i]); System.out.println(); } break; case 3: System.out.println(); System.out.println("수입 출력"); for (int i = 0; i < MAX; i++) { System.out.printf("수입 금액 : %,d원%n", money[i]); } System.out.println("전체 수입 금액 : " + totalInMoney); break; case 4: System.out.println(); System.out.println("지출 출력"); for (int i = 0; i < MAX; i++) { System.out.printf("지출 금액 : %,d원%n", outMoney[i]); } System.out.printf("전체 지출 금액 : %,d원%n", totalOutMoney); break; case 5: System.out.println("내역 출력"); for (int i = 0; i < MAX; i++) { System.out.println("내역 출력 : "+ i + " " + totalList[i]); } break; default: break; } balance = totalInMoney - totalOutMoney; System.out.printf("잔액 : %,d원%n", balance); } } } 일단 기본적인 기능은 하게 완성시켰다. 처음에 만들땐 가게부? 엄청 쉬울거같은데 심심풀이로 만들어볼까? 했던 생각이… 변했다. 상당히 복잡하다. 어렵지는 않은데 복잡하다. 필요한건 그냥 gui에서 입력값을 가져와서 폴더에 보기좋게 정리하는거밖에 없다. 근데 폴더 구조를 생각하고 그러니 진짜 복잡해진다. 폴더 구조. 1. 파이썬 소스파일과 같은 폴더 안에 ‘가계부’ 라는 이름의 폴더가 생김. 2. ‘가계부’ 폴더 안에 이번달 날짜 폴더가 생김. 오늘은 16년 12월 25일이니까 2016-12라는 폴더를 만듬. 동일한 위치에 affordable_money.txt가 있는데 이 안에는 한달동안 자유롭게 쓸수 있는 돈이 숫자로 들어가있다. 3. 2016-12와 같은 폴더 안에는 3종류의 txt파일이 있다. 1) ‘한달 총 사용량.txt’. 이 안에는 2016년 12월 한달동안 총 사용한 돈의 양이 숫자로 들어있다. 2) ’12월 19~25일.txt’과 같은 포맷의 파일. 말 그대로 이번주에 사용한 돈의 총량이 숫자로 들어있다. 자동으로 만들어지고 자동으로 갱신되니까 건들지 말기.. 3) ‘2016-12-25.txt’과 같은 포맷의 파일. 말 그대로 해당 날짜에 돈을 얼마 썼고, 왜 썼는지가 적혀져 있다. 맨 아래에는 해당 날짜에 사용한 돈의 총량이 들어있다. 사용법과 폴더 보는법 등. 가계부.vol1.egg 가계부.vol2.egg 나름 직관적으로 보기좋게 만들려고 노력을 많이 했다. 프로그램을 실행시키고 위처럼 입력 후 ‘지출내역 추가’ 버튼을 누르면 이번주 남은돈과 이번달 남은돈에서 차감된다. 해당 파이썬 소스와 같은 디렉터리 안에 ‘가계부’라는 폴더가 자동으로 생기는데 그 안에는 요렇게 해당 달의 폴더가 자동으로 생기고 affordable_money.txt가 자동으로 생긴다. 이 안에는 매달 여윳돈이 txt로 들어가있고 디폴트값은 100만원이다. (위에 써있음) 그리고 또 2016-12 폴더 안에는… 처럼 들어가 있고 프로그램으로 내역을 추가할때마다 자동으로 내역이 txt에 추가된다. 한달 총 사용량은 말 그대로 한달에 총 사용한 돈의 양이고, 12월 19~25일.txt는 저 기간동안 사용한 돈의 총량이다. 참고로 예외처리는 할수있는만큼 거의다해놓긴 했는데 txt를 마음대로 만져서 포맷이 깨지면 또 고장날 우려가 있다… 개선해야될점. 1. 저번주에 안쓴 돈 만큼을 데이터가 이월되듯이 이번주로 넘어오게 하기. 2. 지출 내역 삭제하기를 gui에 구현하기. 3. 코드가 상당히 더럽다. 깔끔하게 리팩토링 등 하기. 4. 날짜입력하기 귀찮으니 디폴트값으로 오늘 날짜 주기 5. 공통되는 변수나 함수는(ex) see_money함수) new_ui.py에 넣어서 자동으로 사용되게 하려고했는데 이걸 py2exe로 exe로 만들기만 하면 안된다. 이유를 모르겠어서 그냥 복붙 한번 더함. 코드가 더러워졌는데 나중에 좀 줄여야될듯 6. 생각…. 1. 개선된 new_ui.py (상당히 길다.) 소스코드 펼침 접기 # -*- coding: utf-8 -*- # Form implementation generated from reading ui file ‘new.ui’ # # Created: Sun Dec 18 14:41:51 2016 # by: PyQt4 UI code generator 4.11.3 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui import sys, os, datetime import webbrowser import re try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: def _fromUtf8(s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig) def see_money(money): _monthly = ” cnt = 0 for i in xrange(len(money)-1,-1,-1): if cnt%4==0: _monthly = ‘ ‘+_monthly _monthly = money[i] + _monthly cnt += 1 return _monthly def get_week(date): day_idx = date.weekday() # turn sunday into 0, monday into 1, etc. sunday = date – datetime.timedelta(days=day_idx) date = sunday for n in xrange(7): yield date date += datetime.timedelta(days=1) dt = datetime.datetime.now() start = dt – datetime.timedelta(days=dt.weekday()) end = start + datetime.timedelta(days=6) thisweek_start = int(start.strftime(‘%d/%b/%Y’)[:2]) thisweek_end = int(end.strftime(‘%d/%b/%Y’)[:2]) dt = datetime.date.today() thisweek_txt_list = [d.isoformat()+’.txt’.encode(sys.stdout.encoding, ‘replace’) for d in get_week(datetime.datetime.now().date())] dir_name = u’가계부’.encode(sys.stdout.encoding, ‘replace’) monthly_total_txt = u’한달 총 사용량.txt’.encode(sys.stdout.encoding, ‘replace’) week_spend_txt = str(datetime.date.today().month)+unicode(‘월 ‘,’utf-8’).encode(sys.stdout.encoding, ‘replace’)+str(thisweek_start)+’~’+str(thisweek_end)+’.txt’.encode(sys.stdout.encoding, ‘replace’)#’12월 1~7일’과 같은 format affordable = ‘affordable_money.txt’.encode(sys.stdout.encoding, ‘replace’) #여윳돈 설정 기본 100만원. class Ui_Form(object): def setupUi(self, Form): Form.setObjectName(_fromUtf8(“Form”)) Form.resize(464, 322) Form.setWindowIcon(QtGui.QIcon(‘cal.ico’)) self.label_1 = QtGui.QLabel(Form) self.label_1.setGeometry(QtCore.QRect(20, 200, 81, 16)) self.label_1.setAlignment(QtCore.Qt.AlignCenter) self.label_1.setObjectName(_fromUtf8(“label_1”)) self.label_2 = QtGui.QLabel(Form) self.label_2.setGeometry(QtCore.QRect(20, 140, 81, 16)) self.label_2.setAlignment(QtCore.Qt.AlignCenter) self.label_2.setObjectName(_fromUtf8(“label_2”)) self.label_3 = QtGui.QLabel(Form) self.label_3.setGeometry(QtCore.QRect(20, 220, 81, 16)) self.label_3.setAlignment(QtCore.Qt.AlignCenter) self.label_3.setObjectName(_fromUtf8(“label_3”)) self.label_4 = QtGui.QLabel(Form) self.label_4.setGeometry(QtCore.QRect(20, 160, 81, 16)) self.label_4.setAlignment(QtCore.Qt.AlignCenter) self.label_4.setObjectName(_fromUtf8(“label_4”)) self.label_5 = QtGui.QLabel(Form) self.label_5.setGeometry(QtCore.QRect(160, 80, 81, 16)) self.label_5.setAlignment(QtCore.Qt.AlignCenter) self.label_5.setObjectName(_fromUtf8(“label_5”)) self.label_6 = QtGui.QLabel(Form) self.label_6.setGeometry(QtCore.QRect(160, 140, 81, 16)) self.label_6.setAlignment(QtCore.Qt.AlignCenter) self.label_6.setObjectName(_fromUtf8(“label_6”)) self.label_7 = QtGui.QLabel(Form) self.label_7.setGeometry(QtCore.QRect(240, 100, 21, 16)) self.label_7.setAlignment(QtCore.Qt.AlignCenter) self.label_7.setObjectName(_fromUtf8(“label_7”)) self.label_8 = QtGui.QLabel(Form) self.label_8.setGeometry(QtCore.QRect(20, 280, 81, 16)) self.label_8.setAlignment(QtCore.Qt.AlignCenter) self.label_8.setObjectName(_fromUtf8(“label_8”)) self.label_9 = QtGui.QLabel(Form) self.label_9.setGeometry(QtCore.QRect(20, 260, 81, 16)) self.label_9.setAlignment(QtCore.Qt.AlignCenter) self.label_9.setObjectName(_fromUtf8(“label_9”)) self.label_10 = QtGui.QLabel(Form) self.label_10.setGeometry(QtCore.QRect(160, 20, 81, 16)) self.label_10.setAlignment(QtCore.Qt.AlignCenter) self.label_10.setObjectName(_fromUtf8(“label_10”)) self.label_11 = QtGui.QLabel(Form) self.label_11.setGeometry(QtCore.QRect(320, 20, 91, 16)) self.label_11.setAlignment(QtCore.Qt.AlignCenter) self.label_11.setObjectName(_fromUtf8(“label_11”)) self.label_12 = QtGui.QLabel(Form) self.label_12.setGeometry(QtCore.QRect(400, 40, 21, 16)) self.label_12.setAlignment(QtCore.Qt.AlignCenter) self.label_12.setObjectName(_fromUtf8(“label_12”)) self.lineEdit_1 = QtGui.QLineEdit(Form) self.lineEdit_1.setGeometry(QtCore.QRect(160, 40, 81, 20)) self.lineEdit_1.setObjectName(_fromUtf8(“lineEdit_1”)) self.lineEdit_2 = QtGui.QLineEdit(Form) self.lineEdit_2.setGeometry(QtCore.QRect(160, 100, 81, 20)) self.lineEdit_2.setObjectName(_fromUtf8(“lineEdit_2”)) self.textEdit = QtGui.QTextEdit(Form) self.textEdit.setGeometry(QtCore.QRect(160, 160, 91, 81)) self.textEdit.setObjectName(_fromUtf8(“textEdit”)) self.lineEdit_3 = QtGui.QLineEdit(Form) self.lineEdit_3.setGeometry(QtCore.QRect(320, 40, 81, 20)) self.lineEdit_3.setObjectName(_fromUtf8(“lineEdit_3”)) self.pushButton_1 = QtGui.QPushButton(Form) self.pushButton_1.setGeometry(QtCore.QRect(10, 20, 101, 23)) self.pushButton_1.setObjectName(_fromUtf8(“pushButton_1”)) self.pushButton_2 = QtGui.QPushButton(Form) self.pushButton_2.setGeometry(QtCore.QRect(10, 60, 101, 23)) self.pushButton_2.setObjectName(_fromUtf8(“pushButton_2”)) self.pushButton_3 = QtGui.QPushButton(Form) self.pushButton_3.setGeometry(QtCore.QRect(150, 270, 111, 23)) self.pushButton_3.setObjectName(_fromUtf8(“pushButton_3”)) self.pushButton_4 = QtGui.QPushButton(Form) self.pushButton_4.setGeometry(QtCore.QRect(10, 100, 101, 23)) self.pushButton_4.setObjectName(_fromUtf8(“pushButton_4”)) self.pushButton_5 = QtGui.QPushButton(Form) self.pushButton_5.setGeometry(QtCore.QRect(310, 80, 111, 23)) self.pushButton_5.setObjectName(_fromUtf8(“pushButton_5”)) self.calendarWidget = QtGui.QCalendarWidget(Form) self.calendarWidget.setGeometry(QtCore.QRect(290, 130, 168, 171)) self.calendarWidget.setObjectName(_fromUtf8(“calendarWidget”)) self.line_1 = QtGui.QFrame(Form) self.line_1.setGeometry(QtCore.QRect(270, 0, 20, 321)) self.line_1.setFrameShape(QtGui.QFrame.VLine) self.line_1.setFrameShadow(QtGui.QFrame.Sunken) self.line_1.setObjectName(_fromUtf8(“line_1”)) self.line_2 = QtGui.QFrame(Form) self.line_2.setGeometry(QtCore.QRect(120, 0, 20, 321)) self.line_2.setFrameShape(QtGui.QFrame.VLine) self.line_2.setFrameShadow(QtGui.QFrame.Sunken) self.line_2.setObjectName(_fromUtf8(“line_2”)) self.button_clicked(Form) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): Form.setWindowTitle(_translate(“Form”, “가계부”, None)) self.label_1.setText(_translate(“Form”, “이번달 남은돈”, None)) self.label_2.setText(_translate(“Form”, “이번주 남은돈”, None)) #self.label_3.setText(_translate(“Form”, “50 0000 원”, None)) #self.label_4.setText(_translate(“Form”, “3 0000 원”, None)) self.label_5.setText(_translate(“Form”, “쓴 돈”, None)) self.label_6.setText(_translate(“Form”, “사유(짧게)”, None)) self.label_7.setText(_translate(“Form”, “원”, None)) #self.label_8.setText(_translate(“Form”, “80 0000원”, None)) self.label_9.setText(_translate(“Form”, “매달 여윳돈”, None)) self.label_10.setText(_translate(“Form”, “날짜(월/일)”, None)) self.label_11.setText(_translate(“Form”, “매달 여윳돈 설정”, None)) self.label_12.setText(_translate(“Form”, “원”, None)) self.pushButton_1.setText(_translate(“Form”, “전체 가계부”, None)) self.pushButton_2.setText(_translate(“Form”, “저번달 가계부”, None)) self.pushButton_3.setText(_translate(“Form”, “지출내역 추가”, None)) self.pushButton_4.setText(_translate(“Form”, “이번달 가계부”, None)) self.pushButton_5.setText(_translate(“Form”, “설정”, None)) def button_clicked(self, Form): self.pushButton_1.clicked.connect(self.b1) self.pushButton_2.clicked.connect(self.b2) self.pushButton_4.clicked.connect(self.b4) self.pushButton_5.clicked.connect(self.b5) self.pushButton_3.clicked.connect(self.b3) def make_messagebox(self, text): msg = QtGui.QMessageBox() msg.setIcon(QtGui.QMessageBox.Warning) msg.setWindowTitle(u’가계부’) msg.setText(text) msg.exec_() def b1(self): os.startfile(dir_name) def b2(self): t = datetime.date.today() _y = t.year _m = t.month _m = int(_m) – 1 if _m < 0: _y -= 1 _m = 12 _y = str(_y) _m = str(_m) path = _y+'-'+_m if path in os.listdir(dir_name): os.startfile(dir_name+'\\'+_y+'-'+_m) else: self.make_messagebox(u'저번달 가계부 폴더가 없습니다.') def b4(self): t = datetime.date.today() _y = t.year _m = t.month _y = str(_y) _m = str(_m) path = _y+'-'+_m if path in os.listdir(dir_name): os.startfile(dir_name+'\\'+_y+'-'+_m) def b5(self): try: _text = int(self.lineEdit_3.text()) except: self.make_messagebox(u'돈은 숫자만 입력해주세요!!') return with open(dir_name+'\\affordable_money.txt','w') as f: f.write(str(_text)) self.label_8.setText(see_money(str(_text))+u'원') self.make_messagebox(u'적용되었습니다. 여윳돈 적용은 프로그램을 재시작해야 적용됩니다.') def b3(self): try: _r = re.findall('\d{2}/\d{2}',self.lineEdit_1.text())[0].split('/') except: self.make_messagebox(u"날짜는 '02/01'형식으로 입력해주세요!") return try: spend_money = int(self.lineEdit_2.text()) except: self.make_messagebox(u"쓴 돈은 정수만 입력해주세요!!") return reason = str(self.textEdit.toPlainText()).strip() #돈쓴 사유 msg = QtGui.QMessageBox() msg.setIcon(QtGui.QMessageBox.Question) msg.setWindowTitle(u'가계부') msg.setStandardButtons(QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel) msg.setText(u"추가하시겠습니까?") ret = msg.exec_() if ret==1024: #예 버튼을 눌렀을 경우 t = datetime.date.today() _y = str(t.year) path = dir_name+'\\'+_y+'-'+_r[0]+'\\'+_y+'-'+_r[0]+'-'+_r[1]+'.txt' if _y+'-'+_r[0]+'-'+_r[1]+'.txt' not in os.listdir(dir_name+'\\'+_y+'-'+_r[0]): #새로 가게부 txt파일 만드는 알고리즘 msg = QtGui.QMessageBox() msg.setIcon(QtGui.QMessageBox.Question) msg.setWindowTitle(u'가계부') msg.setStandardButtons(QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel) msg.setText(_y+'-'+_r[0]+'-'+_r[1]+u"날짜의 가게부가 없습니다. 추가하시겠습니까?") ret = msg.exec_() if ret==1024: #추가한다고 yes하면 새로 만듬. with open(dir_name+'\\'+_y+'-'+_r[0]+'\\'+_y+'-'+_r[0]+'-'+_r[1]+'.txt','w') as f: f.write('') else: #추가 안할거면 종료 return with open(path,'r') as f: #돈쓴내역 추가 알고리즘 content = f.read().split(' ')[:-2] total = map(lambda x:int(x[:8]), content) content = ' '.join(content) if content: content += ' ' with open(path,'w') as f: f.write(content + u'{:>8}원, 사유 : [{}]

‘.format(spend_money, reason)) f.write(u'{}원을 {}-{}-{}에 사용.’.format(sum(total)+spend_money,_y,_r[0],_r[1])) budget_list = os.listdir(dir_name+’\\’+_y+’-‘+_r[0]) #한달 남은 사용량 변경 알고리즘. monthly_total = 0 #이번달에 쓴 총돈 week_total = 0 #이번주에 쓴 총돈 for list in budget_list: if list!=monthly_total_txt and list.startswith(_y): with open(dir_name+’\\’+_y+’-‘+_r[0]+’\\’+list,’r’) as f: monthly_total += sum(map(lambda x:int(x[:8]), f.read().split(‘

‘)[:-2])) if list in thisweek_txt_list: with open(dir_name+’\\’+_y+’-‘+_r[0]+’\\’+list,’r’) as f: week_total += sum(map(lambda x:int(x[:8]), f.read().split(‘

‘)[:-2])) with open(dir_name+’\\affordable_money.txt’,’r’) as f: monthly_affordable = int(f.read()) with open(dir_name+’\\’+_y+’-‘+_r[0]+’\\’+monthly_total_txt,’w’) as f: f.write(str(monthly_total)) with open(dir_name+’\\’+_y+’-‘+_r[0]+’\\’+week_spend_txt,’w’) as f: f.write(str(week_total)) with open(dir_name+’\\’+affordable,’r’) as f: #여윳돈 입력. monthly = f.read() self.label_3.setText(see_money(str(monthly_affordable – monthly_total))+u’원’) self.label_4.setText(see_money(str(int(monthly)/4 – week_total))+u’원’) 접기

2. 개선된 메인함수 부분.

소스코드 펼치기

접기 # -*- encoding: cp949 -*- from PyQt4 import QtGui, QtCore from new_ui import * import sys, os import datetime reload(sys) sys.setdefaultencoding(‘cp949’) class MyForm(QtGui.QMainWindow): def __init__(self, parent=None): super(MyForm, self).__init__(parent) self.ui = Ui_Form() self.ui.setupUi(self) def see_money(money): _monthly = ” cnt = 0 for i in xrange(len(money)-1,-1,-1): if cnt%4==0: _monthly = ‘ ‘+_monthly _monthly = money[i] + _monthly cnt += 1 return _monthly def get_week(date): day_idx = date.weekday() # turn sunday into 0, monday into 1, etc. sunday = date – datetime.timedelta(days=day_idx) date = sunday for n in xrange(7): yield date date += datetime.timedelta(days=1) dt = datetime.datetime.now() start = dt – datetime.timedelta(days=dt.weekday()) end = start + datetime.timedelta(days=6) thisweek_start = int(start.strftime(‘%d/%b/%Y’)[:2]) thisweek_end = int(end.strftime(‘%d/%b/%Y’)[:2]) dt = datetime.date.today() thisweek_txt_list = [d.isoformat()+’.txt’ for d in get_week(datetime.datetime.now().date())] dir_name = u’가계부’ monthly_total_txt = u’한달 총 사용량.txt’ week_spend_txt = str(datetime.date.today().month)+u’월 ‘+str(thisweek_start)+’~’+str(thisweek_end)+’.txt’ #12월 1~7일과 같은 format affordable = ‘affordable_money.txt’ #여윳돈 설정 기본 100만원. t = datetime.date.today() _y = str(t.year) _m = ‘{:0>2}’.format(str(t.month)) _d = ‘{:0>2}’.format(str(t.day)) if dir_name not in os.listdir(‘.’): #가계부 디렉터리 만들기. os.makedirs(dir_name) if affordable not in os.listdir(dir_name): with open(dir_name+’\\’+affordable,’w’) as f: f.write(‘1000000′) dir_path = _y+’-‘+_m #각 월별 디렉터리 만들기 if dir_path not in os.listdir(dir_name): os.makedirs(dir_name+’\\’+dir_path) txt_path = _y+’-‘+_m+’-‘+_d+’.txt’ #각 월 내부의 일별 txt파일 만들기 if txt_path not in os.listdir(dir_name+’\\’+dir_path): with open(dir_name+’\\’+dir_path+’\\’+txt_path,’w’) as f: f.write(”) if monthly_total_txt not in os.listdir(dir_name+’\\’+dir_path): #이번달에 쓴 총돈 관련 txt파일 만들기 with open(dir_name+’\\’+dir_path+’\\’+monthly_total_txt,’w’) as f: f.write(‘0′) if week_spend_txt not in os.listdir(dir_name+’\\’+dir_path): #이번주에 쓴 돈 관련 txt파일 만들기 with open(dir_name+’\\’+dir_path+’\\’+week_spend_txt,’w’) as f: f.write(‘0′) app = QtGui.QApplication(sys.argv) myapp = MyForm() with open(dir_name+’\\’+affordable,’r’) as f: #여윳돈 입력. monthly = f.read() budget_list = os.listdir(dir_name+’\\’+_y+’-‘+_m) monthly_total = 0 week_total = 0 for list in budget_list: if list!=monthly_total_txt: with open(dir_name+’\\’+_y+’-‘+_m+’\\’+list,’r’) as f: monthly_total += sum(map(lambda x:int(x[:8]), f.read().split(‘

‘)[:-2])) if list in thisweek_txt_list: with open(dir_name+’\\’+_y+’-‘+_m+’\\’+list,’r’) as f: week_total += sum(map(lambda x:int(x[:8]), f.read().split(‘

‘)[:-2])) with open(dir_name+’\\affordable_money.txt’,’r’) as f: monthly_affordable = int(f.read()) #see_money함수는 new_ui.py에 있음 myapp.ui.label_3.setText(see_money(str(monthly_affordable – monthly_total))+u’원’) #이번달 여윳돈 텍스트 설정 myapp.ui.label_4.setText(see_money(str(int(monthly)/4 – week_total))+u’원’) #이번주 여윳돈 설정 myapp.ui.label_8.setText(see_money(monthly)+u’원’) #매달 여윳돈 myapp.ui.lineEdit_1.setText(_m+’/’+_d) #기본 날짜 myapp.show() app.exec_() 접기

setup.py

py2exe용 setup.py

접기 #-*- coding: cp949 -*- from distutils.core import setup import py2exe, glob folder = u’가계부’ setup( windows=[{‘script’:’hello.py’,’icon_resources’:[(1, ‘cal.ico’)]}], #console=[‘hello.py’]가 아니라 앞을 windows로 주면 보기싫은 콘솔 창이 사라짐. #data_files=[ (‘C:\\Users\\Ko\\Desktop\\python exe\\’+folder+’\\imageformats’,glob.glob(‘C:\\Python27\\Lib\\site-packages\\PyQt4\\plugins\\imageformats\\*.*’)) ], options = {‘py2exe’: { ‘bundle_files’:1, ‘dist_dir’:’C:\\Users\\Ko\\Desktop\\python exe\\’+folder, ‘includes’: [‘sip’,’PyQt4.QtNetwork’], #그냥 py2exe로 만들었을때 이러한 모듈이 없다고 에러뜸. 이거 추가. “dll_excludes”: [“MSVCP90.dll”] #이거 없다고 exe가 안만들어지는데 굳이 필요 없으므로 필요 없다고 표시해둠. }}, zipfile = None ) 접기

[Java] 개인프로젝트(가계부 프로그램)

반응형

프로그램 : 가계부 프로그램

발표 ppt

가계부.pptx

개요

가계부 프로그램을 만들게 된 계기는 평소에 돈을 계획적으로 사용하지 않고 과소비를 하는 사람들에게 무분별한 소비로 인한 지출을 줄이고 계획적인 소비를 할 수 있도록 돕는 프로그램을 설계해 수입과 지출에 대한 항목별을 만들어 자신이 사용한 지출내역과 사용한 분야를 알 수 있음으로 자신이 소비한 항목과 지출금액을 확인함으로서 불필요한 소비를 줄이고 합리적인 소비습관을 만들 수 있는 기회를 제공한다.

기능

가계부프로그램은 입력기능 출력기능 저장기능을 주로해서 크게 3가지로 구성된다.

-입력기능 입금, 출금, 지출분야, 금액, 메모를 입력받아 저장하는 역할을 수행한다.

-출력기능 입금기능에서 입력받은 정보들을 항목별로 입력받은 순서대로 출력하며 마지막으 로 남은 금액을 출력한다.

-저장기능 입력기능에 저장된 정보들을 출력기능에서 출력된 내용처럼 저장한다.

기능구현

입력 : 입력기능의 JPanel, JLable, JButton, JTextField, JComboBox을 주로 사용한다. JPanel은 각 요소들을 배치하기 위해서 사용하고 JLabel은 프로그램의 이름, 현재 작동중인상황, 입력해야할 내용을 알려준다. JButton은 사용자가 입력을 받거나 다른 동작을 원할 때 사용한다. JTextField는 사용자의 값을 입력받기위해 사용된다. JComboBox는 사용자가 이용한 항목별로 나타낼 수 있게끔 사용된다.

출력 : 출력기능은 JPanel, JLable, JButton, JTable, JScrollPane, DefaultTableModel, Vector을 주로 사용한다.

JPanel, JLable, JButton은 위와 같다. JTable은 입력받은 값들을 목록별로 나타내기 위해 사용된다. JScrollPane은 JTable에 입력받은 값들을 스크롤하면서 볼 수 있게 한다. DefaultTableModel은 고정되어있는 JTable에 추가로 입력받기위해서 사용된다.

Vector은 객체에 대한 참조 값을 저장하는 배열으로서 입력받은 값들을 배열로 저장해서 DefaultTableModel에 입력하기 위해 사용한다. Vector에 값을 추가할 때는 addElement를 이용해서 새로운 값을 배열에 저장해준다.

저장 : 저장기능은 파일입출력의 FileWrite. BufferedWriter, try catch,를 이용한다.

FileWrite는 저장할 파일의 경로를 설정하고 BufferedWrite는 한줄씩 입력받기위해 사용된다. 파일에 저장된 내용을 저장한 후에 close를 이용해 쓴 파일을 닫는다. 파일에 저장할 때 문자열로 저장하기 위해서 형 변환을 해주는데 JComboBox에 값은 getSelectItem으로 JTextfield의 값은 getText로 int형은 String.valueOf()로 변환한다. try catch는 예외처리를 위해서 사용된다.

JTable로 이동하기 위해서 사용한 부분 : 입력값들을 JTable로 출력하기 위해서 입력받을 값들을 저장할 구조체 배열로 만든다. 만든 구조체 배열에 입력값들을 저장한다. 구조체 배열의 값들을 addElement를 이용하여 배열의 값들을 JTable에 추가해준다.

추가할 사항

개선해야할 사항들은 항목별 지출 계산, 지출 현황 그래프, 로그인, 계좌추가, 입력한 시간 추가 저장, 과소비 방지경고, 파일 불러오기 등이 있다.

항목별 지출 계산 : 항목별로 지출을 계산을 한 뒤에 항목별로 저장해서 항목별로 최고 지출과 최저지출을 저장한다.

지출 현황 그래프 출력 : 위에서 계산한 항목별 지출을 그래프로 나타낸다. 일자, 월, 연도별로 그래프를 출력할 수 있게 한다.

로그인 : 계정을 만든 후 계정별로 가계부 프로그램을 이용할 수 있게 한다.

계좌 추가 : 한 계정에서 여러 개의 계좌를 이용할 수 있게 한다. 계좌별 금액을 출력하고 계좌의 금액 합계를 출력한다.

시간 입력 추가 : 정보를 입력 시에 자동으로 시간이 추가 저장되게 하여 기입한 시간을 알 수 있게 된다.

과소비 방지경고 : 항목별로 최대 지출 금액을 설정한 뒤에 항목별 사용금액이 설정한 금액을 초과할 경우 경고창이 생성된다.

파일 불러오기 : 입력 종료한 뒤에 저장했던 파일을 불러와서 이전에 기록한 정보에 추가적으로 저장이 가능하게 된다.

실행결과

이상 끗~~~

반응형

웹 초급 과정 : 가계부 프로그램을 만들어보자

설명

*********특별할인!! 쿠폰코드란에 LEARNWEB을 입력하시면 40달러에 강의를 구매하실 수 있습니다. *********

0. 동영상 감상시 영상 품질은 1080p로 보시기를 추천드립니다

1. 저는 초급단계에서 이론을 공부한 수강생들이 쉽게 실무 프로그램을 제작할 수 있도록 도와주고 싶습니다.

2. 수강생들이 전산으로 관리할 컨텐츠를 발견하거나 발굴해 내어 프로그램을 통해 데이터를 보관하고 검색하는 능력을 갖추도록 해주고 싶습니다.

3. HTML5, AJAX-JSON 등이 가진 Web만의 장점들은 대단히 많습니다.

수강생들이 이런 장점들을 살려서 실습해 보고, 거기서 매력도 느끼면서 스스로 프로그램을 제작해 보도록 하겠습니다.

4. 제가 강좌를 준비하면서 가장 중점을 둔 것은 초급단계를 마친 수강생들이 간단한 예제들 뿐만 아니라 어느정도 수준의 실무 프로그램을 제작할 수 있도록 한 것입니다.

저는 이론들을 많이 준비했습니다만, 여기서는 많이 버렸습니다.

초급을 막 벗어난 수강생들의 눈높이에 맞추기 위해서 였습니다.

특히 DATABASE에 관한 이론과 가계부 Website의 Server-Side 내용을 압축시키면서 어려운 이론들이 많이 삭제되었습니다.

또한, 강의를 진행하면서도 사족은 다 없애고, 이론을 위한 이론은 아예 멀리하였습니다.

5. 본 강의는 최소한의 이론만 배워서 쓸만한 프로그램을 만들고 싶어하는 분들을 위한 것입니다.

이 점이 바로 이 강의를 들어야 하는 이유입니다.

간단히 말해서 거품을 다 뺀것입니다.

본 강의를 중급용입니다.

초급단계를 막 벗어나서 프로그램을 하나라도 손수 만들어 보고 싶은 사람들을 대상으로 했습니다.

이 사람들이 바로, 본 강의를 들어야 할 사람들이지만, 혹 강의 내용중의 일부는 약간 어려울 수도 있습니다.

그러나 Udemy 강좌는 평생 옆에 두고 볼 수 있기에 저의 강좌가 초급단계를 벗어나고자 하는 분들이 중급으로 도약하기 전에 정리하고 넘어갈 수 있는 강좌가 되기를 바랍니다.

6. 본 강의를 시청하지 말아야 할 분들도 있습니다.

본 강의를 통해서 고급기술이나 어떤 특별한 Logic을 배워서 Skill을 향상시키려는 사람들입니다.

정확히 말하자면 본 강의는 초,중급용 강의입니다.

7. 본 강좌의 마지막 3편에서는 제공된 가계부 Website Source를 실제로 구동할 수 있도록 많이 힘썼습니다.

실제로 여러분이 Hosting Service를 받아서 가계부 Website를 운영해 볼 수 있습니다.

회원가입과 로그인만 해도, 본 가계부 Website를 충분히 사용할 수 있습니다.

그러나 일보전진하여, 본 가계부 제작기술과 다른 프로그램을 만드는 idea를 접목하면 새롭고도 멋진 프로그램이 나올 수도 있습니다.

이 말은 즉, 본 가계부 프로그램이 기반이 된다는 뜻입니다.

사실, 가계부 프로그램 만으로 System이라 부르기에는 많이 미약합니다.

가계부 제작 후에 만들어진 여러 프로그램들이 하나 둘 더해지면 그제서야 명실상부한 System이 되는 것입니다.

예를 들면 Naver에서 회원가입하면 Email을 주고 받으면서 Blog나 Cafe도 운영하는 것과 같습니다.

즉, 성격이 다른 것들을 하나의 문으로 들어가서 다 이용할 수 있습니다.

이것은 마치 어린이대공원에서 자유이용권 한 장으로 여러 놀이기구를 이용하는 것과 같습니다.

8. 강좌에 대한 결론입니다.

다양한 루트로 이론들을 알고 계신 여러분들에게, 저 역시 단순한 예제들만으로 여러분을 가르치려고 하는 것이 아닙니다.

어떻게 보면 기술이전입니다.

가계부 Website를 여러분이 실제로 제작해 봄으로써, 앞으로 무궁무진한 System 개발을 해낼 수 있는, 그런 프로그래머들을 양성하는 것이 저의 목표이자 소망입니다.

키워드에 대한 정보 가계부 프로그램 만들기

다음은 Bing에서 가계부 프로그램 만들기 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 엑셀 프로그램 으로 가계부 양식 만들면서 액셀 실무에서 많이 사용하는 기능 배우세요.

  • 엑셀 기초
  • 엑셀 가계부 만들기
  • 엑셀 강의
  • 엑셀 교육
  • 엑셀 배우기

엑셀 #프로그램 #으로 #가계부 #양식 #만들면서 #액셀 #실무에서 #많이 #사용하는 #기능 #배우세요.


YouTube에서 가계부 프로그램 만들기 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 엑셀 프로그램 으로 가계부 양식 만들면서 액셀 실무에서 많이 사용하는 기능 배우세요. | 가계부 프로그램 만들기, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

See also  백종원 감 바스 | [Sub] 집에서 만든 새우감바스?? '감바스 알 아히요' 빠른 답변

Leave a Reply

Your email address will not be published. Required fields are marked *