Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.IO;
- using System.Runtime.Serialization.Formatters.Binary;
- using System.Runtime.Serialization;
- using System.Xml;
- using System.Xml.Serialization;
- /*Структурированный тип: тарифный план сотовой связи
- Поля: Название фирмы-провайдера, название тарифа, абонентская плата, стоимость минуты разговора
- Функции:
- Заполнение файла структур с клавиатуры
- Печать файла структур на экране
- Поиск тарифа с минимальной абонентской платой
- Подсчет оптимального по цене тарифа с условием, что абонент планирует наговаривать в месяц не более некоторого числа минут,
- * заданного с клавиатуры
- На 1,4. Для хранения данных использовать xml файл*/
- namespace K3S4_IDZ3_struct
- {
- public class Program
- {
- [Serializable]
- public struct plan
- {
- public string provider;
- public string name;
- public decimal price;
- public decimal minute;
- }
- static Array reader()
- {
- plan[] tarif;
- XmlSerializer reader = new XmlSerializer(typeof(plan[]));
- StreamReader file = new StreamReader(@"plan.xml");
- tarif = (plan[])reader.Deserialize(file);
- file.Close();
- return tarif;
- }
- static void rec_tar()
- {
- int choise = 0;
- int i = 0;
- plan[] tarif = new plan[i];
- if (File.Exists("plan.xml"))
- {
- tarif = (plan[])reader();
- i = tarif.Length;
- }
- do
- {
- i++;
- Array.Resize(ref tarif, i);
- Console.Write("Введите название опертора: ");
- tarif[i - 1].provider = Console.ReadLine();
- Console.Write("Введите название тарифа: ");
- tarif[i - 1].name = Console.ReadLine();
- Console.Write("Введите абонентскую плату: ");
- tarif[i - 1].price = decimal.Parse(Console.ReadLine());
- Console.Write("Введите стоимость минуты разговора: ");
- tarif[i - 1].minute = decimal.Parse(Console.ReadLine());
- Console.Write("Ввести следующий тариф:? (1 - да, 2 - нет) ");
- choise = int.Parse(Console.ReadLine());
- } while (choise != 2);
- XmlDocument g = new XmlDocument();
- g.CreateXmlDeclaration("1.0", "utf-8", null);
- XmlSerializer writer = new XmlSerializer(typeof(plan[]));
- StreamWriter file = new StreamWriter(@"plan.xml");
- writer.Serialize(file, tarif);
- file.Close();
- }
- static void out_tar()
- {
- plan[] tarif;
- tarif = (plan[])reader();
- for (int i = 0; i < tarif.Length; i++)
- {
- Console.Write(tarif[i].provider + "\t" + "\t" + "| ");
- Console.Write(tarif[i].name + "\t" + "\t" + "| ");
- Console.Write(tarif[i].price + "\t" + "\t" + "| ");
- Console.Write(tarif[i].minute);
- Console.WriteLine();
- }
- }
- static void max_tar()
- {
- plan[] tarif;
- tarif = (plan[])reader();
- decimal min = tarif[0].price;
- foreach (plan item in tarif)
- if (item.price < min)
- min = item.price;
- foreach (plan item in tarif)
- if (item.price == min)
- {
- Console.Write(item.provider + "\t" + "\t" + "| ");
- Console.Write(item.name + "\t" + "\t" + "| ");
- Console.Write(item.price + "\t" + "\t" + "| ");
- Console.Write(item.minute);
- }
- Console.WriteLine();
- }
- static void opt_tar()
- {
- plan[] tarif;
- tarif = (plan[])reader();
- Console.Write("Сколько минут собираетесь разговаривать? ");
- int minute = int.Parse(Console.ReadLine());
- decimal min = tarif[0].price + tarif[0].minute * minute;
- for(int i=0; i<tarif.Length; i++)
- if ((tarif[i].price + tarif[i].minute * minute) < min)
- {
- min = tarif[i].price + tarif[i].minute * minute;
- }
- foreach (plan item in tarif)
- if (item.price + item.minute * minute == min)
- {
- Console.Write(item.provider + "\t" + "\t" + "| ");
- Console.Write(item.name + "\t" + "\t" + "| ");
- Console.Write(item.price + "\t" + "\t" + "| ");
- Console.Write(item.minute);
- }
- Console.WriteLine();
- }
- static void Main(string[] args)
- {
- int choice;
- Console.WriteLine("1 - запись нового тарифа");
- Console.WriteLine("2 - просмотр тарифов");
- Console.WriteLine("3 - поиск минимального тарифа");
- Console.WriteLine("4 - подсчет оптимального тарифа");
- Console.WriteLine("5 - выход ._.");
- do
- {
- Console.Write("Ваш выбор: ");
- choice = int.Parse(Console.ReadLine());
- switch (choice)
- {
- case 1: rec_tar(); break;
- case 2: out_tar(); break;
- case 3: max_tar(); break;
- case 4: opt_tar(); break;
- default: Console.WriteLine("Не верная команда! =("); break;
- }
- } while (choice != 5);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement