Пример программы с использованием структур с методами и перечислений

Рекомендации по программированию

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

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

 

using System;

using System.Collections.Generic;

using System.Text;

//Багги - если неверно вводится знак зодиака, то по умолчанию буде Овен

// если вводятся одинаковые фамилии

namespace ConsoleApplication10

{

struct Человек

{

public enum Знак_Зодиака

{

Овен,Скорпион,Рак,Стрелец,Рыбы,Весы,Близнецы,Дева,Козерог,Водолей,Лев

}

public string Фамилия;

public Знак_Зодиака Знак;

public override string ToString()

{

return (string.Format("Фамилия {0}. Знак зодиака {1}", Фамилия,Знак));

}//конец метода

 

public void vvod()

{

Console.WriteLine("Введите фамилию человека:");

Фамилия=Console.ReadLine();

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

string buf =Console.ReadLine();

switch (buf)

{

case "Овен" : Знак = Знак_Зодиака.Овен; break;

case "Скорпион": Знак = Знак_Зодиака.Скорпион; break;

case "Рак": Знак = Знак_Зодиака.Рак; break;

case "Стрелец": Знак = Знак_Зодиака.Стрелец; break;

case "Рыбы": Знак = Знак_Зодиака.Рыбы; break;

case "Весы": Знак = Знак_Зодиака.Весы; break;

case "Близнецы": Знак = Знак_Зодиака.Близнецы; break;

case "Дева": Знак = Знак_Зодиака.Дева; break;

case "Козерог": Знак = Знак_Зодиака.Козерог; break;

case "Водолей": Знак = Знак_Зодиака.Водолей; break;

case "Лев": Знак = Знак_Зодиака.Лев; break;

// default: Console.WriteLine("Значение не определено"); break;

}

}

 

}

class Program

{

static void Main(string[] args)

{

Console.WriteLine("Введите количество человек:");

int n = Convert.ToInt32(Console.ReadLine());

Человек[] x=new Человек[n];

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

x[i].vvod();

Console.WriteLine("Информация в базе:");

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

Console.WriteLine(x[i]);

Console.WriteLine("Введите фамилию для поиска знака зодиака:");

string fam=Console.ReadLine();

int k=0;

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

{

if (x[i].Фамилия == fam) { Console.WriteLine(x[i]); k++; break; }

}

if (k == 0) Console.WriteLine("Такой фамилии нет");

 

Console.ReadKey();

}

}

}