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

Автор работы: Пользователь скрыл имя, 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 Кб (Скачать файл)

            s1 = Convert.ToString(stoimost);

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

            s1 = Convert.ToString(ploshad);

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

            s1 = Convert.ToString(brook);

            s = s + "\nбронь: " + s1 + " ";

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

            Console.WriteLine(s);

        }

    }

    //######################################################

 

    class Otel

    {

        private string name;

        //###########  Часть 3.5  ################################

        private Nomer P1 = new Nomer();

        private BrookedNomer P2 = new BrookedNomer();

        //######################################################

        private double TZatraty;

 

        public void Display()

        {

            string s;

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

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

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

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

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

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

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

            Console.WriteLine(s);

        }

 

        public string gname()

        {

            return name;

        }

 

        //###########  Часть 3.6  ################################

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

        {

            P1.Init(s1, p1, n1);

            P2.Init(s2, p2, n2, b2);

            TZatraty = TZ;

        }

        //######################################################

 

        public double DpomAg()

        {

            double x;

            x = P1.PrivlekNom();

            if (x < P2.PrivlekNom())

                x = P2.PrivlekNom();

            return x;

        }

        public double SrAg()

        {

            return P1.PrivlekNom() + P2.PrivlekNom() +  - TZatraty;

        }

 

        public Nomer SumElem()

        {

            return P1 + P2;

 

        }

 

        public Otel Bet(Otel k, Otel l)

        {

            double r1, r2;

            r1 = k.P1.PrivlekNom() + k.P2.PrivlekNom();

            r2 = l.P1.PrivlekNom() + l.P2.PrivlekNom();

            if (r1 < r2)

                return k;

            else

                return l;

        }

    }

    class Program

    {

        static void Main(string[] args)

        {

            double z;

            BrookedNomer e = new BrookedNomer();              //конструктор без параметров(производного  класса)

            BrookedNomer e1 = new BrookedNomer(113, 6, "номер1", 2);    //конструктор со всеми  параметрами(производного класса)

            e.Init(112, 8, "номер2", 0);                  //переопределенный метод Init() на  одного человека

            e.Display();

            z = e.PrivlekNom();               //переопределенный метод площади  на одного человека

            Console.WriteLine("Привлекательность номера:" + z);

            e1.Display();

 

            Otel a = new Otel();

            a.Init("номер1", "номер2", 100, 5, 60, 4, 2, 4);  //переопределенный метод Init() для основного класса (3.6)

            a.Display();

 

            Console.ReadKey();

        }

    }

}

 

 

 

 

                             

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение Г

 

 

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

 

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace kursYuli

{

    class Nomer

    {

        protected string name;

        protected double stoimost;

        protected 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название: " + name + " ";

            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;

        }

        //###########  Часть 4.1  ################################

        virtual public double PrivlekNom()

        {

            return stoimost / ploshad;

        }

 

        public double FunCallVirt(double c)

        {

            double k;

            k = PrivlekNom();

            if (k > c)

                k = 1;

            else

                k = 0;

            return k;

        }

        //########################################################

 

        //###########  Часть 2.2  ################################

        public void PrivlekNom(ref double Rez)

        {

            Rez = stoimost / ploshad;

        }

        //########################################################

 

        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;

        }

 

        //###########  Часть 2.1  ################################

 

        public static Nomer operator +(Nomer a, Nomer b)

        {

            Nomer p;

            p = new Nomer();

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

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

            return p;

        }

 

        public static Nomer operator +(Nomer a, int b)

        {

            Nomer p;

            p = new Nomer();

            p.stoimost = a.stoimost;

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

            return p;

        }

 

        public static Nomer operator +(int a, Nomer b)

        {

            Nomer p;

            p = new Nomer();

            p.stoimost = b.stoimost;

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

            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 = "номер";

        }

 

    }

    //###########  Часть 3  ################################

    class BrookedNomer : Nomer

    {

        private int brook;

        //###########  Часть 4.1 ###############################

        public override double PrivlekNom()

        {

            if (brook == 0) return stoimost / ploshad;

            return 0;

        }

        //######################################################

 

        //###########  Часть 3.3 ###############################

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

        {

            base.Init(s, p, n);

            brook = b;

        }

        //######################################################

 

        //###########  Часть 3.4 ###############################

        public BrookedNomer(double s, int p, string n, int b)

            : base(s, p, n)

        {

            brook = b;

        }

        public BrookedNomer()

        {

            stoimost = 123;

            ploshad = 12;

            brook = 1;

            name = "номер";

        }

        //######################################################

 

        public void Display()

        {

            string s, s1;

            s1 = Convert.ToString(stoimost);

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

            s1 = Convert.ToString(ploshad);

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

            s1 = Convert.ToString(brook);

            s = s + "\nбронь: " + s1 + " ";

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

            Console.WriteLine(s);

        }

    }

    //######################################################

    class Otel

    {

        private string name;

        //###########  Часть 3.5  ################################

        private Nomer P1 = new Nomer();

        private BrookedNomer P2 = new BrookedNomer();

        //######################################################

        private double TZatraty;

 

        public void Display()

        {

            string s;

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

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

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

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

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

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

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

            Console.WriteLine(s);

        }

 

        public string gname()

        {

            return name;

        }

 

        //###########  Часть 3.6  ################################

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

        {

            P1.Init(s1, p1, n1);

            P2.Init(s2, p2, n2, b2);

            TZatraty = TZ;

        }

        //######################################################

 

        public double DpomAg()

        {

            double x;

            x = P1.PrivlekNom();

            if (x < P2.PrivlekNom())

                x = P2.PrivlekNom();

            return x;

        }

        public double SrAg()

        {

            return P1.PrivlekNom() + P2.PrivlekNom() + -TZatraty;

        }

 

        public Nomer SumElem()

        {

            return P1 + P2;

 

        }

 

        public Otel Bet(Otel k, Otel l)

        {

            double r1, r2;

            r1 = k.P1.PrivlekNom() + k.P2.PrivlekNom();

            r2 = l.P1.PrivlekNom() + l.P2.PrivlekNom();

            if (r1 < r2)

                return k;

            else

                return l;

        }

    }

    class Program

    {

        static void Main(string[] args)

        {

            double x, k, z;

            Nomer a = new Nomer();

            a.Init(65, 6, "Номер1");

            BrookedNomer m = new BrookedNomer();

            m.Init(65, 6, "Номер2", 2);

            k = a.PrivlekNom();

            z = m.PrivlekNom();

            Console.WriteLine("Привлекательность: " + k);

            Console.WriteLine("Привлекательность: " + z);

            Nomer b = new Nomer();

            Nomer d = new Nomer();

            BrookedNomer e = new BrookedNomer();

            a.Init(65, 6, "Номер1");

            m.Init(65, 6, "Номер2", 2);

            e.FunCallVirt(11);

            int Priznak;

            string s1;

            Console.WriteLine("Введите признак: ");

            s1 = Console.ReadLine();

            Priznak = Convert.ToInt32(s1);

            if (Priznak == 0)

            {

                d = b;

            }

            else

            {

                d = e;

            }

            x = d.PrivlekNom();

            Console.WriteLine("\nПривлекательность: " + x + "\n");

            Console.ReadKey();

        }

    }

}

 


 

 

 

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

 

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace kursYuli

{

    class Nomer

    {

        protected string name;

        protected double stoimost;

        protected 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название: " + name + " ";

            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;

        }

        //###########  Часть 4.1  ################################

        virtual public double PrivlekNom()

        {

            return stoimost / ploshad;

        }

 

        public double FunCallVirt(double c)

        {

            double k;

            k = PrivlekNom();

            if (k > c)

                k = 1;

            else

                k = 0;

            return k;

        }

        //########################################################

 

        //###########  Часть 2.2  ################################

        public void PrivlekNom(ref double Rez)

        {

            Rez = stoimost / ploshad;

        }

        //########################################################

 

        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;

        }

 

        //###########  Часть 2.1  ################################

 

        public static Nomer operator +(Nomer a, Nomer b)

        {

            Nomer p;

            p = new Nomer();

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

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

            return p;

        }

 

        public static Nomer operator +(Nomer a, int b)

        {

            Nomer p;

            p = new Nomer();

            p.stoimost = a.stoimost;

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

            return p;

        }

 

        public static Nomer operator +(int a, Nomer b)

        {

            Nomer p;

            p = new Nomer();

            p.stoimost = b.stoimost;

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

            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 = "номер";

        }

 

    }

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