![]() |
![]() |
![]() |
|||||
![]() |
![]() |
![]() |
![]() |
![]() |
|||
| Welcome
to Tech Support Forum home to more then 136,000 problems solved. Issues
have included: Spyware, Malware, Virus Issues, Windows, Microsoft,
Linux, Networking, Security, Hardware, and Gaming Getting your
problem solved is as easy as: 1. Registering for a free account 2. Asking your question 3. Receiving an answer Registered members: * See fewer ads. * And much more..
|
| Want to know how to post a question? click here | Having problems with spyware and pop-ups? First Steps |
|
|||||||
| Programming A discussion forum for programs and programming used in tech-related businesses. |
![]() |
|
|
LinkBack | Thread Tools |
|
|
#1 (permalink) |
|
Registered User
Join Date: Jul 2005
Posts: 16
OS: XP
|
random-access files
Hi, I'm doing this programming exercise for my C++ class. I'm using Microsoft Visual C++. for some reason, the program wouldn't save my data. Can someone please take a look at my code and tell me what I did wrong?
Code:
/*
Chapter 12 HOMEWORK
Dung Tran
CS 116 C++ programming
Chapter 12 Programming Exercise #11 Inventory Program
Requirements:
Write a program that uses a structure to store these datas in a file:
- item Description
- Quantity on hand
- wholesale cost
- retail cost
The program should have a menu that allows the usess to perform the following tasks:
- add new records to the file
- display any record in the file
- change any record in the file
*/
#include <iostream>
#include <fstream>
using namespace std;
// Declaration of InventoryItem structure
struct InventoryItem
{
char desc[51]; //item description
int qty; //quantity on hand
float wholesale; //wholesale price
float retail; //retail price
};
//Function Prototypes
int menu();
void AddRecord(fstream &);
void DisplayRecord(fstream &);
void ChangeRecord(fstream &);
int main()
{
int choice;
fstream inventory ("Inventory.dat", ios::out | ios::binary);
InventoryItem record = {" ", 0, 0.0};
//writing the blank records
for (int count = 0; count < 5; count++)
{
inventory.write(reinterpret_cast<char *>(&record), sizeof(record));
}
//inventory.read(reinterpret_cast<char *>(&record), sizeof(record));
inventory.close();
inventory.open("Inventory.dat", ios::out | ios::binary);
do
{
choice = menu();
switch (choice)
{
case 1: AddRecord(inventory);
break;
case 2: DisplayRecord(inventory);
break;
case 3: ChangeRecord(inventory);
break;
case 4: cout << "Exiting Program...\n\n";
}
}while (choice != 4);
inventory.close();
return 0;
}
int menu ()
{
int selection;
cout << "What would you like to do?\n";
cout << "1) add a new record to the file\n";
cout << "2) view a record in the file\n";
cout << "3) change a record in the file\n";
cout << "4) Exit Program\n\b";
cout << "Please enter 1, 2, 3, or 4: ";
cin >> selection;
while (selection< 1 || selection > 4)
{
cout << "Invalid Choice!!\n";
cin >> selection;
}
return selection;
}
void ChangeRecord(fstream &file)
{
fstream inventory ("Inventory.dat", ios::out | ios::binary);
InventoryItem record;
long recNum;
// Get the record number of the desired record.
cout << "Which record do you want to edit? ";
cin >> recNum;
// Move to the record and read it.
inventory.seekg(recNum * sizeof(record), ios::beg);
inventory.read(reinterpret_cast<char *>(&record),
sizeof(record));
// Display the record contents
cout << "Description: ";
cout << record.desc << endl;
cout << "Quantity: ";
cout << record.qty << endl;
cout << "Wholesale Price: ";
cout << record.wholesale << endl;
cout << "Retail Price: ";
cout << record.retail << endl;
// Get the new record data.
cout << "Enter the new data:\n";
cout << "Description: ";
cin.ignore();
cin.getline(record.desc, 31);
cout << "Quantity: ";
cin >> record.qty;
cout << "Wholesale Price: ";
cin >> record.wholesale;
cout << "Retail Price: ";
cin >> record.retail;
// Move back to the beginning of this record's position.
inventory.seekp(recNum * sizeof(record), ios::beg);
// Write the new record over the current record.
inventory.write(reinterpret_cast<char *>(&record),
sizeof(record));
// Close the file.
inventory.close();
}
void DisplayRecord(fstream &file)
{
fstream inventory ("Inventory.dat", ios::out | ios::binary);
InventoryItem record;
long recNum;
// Get the record number of the desired record.
cout << "Which record would you like to open? ";
cin >> recNum;
// Move to the record and read it.
inventory.seekg(recNum * sizeof(record), ios::beg);
inventory.read(reinterpret_cast<char *>(&record),
sizeof(record));
// Display the record contents
cout << "Description: ";
cout << record.desc << endl;
cout << "Quantity: ";
cout << record.qty << endl;
cout << "Wholesale Price: ";
cout << record.wholesale << endl;
cout << "Retail Price: ";
cout << record.retail << endl;
//clear any error state
if (file.fail())
file.clear();
//closing the file
file.close();
}
void AddRecord(fstream &file)
{
cout << "Please enter the information for the new data: \n";
fstream inventory ("Inventory.dat", ios::out | ios::binary);
InventoryItem record;
//Info of the new data
cout << "Description: ";
cin.ignore();
cin.getline(record.desc, 31);
cout << "Quantity: ";
cin >> record.qty;
cout << "Wholesale Price: ";
cin >> record.wholesale;
cout << "Retail Price: ";
cin >> record.retail;
inventory.write(reinterpret_cast<char *>(&record),
sizeof(record));
//closing the file
file.close();
}
|
|
|
|
| Important Information |
|
Join the #1 Tech Support Forum Today - It's Totally Free!
TechSupportForum.com is a leading support website for your computer needs. We offer free, friendly and personalized computer support. Why pay to have your computer fixed when you can do it for free. Join TechSupportforum.com Today - Click Here |
![]() |
| Thread Tools | |
|
|