제 1부 창업 이론과 실무
1. 창업의 육하원칙 및 기본절차
창업의 육하원칙
-육하원칙, 여러 요인들을 생각해야 하고 효과적으로 결합하고 융합시켜야 성공 창업 가능
누가 : 창업자가 어떤 사람? 즉, 창업자가 어떤 자질과 능력을 갖추고 있는가 하는 것이 매우 중요
언제 : 창업의 시기, 타이밍
어디서 : 온라인, 오프라인, 입지선정과 상권분석
무엇을 : 창업아이템(무형, 유형 창업아이템 즉, 상품과 서비스)
어떻게 : 기술개발, 자금조달, 홍보 및 마케팅, 시장개척, 인사관리 등의 여러 문제를 어떻게 관리하고 운영할 것인가 (창업자 자기 나름대로의 경영철학과 경영전략)
왜 : 창업의 목표를 분명히. 창업의 과정에서 일어나는 수많은 문제와 의사결정 -> 왜? 질문
창업의 7단계
1) 창업 예비 분석(창업자질 및 적성)
2) 사업 목적의 정의(창업의 기본적인 이유와 창업 방향, 목표 설정)
3) 사업 분야의 결정과 사업 아이디어의 모색(창업 아이템, 1가지 고집 X)
4) 사업성 분석(수익성, 시장성, 기술성, 공익성) -> 초보자의 경우 사업성 분석 힘듦, 벤치마킹(benchmarking)하는 것이 좋다.
5) 인적, 물적 자원의 조달과 구성(창업멤버 구성, 창업 자금 조달(자신의 자금 혹은 정부나 창업 기관의 지원 자금))
6) 사업(창업) 계획서의 작성과 조직구조의 설정(사업계획서 중요 사항 – 제품개발 및 조달계획, 판매계획, 생산 및 설 비계획, 일정계획 등의 세부 계획 수립)
7) 사업 개시(향후 고객들의 수요 변화에 따른 신규 수익모델의 추가 혹은 업종전환을 염두)
8) 창업트렌드의 관찰 및 대응
2. 창업자가 알아야하는 법률
-로앤비(www.lawnb.com) - 법률 정보 사이트
1. 상가건물 임대차 보호법의 이해
-사회적, 경제적 약자인 임차인을 보호하기 위해 시행
=보증금액이 서울시 4억원 이하, 수도권, 3억원 이하, 광역시 2억 4천만원 이하, 그 외 지역 1억 8천만원 이하의 경우에만 상가건물 임대차 보호법의 적용을 받는다.
(보증금액 = 100 X (월 임차료) + 점포의 보증금)
1) 임대차 존속기간 보장 : 최대 5년간의 계약갱신 요구권을 보장
2) 대항력 발생 : 건물소유주가 바뀌어도 새로운 소유주에 대해 임차권 주장 가능
3) 임대료 인상 상한선 설정 : 연 9%의 범위 내에서만 인상이 가능
4) 우선변제권 보장 : 일정보증금액(서울, 2억4천만원) 범위 해당 임차인은 경매, 공매시 후순위 채권자보다 먼저 우선 변제 받을 수 있음
5) 최우선변제권 보장 : 건물주가 부도가 나더라도 경매가액의 1/3 범위 안에서 보증금 중 일부를 찾을 수 있음
2. 가맹사업거래 공정화에 관한 법률(가맹사업법 – 계약 존속 최대 10년 보장)
공정거래위원회의 가맹사업거래 홈페이지(franchise.ftc.go.kr에는 국내 프렌차이즈 본사의 정보공개서가 등록)
-가맹본부가 가맹사업자에게 정보공개서를 제출할 의무가 있음
=정보공개서 : 회사 및 임직원에 관한 사항, 가맹사업자의 부담, 영업활동 조건 및 제한, 가맹 본부의 가맹사업 현 황, 가맹 영업개시와 상세 절차, 소요시간, 교육훈련 프로그램, 점포 예정지 근처의 사업자 10군데의 명칭과 소재지, 전화번호 등의 내용이 담겨야한다는 것을 규정
3. 전자상거래 등에서의 소비자보호에 관한 법률
-인터넷에서 서비스, 상품을 판매하는 창업자가 반드시 알아야 하는 법률
1) 사이버몰 운영자의 표시사항 : 소비자가 사업자의 신원 등에 관하여 쉽게 알 수 있도록 몇 가지의 사항을 표시
2) 통신판매업 신고 : 상호 등 몇 가지 사항을 공정거래위원회나 특별시장, 광역시장 또는 도지사에게 신고
3) 신원에 대한 정보의 제공 : 재화 등의 거래에 관한 청약을 받을 목적으로 표시, 광고를 행하는 경우 몇 가지 사항 이 포함 되도록
4) 계약내용 서면 교부 : 소비자가 계약체결 전에 재화 등에 대한 거래조건을 정확하게 이해하고 실수 또는 착오 없이
거래할 수 있도록 표시, 광고 또는 고지, 체결 후에도 계약 내용에 관한 서면을 재화 등을
공급할 때까지 교부
5) 청약철회의 조건 : 체결 후라도 재화 등을 공급받은 날부터 7일 이내 조건 없는 청약 철회가 가능 함. 또한, 표시,
광고 또는 계약 내용과 다른 재화 등이 공급 받은 경우는 3개월, 알 수 있었던 날부터 30일 이
내 철회 가능. 이 경우에는 시정 조치는 물론 영업정지까지 받을 수 있음.
6) 재화 등의 공급 등 : 대금의 전부 또는 일부를 지급 받은 날부터 3영업일 이내에 재화 등의 공급을 위해 필요한
조치를 하여야 하되 별도 약정 시 제외.
7) 미성년자 계약 시 고지 : 법정대리인이 동의하지 않으면 미성년자 본인 또는 법정대리인이 계약 취소 가능
-> 이 내용을 미성년자에게 고지해야 함
8) 통신판매 중개자의 책임 : 중개자의 책임이 없다는 것을 약정하지 아니하거나 미리 고지 아니한 경우 책임 부담
9) 금지행위 : 말 그대로 금지행위 규정
4. 허가, 등록, 신고 업종에 대한 이해
-해당 관청에 신청서를 제출해야 함(시, 군, 구청 민원실 혹은 세무서에서 확인)
1) 허가업종 2) 신고업종 3) 등록업종 4) 지정업종 5) 면허업종
6) 인가업종 7) 인증업종 8) 통보대상
5. 창업기업의 의무신고사항
-상시 근로자가 1인 이상인 경우
1) 건강보험 2) 산재보험 3) 고용보험 4) 국민연금 5) 취업 규칙 신고
6) 근로자명부와 임금대장 작성
3. 창업자가 납부해야 하는 세금 및 재무제표의 이해
1. 창업자가 납부해야 하는 세금의 종류
1) 개인사업자
-일반과세자(연간 4800만원 초과), 간이과세자(연간 4800만원 이하)
가. 소득세
매년 1월 1일부터 12월 31일까지의 연간 얻은 소득(1년에 1번)
-> 다음해 5월 1일~ 5월 31일까지 주소지 관할세무서에 신고
나. 부가가치세(Value added tax : VAT)
물건 값에 부가가치세가 포함, 물건을 팔 때 받은 세금에서 물건을 살 때 지불한 세금을 차감한 차액을 납부
-> 매년 1월과 7월에 부가가치세를 신고(1년에 2번)
1) 법인사업자
-주식회사와 같은 법인사업자
가. 법인세
법인이 얻은 소득에 과세, 법인이 얻은 모든 순자산의 증가액에 대하여 과세
사업 년도 종료일이 속하는 달의 말일부터 3개월 내에 신고(1월~12월이 사업 년도 -> 3월까지)
나. 부가가치세
개인사업자와 마찬가지 but 개인사업자는 1년에 두 번이지만 법인사업자는 1년에 4번(4,7,10,1) 신고, 납부
2. 대차대조표와 손익계산서의 이해
대차대조표, 손익계산서 등을 재무제표(financial statement)라고 함
-회계실체의 일정기간(회계기간) 동안의 경제적 사건들과 그 기간 말에 있어서의 경제적 상태를 나타내기 위한 일련 의 회계보고서
1) 대차대조표(balance sheet, or 재무상태표) : 특정시점의 재산상태와 부채상태를 일정기준에 따라 일목요연하게 나 열한 표(p41 표 봐야 됨)
가. 차변(Debitor : Dr) : 표의 왼편, 자산의 구성 내용
나. 대변(Creditor : Cr) : 표의 오른편, 총 자산의 조달원천 표시
2) 손익계산서
-일정기간 동안의 영업활동의 내용을 일정기준에 따라 일목요연하게 나열한 표
=주요내용으로는 매출액, 매출원가, 매출총이익, 판매비와 일반관리비, 영업이익, 영업외비용, 세전이익, 소득세, 당기 순이익 등이 있다.
3) 대차대조표와 손익계산서의 활용
-엑셀을 활용해 작성하고 관리, 창업 전에 생각한 사업성과와 창업 후의 변화를 확인하고 문제 발생을 수치적으로 확인 가능
수익모델(business model, BM)
성공하는 창업 = f(창업이론과 실무지식, 인맥형성, 벤치마킹, 홍보와 광고)
제 3부 실패하지 않는 무점포 또는 1인 창업전략
1. 창업자금지원 정부기관 및 민간기관을 활용
1. 사이트 목록(p 279) - 밑줄과 별표만 따옴
-전국 창업선도대학 및 일부 창업보육센터에서는 매년 최저 3,500 ~ 최고 7,000만원까지의 창업자금을 무상으로 지원
=창업자금 지원(예비창업자, 창업자, 장애인창업자 등)
6) 소상공인지원센터(www.sbdc.or.kr)
13) 전국 창업선도대학(sundo.kised.or.kr) -> 15) 창업진흥원에서 지원 받음
14) 전국의 창업보육센터(www.bi.go.kr)
15) 창업진흥원(www.kised.or.kr)
16) 창업넷(www.changupnet.go.kr)
2. 창업 사무실 및 지원시설을 이용
1. 창업보육센터
-대부분 전국의 주요대학에 위치, 자세한 정보는 창업보육네트워크시스템(www.bi.go.kr)에서 확인 가능.
-이용 시 장점
가. 사무실 저렴하게 사용(월 15,000 ~ 20,000 정도)
나. 대학 내의 시설 이용 가능, 교수 및 전문가들의 창업 컨설팅 받을 수 있음
다. 다양한 정부의 창업지원정책에 대한 정보를 신속하게 얻음
라. 창업보육센터로부터 소정의 자금지원, 기술개발 및 판로개척에 대한 지원 받을 수 있음
마. 기타 창업에 필요한 지원
바. 앞서 언급한 전국 23개 창업선도대학으로 지정된 창업보육센터에 입주하는 것이 좋음
2. 민간 비즈니스센터
-소규모 사무실을 임대해주는 전문기업들, 전화 혹은 팩스업무 대행
3. 창업카페에 가입하여 활동
-회원이 10,000명이 넘는 창업카페 101개 중의 카페에 가입하여 활동
-이용 시 장점
가. 다양한 분야의 창업자들과 교류하며 인맥 형성 가능(ex - 대구경북창업카페연합회)
나. 창업아이템을 선정할 때에 도움 받을 수 있음
다. 이미 성공한 창업자의 경험과 노하우를 전수 받을 수 있음
라. 다양한 창업관련 정보를 접함, 창업자들의 교류를 통해 좋은 창업아이템 및 아이디어 얻을 수 있음
마. 동맹카페를 맺어 홍보에 적극적인 도움을 받음
4. 벤치마킹을 통한 성공창업의 전략을 수립
1. 성공한 창업자에 대한 벤치마킹(benchmarking)
-어느 특정분야에서 우수한 상대를 표적 삼아 자기 기업과의 성과 차이를 비교하고 이를 극복하기 위해 그들의 뛰어 난 운영 프로세스 등을 배우면서 부단히 자기혁신을 추구하는 기법
-결과적으로 상대방 성과 비교에만 그치는 것 아닌 어떻게 도출되었는가 하는 방법론적인 노하우까지 비교대상, 원인 도 함께 분석하여 제시.
-벤치마킹의 순서
1) 적용분야의 선정
2) 상대의 결정 : 성공정인 창업자 선정
3) 정보수집 : 적용분야 어떻게 수행중인지에 대한 정보 체계적으로 수집
4) 성과 차이의 확인 및 분석 : 어떤 차이가 있는가에 대해 구체적으로 조사, 분석
5) 혁신계획 수립 : 성과 차이를 좁힐 수 있는 계획 수립, 점검
6) 실행 및 평가 : 실행하며 정기적으로 성과 평가
2. 벤치마킹할 때의 조사항목 및 주의사항
1) 상품을 어디에서, 어떤 조건으로 조달하고 있는가?
2) 홍보와 광고를 어떻게 진행하고 있는가?
3) 창업비용과 월 매출은 어느 정도이며, 적정수준인가?
4) 해당 창업아이템에 있어서 핵심 성공요소는 무엇인가?
5) 온라인과 오프라인에서의 판매는 어떻게 하고 있는가?
6) 경쟁기업과 비교해 볼 때에 주요 경쟁력과 차별성은 무엇인가?
7) 해당 아이템의 시장 및 주요 고객들은 어떤 특성을 갖고 있는가?
8) 해당 창업에 있어 사전에 준비해야 할 핵심 사항은 어떤 것들이 있는가?
9) 점포의 위치와 내부 인테리어, 진열방식에서 배울 점은 무엇인가?
10) 향후 어떤 계획을 갖고 있으며, 어떤 준비를 하고 있는가?
벤치마킹 시 주의사항(덜 중요)
1) 월매출, 마진율 등 상세히 묻지 않는 것
2) 사업상 비밀에 깊이 알려고 하지 않는 것
3) 무작정 방문X, 사전 약속과 정중한 부탁
4) 점포 판매상품 1~2개 구입하는 것이 기본 예의
5) 한 번에 모든 것을 해결하려고 하지 않는 것
6) 성공한 창업자와 상호 신뢰할 수 있는 인맥을 형성해 지속적으로 교류
5. 다양한 홍보와 광고를 진행하는 방법
1. 홍보를 위한 이메일 및 문자의 발송
-포스트맨(www.postman.co.kr) 같은 전문사이트 활용(사용법은 p291~292)
=대량 이메일 발송, 대량 SMS/MMS 발송, 대량 팩스발송, 주소록 관리, 발송결과 확인, 프리미엄 서비스 등의 기능
2. 카페(cafe)와 블로그(blog)를 운영하여 홍보
1) 카페를 개설할 수 있는 사이트(다음, 네이버 등)
2) 블로그를 개설할 수 있는 사이트(다음, 네이버, 구글, 이글루스, 고도 등)
3) 도메인 포워딩(domain forwarding) 기능을 활용
-비교적 긴 카페 주소와 블로그 주소를 짧은 일차 도메인(www로 시작되는 도메인)으로 연결하여 사용할 수 있는데, 도메인 구입업체에 요청하면 된다.
3. 소점포에서의 다양한 광고를 진행
1) 전단광고
2) 구매시점광고(Point Of Purchase, POP) : 고객이 상품을 구매하는 장소에서 수행하는 광고(예쁜글씨, 상징적물건)
3) 우편광고
4) 판촉물 광고(성냥, 열쇠고리, 달력, 포스트잇, 휴지 등)
5) 인명부 광고 : 전화번호부, 지역 내 상가 책자 등을 이용
6) 구전광고 : 특히 여성들을 고객으로 하는 창업의 경우 특별히 관심을 가져야 함
(손님이 오피니언 리더(opinion leader : 여론 주도자) 인 경우 특히 큰 도움이 된다.)
7) 데몬스트레이션(demonstration) : 상점을 방문한 고객들을 상대로 상품의 특성이나 사용법을 알림(효과 별로)
8) 디스플레이(display) : 고객의 주의를 끌고 구매의욕을 일으키도록 상품 진열
9) 특별행사
4. 언론을 활용한 홍보를 진행(아크로팬 – 무료)
-돈이 많이 들어가는 광고보다는 언론홍보를 활용하는 것이 좋다. 홍보 범위가 넓으면 효과가 오래 지속
=새로운 것이 있을 때 마다 등록하고 배포
=반드시 사진도 함께 등록, 웹사이트 주소 및 전화번호도 포함
=보도된 기사는 스크랩 후, 회사의 웹사이트, 카페, 블로그, 트위터, 페이스북 등에 등록하면 홍보효과 커진다.
1) 언론을 활용한 홍보를 적극적으로 진행(p297~298)
2) 뉴스와이어와 뉴시스의 이해와 활용법
가. 뉴스와이어 : 다음, 네이트, 구글에 보도자료가 등록(10회 단위로 보도자료를 전송할 수 있는 쿠폰을 판매)
나. 뉴시스 : 다음, 네이트 등의 포털에 등록(보도자료를 전송할 수 있는 포인트를 구매, 10포인트에 300,000원)
3) 언론에 보도된 기사의 활용
5. 창업사이트의 접속을 늘리기 위한 키워드 광고를 진행
1) CPC(cost-per-click) 방식 광고
-검색이 일어난 후에 노출되는 횟수와 상관없이 고객이 사이트를 클릭했을 때만 비용이 지불되는 방식
(오버추어, 구글의 스폰서링크, 네이버의 클릭초이스(파워링크, 비즈사이트) 등이 CPC방식의 대표적 사례)
2) CPM(cost-per-mile) 방식 광고 – mile 대신 month 라고도 함.
-일정기간 동안 진행되는 광고에 대해 고정금액을 정액제로 지정한 후에 노출과 클릭에 상관없이 그 금액만큼만 진행되는 광고 방식(특별한 관리 불필요, 다음-스페셜 링크가 있다.)
6. 동영상(UCC)을 활용한 홍보
-디지털카메라, 캠코더, 무비메이커 등을 활용해서 다음의 TV팟, 네이버의 카페나 블로그, 네이트 동영상, 판도라TV, 유투브, SNS(페이스북, 트위터 등)에 올려서 홍보한다. 용량이 초과해 포털에서 등록할 수 없다면 팟인코더를 사용해 용량을 줄인다.
7. 소셜 네트워크 서비스(SNS)에서 홍보하기
-소셜 네트워크 서비스(Social Network Service, SNS)는 온라인 이맥구축 서비스이다. 즉, 1인 미디어, 1인 커뮤니티, 정보 공유 등을 포괄하는 개념이며, 참가자가 서로에게 친구를 소개하여, 친구관계를 넓힐 목적으로 개설된 커뮤니티형 웹사이트(트위터, 페이스북, 미투데이 등). 이 SNS를 이용해 홍보.
8. 사이트의 주소를 포함시키기
-평소에 자주 접속하는 웹사이트에 글을 등록할 때에 반드시 창업자가 운영하고 있는 웹사이트의 주소도 함께 등록하는 습관을 가지는 것이 필요.
6. 창업준비에 도움이 되는 다양한 웹사이트 적극적으로 활용
1) 한국건강기능식품협회(www.hfood.or.kr)
2) 중소기업청, 소상공인지원센터 및 창업보육센터(사이트주소는 3부 앞부분에 나옴)
-지원 범위 : 1. 자금(무상지원과, 대출) 2. 사무실 3. 인력 4. 장비
3) 금융감독원의 전자공시시스템(dart.fss.or.kr)
-회사 재산 60만 이상, 등록이 의무
4) 한국산업인력관리공단 Q-net 및 민간자격증
-창업자가 취득 가능한 각종 자격증에 관한 정보는 한국산업인력공단과 노동부가 운영하는 Q-net에서 무료로 제공
5) (사)대한가맹거래사협회(www.ftaa.or.kr)
6) 창업박람회 홍보
-서울 : 서울무역전시장, 코엑스
부산 : 벡스코
대구 : 대구전시컨벤션센터(엑스코)
경기도 : 킨텍스
7) 공정거래위원회 가맹사업 홈페이지(franchise.ftc.go.kr)
-아래의 사항에 대한 분쟁이 있는 경우 도움 받을 수 있다.
=1. 가맹계약 해지 및 가맹금 반환
2. 부당한 계약해지 및 갱신거절의 철회
3. 계약이행의 청구
4. 영업지역의 보장
5. 일방적 계약변경의 철회
6. 부당이득반환(광고비 등)
7. 상표 및 의장권 침해
8) 카페와 블로그에서 신용카드 결제가 가능한 INIP2P(www.inip2p.com)
-국내 최초로 개발된 개인간 안전거래 중계 모듈, INIP2P 서비스는 카페와 블로그 등의 개인 웹사이트에서 상품을 판매할 때에 사용할 수 있는 솔루션(신용카드, 자동이체, 계좌송금의 방법으로 결제 가능)
9) 인터넷쇼핑몰과 SGI서울보증(www.sgic.co.kr)
-전자상거래 보험, 보증
10) 에스크로 서비스와 에스크로 에이전트
-구매안전서비스(예전 10만원 이상에서 확대)
-5만원 이상의 상품, 서비스의 창업자들은 의무적으로 에스크로 서비스를 제공해야 한다.
=구매자에게는 확실한 물품배송을, 판매자에게는 안전한 판매대금을 중계하는 매매보호서비스
11) 지적재산권(특허, 실용신안, 디자인, 상표)의 출원 및 검색
-특허청(www.kipo.go.kr)
-특허정보검색서비스(www.kipis.or.kr)
12) 인터넷 주소(도메인)의 구입
-창업자라면 적어도 1~2개의 인터넷 주소를 구입하는 것이 필요한 데, 도메인을 구입함에 있어 생각해야 할 몇가지 사항은 다음과 같다.
가. 한글 도메인 구입하지 않는 것이 좋다.
나. 상업적인 사이트라면 kr, co.kr, com 3가지 중에서 하나를 구입
다. 도메인명은 영어단어를 조합하는 것이 가장 좋다.(도메인 명만 보면 무엇을 판매하는 회사인지 알 수 있게)
라. 도메인을 구입할 때에는 반드시 창업자 본인의 이름, 연락처를 사용(홈페이지 제작회사에 의뢰하더라도 반드시)
마. 발음하기 쉬운 도메인명을 구입 -> 보다 많은 사람들이 기억
라. 상호, 상표 그리고 도메인명을 일치시키거나 관련성이 높도록 하는 것이 좋다.
13) 홈페이지의 평가 및 순위 정보
-국내(랭키닷컴, 100hot, 랭크원 등), 전세계(알렉사)
2014년 12월 21일 일요일
명품 자바(java) 7장 실습문제9(HashMap으로 학생정보 입,출력 프로그램)
앞서한 ArrayList와 문제가 거의 유사하기에 원래 문제에서 살짝 변형을 시켜 txt파일을
읽어와서 출력하는 프로그램으로 바꿨습니다. 입력부분 외에는 똑같습니다.
------------------------------------------------------------
public class Student {
private String student_name;//이름
private String department;//학과
private String student_num;//학번
private double average;//학점 평균
public String getStudent_name() {
return student_name;
}
public void setStudent_name(String student_name) {
this.student_name = student_name;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public String getStudent_num() {
return student_num;
}
public void setStudent_num(String student_num) {
this.student_num = student_num;
}
public double getAverage() {
return average;
}
public void setAverage(double average) {
this.average = average;
}
}
------------------------------------------------------------
import java.util.HashMap;
import java.util.Scanner;
import java.io.*;
public class Play {
HashMap<String, Student> h = new HashMap<String, Student>();
public void input(){//파일을 입력받아 Student의 객체에 넣고 객체를 HashMap에 넣는 함수
try {
BufferedReader in = new BufferedReader(new FileReader("C:\\Users\\pc\\Desktop\\데이터.txt"));
String s;
while((s = in.readLine()) != null) {//줄 단위로 읽어 오기
System.out.println(s);//출력
String[] spl = s.split(";");//;마다 끊어서 spl배열에 저장
Student student = new Student();
double d = Double.parseDouble(spl[3]);
student.setStudent_name(spl[0]);
student.setDepartment(spl[1]);
student.setStudent_num(spl[2]);
student.setAverage(d);
h.put(spl[2], student);
}
in.close();
}catch (IOException e){
System.err.println("입력 값이 없습니다.");
System.exit(1);
}
System.out.println("-------------------------------------");
}
public void printing(){//출력하는 함수
this.input();
String input_num = "good";
while(!input_num.equals("0"))
{
System.out.print("찾을 학생의 학번을 입력하시오(0 입력 시 종료) : ");
Scanner input5 = new Scanner(System.in);
input_num = input5.next();
if(h.get(input_num) != null){
System.out.println("이름 : "+h.get(input_num).getStudent_name()+" ");
System.out.println("학과 : "+h.get(input_num).getDepartment()+" ");
System.out.println("학번 : "+h.get(input_num).getStudent_num()+" ");
System.out.println("학점 평균 : "+h.get(input_num).getAverage()+" ");
System.out.println("-------------------------------------");
}
else if((h.get(input_num) == null) && (!input_num.equals("0"))){
System.out.println("없는 학번 입니다.");
System.out.println("-------------------------------------");
}
}
System.out.println("프로그램을 종료합니다.");
}
}
------------------------------------------------------------
public class Main {
public static void main(String[] arg){
Play p = new Play();
p.printing();
}
}
------------------------------------------------------------
아래는 데이터.txt의 내용과 이클립스에서의 실행결과입니다.
읽어와서 출력하는 프로그램으로 바꿨습니다. 입력부분 외에는 똑같습니다.
------------------------------------------------------------
public class Student {
private String student_name;//이름
private String department;//학과
private String student_num;//학번
private double average;//학점 평균
public String getStudent_name() {
return student_name;
}
public void setStudent_name(String student_name) {
this.student_name = student_name;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public String getStudent_num() {
return student_num;
}
public void setStudent_num(String student_num) {
this.student_num = student_num;
}
public double getAverage() {
return average;
}
public void setAverage(double average) {
this.average = average;
}
}
------------------------------------------------------------
import java.util.HashMap;
import java.util.Scanner;
import java.io.*;
public class Play {
HashMap<String, Student> h = new HashMap<String, Student>();
public void input(){//파일을 입력받아 Student의 객체에 넣고 객체를 HashMap에 넣는 함수
try {
BufferedReader in = new BufferedReader(new FileReader("C:\\Users\\pc\\Desktop\\데이터.txt"));
String s;
while((s = in.readLine()) != null) {//줄 단위로 읽어 오기
System.out.println(s);//출력
String[] spl = s.split(";");//;마다 끊어서 spl배열에 저장
Student student = new Student();
double d = Double.parseDouble(spl[3]);
student.setStudent_name(spl[0]);
student.setDepartment(spl[1]);
student.setStudent_num(spl[2]);
student.setAverage(d);
h.put(spl[2], student);
}
in.close();
}catch (IOException e){
System.err.println("입력 값이 없습니다.");
System.exit(1);
}
System.out.println("-------------------------------------");
}
public void printing(){//출력하는 함수
this.input();
String input_num = "good";
while(!input_num.equals("0"))
{
System.out.print("찾을 학생의 학번을 입력하시오(0 입력 시 종료) : ");
Scanner input5 = new Scanner(System.in);
input_num = input5.next();
if(h.get(input_num) != null){
System.out.println("이름 : "+h.get(input_num).getStudent_name()+" ");
System.out.println("학과 : "+h.get(input_num).getDepartment()+" ");
System.out.println("학번 : "+h.get(input_num).getStudent_num()+" ");
System.out.println("학점 평균 : "+h.get(input_num).getAverage()+" ");
System.out.println("-------------------------------------");
}
else if((h.get(input_num) == null) && (!input_num.equals("0"))){
System.out.println("없는 학번 입니다.");
System.out.println("-------------------------------------");
}
}
System.out.println("프로그램을 종료합니다.");
}
}
------------------------------------------------------------
public class Main {
public static void main(String[] arg){
Play p = new Play();
p.printing();
}
}
------------------------------------------------------------
아래는 데이터.txt의 내용과 이클립스에서의 실행결과입니다.
명품 자바(java) 7장 실습문제5(ArrayList로 학생정보 입,출력 프로그램)
-----------------------------------------------------------
public class Student {
private String student_name;
private String department;
private int student_num;
private int average;
public String getStudent_name() {
return student_name;
}
public void setStudent_name(String student_name) {
this.student_name = student_name;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public int getStudent_num() {
return student_num;
}
public void setStudent_num(int student_num) {
this.student_num = student_num;
}
public int getAverage() {
return average;
}
public void setAverage(int average) {
this.average = average;
}
}
-----------------------------------------------------------
import java.util.ArrayList;
import java.util.Scanner;
public class Play {
ArrayList<Student> s = new ArrayList<Student>();
public void input(){
for(int i=1; i<6; i++){
Student student = new Student();
System.out.print(i+"번째 학생의 이름을 입력하시오 : ");
Scanner input1 = new Scanner(System.in);
student.setStudent_name(input1.next());
System.out.print(i+"번째 학생의 학과를 입력하시오 : ");
Scanner input2 = new Scanner(System.in);
student.setDepartment(input2.next());
System.out.print(i+"번째 학생의 학번을 입력하시오 : ");
Scanner input3 = new Scanner(System.in);
student.setStudent_num(input3.nextInt());
System.out.print(i+"번째 학생의 학점 평균을 입력하시오 : ");
Scanner input4 = new Scanner(System.in);
student.setAverage(input4.nextInt());
System.out.println("-------------------------------------");
s.add(student);
}
}
public void printing(){
for(Student student : s){
System.out.print("이름 : "+student.getStudent_name()+" ");
System.out.print("학과 : "+student.getDepartment()+" ");
System.out.print("학번 : "+student.getStudent_num()+" ");
System.out.print("학점 평균 : "+student.getAverage()+" ");
System.out.println();
}
System.out.println("-------------------------------------");
}
}
-----------------------------------------------------------
public class Main {
public static void main(String[] arg){
Play p = new Play();
p.input();
p.printing();
}
}
-----------------------------------------------------------
아래는 이클립스에서 실행결과입니다.
public class Student {
private String student_name;
private String department;
private int student_num;
private int average;
public String getStudent_name() {
return student_name;
}
public void setStudent_name(String student_name) {
this.student_name = student_name;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public int getStudent_num() {
return student_num;
}
public void setStudent_num(int student_num) {
this.student_num = student_num;
}
public int getAverage() {
return average;
}
public void setAverage(int average) {
this.average = average;
}
}
-----------------------------------------------------------
import java.util.ArrayList;
import java.util.Scanner;
public class Play {
ArrayList<Student> s = new ArrayList<Student>();
public void input(){
for(int i=1; i<6; i++){
Student student = new Student();
System.out.print(i+"번째 학생의 이름을 입력하시오 : ");
Scanner input1 = new Scanner(System.in);
student.setStudent_name(input1.next());
System.out.print(i+"번째 학생의 학과를 입력하시오 : ");
Scanner input2 = new Scanner(System.in);
student.setDepartment(input2.next());
System.out.print(i+"번째 학생의 학번을 입력하시오 : ");
Scanner input3 = new Scanner(System.in);
student.setStudent_num(input3.nextInt());
System.out.print(i+"번째 학생의 학점 평균을 입력하시오 : ");
Scanner input4 = new Scanner(System.in);
student.setAverage(input4.nextInt());
System.out.println("-------------------------------------");
s.add(student);
}
}
public void printing(){
for(Student student : s){
System.out.print("이름 : "+student.getStudent_name()+" ");
System.out.print("학과 : "+student.getDepartment()+" ");
System.out.print("학번 : "+student.getStudent_num()+" ");
System.out.print("학점 평균 : "+student.getAverage()+" ");
System.out.println();
}
System.out.println("-------------------------------------");
}
}
-----------------------------------------------------------
public class Main {
public static void main(String[] arg){
Play p = new Play();
p.input();
p.printing();
}
}
-----------------------------------------------------------
아래는 이클립스에서 실행결과입니다.
명품 자바(java) 5장 실습문제6 (그래픽 편집기 콘솔) - 상속, 추상클래스
------------------------------------------------------------
abstract class DObject {//추상클래스 DObject
abstract public void draw();
}
------------------------------------------------------------
public class Line extends DObject {//추상클래스 DObject의 서브클래스 Line
public void draw(){
System.out.println("Line");//서브클래스 Line에서 오버라이딩 된 메소드 draw
}
}
------------------------------------------------------------
public class Rect extends DObject {//추상클래스 DObject의 서브클래스 Rect
public void draw(){
System.out.println("Rect");//서브클래스 Rect에서 오버라이딩 된 메소드 draw
}
}
------------------------------------------------------------
public class Circle extends DObject {//추상클래스 DObject의 서브클래스 Circle
public void draw(){
System.out.println("Circle");//서브클래스 Circle에서 오버라이딩 된 메소드 draw
}
}
------------------------------------------------------------
import java.util.Scanner;
public class Editor {
public void editor()
{
final int MAX = 100;//도형을 담을 수 있는 최대 크기
DObject store[] = new DObject[MAX];//추상클래스의 객체배열 레퍼런스 변수 선언, 도형을 저장하는 곳
int last=0;//마지막에 선언한 도형이 있는 위치이자, 도형의 갯수
int loop=1;//삽입, 삭제, 모두 보기, 종료를 실행하는 메뉴를 순환시키는 변수
int number, number2;//입력받은 값을 저장하는 변수
while(loop != 4){
System.out.print("삽입(1), 삭제(2), 모두 보기(3), 종료(4)>>");
Scanner input1 = new Scanner(System.in);
loop = input1.nextInt();
switch(loop){
case 1://삽입
System.out.print("도형 종류 Line(1), Rect(2), Circle(3)>>");
Scanner first = new Scanner(System.in);
number = first.nextInt();
if(number == 1){
store[last] = new Line();//Line 도형을 넣는다.
last++;
}
else if(number == 2){
store[last] = new Rect();//Rect 도형을 넣는다.
last++;
}
else if(number == 3){
store[last] = new Circle();//Circle 도형을 넣는다.
last++;
}
else{
System.out.print("1 ~ 3 중에서 선택하시오.");
}
break;
case 2://삭제
if(last != 0){//도형의 수가 0이 아니면
System.out.print("삭제할 도형의 위치(ex - 첫 번째 도형은 1 두 번째 도형은 2)>>");
Scanner second = new Scanner(System.in);
number2 = second.nextInt();
if(number2 <= last){//입력받은 삭제할 도형의 위치가 도형의 수보다 낮으면
for(int i=number2-1; i<last; i++){
store[i] = store[i+1];
}
last--;
}
else{//입력받은 삭제할 도형의 위치가 도형의 수보다 높으면
System.out.println("삭제할 도형의 위치를 잘못 선택하셨습니다.");
}
}
else{//도형의 수가 0이면
System.out.println("삭제할 도형이 없습니다.");
}
break;
case 3://모두 보기
if(last != 0){//도형의 수가 0이 아니면
for(int i=0; i<last; i++){//저장한 각 도형의 draw함수를 실행시켜 모두 출력
store[i].draw();
}
}
else{//도형의 수가 0이면
System.out.println("출력할 도형이 없습니다.");
}
break;
case 4://끝내기(while문의 반복 조건이 변수 loop가 4가 아닐 때이므로 종료)
System.out.println("프로그램을 종료합니다.");
break;
default://오류처리
System.out.println("1 ~ 4 중에서 선택하시오.");
continue;//다시 while문 처음으로
}
}
}
}
------------------------------------------------------------
public class Main {
public static void main(String [] args){
Editor edit = new Editor();//Editor클래스의 객체 edit를 생성
edit.editor();//edit의 메소드 editor를 호출
}
}
------------------------------------------------------------
아래는 이클립스에서의 실행결과입니다.
abstract class DObject {//추상클래스 DObject
abstract public void draw();
}
------------------------------------------------------------
public class Line extends DObject {//추상클래스 DObject의 서브클래스 Line
public void draw(){
System.out.println("Line");//서브클래스 Line에서 오버라이딩 된 메소드 draw
}
}
------------------------------------------------------------
public class Rect extends DObject {//추상클래스 DObject의 서브클래스 Rect
public void draw(){
System.out.println("Rect");//서브클래스 Rect에서 오버라이딩 된 메소드 draw
}
}
------------------------------------------------------------
public class Circle extends DObject {//추상클래스 DObject의 서브클래스 Circle
public void draw(){
System.out.println("Circle");//서브클래스 Circle에서 오버라이딩 된 메소드 draw
}
}
------------------------------------------------------------
import java.util.Scanner;
public class Editor {
public void editor()
{
final int MAX = 100;//도형을 담을 수 있는 최대 크기
DObject store[] = new DObject[MAX];//추상클래스의 객체배열 레퍼런스 변수 선언, 도형을 저장하는 곳
int last=0;//마지막에 선언한 도형이 있는 위치이자, 도형의 갯수
int loop=1;//삽입, 삭제, 모두 보기, 종료를 실행하는 메뉴를 순환시키는 변수
int number, number2;//입력받은 값을 저장하는 변수
while(loop != 4){
System.out.print("삽입(1), 삭제(2), 모두 보기(3), 종료(4)>>");
Scanner input1 = new Scanner(System.in);
loop = input1.nextInt();
switch(loop){
case 1://삽입
System.out.print("도형 종류 Line(1), Rect(2), Circle(3)>>");
Scanner first = new Scanner(System.in);
number = first.nextInt();
if(number == 1){
store[last] = new Line();//Line 도형을 넣는다.
last++;
}
else if(number == 2){
store[last] = new Rect();//Rect 도형을 넣는다.
last++;
}
else if(number == 3){
store[last] = new Circle();//Circle 도형을 넣는다.
last++;
}
else{
System.out.print("1 ~ 3 중에서 선택하시오.");
}
break;
case 2://삭제
if(last != 0){//도형의 수가 0이 아니면
System.out.print("삭제할 도형의 위치(ex - 첫 번째 도형은 1 두 번째 도형은 2)>>");
Scanner second = new Scanner(System.in);
number2 = second.nextInt();
if(number2 <= last){//입력받은 삭제할 도형의 위치가 도형의 수보다 낮으면
for(int i=number2-1; i<last; i++){
store[i] = store[i+1];
}
last--;
}
else{//입력받은 삭제할 도형의 위치가 도형의 수보다 높으면
System.out.println("삭제할 도형의 위치를 잘못 선택하셨습니다.");
}
}
else{//도형의 수가 0이면
System.out.println("삭제할 도형이 없습니다.");
}
break;
case 3://모두 보기
if(last != 0){//도형의 수가 0이 아니면
for(int i=0; i<last; i++){//저장한 각 도형의 draw함수를 실행시켜 모두 출력
store[i].draw();
}
}
else{//도형의 수가 0이면
System.out.println("출력할 도형이 없습니다.");
}
break;
case 4://끝내기(while문의 반복 조건이 변수 loop가 4가 아닐 때이므로 종료)
System.out.println("프로그램을 종료합니다.");
break;
default://오류처리
System.out.println("1 ~ 4 중에서 선택하시오.");
continue;//다시 while문 처음으로
}
}
}
}
------------------------------------------------------------
public class Main {
public static void main(String [] args){
Editor edit = new Editor();//Editor클래스의 객체 edit를 생성
edit.editor();//edit의 메소드 editor를 호출
}
}
------------------------------------------------------------
아래는 이클립스에서의 실행결과입니다.
명품 자바(java) 4장 실습문제6 (공연 예약 시스템)
--------------------------------------------------------------------
public class Seat {
public Seat(){
}
private String name;//예약자 이름
private int num;//좌석 번호
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
--------------------------------------------------------------------
import java.util.Scanner;
public class Reserve {
public Reserve(){
}
final static int MAX = 11;//최대 좌석 수 10개(편의상 배열[1]부터 시작)
public void check(Seat sample[]) {//좌석 조회 함수
for(int i=1; i<MAX; i++){
System.out.print(sample[i].getName()+" ");
}
System.out.println();
}
public void reserve(Seat sample1[], Seat sample2[], Seat sample3[]) {//예약 함수
System.out.print("좌석구분 S<1>, A<2>, B<3>>>");
Scanner temp1 = new Scanner(System.in);
int s = temp1.nextInt();
switch(s){
case 1://Seat S
System.out.print("S>>");
this.check(sample1);//조회 함수 호출해 seatS의 좌석 확인
System.out.print("이름>>");
Scanner name1 = new Scanner(System.in);
String j1 = name1.next();
System.out.print("번호>>");
Scanner number1 = new Scanner(System.in);
int w1 = number1.nextInt();
if(sample1[w1].getName().equals("---") == true){//좌석에 초기값 ---가 입력 되어있다면
if(w1>MAX){//좌석 번호가 최대 좌석 수를 초과할 때
System.out.println("좌석 번호는 1부터 10까지 있습니다.");
break;
}
else if(w1<=MAX){//좌석 번호가 최대 좌석 수를 초과하지 않을 때
sample1[w1].setName(j1);//입력받은 번호의 좌석에 입력받은 이름을 저장
}
}
else if(sample1[w1].getName().equals("---") == false){//좌석에 초기값이 아닌 다른 값이 입력 되어있다면
System.out.println("이미 예약된 좌석입니다.");
}
break;
case 2://Seat A
System.out.print("A>>");
this.check(sample2);//조회 함수 호출해 seatA의 좌석 확인
System.out.print("이름>>");
Scanner name2 = new Scanner(System.in);
String j2 = name2.next();
System.out.print("번호>>");
Scanner number2 = new Scanner(System.in);
int w2 = number2.nextInt();
if(sample2[w2].getName().equals("---") == true){//좌석에 초기값 ---가 입력 되어있다면
if(w2>MAX){//좌석 번호가 최대 좌석 수를 초과할 때
System.out.println("좌석 번호는 1부터 10까지 있습니다.");
break;
}
else if(w2<=MAX){//좌석 번호가 최대 좌석 수를 초과하지 않을 때
sample2[w2].setName(j2);//입력받은 번호의 좌석에 입력받은 이름을 저장
}
}
else if(sample2[w2].getName().equals("---") == false){//좌석에 초기값이 아닌 다른 값이 입력 되어있다면
System.out.println("이미 예약된 좌석입니다.");
}
break;
case 3://Seat B
System.out.print("B>>");
this.check(sample3);//조회 함수 호출해 seatB의 좌석 확인
System.out.print("이름>>");
Scanner name3 = new Scanner(System.in);
String j3 = name3.next();
System.out.print("번호>>");
Scanner number3 = new Scanner(System.in);
int w3 = number3.nextInt();
if(sample3[w3].getName().equals("---") == true){//좌석에 초기값 ---가 입력 되어있다면
if(w3>MAX){//좌석 번호가 최대 좌석 수를 초과할 때
System.out.println("좌석 번호는 1부터 10까지 있습니다.");
break;
}
else if(w3<=MAX){//좌석 번호가 최대 좌석 수를 초과하지 않을 때
sample3[w3].setName(j3);//입력받은 번호의 좌석에 입력받은 이름을 저장
}
}
else if(sample3[w3].getName().equals("---") == false){//좌석에 초기값이 아닌 다른 값이 입력 되어있다면
System.out.println("이미 예약된 좌석입니다.");
}
break;
default:
System.out.print("1, 2, 3 중에서 고르시오.");
break;
}
}
public void cancel(Seat sample[]){//예약 취소 함수
int tem = 0;
this.check(sample);
System.out.print("이름>>");
Scanner name4 = new Scanner(System.in);
String cancel_name = name4.next();
int z;
for(z=1; z<MAX; z++){
if(cancel_name.equals(sample[z].getName()) == true){//입력 받은 문자열(취소하려는 사람 이름)과 같은 이름의
tem = z; //좌석을 탐색해 있다면 임시변수에 좌석번호 저장
sample[tem].setName("---");
break;
}
}
if(z == MAX){
System.out.println("<"+cancel_name+">의 이름으로 예약된 좌석은 없습니다.");
}
}
}
--------------------------------------------------------------------
import java.util.Scanner;
public class Menu {
public Menu(){
}
final static int MAX = 11;//최대 좌석 수 10개(편의상 배열[1]부터 시작)
public void play() {
Seat seatS[] = new Seat[MAX];//레퍼런스 생성
Seat seatA[] = new Seat[MAX];
Seat seatB[] = new Seat[MAX];
for(int i=1; i<MAX; i++){//객체 생성
seatS[i] = new Seat();
seatA[i] = new Seat();
seatB[i] = new Seat();
}
for(int i=1; i<MAX; i++){//초기값 ---로 설정
seatS[i].setName("---");
seatA[i].setName("---");
seatB[i].setName("---");
}
Reserve reservation = new Reserve();
int l = 1;
while(l != 4)
{
System.out.print("예약<1>, 조회<2>, 취소<3>, 끝내기<4>>>");
Scanner temp = new Scanner(System.in);
l = temp.nextInt();
if(l==1){//예약
reservation.reserve(seatS, seatA, seatB);
}
else if(l==2){//조회
reservation.check(seatS);
reservation.check(seatA);
reservation.check(seatB);
}
else if(l==3){//취소
System.out.print("좌석구분 S<1>, A<2>, B<3>>>");
Scanner temp2 = new Scanner(System.in);
int k2 = temp2.nextInt();
switch(k2){
case 1:
reservation.cancel(seatS);
break;
case 2:
reservation.cancel(seatA);
break;
case 3:
reservation.cancel(seatB);
break;
default:
System.out.print("1, 2, 3 중에서 고르시오.");
continue;
}
}
else if(l==4){//끝내기
System.out.print("프로그램을 종료합니다.");
break;
}
else{//오류처리
System.out.println("1, 2, 3, 4 중에서 고르시오.");
}
}
}
}
--------------------------------------------------------------------
public class Main {
public static void main(String[] args){
Menu menu = new Menu();
menu.play();
}
}
--------------------------------------------------------------------
아래는 이클립스에서의 실행결과입니다.
public class Seat {
public Seat(){
}
private String name;//예약자 이름
private int num;//좌석 번호
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
--------------------------------------------------------------------
import java.util.Scanner;
public class Reserve {
public Reserve(){
}
final static int MAX = 11;//최대 좌석 수 10개(편의상 배열[1]부터 시작)
public void check(Seat sample[]) {//좌석 조회 함수
for(int i=1; i<MAX; i++){
System.out.print(sample[i].getName()+" ");
}
System.out.println();
}
public void reserve(Seat sample1[], Seat sample2[], Seat sample3[]) {//예약 함수
System.out.print("좌석구분 S<1>, A<2>, B<3>>>");
Scanner temp1 = new Scanner(System.in);
int s = temp1.nextInt();
switch(s){
case 1://Seat S
System.out.print("S>>");
this.check(sample1);//조회 함수 호출해 seatS의 좌석 확인
System.out.print("이름>>");
Scanner name1 = new Scanner(System.in);
String j1 = name1.next();
System.out.print("번호>>");
Scanner number1 = new Scanner(System.in);
int w1 = number1.nextInt();
if(sample1[w1].getName().equals("---") == true){//좌석에 초기값 ---가 입력 되어있다면
if(w1>MAX){//좌석 번호가 최대 좌석 수를 초과할 때
System.out.println("좌석 번호는 1부터 10까지 있습니다.");
break;
}
else if(w1<=MAX){//좌석 번호가 최대 좌석 수를 초과하지 않을 때
sample1[w1].setName(j1);//입력받은 번호의 좌석에 입력받은 이름을 저장
}
}
else if(sample1[w1].getName().equals("---") == false){//좌석에 초기값이 아닌 다른 값이 입력 되어있다면
System.out.println("이미 예약된 좌석입니다.");
}
break;
case 2://Seat A
System.out.print("A>>");
this.check(sample2);//조회 함수 호출해 seatA의 좌석 확인
System.out.print("이름>>");
Scanner name2 = new Scanner(System.in);
String j2 = name2.next();
System.out.print("번호>>");
Scanner number2 = new Scanner(System.in);
int w2 = number2.nextInt();
if(sample2[w2].getName().equals("---") == true){//좌석에 초기값 ---가 입력 되어있다면
if(w2>MAX){//좌석 번호가 최대 좌석 수를 초과할 때
System.out.println("좌석 번호는 1부터 10까지 있습니다.");
break;
}
else if(w2<=MAX){//좌석 번호가 최대 좌석 수를 초과하지 않을 때
sample2[w2].setName(j2);//입력받은 번호의 좌석에 입력받은 이름을 저장
}
}
else if(sample2[w2].getName().equals("---") == false){//좌석에 초기값이 아닌 다른 값이 입력 되어있다면
System.out.println("이미 예약된 좌석입니다.");
}
break;
case 3://Seat B
System.out.print("B>>");
this.check(sample3);//조회 함수 호출해 seatB의 좌석 확인
System.out.print("이름>>");
Scanner name3 = new Scanner(System.in);
String j3 = name3.next();
System.out.print("번호>>");
Scanner number3 = new Scanner(System.in);
int w3 = number3.nextInt();
if(sample3[w3].getName().equals("---") == true){//좌석에 초기값 ---가 입력 되어있다면
if(w3>MAX){//좌석 번호가 최대 좌석 수를 초과할 때
System.out.println("좌석 번호는 1부터 10까지 있습니다.");
break;
}
else if(w3<=MAX){//좌석 번호가 최대 좌석 수를 초과하지 않을 때
sample3[w3].setName(j3);//입력받은 번호의 좌석에 입력받은 이름을 저장
}
}
else if(sample3[w3].getName().equals("---") == false){//좌석에 초기값이 아닌 다른 값이 입력 되어있다면
System.out.println("이미 예약된 좌석입니다.");
}
break;
default:
System.out.print("1, 2, 3 중에서 고르시오.");
break;
}
}
public void cancel(Seat sample[]){//예약 취소 함수
int tem = 0;
this.check(sample);
System.out.print("이름>>");
Scanner name4 = new Scanner(System.in);
String cancel_name = name4.next();
int z;
for(z=1; z<MAX; z++){
if(cancel_name.equals(sample[z].getName()) == true){//입력 받은 문자열(취소하려는 사람 이름)과 같은 이름의
tem = z; //좌석을 탐색해 있다면 임시변수에 좌석번호 저장
sample[tem].setName("---");
break;
}
}
if(z == MAX){
System.out.println("<"+cancel_name+">의 이름으로 예약된 좌석은 없습니다.");
}
}
}
--------------------------------------------------------------------
import java.util.Scanner;
public class Menu {
public Menu(){
}
final static int MAX = 11;//최대 좌석 수 10개(편의상 배열[1]부터 시작)
public void play() {
Seat seatS[] = new Seat[MAX];//레퍼런스 생성
Seat seatA[] = new Seat[MAX];
Seat seatB[] = new Seat[MAX];
for(int i=1; i<MAX; i++){//객체 생성
seatS[i] = new Seat();
seatA[i] = new Seat();
seatB[i] = new Seat();
}
for(int i=1; i<MAX; i++){//초기값 ---로 설정
seatS[i].setName("---");
seatA[i].setName("---");
seatB[i].setName("---");
}
Reserve reservation = new Reserve();
int l = 1;
while(l != 4)
{
System.out.print("예약<1>, 조회<2>, 취소<3>, 끝내기<4>>>");
Scanner temp = new Scanner(System.in);
l = temp.nextInt();
if(l==1){//예약
reservation.reserve(seatS, seatA, seatB);
}
else if(l==2){//조회
reservation.check(seatS);
reservation.check(seatA);
reservation.check(seatB);
}
else if(l==3){//취소
System.out.print("좌석구분 S<1>, A<2>, B<3>>>");
Scanner temp2 = new Scanner(System.in);
int k2 = temp2.nextInt();
switch(k2){
case 1:
reservation.cancel(seatS);
break;
case 2:
reservation.cancel(seatA);
break;
case 3:
reservation.cancel(seatB);
break;
default:
System.out.print("1, 2, 3 중에서 고르시오.");
continue;
}
}
else if(l==4){//끝내기
System.out.print("프로그램을 종료합니다.");
break;
}
else{//오류처리
System.out.println("1, 2, 3, 4 중에서 고르시오.");
}
}
}
}
--------------------------------------------------------------------
public class Main {
public static void main(String[] args){
Menu menu = new Menu();
menu.play();
}
}
--------------------------------------------------------------------
아래는 이클립스에서의 실행결과입니다.
명품 자바(java) 원, 정사각형의 둘레와 면적 계산 프로그램 - 클래스, 객체, 접근지정자(private)
-------------------------------------------------------------------
public class Circle {
final double PI = 3.14159;//변하지 않는 상수로 PI = 3.14159 지정
private int radius;//반지름
private double circumference;//원의 둘레
private double c_extent;//원의 면적
public int getRadius() {
return radius;
}
public void setRadius(int radius) {
this.radius = radius;
this.circumference = 2*PI*(radius);
this.c_extent = PI*(radius)*(radius);
}
public double getCircumference() {
return circumference;
}
public double getC_extent() {
return c_extent;
}
}
-------------------------------------------------------------------
public class Square {
private int width;//너비
private int girth;//정사각형의 둘레
private int s_extent;//정사각형의 면적
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
this.girth = 4*(width);
this.s_extent = (width)*(width);
}
public int getGirth() {
return girth;
}
public int getS_extent() {
return s_extent;
}
}
-------------------------------------------------------------------
import java.util.Scanner;
public class Play {
public void printing() {
int num = 1;
while(num != 0)//num이 0이 되면 종료
{
Scanner n = new Scanner(System.in);
System.out.println("사용할 메뉴를 선택해주세요.");
System.out.print("[0. 종료] [1. 원] [2. 정사각형] : ");
num = n.nextInt();//입력 받은 값을 num에 저장
if(num == 0)//num이 0이 되면 종료
{
}
else if(num == 1)//num이 1이면 원이 선택됨
{
System.out.print("원의 반지름을 입력해주세요 : ");
Circle circle = new Circle();//circle 객체 생성
Scanner m = new Scanner(System.in);
circle.setRadius(m.nextInt());//입력 받은 값을 radius에 입력
System.out.println("반지름 : " + circle.getRadius());//입력 받은 반지름, 원의 둘레, 원의 면적 값 출력
System.out.println("원의 둘레 : " + circle.getCircumference());
System.out.println("원의 면적 : " + circle.getC_extent());
}
else if(num == 2)//num이 2이면 정사각형이 선택됨
{
System.out.print("정사각형의 너비를 입력해주세요 : ");
Square square = new Square();//square 객체 생성
Scanner m = new Scanner(System.in);
square.setWidth(m.nextInt());//입력 받은 값을 width에 입력
System.out.println("너비 : " + square.getWidth());//입력받은 너비, 정사각형의 둘레, 정사각형의 면적 값 출력
System.out.println("정사각형의 둘레 : " + square.getGirth());
System.out.println("정사각형의 면적 : " + square.getS_extent());
}
else//num이 0, 1, 2를 제외한 나머지 수가 나오면 오류
{
System.out.println(" ");
System.out.println("숫자 입력 오류");
}
System.out.println(" ");
}
}
}
-------------------------------------------------------------------
public class main {
public static void main(String[] args) {
Play playprogram = new Play();//play 객체 생성
playprogram.printing();//객체의 printing 메소드 실행
System.out.println("프로그램을 종료 합니다.");
}
}
-------------------------------------------------------------------
아래는 이클립스에서의 실행결과 입니다.
public class Circle {
final double PI = 3.14159;//변하지 않는 상수로 PI = 3.14159 지정
private int radius;//반지름
private double circumference;//원의 둘레
private double c_extent;//원의 면적
public int getRadius() {
return radius;
}
public void setRadius(int radius) {
this.radius = radius;
this.circumference = 2*PI*(radius);
this.c_extent = PI*(radius)*(radius);
}
public double getCircumference() {
return circumference;
}
public double getC_extent() {
return c_extent;
}
}
-------------------------------------------------------------------
public class Square {
private int width;//너비
private int girth;//정사각형의 둘레
private int s_extent;//정사각형의 면적
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
this.girth = 4*(width);
this.s_extent = (width)*(width);
}
public int getGirth() {
return girth;
}
public int getS_extent() {
return s_extent;
}
}
-------------------------------------------------------------------
import java.util.Scanner;
public class Play {
public void printing() {
int num = 1;
while(num != 0)//num이 0이 되면 종료
{
Scanner n = new Scanner(System.in);
System.out.println("사용할 메뉴를 선택해주세요.");
System.out.print("[0. 종료] [1. 원] [2. 정사각형] : ");
num = n.nextInt();//입력 받은 값을 num에 저장
if(num == 0)//num이 0이 되면 종료
{
}
else if(num == 1)//num이 1이면 원이 선택됨
{
System.out.print("원의 반지름을 입력해주세요 : ");
Circle circle = new Circle();//circle 객체 생성
Scanner m = new Scanner(System.in);
circle.setRadius(m.nextInt());//입력 받은 값을 radius에 입력
System.out.println("반지름 : " + circle.getRadius());//입력 받은 반지름, 원의 둘레, 원의 면적 값 출력
System.out.println("원의 둘레 : " + circle.getCircumference());
System.out.println("원의 면적 : " + circle.getC_extent());
}
else if(num == 2)//num이 2이면 정사각형이 선택됨
{
System.out.print("정사각형의 너비를 입력해주세요 : ");
Square square = new Square();//square 객체 생성
Scanner m = new Scanner(System.in);
square.setWidth(m.nextInt());//입력 받은 값을 width에 입력
System.out.println("너비 : " + square.getWidth());//입력받은 너비, 정사각형의 둘레, 정사각형의 면적 값 출력
System.out.println("정사각형의 둘레 : " + square.getGirth());
System.out.println("정사각형의 면적 : " + square.getS_extent());
}
else//num이 0, 1, 2를 제외한 나머지 수가 나오면 오류
{
System.out.println(" ");
System.out.println("숫자 입력 오류");
}
System.out.println(" ");
}
}
}
-------------------------------------------------------------------
public class main {
public static void main(String[] args) {
Play playprogram = new Play();//play 객체 생성
playprogram.printing();//객체의 printing 메소드 실행
System.out.println("프로그램을 종료 합니다.");
}
}
-------------------------------------------------------------------
아래는 이클립스에서의 실행결과 입니다.
명품 자바(java) 금상 결정 프로그램(랭킹) - 조건문, 반복문, 배열
skill, art, total, rank의 배열의 인덱스번호는 선수번호와 동일
package gold;
import java.util.Scanner;
public class gold {
public static void main(String[] args){
String man[] = new String[10];
int skill[] = new int[10];
int art[] = new int[10];
int total[] = new int[10];
int rank[] = new int[10];
Scanner in = new Scanner(System.in);
for(int i = 0; i < 10; i++)
{
System.out.print("선수 이름 : ");
man[i] = in.next();
System.out.print("기술 점수 : ");
skill[i] = in.nextInt();
System.out.print("예술 점수 : ");
art[i] = in.nextInt();
total[i] = skill[i] + art[i];
}
for(int i = 0; i < 10; i++)
{
rank[i] = 1;
for(int j = 0; j < 10; j++)
{
if(total[i]<total[j])
{
rank[i] += 1;
}
}
}
System.out.print("금상 수상자 : ");
for(int i = 0; i < 10; i++)
{
if(rank[i]==1)
{
System.out.print(man[i] );
}
rank[i] += i;
}
}
}
package gold;
import java.util.Scanner;
public class gold {
public static void main(String[] args){
String man[] = new String[10];
int skill[] = new int[10];
int art[] = new int[10];
int total[] = new int[10];
int rank[] = new int[10];
Scanner in = new Scanner(System.in);
for(int i = 0; i < 10; i++)
{
System.out.print("선수 이름 : ");
man[i] = in.next();
System.out.print("기술 점수 : ");
skill[i] = in.nextInt();
System.out.print("예술 점수 : ");
art[i] = in.nextInt();
total[i] = skill[i] + art[i];
}
for(int i = 0; i < 10; i++)
{
rank[i] = 1;
for(int j = 0; j < 10; j++)
{
if(total[i]<total[j])
{
rank[i] += 1;
}
}
}
System.out.print("금상 수상자 : ");
for(int i = 0; i < 10; i++)
{
if(rank[i]==1)
{
System.out.print(man[i] );
}
rank[i] += i;
}
}
}
명품 자바(java) 10개 정수 입력, 정렬 프로그램 - 조건문, 반복문
public class 10개 정수 입력받고 정렬하는 프로그램 {
public static void main(String[] args) {
int minnum, temp;
int num[] = new int[10];// 크기 10 배열 선언
for(int i=0; i<10; i++){//10개의 정수 num[0]~num[9]에 입력
Scanner a = new Scanner(System.in);
num[i] = a.nextInt();
}
System.out.printf("before : ");//입력 받은 순서대로 정수를 나열
for(int i=0; i<10; i++){
System.out.printf("%d ", num[i]);
}
for(int j=0; j<10; j++){//오름차순 정렬
minnum = num[j];
int k = j;
for(int i=k; i<9; i++){
if(minnum>num[i+1]){
minnum = num[i+1];
temp = num[j];
num[j] = num[i+1];
num[i+1] = temp;
}
}
}
System.out.printf("after : ");//오름차순 정렬한 배열의 정수들을 순서대로 나열
for(int i=0; i<10; i++){
System.out.printf("%d ", num[i]);
}
}
}
public static void main(String[] args) {
int minnum, temp;
int num[] = new int[10];// 크기 10 배열 선언
for(int i=0; i<10; i++){//10개의 정수 num[0]~num[9]에 입력
Scanner a = new Scanner(System.in);
num[i] = a.nextInt();
}
System.out.printf("before : ");//입력 받은 순서대로 정수를 나열
for(int i=0; i<10; i++){
System.out.printf("%d ", num[i]);
}
for(int j=0; j<10; j++){//오름차순 정렬
minnum = num[j];
int k = j;
for(int i=k; i<9; i++){
if(minnum>num[i+1]){
minnum = num[i+1];
temp = num[j];
num[j] = num[i+1];
num[i+1] = temp;
}
}
}
System.out.printf("after : ");//오름차순 정렬한 배열의 정수들을 순서대로 나열
for(int i=0; i<10; i++){
System.out.printf("%d ", num[i]);
}
}
}
피드 구독하기:
덧글 (Atom)







