2016-01-19 3 views
0

У меня есть простая инвентаризационная программа, которая представляет собой программу, которую вы можете добавлять, просматривать и удалять. В настоящее время я уже закончил функцию добавления и просмотра, но оставил только функцию удаления, о которой я не уверен. (Основная программа случай 3)Функция удаления для простой инвентаризации

class Inventory 
{ 
    Product []items; 
    int maxSize; 
    int size; 

    public Inventory(int in_maxSize) 
    { 
     maxSize = in_maxSize; 
     size = 0; 
     items = new Product[maxSize]; 
    } 

    public bool AddProduct(Product in_Product) 
    { 
     if(getSize()<maxSize) 
     { 
      items[size] = in_Product; 
      size++; 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 

    public int getSize() 
    { 
     return size; 
    } 
    public Product getProduct(int index) 
    { 
     return items[index]; 
    } 
    } 
} 

вот мой класс продукта:

class Product 
{ 
    private string name; 
    private int itemNumber; 
    private int unitsInStock; 
    private double price; 
    private double value; 

    public Product() 
    { 

    } 

    public Product(string in_name, int in_itemNumber, int in_unitsInStock, double in_price) 
    { 
     name = in_name; 
     itemNumber = in_itemNumber; 
     unitsInStock = in_unitsInStock; 
     price = in_price; 
    } 
    public double getValueOfInventory() 
    { 
     value = unitsInStock * price; 
     return this.value; 
    } 
    public int getItemNumber() 
    { 
     return this.itemNumber; 
    } 
    public string getName() 
    { 
     return this.name; 
    } 
    public int getUnitsInStock() 
    { 
     return this.unitsInStock; 
    } 
    public double getPrice() 
    { 
     return this.price; 
    } 
    public void setItemNumber(int in_itemNumber) 
    { 
     itemNumber = in_itemNumber; 
    } 
    public void setName(string in_name) 
    { 
     name = in_name; 
    } 
    public void setUnitsInStock(int in_unitsInStock) 
    { 
     unitsInStock = in_unitsInStock; 
    } 
    public void setPrice(double in_price) 
    { 
     price = in_price; 
     } 
    } 
    } 

Вот моя основная программа:

 class Program 
    { 
    static void Main(string[] args) 
    { 
     Inventory myInventory = new Inventory(100); 
     Product myProduct = new Product(); 
     myProduct.setItemNumber(1000); 
     myProduct.setName("Pen"); 
     myProduct.setPrice(1.25); 
     myProduct.setUnitsInStock(50); 
     myInventory.AddProduct(myProduct); 
     Product myProduct1 = new Product("Paper", 2000, 5000, 12.85); 
     myInventory.AddProduct(myProduct1); 


     Product tempProduct; 
     int x = 0; 

     do 
     { 

      Console.WriteLine("1.Add product"); 
      Console.WriteLine("2.View product"); 
      Console.WriteLine("3.Delete product"); 
      Console.WriteLine("4.Exit the Application"); 
      Console.WriteLine("------------------"); 


      x = Convert.ToInt32(Console.ReadLine()); 



      switch (x) 
      { 
       case 1: 




        Console.Write("Item number\t\t:"); 
        int a=Convert.ToInt32(Console.ReadLine()); 

        Console.Write("Name\t\t\t:"); 
        string b=Convert.ToString(Console.ReadLine()); 

        Console.Write("Price\t\t\t:"); 
        double c=Convert.ToDouble(Console.ReadLine()); 

        Console.Write("Units in stocks\t\t:"); 
        int d=Convert.ToInt32(Console.ReadLine()); 



     Product myProduct2 = new Product(b,a,d,c); 
     myInventory.AddProduct(myProduct2); 





     // Product myProduct1 = new Product("Paper", 2000, 5000, 12.85); 
     // myInventory.AddProduct(myProduct1); 

        /*Console.Write("Item number\t\t:"); 
        ItemNo = Convert.ToInt32(Console.ReadLine()); 

        Console.Write("Name\t\t\t:"); 
        Name = Convert.ToString(Console.ReadLine()); 

        Console.Write("Price\t\t\t:"); 
        Price = Convert.ToDouble(Console.ReadLine()); 

        Console.Write("Units in stocks\t\t:"); 
        UnitsInStocks = Convert.ToInt32(Console.ReadLine()); 

        Console.WriteLine("------------------");*/ 
        break; 

       case 2: 

        for (int i = 0; i < myInventory.getSize(); i++) 
        { 

         tempProduct = myInventory.getProduct(i); 
         Console.WriteLine("Item number\t\t:" + tempProduct.getItemNumber()); 
         Console.WriteLine("Name\t\t\t:" + tempProduct.getName()); 
         Console.WriteLine("Price\t\t\t:" + tempProduct.getPrice()); 
         Console.WriteLine("Units in stocks\t\t:" + tempProduct.getUnitsInStock()); 
         Console.WriteLine("------------------"); 
        } 
        break; 

       case 3: 
        int j; 
        Console.WriteLine("Please enter the item id for the items that you want to delete"); 
        j = Convert.ToInt32(Console.ReadLine()); 
        if (j == a) 
        { 


        break; 

       case 4: 

        Environment.Exit(0); 

        break; 

       default: 
        break; 

      } 



     } 
     while (x != 4); 
    } 

    } 
} 

В моей основной программе, я оставил случай 3 уничтоженных как это часть функции удаления, Как это сделать?

+0

Возможный дубликат [Как удалить элемент из массива в C#] (http://stackoverflow.com/questions/496896/how-to-delete-an-element-from-an-array-in-c -sharp) – Sinatr

ответ

0

Это простой способ. Замените массив с Список продуктов:

class Inventory 
{ 
    List<Product> items; 
    int maxSize; 

    public Inventory(int in_maxSize) 
    { 
     maxSize = in_maxSize; 
     items = new List<Product>(); 
    } 

    public bool AddProduct(Product in_Product) 
    { 
     if(items.Count < maxSize) 
     { 
      items.Add(in_Product); 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 

    public Product getProduct(int index) 
    { 
     return items[index]; 
    } 

    public void removeProduct(int index) 
    { 
     items.removeAt(index); 
    } 
} 

В коммутатору вызова removeProduct метод удаления продукта в положении, которое вы проходите.

+0

Спасибо за ответ, о моем случае вызова коммутатора 2, как я должен продолжать цикл без getize? меняя myinventory.getsize() на maxsize или item.count? Также как вы называете этот метод? К сожалению, я раньше не использовал список: c – Lyber

+0

Используйте myinvetory.item.count или создайте новый метод getsize(), который просто возвращает item.count. Кстати, вы также можете использовать [indexers] (https://msdn.microsoft.com/en-us/library/6x16t2tx.aspx) в вашем случае :-) Я не опубликовал решение с ним для лени (некоторый код для написания) :-) Надеюсь, это поможет – erikscandola

+0

Спасибо! Как-то удается заставить его работать, но я мог только удалить продукт в позиции, которую я передал, я предполагаю, что мне нужно будет создать массив [], чтобы я мог удалить его в соответствии с номером, который я хочу, – Lyber

Смежные вопросы