İçeriğe geç

Basit Müşteri Kayıt Uygulaması C++ İle Nasıl Yapılır?

Bu blog yazısında, C++ programlama dilini kullanarak basit bir müşteri kayıt uygulaması nasıl yapılır adım adım açıklayacağım. Uygulamamız yeni müşterileri kaydedebilecek, mevcut müşteri bilgilerini görüntüleyebilecek ve kayıtlı müşterileri silebilecek bir arayüz sunacak.

Adım 1: Gerekli Kütüphanelerin Eklenmesi:

İlk adımda, kullanacağımız kütüphaneleri projemize eklememiz gerekiyor. Bu uygulamada standart giriş çıkış işlemleri için iostream, dosya işlemleri için fstream, metin işlemleri için sstream ve vektör veri yapısı için vector kütüphanelerini kullanacağız.

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>

Adım 2: Müşteri Yapısının Tanımlanması:

Müşteri bilgilerini saklamak için bir Customer yapı tanımlayacağız. Bu yapı, müşterinin ID’si, TC kimlik numarası, adı, soyadı, doğum tarihi ve telefon numarası gibi özellikleri içerecek.

struct Customer {
    int id;
    std::string tcKimlik;
    std::string ad;
    std::string soyad;
    std::string dogumTarihi;
    std::string telefon;
};

Adım 3: Müşteri Bilgilerini Tutacak Vektörün Oluşturulması:

Müşteri bilgilerini saklamak için bir vektör oluşturacağız. Bu vektör, Customer yapısından oluşacak ve her bir müşteri bilgisini içerecek.

std::vector<Customer> customers;

Adım 4: Dosyanın Oluşturulması veya Varolan Dosyanın Okunması:

Program başlatıldığında, müşteri bilgilerini dosyadan okuyacak veya dosya yoksa yeni bir dosya oluşturacak bir fonksiyon oluşturacağız.

void dosyaOlustur() {
    std::ifstream file("musteriler.txt");
    if (!file.is_open()) {
        std::ofstream newFile("musteriler.txt");
        if (!newFile.is_open()) {
            std::cerr << "Dosya oluşturulamadı." << std::endl;
        } else {
            newFile.close();
        }
    }
    file.close();
}

Adım 5: Müşteri Ekleme Fonksiyonu:

Yeni müşteri eklemek için bir fonksiyon oluşturacağız. Bu fonksiyon, kullanıcıdan müşteri bilgilerini alacak ve vektöre ekleyecek. Ayrıca, müşteri bilgilerini dosyaya da yazacak.

void kayitEkle(std::vector<Customer>& customers) {
    Customer yeniMusteri;
    yeniMusteri.id = nextId++;
    
    std::cout << "TC Kimlik: ";
    std::getline(std::cin, yeniMusteri.tcKimlik);

    std::cout << "Ad: ";
    std::getline(std::cin, yeniMusteri.ad);

    std::cout << "Soyad: ";
    std::getline(std::cin, yeniMusteri.soyad);

    std::cout << "Doğum Tarihi: ";
    std::getline(std::cin, yeniMusteri.dogumTarihi);

    std::cout << "Telefon: ";
    std::getline(std::cin, yeniMusteri.telefon);

    customers.push_back(yeniMusteri);
    std::cout << "Müşteri başarıyla kaydedildi. Müşteri ID: " << yeniMusteri.id << std::endl;

    // Müşteriyi dosyaya kaydet
    std::ofstream file("musteriler.txt", std::ios_base::app);
    if (file.is_open()) {
        file << yeniMusteri.id << "," << yeniMusteri.tcKimlik << "," << yeniMusteri.ad << "," 
             << yeniMusteri.soyad << "," << yeniMusteri.dogumTarihi << "," << yeniMusteri.telefon << "\n";
        file.close();
    } else {
        std::cerr << "Dosya açılamadı." << std::endl;
    }
}

Adım 6: Müşteri Silme Fonksiyonu: Mevcut bir müşteriyi silmek için bir fonksiyon oluşturacağız. Bu fonksiyon, kullanıcıdan silinecek müşterinin ID’sini alacak, vektörden müşteriyi silecek ve dosyadan da silinecek müşterinin bilgilerini kaldıracak.

void musteriSil(std::vector<Customer>& customers) {
    if (customers.empty()) {
        std::cout << "Silinecek müşteri bulunmamaktadır." << std::endl;
        return;
    }

    int id;
    std::cout << "Silinecek müşterinin ID'sini girin: ";
    std::cin >> id;

    auto it = std::find_if(customers.begin(), customers.end(), [id](const Customer& c) { return c.id == id; });
    if (it != customers.end()) {
        customers.erase(it);
        std::cout << "Müşteri başarıyla silindi." << std::endl;
    } else {
        std::cout << "ID'si " << id << " olan bir müşteri bulunamadı." << std::endl;
    }
}

Adım 7: Müşteri Bilgilerini Görüntüleme Fonksiyonu: Kayıtlı müşterilerin bilgilerini görüntülemek için bir fonksiyon oluşturacağız. Bu fonksiyon, vektördeki her bir müşterinin bilgilerini ekrana yazacak.

void musteriBilgileriniGoruntule(const std::vector<Customer>& customers) {
    if (customers.empty()) {
        std::cout << "Kayıtlı müşteri bulunmamaktadır." << std::endl;
        return;
    }

    std::cout << "Müşteri Bilgileri:" << std::endl;
    for (const auto& customer : customers) {
        std::cout << "ID: " << customer.id << std::endl;
        std::cout << "TC Kimlik: " << customer.tcKimlik << std::endl;
        std::cout << "Ad: " << customer.ad << std::endl;
        std::cout << "Soyad: " << customer.soyad << std::endl;
        std::cout << "Doğum Tarihi: " << customer.dogumTarihi << std::endl;
        std::cout << "Telefon: " << customer.telefon << std::endl;
        std::cout << std::endl;
    }
}

Adım 8: Ana Program: Ana programda, kullanıcıya seçenekler sunulacak ve kullanıcının seçimine göre ilgili fonksiyonlar çağrılacak.

int main() {
    dosyaOlustur();
    
    int secim;
    do {
        std::cout << "1. Müşteri Ekle" << std::endl;
        std::cout << "2. Müşteri Sil" << std::endl;
        std::cout << "3. Müşteri Görüntüle" << std::endl;
        std::cout << "4. Çıkış" << std::endl;
        std::cout << "Seçiminizi yapın: ";
        std::cin >> secim;
        std::cin.ignore(); // newline karakterini temizle

        switch (secim) {
            case 1:
                kayitEkle(customers);
                break;
            case 2:
                musteriSil(customers);
                break;
            case 3:
                musteriBilgileriniGoruntule(customers);
                break;
            case 4:
                std::cout << "Programdan çıkılıyor..." << std::endl;
                break;
            default:
                std::cout << "Geçersiz seçim. Tekrar deneyin." << std::endl;
        }
    } while (secim != 4);

    return 0;
}

 

Bu adımları takip ederek, basit bir müşteri kayıt uygulamasını C++ ile nasıl oluşturabileceğinizi öğrenebilirsiniz. Uygulamanın her adımını anlamak ve daha karmaşık projelerde bu temelleri kullanmak için zaman ayırdığınızdan emin olun.

Kodu Çalıştıralım :

Kodun Tamamı :

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>

struct Customer {
    int id;
    std::string tcKimlik;
    std::string ad;
    std::string soyad;
    std::string dogumTarihi;
    std::string telefon;
};

int nextId = 1;

void dosyaOlustur() {
    std::ifstream file("musteriler.txt");
    if (!file.is_open()) {
        std::ofstream newFile("musteriler.txt");
        if (!newFile.is_open()) {
            std::cerr << "Dosya oluşturulamadı." << std::endl;
        } else {
            newFile.close();
        }
    }
    file.close();
}

void kayitEkle(std::vector<Customer>& customers) {
    Customer yeniMusteri;
    yeniMusteri.id = nextId++;

    std::cout << "TC Kimlik: ";
    std::getline(std::cin, yeniMusteri.tcKimlik);

    std::cout << "Ad: ";
    std::getline(std::cin, yeniMusteri.ad);

    std::cout << "Soyad: ";
    std::getline(std::cin, yeniMusteri.soyad);

    std::cout << "Doğum Tarihi: ";
    std::getline(std::cin, yeniMusteri.dogumTarihi);

    std::cout << "Telefon: ";
    std::getline(std::cin, yeniMusteri.telefon);

    customers.push_back(yeniMusteri);
    std::cout << "Müşteri başarıyla kaydedildi. Müşteri ID: " << yeniMusteri.id << std::endl;

    // Müşteriyi dosyaya kaydet
    std::ofstream file("musteriler.txt", std::ios_base::app);
    if (file.is_open()) {
        file << yeniMusteri.id << "," << yeniMusteri.tcKimlik << "," << yeniMusteri.ad << ","
             << yeniMusteri.soyad << "," << yeniMusteri.dogumTarihi << "," << yeniMusteri.telefon << "\n";
        file.close();
    } else {
        std::cerr << "Dosya açılamadı." << std::endl;
    }
}

void musteriSil(std::vector<Customer>& customers) {
    if (customers.empty()) {
        std::cout << "Silinecek müşteri bulunmamaktadır." << std::endl;
        return;
    }

    int id;
    std::cout << "Silinecek müşterinin ID'sini girin: ";
    std::cin >> id;

    auto it = std::find_if(customers.begin(), customers.end(), [id](const Customer& c) { return c.id == id; });
    if (it != customers.end()) {
        customers.erase(it);
        std::cout << "Müşteri başarıyla silindi." << std::endl;
    } else {
        std::cout << "ID'si " << id << " olan bir müşteri bulunamadı." << std::endl;
    }
}

void musteriBilgileriniGoruntule(const std::vector<Customer>& customers) {
    if (customers.empty()) {
        std::cout << "Kayıtlı müşteri bulunmamaktadır." << std::endl;
        return;
    }

    std::cout << "Kayıtlı Müşteriler:" << std::endl;
    for (const auto& musteri : customers) {
        std::cout << "ID: " << musteri.id << std::endl;
        std::cout << "TC Kimlik: " << musteri.tcKimlik << std::endl;
        std::cout << "Ad: " << musteri.ad << std::endl;
        std::cout << "Soyad: " << musteri.soyad << std::endl;
        std::cout << "Doğum Tarihi: " << musteri.dogumTarihi << std::endl;
        std::cout << "Telefon: " << musteri.telefon << std::endl;
        std::cout << std::endl;
    }
}

int main() {
    // Dosyayı oluştur
    dosyaOlustur();

    // Müşteri bilgilerini tutmak için bir vektör oluştur
    std::vector<Customer> customers;

    // Müşterileri dosyadan oku
    std::ifstream file("musteriler.txt");
    if (file.is_open()) {
        std::string line;
        while (std::getline(file, line)) {
            std::istringstream iss(line);
            Customer musteri;
            std::string id;
            std::getline(iss, id, ',');
            musteri.id = std::stoi(id);
            std::getline(iss, musteri.tcKimlik, ',');
            std::getline(iss, musteri.ad, ',');
            std::getline(iss, musteri.soyad, ',');
            std::getline(iss, musteri.dogumTarihi, ',');
            std::getline(iss, musteri.telefon, ',');
            customers.push_back(musteri);
        }
        file.close();
    } else {
        std::cerr << "Dosya açılamadı." << std::endl;
    }

    int secim;
    do {
        std::cout << "1. Müşteri Ekle" << std::endl;
        std::cout << "2. Müşteri Sil" << std::endl;
        std::cout << "3. Müşteri Görüntüle" << std::endl;
        std::cout << "4. Çıkış" << std::endl;
        std::cout << "Seçiminizi yapın: ";
        std::cin >> secim;
        std::cin.ignore(); // newline karakterini temizle

        switch (secim) {
            case 1:
                kayitEkle(customers);
                break;
            case 2:
                musteriSil(customers);
                break;
            case 3:
                musteriBilgileriniGoruntule(customers);
                break;
            case 4:
                std::cout << "Programdan çıkılıyor..." << std::endl;
                break;
            default:
                std::cout << "Geçersiz seçim. Tekrar deneyin." << std::endl;
        }
    } while (secim != 4);

    return 0;
}

Proje dosyası : link

Kategori:C++Yazılım Dilleri

İlk Yorumu Siz Yapın

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir