Автор работы: Пользователь скрыл имя, 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
Приложение Е ..................................................................................................................
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();
Console.Write("Второе
P2.Display();
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("
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();
Console.Write("Второе
P2.Display();
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("
Console.WriteLine("
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("\
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 = "номер";
}
}
Информация о работе Структура и состав классов для построения модели работы гостиницы.