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)

       {

       }

   }

}

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


 

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

77413. Реорганизация юридических лиц 66.5 KB
  В учебной литературе вопросы реорганизации носят описательный характер. Проблемы возникающие из реорганизации практически не освещаются в научной литературе. В этом и есть принципиальное отличие реорганизации от ликвидации Реорганизация процедура совокупность юридических действий определяющая переход в порядке правопреемства прав и обязанностей от одного или нескольких юридических лиц правопредшественников к другому или другим юридическим лицам правопреемникам связанный с прекращением правопредшественников и созданием...
77414. Ликвидация коммерческих организации 23.27 KB
  При добровольной учредители или орган юридического лица это решение может приниматься и по истечении срока на который создавалось юридическое лицо по достижению цели в случае если суд признал недействительной государственную регистрацию юридического лица. К ликвидационной комиссии переходят правомочия управления коммерческой организацией она выступает в суде от имени ликвидируемого юридического лица. Этот баланс утверждается органами юридического лица по соглашению с органами государственной регистрации. Ликвидация юридического лица 1.
77416. Полное товарищество 19.53 KB
  Закон специально подчеркивает право участника полного товарищества знакомиться со всей документацией по ведению дел товарищества даже в случае когда такой участник в соответствии с учредительным договором не уполномочен на ведение дел товарищества а отказ от этого права или его ограничение в том числе по соглашению участников товарищества ничтожны. Кроме того он вправе возмездно или безвозмездно передать свою долю в складочном капитале товарищества или ее часть как другому товарищу так и третьему лицу не участвующему в товариществе....
77418. Особенности государственных и муниципальных предприятий 66 KB
  Об унитарных предприятиях унитарное предприятие может иметь гражданские права соответствующие предмету и целям его деятельности предусмотренные в уставе этого предприятия и нести обязанности. Это говорит о том что унитарные предприятия обладают специальной правоспособностью а не общей. Предприятия являются унитарными т. Виды государственных и муниципальных предприятий В РФ создаются и действуют следующие виды: Унитарные предприятия основанные на праве хозяйственного ведения Федеральное государственное государственное и...
77419. Имущество унитарных предприятий 21.98 KB
  299 ГК право на имущество возникает с момента передачи такого имущества предприятия; п. На праве хозяйственного ведения уставный фонд обязателен; казенные предприятия уставный фонд не нужен так как субсидиарная ответственность государства. Предельный срок в течение которого уставный фонд должен быть сформирован = 3 месяца с момента регистрации предприятия. Крупная сделка Для контроля за деятельностью унитарного предприятия по аналогии с деятельностью хозяйственных обществ вводится данное понятие.