Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <stdlib.h>
- #include <string.h>
- #include <iomanip> // Brandon Poling
- using namespace std; // Comp-1102 Project 3b
- void getFile(char fileName[]);
- void menuDisplay();
- void processMenuChoice(char choice, char fileName[]);
- void printDetailedReport(char fileName[]);
- void printExceptionReport(char fileName[]);
- void printSummaryReport(char fileName[]);
- void printDescription(char fileName[]);
- void printColumnHeadings();
- void getInfoFromFile(ifstream& dataFile, char stockNumber[], char description[], float& cost, float& price, int& quantity);
- void trimSpaces(char str[]);
- void formatLines(ifstream& dataFile, char stockNumber[], char description[], float& cost, float& price, int& quantity, int& count);
- int main()
- {
- ifstream dataFile;
- char choice;
- char fileName[30];
- getFile(fileName);
- menuDisplay();
- cin >> choice;
- cin.ignore();
- while ( (choice != 'E') && (choice != 'e'))
- {
- processMenuChoice(choice, fileName);
- menuDisplay();
- cin >> choice;
- cin.ignore();
- }
- }
- void getFile(char fileName[])
- {
- ifstream dataFile;
- do
- {
- cout << "\n\nEnter name of file: ";
- cin.getline(fileName, 30, '\n');
- if (strcmp(fileName, "") == 0)
- {
- exit(1);
- //strcat(fileName, "stock.txt");
- }
- dataFile.open(fileName);
- if (dataFile.fail())
- {
- cout << "\nError in opening file.";
- }
- }
- while (dataFile.fail());
- }
- void menuDisplay()
- {
- cout << "\nA. Detail Report";
- cout << "\nB. Exception Report";
- cout << "\nC. Summary Report";
- cout << "\nD. Display Description of Item";
- cout << "\nE. Exit";
- cout << "\n\nEnter a choice: ";
- }
- void processMenuChoice(char choice, char fileName[])
- {
- if (choice == 'A' || choice == 'a')
- {
- printDetailedReport(fileName);
- }
- else if (choice == 'B' || choice == 'b')
- {
- printExceptionReport(fileName);
- }
- else if (choice == 'C' || choice == 'c')
- {
- printSummaryReport(fileName);
- }
- else if (choice == 'D' || choice == 'd')
- {
- printDescription(fileName);
- }
- else
- {
- cout << "\nYou entered an invalid choice." << endl;
- }
- }
- void printDetailedReport(char fileName[])
- {
- ifstream dataFile;
- char stockNumber[6];
- char description[20];
- float cost;
- float price;
- int quantity;
- int count;
- dataFile.open(fileName);
- if(dataFile.fail())
- {
- cout << "Error in opening file " << fileName << endl;
- cout << "\n\nEnter name of file: ";
- cin.getline(fileName, 30, '\n');
- }
- system("CLS");
- count = 0;
- printColumnHeadings();
- while (!dataFile.eof())
- {
- count++;
- if (count > 10)
- {
- count = 1;
- system("PAUSE");
- cout << endl;
- printColumnHeadings();
- }
- getInfoFromFile(dataFile, stockNumber, description, cost, price, quantity);
- if (strcmp(stockNumber, "") != 0)
- {
- formatLines(dataFile, stockNumber, description, cost, price, quantity, count);
- }
- }
- dataFile.close();
- }
- void printExceptionReport(char fileName[])
- {
- ifstream dataFile;
- char stockNumber[6];
- char description[20];
- float cost;
- float price;
- int quantity;
- int count;
- int minimum;
- dataFile.open(fileName);
- while (dataFile.fail())
- {
- cout << "Error in opening file " << fileName << endl;
- cout << "\n\nEnter name of file: ";
- cin.getline(fileName, 30, '\n');
- dataFile.open(fileName);
- }
- cout << "Enter minimum quantity of stock: ";
- cin >> minimum;
- system("CLS");
- count = 0;
- printColumnHeadings();
- while (!dataFile.eof())
- {
- getInfoFromFile(dataFile, stockNumber, description, cost, price, quantity);
- if ((quantity < minimum) && (strcmp(stockNumber, "") != 0))
- {
- count++;
- formatLines(dataFile, stockNumber, description, cost, price, quantity, count);
- }
- }
- if (count == 0) // If count wasn't incremented, no stock below the user's minimum
- {
- cout << "\n--------------------------No Stock Below Your Minimum-----------------------\n\n";
- }
- dataFile.close();
- }
- void printSummaryReport(char fileName[])
- {
- ifstream dataFile;
- char stockNumber[6];
- char description[20];
- float cost;
- float price;
- int quantity;
- float temp;
- float largest;
- char largestStockNum[6];
- char largestDesc[20];
- float secondLargest;
- char secLargestStockNum[6];
- char secLargestDesc[20];
- dataFile.open(fileName);
- while (dataFile.fail())
- {
- cout << "Error in opening file " << fileName << endl;
- cout << "\n\nEnter name of file: ";
- cin.getline(fileName, 30, '\n');
- dataFile.open(fileName);
- }
- system("CLS");
- largest = 0;
- secondLargest = 0;
- while (!dataFile.eof())
- {
- getInfoFromFile(dataFile, stockNumber, description, cost, price, quantity);
- temp = (price - cost) * quantity;
- if (temp > largest)
- {
- secondLargest = largest;
- strcpy(secLargestStockNum, largestStockNum);
- strcpy(secLargestDesc, largestDesc);
- largest = temp;
- strcpy(largestStockNum, stockNumber);
- strcpy(largestDesc, description);
- }
- else if ((temp > secondLargest) && (temp < largest))
- {
- secondLargest = temp;
- strcpy(secLargestStockNum, stockNumber);
- strcpy(secLargestDesc, description);
- }
- }
- cout << "Largest Profit Potential" << endl;
- cout << "Stock Number: " << largestStockNum << endl;
- cout << "Description: " << largestDesc << endl;
- cout << endl;
- cout << "Second Largest Profit Potential" << endl;
- cout << "Stock Number: " << secLargestStockNum << endl;
- cout << "Description: " << secLargestDesc << endl;
- }
- ifstream dataFile;
- void printDescription(char fileName[])
- {
- ifstream dataFile;
- char stockNumber[6];
- char description[20];
- float cost;
- float price;
- int quantity;
- char userStockNum[6];
- bool found;
- dataFile.open(fileName);
- while (dataFile.fail())
- {
- cout << "Error in opening file " << fileName << endl;
- cout << "\n\nEnter name of file: ";
- cin.getline(fileName, 30, '\n');
- dataFile.open(fileName);
- }
- cout << "Enter a stock number: ";
- cin.getline(userStockNum, 6);
- system("CLS");
- found = false;
- while(!dataFile.eof())
- {
- getInfoFromFile(dataFile, stockNumber, description, cost, price, quantity);
- if ((strcmp(userStockNum, stockNumber) == 0) && (strcmp(stockNumber, "") != 0))
- {
- cout << "Match! Description: " << description << endl;
- found = true;
- }
- }
- if (found == false)
- {
- cout << "\nCouldn't find specified stock number.\n\n";
- }
- }
- void printColumnHeadings()
- {
- cout.unsetf(ios::left);
- cout << setiosflags(ios::right) << setw(7) << "Line" << " ";
- cout.unsetf(ios::right);
- cout << setiosflags(ios::left) << setw(9) << "Stock#" << setw(22) << "Description";
- cout.unsetf(ios::left);
- cout << setiosflags(ios::fixed) << setiosflags(ios::right) <<
- setw(12) << "Cost" << setw(12)<< "Price" << setw(12) << "Quantity" << endl;
- }
- void getInfoFromFile(ifstream& dataFile, char stockNumber[], char description[], float& cost, float& price, int& quantity)
- {
- dataFile.get(stockNumber, 6);
- trimSpaces(stockNumber);
- dataFile.get(description, 20);
- trimSpaces(description);
- dataFile >> cost >> price >> quantity;
- dataFile.ignore(99, '\n');
- }
- void trimSpaces(char str[])
- {
- int n;
- bool done;
- n = strlen(str) - 1;
- done = false;
- while (!done)
- {
- if (n < 0)
- {
- done = true;
- }
- else if (str[n] != 32) // 32 = space character
- {
- done = true;
- }
- else
- {
- n--;
- }
- }
- str[n+1] = '\0';
- }
- void formatLines(ifstream& dataFile, char stockNumber[], char description[], float& cost, float& price, int& quantity, int& count)
- {
- cout.unsetf(ios::left);
- cout << setiosflags(ios::right) << setw(7) << count << ") ";
- cout.unsetf(ios::right);
- cout << setiosflags(ios::left) << setw(9) << stockNumber << setw(22) << description;
- cout.unsetf(ios::left);
- cout << setiosflags(ios::fixed) << setiosflags(ios::right) << setprecision(2) <<
- setw(12) << cost << setw(12)<< price << setw(12) << quantity << endl;
- }
Add Comment
Please, Sign In to add comment