본문 바로가기

Backend/Java

[JAVA] 간단한 고객관리프로그램

728x90

* 고객관리 할 수 있는 프로그램을 AWT로 GUI를 구성하여 만들었습니다. 

 

String의 사용을 최대한 줄이고, StringBuffer를 사용하여 메모리 낭비를 줄이도록 하였습니다.

ObjectStream을 이용하여 입출력 할 수 있도록 하였습니다.

파일을 저장, 새이름으로 저장, 불러오기 등 io를 사용할 수 있도록 구성하였습니다. 

ObjectStream을 사용하지 않고 객체 직렬화하지 않는 함수도 포함하였습니다. 

 

복잡한 프로그램이 아니기에 Customer.java, CustomerManager.java 두개의 클래스만으로 구성하였고

이벤트 관련 리스너를 클래스안에서 모두 처리하도록 하였습니다.

화면 구성도 별도의 클래스로 panel를 나누지 않고 buildGUI 라는 함수안에서 모두 처리할 수 있도록 하였습니다.

구성이 복잡해 tab을 이용하여 쉽게 볼 수 있도록 하였습니다. 

 


Customer.java

 

public class Customer implements Serializable {
	private static final long serialVersionUID = 1L;
	private String name;
	private String jumin;
	private String tel;
	private boolean gender;
	private String hobby;

	public Customer() {

	}

	public Customer(String name, String jumin, String tel, boolean gender, String hobby) {
		super();
		this.name = name;
		this.jumin = jumin;
		this.tel = tel;
		this.gender = gender;
		this.hobby = hobby;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getJumin() {
		return jumin;
	}

	public void setJumin(String jumin) {
		this.jumin = jumin;
	}

	public String getTel() {
		return tel;
	}

	public void setTel(String tel) {
		this.tel = tel;
	}

	public boolean isGender() {
		return gender;
	}

	public void setGender(boolean gender) {
		this.gender = gender;
	}

	public String getHobby() {
		return hobby;
	}

	public void setHobby(String hobby) {
		this.hobby = hobby;
	}

	@Override
	public String toString() {
		StringBuffer sb = new StringBuffer("       ");
		sb.append(name);
		sb.append(" : ");
		sb.append(isGender() ? "남성" : "여성");
		return sb.toString();
	}
}

 

 CustomerManager.java 

 

public class CustomerManager extends Frame implements ActionListener, KeyListener, ItemListener{

   private static final long serialVersionUID = 1L;
   
   private TextField nametf = new TextField(20);
   
   private TextField jumin1tf = new TextField(7);
   private TextField jumin2tf = new TextField(8);
   
   private Choice telch = new Choice();
   private String[] tstr = {"010", "011", "016", "017", "018", "019"};
   private TextField tel1tf = new TextField(4);
   private TextField tel2tf = new TextField(4);
   
   private CheckboxGroup cg = new CheckboxGroup();
   private Checkbox man = new Checkbox("남성", cg, true);
   private Checkbox woman = new Checkbox("여성", false, cg);
   
   private String[] hstr = {"독서", "영화", "음악", "게임", "쇼핑"};
   private Checkbox[] hobby = new Checkbox[hstr.length];
   
   private Button addbt = new Button("등록");
   private Button dispbt = new Button("분석");
   private Button updatebt = new Button("수정");
   private Button delbt = new Button("삭제");
   private Button initbt = new Button("입력모드");
   
   private List listli = new List();
   
   private TextArea infota = new TextArea();
   
   //메뉴
   private MenuBar mb = new MenuBar();
   
   private Menu mfile = new Menu("File");
      private MenuItem mfnew = new MenuItem("새파일");
      private MenuItem mfopen = new MenuItem("불러오기");
      private MenuItem mfsave = new MenuItem("저장하기");
      private MenuItem mfsaveas = new MenuItem("새이름으로저장하기");
      private MenuItem mfexit = new MenuItem("종료");
   private Menu mhelp = new Menu("Help");
      private MenuItem mhver = new MenuItem("버전정보");
   
   //다이알로그
   private Dialog dialog = new Dialog(this, "버전정보", true);
   
   private Label dlabel = new Label("CustomerManager V1.0", Label.CENTER);
   private Button dbt = new Button("확인");
   
   //구성요소
   private ArrayList <Customer> data = new ArrayList<Customer>();
   
   private File myfile = null;
   private FileDialog fileDialog = null;
   
   //생성자
   public CustomerManager() {
      super("고객관리프로그램");
     
      setDialog();
      buildGUI();
      setEvent();
      setMenu();
   }

   //버튼 처리 
   private void setButton(boolean state) {
      addbt.setEnabled(state);
      dispbt.setEnabled(!state);
      updatebt.setEnabled(!state);
      delbt.setEnabled(!state);
      initbt.setEnabled(!state);
   }
   
   public void clrscr() {
	   nametf.setText("");
	   jumin1tf.setText("");
	   jumin2tf.setText("");
	   telch.select(0);
	   tel1tf.setText("");
	   tel2tf.setText("");
	   man.setState(true);
	   for(int i = 0 ; i <hobby.length;i++) {
		   hobby[i].setState(false);
	   }
	   infota.setText("");
	   nametf.requestFocus();
   }
   public void setForm(boolean state) {
	   nametf.setEditable(state);
	   jumin1tf.setEditable(state);
	   jumin2tf.setEditable(state);
	   man.setEnabled(state);
	   woman.setEnabled(state);
   }
   
   //이벤트 처리
   public void setEvent() {
	   nametf.addActionListener(this);
	   
	   jumin1tf.addKeyListener(this);
	   jumin2tf.addKeyListener(this);
	   
	   telch.addItemListener(this);
	   tel1tf.addActionListener(this);
	   
	   mfexit.addActionListener(this);
	   dbt.addActionListener(this);
	   mhver.addActionListener(this);
	   
	   mfsaveas.addActionListener(this);
	   mfsave.addActionListener(this);
	   mfopen.addActionListener(this);
	   mfnew .addActionListener(this);

	   //버튼 리스너
	   //추가
	   addbt.addActionListener(this);
	   //분석
	   dispbt.addActionListener(this);
	   //수정
	   updatebt.addActionListener(this);
	   //삭제
	   delbt.addActionListener(this);
	   //입력모드
	   initbt .addActionListener(this);
	   
	   listli.addItemListener(this);
	   
	   addWindowListener(new WindowAdapter() {
		@Override
		public void windowClosing(WindowEvent e) {
			System.exit(0);
		}
		   
	});
   }
   
   //액션 이벤트 
   @Override
   public void actionPerformed(ActionEvent e) {
	   if(e.getSource() == nametf) {
		   jumin1tf.requestFocus();
		   return;
	   }
	   if(e.getSource() == tel1tf) {
		   tel2tf.requestFocus();
		   return;
	   }
	   
	   //등록
	   if(e.getSource() == addbt) {
		   String name = nametf.getText();
		   if(name == null || name.trim().length() == 0) {
			   infota.setText("\n\t이름은 반드시 입력하셔야 합니다.");
			   nametf.setText("");
			   nametf.requestFocus();
			   return;
		   }
		   
		   StringBuffer jumin = new StringBuffer(jumin1tf.getText());
		   jumin.append("-");
		   jumin.append(jumin2tf.getText());
		   if(jumin1tf.getText().trim().length() != 6 || jumin2tf.getText().trim().length() != 7) {
			   infota.setText("\n\t올바른 주민번호를 입력하세요.");
			   jumin1tf.setText("");
			   jumin2tf.setText("");
			   jumin1tf.requestFocus();
			   return;
		   }
		   
		   StringBuffer tel = new StringBuffer(telch.getSelectedItem());
		   tel.append("-" );
		   tel.append(tel1tf.getText());
		   tel.append("-");
		   tel.append(tel2tf.getText());
		   if(tel1tf.getText().trim().length() == 0 || tel2tf.getText().trim().length() == 0) {
			   infota.setText("\n\t전화번호는 반드시 입력하세야 합니다ㅣ.");
			   tel1tf.setText("");
			   tel2tf.setText("");
			   tel1tf.requestFocus();
			   return;
		   }
		   
		   boolean gender = man.getState();
		   StringBuffer myHobby = new StringBuffer();
		   for(int i =0;i<hobby.length ;i++) {
			   if(hobby[i].getState()) {
				   myHobby.append(hobby[i].getLabel());
				   myHobby.append("-");
			   }
		   }
		   
		   //아무것도 체크하지 않은 상태.
		   if(myHobby.length() == 0) {
			   myHobby.append("없음");
		   }
		   //하나 이상 체크한 상태
		   else{
			   myHobby.deleteCharAt(myHobby.length()-1);
		   }
		   
		   Customer myCustomer = new Customer(name,jumin.toString(), tel.toString(), gender, myHobby.toString());
		   
		   infota.setText("\n\t성공적으로 등록되었습니다. ");
		   data.add(myCustomer);
		   listli.add(myCustomer.toString());
		   
		   try {
			   Thread.sleep(500);
		   } catch(InterruptedException ir) {}
		   clrscr(); //화면지우기
	   }
	   
	   //분석
	   if(e.getSource() == dispbt) {
		   String jumin1 = new String(jumin1tf.getText());
		   String jumin2 = new String(jumin2tf.getText());
		   
		   boolean gender = man.getState();
		   
		   Calendar cal = Calendar.getInstance();
	       int currentYear = cal.get(Calendar.YEAR);
	
		   //이름 check
		   String name = nametf.getText();
		   StringBuffer result = new StringBuffer("\n\t이름 = ");
		   result.append(name);
		   
		   //생년월일 check
		   //태어난 해 get 
		   //1900년대 태생 2000년대 태생 구분
		   int year = (jumin2.charAt(0) == '1' || jumin2.charAt(0) == '2') ? 1900 : 2000 ;
		   year += Integer.valueOf(jumin1.substring(0,2));
		   
		   //태어난 월 	get
		   int month = Integer.parseInt(jumin1.substring(2,4));
		   
		   //태어난 일 get
		   int day = Integer.parseInt(jumin1.substring(4,6));
		   result.append("\n\n\t생년월일 = ");
		   result.append(year);
		   result.append("년 ");
		   result.append(month);
		   result.append("월 ");
		   result.append(day);
		   result.append("일 ");
		   
		   //나이 check
		   int age = currentYear - year; 
		   result.append("\n\n\t나이 = ");
		   result.append(age);
		   result.append("세");
		   
		   //성별 check
		   result.append("\n\n\t성별 = ");
		   result.append(gender ? "남성" : "여성");
		   
		   //출생 지역 check
		   int loc = Integer.parseInt(jumin2.substring(1,2));
		   String temp ="서울";
		   if(loc <= 8) {
			   temp = "서울";
		   } else if(loc <= 12) {
			   temp = "부산";
		   }else if(loc <= 15) {
			   temp = "인천";
		   }else if(loc <= 25) {
			   temp = "경기도";
		   }else if(loc <= 34) {
			   temp = "강원도";
		   }else if(loc <= 39) {
			   temp = "충청북도";
		   }else if(loc <= 47) {
			   temp = "충청남도";
		   }else if(loc <= 54) {
			   temp = "전라북도";
		   }else if(loc <= 66) {
			   temp = "전라남도";
		   }else if(loc <= 90) {
			   temp = "경상도";
		   }
		   result.append("\n\n\t출생지역 = ");
		   result.append(temp);
		   
		   //입력
		   infota.setText(result.toString());
	   }
	   
	   //수정
	   if(e.getSource() == updatebt) {
		   Customer myCustomer = data.get(listli.getSelectedIndex());
		   StringBuffer tel = new StringBuffer(telch.getSelectedItem());
		   tel.append("-" );
		   tel.append(tel1tf.getText());
		   tel.append("-");
		   tel.append(tel2tf.getText());
		   if(tel1tf.getText().trim().length() == 0 || tel2tf.getText().trim().length() == 0) {
			   infota.setText("\n\t전화번호는 반드시 입력하세야 합니다ㅣ.");
			   tel1tf.setText("");
			   tel2tf.setText("");
			   tel1tf.requestFocus();
			   return;
		   }
		   
		   boolean gender = man.getState();
		   StringBuffer myHobby = new StringBuffer();
		   for(int i =0;i<hobby.length ;i++) {
			   if(hobby[i].getState()) {
				   myHobby.append(hobby[i].getLabel());
				   myHobby.append("-");
			   }
		   }
		   
		   //아무것도 체크하지 않은 상태.
		   if(myHobby.length() == 0) {
			   myHobby.append("없음");
		   }
		   
		   myCustomer.setTel(tel.toString());
		   myCustomer.setHobby(myHobby.toString());
		   setButton(true);
		   setForm(true);
		   infota.setText("\n\t성공적으로 수정되었습니다.");
		   
		   try {
			   Thread.sleep(500);
		   } catch(InterruptedException ir) {}
		   clrscr(); //화면지우기
	   }
	   
	   //삭제
	   if(e.getSource() == delbt) {
		   int index = listli.getSelectedIndex();
		   infota.setText("\n\t성공적으로 삭제되었습니다.");
		   listli.remove(index);
		   data.remove(index);
		   setForm(true);
		   setButton(true);
		   clrscr();
		   return;
	   }
	   
	   //입력모드
	   if(e.getSource() == initbt) {
		   setForm(true);
		   setButton(true);
		   clrscr();
		   return;
	   }
	   
	   //버전정보
	   if(e.getSource() == mhver) {
		   Point pt = getLocation();
		   Dimension my = getSize();
		   Dimension dsize = dialog.getSize();
		   
		   dialog.setLocation((int)pt.getX() + my.width/2-dsize.width/2, (int)pt.getY() + my.height/2-dsize.height/2);
		   dialog.setVisible(true);
	   }
	   //종료메뉴
	   if(e.getSource() == mfexit) {
		   System.exit(0);
	   }
	   
	   //다일러로그 버튼
	   if(e.getSource() == dbt) {
		   dialog.setVisible(false);
	   }
	   
	   //새파일
	   if(e.getSource() == mfnew) {
		   listli.removeAll();
		   data.clear();
		   myfile = null;
		   setButton(true);
		   setForm(true);
		   clrscr();
	   }
	   
	   //불러오기
	   if(e.getSource() == mfopen) {
		   fileDialog = new FileDialog(this, "불러오기", FileDialog.SAVE);
		   fileDialog.setVisible(true); //화면에 뜸
		   
		   String fileName = fileDialog.getFile();
		   String directory = fileDialog.getDirectory();
		   
		   //취소
		   if(fileName == null || directory == null) {
			   return;
		   }
		   myfile = new File(directory, fileName);
		   //dataLoad();
		   loadDate();
	   }
	   
	   //저장하기
	   if(e.getSource() == mfsave) {
		   if(myfile == null) {
			   fileDialog = new FileDialog(this,"새이름으로 저장하기", FileDialog.SAVE);
			   fileDialog.setVisible(true); //화면에 뜸
			   
			   String fileName = fileDialog.getFile();
			   String directory = fileDialog.getDirectory();
			   
			   //취소
			   if(fileName == null || directory == null) {
				   return;
			   }
			   myfile = new File(directory, fileName);
		   } 
		   //dataSave();
		   saveDate();
	   }
	   
	   //새이름으로 저장하기 - 무조건 dialog띄우는거
	   if(e.getSource() == mfsaveas) {
		   fileDialog = new FileDialog(this,"새이름으로 저장하기", FileDialog.SAVE);
		   fileDialog.setVisible(true); //화면에 뜸
		   
		   String fileName = fileDialog.getFile();
		   String directory = fileDialog.getDirectory();
		   
		   //취소
		   if(fileName == null || directory == null) {
			   return;
		   }
		   myfile = new File(directory, fileName);
		   //dataSave(); //파일 저장 메서드
		   saveDate();
	   }
   }
   
   //데이터를 불러오기 = 객체형태로 불러옴. 객체 직렬화 이용. 
   public void loadDate() {
	   FileInputStream fis = null;
	   ObjectInputStream ois = null;
	  
	   listli.removeAll();
	   data.clear();
	   
	   try {
			fis = new FileInputStream(myfile);
			ois = new ObjectInputStream(fis);
			Customer myCustomer = null;
			while((myCustomer = (Customer) ois.readObject()) != null) {
				listli.add(myCustomer.toString());
				data.add(myCustomer);
			}
		} catch (EOFException eofe) {
			infota.setText("\n\t 성공적으로 데이터를 로딩하였습니다.");
		} catch (FileNotFoundException fnfe) {
			System.err.println(myfile.getName() +" 파일이 존재하지 않습니다.");
		} catch (IOException ioe) {
			ioe.printStackTrace();
		} catch (ClassNotFoundException cfe) {
			System.err.println("Customer 클래스를 찾을 수 없습니다.");
		} finally {
			 try {
				 if(fis != null) fis.close();
			 } catch(IOException ioe) {}
			 try {
				 if(ois != null) ois.close();
			 } catch(IOException ioe) {}
		}
	   try {
		   Thread.sleep(500);
	   } catch(InterruptedException ir) {}
	   
	   setForm(true);
	   setButton(true);
	   clrscr();	
   }
   
   //데이터를 저장하기 = 객체형태로 저장함
   public void saveDate() {
	   FileOutputStream fos = null;
	   ObjectOutputStream oos = null;
	   
	   try {
		    fos = new FileOutputStream(myfile);
			oos = new ObjectOutputStream(fos);
			
			for(int i = 0 ; i< data.size(); i++) {
				Customer myCustomer = data.get(i);
				oos.writeObject(myCustomer);
			}
			infota.setText("\n\t성공적으로 저장되었습니다.");
		} catch (FileNotFoundException fnfe) {
			System.err.println(myfile.getName() +" 파일이 존재하지 않습니다.");
		} catch (IOException ioe) {
			ioe.printStackTrace();
		} finally {
			 try {
				 if(fos != null) fos.close();
			 } catch(IOException ioe) {}
			 try {
				 if(oos != null) oos.close();
			 } catch(IOException ioe) {}
		}
	   try {
		   Thread.sleep(500);
	   } catch(InterruptedException ir) {}
	   
	   setForm(true);
	   setButton(true);
	   clrscr();
   }
   
   //직렬화 없이 데이터 로딩
   public void dataLoad() {
	   FileReader fr = null;
	   BufferedReader br = null;
	   
	   listli.removeAll();
	   data.clear();
	   try{
		   fr = new FileReader(myfile);
		   br = new BufferedReader(fr);
		   
		   String readData = ""; //초기화.
		   while((readData = br.readLine()) != null) {
			   String [] mydata = readData.split("/"); 
			   boolean gender = false;
			   if(mydata[3].equals("남성")) gender = true;
			   Customer myCustomer = new Customer(mydata[0], mydata[1], mydata[2], gender, mydata[4]);
			   listli.add(myCustomer.toString());
			   data.add(myCustomer);
		   }
		   infota.setText("\n\t 성공적으로 데이터를 로딩하였습니다.");
	   } catch(FileNotFoundException fnfe) {
		   System.err.println(myfile.getName() + " 파일을 찾을 수 없습니다.");
	   } catch(IOException ioe) {
		   ioe.printStackTrace();
	   } finally {
		   try {
			   if(br != null) br.close();
		   } catch(IOException ioe) {}
		   try {
			   if(fr != null) fr.close();
		   } catch(IOException ioe) {}
	   }
	   
	   try {
		   Thread.sleep(500);
	   } catch(InterruptedException ir) {}
	   
	   setForm(true);
	   setButton(true);
	   clrscr();
   }
   
   //직렬화 없이 데이터 저장
   public void dataSave() {
	   FileWriter fw = null;
	   BufferedWriter bw = null;
	   PrintWriter pw= null;
	   
	   try {
		   fw = new FileWriter(myfile);
		   bw = new BufferedWriter(fw);
		   pw = new PrintWriter(bw, true);
		   
		   for(int i = 0 ; i< data.size(); i++) {
			   Customer myCustomer = data.get(i);
			   StringBuffer sb = new StringBuffer(myCustomer.getName());
			   sb.append("/");
			   sb.append(myCustomer.getJumin());
			   sb.append("/");
			   sb.append(myCustomer.getTel());
			   sb.append("/");
			   sb.append(myCustomer.isGender() ? "남성" : "여성");
			   sb.append("/");
			   sb.append(myCustomer.getHobby());
			   pw.println(sb.toString());
		   }
		   infota.setText("\n\t성공적으로 저장되었습니다.");
	   } catch (FileNotFoundException e) {
		   System.err.println(myfile.getName() + " 파일을 찾을 수 없습니다.");
	   } catch(IOException ioe) {
		   ioe.printStackTrace();
	   } finally {
		   if(pw != null) pw.close();
		   try {
			   if(bw !=null) bw.close();
		   } catch(IOException ioe) {}
		   try {
			   if(fw !=null) fw.close();
		   } catch(IOException ioe) {}
	   }
	   setButton(true);
	   setForm(true);
	   clrscr();
   }

   //키 이벤트 
   @Override
   public void keyTyped(KeyEvent e) {
	   
   }
   @Override
   public void keyPressed(KeyEvent e) {
	   
   }
   
   @Override
   public void keyReleased(KeyEvent e) {
	   if(e.getSource() == jumin1tf) {
		   if(jumin1tf.getText().trim().length() == 6) {
			   jumin2tf.requestFocus();
			   return;
		   }
	   }
	   if(e.getSource() == jumin2tf) {
		   if(jumin2tf.getText().trim().length() == 7) {
			   telch.requestFocus();
			   return;
		   }
	   }
   }
   
   //아이템 이벤트 
   @Override
   public void itemStateChanged(ItemEvent e) {
	   if(e.getSource() == telch) {
		   tel1tf.requestFocus();
		   return;
	   }
	   //목록에서선택
	   if(e.getSource() == listli) {
		   int index  = listli.getSelectedIndex();
		   
		   Customer myCustomer = data.get(index);
		   nametf.setText(myCustomer.getName());
		   jumin1tf.setText(myCustomer.getJumin().split("-")[0]);
		   jumin2tf.setText(myCustomer.getJumin().split("-")[1]);
		   telch.select(myCustomer.getTel().split("-")[0]);
		   tel1tf.setText(myCustomer.getTel().split("-")[1]);
		   tel2tf.setText(myCustomer.getTel().split("-")[2]);
		   man.setState(myCustomer.isGender());
		   woman.setState(!myCustomer.isGender());
		   
		   for(int i = 0 ;i<hobby.length;i++) {
			   hobby[i].setState(false);
		   }
			   String[] myHobby = myCustomer.getHobby().split("-");
			   for(int i = 0 ; i<myHobby.length;i++) {
				   for(int j = 0 ; j<hobby.length; j++) {
					   if(myHobby[i].equals(hobby[j].getLabel())) {
						   hobby[j].setState(true);
						   break;
					   }
			   }
		   }
		   setButton(false);
		   setForm(false);
		   telch.requestFocus();
	   }
   }
   

  //다이알로그 구성
   private void setDialog(){
      dialog.setLayout(new BorderLayout(3,3));
      dlabel.setFont(new Font("Serif",Font.BOLD,18));
      dialog.add("Center" , dlabel);
      Panel p1 = new Panel(new FlowLayout(FlowLayout.CENTER));
      	p1.add(dbt);
      dialog.add("South",p1);
      dialog.setSize(250,180);
   }
  //메뉴구성
   
   private void setMenu() {
      setMenuBar(mb);
      
      mb.add(mfile);
      mfile.add(mfnew);
      mfile.addSeparator();
      mfile.add(mfopen);
      mfile.add(mfsave);
      mfile.add(mfsaveas);
      mfile.addSeparator();
      mfile.add(mfexit);
      
      mb.add(mhelp);
      mhelp.add(mhver);
   }
  //화면구성
   
   private void buildGUI() {
      setBackground(Color.CYAN);
      add("North", new Label());
      add("South", new Label());
      add("West", new Label());
      add("East", new Label());
      
      Panel mainPanel = new Panel(new BorderLayout(5,5));
         Panel centerPanel = new Panel(new BorderLayout(5,5));
            centerPanel.add("North", new Label("고 객 정 보 등 록", Label.CENTER));
            
            Panel cwPanel = new Panel(new GridLayout(5,1,5,5));
               cwPanel.add(new Label("이      름 : ", Label.RIGHT));
               cwPanel.add(new Label("주민번호 : ", Label.RIGHT));
               cwPanel.add(new Label("전화번호 : ", Label.RIGHT));
               cwPanel.add(new Label("성      별 : ", Label.RIGHT));
               cwPanel.add(new Label("취      미 : ", Label.RIGHT));
            centerPanel.add("West", cwPanel);
            
            centerPanel.add("East", new Label()); 
            
            Panel csPanel = new Panel(new FlowLayout(FlowLayout.CENTER));
               csPanel.add(addbt);
               csPanel.add(dispbt);
               csPanel.add(updatebt);
               csPanel.add(delbt);
               csPanel.add(initbt);
            centerPanel.add("South", csPanel);
            
            Panel ccPanel = new Panel(new GridLayout(5,1,5,5));
               Panel p1 = new Panel(new FlowLayout(FlowLayout.LEFT));
                  p1.add(nametf);
               ccPanel.add(p1);
               
               Panel p2 = new Panel(new FlowLayout(FlowLayout.LEFT));
                  p2.add(jumin1tf);
                  p2.add(new Label("-", Label.CENTER));
                  p2.add(jumin2tf);
               ccPanel.add(p2);
               
               Panel p3 = new Panel(new FlowLayout(FlowLayout.LEFT));
                  for(int i=0; i<tstr.length; i++)
                     telch.add(tstr[i]);
                  p3.add(telch);
                  p3.add(new Label("-", Label.CENTER));
                  p3.add(tel1tf);
                  p3.add(new Label("-", Label.CENTER));
                  p3.add(tel2tf);
               ccPanel.add(p3);
               
               Panel p4 = new Panel(new FlowLayout(FlowLayout.LEFT));
                  p4.add(man);
                  p4.add(woman);
               ccPanel.add(p4);
               
               Panel p5 = new Panel(new FlowLayout(FlowLayout.LEFT));
                  for(int i=0; i<hstr.length; i++) {
                     hobby[i] = new Checkbox(hstr[i]);
                     System.out.println(hobby[i].getLabel());
                     p5.add(hobby[i]);
                  }	
               ccPanel.add(p5);
            centerPanel.add("Center", ccPanel);
         mainPanel.add("Center", centerPanel);
         
         Panel eastPanel = new Panel(new BorderLayout(5,5));
            eastPanel.add("North", new Label("전 체 목 록", Label.CENTER));
            eastPanel.add("Center", listli);
         mainPanel.add("East", eastPanel);
         
         Panel southPanel = new Panel(new BorderLayout(5,5));
            southPanel.add("North", new Label("고 객 정 보 분 석 결 과 및 정 보", Label.CENTER));
            southPanel.add("Center", infota);
         mainPanel.add("South", southPanel);
      add("Center", mainPanel);
      
      Dimension scr = Toolkit.getDefaultToolkit().getScreenSize();
      Dimension my = getSize();
      setLocation(scr.width/2 - my.width/2, scr.height/2 - my.height/2);
      pack();
      
      setButton(true);
      nametf.requestFocus();
      
      setResizable(false);
      setVisible(true);
      
   }

   public static void main(String[] args) {
      new CustomerManager();
   }

}

실행화면


 고객관리프로그램.exe 를 실행한뒤, 메뉴에서 "File -> 불러오기 -> saveFile.sav" 을 눌러 불러오면 목록이 추가되는 모습을 확인 할 수 있습니다.  파일을 만들어서 저장하고 싶으면, 등록해서 목록을 만들고 "File-> 새이름으로 저장하기 " 하여 저장하면 됩니다. 다시 불러오고 싶다면 saveFile.sav파일을 불러온 것처럼 하면됩니다. 

 

고객관리프로그램.zip
0.03MB

 

728x90