IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   C ve C++ (https://www.ircforumlari.net/c-ve-c/)
-   -   *.txt Dosyasina kayit yapmak (https://www.ircforumlari.net/c-ve-c/124354-txt-dosyasina-kayit-yapmak.html)

Cemalizim 19 Temmuz 2008 15:14

*.txt Dosyasina kayit yapmak
 
PHP- Kodu:

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


int gun,ay,yil,biz,onlar,kontrol=0;
char saha;

void kayit()
{
int kayitSayisi,i;
cout<<"dosyaya kac kayit yapilacak ?"<<endl;
 
cin>>kayitSayisi;
ofstream futbol;
futbol.open("skor.txt",ios::out);
for(
i=0;i<kayitSayisii++)
{
cout<< " verileri giriniz ?"<<endl;
cin>>gun>>ay>>yil>>saha>>biz>>onlar;
futbol << gun<<setw(3)<<setw(3)<<ay<<setw(3)<<yil<<setw(3)<<saha<<setw(3)<<biz<<setw(3)
       <<
onlar<<setw(3)<<endl;
}
futbol.close();
getch();
}



void kayitIlave()
{
int ilaveKayit,i;
cout<<"dosyaya kac kayit ilave edilecek ?"<<endl;
 
cin>>ilaveKayit;
ofstream futbol;
futbol.open("skor.txt",ios::app);
for(
i=0;i<ilaveKayiti++)
{
cout<< " verileri giriniz ?"<<endl;
cin>>gun>>ay>>yil>>saha>>biz>>onlar;
futbol << gun<<ay<<yil<<saha<<biz<<onlar<<endl;
}
futbol.close();
getch();
}

void liste()
{
clrscr();
ifstream futbol;
futbol.open("skor.txt",ios::in);
while(
futbol>>gun>>ay>>yil>>saha>>biz>>onlar)
{
cout<< gun<<ay<<yil<<saha<<biz<<onlar<<endl;
cout<endl;
 }
futbol.close();
getch();
}

void silme()
{
int silinecekYil;
clrscr();
cout<<"silinecek yil giriniz "<<endl;
 
cin>>silinecekYil;
ifstream futbol;
futbol.open("skor.txt",ios::in);
ofstream gecici;
gecici.open("gecici.txt",ios::out);
while(
futbol>>gun>>ay>>yil>>saha>>biz>>onlar)
{
if(
silinecekYil!=yil)
{
 
gecici << gun<<ay<<yil<<saha<<biz<<onlar<<endl;
 }
 }


futbol.close();
gecici.close();

  
// copy temp to milan
  
ifstream f1("gecici.txt");
  
ofstream f2("skor.txt");
  
f2<<f1.rdbuf();




void sorgu()
{
int yilAra
cout<<"hangi yila ait kayitlari araniyor ?"<<endl;
 
cin>>yilAra;
ifstream futbol
futbol.open("skor.txt",ios::in);
while(
futbol>>gun>>ay>>yil>>saha>>biz>>onlar 

if(
yilAra==yil
cout<<   gun<<ay<<yil<<saha<<biz<<onlar<<endl;
}
futbol.close(); 
getch(); 



void menu() 

int secim
clrscr(); 
while(
kontrol==0

cout<<"[1] - Kayit " <<endl;
 
cout<<"[2] - Kayit Ilave " <<endl;
  
cout<<"[3] - Silme " <<endl;
   
cout<<"[4] - Liste " <<endl;
    
cout<<"[5] - sorgu " <<endl;
     
cout<<"[6] - Cikis " <<endl;
      
cout<<"Seciminiz:"<<endl;
       
cin>>secim
if(
secim==1kayit(); 
if(
secim==2kayitIlave(); 
if(
secim==3silme(); 
if(
secim==4liste(); 
if(
secim==5sorgu(); 
if(
secim==6kontrol=1
else 
menu(); 


void main() 

menu(); 


Not : Alıntıdır.

SpecifiC 15 Ağustos 2008 02:15

Cevap: *.txt Dosyasina kayit yapmak
 
Bu konu ile ilgili bir örnekte ben yazayım dedim :) fstream sınıfını ögrenirken gördügüm millattan kalma bir örnek. İddali bir kod degil fakat mantık olarak çok iyi bir veritabanı uygulaması olabilir. (veri kayıt etmek, okumak vs. vs.)

Gerekli açıklamaları code içerisine yazdım. Aklınıza takılan soruları konuya post atarak söyleyebilirsiniz...

Kod:

// personel.cpp
#include <iostream> 
#include <fstream>    // dosya giriş/çıkış için
#include <typeinfo>  // typeid() için
#include <process.h>  // exit() için
using namespace std;

const int LEN = 40;    // isim uzunlugu
const int MAXPER = 100;  // MAX. Personel sayısı
enum presonel_tipi {tyonetici, tprofesor, tlaborant};

// presonel sınıfı
class presonel
{
private:
    char isim[LEN];
    unsigned long numara;
    static int n;
    static presonel *arrayptr[];
public:
    virtual void getData()
    {
        cin.ignore(10,'\n');
        cout << "Giris isim: "; cin >> isim;
        cout << "Numara gir: "; cin >> numara;
    }
    virtual void putData()
    {
        cout << "\n isim: " << isim;
        cout << "\n Numarasi: " << numara;
    }
    virtual presonel_tipi nesne_tipi();
    static void add();
    static void display();
    static void read();
    static void yaz();
};
// statik degişkenleri ayarla
int presonel::n = 0;
presonel* presonel::arrayptr[MAXPER];
class yonetici : public presonel
{
private:
    char baslik[LEN];
    double aydat;
public:
    void getData()
    {
        presonel::getData();
        cout << "Baslik gir: "; cin >> baslik;
        cout << "Aydati gir: "; cin >> aydat;
    }
    void putData()
    {
        presonel::putData();
        cout << "\nBaslik: " << baslik
            << "\nAydat: " << aydat;
    }

};
class profesor : public presonel
{
      private:
              int pubs;              // Yayimladıgı eserlerin sayısını tutan degişken.
      public:
            void getData()
            {
                  presonel::getData();
                  cout << "Yayimladigi eser sayisi: "; cin >> pubs;
            }
            void putData()
            {
                  presonel::putData();
                  cout << "\nEser Sayisi: " << pubs;
            }
                   
};
class laborant : public presonel
{
};
void presonel::add()
{
    char scm;
    cout << "'m' yonetici uyesi ekle"
        << "\n's' profesor uyesi ekle"
        << "\n'l' laborant uyesi ekle"
        << "\nLutfen bir secim yapin: ";
    cin >> scm;
   
    switch(scm)
    {
    case 'm': arrayptr[n] = new yonetici; break;
    case 's': arrayptr[n] = new profesor; break;
    case 'l': arrayptr[n] = new laborant; break;
    default: cout << "\nHatali bir tip\n";
    return;
    }

    arrayptr[n++]->getData();
}
void presonel::display()
{
    for (int j=0; j<n; j++)
    {
        cout << (j+1);
        switch(arrayptr[j]->nesne_tipi())
        {
        case tyonetici: cout << ". Tip: yonetici"; break;
        case tprofesor: cout << ". Tip: profesor"; break;
        case tlaborant: cout << ". Tip: laborant"; break;
        default: cout << ". Hatalı tip";
        }
        arrayptr[j]->putData();
        cout << endl;
      }
}
// nesnelerin sınıflarını kon trol eden fonsiyon bunu typeid() fonsiyonu ile yapıyoruz.
presonel_tipi presonel::nesne_tipi()
{
    if (typeid(*this) == typeid(yonetici)) {
          return tyonetici;
    }
    else if (typeid(*this) == typeid(profesor)) {
          return tprofesor;
    }
    else if (typeid(*this) == typeid(laborant)) {
          return tlaborant;
    }
    else {
          cerr << "\nHatalı tip"; exit(1);
    }
    return tyonetici;
}
/* Burada yaz() fonksiyonu ile bellekteki veriler
 * DISK'e yazılıyor. Yazılma mantıgı önce veri tipi
 * Arkasında veri. Yani önce hangi sınıfın nesnesi ise
 * o sınıfın nesnesi belirtiliyor, daha sonra nesne yazılıyor.
 * çünki dosyayı okurken nesnenin hangi sınıfa ait oldugunu
 * buradan anlayacagız.
 */
void presonel::yaz()
{
    int size;
    cout << "Yazili yor " << n << " tane personel kaydi.\n";
    ofstream wfile;                              // ofstream nesnesi tanımla
    presonel_tipi stipi;                          // bir personel_tipi isminde enum tanımla
   
    wfile.open("PERSONEL.DAT", ios::trunc | ios::binary);  // dosyayi ac eger var ise sıfırlarak aç.
   
    if (!wfile) {                                          // Dosya açılırken hata oluşursa programdan çık
              cout << "\nDosya acilamadi";
              return;
    }
    for (int j=0; j<n; j++)
    {
        stipi = arrayptr[j]->nesne_tipi();                // Yazılacak verinin tipine bak
       
        wfile.write((char*)&stipi, sizeof(stipi));        // Yazılacak verinini tipimi yaz
        switch(stipi)                                   
        {
                      case tyonetici: size=sizeof(yonetici); break;
                      case tprofesor: size=sizeof(profesor); break;
                      case tlaborant: size=sizeof(laborant); break;
        }
        wfile.write((char*)(arrayptr[j]), size);          // Veriyi yaz
        if (!wfile) {
                  cout << "\nDosya yazilamadi\n"; return;
        }
    }
    wfile.close();                // Dosyayı kapat.
}
void presonel::read()
{
    int size;
    presonel_tipi stipi;
    ifstream rfile;                            // ifstream nesnesi tanımla
    rfile.open("PERSONEL.DAT", ios::binary);    // dosyayi ac
    if (!rfile)                                // eger dosya acilmadi ise
    {
              cout << "\nDosya açılmadı"; return;
    }
    n = 0;
    while (true)                       
    {   
          rfile.read((char*)&stipi, sizeof(stipi));    // once veri tipini oku
          if (rfile.eof())                              // dosyanin sonuna gelmişsek döngüden çık
          break;
          if(!rfile)                                    // Eger veri tipi alınırken bir hata var ise döngüden çık
          {
                  cout << "\nHatalı bir tip okundu\n";
                  return;
          }
          switch(stipi)                                // Veri tipine göre nesne yarat
          {
                        case tyonetici:
                            arrayptr[n] = new yonetici;
                            size = sizeof(yonetici);
                            break;
                        case tprofesor:
                            arrayptr[n] = new profesor;
                            size = sizeof(profesor);
                            break;
                        case tlaborant:
                            arrayptr[n] = new laborant;
                            size = sizeof(laborant);
                            break;
                        default: cout << "\nHatalı bir tip\n"; return;
          }
          rfile.read((char*)arrayptr[n], size);      // Dosyadan nesneyi oku...
          if (!rfile)                               
          {
                    cout << "\nDosya okuma hatasi\n";
                    return;
          }
          n++;
          }
    rfile.close();                                    // Dosyayı kapat.
    cout << "Dosyadan " << n << " tane veri basari ile okunmustur\n";
}
/* main fonksiyonu ile kullanıcıya cesitli secenekler sunuluyor.
 * Ve bu sceneklerin sonucuna gore program isleme giriyor.
 * yeni giris dosya kayit ve dosya okumak gibi islemler.
 */
int main()
{
    char scm;
    while(true)
    {
              cout << "'a' *** Personel kaydi yap"
                    << "\n'd' *** Verileri listele"
                    << "\n'w' *** Tum veriyi kaydet"
                    << "\n'r' *** Kayitli veriyi dosyadan oku"
                    << "\n'x' *** Cikis yap!"
                    << "\nLutfen secim yapin: ";
              cin >> scm;
              // Girilen secim switch ile kontrol ediliyor
              switch(scm)
              {
                        case 'a':
                              presonel::add(); break;
                        case 'd':
                              presonel::display(); break;
                        case 'w':
                              presonel::yaz(); break;
                        case 'r':
                              presonel::read(); break;
                        case 'x': exit(0);
                        default : cout << "\nHatali komut\n"; // Girilen secim tanimlanmayan bir secim ise...
              }
    }
    return 0;
}
// eof();


Brain 23 Ağustos 2008 19:58

Cevap: *.txt Dosyasina kayit yapmak
 
Hms Güzel olmus Cemalizim emeğine sağlık ßende ögrenmis oldum bu arada..


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 15:08.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk