Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

C++ Assignment I have to write a menu-driven program that updates the binary inventory file, inventory.dat. The information reflected in the Struct is correct. It

C++ Assignment I have to write a menu-driven program that updates the binary inventory file, inventory.dat. The information reflected in the Struct is correct.

It must implement the following functions:

a) int showMenu (displays the menu, inputes the selection and validates the user's selection)

b) void printFile (fstream&); (clear the eof flag, seek the first record, use an eof loop to read the file into a product record and display the fileds to the screen, use a counter in the loop to count and display the record number)

c) void displayRecord (fstream&); (input user's record number selection, clear the eof flag, seek the first record, seek the indicated record number, read the file and display product info to the screen)

d) void modifyRecord(fstream&); (input user's record number selection, input new values for selected record number, clear the eof flag, seek the first record, seek the indicated record number and write new values to file to replace existing data.)

Main program must use a while loop with embedded switch statement to call appropriate functions. All operations must access the file. No array can be used. Below is the code I have so far.

#include

#include

#include

#include

using namespace std;

const int DESC_SIZE = 40;

struct Product

{

long prodNum;

char prodName[DESC_SIZE];

double price;

int qty;

};

//function prototypes

int showMenu();

void printFile(fstream&);

void displayRecord(fstream&);

void modifyRecord(fstream&);

//main function

int main()

{

long choice;

//declare a fstream file object

fstream inventory;

do

{

cjpoce =, emi();

switch choice

{

case 1: //Display product inventory file

printFile(inventory);

break;

case 2: //Display a particular product

displayRecord(inventory);

break;

case 3: //Modify a product

modifyRecord(inventory);

break;

default: //Invalid selection

cout << "Invalid selection." << endl;

}

while (choice != 4);

cout << "Thank you. Good bye." << endl;

inventory.close();

system("pause");

return 0;

}

// function that prompts user to enter choice

int menu()

{

cout << "1. Display product inventory file ";

cout << "2. Display a particular product ";

cout << "3. Modify a product ";

cout << "4. Exit the program. ";

cout << endl;

cout << "Enter Menu Choice: ";

cin >> choice;

while (choice < 1 || choice > 4)

{

cout << "Invalid selection. Please enter your choice (1 - 4): ";

cin >> choice;

}

cout << endl;

return choice;

//function printFile that opens input file in read mode and

//display all items.

void printFile(fstream &file)

{

file.open("Inventory.dat", ios::out | : ios::binary | ios::app);

cout

}

//function displayRecord that opens Inventory file in read mode and

//will prompt user to enter record number and display record.

void displayRecord

{

file.open("Inventory.dat", ios::in | ios::binary);

InventoryItem record;

cin.clear();

cout << "Enter record number to be displayed: ";

cin >> record.partNo;

file.seekp((record.partNo - 1) * sizeof(record), ios::beg);

file.read((char *)(&record), size of(InventoryItem));

cout << "Product Number: " << record.Num << endl;

cout << "Product Name: " << record.Name << endl;

cout << "Price: " << record.Price << endl;

cout << "Quantity: " << recordQuan << endl;

cout << endl;

file.close();

}

//function modifyRecord that will open file in read for reading file

//record and close and open the file and write the user entered record

//items to file to same location

void modifyRecord(fstream &file)

{

file.open("Inventory.dat", ios::in | ios::binary);

InventoryItem record;

fflush(stdin);

cout << "Enter record number to be modified: ";

cin >> record.partNo

//move to the record to read item

file.seekg((record.partNo - 1) * sizeof(InventoryItem), ios::beg);

file.read((char *)(&record), sizeof(InventoryItem));

cout << "Product Number: " << record.Num << endl;

cout << "Product Name: " << record.Name << endl;

cout << "Price: " << record.Price << endl;

cout << "Quantity: " << record.Quan << endl;

cout << endl;

//close file

file.close();

cout << "Enter the new data." << endl;

cin.ingnore();

cin.getline(record.Num);

do

{

cout << "Product Number: ";

cin >> record.Num

if (record.Num < 0)

cout << "Invalid Product Number" << endl;

} while (record.Num < 0);

do

cout << "Product Name: "

cin >> record.Name;

cout << "Price: "

cin >> record.Price;

cout >> "Quantity: "

cin >> record.Quan;

//open file in write mode

file.open("Inventory.dat", ios::out | ios::binary);

// move back to the beginning of the record

file.seekg((record.partNo - 1) * sizeof(InventoryItem), ios::beg);

//write new record on old record

file.write((char*)(&record), sizeof(InventoryItem));

file.close();

}

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

From Herds To Insights Harnessing Data Analytics For Sustainable Livestock Farming

Authors: Prof Suresh Neethirajan

1st Edition

B0CFD6K6KK, 979-8857075487

More Books

Students also viewed these Databases questions

Question

How did recent communication theorists build on Aristotle's model?

Answered: 1 week ago

Question

=+designing international assignment C&B packages.

Answered: 1 week ago

Question

sharing of non-material benefits such as time and affection;

Answered: 1 week ago