방학동안 알바보단 코딩 실력 향상에
더 가치를 두고 장기캠프 두 개와 방학 프로젝트에 집중하기로
이번 방학이 시작할 때 다짐 했었어
그러다 보니 알바를 할 시간도 체력도 의지도 없어
거지로 방학을 보내야 하는 상황이 온 거야
걱정 반 어떻게든 되겠지 아잉몰라 반 인 심정으로
매일 코딩이랑 동거하던중
부모님께서 나를 급하게 부르셨어
그러곤 나에게 전화를 바꿔주셨는데
부모님의 소속 단체에서 일하시는 간사님이셨어
간사님은 나에게 알바를 하겠냐고 물으시곤
집에서 혼자 할 수 있는 일이라고 설명해주셨어
나는 옳거니~~ 하고 바로 감사합니다 를 시전하고
하겠다고 했지
그런데 무슨 일인가 봤더니 엑셀 파일에 있는 명단을 가지고
동명이인이 있나 확인 하고
회원 명단이랑 비교해 회원번호를 입력하는 일인거야
그러자마자 내 머릿속에서 이런일 아니면
언제 내 전공 살려서 일해보겠냐 라는 생각이 든거야
그래서 코딩으로 자동화를 시켜보겠다고 말했고
7월 9일 금요일에 간사님을 만나서 설명을 듣고 왔어
설명을 들으니 더 자동화가 가능하다는 판단이 섰고
무작정 자동화를 시작했지
그러자 간사님께서 만약에 자동화에 성공하면
다른 간사님들도 사용할 수 있게 GUI로 만들어달라고 하셨어.
그래서 다뤄본 GUI 중에 그나마 제일 최근에 사용한
java swing 을 사용하기로 했고
자바로 개발을 시작했지
주의 : 지금부턴 일반인이 보기에 복잡한 코드가 나옵니다.
(만약 복잡하지 않다고 느껴진다면 당신은 이미 탈 일반인~~)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashMap;
// /Users/kimshin/Desktop/TIM 알바/TIM/***_#TIM_2_5월_입금합산.csv
// /Users/kimshin/Desktop/TIM 알바/TIM/2~5 TIM.csv
public class TIM2_5 {
public static void main(String[] args){
// 중복 채우기 작업 중
load3();
}
public static void load3() {
BufferedReader br = null;
BufferedWriter bufWriter = null;
BufferedWriter bufWriter2 = null;
HashMap<String, String> map = new HashMap<String, String>();
HashMap<String, String> map2 = new HashMap<String, String>();
try{
br = Files.newBufferedReader(Paths.get("/Users/kimshin/Desktop/TIM 알바/TIM/MRM에 등록되어 있는 분들 회원번호 부여 완료.csv"));
bufWriter = Files.newBufferedWriter(Paths.get("/Users/kimshin/Desktop/TIM 알바/TIM/동명이인X 회원번호X 3글자 이하.csv"),Charset.forName("UTF-8"));
bufWriter2 = Files.newBufferedWriter(Paths.get("/Users/kimshin/Desktop/TIM 알바/TIM/동명이인X 회원번호X 4글자 이상.csv"),Charset.forName("UTF-8"));
//Charset.forName("UTF-8");
String line = "";
while((line = br.readLine()) != null){
String array[] = line.split(",");
if(map2.containsKey(array[1]) == false) {
map2.put(array[1], array[0]);
}
if(map.containsKey(array[1]) == false && array[0].equals("") && map2.get(array[1]).equals("") ) {
map.put(array[1], array[0]);
if(array[1].length() < 4) {
bufWriter.write( array[1] +","+ array[2]);
bufWriter.newLine();
}
else {
bufWriter2.write( array[1] +","+ array[2]);
bufWriter2.newLine();
}
}
}
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
try{
if(br != null){
br.close();
bufWriter.close();
bufWriter2.close();
}
}catch(IOException e){
e.printStackTrace();
}
}
}
//로드1 에서 리턴받은 맵을 활용해 후원자와 받은분이 같고 회원번호가 있다면 그 회원번호를 부
public static void load2(){
HashMap<String, String> map = load();
BufferedReader br = null;
BufferedWriter bufWriter = null;
BufferedWriter bufWriter2 = null;
// boolean flag = false;
int count_of_same_name = 2;
String name_of_last_line = "";
String donator_of_last_line = "";
String id_of_last_line = "";
try{
br = Files.newBufferedReader(Paths.get("/Users/kimshin/Desktop/TIM 알바/TIM/***_#TIM_2_5월_입금합산.csv"));
bufWriter = Files.newBufferedWriter(Paths.get("/Users/kimshin/Desktop/TIM 알바/TIM/test2.csv"),Charset.forName("UTF-8"));
bufWriter2 = Files.newBufferedWriter(Paths.get("/Users/kimshin/Desktop/TIM 알바/TIM/doubled2.csv"),Charset.forName("UTF-8"));
String line = "";
// line = br.readLine();//버퍼 처리
line = br.readLine();
String array1[] = line.split(",");
id_of_last_line = array1[0];
donator_of_last_line = array1[1];
name_of_last_line = array1[2];
bufWriter.write(array1[0] + "," + array1[1] + "," + array1[2]);
bufWriter.newLine();
// System.out.println(array1[0] + "," + array1[1] + "," + array1[2]);
// System.out.print(name_of_last_line);
while((line = br.readLine()) != null){
String array[] = line.split(",");
if(array[0].equals("") == true) {
if(map.containsKey(array[1])) {
array[0] = map.get(array[1]);
}
}
if(array[1].equals(donator_of_last_line) == true && array[2].equals(name_of_last_line) == true ) {
array[0] = id_of_last_line;
bufWriter.write(array[0] + "," + array[1] + "," + array[2]);
bufWriter.newLine();
}
else if( array[1].equals(donator_of_last_line) == true && array[2].equals(name_of_last_line) == false ) {
array[0] = "";
bufWriter2.write(array[0] + "," + array[1] + "," + array[2] + "," + count_of_same_name);
bufWriter2.newLine();
bufWriter.write(array[0] + "," + array[1] + "," + array[2]);
bufWriter.newLine();
}
else {
id_of_last_line = array[0];
donator_of_last_line = array[1];
name_of_last_line = array[2];
bufWriter.write(array[0] + "," + array[1] + "," + array[2]);
bufWriter.newLine();
}
count_of_same_name++;
//System.out.println(array[0] + "," + array[1] + "," + array[2]);
}
// System.out.print(count_of_same_name);
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
try{
if(br != null){
br.close();
bufWriter.close();
bufWriter2.close();
}
}catch(IOException e){
e.printStackTrace();
}
}
}
//MRM에서 회원 리스트 뽑아오고 중복체크후 중복된 값들 위치출력한 후 맵에 넣어서 리
public static HashMap<String, String> load() {
BufferedReader br = null;
HashMap<String, String> map = new HashMap<String, String>();
int count = 0;
try{
br = Files.newBufferedReader(Paths.get("/Users/kimshin/Desktop/TIM 알바/TIM/2~5 TIM.csv"));
String line = "";
line = br.readLine();//버퍼 처리
while((line = br.readLine()) != null){
String array[] = line.split(",");
// if( map.containsKey(array[1]) == true) System.out.println(count);
map.put(array[1],array[0]);
// count++;
}
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
try{
if(br != null){
br.close();
}
}catch(IOException e){
e.printStackTrace();
}
}
return map;
}
}
후원자 관리 명단 이었는데 같은 후원자가 여러번 후원하면
회원번호를 제일 위에 있는 칸에만 입력해놓은거야
그래서 같은 후원자라면 같은 후원번호를 전부 입력해줬고
(같은 후원자인지 판별은 바로 전 후원자의 이름과 다음 후원자의 이름
그리고 바로 전 후원을 받는 사람의 이름과 다음 후원받는 사람의 이름 둘 모두 같다면 동일인물
만약 아니라면 동명이인으로 처리하기로 했어)
그리고 나서 데이터 베이스에 존재하는 후원자들 명단을 가져와서
방금 정리한 파일과 비교해 후원명단에는 있지만 회원번호가 없는
후원자들에게 회원 번호를 입력했어
그 후 아직 데이터 베이스에 입력되지 않은 후원자들의 명단을 따로 만들어서
이름이 3글자 이하 와 4글자 이상으로 분류했어
4글자 이상은 데이터 베이스에 넣을 필요가 없다고 하셨기 때문이지
암튼 그래서 오늘 작업은 여기까지 했고
(이 코드를 그대로 가져다 쓰기는 아마 힘들거야
엑셀 파일마다 양식이 달라서 파일에 맞춰서 수정해야 하거든)
어디가서 내세울 수 있을 만큼 고급진 코드도 아니고
그냥 필요에 의해 후다닥 검색하고 짠 코드지만
이렇게 전공을 살려봤다는 것을
기록으로 남기려고 이렇게 일지로 써봤어
아버지가 내가 이렇게 좋은 기회가 생긴 걸 보시고
나한테 사실 요즘 내가 경제적으로 어려울까봐 걱정돼
기도를 하셨다고 하시는거야
그래서 참 다시 한번 나의 필요를 아시고 미리 채우시기도 하시는
하나님께 감사했지.
하나님 이런 알바를 통해 돈을 버는 것이 기쁜것이 아니라
주님을 더욱 바라보게 됨으로 인해 감사합니다.
'개발 일지 > 후원명단관리 프로그램' 카테고리의 다른 글
코딩으로 알바하기 마지막 (1) | 2021.07.15 |
---|---|
코딩으로 알바하기 5 & 6 일차 (2) | 2021.07.15 |
코딩으로 알바하기 4일차 (2) | 2021.07.13 |
코딩으로 알바하기 3일차 (당근흔들흔들) (4) | 2021.07.12 |
코딩으로 알바하기 2일차 (2) | 2021.07.11 |
댓글