2011-01-18 1 views
1

私はプログラムの世界ではとても新しいので、今は固執しています。私は、タイトル、著者、出版社、カテゴリー(Dewey小数)、および出版日を含む本のレコードを設計すると仮定しています。ブックリストについては、新しいブックレコードオブジェクトを追加する方法、タイトルが与えられたブックレコードを見つける方法、ブックレコードオブジェクトを削除する方法、およびすべてのブックレコードオブジェクトを表示する方法が必要です。 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

関連する問題