본문 바로가기

[ARM]링크드리스트 하기전에..

반응형
#include <iostream>
#include <iomanip>  //setw를 쓰기 위해 사용하는 헤더파일 
#include <string>

using namespace std;
enum MENU {MENU_ADD_BOOK , MENU_PRINT_BOOK  , MENU_MODIFY_BOOK ,MENU_SEARCH_BOOK, MENU_DELETE_BOOK, MENU_QUIT};  //,




//메뉴를 보여주고 고를 때 까지 반복한다.
  MENU ShowMenu()
  {
       while(1)
       {
            //menu 
            cout <<"##############################\n";
            cout <<"      도서관리 프로그램       \n";
            cout <<"------------------------------\n";
            cout <<"           메  뉴             \n";
            cout <<"------------------------------\n";
            cout <<"         1.입  력             \n";
            cout <<"         2.출  력             \n";
            cout <<"         3.수  정             \n";
            cout <<"         4.검  색             \n";
            cout <<"         5.삭  제             \n";
            cout <<"         0.종  료             \n";
            cout <<"##############################\n";
            cout <<"메뉴선택 : ";
            
            
            //작업 입력 받기.
            char select;
            cin >> select;
            
            
            //선택된 값에 따라 처리
           switch(select)
           {
                         case '1' :
                              return MENU_ADD_BOOK;
                         case '2' :
                              return MENU_PRINT_BOOK;
                         case '3' :
                              return MENU_MODIFY_BOOK;
                         case '4' :
                              return MENU_SEARCH_BOOK;
                         case '5' :
                              return MENU_DELETE_BOOK;
                         case '0' :
                              return MENU_QUIT;
                         default:
                                 // 그 외의 선택
                         cout << "\n올바른 값을 입력하세요.\n"
                         break;
           }
         
           
    }
                                 
                         // 이 문장은 절대 출력할 일 없다.
                         return MENU_QUIT;
}
int sNo;                 
struct Books    //책의 구조체 설정. 
{
      
      string book_title;
      string author;
      string publish_date;
      string publisher;
      string price;
      string amount;
};



//100권의 정보를 보관할 수 있는 배열의 정의
const int MAX_BOOKS = 100//MAX_BOOKS 에 100을 대입 
Books books[MAX_BOOKS]; //구조체형태의 인자를 100개를 가지는 배열 생성. 

int NumberOfBooks = 0;  //현재까지 입력된 책의 권 수.

//책 한권을 추가한다.
//반환값: 더 이상 입력할 수 없는 경우 false.
bool AddBooks()          //bool을 쓴 이유가 조건이 성립하지 않으면 flase를 반환하기 위해서. 
{
              if(MAX_BOOKS == NumberOfBooks)
              return false;
              
              
//소스코드를 간결히 하기 위해서 
//사용할 변수를 레퍼런스로 가르킨다.
Books& bk = books[NumberOfBooks];   //구조체 Books를 bk라 레퍼런스선언하면서 배열을 집어넣음. 

//해당 도서의 도서번호를 자동으로 입력한다.
sNo = NumberOfBooks + 1;

//해당 도서의 도서명   저자    츨판일    출판사     가격    수량을 입력하세요 : \n";
cout << "도서명:"
cin >> bk.book_title;

cout << "저  자:";
cin >>  bk.author;

cout << "출 판 일 :"
cin>> bk.publish_date; 

cout <<"출 판 사 :";
cin>> bk.publisher;

cout <<"책 가격 :";
cin >> bk.price;

cout <<"수량:";
cin >> bk.amount;

NumberOfBooks++;

return true;

 




//전체 도서리스트를 보여준다.
void ShowAll()
{
     cout.precision(2);     //실수출력시에 소수점이하 두자리만 출력한다. 
     cout << fixed;
     
     cout << "\n              <전체 도서목록 보기>";
     cout << "\n  도서명  저자    츨판일    출판사  가격  수량\n";
     
     for(int i = 0; i < NumberOfBooks; ++i)
     {
             //소스코드를 간결히 하기 위해 사용할 변수를 레퍼런스로 가르킨다.
             const Books& bk = books[i];   //i가 하나씩 증가하면서 해당 배열의 자료를 출력. 
             
             //해당도서의 정보를 출력한다.
             cout <<setw(7<<bk.book_title;
             cout << setw(7<<bk.author <<setw(9<<bk.publish_date;
             cout << setw(9<<bk.publisher <<setw(7<< bk.price<<setw(7);
             cout << bk.amount <<"\n";
     }




int main()
{   
    //프로그램을 종료할 떄까지 메뉴를 보여주고 작업을 처리한다.  
    while(1)
    {
            
            //메뉴를 보여준다.
            MENU select;     //열거체형 변수를 선언... 
            select = ShowMenu();       //변수에다가 Showmenu() 함수를 대입. 
            
            //선택된 값에 따라 처리 
            switch(select) 
            {
                           case MENU_ADD_BOOK:       //책 데이터 추가
                                {
                                     bool succeeded;
                                     succeeded = AddBooks();
                                
                                if(succeeded)
                                             cout << "\n 책의 내용이 올바르게 입력되었습니다. \n";
                                else
                                             cout << "\n 더 이상 입력을 할 수 없습니다. \n";
                                             
                                break;
                                }
                                
                                
                           case MENU_PRINT_BOOK:
                                {
                                      ShowAll();
                                      
                                      break;
                                }
                                
                                
                           case MENU_QUIT:
                           //종료
                           cout << "\n프로그램을 종료합니다.\n";
                           system("PAUSE");
                           return EXIT_SUCCESS;
                           return 0;
                           }
            }
            
            
            
            return 0;
                                 
                                 
             
             
    //ShowMenu();
    system("PAUSE");
    return EXIT_SUCCESS;
}

반응형

'About 프로그래밍!!! > ARM' 카테고리의 다른 글

[ARM]ADC(아날로그 to 디지털)  (0) 2010.07.13
[ARM]프로젝트(통신)  (0) 2010.07.13
[ARM] ADC  (0) 2010.07.13
[ARM]캐릭터 LCD  (0) 2010.07.09
[ARM] 캐릭터 LCD에 글자쓰기  (0) 2010.07.09
-->