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
İlk Yorumu Siz Yapın