| | |
File Processing C++
Please support our C++ advertiser: Intel Parallel Studio Home
![]() |
•
•
Join Date: Jan 2006
Posts: 6
Reputation:
Solved Threads: 0
I doing assignment about file processing.
It quite hard.
1.Sometimes can open the file sometimes cannot
2.How to overwrite y content in the file?
3. How to add Data into the file?
Brief: You know I create the file then when I close the program. After that open again. It overwrite the begin file even though I need that. Actually I want add more data into it!!
4. How to access the file?
Overall is how the program run as? How it search data from the file created?
So......................................URGENT
This week have to hand in the assignment
Help me :eek:
This is the problem code
VERY VERY SUPER URGENT
It quite hard.
1.Sometimes can open the file sometimes cannot
2.How to overwrite y content in the file?
3. How to add Data into the file?
Brief: You know I create the file then when I close the program. After that open again. It overwrite the begin file even though I need that. Actually I want add more data into it!!
4. How to access the file?
Overall is how the program run as? How it search data from the file created?
So......................................URGENT
This week have to hand in the assignment
Help me :eek:
C++ Syntax (Toggle Plain Text)
//CourseData.h #ifndef COURSEDATA_H #define COURSEDATA_H using namespace std; #include <string> class CourseData { private: int courseNumber; char courseTitle[20]; int courseyear; char courseLeader[20]; char internalTelCour[20]; int roomNumber; char departmentName[20]; public: //default CourseData constructor CourseData(int =0, string ="",int =0,string ="",string ="",int =0,string =""); //accessor functions for courseNumber void setCourseNumber( int ); int getCourseNumber() const; //accessor functions for courseTitle void setCourseTitle (string); string getCourseTitle() const; //accessor functions for courseyear void setCourseYear( int ); int getCourseYear () const; //accessor functions for courseLeader void setCourseLeader(string); string getCourseLeader() const; //accessor functions for internalTelCour void setInternalTelCour (string); string getInternalTelCour() const; //accessor functions for roomNumber void setRoomNumber (int); int getRoomNumber () const; //accessor functions for departmentName void setDepartmentName (string); string getDepartmentName () const; }; #endif >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //CourseData.cpp #include <string> #include "CourseData.h" //default CourseData constructor CourseData::CourseData(int courseNumberValue, string courseTitleValue ,int couseyearValue, string courseLeaderValue, string internalTelCourValue ,int roomNumberValue, string departmentNameValue) { setCourseNumber( courseNumberValue ); setCourseTitle (courseTitleValue); setCourseYear( couseyearValue ); setCourseLeader(courseLeaderValue); setInternalTelCour (internalTelCourValue); setRoomNumber (roomNumberValue); setDepartmentName (departmentNameValue); }//end CourseData constructor //get courseNumber value int CourseData::getCourseNumber() const { return courseNumber; }//end function getCourseNumber //set courseNumber value void CourseData::setCourseNumber( int courseNumberValue) { courseNumber=courseNumberValue; }//end function setCourseNumber //get courseTitle value string CourseData::getCourseTitle() const { return courseTitle; }//end function getCourseTitle //set CourseTitle value void CourseData::setCourseTitle (string courseTitleString ) { //copy at most 20 characters from string to courseTitle const char *courseTitleValue=courseTitleString.data(); int length=courseTitleString.size(); length=( length < 20 ? length:19); strncpy(courseTitle, courseTitleValue, length); courseTitle[length]='\0';//append null character to courseTitle }//end function setCourseTitle //get courseyear int CourseData::getCourseYear () const { return courseyear; }//end function getCourseYear //set couseyear value void CourseData::setCourseYear( int couseyearValue) { courseyear=couseyearValue; }//end function setCourseYear //get CourseLeader value string CourseData::getCourseLeader() const { return courseLeader; }//end function getCourseLeader //set CourseLeader value void CourseData::setCourseLeader (string courseLeaderString ) { //copy at most 20 characters from string to courseLeader const char *courseLeaderValue=courseLeaderString.data(); int length=courseLeaderString.size(); length=( length < 20 ? length:19); strncpy(courseLeader, courseLeaderValue, length); courseLeader[length]='\0';//append null character to courseLeader }//end function setCourseLeader //get InternalTelCour value string CourseData::getInternalTelCour() const { return internalTelCour; }//end function getInternalTelCour //set InternalTelCour value void CourseData::setInternalTelCour (string internalTelCourString ) { //copy at most 12 characters from string to internalTelCour const char *internalTelCourValue=internalTelCourString.data(); int length=internalTelCourString.size(); length=( length < 12 ? length:11); strncpy(internalTelCour, internalTelCourValue, length); internalTelCour[length]='\0';//append null character to internalTelCour }//end function setInternalTelCour //get roomNumber int CourseData::getRoomNumber () const { return roomNumber; }//end function getRoomNumber //set RoomNumber value void CourseData::setRoomNumber ( int roomNumberValue) { roomNumber=roomNumberValue; }//end function setRoomNumber //get departmentName value string CourseData::getDepartmentName () const { return departmentName; }//end function getDepartmentName //set DepartmentName value void CourseData::setDepartmentName (string departmentNameString ) { //copy at most 20 characters from string to departmentName const char *departmentNameValue=departmentNameString.data(); int length=departmentNameString.size(); length=( length < 20 ? length:19); strncpy(departmentName, departmentNameValue, length); departmentName[length]='\0';//append null character to departmentName }//end function setDepartmentName >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //main #include <iostream> #include <fstream> #include <iomanip> #include <cstdlib> #include "CourseData.h" int enterChoice(); void createTextFile( fstream&); void updateRecord( fstream&); void newRecord( fstream&); void deleteRecord( fstream&); void outputLine( ostream&, const CourseData &); int getCourse( const char * const); enum Choice { PRINT=1, UPDATE, NEW, DELETE, END}; int main() { //open file for reading and writing fstream inOutCourse("course.txt",ios::in|ios::out| ios::binary); //exit program if fstream cannot open file if(!inOutCourse) { cerr<<"File could not be opened."<<endl; exit(1); }//end if int choice;//store user choice while( (choice=enterChoice() ) !=END) { switch(choice) { case PRINT://create text file from record file createTextFile(inOutCourse); break; case UPDATE://update record updateRecord(inOutCourse); break; case NEW://create record newRecord (inOutCourse); break; case DELETE://delete existing record deleteRecord (inOutCourse); break; default://display error if user does not select valid choice cerr<<"Incorrect choice"<<endl; break; }//switch end inOutCourse.clear();//reset end of file indicator }//end while return 0; }//end main //enable user to input menu choice int enterChoice() { //display available option cout<<"\nEnter your choice"<<endl <<"1-store a formatted text file of courses"<<endl <<" called\"print.txt\" for printing"<<endl <<"2-update an account"<<endl <<"3-add a new course"<<endl <<"4-delete a course"<<endl <<"5-end program\n? "; int menuChoice; cin>>menuChoice; //input menu selection from user return menuChoice; }//end function enterChoice //crete formatted text file for printing void createTextFile(fstream &readFromFile) { //create text File ofstream outPrintFile("print.txt",ios::out); //exit program if ofstream cannot create file if(!outPrintFile) { cerr<<"File could not be created."<<endl; exit(1); }//end if outPrintFile<<left<<setw(20)<<"Number"<<setw(20) <<"Title"<<setw(20)<<"Year"<<setw(20)<<"Leader"<<setw(20) <<"Internal Tel"<<setw(20)<<"Room No."<<setw(20)<<"Department"<<endl; //set file-position pointer to beginning of readFromFile readFromFile.seekg(0); //read first record from record file CourseData course; readFromFile.read(reinterpret_cast<char *>( &course), sizeof(CourseData)); //copy all records from record file into text file while( !readFromFile.eof() ) { //write single record to text file if(course.getCourseNumber()!=0)//skip empty records outputLine(outPrintFile,course); //read next record fromrecord file readFromFile.read(reinterpret_cast<char *>(&course), sizeof(CourseData)); }//end while }//end function createTextFile //update balance in record void updateRecord(fstream &updateFile) { //obtain number of course to update int account=getCourse( "Enter course to update"); //move file position pointer to correct record in file updateFile.seekg((account-1)*sizeof(CourseData)); //read first record from file CourseData course; cout<<left<<course.getCourseNumber()<<' ' <<course.getCourseTitle()<<' ' <<course.getCourseYear()<<' ' <<course.getCourseLeader()<<' ' <<course.getInternalTelCour()<<' ' <<course.getRoomNumber()<<' ' <<course.getDepartmentName(); cout<<"Muak\n"; updateFile.read(reinterpret_cast< char *>(&course), sizeof(CourseData)); //update record if(course.getCourseNumber() !=0) { outputLine(cout,course); //display the record int updatechoice; //request user to specify transaction cout<<"\nChoice\n" <<"1.Number\n" <<"2.Title\n" <<"3.Year\n" <<"4.Leader\n" <<"5.Internal Tel\n" <<"6.Room No.\n" <<"7.Department\n"; cin>>updatechoice; if(updatechoice==1) { cout<<left<<setw(5)<<course.getCourseNumber()<<setfill(' ') <<setw(20)<<course.getCourseTitle() <<setw(20)<<course.getCourseYear() <<setw(20)<<course.getCourseLeader() <<setw(20)<<course.getInternalTelCour() <<setw(20)<<course.getRoomNumber() <<setw(20)<<course.getDepartmentName(); cout<<"\nEnter Course Number:\n"; int temp;//Number cin>>temp; //update record Data int oldData=course.getCourseNumber(); course.setCourseNumber(oldData + temp); outputLine(cout,course);//display record } else if(updatechoice==2) { string transaction;//charge or payment cin>>transaction; //update record Data string oldData=course.getCourseTitle(); course.setCourseTitle (oldData + transaction); outputLine(cout,course); } updateFile.seekp((account-1)*sizeof(CourseData)); updateFile.write(reinterpret_cast<const char *>(&course), sizeof(CourseData)); } else cerr<<"Course #"<<account <<"has no information."<<endl; } void newRecord(fstream &insertInFile) { //obtain number of account to create int account=getCourse("Enter new course number"); //move file-position pointer to correct record in file insertInFile.seekg( ( account-1)* sizeof(CourseData)); //read record from file CourseData course; insertInFile.read(reinterpret_cast< char *>( &course), sizeof(CourseData)); //create record, if record does not previously exist if(course.getCourseNumber()==0) { char courseTitle[20]; int courseyear; char courseLeader[20]; char internalTelCour[20]; int roomNumber; char departmentName[20]; //user enters courseTitle,courseyear,courseLeader,internalTelCour,roomNumber,departmentName cout<<"Enter Title, Year, Leader, Internal Tel,Room No., Department\n? "; cin>>setw(20)>>courseTitle; cin>>setw(20)>>courseyear; cin>>setw(20)>>courseLeader; cin>>setw(20)>>internalTelCour; cin>>setw(20)>>roomNumber; cin>>setw(20)>>departmentName; course.setCourseTitle (courseTitle); course.setCourseYear(courseyear); course.setCourseLeader(courseLeader); course.setInternalTelCour (internalTelCour); course.setRoomNumber (roomNumber); course.setDepartmentName (departmentName); cout<<"course.setRoomNumber"<<course.getRoomNumber()<<endl; //move file position pointer to correct recorsd file insertInFile.seekp((account-1) * sizeof(CourseData)); //insert record in file insertInFile.write(reinterpret_cast<const char *>(&course),sizeof(CourseData)); }//end if else//display error if account already exists cerr<<"Course #"<<account <<" already contains information."<<endl; }//end function newRecord //delete an existing record void deleteRecord(fstream &deleteFromFile) { //obtain number of course to delete int account=getCourse("Enter account to delete"); //move file-position pointer to correct record in file deleteFromFile.seekg((account-1)*sizeof(CourseData)); //read record from file CourseData course; deleteFromFile.read(reinterpret_cast<char *>(&course), sizeof(CourseData)); //delete record, if record exists in file if(course.getCourseNumber() !=0) { CourseData blankCourse;//create blank record //move file-position pointer to correct record in file deleteFromFile.seekp((account-1)*sizeof(CourseData)); //replace existing record with blank record deleteFromFile.write( reinterpret_cast< const char *>(&blankCourse), sizeof(CourseData)); cout<<"Course #"<<account<<" deleted.\n"; }//end if else//display error if record does not exist cerr<<"Course #"<<account<<" is empty.\n"; }//end deleteRecord //display single record void outputLine(ostream &output, const CourseData &record) { cout<<"Hey"<<endl; output<<left<<setw(20)<<record.getCourseNumber() <<setw(20)<<record.getCourseTitle() <<setw(20)<<record.getCourseYear() <<setw(20)<<record.getCourseLeader() <<setw(20)<<record.getInternalTelCour() <<setw(20)<<record.getRoomNumber() <<setw(20)<<record.getDepartmentName(); }//end function outputLine //obtain course number value from user int getCourse(const char * const prompt) { int courseNumber; //obtain course number value do { cout<<prompt<<" (1-100):"; cin>>courseNumber; }while(courseNumber<1||courseNumber>100); return courseNumber; }//end function getCourse
VERY VERY SUPER URGENT
Last edited by Narue; Mar 5th, 2006 at 11:48 am.
No way anyone is going to wade through that unless you edit it to include code tags
http://www.daniweb.com/techtalkforum...cement8-3.html
> VERY VERY SUPER URGENT
http://www.catb.org/~esr/faqs/smart-...ns.html#urgent
http://www.daniweb.com/techtalkforum...cement8-3.html
> VERY VERY SUPER URGENT
http://www.catb.org/~esr/faqs/smart-...ns.html#urgent
![]() |
Similar Threads
- file processing, Random-access Files (C++)
- Help!..."File Processing" *questions inside* (C++)
- File Processing (C)
- File processing problem (C++)
Other Threads in the C++ Forum
- Previous Thread: Question
- Next Thread: MFC - OnKeyDown event.
| Thread Tools | Search this Thread |
api application array arrays based beginner binary bitmap bmp c++ c/c++ calculator char char* class classes code coding compile compiler console conversion convert count data database delete deploy developer dll dynamiccharacterarray email encryption error file format forms fstream function functions game generator getline givemetehcodez graph homeworkhelp iamthwee ifstream image input int java lib list loop looping loops map math matrix memory multidimensional multiple newbie news node number numbertoword output pointer problem program programming project python random read recursion recursive reference rpg simple sorting string strings template text tree url variable vector video visual visualstudio win32 windows winsock word wordfrequency wxwidgets






