실습문제)
연락처 프로그램을 활용한 XX관리프로그램 제작
주제
1. 가계부
2. 제품관리 프로그램
3. 예약 프로그램
4. 그 밖의 자유 주제
⬜⬜⬜⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜
⬜⬜⬛🟥⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜
⬜⬛🟥🟥⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜
⬜⬛🟥🟥⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬛⬛⬜⬜⬜⬜
⬛🟥🟨🟨🟥⬛⬜⬜⬜⬜⬜⬜⬜⬛🟧🟧🟧🟧⬛⬜⬜⬜
⬛🟥🟨🟨🟥⬛⬜⬜⬜⬜⬜⬜⬛🟧🟧🟧🟧🟧🟧⬛⬜⬜
⬛🟥🟨🟨🟥⬛⬜⬜⬜⬜⬜⬜⬛🟧🟧🟧🟧🟧🟧⬛⬜⬜
⬜⬛🟥🟥⬛⬜⬜⬜⬜⬜⬜⬛🟧🟧🟧🟧🟧🟧🟧🟧⬛⬜
⬜⬜⬛🟧⬛⬜⬜⬜⬜⬜⬜⬛🟧🟧🟧🟧⬛⬜🟧🟧🟧⬛
⬜⬜⬛🟧🟧⬛⬜⬜⬜⬜⬛🟧🟧🟧🟧🟧⬛⬛🟧🟧🟧⬛
⬜⬜⬛🟧🟧⬛⬜⬜⬜⬜⬛🟧🟧🟧🟧🟧⬛⬛🟧🟧🟧⬛
⬜⬜⬜⬛🟧🟧⬛⬜⬜⬛🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧⬛⬜
⬜⬜⬜⬛🟧🟧🟧⬛⬛🟧🟧🟧🟧🟧🟧🟧🟧🟧⬛⬛⬜⬜
⬜⬜⬜⬜⬛🟧🟧⬛⬛🟧🟧🟧⬛🟧🟧⬛⬛⬛⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬛🟧⬛🟧🟧🟧🟧🟧⬛🟧🟨⬛⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜⬛⬛🟧🟧🟧⬛⬛🟨🟨🟨⬛⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜⬜⬛🟧🟧🟧🟧🟨🟨🟨⬛⬜⬛⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜⬜⬛⬛🟧🟧🟧🟧🟧⬛⬛⬛⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛🟧⬛⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜⬜⬜⬛⬜🟧⬜⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜
⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜
MainClass - 실행
package만들기
View - AccView, InOutClass, 화면 입출력
Service - AccService
Dto - AccInfoDto
Dao - AccDao
Controller - AccController
package controller;
import dto.AccInfoDto;
import service.AccService;
import view.AccView;
import java.util.ArrayList;
import java.util.List;
// 프로그램 전체 제어용 메소드
public class AccController {//public 제일 광범위한
// 화면 처리용 부품 객체 사용
private AccView av = new AccView();//private 접근제어자
//서비스 객체 사용
private AccService aSev = new AccService();
//상수 정의
private final int MAIN_MENU = 1;
private final int SEARCH_MENU = 2;
private final int UPDATAE_MENU = 3;
//프로그램 전체 제어용 메소드
public void run() {//void 참조변수를 바로 사용할 수 있게해줌.
int a = -1;//초기값 -1 초기값으로 사용안할 값. 임의 -1아니여도 됩니다.
//타이틀 출력
av.viewTitle("게임 액세서리 정보");
while (true){
//메뉴 출력과 메뉴 번호 입력
a = av.showMenu(MAIN_MENU);
//종료 처리
if(a == 0){
//종료 메시지 출력
av.aMsg("프로그램 종료");
break;
}
//나머지 메뉴 처리
switch (a) {
case 1:
inputAccInfo();
break;
case 2:
outputList();
break;
case 3:
searchMain();
break;
case 4:
updateMain();
break;
case 5:
deleteAccInfo();
break;
default:
av.aMsg("0~5번까지만 입력하세요.");
}
}
}
private void deleteAccInfo() {
av.viewTitle("아이템 삭제");
//데이터 유무 확인
if(aSev.getList().size() == 0){
av.aMsg("삭제할 데이터가 없습니다.");
return;
}
String skey = av.searchInput("아이템명 : ");
List<AccInfoDto> rList = aSev.getNames(skey);
av.outputLists(rList);
if(rList.size() == 0){
av.aMsg("아이템 삭제 종료.");
return;//
}
int aNum = av.updateNumber("삭제 번호 : ");
String msg = null;
if(av.isOk("삭제할까요?")){
msg = aSev.deleteAInfo(aNum);
}
else{
msg = "삭제작업을 취소합니다.";
}
av.aMsg(msg);
}
private void updateMain() {
int um = -1;
av.viewTitle("아이템 정보 수정");
//데이터 유무 확인
if(aSev.getList().size() == 0){
av.aMsg("수정할 데이터가 없습니다.");
return;
}
while (true){
um = av.showMenu(UPDATAE_MENU);
if(um == 0){
av.aMsg("상위 메뉴로 돌아갑니다.");
return;
}
switch (um){
case 1:
updateName();
break;
case 2:
updatePrice();
break;
case 3:
updateRate();
break;
default:
av.aMsg("0~2번까지만 입력하세요.");
}
}//while end
}//method end
private void updateRate() {
av.viewTitle("평점 수정");
float rrate = Float.parseFloat(av.searchInput("평점 : "));
List<AccInfoDto> rList = aSev.getRate(rrate);
av.outputLists(rList);
if(rList.size() == 0){
av.aMsg("평점 수정 종료");
return;//검색결과가 없을 때는 수정작업 종료.
}
int aNum = av.updateNumber("수정 번호 : ");
AccInfoDto aInfo = aSev.getAInfo(aNum);
if(aInfo != null){
av.outputaccNum(aInfo);
}
else {
av.aMsg("수정할 데이터가 없습니다.");
return;//수정 기능 종료.
}
// 수정할 데이터 입력
av.updateInput(aInfo);
//수정 처리 완료
}
private void updatePrice() {
av.viewTitle("가격 수정");
int aprice = Integer.parseInt(av.searchInput("가격 : "));
List<AccInfoDto> pList = aSev.getPrice(aprice);
av.outputLists(pList);
if(pList.size() == 0){
av.aMsg("가격 수정 종료");
return;//검색결과가 없을 때는 수정작업 종료.
}
int aNum = av.updateNumber("수정 번호 : ");
AccInfoDto aInfo = aSev.getAInfo(aNum);
if(aInfo != null){
av.outputaccNum(aInfo);
}
else {
av.aMsg("수정할 데이터가 없습니다.");
return;//수정 기능 종료.
}
// 수정할 데이터 입력
av.updateInput(aInfo);
//수정 처리 완료
}
private void updateName() {
av.viewTitle("아이템명 수정");
String akey = av.searchInput("아이템명 : ");
List<AccInfoDto> aList = aSev.getNames(akey);
av.outputLists(aList);
if(aList.size() == 0){
av.aMsg("아이템명 수정 종료");
return;//검색결과가 없을 때는 수정작업 종료.
}
int aNum = av.updateNumber("수정 번호 : ");
AccInfoDto aInfo = aSev.getAInfo(aNum);
if(aInfo != null){
av.outputaccNum(aInfo);
}
else {
av.aMsg("수정할 데이터가 없습니다.");
return;//수정 기능 종료.
}
// 수정할 데이터 입력
av.updateInput(aInfo);
//수정 처리 완료
}
private void searchMain() {//run메소드와 유사함.
int sm = -1;
av.viewTitle("아이템 검색");
if(aSev.getList().size() == 0){
av.aMsg("데이터가 없습니다.");
return;
}
while (true){
sm = av.showMenu(SEARCH_MENU);
//서브 메뉴 종료 처리
if(sm == 0){
av.aMsg("상위 메뉴로 돌아갑니다.");
break;//또는 return;
}
switch (sm){
case 1://이름 검색
nameSearch();
break;
case 2://가격 검색
priceSearch();
break;
case 3://평점 검색
rateSearch();
break;
default:
av.aMsg("0~3번까지만 입력하세요.");
}
}
}
private void rateSearch() {
//타이틀 출력
av.viewTitle("평점 검색");
float rrate = Float.parseFloat(av.searchInput("평점 : "));
ArrayList<AccInfoDto> rList = aSev.getRate(rrate);
av.outputLists(rList);
}
private void priceSearch() {
av.viewTitle("가격 검색");
int aprice = Integer.parseInt(av.searchInput("가격 : "));
ArrayList<AccInfoDto> pList = aSev.getPrice(aprice);
av.outputLists(pList);
}
private void nameSearch() {
av.viewTitle("아이템 검색");
String aKeyword = av.searchInput("아이템명 : ");
ArrayList<AccInfoDto> aList = aSev.getNames(aKeyword);
av.outputLists(aList);
}
private void outputList() {
av.viewTitle("아이템 출력");
av.outputLists(aSev.getList());
}
private void inputAccInfo() {
//서브 타이틀 출력
av.viewTitle("아이템 입력");
AccInfoDto aInfo = new AccInfoDto();
av.inputAccInfo(aInfo);
//아이템 정보 저장 -> service
String msg = aSev.addAccInfo(aInfo);
//메시지 출력 -> view
av.aMsg(msg);
}
}
package view;
import dto.AccInfoDto;
import java.util.List;
public class AccView {
private InOutClass ioc = new InOutClass();
//타이틀 출력 메소드
public void viewTitle(String title){
ioc.tlPrint(
"⬜⬜⬜⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜\n" +
"⬜⬜⬛⬜⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜\n" +
"⬜⬛⬜⬜⬜⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜\n" +
"⬜⬛⬜⬜⬜⬜⬛⬜⬜⬜⬜⬜⬜⬜⬛⬛⬛⬛⬜⬜⬜⬜\n" +
"⬛⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬛⬜⬜⬜\n" +
"⬛⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬛⬜⬜⬜⬜⬜⬜⬛⬜⬜\n" +
"⬛⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬛⬜⬜⬜⬜⬜⬜⬛⬜⬜\n" +
"⬜⬛⬜⬜⬜⬜⬛⬜⬜⬜⬜⬛⬜⬜⬜⬜⬜⬜⬜⬜⬛⬜\n" +
"⬜⬜⬛⬜⬜⬛⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬛⬜⬜⬜⬜⬛\n" +
"⬜⬜⬛⬜⬛⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬛\n" +
"⬜⬜⬛⬜⬜⬛⬜⬜⬜⬜⬛⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬛\n" +
"⬜⬜⬜⬛⬜⬜⬛⬜⬜⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬜\n" +
"⬜⬜⬜⬛⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬜\n" +
"⬜⬜⬜⬜⬛⬜⬜⬜⬛⬛⬜⬜⬜⬛⬜⬜⬛⬛⬛⬜⬜⬜\n" +
"⬜⬜⬜⬜⬜⬛⬜⬜⬛⬜⬜⬜⬜⬜⬛⬜⬜⬛⬜⬜⬜⬜\n" +
"⬜⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬛⬛⬜⬜⬜⬛⬜⬜⬜⬜⬜\n" +
"⬜⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬜⬜⬜⬛⬜⬛⬜⬜⬜⬜\n" +
"⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬜\n" +
"⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬛⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜\n" +
"⬜⬜⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜\n" +
"⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜");
ioc.tlPrint("♣" + title + "♣");
ioc.tlPrint("-----------------");
}
//메뉴 출력 메소드
public int showMenu(int aNum){//변수는 앞에 대문자 안함
int menu = -1;
ioc.tlPrint("");//메뉴 출력전 한 줄 추가.
ioc.tlPrint("메뉴>");
switch(aNum){//switch는 선택
case 1: //주 메뉴 출력
ioc.tlPrint("1. 아이템 입력");
ioc.tlPrint("2. 아이템 출력");
ioc.tlPrint("3. 아이템 검색");
ioc.tlPrint("4. 아이템 정보 수정");
ioc.tlPrint("5. 아이템 정보 삭제");
ioc.tlPrint("0. 종료");
break;//break를 걸어주지 않으면 무한으로 반복됨.
case 2: //보조 메뉴 출력(검색)
ioc.tlPrint("1. 아이템명 검색");
ioc.tlPrint("2. 가격 검색");
ioc.tlPrint("3. 평점 검색");
ioc.tlPrint("0. 돌아가기");
break;
case 3: //보조 메뉴 출력(수정)
ioc.tlPrint("1. 아이템명 수정");
ioc.tlPrint("2. 가격 수정");
ioc.tlPrint("3. 평점 수정");
ioc.tlPrint("0. 돌아가기");
break;
}//switch end
menu = ioc.inNum("선택>");
return menu;//입력받은 메뉴 번호 전달.
}
//메시지 출력용 메소드
public void aMsg(String str) { ioc.tlPrint(str); }
//입력화면 처리 메소드
public void inputAccInfo(AccInfoDto aInfo){//입력받아야 하니 input 사용
aInfo.setAccName(ioc.inStr("아이템명 :"));
aInfo.setAccPrice(ioc.inNum("가격 :"));
aInfo.setAccRate(ioc.inFloat("평점 :"));
aInfo.setAccDate(ioc.inStr("등록일 :"));
}//inputAccInfo end
public void outputLists(List<AccInfoDto> alist) {
if(alist.size() == 0){
ioc.tlPrint("출력할 데이터가 없습니다.");
return;
}
for(AccInfoDto aInfo : alist){
ioc.tlPrint(aInfo.toString());
ioc.tlPrint("♣♣♣♣♣♣♣♣♣♣♣");
}
}
public String searchInput(String name) {
String s = ioc.inStr(name);
ioc.tlPrint("♣♣♣♣♣♣♣♣♣♣♣");
return s;
}
public int updateNumber(String comment) {
int num = ioc.inNum(comment);
ioc.tlPrint("------------------");
return num;
}
public void outputaccNum(AccInfoDto aInfo) {
ioc.tlPrint(aInfo.toString());
}
public void updateInput(AccInfoDto aInfo) {
viewTitle("수정 데이터 입력");
String str = ioc.inStr("아이템명 : ");
if(str != ""){//새로운 값 입력하면 새 값으로 변경
aInfo.setAccName(str);
}
int aprice = Integer.parseInt(ioc.inStr("가격"));
if(aprice == 0){
aInfo.setAccPrice(aprice);
}
float arate = ioc.inFloat("평점 : ");
}
//사용자에게 진행여부를 물어보는 메소드
public boolean isOk(String str) {
String yn = ioc.inStr(str + "(y/n) ");
return (yn.equals("y")?true:false);
}
}//class end
'공부기록 > 실습' 카테고리의 다른 글
4월 26일 Java - 일기장 만들기 (0) | 2023.04.26 |
---|---|
4월 20일 Java - 사진 이미지 열기 (0) | 2023.04.20 |
연습문제 DB - 마트 운영 SQL 작성해보기 (0) | 2023.04.06 |
3월 31일 영화 예매 테이블 명세서 (0) | 2023.03.31 |
3월 23일 (2) AJAX 정보 받아서 표로 만들기 (0) | 2023.03.23 |