witam mam o to taki programik(w C++) i potrzebuje aby edytował tylko jedna linijkę w pliku tekstowym
// bankomat by Jacek Horn
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <string>
#include <fstream>
#include <stdlib.h>
using namespace std;
struct os
{
int ID;
string imie;
string nazwisko;
float suma;
};
void wypisz (char *in, os *s, int n )
{
ifstream plik;
plik.open(in);
// int i=0;
// while (!plik.eof()){
for(int i=0;i<n;++i){
plik>>s[i].ID;
plik>>s[i].imie;
plik>>s[i].nazwisko;
plik>>s[i].suma;
}
plik.close();
}
void czytanie(char *in,os *s,int n) // zszyczytuje plik do tablicy struktur
{
ifstream plik;
plik.open(in);
for(int i=0;i<n;++i)
{
plik>>s[i].ID;
plik>>s[i].imie;
plik>>s[i].nazwisko;
plik>>s[i].suma;
}
}
int wielkosc(char *in)
{
int ID;
string imie, nazwisko;
ifstream plik;
plik.open(in);
int rozm = 0;
while(!plik.eof())
{
plik>>ID;
plik>>imie;
plik>>nazwisko;
rozm += 1;
}
plik.close();
return rozm;
}
void dodawanie(char *in,os *s,int n) // dodawanie uzytkownika
{
ofstream plik;
plik.open(in, ios::app);
n=1;
for(int i=0;i<n;++i)
{
s[i].ID = i + 1;
plik<<s[i].ID<<endl;
cout<<"Podaj imie :\n";
cin>>s[i].imie;
plik<<s[i].imie<<endl;
cout<<"Podaj nazwisko :\n";
cin>>s[i].nazwisko;
plik<<s[i].nazwisko<<endl;
}
plik.close();
}
void wyswietl(char uzytko[]) //wczytywanie listy uzytkownikow
{
ifstream plik("uzytkownik.txt"); //otwarcie pliku
string tymczasowa; //zapisywac bedziesz do klasy String
if(!plik.is_open())
cout <<"Nie otwarto pliku!";
while(getline(plik, tymczasowa)) //sczytywanie linijka w linijkę
cout << tymczasowa<< endl;
plik.close();
}
//-----------------------------------------------------------------------
int main(int argc, char **argv)
{
int op,wp,wy,adm,ile=1,i;
char uzy[4000];
string uz,nowy,nowyw,usun,s,de;
/* cout << "mamy " << argc << " argumentow" << endl ;
for (int i=0; i<argc; i++)
cout << argv[i] << " ";
cout << " podaj nazwe pliku";
char nazwa_pliku[20];
cin >> nazwa_pliku;
argv[1]= nazwa_pliku;*/
argv[1]="uzytkownik.txt";
fstream uzyt;
cout << "podaj ID" << endl;
cin >> uz;
if (uz=="a")
{
cout << "witam administratorze prosze wybrac opcje" << endl;
cout << "1 - dodawanie uzytkownikow" << endl;
cout << "2 - usuwanie wszystkich uzytkownikow" << endl;
cout << "3 - wyswietlanie listy uzytkownikow" << endl;
cin >> adm;
switch(adm)
{
case 1:
{
int roz = wielkosc(argv[1])+ile-1;
int rozm = wielkosc(argv[1])-1;
os *s = new os [roz];
czytanie(argv[1],s,rozm);
for(int i=rozm;i<roz;++i)
{
s[i].ID = i+1;
cout<<"Podaj imie :\n";
cin>>s[i].imie;
cout<<"Podaj nazwisko :\n";
cin>>s[i].nazwisko;
cout<<"Podaj stan konta :\n";
cin>>s[i].suma;
}
ofstream plik;
plik.open(argv[1]);
for(int i=0;i<roz;++i)
{
plik<<s[i].ID<<endl;
plik<<s[i].imie<<endl;
plik<<s[i].nazwisko<<endl;
plik<<s[i].suma<<endl;
plik<<"\n\n";
}
plik.close();
delete [] s;
}
break;
case 2:
cout << "czy na pewno chcesz usunac wszystkich uzytkownikow?" << endl;
cin >> de;
if (de=="t")
system("del W:\\Pulpit\\bankomat\\bankomat\\uzytkownik.txt > NUL");
else
cout << "nie usunieto uzytkownikow" << endl;
break;
case 3:
uzyt.open("uzytkownik.txt");
wyswietl(uzy);
uzyt.close();
break;
/*case 4: //dodawanie pierwszego uzytkownika
os *s = new os[ile];
dodawanie(argv[1],s,ile);
delete [] s;
break;*/
}
}
//-----------------------------------------------------------------------------
else
{
cout << "Podaj ID po raz drugi dla uwierzytelnienia" << endl;
os *s = new os[ile];
czytanie(argv[1],s, ile );
int mod, licznik=0;
cout << endl <<"ID" << endl;
cin >> mod;
for(i=0;i<ile;++i){
if (s[i].ID==mod) licznik++; break;
}
if (licznik==0) licznik=1;
else licznik=2;
switch(licznik)
{
case 1:
cout<<"nie ma takiego uzytkownika"<< endl;
break;
case 2:
{
//Dokończyć-----------------------------------------------------------------------------------------
cout << "1 - wplata na konto" << endl;
cout << "2 - wyplata z konta" << endl;
cout << "3 - sprawdzenie stanu konta" << endl;
cin >> op;
switch(op)
{
case 1:
cout << "podaj ile chcesz wplacic" << endl;
cin >> wp;
s[i].suma+=wp;
break;
case 2:
cout << "podaj ile chcesz wyplacic" << endl;
cin >> wy;
if (s[i].suma<0)
cout << "masz debet na koncie, wyplata nie jest mozliwa" << endl;
else
cout << "wyplacono pieniadze" << endl;
break;
case 3:
cout << "twoj stan konta wynosi: "<<s[i].suma << endl;
break;
}
}
}
}
getch();
return 0;
}
muszę zrobić case 1 i 2 w switch op w tych dwóch casach ma edytować tylko jedną linijkę z pliku uzytkownik.txt da ktoś jakieś rady ewentualnie dokończy??