Originally Posted by
Daved
>> D:\\Example\InputFile.txt
Should be D:\\Example\\InputFile.txt.
I'm using Visual C++ Express Edition..
I remain have this error...this is my full code:
"ClassType.h"
Code:
#ifndef CLASSTYPE_H
#define CLASSTYPE_H
#include "TypeData.h"
#include <fstream>
using namespace std;
class Data{
public:
void duongdan1(char * );
void duongdan2(char * );
void NhapChoice();
void TextFile(fstream&);
void UpdateRecord(fstream&);
void NewRecord(fstream&);
void DeleteRecord(fstream&);
void OutputLine(ostream&,const TypeData&);
int getAccount(const char*);
private:
int choice;
char * path1,*path2;
};
#endif
"TypeData.h"
Code:
#ifndef TYPEDATA_H
#define TYPEDATA_H
struct TypeData{
int accountName;
char name[100];
double balance;
};
#endif
"ClassType.cpp"
Code:
#ifndef CLASSTYPE_CPP
#define CLASSTYPE_CPP
#include "ClassType.h"
#include <iostream>
#include <iomanip>
using namespace std;
void Data::duongdan1(char * dd1){
path1 = dd1;
}
void Data::duongdan2(char * dd2){
path2 = dd2;
}
void Data::NhapChoice(){
fstream XuatNhapFile(path1,ios::in|ios::out);
if (!XuatNhapFile){
cerr<<"File khong the tao!"<<endl;
exit(1);
}
cout<<"\nNhap lua chon cua ban\n"
<<"1 - Du Tru 1 dinh dang file text\n"
<<"2 - Cap nhat 1 tai khoan moi\n"
<<"3 - Them 1 tai khoan moi\n"
<<"4 - Xoa 1 tai khoan\n"
<<"5 - Ket thuc chuong trinh\n";
cin>>choice;
while (choice != 5){
switch(choice){
case 1:
TextFile(XuatNhapFile);
break;
case 2:
UpdateRecord(XuatNhapFile);
break;
case 3:
NewRecord(XuatNhapFile);
break;
case 4:
DeleteRecord(XuatNhapFile);
break;
default:
cerr<<"Lua chon sai";
}
//Reset end of file
XuatNhapFile.clear();
}
}
void Data::TextFile(fstream &DocFile){
ofstream XuatFile(path2,ios::out);
if (!XuatFile){
cerr<<"File khong mo duoc!";
exit(1);
}
XuatFile<<setiosflags(ios::left)<<setw(10)
<<"Account" <<setw(22)<< "Name"
<<setiosflags(ios::left)
<<setw(10)<<"Balance"<<endl;
DocFile.seekg(0);
TypeData dulieu;
DocFile.read(reinterpret_cast<char *>(&dulieu),sizeof(TypeData));
while(!DocFile.eof()){
if(dulieu.accountName != 0)
OutputLine(XuatFile, dulieu);
DocFile.read(reinterpret_cast <char *>(&dulieu),sizeof(TypeData));
}
}
void Data::UpdateRecord(fstream &UpdateFile){
TypeData dulieu;
int account = getAccount("Nhan 1 tai khoan de update!");
UpdateFile.seekg((account-1) * sizeof(dulieu));
UpdateFile.read(reinterpret_cast <char *>(&dulieu),sizeof(TypeData));
if (dulieu.accountName != 0){
OutputLine(cout,dulieu);
cout<<"\nNhan thay doi tang hoac giam!";
float chuyentai;
cin>>chuyentai;
dulieu.balance += chuyentai;
OutputLine(cout,dulieu);
UpdateFile.seekp((account-1) * sizeof(dulieu));
UpdateFile.write(reinterpret_cast<const char *> (&dulieu),sizeof(TypeData));
}
else
cerr<<"Account #"<<account
<<"has no information."<<endl;
}
void Data::NewRecord(fstream &insertFile){
TypeData dulieu;
int account = getAccount("Nhan 1 tai khoan moi!");
insertFile.seekg((account-1) * sizeof(dulieu));
insertFile.read(reinterpret_cast <char *>(&dulieu),sizeof(TypeData));
if(dulieu.accountName == 0){
cout<<"Nhap name: ";
cin>>dulieu.name>>dulieu.balance;
dulieu.accountName = account;
insertFile.seekp((account-1) * sizeof(dulieu));
insertFile.write(reinterpret_cast <const char *>(&dulieu), sizeof(TypeData));
}
else
cerr << "Account #" <<account
<<" already contains information."<<endl;
}
void Data::DeleteRecord(fstream & deleteFile){
TypeData dulieu;
int account = getAccount("Nhan 1 tai khoan de xoa!");
deleteFile.seekg((account-1) * sizeof(dulieu));
deleteFile.read(reinterpret_cast <char *>(&dulieu),sizeof(TypeData));
if (dulieu.accountName != 0){
TypeData dulieu1 = {0,"",0.0};
deleteFile.seekp((account-1) * sizeof(dulieu));
deleteFile.write(reinterpret_cast <const char *>(&dulieu1), sizeof(TypeData));
cout<<"Account #"<<account<<"deleted"<<endl;
}
else
cerr<<"Account #"<<account<<" is empty."<<endl;
}
void Data::OutputLine(ostream &output, const TypeData &c){
output<<setiosflags(ios::left)<<setw(10)
<<c.accountName<<setw(22)<<c.name
<<setw(11)<<setprecision(2)<<resetiosflags(ios::left)
<<setiosflags(ios::fixed|ios::showpoint)
<<c.balance<<"\n";
}
int Data::getAccount(const char *nhac){
int account;
do{
cout<<nhac<<"(1 - 100): ";
cin>>account;
}while(account<1||account>100);
return account;
}
#endif
"Use.cpp"
Code:
#include "stdafx.h"
#include "ClassType.h"
#include "TypeData.h"
int _tmain(int argc, _TCHAR* argv[])
{
Data data;
char * dd1 = "D:\\Example\\InputFile.txt";
char * dd2 = "D:\\thu\\OutputFile.txt";
data.duongdan1(dd1);
data.duongdan2(dd2);
data.NhapChoice();
return 0;
}
I want to create a text file,input data into this file,then I use a function to read data from that file and process these datas.... After that I want to output data(result) in another text file...what should I do?...
Everybody can tell me a sample code that can be used to do this ? thanks very much.....