1167

Преобразование приложений в оконные приложения

Лабораторная работа

Информатика, кибернетика и программирование

Включить контейнерный объект в основной класс, вставив вызовы его функций в функции, осуществляющие ввод-вывод в файл и очистку. Реализовать функции для вывода информации.

Русский

2013-01-06

113.5 KB

1 чел.

МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ

КАФЕДРА МАТЕМАТИЧЕСКОЙ КИБЕРНЕТИКИ И ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

ОТЧЁТ

ПО ЛАБОРАТОРНОЙ РАБОТЕ №4

по дисциплине "Технология разработки программного обеспечения"

Группа: ПО0902
Студент: Емельянов Александр



Проверил:

Абышов Р.

Москва 2012

ЗАДАНИЕ

 Преобразовать приложение из третьей лабораторной работы в оконное приложение.

 Включить контейнерный объект в основной класс, вставив вызовы его функций в функции, осуществляющие ввод-вывод в файл и очистку.

 Реализовать функции для вывода информации.

КОД ПРОГРАММЫ:

Program.cs:

using System;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Windows.Forms;

namespace lab4

{

staticclassProgram

   {

       [STAThread]

staticvoid Main()

       {

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Application.Run(newForm1());

       }

   }

}

TelephoneDirectory.cs:

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

using System.Xml;

namespace lab4

{

   class TelephoneDirectory

   {

       private string _name;

       private int _number;

       private bool _vip;

       public override string ToString()

       {

           return _name;

       }

       public string Name

       {

           get { return _name; }

           set { _name = value; }

       }

       public int TelephoneNumber

       {

           get { return _number; }

           set { _number = value; }

       }

       public bool VIP_group

       {

           get { return _vip; }

           set { _vip = value; }

       }

       public bool Write(Stream stream)

       {

           if (!stream.CanWrite)

               return false;

           XmlDocument document = new XmlDocument();

           XmlElement hotelElement;

           Write(document, out hotelElement);

           document.AppendChild(hotelElement);

           document.Save(stream);

           return true;

       }

       public virtual void Write(XmlDocument document, out XmlElement hotelElement)

       {

           hotelElement = document.CreateElement("Telephone Directory");

           XmlAttribute nameAttribute = document.CreateAttribute("Name");

           nameAttribute.InnerText = _name;

           hotelElement.Attributes.Append(nameAttribute);

           XmlAttribute starsCountAttribute = document.CreateAttribute("Telephone Number");

           starsCountAttribute.InnerText = _number.ToString();

           hotelElement.Attributes.Append(starsCountAttribute);

           XmlAttribute hasRestaurantAttribute = document.CreateAttribute("VIP");

           hasRestaurantAttribute.InnerText = _vip.ToString();

           hotelElement.Attributes.Append(hasRestaurantAttribute);

       }

       public bool Read(Stream stream)

       {

           if (!stream.CanRead)

               return false;

           XmlDocument document = new XmlDocument();

           try

           {

               document.Load(stream);

           }

           catch (Exception ex)

           {

               return false;

           }

           return Read(document.DocumentElement);

       }

       public virtual bool Read(XmlElement hotelElement)

       {

           if (hotelElement.Attributes["Name"] == null)

               return false;

           if (hotelElement.Attributes["Telephone Number"] == null)

               return false;

           int starsCount;

           if (!int.TryParse(hotelElement.Attributes["Telephone Number"].InnerText, out starsCount))

               return false;

           if (hotelElement.Attributes["VIP"] == null)

               return false;

           bool hasRestaurant;

           if (!bool.TryParse(hotelElement.Attributes["VIP"].InnerText, out hasRestaurant))

               return false;

           _name = hotelElement.Attributes["Name"].InnerText;

           _number = starsCount;

           _vip = hasRestaurant;

           return true;

       }

   }

}

DirectoryCollection.cs:

using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

using System.Xml;

namespace lab4

{

   class DirectoryCollection : ICollection<TelephoneDirectory>

   {

       private IList<Hotel> _records;

       

       #region ICollection members

       public DirectoryCollection(IEnumerable<TelephoneDirectory> items = null)

       {

           _records = new List<TelephoneDirectory>();

           if (items != null)

               foreach (TelephoneDirectory item in items)

                   _records.Add(item);

       }

       public void Add(TelephoneDirectory item)

       {

           _records.Add(item);

       }

       public void Clear()

       {

           _records.Clear();

       }

       public bool Contains(TelephoneDirectory item)

       {

           return _records.Contains(item);

       }

       public void CopyTo(TelephoneDirectory [] array, int arrayIndex)

       {

           _records.CopyTo(array, arrayIndex);

       }

       public int Count

       {

           get { return _records.Count; }

       }

       public bool IsReadOnly

       {

           get { return _records.IsReadOnly; }

       }

       public bool Remove(TelephoneDirectory item)

       {

           return _records.Remove(item);

       }

       public IEnumerator< TelephoneDirectory > GetEnumerator()

       {

           return _records.GetEnumerator();

       }

       System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()

       {

           return _records.GetEnumerator();

       }

       #endregion

       public bool Write(Stream stream)

       {

           if (!stream.CanWrite)

               return false;

           XmlDocument document = new XmlDocument();

           XmlElement records = document.CreateElement("Records");

           foreach (TelephoneDirectory teldir in _records)

           {

               XmlElement dirElement;

               Teldir.Write(document, out dirElement);

               records.AppendChild(dirElement);

           }

           XmlDeclaration declaration = document.CreateXmlDeclaration("1.0", "utf-8", null);

           document.AppendChild(declaration);

           document.AppendChild(records);

           document.Save(stream);

           return true;

       }

       public bool Read(Stream stream)

       {

           if (!stream.CanRead)

               return false;

           Clear();

           XmlDocument document = new XmlDocument();

           try

           {

               document.Load(stream);

           }

           catch (Exception ex)

           {

               return false;

           }

           XmlNodeList hotelElements = document.DocumentElement.SelectNodes("Telephone Directory");

           

           foreach (XmlNode hotelElement in hotelElements)

           {

               XmlNode availableRoomsElement = hotelElement.SelectSingleNode("Relatives");

               Hotel record;

               if (availableRoomsElement != null)

                   record = new VIP ();

               else

                   record = new TelephoneDirectory ();

               record.Read(hotelElement as XmlElement);

               _records.Add(record);

           }

           return true;

       }

   }

}

VIP.cs:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Xml;

namespace lab4

{

   class VIP : TelephoneDirectory

   {

       private IList<int> _relative = new List<int>();

       private IList<int> _age = new List<int>();

       public IEnumerable<int> Relative

       {

           get { return _relative; }

       }

       public IEnumerable<int> Age

       {

           get { return _age; }

       }

       public bool Relative1(int number)

       {

           if (!_relative.Contains(number))

               return false;

           _relative.Remove(number);

           _age.Add(number);

           return true;

       }

       public bool Age1(int number)

       {

           if (!_age.Contains(number))

               return false;

           _age.Remove(number);

           _relative.Add(number);

           return true;

       }

       public override void Write(XmlDocument document, out XmlElement hotelElement)

       {

           base.Write(document, out hotelElement);

           XmlElement RelativesElement = document.CreateElement("Relatives");

           foreach (int availableRoom in _relative)

           {

               XmlElement roomElement = document.CreateElement("Relative group");

               roomElement.InnerText = availableRoom.ToString();

               availableRoomsElement.AppendChild(roomElement);

           }

           hotelElement.AppendChild(availableRoomsElement);

           XmlElement reservedRoomsElement = document.CreateElement("Ages");

           foreach (int reservedRoom in _age)

           {

               XmlElement roomElement = document.CreateElement("Age");

               roomElement.InnerText = reservedRoom.ToString();

               reservedRoomsElement.AppendChild(roomElement);

           }

           hotelElement.AppendChild(reservedRoomsElement);

       }

       public override bool Read(XmlElement hotelElement)

       {

         XmlNodeList relativesElements = dirElement.SelectNodes(@"Relatives/Relative group");

           if (relativesElements == null)

               return false;

           XmlNodeList agesElements = dirElement.SelectNodes(@"Ages/Age");

           if (agesElements == null)

               return false;

           if (!base.Read(dirElement))

               return false;

           _relative.Clear();

           _age.Clear();

           foreach (XmlNode relativeElement in relativesElements)

           {

               int relative2;

               if (int.TryParse(relativeElement.InnerText, out relative2))

                   _relative.Add(relative2);

           }

           foreach (XmlNode ageElement in agesElements)

           {

               int age2;

               if (int.TryParse(ageElement.InnerText, out age2))

                   _age.Add(age2);

           }

           return true;

       }

   }

}

Form1.cs:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

namespace lab4

{

   public partial class Form1 : Form

   {

       private DirectoryCollection _collection = new HotelCollection();

       public Form1()

       {

           InitializeComponent();

       }

       private void clearButton_Click(object sender, EventArgs e)

       {

           _collection.Clear();

           Name.Items.Clear();

           ClearFields();

       }

       private void loadButton_Click(object sender, EventArgs e)

       {

           try

           {

               OpenFileDialog dialog = new OpenFileDialog();

               dialog.Filter = "Файлы XML (*.xml)|*.xml";

               if (dialog.ShowDialog() != System.Windows.Forms.DialogResult.OK)

                   return;

               string path = dialog.FileName;

               FileStream fs = new FileStream(path, FileMode.Open);

               _collection.Read(fs);

               fs.Close();

               UpdateListBox();

           }

           catch (Exception ex)

           {

               MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);

           }

       }

       private void saveButton_Click(object sender, EventArgs e)

       {

           try

           {

               SaveFileDialog dialog = new SaveFileDialog();

               dialog.Filter = "Файлы XML (*.xml)|*.xml";

               if (dialog.ShowDialog() != System.Windows.Forms.DialogResult.OK)

                   return;

               string path = dialog.FileName;

               FileStream fs = new FileStream(path, FileMode.OpenOrCreate);

               _collection.Write(fs);

               fs.Close();

           }

           catch (Exception ex)

           {

               MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);

           }

       }

       private void UpdateListBox()

       {

           Name.Items.Clear();

           ClearFields();

           foreach (TelephoneDirectory dir in _collection)

               Name.Items.Add(hotel);

       }

       private void ClearFields()

       {

           lAge.Items.Clear();

           tbName.Text = "";

           chbVIP.Checked = false;

           pnlAdvanced.Visible = false;

       }

       private void lbHotels_SelectedIndexChanged(object sender, EventArgs e)

       {

           ClearFields();

           TelephoneDirectory dir = Name.SelectedItem as TelephoneDirectory;

           if (dir == null)

               return;

           if (!(dir is VIP))

               pnlAdvanced.Visible = false;

           else

           {

               VIP rdir = (VIP)dir;

               pnlAdvanced.Visible = true;

               foreach (int item in rdir.Age)

                   lAge.Items.Add(item);

           }

           tbName.Text = dir.Name;

           chbVIP.Checked = dir.VIP_group;

       }

       private void Form1_Load(object sender, EventArgs e)

       {

       }

       private void label4_Click(object sender, EventArgs e)

       {

       }

   }

}

СКРИНШОТ ПРОГРАММЫ:


 

А также другие работы, которые могут Вас заинтересовать

44052. Условия формирования культуры взаимоотношений у детей старшего дошкольного возраста в условиях детского клуба «Эрудит» 178.54 KB
  Границы старшего дошкольного возраста определяются исследователями как возраст 5 – 7 лет. Однако в то же время многие дети идут в школу с 6 лет, поэтому возраст 6 – 7 лет одновременно относят и к периоду младшего школьного возраста. Поскольку развитие детей происходит в индивидуальном темпе, мы будем ориентироваться на средние показатели, согласно которым период от 5 до 7 лет является периодом старшего дошкольного возраста.
44053. Повышение эффективности деятельности планово-экономического отдела предприятия ЗАО «Атлант» 1.52 MB
  Эконометрическое моделирование временных рядов. Моделирование объемов производства с использованием анализа временных рядов Построение модели объема выпуска продукции на основе временных рядов Программная поддержка эконометрического моделирования объема выпуска продукции.
44054. Расчет потребного количества оборудования 502 KB
  Определение трудоёмкости по видам оборудования производится по данным базового предприятия по согласованию с преподавателем и пропорционально трудоёмкости изготовления детали-представителя
44055. Изучение взаимодействия морского и железнодорожного транспорта на примере ОАО «Архангельский морской торговый порт» 566 KB
  Все это уменьшает пропускные и перевозочные возможности железных дорог ведет к росту порожнего пробега вагонов к снижению производительности их использования и к другим отрицательным последствием. [29] Перевозки грузов осуществляемые в смешанном сообщении с двумя перевалками в основном менее эффективны чем с одной и в прямом железнодорожном сообщении как по общей величине приведенных затрат так и по потребному парку вагонов и по затратам трудовых ресурсов. Навалочные и насыпные грузы отправляемые маршрутами или группами вагонов...
44056. Проект мероприятий по разработке нового турпродукта в Сысертском районе Свердловской области на примере ООО «УРАЛ ТУР» 398 KB
  Туризм экскурсии – это важная форма отдыха людей ориентации их свободного времени тем более что состояние физического и нравственного здоровья вызывает серьезные опасения и требует использования всех возможных средств по исправлению сложившийся в последние годы ситуации. в стоимость тура должна быть включена хотя бы одна из перечисленных ниже услуг: трансфер экскурсии или аренда автомобиля.; памятки о сроках подачи заявок на авиабилеты проживание питание скидки на группу; заявка бронирования тура дата № заказа...
44057. Повышение социальной компетентности подростков 15-16 лет, выпускников детских домов, средствами социально-культурной деятельности 1.04 MB
  Теоретические основы формирования социальной компетентности подростков выпускников детских домов с помощью средств социально-культурной деятельности Сущность и определение социальной компетентности. Особенности процесса формирования социальной компетентности у подростков.
44058. Проектування дорожнього СТО-А 370 KB
  Автомобілі на станції технічного обслуговування СТО приймаються відповідно до встановлених правил. Значний ріст парку легкових автомобілів що належать населенню в Україні вимагає збільшення проектування дорожніх СТОА. Виробничотехнічну базу системи технічного обслуговування автомобілів в основному складають підприємства структурні одиниці трьох видів: СТОА у тому числі майстерні і пункти ТО і ремонту; бази і склади матеріальнотехнічного постачання; гаражі і стоянки автомобілів. Сучасні СТОА здійснюють: продаж і...
44059. Разработка бизнес-плана по производству кондитерских изделий ООО «Бансес» 251.5 KB
  Важнейшей задачей разработки бизнеспланов является проблема привлечения и обоснования инвестиций и кредитов в том числе зарубежных необходимых для осуществления проектов технического перевооружения и реконструкции предприятий. – 1337580 руб. – 5788080 руб. Общая стоимость проекта по производству кондитерских изделий 936671 руб.
44060. Психологізм творчості Михайла Коцюбинського 475 KB
  Зображення процесів внутрішнього життя героїв у дитячих оповіданнях письменника За об’єкт дослідження обрано дитячу та малу прозу Михайла Коцюбинського Цвіт яблуні Сон Що записано в книгу життя В дорозі Дорогою ціною Дебют Лялечка Ft morgn Харитя Ялинка Маленький грішник Intermezzo як найпоказовішу з погляду психологічного зображення зрілості авторської концепції. Із метою ширшого обґрунтування останньої комплексного розгляду художнього психологізму залучено інформацію про особисте життя...