using System;
using System.Collections.Generic;
namespace InventoryExample
{
// 아이템 클래스
class Item
{
public string Name { get; set; }
public int Quantity { get; set; }
public Item(string name, int quantity)
{
Name = name;
Quantity = quantity;
}
}
// 인벤토리 클래스
class Inventory
{
private List<Item> items;
public Inventory()
{
items = new List<Item>();
}
public void AddItem(string name, int quantity)
{
Item existingItem = FindItem(name);
if (existingItem != null)
{
existingItem.Quantity += quantity;
}
else
{
Item newItem = new Item(name, quantity);
items.Add(newItem);
}
}
public void RemoveItem(string name, int quantity)
{
Item existingItem = FindItem(name);
if (existingItem != null)
{
existingItem.Quantity -= quantity;
if (existingItem.Quantity <= 0)
{
items.Remove(existingItem);
}
}
}
public void DisplayInventory()
{
Console.WriteLine("*************************************");
Console.WriteLine("인벤토리:");
foreach (Item item in items)
{
Console.WriteLine($"{item.Name}x{item.Quantity}");
}
Console.WriteLine("*************************************");
}
public void SortInventory(bool ascending)
{
if (ascending)
{
items.Sort((x, y) => x.Name.CompareTo(y.Name));
}
else
{
items.Sort((x, y) => y.Name.CompareTo(x.Name));
}
}
public void ClearInventory()
{
items.Clear();
Console.WriteLine("인벤토리를 초기화했습니다.");
}
private Item FindItem(string name)
{
foreach (Item item in items)
{
if (item.Name == name)
{
return item;
}
}
return null;
}
}
// 인벤토리 메뉴 클래스
class ItemMenu
{
private Inventory inventory;
public ItemMenu()
{
inventory = new Inventory();
}
public void ShowMenu()
{
while (true)
{
Console.Clear();
Console.WriteLine("*************************************");
Console.WriteLine("인벤토리 메뉴:");
Console.WriteLine("1. 아이템 추가");
Console.WriteLine("2. 아이템 삭제");
Console.WriteLine("3. 아이템 목록 표시");
Console.WriteLine("4. 인벤토리 정렬");
Console.WriteLine("5. 인벤토리 초기화");
Console.WriteLine("6. 종료");
Console.WriteLine("*************************************");
Console.Write("번호를 입력하세요: ");
int choice = Convert.ToInt32(Console.ReadLine());
switch (choice)
{
case 1:
AddItem();
break;
case 2:
RemoveItem();
break;
case 3:
DisplayItemList();
break;
case 4:
SortInventoryMenu();
break;
case 5:
ClearInventory();
break;
case 6:
Console.WriteLine("인벤토리를 종료합니다.");
return;
default:
Console.WriteLine("유효하지 않은 선택입니다. 다시 시도해주세요.");
break;
}
Console.WriteLine("인벤토리 메뉴로 돌아가려면 1을 누르세요. 종료하려면 다른 키를 누르세요.");
Console.Write("번호를 입력하세요: ");
int returnChoice = Convert.ToInt32(Console.ReadLine());
if (returnChoice != 1)
{
Console.WriteLine("인벤토리를 종료합니다.");
return;
}
}
}
private void AddItem()
{
Console.Write("아이템 이름: ");
string name = Console.ReadLine();
Console.Write("아이템 수량: ");
int quantity = Convert.ToInt32(Console.ReadLine());
inventory.AddItem(name, quantity);
Console.WriteLine("아이템이 성공적으로 추가되었습니다.");
}
private void RemoveItem()
{
Console.Write("아이템 이름: ");
string name = Console.ReadLine();
Console.Write("아이템 수량: ");
int quantity = Convert.ToInt32(Console.ReadLine());
inventory.RemoveItem(name, quantity);
Console.WriteLine("아이템이 성공적으로 삭제되었습니다.");
}
private void DisplayItemList()
{
inventory.DisplayInventory();
}
private void SortInventory(bool ascending)
{
inventory.SortInventory(ascending);
Console.WriteLine("인벤토리가 성공적으로 정렬되었습니다.");
}
private void SortInventoryMenu()
{
Console.WriteLine("*************************************");
Console.WriteLine("인벤토리 정렬:");
Console.WriteLine("1. 오름차순");
Console.WriteLine("2. 내림차순");
Console.WriteLine("3. 취소");
Console.WriteLine("*************************************");
Console.Write("번호를 입력하세요: ");
int sortChoice = Convert.ToInt32(Console.ReadLine());
switch (sortChoice)
{
case 1:
SortInventory(true);
break;
case 2:
SortInventory(false);
break;
case 3:
break;
default:
Console.WriteLine("유효하지 않은 선택입니다. 다시 시도해주세요.");
break;
}
}
private void ClearInventory()
{
inventory.ClearInventory();
}
}
// 메인 클래스
class Program
{
static void Main(string[] args)
{
ItemMenu itemMenu = new ItemMenu();
itemMenu.ShowMenu();
}
}
}