Ejemplo n.º 1
0
 // 도서리스트 내에 현재 같은 도서가 있는지 확인, primary key는 책명, 저자이다.
 public bool IsThereBook(string bookName, string writer)
 {
     for (int i = 0; i < books.Count; i++)
     {
         Data.Book book = (Data.Book)books[i];
         if (book.Name.Equals(bookName) && book.Writer.Equals(writer))
         {
             return(true);
         }
     }
     return(false);
 }
Ejemplo n.º 2
0
        // 책 수량 수정
        public void AlterBookCount()
        {
            Data.Book book = outputProcessor.PrintBookList(DB.GetAllBooks());
            if (book == null)
            {
                return;
            }

            if (DB.ModifyBookCount(book.ISBN, outputProcessor.InputBookCount()))
            {
                DB.InsertLog("관리자", book.Name, "수량 수정"); // 로그 기록
            }
        }
Ejemplo n.º 3
0
 // 책을 도서목록에서 삭제한다.
 public void DeleteBook(Data.Book deletedBook)
 {
     if (drawer.YesOrNo("해당 도서를 삭제하시겠습니까?") == 1)
     {
         // 도서 삭제
         bookKeepList.Delete(deletedBook);
         Console.Write("\n\t책이 성공적으로 삭제되었습니다.");
     }
     else
     {
         Console.Write("\n\t삭제 실패하였습니다.");
     }
     inputProcessor.PressAnyKey();
     Console.Clear();
 }
Ejemplo n.º 4
0
        public int PrintBookList(ArrayList bookList)
        {
            int choice = 1;

            Console.SetWindowSize(103, 39);
            Console.WriteLine("\n ====================================================================================================");
            Console.WriteLine("      도서번호                도서명                출판사             저자             대출 여부     ");
            Console.WriteLine(" ====================================================================================================");
            while (true)
            {
                Console.SetCursorPosition(0, 4);

                for (int i = 0; i < bookList.Count; i++)
                {
                    Data.Book book = (Data.Book)bookList[i];
                    // 선택된 행이면 빨간색으로 표시
                    if (choice - 1 == i)
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                    }
                    book.PrintInformation();
                    Console.ForegroundColor = ConsoleColor.White;
                }
                // 첫 행으로 커서를 옮긴다
                Console.SetCursorPosition(0, 3 + choice);

                // 엔터를 치면 선택된 인덱스를 반환한다.
                if (inputProcessor.ChoiceByKey())
                {
                    return(choice);
                }

                // 커서의 위아래 이동 구간을 제한한다.
                if (Console.CursorTop < 4)
                {
                    Console.SetCursorPosition(Console.CursorLeft - 1, 4);
                }
                if (Console.CursorTop > 3 + ((bookList.Count == 0) ? 1 : bookList.Count))
                {
                    Console.SetCursorPosition(Console.CursorLeft, 3 + ((bookList.Count == 0) ? 1:bookList.Count));
                }

                // 커서 위치에 따른 메뉴 선택
                choice = Console.CursorTop - 3;
            }
        }
Ejemplo n.º 5
0
        // 책을 형식에 따라 수정한다.
        public void ModifyBook(Data.Book modifiedBook, int format, string content)
        {
            switch (format)
            {
            case (int)Data.BookManagement.Format.NameFormat:
                modifiedBook.Name = content;
                break;

            case (int)Data.BookManagement.Format.CompanyFormat:
                modifiedBook.Company = content;
                break;

            case (int)Data.BookManagement.Format.WriterFormat:
                modifiedBook.Writer = content;
                break;
            }
        }
Ejemplo n.º 6
0
 // 책 삭제
 public void DeleteBook()
 {
     Console.Clear();
     Data.Book book = outputProcessor.PrintBookList(DB.GetAllBooks());
     if (book == null)
     {
         return;
     }
     if (outputProcessor.YesOrNo("해당 책을 정말 삭제하시겠습니까?") == 1)
     {
         if (!DB.DeleteBook(book.ISBN))
         {
             outputProcessor.PressAnyKey("삭제할 책이 존재하지 않습니다.");
         }
         // 로그 기록
         DB.InsertLog("관리자", book.Name, "도서 삭제");
     }
 }
Ejemplo n.º 7
0
        // 책을 직접 검색한 뒤 대여
        public void RentalBookSearch()
        {
            string search    = "";
            string attribute = "";

            switch (output.MenuScreen(ConsoleUI.BOOK_SEARCH))
            {
            // 책 이름 검색
            case ConstNumber.MENULIST_1:
                search    = output.GetBookInformation(ConstNumber.BOOK_NAME);
                attribute = "bookname";
                break;

            // 책 출판사 검색
            case ConstNumber.MENULIST_2:
                search    = output.GetBookInformation(ConstNumber.BOOK_COMPANY);
                attribute = "company";
                break;

            // 도서 저자 검색
            case ConstNumber.MENULIST_3:
                search    = output.GetBookInformation(ConstNumber.BOOK_WRITER);
                attribute = "writer";
                break;

            case ConstNumber.MENULIST_4:
                return;
            }
            if (search == null)
            {
                return;
            }

            // 책 검색
            Data.Book searchResult = SearchBook(attribute, search);
            if (searchResult == null)
            {
                return;
            }
            // 로그 기록
            DB.InsertLog(student.StudentNo, search, "도서 검색");
            // 찾은 책 대여
            Rental(searchResult.ISBN);
        }
Ejemplo n.º 8
0
        // 반납할 도서 객체와 반납 회원 객체를 받아 책을 반납처리한다.
        public void Return(Data.Book book, Data.Member rentalMember)
        {
            book.Rental = false;
            for (int i = 0; i < rentalHistoryList.Count; i++)
            {
                RentalHistory temp = (RentalHistory)rentalHistoryList[i];
                // 빌린 도서 목록에서 제외함으로 인해 반납처리됨
                if (temp.GetBook().Equals(book))
                {
                    rentalHistoryList.Remove(temp);
                    break;
                }
            }
            // 회원의 대출 도서 목록에서도 제외
            rentalMember.rentalBookList.Remove(book);
            Console.WriteLine("\n   반납되었습니다.");

            inputProcessor.PressAnyKey();
            Console.Clear();
        }
Ejemplo n.º 9
0
 // 매개변수로 빌릴 책 객체와 빌리는 회원 객체를 받고 대출 처리를 한다.
 public void Rental(Data.Book book, Data.Member rentalMember)
 {
     if (book.Rental)    // 책이 대출중이면
     {
         Console.WriteLine("\n   현재 선택하신 책은 대출 중입니다.");
         inputProcessor.PressAnyKey();
         Console.Clear();
     }
     else  //  책이 보유 중 이면
     {
         // 대출 도서로 추가하고 대출 상태로 변경
         RentalHistory rentalBook = new RentalHistory(book);
         rentalHistoryList.Add(rentalBook);
         rentalMember.rentalBookList.Add(book);
         book.Rental = true;
         Console.WriteLine("\n   대출되었습니다.\n   반납 기한은 " + rentalBook.getDueDay() + "까지 입니다.");
         inputProcessor.PressAnyKey();
         Console.Clear();
     }
 }
Ejemplo n.º 10
0
        // 책을 도서목록에 추가한다.
        public void InsertBook(Data.Book newBook)
        {
            if (bookKeepList.IsThereBook(newBook.Name, newBook.Writer))
            {
                Console.Write("이미 등록된 책입니다.");
                inputProcessor.PressAnyKey();
            }
            else
            {
                // 도서 번호를 만든다.
                newBook.BookNo = "";
                for (int i = 0; i < 6 - (bookNumber + "").Length; i++)
                {
                    newBook.BookNo += "0";
                }
                newBook.BookNo += (bookNumber + "");
                bookNumber++;

                // 책 리스트에 추가한다.
                bookKeepList.Insert(newBook);
            }
        }
Ejemplo n.º 11
0
        // 도서 추가화면 출력
        public Data.Book AddBookScreen()
        {
            Data.Book newBook = new Data.Book();
            Console.SetWindowSize(42, 25);
            Console.Clear();
            LibraryBanner();
            Console.WriteLine("\n\t\t<도서 추가>");
            Console.WriteLine("\n     도서명 > ");
            Console.WriteLine("\n     출판사 > ");
            Console.WriteLine("\n       저자 > ");

            // 각각 항목들에 대해 문자열을 입력받는다.
            Console.SetCursorPosition(14, 11);
            newBook.Name = inputProcessor.ReadAndCheckString(25, 25, 14, 11, false);
            Console.SetCursorPosition(14, 13);
            newBook.Company = inputProcessor.ReadAndCheckString(15, 25, 14, 13, true);
            Console.SetCursorPosition(14, 15);
            newBook.Writer = inputProcessor.ReadAndCheckString(20, 25, 14, 15, false);

            Console.Clear();
            return(newBook);
        }
Ejemplo n.º 12
0
 // 책을 연장 시도한다.
 public void Extension(Data.Book book)
 {
     for (int i = 0; i < rentalHistoryList.Count; i++)
     {
         RentalHistory temp = (RentalHistory)rentalHistoryList[i];
         // 연장하려는 도서객체와 일치하면 연장을 시도한다.
         if (temp.GetBook().Equals(book))
         {
             if (temp.Extend())
             {
                 Console.WriteLine("\n   연장되었습니다.");
                 Console.WriteLine("\n   반납 기한은 " + temp.getDueDay() + "입니다.");
             }
             else
             {
                 Console.WriteLine("\n   연장 실패하였습니다.");
             }
             break;
         }
     }
     inputProcessor.PressAnyKey();
     Console.Clear();
 }
Ejemplo n.º 13
0
        // 파싱한 뒤 검색된 정보들을 객체에 담는다
        public List <Data.Book> Parsing(string responseFromServer)
        {
            List <Data.Book> books = new List <Data.Book>();
            var json  = JObject.Parse(responseFromServer);
            var items = json["items"];

            for (int idx = 0; idx < items.Count(); idx++)
            {
                Data.Book book = new Data.Book();
                book.ISBN    = items[idx]["isbn"].ToString();
                book.Name    = WebUtility.HtmlDecode(items[idx]["title"].ToString());
                book.Company = items[idx]["publisher"].ToString();
                book.Writer  = items[idx]["author"].ToString();
                // 가격이 소수점으로 들어오는 거 방지
                book.Price       = int.Parse(items[idx]["price"].ToString().Split('.')[0]);
                book.Pubdate     = items[idx]["pubdate"].ToString();
                book.Description = WebUtility.HtmlDecode(items[idx]["description"].ToString());
                book.Count       = 9999;
                books.Add(book);
            }

            return(books);
        }
Ejemplo n.º 14
0
        // 책의 세부사항을 출력한다
        public void PrintDetailBookInformation(Data.Book book)
        {
            int    startPoint  = 0;
            string description = book.Description;

            Console.Clear();
            Console.WriteLine("\n   ISBN > " + book.ISBN);
            Console.WriteLine("\n 도서명 > " + book.GetName());
            Console.WriteLine("\n 출판사 > " + book.GetCompany());
            Console.WriteLine("\n 저  자 > " + book.GetWriter());
            Console.WriteLine("\n 가  격 > " + book.Price + "원");
            Console.WriteLine("\n 출판일 > " + book.Pubdate);
            Console.WriteLine("\n <설  명>");

            // 설명 문장 나누기
            while (description.Length > 45)
            {
                Console.WriteLine("   " + description.Substring(startPoint, 45));
                description = description.Substring(startPoint + 45);
            }
            Console.WriteLine("   " + description);
            Console.ReadKey();
        }
Ejemplo n.º 15
0
 public void ReportDamaged(Data.Book book, Data.Client client, DateTime date)
 {
     dataContext.books.Books[book.Id].State.Damaged(date, client);
 }
Ejemplo n.º 16
0
 //books
 public void AddBook(Data.Book book)
 {
     repository.AddBook(book);
 }
Ejemplo n.º 17
0
 public void EditBook(Data.Book book)
 {
     repository.EditBook(book);
 }
Ejemplo n.º 18
0
 public void ReturnEvent(int id, Data.Client client, DateTime date, Data.Book book)
 {
     //book.State.Avaiable(date, client);
     dataContext.books.Books[book.Id].State.Avaiable(date, client);
 }
Ejemplo n.º 19
0
 public void AddBook(Data.Book book)
 {
     dataContext.books.Books.Add(book.Id, book);
 }
Ejemplo n.º 20
0
 public void RentEvent(int id, Data.Client client, DateTime date, Data.Book book)
 {
     //book.State.Rented(date, client);
     dataContext.books.Books[book.Id].State.Rented(date, client);
 }
Ejemplo n.º 21
0
 public void ReturnEvent(int id, Data.Client client, DateTime date, Data.Book book)
 {
     repository.ReturnEvent(id, client, date, book);
 }
Ejemplo n.º 22
0
 //states
 public bool CheckAvaiability(Data.Book book)
 {
     return(repository.CheckAvaiability(book));
 }
Ejemplo n.º 23
0
 // 책을 DB에 추가한다(Overriding)
 public bool InsertBook(Data.Book book)
 {
     return(InsertBook(book.ISBN, book.GetName(), book.GetCompany(), book.GetWriter(), book.Price, book.Count, book.Description, book.Pubdate));
 }
Ejemplo n.º 24
0
 public void ReportRepaired(Data.Book book, Data.Client client, DateTime date)
 {
     repository.ReportRepaired(book, client, date);
 }
Ejemplo n.º 25
0
 public void ReportRepaired(Data.Book book, Data.Client client, DateTime date)
 {
     dataContext.books.Books[book.Id].State.Avaiable(date, client);
 }
Ejemplo n.º 26
0
 public bool CheckIfDamaged(Data.Book book)
 {
     return(repository.CheckIfDamaged(book));
 }