为什么我的第四个功能没有提供所需的输出?

问题描述 投票:0回答:0

我需要使用结构制作任何库存管理应用程序。在程序开始时,文件中的数据被加载到结构数组中。然后向用户提供菜单并且用户的选择调用不同的功能,例如打印库存、搜索项目、打印销售、打印销售报告、打印采购和采购报告。我需要最后三个功能的帮助,因为我不知道该怎么做。 The Purchase functions should provide this output as depicted in the pic. `

`#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
#include <fstream>
using namespace std;`

`//Structures Declaration.
struct StockRecords
{
int code;
string name;
string type;
string manufac;
double price;
double discount;
int quantity;
};
struct SalesRecord
{
int invoiceNo;
string dateTime;
string name;
int numberOfItems;
double amount;
};
struct PurchaseRecord
{
int invoiceNo;
string supplier;
string prodName;
string type;
string manufac;
double price;
double discount;
int quantity;
};

//Global Constants Indicating Array Size.
const int X = 7, Y = 7, Z = 5;

////Function for loadind stock records from file into an array
void loadStock(StockRecords stock[X][Y])
{
//Creating an ifStream object to read from files.
ifstream inFile;
//Opening the file.
inFile.open("Stock.DB");
if(!inFile)
{
cout << "Error.";
}
 else
{
for(int i=0; i<X; i++)
{
inFile >> stock[i][0].code >> stock[i][1].name >> stock[i][2].type >> stock[i][3].manufac 
 >> stock[i][4].price >> stock[i][5].discount >> stock[i][6].quantity;
}
}
 //Closing the file.
    inFile.close();
}
/******************************************
 1. Function for Printing Stock on Console.
******************************************/
void printStock (StockRecords stock[X][Y])
{
    system("cls");
    cout << "________________________________________________________________________________________________________\n\n";
    cout << "                                         ==STOCK REPORT==         \n";
    cout << "________________________________________________________________________________________________________\n\n";
    cout << "Code"<< setw(14)<<"Name"<< setw(15)<<"Type"<< setw(22)<<"Manufacturer"<< setw(7)<<"Price"
         << setw(19) << "Discount(%)"<< setw(16)<<"Quantity" << endl << endl<< left;;
    cout << fixed << showpoint << setprecision(2);
    for (int i=0; i<X; i++)
    {
        cout << setw(14)<< stock[i][0].code << left<< setw(15) << stock[i][1].name << left<< setw(14) << stock[i][2].type << left 
                    << setw(14) << stock[i][3].manufac << left << setw(16) << stock[i][4].price << left << setw(16) 
                    << stock[i][5].discount << left << setw(16) << stock[i][6].quantity;
        cout << endl;
    }
    cout << "________________________________________________________________________________________________________\n\n";
}   

/***************************************************
  2. Function for Searching for an Item in an array.
***************************************************/
void searchItem (StockRecords stock[X][Y])
{
    stringstream x;
    string option;
    system("cls");
    cout << "_______________________________________________________________________\n\n";
    cout << "                        ==ITEM SEARCH==         \n";
    cout << "_______________________________________________________________________\n\n";
    cout << "                    ENTER PRODUCT NAME OR CODE::  ";
    cin >> option;
    cout << "_______________________________________________________________________\n\n";
    
    
    
    for(int i = 0; i<X; i++)
    {
        x << stock[i][0].code;
        if(x.str () == option || stock[i][1].name == option)
        {
            cout << stock[i][0].code << "\t" << stock[i][1].name << "\t" << stock[i][2].type << "\t" << 
                    stock[i][3].manufac << "\t" << stock[i][4].price << "\t" << stock[i][5].discount << 
                    "\t" << stock[i][6].quantity;
        }   
    }   
}
/**********************************************
  3. Function for Printing Sales Transactions.
**********************************************/
void sale (StockRecords stock[X][Y], SalesRecord sales[Z])
{
    //Creating an ofStream object to write to files.
    ofstream outFile;
    
    stringstream x;
    string name, option;
    int invoice, qty, item = 1;
    double totalBill = 0, total;
    char choice;
    system("cls");
    
    cout << "_______________________________________________________________________\n\n";
    cout << "                        ==SALE TRANSACTION==         \n";
    cout << "                          CUSTOMER: ";
    
    cin >> name;
    cout << "\n\n                          Invoice No: ";
    cin >> invoice;
    
    cout << "_______________________________________________________________________\n\n";
    do
    {
        //system("cls");
        cout << "\n\n                    ENTER PRODUCT NAME OR CODE::  ";
        cin >> option;
        cout << "\n                    ENTER QUANTITY::  ";
        cin >> qty;
        cout << "\n                    ADD ANOTHER (Y/N)::  ";
        cin >> choice;
        cout << "_______________________________________________________________________\n\n";
        cout << "S.NO\tItem Name\tUnits\tPrice\tTotal\n\n";
        
        for(int i = 0; i<X; i++)
        {
            x << stock[i][0].code;
            if(x.str () == option || stock[i][1].name == option)
            {
                total = stock[i][4].price * qty;
                totalBill += total;
                cout << item << "\t" << stock[i][1].name << "\t" 
                     << stock[i][6].quantity << "\t" << stock[i][4].price<< "\t" << total << endl;
item++;
/*sales[i].invoiceNo = invoice;  
sales[i].name = name;
sales[i].numberOfItems = item;
sales[i].amount = totalBill;*/
sales[item - 2].invoiceNo = invoice;
sales[item - 2].name = name;
sales[item - 2].numberOfItems = item - 1;
sales[item - 2].amount = totalBill;
            }
        }
cout << "\n Total Bill............" << totalBill; 
//Opening the file.
 outFile.open("Sale.DB");
if(!outFile)
{
cout << "Error.";
}
outFile << "Invoice No."<< setw(18)<<left<<"Date-Time"<< setw(18)<<"Customer Name"<< setw(17)
<<"No-Of-Items"<< setw(10)<<"Amount" << endl << endl;

outFile << setw(12) << left << sales[item - 2].invoiceNo
<< setw(18) << "3/20/2021-9:39PM"
<< setw(18) << sales[item - 2].name
<< setw(17) << sales[item - 2].numberOfItems
<< setw(10) << fixed << setprecision(2) << sales[item - 2].amount
<< endl;
outFile.close();        
 }while (choice != 'N' && choice != 'n'); 
}

/**************************************************
  4. Function for Printing Sales Report on Console.
**************************************************/
void salesReport(SalesRecord sales[Z])
{
system("cls");
//Creating an ifStream object to read from files.
ifstream inFile;
//Opening the file.
inFile.open("Sale.DB");
if(!inFile)
{
cout << "Error.";
}
cout << "_______________________________________________________________________\n\n";
cout << "                        ==SALES REPORT==         \n";
cout << "_______________________________________________________________________\n\n";
    
cout << "Invoice No."<< setw(13)<<"Date-Time"<< setw(18)<<"Customer Name"<< setw(17)
<<"No-Of-Items"<< setw(10)<<"Amount" << endl << endl<< left;
while(inFile >> sales[0].invoiceNo >> sales[1].dateTime >> sales[2].name 
>> sales[3].numberOfItems >> sales[4].amount);
{
cout << fixed << showpoint << setprecision(2);
    
cout << setw(14)<< sales[0].invoiceNo << left<< setw(15) << sales[1].dateTime << left<< setw(24) 
 << sales[2].name << left << setw(14) << sales[3].numberOfItems  << left << setw(16) << sales[4].amount;
cout << endl;
}
//Closing the file.
inFile.close();
}
/**************************************************
  5. Function for Printing Purchases on Console.
**************************************************/
void purchase (StockRecords stock[X][Y])
{
StockRecords *sptr;
string sup;
int invoice;
char opt;
system ("cls");
cout << "_______________________________________________________________________\n\n";
cout << "==PURCHASE==         \n";
cout << "SUPPLIER: ";
    
cin >> sup;
cout << "\n\n Invoice No: ";
cin >> invoice;
do
    {
cout << "_______________________________________________________________________\n\n";
cout << "PRODUCT NAME::   " 
cin >>  stock[0][0].name;
cout << "\nTYPE:: " << stock[0][1].type;
cout << "\n MANUFACTURES::   " << stock[X][Y].manufac;
cout << "\nRETAILPRICE::   " << stock[X][Y].price;
//cout << "COST:: " << stock[X][Y].name;
cout << "\nDISCOUNT(%)::   " << stock[X][Y].discount;
cout << "\nQTY::   " << stock[X][Y].quantity;
cout << endl << endl;
cout << "ADD ANOTHER? (Y/N)::   ";
cin >> opt;
}while (opt != 'N' && opt != 'n');
}
`/*void purchaseReport (StockRecords stock[], int x);*/`

{
int choice;
//Constant indicating the size of structure array.
    
    
//Declaring StockRecords Structure array.
StockRecords stock[X][Y];
SalesRecord sales[Z];
    
//Function Call to load stock from file into an array.
loadStock(stock);
    
    //do{
cout << " ____________________________________________\n\n";
cout << "==Test Departmental Store==         \n";
cout << "  ____________________________________________\n\n";
cout << "  Main Menu                  \n\n";
cout << "1-Print Stock                     \n";
cout << " 2-Search Item                     \n";
cout << "3-Sale                     \n";
cout << " 4-Sale Report                     \n";
cout << " 5-Purchase                    \n";
cout << "  6-Purchase Report                     \n";
cout << "  7-Exit                     \n\n\n";
cout << "  Date & Time: Day, Month, Date, Time, Year.\n";
cout << "  ____________________________________________\n  ";
cout << "  ENTER YOUR CHOICE (Menu No)::  ";
cin >> choice;
cout << "\n\n ____________________________________________"; 
//Validating the Input.
while (choice < 1 || choice > 7)
{
cout << "\n\nInvalid Input Entered.\n Enter Again: ";
cin >> choice;
}
switch (choice)
{
case 1:
{ 
printStock(stock);     //Function Call to print stock on console.
break;   
 }
case 2: 
{
searchItem(stock);     //Function Call to search for item in the array.
break;   
}
case 3:
{ 
sale(stock,sales);     //Function Call doing the sales.
break; 
}
case 4: 
{
salesReport(sales);     //Function Call doing the sales.
break;
}
case 5:
{ 
purchase(stock);
break;
 }
/*case 6: 
{
            
}*/
        
    
} 
//}while (choice != 7);


return 0;
    
}`

这是我的源代码。请指出我的错误并指导我如何处理最后三个功能。 程序所需的功能显示在快照中FUNCTIONALITY REQUIREMENTS The Program is supposed to provide the following outputs as shown in snapshots

c++ c++11 structure
© www.soinside.com 2019 - 2024. All rights reserved.