Menu
CoddyTech

Tổng quan dự án

Thuộc phần Logic và luồng điều khiển trong hành trình GO của Coddy. Bài học 45 trên 68.

challenge icon

Thử thách

Dễ

Bạn sắp xây dựng một công cụ kiểm tra hàng tồn kho đơn giản giúp bạn quản lý mức tồn kho của sản phẩm.

Thiết lập nền tảng cho hệ thống quản lý hàng tồn kho bằng cách tạo các cấu trúc dữ liệu cốt lõi và hiển thị dữ liệu tồn kho ban đầu. Thử thách này tạo struct Product và map tồn kho sẽ được dùng xuyên suốt dự án.

Bạn sẽ nhận được hai đầu vào:

  • Một chuỗi chứa thông tin cửa hàng theo định dạng "store_name,location" (ví dụ: "TechStore,Downtown")
  • Một chuỗi chứa dữ liệu sản phẩm ban đầu theo định dạng "product1:price1:quantity1,product2:price2:quantity2,product3:price3:quantity3" (ví dụ: "Laptop:999.99:5,Mouse:25.50:15,Keyboard:75.00:8")

Nhiệm vụ của bạn là:

  1. Tạo struct Product với hai trường:
    • Price (float64), giá của sản phẩm
    • Quantity (int), số lượng sản phẩm hiện có trong kho
  2. Phân tích đầu vào thứ nhất bằng cách tách theo dấu phẩy để lấy tên cửa hàng và địa điểm
  3. Phân tích đầu vào thứ hai bằng cách tách theo dấu phẩy để lấy từng mục sản phẩm
  4. Với mỗi mục sản phẩm, tách theo dấu hai chấm để lấy tên sản phẩm, giá và số lượng
  5. Chuyển chuỗi giá thành float64 và chuỗi số lượng thành int
  6. Tạo một map có tên inventory, trong đó khóa là tên sản phẩm (chuỗi) và giá trị là các struct Product
  7. Thêm dữ liệu sản phẩm đã phân tích vào map tồn kho
  8. Hiển thị thông tin cửa hàng:
    • "=== [store_name] Inventory System ==="
    • "Location: [location]"
    • "Inventory initialized with [number_of_products] products"
  9. Hiển thị hàng tồn kho hiện tại theo thứ tự bảng chữ cái của tên sản phẩm:
    • "Current Inventory:"
    • Với mỗi sản phẩm: "- [product_name]: $[price] (Stock: [quantity])"
  10. Tính và hiển thị thống kê hàng tồn kho:
    • "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. Hiển thị trạng thái hệ thống:
    • "System Status: Ready"
    • "Inventory management system initialized successfully"

Dùng package strings để tách các chuỗi đầu vào, package strconv để chuyển chuỗi thành số, package fmt để định dạng đầu ra và package sort để sắp xếp tên sản phẩm theo thứ tự bảng chữ cái. Định dạng tổng giá trị hàng tồn kho với 2 chữ số thập phân. Thử thách này tạo nền tảng cấu trúc dữ liệu, sau đó sẽ được mở rộng trong các bài học tiếp theo của dự án quản lý hàng tồn kho.

Tự làm thử

package main

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

// TODO: Định nghĩa struct Product tại đây

func main() {
	// Đọc đầu vào bằng bufio.Scanner để xử lý khoảng trắng đúng cách
	scanner := bufio.NewScanner(os.Stdin)
	
	scanner.Scan()
	storeInfo := scanner.Text()
	
	scanner.Scan()
	productData := scanner.Text()
	
	// TODO: Viết code bên dưới
	// 1. Phân tích thông tin cửa hàng (tách theo dấu phẩy, kiểm tra độ dài)
	// 2. Phân tích dữ liệu sản phẩm (tách theo dấu phẩy, rồi tách từng sản phẩm theo dấu hai chấm)
	// 3. Tạo map lưu hàng tồn kho
	// 4. Chuyển các chuỗi sang kiểu dữ liệu phù hợp và điền vào kho hàng
	// 5. Hiển thị thông tin cửa hàng
	// 6. Hiển thị hàng tồn kho hiện tại (sắp xếp theo thứ tự bảng chữ cái)
	// 7. Tính và hiển thị số liệu thống kê hàng tồn kho
	// 8. Hiển thị trạng thái hệ thống
	
}

Tất cả bài học trong Logic và luồng điều khiển

Tự luyện tập: Trình biên dịch Go online