Python Sınıfları Örnekleri


Metin tabanlı "Kek Dükkanı Uygulaması"nı geliştirmek için bazı ilgili Python sınıfları kullanılmıştır.

Proje Özellikleri

  • Dükkanın pasta listesini detaylarıyla birlikte göster
  • Satın almak için sepete bir veya daha fazla pasta ekleyin
  • Sepetten bir veya daha fazla pastayı çıkar
  • Siparişi onayla
  • Siparişi iptal et
  • Programı kapat

Ön koşullar

  • Proje çalışmalarına başlamak için işletim sistemine Python 3.8+ sürümünün yüklenmesi gerekmektedir.
  • Python'un nesne yönelimli programlaması ile ilgili temel bilgi, bu eğitimde kullanılan scripti düzgün bir şekilde anlamayı gerektirecektir.

“Pasta Dükkanı Uygulaması”nın Uygulanması

Bu uygulamanın işlevlerini gerçekleştirmek için üç sınıf kullanılacaktır. Bunlar mağaza, sipariş ve müşteri'dir. Mağaza sınıfı, uygulamanın ana menüsünü görüntülemek, mağazanın pasta listesini göstermek ve kullanıcının seçtiği pastanın mağazada olup olmadığını kontrol etmek için kullanılacak ana sınıftır. Sipariş sınıfı, mağaza sınıfından türetilerek oluşturulacak bir alt sınıf olup, pasta öğelerini sepete eklemek, pasta öğelerini sepetten çıkarmak ve sepetin seçilen öğelerini görüntülemek için kullanılacaktır. “müşteri” sınıfı, “sipariş” sınıfından miras alınarak oluşturulacak başka bir alt sınıftır ve müşteri bilgileri ile satın alma ayrıntılarını görüntülemek için kullanılacaktır. Aşağıdaki diyagram, bu basit uygulamanın nasıl çalışacağını göstermektedir:

Ürün Bilgilerini Saklayın

Herhangi bir popüler veritabanı sunucu uygulaması, verileri saklamak için Python uygulamasına eklenebilir. Ancak, bu uygulamada basit tutmak için herhangi bir veritabanı sunucusu kullanılmamış ve verileri saklamak için bir metin dosyası kullanılmıştır. Uygulamanın bir sonraki bölümüne başlamadan önce products.txt adlı bir metin dosyası oluşturun ve dosyaya aşağıdaki ürün bilgilerini ekleyin. Kullanıcı, satın almak için sepete eklemek üzere bu dosyadaki pasta itemını seçecektir. Her alan burada bir virgül ile ayrılmıştır:

ürünler.txt

Id, Name,Price,Making date,expire date
01, Chocolate Cake,25, 01-06-22, 07-06-22
02, Coffee Cake,22, 02-06-22, 10-06-22
03, Vanilla Cake,30, 03-06-22, 11-06-22
04, Mud Cake,35, 02-06-22, 09-06-22
05, Straberry Cake,40,03-06-22, 12-06-22

Gerekli Modülleri İçe Aktarın

Bu uygulamada rastgele bir sayı oluşturmak, mevcut tarihi okumak ve terminalde renkli metin oluşturmak için üç modül kullanılmıştır. shop.py adında bir Python dosyası oluşturun ve modülleri içe aktarmak için dosyanın başına aşağıdaki betiği ekleyin. random modülü sipariş numarasını oluşturacaktır. date modülü mevcut sistem tarihini okuyacaktır. Ve colored modülü renkli metin üretecektir.

#Import required modules for the shop Project
import random
from datetime import date
from colored import fg, bg, attr

“shop” Sınıfını Oluştur

Gerekli modülleri içe aktardıktan sonra, shop.py dosyasına shop sınıfını tanımlayan scripti ekleyin. Bu, bu uygulamanın dört sınıf değişkeni ve üç yöntemi içeren temel sınıfıdır. Bu değişkenlerin ve yöntemlerin amacı aşağıda belirtilmiştir.

Değişkenler

sepet_öğeleri:

Bir liste değişkenidir ve kullanıcı tarafından eklenen pasta öğesini depolamak için kullanılacaktır. Kullanıcı sepete eklemek için yeni bir pasta öğesi seçtiğinde listeye yeni bir öğe eklenecek ve kullanıcı sepetteki bir pasta öğesini kaldırmak için seçtiğinde mevcut bir öğe kaldırılacaktır. Bu değişken, satın alma işlemi tamamlandığında veya iptal edildiğinde temizlenecektir.

sepet_tutar:

Bu bir tam sayı değişkenidir ve sepete eklenen ürünün fiyatının toplamını saklamak için kullanılacaktır. Bu değişkenin değeri, sepete yeni bir pasta eklendiğinde artırılacak ve bir pasta sepetten çıkarıldığında değeri azaltılacaktır. Bu değişken, satın alma işlemi tamamlandıktan veya iptal edildikten sonra 0 olarak başlatılacaktır.

müşteri_bakiye:

Bu bir tam sayı değişkenidir ve müşteri tarafından eklenen nakit değerini saklamak için kullanılacaktır. Bu değişkenin değeri, kullanıcı nakit değerini eklediğinde artırılacak ve satın alma işlemi başarıyla tamamlandığında bu değişkenin değeri azaltılacaktır.

cevap :

Bu bir string değişkenidir ve belirli bir görevi gerçekleştirmek için kullanıcının girdi değeri alınacaktır.

Yöntemler

menüyü_göster():

Bu yöntem, uygulamanın menü listesini göstermek için tanımlanmıştır. Kullanıcı “1” yazarsa, products.txt dosyasının içeriği görüntülenecektir. Kullanıcı “2” yazarsa, ürün adı almak için bir giriş istemi görünecektir. Kullanıcının sağladığı ürün adı dosyada mevcutsa, ürün adı cart_items listesine eklenir ve ürünün fiyatı cart_amount ile birlikte eklenir. Kullanıcı “3” yazarsa, uygulama sonlandırılacaktır. Renkli metni terminalde yazdırmak için yöntemde fg() fonksiyonu kullanılmıştır.

ürünleri_göster():

Bu yöntem, products.txt dosyasını satır satır okumak, her satırı virgüle göre split() fonksiyonunu kullanarak ayırmak ve bir liste değişkenine kaydetmek için tanımlanmıştır. Ardından, liste değişkeni bir for döngüsü kullanılarak dosyanın içeriğini insan tarafından okunabilir bir formatta yazdırmak için yineleme yapılacaktır.

check_products():

Bu yöntem, kullanıcının aldığı ürün adının products.txt dosyasında var olup olmadığını kontrol etmek için tanımlanmıştır. Eğer ürün adı dosyada mevcutsa, o ürünün fiyatı cart_amount değişkeninin değeriyle toplandıktan sonra True değeri işlevden dönecektir. Eğer ürün adı dosyada yoksa, “Ürün mevcut değil.” mesajı yazdırılacak ve False değeri işlevden dönecektir. Bu yöntem, kullanıcının sepete eklemek için bir ürün adı aldığı her seferinde çağrılacaktır.

"Dükkan" sınıfının betiği aşağıda verilmiştir:

'''
'shop' class is defined here to show the main menu, display product list,
and check the product exist in the file or not 
'''
class shop:

    # Declare list to store the selected product     cart_items = []     # Initialize the cart amount     cart_amount = 0     # Initialize the customer balance     cust_balance = 0     # Initialize the variable that will take user's input     answer = ''     # Define function to display the main menu     def display_menu(self):

        print("\n%s%s%s" %(fg(150), '***Welcome to our Cake shop***', attr(0)))         print("\n%s%s" %(fg(170), '1. Display Products...'))         print("2. Select Product...")         print("3. Exit")         self.answer = input("\nType 1 or 2 or 3:")         # Define function to read and display the product from the text file     def display_products(self):

                print("\nThe list of products are given below:\n")         with open('products.txt') as f:

            line = f.readline()             # Print the header of the file             print("Id\tName\t\tPrice\tMaking Date\tExpire Date")             while line:

                # Initialize counter to set the space between the fields                 counter = 0                 # Read each line from the file                 line = f.readline()                 # Split each line based on the comma (,) and store in a list                 fieldList = list(line.split(","))                 print('\t')                 # Read each value from the list and print                 for val in fieldList:

                    if counter == 0:

                        space=''                     else:

                        space='\t'                     counter = counter + 1                     if counter == 3:

                        val = '$' + val                     print(val, end=space)     # Define function to check the selected product exists in the file or not     def check_products(self, search):

        # Open the file for reading         with open('products.txt') as f:

            # Read each line of the file             for line in f:

                # Split the line value based on comma(,)                 fieldList = list(line.split(","))                 for val in fieldList:

                    # Check the selected product match with the value or not                     if search == val.strip():

                        # Add the price of the product with the cart amount if the serch value found                         self.cart_amount = self.cart_amount + int(fieldList[2].strip())                         return True         # Print message if the selected product does not exist in the file         print("The product does not exist.")         return False

“order” Sınıfını Oluştur

“shop” sınıfını ekledikten sonra, shop.py dosyasına “order” sınıfını tanımlayan scripti ekleyin. Bu, “shop” sınıfından türetilmiş bir alt sınıftır ve üç yöntem içerir. Bu yöntemlerin amacı aşağıda belirtilmiştir.

Yöntemler

sepete_ekle():

Bu yöntem, ürün products.txt dosyasında mevcutsa ürün adını cart_items listesine eklemek ve ürünü sepete ekledikten sonra bir mesaj yazdırmak için tanımlanmıştır. Bu yöntem, kullanıcı ana menünün ikinci seçeneğini (“Ürün Seç…”) “2” yazarak veya ikinci menünün birinci seçeneğini (“Ürün Ekle”) “1” yazarak seçtiğinde çağrılacaktır.

sepettekileri_kaldır():

Bu yöntem, kullanıcıdan alınan ürün adının cart_items içinde bulunması durumunda ürünü cart_items listesinden kaldırmak için tanımlanmıştır. Bu yöntem, kullanıcı ikinci menünün ikinci seçeneğini (“Ürünü Kaldır”) yazıp “2” tuşladığında çağrılacaktır. Ürün kaldırıldıktan sonra, kaldırılan ürünün fiyatı cart_amount değişkeninden düşülecektir. Kullanıcıdan alınan ürün adı cart_items listesinde yoksa “Ürün sepette mevcut değildir.” mesajı basılacaktır.

sepeti_göster():

Bu yöntem, cart_items listesinin içeriğini, cart_amount değerini ve ürünü eklemek, ürün çıkarmak, ödemeyi onaylamak veya satın almayı iptal etmek için ikinci menü öğelerini görüntülemek üzere tanımlanmıştır. Eğer cart_items listesi boşsa, o zaman “Sepetiniz boş.” mesajı görüntülenecektir. Bu yöntem, bir ürün ekleme veya bir ürünü çıkarma işlemi tamamlandığında çağrılacaktır. Bu yöntem, sepet boş değilse cart_items listesinin değerlerini döndürecektir veya sepet boşsa 0 döndürecektir.

"Sipariş" sınıfının senaryosu aşağıda verilmiştir:

'''
'order' class is defined to add product into the cart, remove product
from the cart, and display the cart item
'''
class order(shop):

    # Define function to add product into the cart     def add_to_cart(self, item):

        # Add product into the cart         self.cart_items.append(item)         print("%s is added in the cart." %(item))     # Define function to remove product from the cart     def remove_from_cart(self, obj):

        item = input("Enter the product name:")         if item in obj.cart_items:             # Remove product from the cart             obj.cart_items.remove(item)             print("Product is removed from the cart")             # Open the file to search the price of the product             with open('products.txt') as f:

                for line in f:

                    fieldList = list(line.split(","))                     for val in fieldList:

                        if item == val.strip():

                            # Remove the price of the removed product from the cart amount                             obj.cart_amount = obj.cart_amount - int(fieldList[2].strip())           else:

            print("Product does not exist in the cart.")             # Define function to display the cart items     def display_cart(self, obj):

        # Check the cart amount to find out the cart is empty or not         if obj.cart_amount > 0:

            # Display the added cart items             print("\nYou have added the following item(s) in your cart:\n")             for val in self.cart_items:

                print(val)                         # Print the total cart amount             print("\n%s%s%d%s"  %(fg(25), 'Total amount:$', obj.cart_amount, attr(0)))             # Display the second menu             print("\n1. Add Product")             print("2. Remove Product")             print("3. Confirm Payment")             print("4. Cancel")             ans = input("\nType 1 or 2 or 3 or 4:")             return ans         else:

            # Print message if the cart is empty             print("You cart is empty.")             return 0

Müşteri Sınıfı oluştur

“order” sınıfını ekledikten sonra, shop.py dosyasına “customer” sınıfını tanımlayan bir script ekleyin. Bu, yapıcı metod ve kullanıcı tanımlı bir metod içeren “order” sınıfından miras alınan başka bir alt sınıftır. Bu yöntemlerin amacı aşağıda belirtilmiştir.

Yöntemler:

Yapıcı Metot

__init__() ile tanımlanan yapıcı yöntemdir. Kullanıcının ikinci menünün üçüncü seçeneğini (“Ödeme Onayı”) seçtiğini varsayalım. Bu durumda, “müşteri” sınıfının yapıcısı, “müşteri” sınıfının nesne oluşturma anında müşteri bilgilerini başlatmak için çağrılacak ve satın alma görevini tamamlayacaktır. Bu yöntem dört argüman alacaktır. Bunlar isim, adres, telefon ve nakittir.

satın_alım_bilgisi():

Bu yöntem, sipariş numarası, sipariş tarihi, müşterinin adı, müşterinin adresi, müşterinin telefonu, satın alınan ürünlerin listesi ve tüm satın alınan ürünlerin toplam fiyatını içeren satın alma detaylarını görüntülemek için tanımlanmıştır. Burada, sipariş numarası random() fonksiyonu kullanılarak oluşturulacaktır. Kullanıcının eklediği nakit değer, sepet_tutarı değişkeninin değerine eşit veya daha fazla olduğunda bu yöntem çağrılacaktır.

"müşteri" sınıfının betiği aşağıda verilmiştir:

'''
'customer' class id defined to display the purchase information
after confirming the payment
'''
class customer(order):

    # Define constructor to initialize the customer information     def __init__(self, name, address, phone, cash):

        name = name         address = address         contact_no = phone         add_cash = cash     # Define function to display the purchase information with customer details     def purchase_info(self,obj):

        # Gnerate a random order number         order_no = random.random()*100000000         order_no = round(order_no)         # Initilize the order date         today = date.today()         order_date = today.strftime("%B %d, %Y")         # Print purchase information         print("\nYour purchase information is given below:\n")         print("Order No            :%s" %order_no)         print("Order Date          :%s" %order_date)         print("Customer's name     :%s" %name)         print("Customer's address  :%s" %address)         print("Customer's phone no :%s" %contact_no)         # Print purchased product information         print("\nPurchased product list:\n")         for val in self.cart_items:

           print(val)         print("\n%s%s%d%s"  %(fg(25), 'Total amount:$', obj.cart_amount, attr(0)))         print("Thank you.")

Nesneler Oluştur

Gerekli uygulama sınıflarını tanımladıktan sonra, sınıf değişkenlerini kullanmak için nesneler oluşturacak ve uygulamanın “Pasta Dükkanı Uygulaması”nın tamamlanmasını sağlamak için yöntemleri çağıracak olan betiği ekleyin. İlk olarak, “shop” sınıfının nesnesi tanımlanacak ve ana menüyü görüntülemek için bu nesne kullanılarak display_menu() yöntemi çağrılacaktır. Betikte, uygulamanın başlangıcında ve satın almayı onayladıktan veya iptal ettikten sonra ana menüyü görüntülemek için ilk sonsuz döngü kullanılmıştır. Bu döngü, kullanıcının ana menünün üçüncü seçeneğini (“Çıkış”) seçmesiyle sona erecek ve uygulama kapanacaktır. İkinci sonsuz döngü, kullanıcının “none” yazana kadar ürünleri sepete eklemek için kullanılmış ve bir ürün ekleyip çıkardıktan sonra ikinci menüyü görüntülemiştir. Bu döngü, kullanıcı ikinci menünün üçüncü ("Ödeme Onayla") veya dördüncü ("İptal") seçeneğini seçerse sonlandırılacaktır. Kullanıcının ikinci menünün üçüncü seçeneğini seçtiğini ve kullanıcının eklediği nakit miktarının cart_amount değerinden daha az olduğunu varsayalım. Bu durumda, ikinci menü tekrar görünecek ve mesaj olarak "Yeterli bakiyeniz yok." gösterilecektir. İkinci sonsuz döngü sonlandırıldıktan sonra hem cart_items hem de cart_amount değerleri bir sonraki alışveriş için temizlenecektir. Bu kısmın kodu aşağıda verilmiştir:

Declare object of the 'shop' class
objShop = shop()
Declare the infinite loop to display the menu repeatedly 
until the user presses '3' 
while True:

    # Display the main menu     objShop.display_menu()     # Set initial value for the remove_item     remove_item = False         # Display the main menu if the user presses '1'     if objShop.answer == '1':

        objShop.display_products()     # Display the purchase option if the user presses '2'     elif objShop.answer == '2':

        # Declare object of the 'order' class         objOrder = order()                 # Declare the infinite loop to display the second menu repeatedly         # until the user presses '3' or '4'         while True:

            # Take the product name to add into the cart if the value of remove_item is False             if remove_item == False:

                item = input("\nType the product name:")             if item == 'none' :

                # Display the cart after adding or removing the product                 return_val = objOrder.display_cart(objShop)                 # Terminate from the loop if the cart is empty                 if return_val == 0:

                    break                 elif return_val == '1':

                    item = input("Type the product name:")                     # Check the product exists in the products.txt file or not                     pro_exist = objShop.check_products(item)                     # Add the products into the cart if the product exists                     if pro_exist == True:

                        objOrder.add_to_cart(item)                     remove_item = False                                     elif return_val == '2':

                    # Remove the selected product from the cart                     return_val = objOrder.remove_from_cart(objShop)                     remove_item = True                                     elif return_val == '3':

                    # Take customer's information                     name = input("Enter your name:")                     address = input("Enter your address:")                     contact_no = input("Enter your contact number:")                     cash = int(input("Add cash: $"))                     # Add the cash value with the customer's current balance                     objShop.cust_balance = objShop.cust_balance + cash                     # Check the balance of the customer is less than the cart amount ot not                     if objShop.cust_balance < objShop.cart_amount:

                        print("You have not enough balance.")                     else:

                        # Create object of the 'customer' class                         objCustomer = customer(name, address, contact_no, cash)                         # Print the purchase information                         objCustomer.purchase_info(objShop)                         # Deduct the purchase amount from the customer's balance                         objShop.cust_balance = cash - objShop.cart_amount                                       break                 else:

                    # Print message if the customer cancels the purchase                     print("You have cancelled your purchase.")                     break             else:

                # Add the products into the cart if the product exists                 pro_exist = objShop.check_products(item)                 if pro_exist == True:

                     objOrder.add_to_cart(item)                 print("Type 'none' to stop adding product")         # Clear the cart list after purchased or cancelled         objShop.cart_items.clear()         # Clear the cart amount after purchased or cancelled         objShop.cart_amount = 0         # Terminate from the application if the users presses '3'     elif objShop.answer == '3':

        print("\nTerminated from the application.")         exit()

Uygulama Çıktısı

Tüm betikleri shop.py dosyasına sırayla ekledikten sonra, uygulamanın doğru çalışıp çalışmadığını kontrol edebilirsiniz. Bu uygulamanın nasıl kullanılacağı, eğitimin bu bölümünde gösterilmiştir.

Uygulamayı Çalıştır

Öncelikle, kullanıcı terminali açmalı ve products.txt ve shop.py dosyalarının bulunduğu konuma gitmelidir. Bu dosyaları doğru bir şekilde çıktı almak için aynı konumda saklamanız gerekmektedir. Uygulamayı çalıştırmak için aşağıdaki komutu girin:

python3 shop.py

Aşağıdaki çıktı, önceki komut çalıştırıldıktan sonra görünecektir. Bu, bu uygulamanın ana menüsüdür. Kullanıcı, çıktıdaki üç seçenekten herhangi birini “1 ” veya “2 ” veya “3 ” yazarak seçebilir. Kullanıcı “1 ” yazarsa, ürünlerin listesi görüntülenecektir. Kullanıcı “2 ” yazarsa, ürün adını almak için bir giriş istemi belirecektir. Kullanıcı “3 ” yazarsa, uygulama kapatılacaktır. Kullanıcı başka bir karakter yazarsa, menü tekrar görünecektir.

Ürünleri Göster

Kullanıcı “1 ” yazarsa aşağıdaki çıktı görüntülenecektir. products.txt dosyasının içeriği bu çıktıda gösterilmiştir. Kullanıcı, çıktıda görünen herhangi bir pasta adını sepete eklemek için seçebilir ve bu işlemi yapmak için menünün ikinci seçeneğini seçmelidir.

Ana Menü Kullanarak Ürünü Sepete Ekleyin

Uygulamada ürünü sepete eklemek için iki yol vardır. İlk yol, ana menüde ikinci seçeneği seçmektir. Kullanıcı “2 ” yazarsa aşağıdaki çıktı belirecektir. Kullanıcının, dosyada mevcut olan herhangi bir kek ürününün adını yazarak sepete eklemesi gerekmektedir.

Kullanıcı ürün listesindeki “Mud Cake” yazdığında aşağıdaki çıktı görünecektir. Çıktıda ürünün sepete eklendiği gösterilmektedir ve kullanıcı, ürün adını tekrar yazarak başka bir ürün ekleyebilir. Kullanıcı herhangi bir ürün eklemek istemiyorsa, “none” yazmalıdır.

Aşağıdaki çıktı, başka bir ürün olan “Türk Kahvesi Kek” eklenirse görünecektir:

Aşağıdaki çıktı, değer olarak "hiçbiri" yazıldığında belirecektir. Sepet öğelerinin listesi çıktıda gösterilmektedir. İki pasta öğesi eklenmiştir: "Çamur Pastası" ve "Kahve Pastası". "Çamur Pastası" nın fiyatı $35 ve "Kahve Pastası" nın fiyatı $22'dir. Pastaların toplam fiyatı $35+$22=$57, çıktıda gösterilmektedir. Sepet bilgileri gösterildikten sonra ikinci menü görüntülendi. Kullanıcı bu menü aracılığıyla ürün ekleyebilir, ürün çıkarabilir, sepete eklenen ürünleri satın alabilir ve satın alma işlemini iptal edebilir:

Ürünü İkinci Menüyü Kullanarak Sepete Ekleyin

Kullanıcı “2 ” yazdıysa aşağıdaki çıktı görünecektir. Kullanıcı, sepete eklemek için dosyada bulunan herhangi bir pasta isminin yazılması gerekiyor.

Aşağıdaki çıktı, giriş değeri olarak "Vanilyalı Kek" yazıldıktan sonra görünecektir. Kullanıcı, ürün adını tekrar yazarak sepete daha fazla ürün ekleyebilir. Eğer kullanıcı daha fazla ürün eklemek istemiyorsa, sepete ürün eklemeyi durdurmak için "hiçbiri" yazması gerekmektedir.

Aşağıdaki çıktı, girdi değeri olarak “none” yazdıktan sonra görünecektir. Çıktı, yeni ürün “Vanilla Cake”ın sepete eklendiğini ve “Vanilla Cake”ın fiyatının sepet tutarına eklendiğini gösteriyor. Bu nedenle, toplam miktar şimdi $57 + $30=$87. İkinci menü tekrar görünmüştür. Bu menünün amacı daha önce açıklanmıştır.

Ürünü Sepetten Kaldır

Kullanıcı giriş değeri olarak “2” yazarsa aşağıdaki çıktı görünecektir. Kullanıcının sepette bulunan herhangi bir pasta ürününün adını yazması gerekmektedir; böylece o ürün sepetten kaldırılabilir. Kullanıcı sepette mevcut olmayan herhangi bir değer yazarsa, bir hata mesajı yazdırılacaktır.

Kullanıcı, ürünler.txt dosyasında var olan ancak sepette bulunmayan Çikolatalı Kek ifadesini girdiğinde aşağıdaki çıktı görünecektir. Bu nedenle, hata mesajı, Ürün sepette mevcut değil. çıktıda yer almış olup, sepete bir öğe eklenmemiş veya çıkarılmamıştır. Sepetin toplam tutar değeri de değişmemiştir.

Kullanıcı, sepette mevcut olan “Kahve Keki” ifadesini girdiğinde aşağıdaki çıktı görünecektir. Başarı mesajı, “Ürün sepetten çıkarıldı” yazılmıştır. Çıktı ayrıca “Kahve Keki”nın sepetten çıkarıldığını ve bu öğenin fiyat değerinin sepet miktarından düşüldüğünü göstermektedir. “Kahve Keki”nın fiyatı $22. Bu nedenle, sepetin toplam tutarı artık $87 – $22=$65.

Sepetten tüm ürünler çıkarıldığında aşağıdaki çıktı görünecektir. Çıktıda iki mesaj yer alıyor. Biri son ürünü kaldırmak için, diğeri ise kullanıcıya sepetin şimdi boş olduğunu bildirmek için. Sepette ürün kalmadığı için ikinci menü kaybolmuştur ve ana menü tekrar görünmüştür.

Ödeme Yap

İkinci menünün üçüncü seçeneği, müşterinin bilgilerini ve sepet tutarını ekleyerek satın almayı onaylamak için kullanılır. Kullanıcı, sepetine birkaç kek ürünü ekledikten sonra ikinci menünün üçüncü seçeneğini seçmek için “3 ” yazarsa, aşağıdaki çıktı belirecektir. Çıktı, sepetine iki kek ürünü eklendiğini ve keklerin toplam fiyatının 60 ABD doları olduğunu gösteriyor. “3 ” değerini yazdıktan sonra müşterinin adını almak için girdi istemi belirmiştir. Daha sonra, müşteriye ve ürünü satın almak için nakit miktarına ilişkin diğer bilgileri eklemek için başka girdi istemleri belirecektir.

Aşağıdaki çıktıda, müşterinin adı, adresi, telefon numarası ve nakit tutarı eklenmiştir. Ancak eklenen nakit değeri, ürünlerin toplam fiyatından daha azdır. Toplam sepet tutarı 60 dolardı ve 45 dolar nakit değeri olarak eklenmiştir. Bu nedenle, "Yetersiz bakiyeniz var." mesajı görünmüş ve sepet boşaltılarak sipariş iptal edilmiştir. Ana menü tekrar görünmüştür.

Kullanıcının eklediği nakit miktarı, sepetin toplam tutarına eşit veya daha fazla olduğunda aşağıdaki çıktı görünecektir. Burada, sepetin toplam fiyatı 35$, ve kullanıcı 100$nakit değerini ekledi, bu da toplam fiyatın üzerindedir. Çıktıda, rastgele bir numaranın sipariş numarası olarak oluşturulduğu ve mevcut sistem tarihinin sipariş tarihi olarak yazdırıldığı gösterilmektedir. Ana menü bir sonraki alışveriş için tekrar görünmüştür. Kullanıcının mevcut bakiyesi 100$- 35$= 65$'dır. Aynı kullanıcı dükkanından yine herhangi bir pasta ürünü satın alırsa, satın alma tutarı kullanıcının mevcut bakiyesinden düşülecektir.

Kullanıcı tekrar satın alım yaptığında ve satın alma miktarı mevcut bakiyesinden az olduğunda aşağıdaki çıktı görünecektir. Çıktıya göre, iki pasta ürünü sepete eklenmiş ve pastaların toplam fiyatı 47$'dır. Kullanıcı 0$nakit eklemiştir, ancak müşterinin mevcut bakiyesi 65$'dır. Bu nedenle, ödeme başarıyla tamamlanmış ve 'Teşekkür ederiz' mesajı yazdırılmıştır. Kullanıcının mevcut bakiyesi 65$- 47$= 18$'dır.

Eğer aynı kullanıcı tekrar sepete bir ürün eklerse ve ürünün toplam fiyatı kullanıcının mevcut bakiyesinden az ise, o zaman aşağıdaki çıktı görünecektir. Kullanıcının son işlemden sonra mevcut bakiyesi $18, ancak ürünün toplam fiyatı $30'dur. Bu nedenle, "Yeterli bakiyeniz yok." mesajı yazılmıştır ve sipariş, sepeti boşaltarak iptal edilmiştir.

Kullanıcı, 30 dolarlık "Vanilyalı Kek" satın almak için 12 doları 18 dolara eklerse, aşağıdaki çıktı görünecektir. Kullanıcının satın alma işlemi sonrası mevcut bakiyesi 0 dolardır.

Ödemeyi İptal Et

Kullanıcı, sepete ürünleri ekledikten sonra ikinci menünün dördüncü seçeneğini seçerek veya sepetteki tüm ürünleri çıkararak siparişi iptal edebilir. Kullanıcı, ikinci menünün dördüncü seçeneğini “4 ” yazarak seçerse aşağıdaki çıktı görünecektir. Siparişi iptal etmek için “Satın almanızı iptal ettiniz.” mesajı yazdırılmıştır. Sepetteki tüm ürünleri çıkararak siparişi iptal etme yöntemi daha önce gösterilmiştir. Sipariş iptal edildikten sonra ana menü görünecektir.

Uygulamayı Kapat

Uygulama ana menüdeki üçüncü seçeneği seçerek kapatılabilir. Kullanıcı uygulamayı kapatmak için “3 ” yazarsa aşağıdaki çıktı görünecektir. Uygulama, “Uygulamadan sonlandırıldı” mesajı ile sonlandırılmıştır.

Bu Uygulamanın Sınırlamaları

Python sınıflarıyla çok basit bir metin tabanlı uygulamanın nasıl uygulanacağı bu eğitimde gösterilmiştir. Ancak bu uygulamanın aşağıda belirtilen bazı sınırlamaları vardır:

  • Hiçbir sipariş veya müşteri bilgisi kalıcı olarak saklanmamaktadır. Uygulamanın önceki satışların kayıtlarını tutması gerekmektedir. Sipariş ve müşteri bilgilerini saklamak için iki adet daha metin dosyası oluşturulabilir.
  • Bu uygulamada stok kaydı tutulmamaktadır, bu da mağaza uygulamasının önemli bir parçasıdır. Eğer herhangi bir ürün tükenmişse, kullanıcıya bir mesaj iletilmelidir.
  • Kullanıcı aynı ürünü birden fazla kez eklerse, her ürün ayrı ayrı eklenir, bu da verimsizdir. Aynı ürün birden fazla kez eklenirse, sepetimdeki her ürünün sayısını saymak önemlidir.
  • Siparişi iptal etmeden tek bir komutla sepetten tüm ürünleri kaldırma seçeneği yok. Kullanıcı, sepeti tamamen boşaltmak için her bir ürünü ayrı ayrı kaldırmak zorundadır.
  • Ödeme tamamlandıktan sonra kalan müşteri bakiyesi görüntülenmez. Bu, kullanıcının sonraki sipariş için nakit eklemesine yardımcı olacaktır.

***Bu eğitimin okuyucuları, yukarıda bahsedilen özellikleri uygulamaya koymayı deneyecekler; bu sayede programlama becerilerini geliştirip uygulamayı öğrenmek için daha verimli hale getirecekler.

Bu Konuda Video Eğitimi

Sonuç

Bu kılavuzda, yeni başlayan Python kullanıcıları için basit bir metin tabanlı Python uygulamasını uygulamak için yönergeler sunulmuştur. Bu kılavuzda ürün listesi, sepete ekleme, sepetten çıkarma, ödeme sistemi ve ödemeyi iptal etme gibi alışveriş uygulamasının temel özellikleri kullanılmaktadır. Basitlik açısından, verileri kalıcı olarak depolamak için burada metin dosyası kullandık. Ancak uygulama verilerini daha verimli bir şekilde yönetmek için SQLite ve MySQL gibi herhangi bir standart veritabanı uygulaması kullanılabilir.