Умоляю вас помогите мне доделать функции: 1) удаления записи в файле; 2)просмотра данных из файла по алфавиту пункта назначения Пожалуйста не добавляйте в функции какие-нибудь новые навороты, ведь мне надо чтобы пошло на VC++6.0 Плиз объяните как же сделать эти две функции, а то я умру. И подскажите плиззззз как мне правильно работать с файлом при его открытии или создании, а то че-то вообще как-то не могу!!!!!!!!! | Код | #include "stdafx.h" #include "iomanip.h" #include "iostream.h" #include "conio.h" #include "stdio.h" #include "string.h" #include "dos.h" #include "stdlib.h" #include "fstream.h"
static int sz=0;
struct TRANZ { int nomer_poezda; char priznak_tranz[20]; char punkt_naz[20]; int date[3]; };
TRANZ t[10];
void menu(); void writee(); void readd(); void delet(); void alfavit(); void do_punkta();
int recsize = sizeof(int)+20*sizeof(char)+20*sizeof(char)+4*sizeof(int);
fstream potok;
int main() { char *filename="poezd.txt"; ofstream build(filename, ios::binary);
potok.open( filename, ios::binary | ios::in | ios::out ); if(!potok) { cout << "\aFail " << filename << " ne bil uspershno otkrit"; return -1; } menu(); potok.close(); return 0; }
void menu() { int choice; system ("cls"); cout << "\n\n\t\t|Zapic ------ 1|"; cout << "\n\n\t\t|Chtenie ------ 2|"; cout << "\n\n\t\t|Udalenie ------ 3|"; cout << "\n\n\t\t|Korrekt ------ 4|"; cout << "\n\n\t\t|Po alfavity ------ 5|"; cout << "\n\n\t\t|Do_punkta_naz ------ 6|"; cout << "\n\n\t\t|Vixod ------ 7|"; cout << "\n\n\n\t\t\t\tVash vibor >>> "; cin >> choice; switch(choice) { case 1: writee(); break; case 2: readd(); break; case 3: delet(); break; case 4: writee(); break; case 5: alfavit(); break; // case 6: do_punkta();break; case 7: exit(0); default: cout<<"\aNe verno!!! "; menu(); } }
void writee() { int n; char choice='y'; do { system("cls"); cout << "\n\t\t\t nomer dla zapici >>> "; cin>>n; if(sz<n){sz=n;} cout<< "\n\t\t\tvvedite nomer poezda \n>>> "; cin.ignore(); cin>>t[n].nomer_poezda; cout << "\n\t\t\tVvedite priznak tranzitnosti\n>>> "; cin.ignore(); cin.get( t[n].priznak_tranz, 20*sizeof(char)); cout << "\n\t\t\tVvedite konechnii punkt\n>>> "; cin.ignore(); cin.get( t[n].punkt_naz, 20*sizeof(char)); cout<<"\n\t\t\tVvedite vremya otpravleniya: "; cout<<"\nVvedite deni >>> "; cin >> t[n].date[0]; cout << "\nVvedite chas >>> "; cin >> t[n].date[1]; cout<<"\nVvedite minyti >>> "; cin>> t[n].date[2]; potok.seekg((n-1)*recsize); potok.write(reinterpret_cast<char*>(&t[ n ]), sizeof(t[ 0 ])); cout<<"\n\t\t\t-----------------------------\n"; cout << "\n\t\t\tProdoljiti? (y/n) "; cin >> choice; } while(choice != 'n'); menu(); }
void readd() { int nomer,d1,d2,d3; char priznak[20],kon_punkt[20]; system("cls"); for(int l=0;l<sz;l++) { potok.seekg(l*recsize); potok.read(reinterpret_cast<char*>(&nomer),4); potok.read(priznak,20); potok.read(kon_punkt,20); potok.read(reinterpret_cast<char*>(&d1),4); potok.read(reinterpret_cast<char*>(&d2),4); potok.read(reinterpret_cast<char*>(&d3),4); potok.clear(); printf("\n------------------------------------------------------"); printf("\n\tNomer <<< %d",nomer); printf("\n\n\t\tPriznak <<< %s",priznak); printf("\n\n\t\t\tKon_punkt <<< %s",kon_punkt); printf("\n\n\t\t Vremya: "); printf("\n\n\t\t Deni <<< %d",d1); printf("\n\n\t\t Chas <<< %d",d2); printf("\n\n\t\t Minyti <<< %d",d3); } printf("\n\n-------------------------------------------"); printf("\nNajmite chto-nibudi "); getch(); menu(); }
void delet() { /*char choice = 'y'; int pos = 0; int count = 0; cout << "\nVvedite nomer zapici dla udaleniya "; cin >> pos; potok.seekg(pos-1); for (int i = 0; i < 10; ++i) { if (pos == i) continue;
potok.write(reinterpret_cast<char*>(&t[ i ]), sizeof(t[ 0 ]));
/*fbin.write(f[i].familiya,20); fbin.write(reinterpret_cast<char*>(&f[i].nomer_gruppi),4); fbin.write(reinterpret_cast<char*>(&f[i].sr_usp),8); }*/
getch(); menu(); }
void alfavit() { system("cls"); }
|
Добавлено через 3 минуты и 35 секундОй вначале | Код | int recsize = sizeof(int)+20*sizeof(char)+20*sizeof(char)+3*sizeof(int);
|
|