2011-01-18 2 views
1

저는 프로그램 세계에 새로운 것이므로 지금 당장 붙어 있습니다. 제목, 저자, 출판사, 카테고리 (Dewey 10 진수) 및 발행일이 포함 된 서적을 디자인한다고 가정합니다. booklist에 대해서는 새로운 서적 개체를 추가하는 방법, 제목이 주어진 서적을 찾고, 서적 개체를 제거하고, 모든 서적 개체를 표시하는 방법을 알아야합니다. booklistUI의 경우, 메뉴, 명령 프로세서, 레코드 추가, 레코드 제거, 모든 레코드 표시가 필요합니다. 나는 내가 어디에서 시작해야 할까에 관해서 일종의 분실 되었는가? 나는 지금까지 그 중 일부를 가지고있다 ... 그것이 맞습니까? 당신이 컴파일을 수정하면 -C++을위한 3 권의 책 클래스 디자인하기

이것은 내가 지금까지

/* 
    Title:   CSU Bodie.cpp 
    Description: implements three classes to make a simple searchable list of the library holdings. 
*/ 
#include <iostream>; 
#include <string>; 
#include <vector>; 
using namespace std; 

//Define a name class... 

class ShortName { 
    string FirstName; 
    string LastName; 

public: 
    ShortName(); //Define a default constructor... 
    ShortName(string, string); //...and an initializing one... 

    //Define some mutators... 

    void SetFirst(string First) { FirstName = First; } 
    void SetLast(string Last) { LastName = Last; } 

    //...and some accessors... 

    string GetFirst() { return FirstName; } 
    string GetLast() { return LastName; } 

}; 

ShortName::ShortName() 
{ 
    FirstName = ""; 
    LastName = ""; 
} 

ShortName::ShortName(string First, string Last) 
{ 
    FirstName = First; 
    LastName = Last; 
} 

//Define a list class... 

class ShortNameList { 
    vector<ShortName> List; //Create a specific sized list... 

public: 
    ShortNameList() {;} //Nothing for it to do at this point... 

    void AddRecord(string, string); 
    void ShowList(); 
}; 

void ShortNameList::AddRecord(string First, string Last) 
{ 
    ShortName NameBuffer; 

    NameBuffer.SetFirst(First); 
    NameBuffer.SetLast(Last); 

    List.push_back(NameBuffer); 
} 

void ShortNameList::ShowList() 
{ 
    int K; 
    for(K = 0 ; K < List.size() ; K++) 
    cout << List[K].GetFirst() << " " List[K].GetLast() << endl; 
} 

class ShortNameUI { 
    ShortNameList Collection; 

public: 
    ShortNameUI() {;} 
     void Menu(); 
    void AddNewRecord(); 
    void RunIT(); 
}; 


//This gives us options... 

void ShortNameUI::Menu() 
{ 
    cout << "Choices..." << endl; 
    cout << "====================================================================" << endl; 
    cout << "\\tAdd.........allows the user to enter names." << endl; 
    cout << "\\tDisplay......shows the names." << endl; 
    cout << "\\tQuit.........terminates the program" << endl; 
    cout << "====================================================================" << endl; 
} 

void ShortNameUI::RunIT() 
{ 
    string Command; 

    while(true) { 
     Menu(); 
      cout << "Command: "; 
       getline(cin, Command); 

      if(Command == "Quit") 
       break; 
      else if(Command == "Add") 
       AddNewRecord(); 
      else if(Command == "Display") 
       Collection.ShowList(); 
      } 
} 

void ShortNameUI::AddNewRecord() 
{ 
    string First, Last; 

    cout << "Enter Names Below, Stop To Quit" << endl; 
    while(true) { 
     cout << "First Name: "; 
        getline(cin, First); 
     if(First == "Stop") 
      break; 
     cout << "Last Name: "; 
        getline(cin, Last); 
     if(Last == "Stop") 
      break; 
     Collection.AddRecord(First, Last); 
      } 
} 

int main() 
{ 
    ShortNameUI NameList; 
    NameList.RunIT(); 
} 



} 
+0

귀하가 게시 한 코드가 귀하의 과제 수행과 관련이있는 것을 이해하지 못합니다. 당신이 보여준 코드가 있습니까? 성과 이름이 필요한 설명에서 누락 된 것이 있습니까? 그러나 표준 템플릿 라이브러리 컨테이너를 살펴봄으로써 시작해야 할 작업을 찾아야합니다. – GWW

+0

'#include '또는 다른 전처리 지시문 뒤에 세미콜론을 쓸 필요가 없습니다. –

+0

해시 테이블에 요소를 해싱하고 저장하는 방법을 배웠습니까? –

답변

0

예, 당신이해야하는 것은 좋은 시작이있을 것입니다. 전처리 지시어는 문장이 아니므로 끝내면 안됩니다. 파일 끝 부분에 줄무늬가 있습니다.

전체 책 세부 정보를 추가하는 것이 거의 동일하게 보입니다. 중요한 것은 제목에서 책을 찾아야한다는 것입니다. 가장 간단한 방법은 벡터 <>에서 도서를지도 <>에 저장하는 것입니다.

typedef std::string Title; 
class BookDetails 
{ 
// etc. 
}; 
typedef std::map<Title, BookDetails> BookCollection; 

사용 방법을 보려면 std :: map <에서 설명서를 찾아보십시오.

+0

도움을 주셔서 감사합니다! – Brian

0

값을 전달하는 대신 매개 변수를 참조로 전달하십시오. 예를 들면. 대신

void SetFirst(string First);

당신이 슬픔에서 당신을 저장합니다 값이 SetFirst(const string& First);

같은 함수 내부에서 변경하지 않을 것을 확신하는 경우 시도는 여전히 void SetFirst(string& First);

더 나은 사용 후에.

개발중인 콘솔 응용 프로그램입니까, Windows 응용 프로그램입니까? 콘솔 응용 프로그램 UI가 곧장 전달되지만 Windows 응용 프로그램의 경우 MFC 또는 순수한 Win32를 사용해야하는 경우.

+0

좋습니다, 고마워요! 콘솔 응용 프로그램을 사용하고 있습니다. – Brian