-
18일 차 도서대여 프로그램 완벽한 저장삼성SDS_멀티캠퍼스/Java 2015. 10. 2. 13:29반응형
http://sungwooki.tistory.com/135
에서 사용했던 클래스들을 그대로 사용하겠다.
다만, InputTest 만 내용을 변경하겠다.
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Scanner;
public class InputTest implements Serializable{
static Scanner scan = new Scanner(System.in);
static int num;
public static void main(String[] args) {
// ArrayList<Book> bookList = new ArrayList<Book>();
ObjectInputStream in = null;
ObjectOutputStream out = null;
try {
ArrayList<Book> readCarlist = null;
try {
in = new ObjectInputStream(new FileInputStream("data.txt"));
readCarlist = (ArrayList<Book>) in.readObject();
} catch (IOException e) {
readCarlist = new ArrayList<Book>();
}
Book abbacha = null;
Scanner scan = new Scanner(System.in);
do {
System.out.println("-----------------");
System.out.println("번호를 입력하세요");
System.out.println("-----------------");
System.out.println("1.도서추가 |");
System.out.println("2.도서삭제 |");
System.out.println("3.도서조회 |");
System.out.println("4.도서대여 |");
System.out.println("5.도서반납 |");
System.out.println("6.종료 |");
System.out.println("-----------------");
num = scan.nextInt();
scan.nextLine();
switch (num) {
case 1:
System.out.println("id 입력");
int id = scan.nextInt();
scan.nextLine();
System.out.println("책 이름 입력");
String name = scan.nextLine();
System.out.println("저자 입력");
String author = scan.nextLine();
System.out.println("1.소설책 2.과학책 3.시");
int category = scan.nextInt();
scan.nextLine();
Book b;
switch (category) {
case 1:
b = new Novel();
b.setId(id);
b.setName(name);
b.setAuthor(author);
readCarlist.add(b);
break;
case 2:
b = new ScienceFiction();
b.setId(id);
b.setName(name);
b.setAuthor(author);
readCarlist.add(b);
break;
case 3:
b = new Poet();
b.setId(id);
b.setName(name);
b.setAuthor(author);
readCarlist.add(b);
break;
}
System.out.println("저장되었습니다");
break;
case 2:
System.out.println("삭제할 책의 id를 입력하세요");
int s = scan.nextInt();
for (int i = 0; i < readCarlist.size(); i++) {
if (s == readCarlist.get(i).getId())
readCarlist.remove(i);
}
System.out.println("삭제 되었습니다.");
break;
case 3:
for (Book bo : readCarlist)
System.out.println(bo);
break;
case 4:
System.out.println("대여할 책 아이디를 입력하세요");
int q = scan.nextInt();
scan.nextLine();
boolean isExist = false;
for (int i = 0; i < readCarlist.size(); i++) {
if (q == readCarlist.get(i).getId())
if (readCarlist.get(i).isRental()) {
System.out.println("이미 대여중입니다");
} else if ((!readCarlist.get(i).isRental())) {
System.out.println("정상적으로 대여 되었습니다");
readCarlist.get(i).setRental(true);
}
}
break;
case 5:
System.out.println("반납할 책 아이디를 입력하세요");
int w = scan.nextInt();
scan.nextLine();
boolean isExist2 = false;
for (int i = 0; i < readCarlist.size(); i++) {
if (w == readCarlist.get(i).getId())
if (!readCarlist.get(i).isRental()) {
System.out.println("대여중이 아닙니다");
} else if (readCarlist.get(i).isRental()) {
System.out.println("정상적으로 반납 되었습니다");
readCarlist.get(i).setRental(false);
System.out.println("연체료 :" + readCarlist.get(i).getLateFees(3));
}
}
break;
case 6:
out = new ObjectOutputStream(new FileOutputStream("data.txt"));
out.writeObject(readCarlist);
out.flush();
System.exit(0);
break;
}
} while (num != 6);
out = new ObjectOutputStream(new FileOutputStream("data.txt"));
out.writeObject(readCarlist);
out.flush();
} catch (FileNotFoundException e) {
System.out.println("파일이 존재하지 않습니다");
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("입출력에 문제가 생겼습니다");
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("클래스가 존재하지 않습니다");
} finally {
try {
if (out != null)
out.close();
if (in != null)
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
이대로 입력하면 되겠다.반응형'삼성SDS_멀티캠퍼스 > Java' 카테고리의 다른 글
19일 차 Socket 통신으로 채팅방 만들기 (0) 2015.10.05 19일 차 소켓 통신 (0) 2015.10.05 18일 차 객체의 입출력 (0) 2015.10.02 18일 차 객체를 입출력 하려면 직렬화를 해야한다. (0) 2015.10.02 17일 차 메모장에 있는 내용을 그대로 입출력하기 (0) 2015.10.01