Jater

Struct_File_XML

Mar 29th, 2014
79
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

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×