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)

       {

       }

   }

}

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


 

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

28172. ПОСТУЛАТЫ БОРА. КОМБИНАЦИОННЫЙ ПРИНЦИП 83 KB
  В начале XX века установлено что всю совокупность спектральных линий атомарного водорода можно разбить на серии то есть на отдельные группы в пределах каждой из которых имеет место определенная закономерность в расположении и интенсивности спектральных линий. При из всего спектра атома выделяется определенная спектральная серия: соответствует серия Лаймана серия Бальмера серия Пашена серия Брэкета серия Пфунда и т. 2 Из комбинационного принципа Ритца вытекает следствие:...
28173. Модель атома Бора. Квантование круговых орбит и их характеристики. Правила квантования Бора-Зоммерфельда 157.5 KB
  В соответствии с моделью Резерфорда для строения атома Бор рассматривал движение электрона относительно покоящегося ядра по круговой орбите. Согласно Бору стационарными являются лишь те орбиты при движении по которым момент импульса электрона равен целому числу приведенных постоянных Планка удовлетворяет условию квантования круговых орбит то есть для й орбиты можно записать: 1 где и соответственно масса линейная скорость движения электрона и радиус его й орбиты; =...
28174. Фотоны и их свойства. Энергия и импульс фотона 95.5 KB
  Эффект Комптона К середине XIX века волновая природа электромагнитного излучения была подтверждена окончательно явлениями интерференции и дифракции света. Впервые это было осознано при рассмотрении проблемы теплового излучения. Попытки описать спектральное распределение теплового излучения на основе классической электродинамики закончились неудачей. Квантовые представления о природе электромагнитного излучения получили дальнейшее развитие при исследовании явления внешнего фотоэффекта.
28175. Задача молекулярной физики. Модель физического тела. Основные положения МКТ и их анализ. Модель идеального газа. Статистический и термодинамический способы описания. Основное уравнение МКТ идеального газа 811.5 KB
  Модель идеального газа. Основное уравнение МКТ идеального газа. Отсюда также следует что начинать построение теории следует с газов так как в этом случае выражение 1 имеет в правой части только одно слагаемое Модель газового физического тела получила название модели идеального газа. Уравнение состояния идеального газа уравнение Клапейрона ‒ Менделеева.
28176. Голография. Схема записи и восстановления голограмм. Запись голограмм на толстослойных эмульсиях. Применение голограмм 115 KB
  Схема записи голограммы представлена на рисунке 1. Денисюк осуществил запись голограммы в трехмерной среде объединив таким образом идею Габора с цветной фотографией Липпмана. Тогда участки голограммы с максимальным пропусканием света будут соответствовать тем участкам фронта предметной волны в которых ее фаза совпадает с фазой опорной волны. Поэтому при последующем освещении голограммы опорной волной в ее плоскости образуется то же распределение амплитуды и фазы которое было у предметной волны чем и обеспечивается восстановление...
28177. Искусственная анизотропия, создаваемая в результате механического деформирования, воздействия электрического (эффекты Керра и Поккельса) и магнитного (эффект Коттона - Мутона) поля. Естественная и искусственная (эффект Фарадея) оптическая активность 51 KB
  Искусственная анизотропия создаваемая в результате механического деформирования воздействия электрического эффекты Керра и Поккельса и магнитного эффект Коттона Мутона поля. Естественная и искусственная эффект Фарадея оптическая активность Среды в которых скорость распространения света в различных направлениях неодинакова называют оптически анизотропными. был открыт эффект Керра возникновение двулучепреломления под действием электрического поля рисунок 2. Явление Керра квадратичный электрооптический эффект объясняется...
28178. Тепловое излучение тел и его законы. Ультрафиолетовая катастрофа. Формула Планка 102 KB
  Отличительной чертой теплового излучения является то что оно возникает за счет внутренней энергии тела. Тепловое излучение имеет сплошной спектр положение максимума в спектральной кривой излучения зависит от температуры. При полном термодинамическом равновесии все части системы имеют одинаковую температуру и энергия теплового излучения испускаемого каждым телом компенсируется энергией поглощаемого этим телом теплового излучения других тел. Спектр равновесного излучения не зависит от природы вещества.
28179. Фотоэффект. Основные законы внешнего фотоэффекта. Уравнение Эйнштейна. Внутренний фотоэффект. Фотоэлементы и их применение 87.5 KB
  Фотоэффект. Основные законы внешнего фотоэффекта. Внутренний фотоэффект. Явление вырывания электронов с поверхности вещества под действием электромагнитного излучения называется внешним фотоэффектом.
28180. Поглощение (абсорбция) света веществом. Закон Бугера. Элементарная квантовая теория излучения и поглощения света. Спонтанные и вынужденные переходы. Коэффициенты Эйнштейна. Условие усиления света 165 KB
  Элементарная квантовая теория излучения и поглощения света. Условие усиления света Под действием электромагнитного поля световой волны проходящей через вещество возникают колебания электронов среды с чем связано уменьшение энергии излучения затрачиваемой на возбуждение колебаний электронов. Частично эта энергия восполняется в результате излучения электронами вторичных волн частично она может преобразовываться в другие виды энергии. Действительно опытным путем установлено а затем и теоретически доказано Бугéром что интенсивность...