| | |
random-access files
Please support our C++ advertiser: Intel Parallel Studio Home
![]() |
•
•
Join Date: Jul 2005
Posts: 47
Reputation:
Solved Threads: 0
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?
C++ Syntax (Toggle Plain Text)
/* 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(); }
•
•
Join Date: Jul 2005
Posts: 244
Reputation:
Solved Threads: 5
Nice to hear from you again. Looks like you've really improved!
Unfortunately, my schedule is much tighter these days, so I don't have the time to help you out explicitly, but perhaps this may help...
http://cplus.about.com/od/beginnerct.../aa051802a.htm
It's a simple tutorial for file I/O.
I hope it's helpful.
Unfortunately, my schedule is much tighter these days, so I don't have the time to help you out explicitly, but perhaps this may help...
http://cplus.about.com/od/beginnerct.../aa051802a.htm
It's a simple tutorial for file I/O.
I hope it's helpful.
•
•
Join Date: Jul 2005
Posts: 47
Reputation:
Solved Threads: 0
•
•
•
•
Originally Posted by Drowzee
Nice to hear from you again. Looks like you've really improved!
Unfortunately, my schedule is much tighter these days, so I don't have the time to help you out explicitly, but perhaps this may help...
http://cplus.about.com/od/beginnerct.../aa051802a.htm
It's a simple tutorial for file I/O.
I hope it's helpful.
It's nice of you to follow my progress. I'd hope that I'm better now. But I'm still only in 2nd semester of C++. Still have much to learn.
Anyway, thanks for the link. I just figured out my coding mistakes. But I'll take a look at the site. Attaining more knowledge is always good.
Thanks again
![]() |
Similar Threads
- Forms in Random access files (Visual Basic 4 / 5 / 6)
- Deleting from Random Access File? (VB.NET)
- Random Access Files Help!! (Visual Basic 4 / 5 / 6)
- Creating a Address Book using Random Access Files (Visual Basic 4 / 5 / 6)
Other Threads in the C++ Forum
- Previous Thread: access to variables
- Next Thread: My First Multi-Threaded Code! What Do You Think?
| Thread Tools | Search this Thread |
api array arrays based beginner binary bitmap c++ c/c++ calculator char char* class classes coding compile compiler console conversion convert count data database delete desktop developer directshow dll dynamiccharacterarray email encryption error file forms fstream function functions game generator getline google graph homeworkhelper iamthwee ifstream input int integer java lib linkedlist linux list loop looping loops map math matrix memory multiple news node number numbertoword output parameter pointer problem program programming project proxy python random read recursion recursive reference return rpg sorting string strings struct template templates text tree unix url vector video visualstudio win32 windows winsock word wordfrequency wxwidgets





