Advertisement
sylviapsh

Shopping Center With Data Table (time limits)

Jun 24th, 2013
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.73 KB | None | 0 0
  1. using System;
  2. using System.Data;
  3. using System.Text;
  4.  
  5. namespace ShoppingCenter
  6. {
  7.     public class ShoppingCenter
  8.     {
  9.         private const string ProductAdded = "Product added";
  10.  
  11.         private const string XProductsDeleted = " products deleted";
  12.  
  13.         private const string NOProductsFound = "No products found";
  14.  
  15.         private const string IncorrectCommand = "Incorrect command";
  16.  
  17.         public static DataTable center = new DataTable();
  18.  
  19.         public static void Main()
  20.         {
  21.             // first row contains column names:
  22.             center.Columns.Add("Product");
  23.             center.Columns.Add("Producer");
  24.             center.Columns.Add("Price");
  25.             center.Columns["Price"].DataType = typeof(decimal);
  26.             center.CaseSensitive = true; // Case-sensitive data tables require exact match of searched data. e.g. Forest & forest are 2 different names when this property is set to true.
  27.  
  28.             StringBuilder answer = new StringBuilder();
  29.  
  30.             int commands = int.Parse(Console.ReadLine());
  31.  
  32.             for (int i = 1; i <= commands; i++)
  33.             {
  34.                 string command = Console.ReadLine();
  35.  
  36.                 string commandResult = ProcessCommand(command);
  37.  
  38.                 answer.AppendLine(commandResult);
  39.             }
  40.  
  41.             Console.Write(answer);
  42.         }
  43.  
  44.         public static string ProcessCommand(string command)
  45.         {
  46.             int indexOfFirstSpace = command.IndexOf(' ');
  47.  
  48.             string method = command.Substring(0, indexOfFirstSpace);
  49.  
  50.             string parameterValues = command.Substring(indexOfFirstSpace + 1);
  51.  
  52.             string[] parameters = parameterValues.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
  53.  
  54.             string commandResult;
  55.  
  56.             switch (method)
  57.             {
  58.                 case "AddProduct":
  59.                     {
  60.                         commandResult = AddProduct(parameters[0], parameters[1], parameters[2]);
  61.  
  62.                         break;
  63.                     }
  64.  
  65.                 case "DeleteProducts":
  66.                     {
  67.                         if (parameters.Length == 1)
  68.                         {
  69.                             commandResult = DeleteProducts(parameters[0]);
  70.                         }
  71.                         else
  72.                         {
  73.                             commandResult = DeleteProducts(parameters[0], parameters[1]);
  74.                         }
  75.  
  76.                         break;
  77.                     }
  78.  
  79.                 case "FindProductsByName":
  80.                     {
  81.                         commandResult = FindProductsByName(parameters[0]);
  82.  
  83.                         break;
  84.                     }
  85.  
  86.                 case "FindProductsByPriceRange":
  87.                     {
  88.                         commandResult = FindProductsByPriceRange(parameters[0], parameters[1]);
  89.  
  90.                         break;
  91.                     }
  92.  
  93.                 case "FindProductsByProducer":
  94.                     {
  95.                         commandResult = FindProductsByProducer(parameters[0]);
  96.  
  97.                         break;
  98.                     }
  99.  
  100.                 default:
  101.                     {
  102.                         commandResult = IncorrectCommand;
  103.  
  104.                         break;
  105.                     }
  106.             }
  107.  
  108.             return commandResult;
  109.         }
  110.  
  111.         private static string FindProductsByProducer(string producer)
  112.         {
  113.             string filter = string.Format("Producer='" + producer + "'");
  114.             var rows = center.Select(filter, "Product ASC, Producer ASC, Price ASC");
  115.            
  116.             int counter = 0;
  117.             StringBuilder results = new StringBuilder();
  118.             foreach (var row in rows)
  119.             {
  120.                 results.Append("{");
  121.                 results.AppendFormat("{0};{1};{2:f2}", row[0], row[1], row[2]);
  122.                 results.Append("}");
  123.                 results.AppendLine();
  124.                 counter++;
  125.             }
  126.  
  127.             if (counter == 0)
  128.             {
  129.                 return NOProductsFound;
  130.             }
  131.             else
  132.             {
  133.                 results.Length--;
  134.                 results.Length--;
  135.                 return results.ToString();
  136.             }
  137.         }
  138.  
  139.         private static string FindProductsByPriceRange(string priceFrom, string priceTo)
  140.         {
  141.             string filter1 = string.Format("Price>=" + priceFrom);
  142.             string filter2 = string.Format("Price<=" + priceTo);
  143.             string filter = filter1 + " AND " + filter2;
  144.             var rows = center.Select(filter, "Product ASC, Producer ASC, Price ASC");
  145.  
  146.             int counter = 0;
  147.             StringBuilder results = new StringBuilder();
  148.             foreach (var row in rows)
  149.             {
  150.                 results.Append("{");
  151.                 results.AppendFormat("{0};{1};{2:f2}", row[0], row[1], row[2]);
  152.                 results.Append("}");
  153.                 results.AppendLine();
  154.                 counter++;
  155.             }
  156.  
  157.             if (counter == 0)
  158.             {
  159.                 return NOProductsFound;
  160.             }
  161.             else
  162.             {
  163.                 results.Length--;
  164.                 results.Length--;
  165.                 return results.ToString();
  166.             }
  167.         }
  168.  
  169.         private static string FindProductsByName(string product)
  170.         {
  171.             string filter = string.Format("Product='" + product + "'");
  172.             var rows = center.Select(filter, "Product ASC, Producer ASC, Price ASC");
  173.  
  174.             int counter = 0;
  175.             StringBuilder results = new StringBuilder();
  176.             foreach (var row in rows)
  177.             {
  178.                 results.Append("{");
  179.                 results.AppendFormat("{0};{1};{2:f2}", row[0], row[1], row[2]);
  180.                 results.Append("}");
  181.                 results.AppendLine();
  182.                 counter++;
  183.             }
  184.  
  185.             if (counter == 0)
  186.             {
  187.                 return NOProductsFound;
  188.             }
  189.             else
  190.             {
  191.                 results.Length--;
  192.                 results.Length--;
  193.                 return results.ToString();
  194.             }
  195.         }
  196.  
  197.         private static string DeleteProducts(string producer)
  198.         {
  199.             string filter = string.Format("Producer='" + producer + "'");
  200.             var rows = center.Select(filter);
  201.             int counter = 0;
  202.             foreach (var row in rows)
  203.             {
  204.                 row.Delete();
  205.                 counter++;
  206.             }
  207.  
  208.             if (counter == 0)
  209.             {
  210.                 return NOProductsFound;
  211.             }
  212.             else
  213.             {
  214.                 return counter + XProductsDeleted;
  215.             }
  216.         }
  217.  
  218.         private static string DeleteProducts(string product, string producer)
  219.         {
  220.             string filter1 = string.Format("Producer='" + producer + "'");
  221.             string filter2 = string.Format("Product='" + product + "'");
  222.             string filter = filter1 + " AND " + filter2;
  223.             var rows = center.Select(filter);
  224.             int counter = 0;
  225.             foreach (var row in rows)
  226.             {
  227.                 row.Delete();
  228.                 counter++;
  229.             }
  230.  
  231.             if (counter == 0)
  232.             {
  233.                 return NOProductsFound;
  234.             }
  235.             else
  236.             {
  237.                 return counter + XProductsDeleted;
  238.             }
  239.         }
  240.  
  241.         private static string AddProduct(string product, string price, string producer)
  242.         {
  243.             DataRow row = center.NewRow();
  244.             row[0] = product;
  245.             row[1] = producer;
  246.             row[2] = decimal.Parse(price);
  247.             center.Rows.Add(row);
  248.  
  249.             return ProductAdded;
  250.         }
  251.     }
  252. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement