Menu
Coddy logo textTech

Projeye Genel Bakış

Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 45 / 68.

challenge icon

Görev

Kolay

Ürün stok seviyelerini yönetmenize yardımcı olacak basit bir envanter kontrolcüsü oluşturmak üzeresiniz.

Temel veri yapılarını oluşturarak ve başlangıç envanter verilerini görüntüleyerek envanter yönetim sisteminizin temelini atın. Bu görev, proje boyunca kullanılacak olan Product yapısını (struct) ve envanter haritasını (map) oluşturur.

İki girdi alacaksınız:

  • "store_name,location" formatında mağaza bilgilerini içeren bir dize (örneğin, "TechStore,Downtown")
  • "product1:price1:quantity1,product2:price2:quantity2,product3:price3:quantity3" formatında başlangıç ürün verilerini içeren bir dize (örneğin, "Laptop:999.99:5,Mouse:25.50:15,Keyboard:75.00:8")

Göreviniz şunları yapmaktır:

  1. İki alana sahip bir Product yapısı (struct) oluşturun:
    • Price (float64) - ürünün fiyatı
    • Quantity (int) - mevcut stok miktarı
  2. Mağaza adını ve konumunu almak için ilk girdiyi virgüllere göre ayırarak ayrıştırın
  3. Bireysel ürün girişlerini almak için ikinci girdiyi virgüllere göre ayırarak ayrıştırın
  4. Her ürün girişi için, ürün adını, fiyatını ve miktarını almak üzere iki nokta üst üste işaretine göre ayırın
  5. Fiyat dizesini float64'e ve miktar dizesini int'e dönüştürün
  6. Anahtarların ürün adları (dizeler) ve değerlerin Product yapıları olduğu inventory adında bir harita (map) oluşturun
  7. Envanter haritasını ayrıştırılmış ürün verileriyle doldurun
  8. Mağaza bilgilerini görüntüleyin:
    • "=== [store_name] Inventory System ==="
    • "Location: [location]"
    • "Inventory initialized with [number_of_products] products"
  9. Mevcut envanteri ürün adına göre alfabetik sırayla görüntüleyin:
    • "Current Inventory:"
    • Her ürün için: "- [product_name]: $[price] (Stock: [quantity])"
  10. Envanter istatistiklerini hesaplayın ve görüntüleyin:
    • "Inventory Statistics:"
    • "Total Products: [total_number_of_products]"
    • "Total Items in Stock: [sum_of_all_quantities]"
    • "Total Inventory Value: $[sum_of_price_times_quantity_for_all_products]"
  11. Sistem durumunu görüntüleyin:
    • "System Status: Ready"
    • "Inventory management system initialized successfully"

Girdi dizelerini ayırmak için strings paketini, dizeleri sayılara dönüştürmek için strconv paketini, biçimlendirilmiş çıktı için fmt paketini ve ürün adlarını alfabetik olarak sıralamak için sort paketini kullanın. Toplam envanter değerini virgülden sonra 2 basamak olacak şekilde biçimlendirin. Bu görev, envanter yönetimi projesinin sonraki derslerinde genişletilecek olan temel veri yapılarını oluşturur.

Kendin dene

package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
	"strconv"
	"strings"
)

// TODO: Product yapısını (struct) burada tanımlayın

func main() {
	// Boşlukları düzgün işlemek için bufio.Scanner kullanarak girdiyi okuyun
	scanner := bufio.NewScanner(os.Stdin)
	
	scanner.Scan()
	storeInfo := scanner.Text()
	
	scanner.Scan()
	productData := scanner.Text()
	
	// TODO: Kodunuzu aşağıya yazın
	// 1. Mağaza bilgilerini ayrıştırın (virgülle ayırın, uzunluğu kontrol edin)
	// 2. Ürün verilerini ayrıştırın (virgülle ayırın, ardından her ürün için iki nokta üst üste ile ayırın)
	// 3. Envanter haritası (map) oluşturun
	// 4. Dizeleri uygun türlere dönüştürün ve envanteri doldurun
	// 5. Mağaza bilgilerini görüntüleyin
	// 6. Mevcut envanteri görüntüleyin (alfabetik olarak sıralanmış)
	// 7. Envanter istatistiklerini hesaplayın ve görüntüleyin
	// 8. Sistem durumunu görüntüleyin
	
}

Mantık ve Akış bölümündeki tüm dersler