Структура и состав классов для построения модели работы гостиницы.

Автор работы: Пользователь скрыл имя, 09 Мая 2015 в 17:15, курсовая работа

Описание работы

Темой курсового проекта является моделирование процесса сборки мебели на языке С#. Для реализации поставленной задачи необходимо разработать базовые и производные классы. Также нужно задать для полей и методов классов спецификаторы доступа в зависимости от их использования, построить абстрактные типы данных, сделать перегрузку некоторых методов, задать виртуальные функции, создать обобщённые и необобщённые коллекции, применить исключения, разработать различные конструкторы для объектов.
Данная тема является актуальной на сегодняшний день, так как разработанное приложение поможет организовать процесс работы гостиницы в различных городах.

Содержание работы

Введение...............................................................................................................................5 1 Структура и состав классов для построения модели работы гостиницы.
Инкапсуляция. Применение конструкторов на С#......................................................... 7
1.1 Поля и методы основного и вспомогательного классов............................................7
1.2 Реализация классов на С#............................................................................................ 8
1.3 Примеры использования объектов основного класса Otel и вспомогательного класса Nomer......................................................................................................................11
2 Перегрузка оператора +………………………………………………………………. 13
2.1 Перегрузка оператора + для объектов класса Nomer …………………………….13
2.2 Метод типа void с возвратом результата через параметр ref……………………..15
3 Создание производного класса….................................................................................17
3.1 Производный класс. Модификатор доступа protected и его использование..........17
3.2 Реализация производного класса на С#.....................................................................19
4 Абстрактные классы и виртуальные функции ............................................................23
4.1 Разработка виртуальной функции……………………………………………..........23
4.2 Вызов виртуальной функции…………… .................................................................25
4.3 Разработка абстрактного класса и создание абстрактной функции…………...…27
4.4 Создание статического метода для вспомогательного класса……………………32
5 Применение строк и исключений на языке С#............................................................34
5.1 Класс String в С#, основные методы класса…………………..................................34
5.2 Пример использования методов класса String .........................................................36
5.3 Исключения на языке С#............................................................................................34
6 Создание коллекций…………….…….……………………………………………….39
6.1 Реализация необобщённой коллекции......................................................................39
6.2 Реализация обобщённой коллекции..........................................................................42
Заключение.........................................................................................................................45
Список использованных источников ..............................................................................36
Приложение А....................................................................................................................47
Приложение Б ...................................................................................................................51
Приложение В ...................................................................................................................56
Приложение Г ...................................................................................................................61
Приложение Д....................................................................................................................70
Приложение Е ..................................................................................................................

Файлы: 1 файл

Содержани1.docx

— 511.25 Кб (Скачать файл)

     class Element

    {

           public Exception e1 = new Exception("");  //Первое исключение

           public Exception e2 = new Exception("");  //Второе исключение

           public double Prizn;  //0-вычислено, >0 - исключение

           …

         // Стоимость элемента, входящего в изделие

         public double CostElem()

        {

                double z;  //Переменная, хранящая значение  стоимости элемента 

                z = 0;

                try  //Блок try

               {

                    if (ves < 0)  //Если вес меньше 0

                        throw e1 = new Exception("ves<0");  //Первое исключение

                    if (cost <= 0)  //Если стоимость меньше либо равна 0

                        throw e2 = new Exception("cost<=0");  //Второе исключение

                   Prizn = 0;  //Нет исключений

                   z = ves * cost;  //Вычисление стоимости  элемента 

               }

               catch (Exception e1)  //Перехват первого  исключения 

              {

                   string s;  //Переменная для работы  с иключениями 

                   s = e1.Message;  //s="ves<0"

                   Console.WriteLine(s);  //Вывод строки

                   Prizn = 1;  //Первое исключение 

               }

               return z;  //Возвращает стоимость  элемента 

          }

      }

     …

     static void Main(string[] args)

    {

            Element a;  //Объект типа Элемент 

            a = new Element();  //Инициализация объекта а

            a.Init(-120, 28.9);  //Вызов метода объектом а

            double k = 0;

            string s;  //Переменная для работы с исключениями

            try  //Блок  try

            {

                k = a.CostElem();  //Вычисление стоимости элемента

            }

            catch (Exception e)  //Перехват второго исключения

            {

                e = a.e2;

                s = e.Message;  // s="cost<0"

                Console.WriteLine(s);  //Вывод строки

                a.Prizn = 2;  //Второе исключение

            }

            if (a.Prizn == 0)  //Если исключений нет - вывод результата

            {

                Console.WriteLine("\nСтоимость элемента: " +k.ToString());  //Вывод

                                                                                          // стоимости элемента

            }

           …

 

 

     Работа программы представлена на рисунке 9:

 

 

Рисунок 9 – Демонстрация работы программы

 

 

 

     6 Создание коллекций

 

 

     6.1 Реализация необобщённой коллекции

 

 

     Коллекция – это набор пронумерованных связанных данных. Элементы удобно объединять в коллекцию, чтобы не писать код для каждого из них, а написать единый блок, управляющий всей коллекцией. Элементы коллекции можно добавлять, удалять и изменять, при этом размерность коллекции изменяется автоматически, поэтому нет необходимости ее переопределять.

    Необобщённые  коллекции определяются в пространстве имен System.Collections. Они представляют собой структуры данных общего назначения, оперирующие ссылками на объекты. Таким образом, они позволяют манипулировать объектом любого типа, хотя и не типизированным способом. В этом состоит их преимущество и в то же время недостаток. Благодаря тому, что необобщенные коллекции оперируют ссылками на объекты, в них можно хранить разнотипные данные. Это удобно в тех случаях, когда требуется манипулировать совокупностью разнотипных объектов или же когда типы хранящихся в коллекции объектов заранее неизвестны. Но если коллекция предназначается для хранения объекта конкретного типа, то необобщенные коллекции не обеспечивают типовую безопасность.

     Вот несколько классов  необобщенных коллекций:

      ArrayList - определяет  динамический массив.

     Queue - определяет очередь, или список, действующий по принципу "первым пришел — первым обслужен".

     SortedList - определяет отсортированный список пар "ключ-значение".

     Stack - определяет стек, действующий по принципу "первым пришел — последним обслужен".

namespace NongenericCollections  //Необобщённые коллекции

{

     …

}

class Program

    {

        static void Main(string[] args)

        {

            ArrayList one = new ArrayList();

            int a, b;

            Random n = new Random();

            for (int i = 0; i < 10; i++)

            {

                a = n.Next(200);

                b = n.Next(4);

                Nomer d = new Nomer();

                d.Init(a, b);

                one.Add(d);

            }

            int sum = 0;

            foreach (Nomer k in one)

            {

                if (k.PrivlekNom() > 50)

                {

                    sum++;

                }

            }

            Console.WriteLine("\nКоличество номеров: " + sum);

            Console.ReadKey();

        }

    }

}

 

Результат работы программы представлен на рисунке 10:

                       

                        Рисунок 10 – Демонстрация работы программы

 

 

     6.2 Реализация обобщённой коллекции

 

 

     Обобщенные коллекции объявляются в пространстве имен System. Collections. Generic. Как правило, классы обобщенных коллекций являются не более чем обоб-щенными эквивалентами классов необобщенных коллекций, хотя это соответствие не является взаимно однозначным.

     Обобщенные коллекции действуют по тому же принципу, что и необобщенные, за исключением того, что обобщенные коллекции типизированы. Это означает, что в обобщенной коллекции можно хранить только те элементы, которые совместимы по типу с ее аргументом. Если требуется коллекция для хранения несвязанных друг с другом разнотипных данных, то для этой цели следует использовать классы необобщенных коллекций. А во всех остальных случаях, когда в коллекции должны храниться объекты только одного типа, выбор рекомендуется останавливать на классах обобщенных коллекций.

     Kлассы обобщенных коллекций отличаются от необобщённых своей органи-зацией и функциональными возможностями.

     Примеры классов:

     LinkedList<T> - сохраняет элементы в двунаправленном списке.

     List<T> - создает динамический массив.

     Queue<T> - создает очередь.

     Stack<T> - создает стек. Обеспечивает такие же функциональные возможности,

     как и необобщенный класс Stack.

     …

     namespace GenericCollections  //Обобщённые коллекции

   {

          …

class Program

    {

        static void Main(string[] args)

        {

            List<Nomer> one = new List<Nomer>();

            int a, b;

            Random n = new Random();

            for (int i = 0; i < 10; i++)

            {

                a = n.Next(200);

                b = n.Next(4);

                Nomer d = new Nomer();

                d.Init(a, b);

                one.Add(d);

            }

            List<double> two = new List<double>();  // коллекция из целых чисел

            double m;

            foreach (Nomer k in one)

            {

                m = k.PrivlekNom();

                two.Add(m);                // заполнение коллекции 

            }

            int sum = 0;

            foreach (double k in two)

            {

                if (k > 50)

                {

                    sum++;

                }

            }

            Console.WriteLine("\nКоличество номеров: " + sum);

            Console.ReadKey();

        }

Результат работы программы представлен на рисунке 11:

                       

Рисунок 11 – Демонстрация работы программы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Заключение

 

 

     В данной  работе представлена модель работы гостиницы на основе объектно-ориентированного подхода и дана ее программная реализация. К достоинствам разработанного программного обеспечения можно отнести использование его в системах с минимальными требованиями.  Поскольку программный продукт соответствует стандарту С# программа легко переносится в одну из систем разработки программных продуктов на языке С#.

     Интерфейс  прост в понимании и применении. Но для более эффективной работы  с программой, удобнее было бы  реализовать продукт с графическим  интерфейсом. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список литературы

 

 

1 Албахари, Д. C# Справочник. Полное описание языка//Д. Албахари; Вильямс.-Москва, 2012. – 988 с.

2 Барышев, Д.Д. Высокоуровневые методы информатики и программирования// Д.Д. Барышев; АлтГТУ им. И.И.Ползунова. – Барнаул, Изд-во АлтГТУ, 2010.

3 Васильев, А. C#. Объектно-ориентированное программирование// А. Васильев; Питер. – Санкт-Петербург, 2012. – 320 с.

4 Зиборов, В. Visual C# 2010 на примерах// В. Зиборов; БХВ-Петербург. – Санкт-Петербург, 2011. – 432 с.

5 Культин, Н.  Основы программирования в Microsoft Visual C# 2010// Н. Культин; БХВ-Петербург. –Санкт- Петербург, 2011. – 368 с.  

6 Потупчик, А.И. Языки и системы программирования. Курсовая работа.// А.И. Потупчик; АлтГТУ им. И.И. Ползунова. – Барнаул, Изд-во АлтГТУ, 2012.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение А

 

 

Текст программы (этап №1)

 

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace kursYuli

{

    class Nomer

    {

        private string name;

        private double stoimost;

        private int ploshad;

        public void Display()

        {

            string s, s1;

            s1 = Convert.ToString(stoimost);

            s = "\nстоимость: " + s1 + " ";

            s1 = Convert.ToString(ploshad);

            s = s + "\nплощадь: " + s1 + " ";

            s = s + "\nназвание: " + s1 + " ";

            Console.WriteLine(s);

        }

        public Nomer Add(Nomer a, Nomer b)

        {

            Nomer p;

            p = new Nomer();

            p.stoimost = a.stoimost + b.stoimost;

            p.ploshad = a.ploshad + b.ploshad;

            p.name = a.name + b.name;

            return p;

        }

        public double PrivlekNom()

        {

            return stoimost / ploshad;

        }

        /*public string gname()

        {

            return name;

        }*/

        public void Init(double s, int p, string n)

        {

            stoimost = s;

            ploshad = p;

            name = n;

        }

 

        public Nomer Add(Nomer b)

        {

            Nomer p;

            p = new Nomer();

            p.stoimost = this.stoimost + b.stoimost;

            p.ploshad = this.ploshad + b.ploshad;

            p.name = this.name + b.name;

            return p;

        }

 

        public Nomer(double s, int p, string n)

        {

            stoimost = s;

            ploshad = p;

            name = n;

        }

        public Nomer(double s)

        {

            stoimost = s;

        }

 

        public Nomer()

        {

            stoimost = 123;

            ploshad = 12;

            name = "номер";

        }

 

        class Otel

        {

            private string name;

            private Nomer P1 = new Nomer();

            private Nomer P2 = new Nomer();

            private Nomer P3 = new Nomer();

            private double TZatraty;

 

            public void Display()

            {

                string s;

                s = "Название: " + name;

                Console.WriteLine(s);                           // вывод названия

                Console.Write("Первое помещение: ");

                P1.Display();                                           // вывод 1-й номер

                Console.Write("Второе помещение:  ");

                P2.Display();                                           // вывод 2-й номер

                Console.Write("Третье помещение:  ");

                P3.Display();                                           // вывод 3-й номер 

                s = "Текущие затраты: " + Convert.ToString(TZatraty);

                Console.WriteLine(s);

            }

 

            public string gname()

            {

                return name;

            }

 

            public void Init(string n1, string n2, string n3, double s1, int p1, double s2, int p2, double s3, int p3, double TZ)

            {

                P1.Init(s1, p1, n1);

                P2.Init(s2, p2, n2);

                P3.Init(s3, p3, n3);

                TZatraty = TZ;

            }

 

            public double DpomAg()

            {

                double x;

                x = P1.PrivlekNom();

Информация о работе Структура и состав классов для построения модели работы гостиницы.