Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] Запись объекта в файл


Автор: LexRus 2.6.2007, 21:23
Ребята, кто шарит в С++, пожалуйста, помогите мне. Дело в том что я учусь в колледже. Нам дали задание (ассаймент) куоторое решит вылетишь\ не вылетишь. У меня уже было все практически готово. Шел по улице на занятия, напали 2-е арабов. Один лупит по голове какой-то хренью и пинает меня лежащего ногами, второй в это время забирает все что есть. Забрали в том числе и ноут со всей инфой. Сегодня только из больницы (4 дня) с чуть ли не проломленным черепом. Я даже на монитор смотреть не могу - больно да и не смогу сделать физически. 4-го нужно сдать.Не сдам - теряю год обучения и более 2тыс евро. Я за границей, студент - я не выдержу уже просто 2-го года ни материально, ни физически\морально. 

Учимся мы по книге " C++ How to program,Fifth edition. DEITEL" скачать можно запросто, что я и сделал. Сайт их www.deitelkcom или http://www.prenhall.com/deitel/cyberclassroom .

Задание простое!! :

Write a C++ prog that creates a class named BankAccount, containing the followimg variables: string accountOwnerFirstName, string accountOwnerLastName, long int accountNumberint accountPIN? double accountBalance. Then, the prog should open thr file for wrriting (file can be named "account.dat"? promt the user to enter ( through the keyboard) at least 5 different records for bank accounts? and save the data into 5 doifferemt BankAccount objects, and at the same time write the data into the file account.dat ( use 1 new line for each account record).

Furthermore? the program should open a new file for appending (named "newAccount.dat"), promt the user to enter a new bank account record and write it, together with the existing bank accounts? to the newAccount.dat. Therefore, the newAccount.dat should contane at least one more bank account record compared to account. Lastly, open for reading the file newAccount.dat and output its contents to the screen/

Put comments into the BankAccount files (BankAccount.h, BankAccount.cpp) and in the testing file (BankAccountTest.cpp, which also opens files for writing and reading).

РЕБЯТА! Это со стороны (и не знающему) кажется тяжкло-долго о тп. Это элементарно! Я только начал С++. В книге есть даже похожий пример. Человек который разбирается или хоть чуть знает с++ (студент) сдклает это не напрягаясь маесимум за час думаю, если не меньше.

Пожалуйста помогите!!! Очень прошу! может и не туда пишу и не по-теме, но выхода\вариантов нет. С почти проломленным черепом и без копейки задание не напишу\получу. Помогите хоть чем-то, кто как может! Буду очень благодарен. Спасибо за внимание. 

Помогите!!!!!!! Прошу вас! может эди не вы - знакомвй может.


M
Alexeis
Модератор: Название темы должно отражать ее суть!



Автор: MAKCim 2.6.2007, 21:30
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: apook 3.6.2007, 00:30
Можешь и поиском воспользоваться здесь похожих заданий было много
сам то переделаешь наверно

Автор: Alexeis 3.6.2007, 17:01
h файл
Код


#include <iostream.h>
#include <string.h>
#include <fstream.h>

#ifndef _03062007
#define _03062007

class CBankAccount;

operator<< (ostream &IS, const CBankAccount &BA);

class CBankAccount
{
private:
  string   accountOwnerFirstName;
  string   accountOwnerLastName;
  long int accountNumber;
  int      accountPIN;
public:
  friend operator<< (ostream &IS, const CBankAccount &BA);
  void ReadFromScreen();
  void ReadFromFile(ifstream &f);
};

#endif


cpp файл

Код

#include "BankAccount.h"


  operator<< (ostream &IS, const CBankAccount &BA)
  {
     IS << (char *)BA.accountOwnerFirstName.c_str() << ' '
        << (char *)BA.accountOwnerLastName.c_str()  << ' '
        << BA.accountNumber                         << ' '
        << BA.accountPIN                            
        << endl;
     return 0;
  }

  void CBankAccount::ReadFromScreen()
  {
     accountOwnerFirstName.resize(100);
     cout << "-------------------------------------" << endl;
     cout << "Input Account Owner First Name" << endl;
     cin  >> &accountOwnerFirstName[0];
     accountOwnerLastName.resize(100);
     cout << "Account Owner Last Name" << endl;
     cin  >> &accountOwnerLastName[0];
     cout << "Input Account Number" << endl;
     cin  >> accountNumber;
     cout << "Input Account PIN" << endl;
     cin  >> accountPIN;
  }

  void CBankAccount::ReadFromFile(ifstream &f)
  {
     cout << "-------------------------------------" << endl;
     accountOwnerFirstName.resize(100);
     cout << "Account Owner First Name : ";
     f    >> &accountOwnerFirstName[0];
     cout << accountOwnerFirstName.c_str() << endl;

     cout << "Account Owner Last Name : ";
     accountOwnerLastName.resize(100);
     f    >> &accountOwnerLastName[0];
     cout << accountOwnerLastName.c_str() << endl;

     cout << "Account Number : ";
     f    >> accountNumber;
     cout << accountNumber << endl;

     cout << "Account PIN : ";
     f    >> accountPIN;
     cout << accountPIN << endl;

     char endline;
     f    >> endline;
  }

int main(void)
{
    cout << "intut records count ";
    int n;
    cin >> n;  

    CBankAccount *BA = new CBankAccount[n];
    ofstream f("account.dat", ios::out);

    for (int i = 0; i < n; i++)
    {
       BA[i].ReadFromScreen();
       f << BA[i];
    }
    f.close();
    delete[] BA;

    cout << endl;
    cout << "additional accaunt" << endl;
    cout << endl;

    f.open("newAccount.dat", ios::app);
    CBankAccount NewBA;
    NewBA.ReadFromScreen();
    f << NewBA;
    f.close();

    cout << endl;
    cout << "Contient of \"newAccount.dat\"" << endl;
    cout << endl;

    ifstream file2("newAccount.dat", ios::in);
    while (!file2.eof())
    {
        CBankAccount ReadBA;
        ReadBA.ReadFromFile(file2);
    }

    file2.close();

    char end[20];
    cin >> end;
    return 0;
}


Содержимое файла newAccount.dat (2 записи)

Код

Name1 sName1 23523 2353
Name2 sName2 346734 5233


Ну и весь проект (в билдере)

Автор: apook 3.6.2007, 17:19
Код

#include <stdlib.h>

#include <fstream.h>
#include <iostream.h>

#define MAXSZ 1024


using namespace std;

class BankAccount
{
public:
    BankAccount();

    char surname[ 80 ]; //Фамилия
    int penny;          //денег

    void BDentry();
    ~BankAccount();
    friend ostream &operator <<( ostream &stream, BankAccount &Object );
    };

BankAccount::BankAccount()
{
cout << "Enter Surname: ";
cin >> this->surname;
cout << "Enter amount of money: ";
cin >> this->penny;
}


BankAccount::~BankAccount()
{
    ;
} 

ostream &operator <<( ostream &stream, BankAccount &Object )
{
stream << "SurNAme: " << Object.surname << endl
       << "Amount of money: " << Object.penny << endl;
return stream; 
}


void main()
{
BankAccount BA;

fstream bd;
bd.open( ".\\BankAccount.DAT", ios::out );
if( !bd )
{ 
    perror( "Error: Cant open file BankAccount.DAT" );
    exit( 1 ); 
    }

//Запись обьекта в файл
bd << BA; 

return;
}

Автор: Scope 4.6.2007, 00:14
Приношу свои извенения за столь необоснованный пост (теперь это мне уже стало ясно), если кого обидел- искренне извиняюсь- это я не со зла.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)