본문 바로가기
자바 스윙 (Java Swing)

Java Swing (4) 한국 축구 구단 관리 프로그램 (자바 스윙 프로젝트)

by s_hoonee 2023. 1. 1.
반응형

2022 한국 축구 구단 관리 프로그램

 

(3) 포메이션

포메이션 A
포메이션 B


1. 선발 선수들의 번호를 가져와 필드의 라벨에 텍스트를 입히고 라벨의 좌표를 변경하여 포메이션을 지정할 수 있습니다.
2. 포메이션은 A,B 타입을 각 각 설정이 가능합니다.

//기본 좌표값
	private void formationA() {
		lbl2.setLocation(669, 425);
		lbl3.setLocation(741, 325);
		lbl4.setLocation(741, 205);
		lbl5.setLocation(669, 103);
		lbl6.setLocation(367, 417);
		lbl7.setLocation(462, 191);
		lbl8.setLocation(462, 334);
		lbl9.setLocation(367, 90);
		lbl10.setLocation(111, 330);
		lbl11.setLocation(111, 195);
	}
	
	private void formationB() {
		lbl2.setLocation(669, 425);
		lbl3.setLocation(741, 325);
		lbl4.setLocation(741, 205);
		lbl5.setLocation(669, 103);
		lbl6.setLocation(437, 265);
		lbl7.setLocation(406, 370);
		lbl8.setLocation(406, 155);
		lbl9.setLocation(330, 465);
		lbl10.setLocation(330, 70);
		lbl11.setLocation(139, 270);
	}

@Override
	public void mouseDragged(MouseEvent e) {
		Object obj = e.getSource();
		int x = e.getX();
		int y = e.getY();
		
		if ( obj == lbl2 ) {
			lbl2.setLocation(lbl2.getX()+x-50, lbl2.getY()+y-30);
		} else if ( obj == lbl3 ) {
			lbl3.setLocation(lbl3.getX()+x-50, lbl3.getY()+y-30);
		} else if ( obj == lbl4 ) {
			lbl4.setLocation(lbl4.getX()+x-50, lbl4.getY()+y-30);
		} else if ( obj == lbl5 ) {
			lbl5.setLocation(lbl5.getX()+x-50, lbl5.getY()+y-30);
		} else if ( obj == lbl6 ) {
			lbl6.setLocation(lbl6.getX()+x-50, lbl6.getY()+y-30);
		} else if ( obj == lbl7 ) {
			lbl7.setLocation(lbl7.getX()+x-50, lbl7.getY()+y-30);
		} else if ( obj == lbl8 ) {
			lbl8.setLocation(lbl8.getX()+x-50, lbl8.getY()+y-30);
		} else if ( obj == lbl9 ) {
			lbl9.setLocation(lbl9.getX()+x-50, lbl9.getY()+y-30);
		} else if ( obj == lbl10 ) {
			lbl10.setLocation(lbl10.getX()+x-50, lbl10.getY()+y-30);
		} else if ( obj == lbl11 ) {
			lbl11.setLocation(lbl11.getX()+x-50, lbl11.getY()+y-30);
		} 
		
	}

 


 

(4) 부상자 관리

DB에 부상자 테이블이 삭제되어서 Jtable에 필드값이 로딩이 안되지만 create문 복붙을 지워버렸고 다시 쓰기 귀찮으니 pass

Jtable에 데이터가 없는 상태
부상추가 옵션 화면

 

1. 우측 '선수 리스트' 에서 ROW를 클릭 or 검색 하여 선택 후 '부상 추가' 버튼을 눌러 옵션을 선택 한 후 부상자 명단에 선수를 추가할 수 있습니다.
2. 부상자를 다시 기존 테이블로 옮길 수 있고 옵션에 기간 등을 추가하여 시간이 경과하면 자동으로 부상자 테이블에서 삭제되는 기능도 추가 할 예정입니다.

	@Override
	public void actionPerformed(ActionEvent e) {
		
		Object obj = e.getSource();

		String pn = null;
		String name = null;
		String age = null;
		String height = null;
		String weight = null;
		String position = null;

		// 부상자 추가--------------------------------------
		if (obj == addInjuryBtn) 
		{
			int select = playerTable.getSelectedRow();	// 선택된 행의 값을 int 값으로 select에 저장

			if (JOptionPane.showConfirmDialog(this, "선수를 부상명단에 추가하시겠습니까?", "추가", JOptionPane.YES_NO_OPTION,
					JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION) {
				new InjurySelect(select);
			}

		}

		// 부상자 삭제--------------------------------------
		if (obj == addDeleteBtn)
		{
			int select = injuryPlayerTable.getSelectedRow();	// 선택된 행의 값을 int 값으로 select에 저장

			sql = "select * from INJURYPLAYER";
			ResultSet rs = DB.getResult(sql);

			for (int i = 0; i < select + 1; i++) {
				try {
					rs.next();
					pn = rs.getString("PN");
					name = rs.getString("NAME");
					age = rs.getString("AGE");
					height = rs.getString("HEIGHT");
					weight = rs.getString("WEIGHT");
					position = rs.getString("POSITION");

				} catch (SQLException e1) {
					e1.printStackTrace();
				}
			}

			if (JOptionPane.showConfirmDialog(this, "부상 선수를 명단에서 삭제하시겠습니까?", "삭제", JOptionPane.YES_NO_OPTION,
					JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION) 
			{
				// 부상 선수 명단에 값을 추가하고, 추가된 값과 동일한 값을 선수 리스트에서 삭제 
				
				// 부상 선수명단에서 삭제--------------------------------------
				sql = "DELETE FROM CBAN.INJURYPLAYER\r\n" + "WHERE PN=" + pn + "";
				DB.executeSQL(sql);

				// 선수 리스트에 값 추가--------------------------------------
				sql = "INSERT INTO CBAN.PLAYER\r\n" + "(PN, NAME, AGE, HEIGHT, WEIGHT, \"POSITION\")\r\n" + "VALUES("
						+ pn + ", '" + name + "', " + age + ", " + height + ", " + weight + ", '" + position + "')";
				DB.executeSQL(sql);

				new InjuryPlayerFrame("구단 관리 프로그램");
				dispose();
			}
//

		String InjArea = null;
		String InjSymptom = null;

		if (obj == button) 
		{
			sql = "select * from PLAYER";
			ResultSet rs = DB.getResult(sql);

			for (int i = 0; i < selectnum + 1; i++) {
				try {
					rs.next();
					InjPn = rs.getString("PN");
					InjName = rs.getString("NAME");
					InjAge = rs.getString("AGE");
					InjHeight = rs.getString("HEIGHT");
					InjWeight = rs.getString("WEIGHT");
					InjPosition = rs.getString("POSITION");
				} catch (SQLException e1) {
					e1.printStackTrace();
				}
			}
 			// 콤보박스에서 선택된 값을 InjArea에 저장 -------------------------------------
			InjArea = areaCombobox.getSelectedItem().toString();	
            // 콤보박스에서 선택된 값을 InjSymptom에 저장 -------------------------------------
			InjSymptom = syptomCombobox.getSelectedItem().toString();	

			// 부상 선수 명단에 값을 추가하고, 추가된 값과 동일한 값을 선수 리스트에서 삭제 
			
			// 부상 선수 명단에 값 추가 -------------------------------------
			sql = "INSERT INTO CBAN.INJURYPLAYER\r\n"
					+ "(PN, NAME, AGE, HEIGHT, WEIGHT,INJURYAREA,INJURYSYMPTOM, \"POSITION\")\r\n" + "VALUES(" + InjPn
					+ ", '" + InjName + "', '" + InjAge + "', '" + InjHeight + "', '" + InjWeight + "', '" + InjArea
					+ "', '" + InjSymptom + "', '" + InjPosition + "')";
			DB.executeSQL(sql);

			// 선수 리스트에서 삭제 -------------------------------------
			sql = "DELETE FROM CBAN.PLAYER\r\n" + "WHERE PN=" + InjPn + "";
			DB.executeSQL(sql);

			// DB 수정된 부분 반영하기 위해 클래스 재 호출(창 다시 켜기) -------------------------------------
			
			new InjuryPlayerFrame("구단 관리 프로그램"); 
		
		}

 

 

모든 기능을 포함하진 않고 몇개만 간략하게 뽑았습니다. 자세한 코드가 궁금하신 분은 댓글에 알려주세요!