⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 listy z zapisem do pliku.cpp

📁 Conversion from structured C code to object version C++ code in details. Sorry 鈥?description in
💻 CPP
字号:
// unidirectional list sample

#include <iostream>
#include <fstream>
#include <new>

using namespace std;
 char plik_dane[]="dane.txt";

struct baza
{
  char imie[20];
  char nazwisko[32];
  unsigned int wiek;
  baza *poprzedni;
  baza *nastepny;
};

  baza *glowa=NULL, *ogon=NULL, *biezacy=NULL;

// reading from file
void wczytaj_z_pliku(char* nazwa)
{
  ifstream plik(nazwa);
  baza *nowy;
  if (!plik)
  {
    cout << "Brak danych do wczytania !";
    return;
  } 
  plik.ignore();
  while (!plik.eof()) {
    try                                
    {
      nowy = new baza;
    }
    catch(bad_alloc)
    {
      cout << "Brak miejsca na nowa baza";
      return;
    }
    plik >> (nowy->imie);
    plik >> (nowy->nazwisko);
    plik >> (nowy->telefon);
    biezacy=nowy;
    if (ogon==NULL)
      ogon=nowy;
    else
      glowa->nastepny=nowy;
    nowy->poprzedni=glowa;
    nowy->nastepny=NULL;
    glowa=nowy;
}
}


// reading from file

void zapisz_do_pliku(char* nazwa)
{
  ofstream plik(nazwa);
  baza *temp;
  temp=ogon;
  while (temp != NULL)
  {
    plik << endl << temp->imie << endl << temp->nazwisko << endl << temp->telefon;
    temp=temp->nastepny;
  }     
  plik.close();    
}

void dodaj_na_poczatek()
{
  baza *nowy;
  try                                
  {
    nowy = new baza;
  }
  catch(bad_alloc)
  {
    cout << "Brak miejsca na nowy baza";
    return;
  }
  cout << "Podaj imie: ";
  cin >> (nowy->imie);
  cout << "Podaj nazwisko: ";
  cin >> (nowy->nazwisko);
  cout << "Podaj telefon: ";
  cin >> (nowy->telefon);
  biezacy=nowy;
  if (glowa==NULL)
    glowa=nowy;
  else
    ogon->poprzedni=nowy;
  nowy->poprzedni=NULL;
  nowy->nastepny=ogon;
  ogon=nowy;
}

void dodaj_na_koniec()
{
  baza *nowy;
  try                                
  {
    nowy = new baza;
  }
  catch(bad_alloc)
  {
    cout << "Brak miejsca na nowy baza";
    return;
  }
  cout << "Podaj imie: ";
  cin >> (nowy->imie);
  cout << "Podaj nazwisko: ";
  cin >> (nowy->nazwisko);
  cout << "Podaj telefon: ";
  cin >> (nowy->telefon);
  biezacy=nowy;
  if (ogon==NULL)
    ogon=nowy;
  else
    glowa->nastepny=nowy;
  nowy->poprzedni=glowa;
  nowy->nastepny=NULL;
  glowa=nowy;
}

void pokaz_wszystkie()
{
  baza *temp;
  temp=ogon;
  cout << endl;
  while (temp != NULL)
  {
    cout << temp->imie << " " << temp->nazwisko << ", tel:" << temp->telefon << endl;
    temp=temp->nastepny;
  }     
  cout << endl;
}

void skocz_do()
{
  int n;
  cout << "\tPodaj numer rekordu, do ktorego chcesz skoczyc (liczac od 1): ";
  cin >> n; 
  biezacy=ogon;
  for (int i=1; i<n; i++)
    if (biezacy!=glowa)
      biezacy=biezacy->nastepny;
    else
    {
      biezacy=ogon;
      cout << "\tRekord o podanym numerze nie istnieje!\nPrzenosze do pierwszego...";
      break;    
    }
}

void usun()
{
  if (biezacy=glowa)
  {
    glowa = glowa->poprzedni;
    glowa->nastepny = NULL;
    delete biezacy;
    biezacy = glowa; 
  } 
  else if (biezacy=ogon)
  {
    ogon = ogon->nastepny;
    ogon->poprzedni = NULL;
    delete biezacy;
    biezacy = ogon; 
  } else {
    (biezacy->poprzedni)->nastepny=biezacy->nastepny;
    (biezacy->nastepny)->poprzedni=biezacy->poprzedni;
    delete biezacy;
    biezacy=ogon;
  }
}

int main()
{
  char odp;
  cout << "Wczytuje dane...";
  wczytaj_z_pliku(plik_dane);
  do {
    system("cls");
    if (biezacy!=NULL)
    {
      cout << "\t\t\tBiezacy rekord:\n\t";
      cout << biezacy->imie << "\t" << biezacy->nazwisko << "\t\t" << biezacy->telefon << endl;
    }
    else
      cout << "\t\tLista jest pusta! \n";
    cout << "\n\t\t\t\tMENU\n\n";
    cout << "\t> 1 < Pierwszy\t\t"     << "> 6 < Usun biezacy\n";
    cout << "\t> 2 < Poprzendi\t\t"    << "> 7 < Dodaj na poczatek\n";
    cout << "\t> 3 < Nastepny\t\t"     << "> 8 < Dodaj na koniec\n";
    cout << "\t> 4 < Ostatni\t\t"      << "> 9 < Pokaz wszystkie\n";
    cout << "\t> 5 < Skocz do...\t"  << "> 0 < Wyjscie\n";
    cout << "\n\tWybierz opcje: ";
    cin >> odp;
    switch (odp) 
    {
      case '1': biezacy=ogon; break;
      case '2': if (biezacy!=ogon) biezacy=biezacy->poprzedni; break;
      case '3': if (biezacy!=glowa) biezacy=biezacy->nastepny; break;
      case '4': biezacy=glowa; break;
      case '5': skocz_do(); break;
      case '6': usun(); break;
      case '7': dodaj_na_poczatek(); break;
      case '8': dodaj_na_koniec(); break;
      case '9': pokaz_wszystkie(); system("pause"); break;
    }       
  } while (odp!='0');
  system ("cls");
  cout << "\nZapisuj

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -