我对程序世界很陌生,我现在卡住了。我想设计一个包含标题,作者,出版商,类别(杜威十进制)和出版日期的书籍记录。对于booklist我需要知道如何添加新的bookrecord对象,找到给定标题的书记录,删除bookrecord对象,并显示所有bookrecord对象。对于booklistUI,我需要菜单,命令处理器,添加记录,删除记录,显示所有记录。我有点迷失在哪里,我应该如何开始呢?到目前为止我确实有一些......它是否正确?
这是我到目前为止所拥有的
/*
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 :(得分:0)
是的,一旦你修复编译,你所拥有的是一个良好的开端。 预处理程序指令不是语句,因此不应该终止; 文件末尾有一个迷路。
您似乎可以添加完整的书籍细节将大致相同。关键是你需要从标题中找到一本书。最简单的方法是从矢量&lt;&gt;更改将图书存储到地图&lt;&gt;。
typedef std::string Title;
class BookDetails
{
// etc.
};
typedef std::map<Title, BookDetails> BookCollection;
查看std :: map&lt;&gt;上的文档看它是如何使用的。
答案 1 :(得分:0)
请尝试将参数作为参考传递,而不是传递值。例如。
代替
void SetFirst(string First);
尝试使用
void SetFirst(string& First);
更好的是,如果您确定该函数内部的值不会改变,请使用SetFirst(const string& First);
这会让你免于悲伤。
这是您正在开发的控制台应用程序或Windows应用程序吗?如果控制台应用程序的UI将是直接的,但如果是Windows应用程序,则必须使用MFC或纯Win32。