0

我正在尝试制作一个按以下方式进行输入/输出的程序,请注意我还没有完成所有功能。我只需要一些关于如何开始的提示,因为我完全不知道该怎么做......任何提示/帮助将不胜感激。

输入如下:

添加爱丽丝

添加鲍勃

更新爱丽丝笔记本电脑 6000 2

输出爱丽丝

更新 Bob 桌面 18000 4

更新 Bob tabLet 4600 3

输出鲍勃

添加查理

此输入的输出:

Alice 是卖家 1。

Bob 是卖家 2。

爱丽丝以 6000 美元的价格出售了 2 台笔记本电脑。

爱丽丝:6000美元;售出 2 台笔记本电脑、0 台台式机和 0 台平板电脑。

Bob 以 18000 美元的价格卖出了 4 台台式电脑。

Bob 以 4600 美元的价格卖出了 3 台平板电脑。

鲍勃:22600 美元;售出 0 台笔记本电脑、4 台台式机和 3 台平板电脑。

查理是卖家 3。

我现在真的不知道从哪里开始......我需要能够输入命令,然后是成员函数参数的参数......但真的不知道如何合并这个......这是我的第二个月在 C++ 中,所以请注意,我真的不知道任何高级的东西。我有知识到课堂......

主要问题是如何实际使用这些......

其他重要信息:::: 1. Add - 添加命令。如果具有给定名称 (Sellername) 的卖家尚不存在且列表未满,则将具有给定名称 (Sellername) 的卖家添加到列表末尾。该名称将是一个连续的非空白字符序列。你的程序不需要检查这个。请参阅示例输出。

  1. 输出——输出命令。输出售出的计算机的总价值以及为该卖方售出的每种类型计算机的总数。如果卖家不存在,请打印适当的消息。请参阅示例输出。

  2. 更新——更新命令。使用给定的销售额和适当数量的计算机更新卖方。对于此命令: Sellername 指定销售人员的姓名;typeOfComputer 指定笔记本电脑、台式机或平板电脑;total-Dollars 表示已售出的美元金额;number-of-Computers-Sold 指定已售出的此类计算机的数量。您的程序应将 typeOfComputer 参数转换为小写,因为输入将使用混合大小写指定。[提示,包括,使用函数 char tolower(char c); // 如果 c 为大写,则以小写返回 如果卖家不存在,则打印适当的消息(并读取并丢弃数据)。请参阅示例输出。

  3. 退出 - 退出命令。打印出足以赢得美妙假期的人的名单。


#include <iostream>
#include <cctype>
#include <string>
#include "conio.h"

using namespace std;

const int MAX_SELLERS         = 5;
const int NOT_FOUND           = -1;
const float GOAL_IN_DOLLARS   = 35000.0f;
const int GOAL_IN_COMPUTERS   = 12;

class Seller
{
private:
   float salestotal;     // run total of sales in dollars
   int lapTopSold;       // running total of lap top computers sold
   int deskTopSold;      // running total of desk top computers sold
   int tabletSold;       // running total of tablet computers sold
   string name;          // name of the seller
public:
   // default constructor
   Seller()
   {
      name = "";
      salestotal = 0.0;
      lapTopSold = 0;
      deskTopSold = 0;
      tabletSold = 0;
   }
   // parameterized constructor and member functions
   // Constructor:
// Initializes the Seller's name to newname.  
// Initializes the Seller's salestotal to 0 and all integer fields to 0.
// Params: in
Seller ( string newname );

// Returns true if the seller's name is the same as nameToSearch; 
// false otherwise.
// Params: in
bool SellerHasName ( string nameToSearch );

// Returns true if the seller sold GOAL_IN_COMPUTERS computers 
// or GOAL_IN_DOLLARS sales or more.
// Params: NONE
bool WinsPrize ( );

// Adds the money and number of computers to the seller's accumulated 
// sales total and number of computers sold based on the computer type. 
// That is, if the computer type is “DESKTOP” then the desktop field is 
// updated by numComputers, if the computer type is “LAPTOP” then the 
// laptop field is updated by numComputers, if the computer type is 
// “TABLET” then the tablet fields is updated by numComputers.
// Params: in, in, in
void UpdateSales ( float totalDollars, int numComputers, 
                   string computerType );

// Print the salesperson's name, sales total, and number of 
// computers sold.
// Params: NONE
void PrintSales ( );

};

Seller::Seller(string newname)
{
   name = newname;
   salestotal = 0.0;
   lapTopSold = 0;
   deskTopSold = 0;
   tabletSold = 0;
}

bool Seller::SellerHasName ( string nameToSearch )
{
   if(name == nameToSearch)
      return true;
   else
      return false;
}

bool Seller::WinsPrize ( )
{
   if(salestotal >= GOAL_IN_DOLLARS || (lapTopSold + deskTopSold +
      tabletSold) >= GOAL_IN_COMPUTERS)
      return true;
   else 
      return false;
}

void Seller::UpdateSales( float totalDollars, int numComputers, 
                   string computerType )
{
   salestotal += totalDollars;
   if(computerType == "DESKTOP")
      deskTopSold += numComputers;
   else if(computerType == "LAPTOP")
      lapTopSold += numComputers;
   else if(computerType == "TABLET")
      tabletSold += numComputers;
}

void Seller::PrintSales ()
{
   cout << name << " " << salestotal << "; sold " << lapTopSold <<
   "LapTops, " << deskTopSold << " DeskTops, " << "and " << 
   tabletSold << " Tablets." << endl;
}
class SellerList
{
private:
   int num;  // current number of salespeople in the list
   Seller salespeople[MAX_SELLERS];
public:
   // default constructor to make an empty list 
   SellerList()
   {
      num = 0;
   }
   // member functions 

// If a salesperson with thisname is in the SellerList, this 
// function returns the associated index; otherwise, return NOT_FOUND. 
// Params: in
int Find ( string thisName );

void Add(Seller sellerName);

void Output(Seller sellerName);
};

int SellerList::Find(string thisName)
{
   for(int i = 0; i < MAX_SELLERS; i++)
      if(salespeople[i].SellerHasName(thisName))
         return i;
   return NOT_FOUND;
}
// Add a salesperson to the salespeople list IF the list is not full
// and if the list doesn't already contain the same name. 
void SellerList::Add(Seller sellerName)
{           

   Seller(sellerName);
   num++;
}
// Output the total value of computers sold and the total number of each
// type of computer sold for that seller.  If the seller does not
// exist, print an appropriate message
void SellerList::Output(Seller sellerName)
{

}

int main()
{
   return 0;
}
4

1 回答 1

0

假设您的Seller实现是正确且全面的(我没有检查它),您需要做的就是解析输入。为了解析输入,您应该逐行阅读,将每一行解释为某种命令。此命令由命令名称本身及其参数(如果有)组成。

有几种方法:

第一个

虽然未到达文件末尾:

  1. 读取一行(从当前位置到\n符号的字符串)
  2. 用空格分割它。结果的第一个元素是命令,其余是参数。Seller在执行's 方法之前,您可能需要将其转换为适当的类型。

第二个

虽然未到达文件末尾:

  1. 读一个单词(从当前位置到空白符号)。
  2. 现在你知道命令了。如果你知道这个命令,你就知道应该传递什么参数。您可以从那里的输入中提取它们或将其委托给其他函数/方法(您将对输入流的引用传递给该函数并使用该引用)

查看文档<iostream>以查看函数和方法的名称以及一些示例。

于 2013-11-11T20:38:49.233 回答