Jater

Struct_File_XML

Mar 29th, 2014
84
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6. using System.Runtime.Serialization.Formatters.Binary;
  7. using System.Runtime.Serialization;
  8. using System.Xml;
  9. using System.Xml.Serialization;
  10. /*Структурированный тип: тарифный план сотовой связи
  11. Поля: Название фирмы-провайдера, название тарифа, абонентская плата, стоимость минуты разговора
  12. Функции:
  13. Заполнение файла структур с клавиатуры
  14. Печать файла структур на экране
  15. Поиск тарифа с минимальной абонентской платой
  16. Подсчет оптимального по цене тарифа с условием, что абонент планирует наговаривать в месяц не более некоторого числа минут,
  17.  * заданного с клавиатуры
  18.  На 1,4. Для хранения данных использовать xml файл*/
  19. namespace K3S4_IDZ3_struct
  20. {
  21.     public class Program
  22.     {
  23.         [Serializable]
  24.         public struct plan
  25.         {
  26.             public string provider;
  27.             public string name;
  28.             public decimal price;
  29.             public decimal minute;
  30.         }
  31.  
  32.         static Array reader()
  33.         {
  34.             plan[] tarif;
  35.             XmlSerializer reader = new XmlSerializer(typeof(plan[]));
  36.             StreamReader file = new StreamReader(@"plan.xml");
  37.             tarif = (plan[])reader.Deserialize(file);
  38.             file.Close();
  39.             return tarif;
  40.         }
  41.  
  42.         static void rec_tar()
  43.         {
  44.             int choise = 0;
  45.             int i = 0;
  46.             plan[] tarif = new plan[i];
  47.             if (File.Exists("plan.xml"))
  48.             {
  49.                 tarif = (plan[])reader();
  50.                 i = tarif.Length;
  51.             }
  52.             do
  53.             {
  54.                 i++;
  55.                 Array.Resize(ref tarif, i);
  56.                 Console.Write("Введите название опертора: ");
  57.                 tarif[i - 1].provider = Console.ReadLine();
  58.                 Console.Write("Введите название тарифа: ");
  59.                 tarif[i - 1].name = Console.ReadLine();
  60.                 Console.Write("Введите абонентскую плату: ");
  61.                 tarif[i - 1].price = decimal.Parse(Console.ReadLine());
  62.                 Console.Write("Введите стоимость минуты разговора: ");
  63.                 tarif[i - 1].minute = decimal.Parse(Console.ReadLine());
  64.                 Console.Write("Ввести следующий тариф:? (1 - да, 2 - нет) ");
  65.                 choise = int.Parse(Console.ReadLine());
  66.             } while (choise != 2);
  67.             XmlDocument g = new XmlDocument();
  68.             g.CreateXmlDeclaration("1.0", "utf-8", null);
  69.             XmlSerializer writer = new XmlSerializer(typeof(plan[]));
  70.             StreamWriter file = new StreamWriter(@"plan.xml");
  71.             writer.Serialize(file, tarif);
  72.             file.Close();
  73.         }
  74.  
  75.         static void out_tar()
  76.         {
  77.             plan[] tarif;
  78.             tarif = (plan[])reader();
  79.             for (int i = 0; i < tarif.Length; i++)
  80.             {
  81.                 Console.Write(tarif[i].provider + "\t" + "\t" + "| ");
  82.                 Console.Write(tarif[i].name + "\t" + "\t" + "| ");
  83.                 Console.Write(tarif[i].price + "\t" + "\t" + "| ");
  84.                 Console.Write(tarif[i].minute);
  85.                 Console.WriteLine();
  86.             }
  87.         }
  88.  
  89.         static void max_tar()
  90.         {
  91.             plan[] tarif;
  92.             tarif = (plan[])reader();
  93.             decimal min = tarif[0].price;
  94.             foreach (plan item in tarif)
  95.                 if (item.price < min)
  96.                     min = item.price;
  97.             foreach (plan item in tarif)
  98.                 if (item.price == min)
  99.                 {
  100.                     Console.Write(item.provider + "\t" + "\t" + "| ");
  101.                     Console.Write(item.name + "\t" + "\t" + "| ");
  102.                     Console.Write(item.price + "\t" + "\t" + "| ");
  103.                     Console.Write(item.minute);
  104.                 }
  105.             Console.WriteLine();
  106.         }
  107.  
  108.         static void opt_tar()
  109.         {
  110.             plan[] tarif;
  111.             tarif = (plan[])reader();
  112.             Console.Write("Сколько минут собираетесь разговаривать? ");
  113.             int minute = int.Parse(Console.ReadLine());
  114.             decimal min = tarif[0].price + tarif[0].minute * minute;
  115.             for(int i=0; i<tarif.Length; i++)
  116.                 if ((tarif[i].price + tarif[i].minute * minute) < min)
  117.                 {
  118.                     min = tarif[i].price + tarif[i].minute * minute;
  119.                 }
  120.             foreach (plan item in tarif)
  121.                 if (item.price + item.minute * minute == min)
  122.                 {
  123.                     Console.Write(item.provider + "\t" + "\t" + "| ");
  124.                     Console.Write(item.name + "\t" + "\t" + "| ");
  125.                     Console.Write(item.price + "\t" + "\t" + "| ");
  126.                     Console.Write(item.minute);
  127.                 }
  128.             Console.WriteLine();
  129.         }
  130.  
  131.         static void Main(string[] args)
  132.         {
  133.             int choice;
  134.             Console.WriteLine("1 - запись нового тарифа");
  135.             Console.WriteLine("2 - просмотр тарифов");
  136.             Console.WriteLine("3 - поиск минимального тарифа");
  137.             Console.WriteLine("4 - подсчет оптимального тарифа");
  138.             Console.WriteLine("5 - выход ._.");
  139.             do
  140.             {
  141.                 Console.Write("Ваш выбор: ");
  142.                 choice = int.Parse(Console.ReadLine());
  143.                 switch (choice)
  144.                 {
  145.                     case 1: rec_tar(); break;
  146.                     case 2: out_tar(); break;
  147.                     case 3: max_tar(); break;
  148.                     case 4: opt_tar(); break;
  149.                     default: Console.WriteLine("Не верная команда! =("); break;
  150.                 }
  151.             } while (choice != 5);
  152.         }
  153.     }
  154. }
RAW Paste Data