Кафедра Информационных систем и программной инженерии

Федеральное государственное бюджетное образовательное учреждение

Высшего профессионального образования

«Владимирский государственный университет

имени Александра Григорьевича и Николая Григорьевича Столетовых»

(ВлГУ)

Кафедра Информационных систем и программной инженерии

Лабораторная работа №6

«Расширенные возможности языка программирования С#. Делегаты»

по дисциплине

«Технологии программирования»

Выполнил:

Студентка гр. ИСТ-114

Хомякова Т.Г.

Принял:

Вершинин В.В.

Владимир 2015

Цель работы: познакомиться с возможностями языка программирования С# для организации вызова метода с использованием делегатов.

1. Код программы.

using System;

using System.Collections.Generic;

using System.Linq;

using System.IO;

using System.Text;

using System.Threading.Tasks;

namespace Port1

{

public class Gruz

{

string whatis;

public string Whatis

{

get { return whatis; }

set { value = whatis; }

}

string country;

public string Country

{

get { return country; }

set { value = country; }

}

public Gruz(string w, string b)

{

whatis = w;

country = b;

}

}

interface Sudno

{

string Name { get; set; }

int Massa_gr { get; set; }

string Letsgo();

string Info();

}

class Nal : Sudno

{

int massa_gr;

public int Massa_gr

{

get { return massa_gr; }

set { massa_gr = value; }

}

string name;

public string Name

{

get { return name; }

set { name = value; }

}

public string Letsgo()

{

string s = "Наливное судно " + Name + " отправилось в путь!";

return s;

}

public string Info()

{

string s = Name + " " + Convert.ToString(Massa_gr);

return s;

}

}

class Suxogruz : Sudno

{

int massa_gr;

public int Massa_gr

{

get { return massa_gr; }

set { massa_gr = value; }

}

string name;

public string Name

{

get { return name; }

set { name = value; }

}

public string Letsgo()

{

string s = "Сухогруз " + Name + " отправилось в путь!";

return s;

}

public string Info()

{

string s = Name + " " + Convert.ToString(Massa_gr);

return s;

}

}

public abstract class Employee

{

string fio;

public string Fio

{

get { return fio; }

set { fio = value; }

}

int wage;

public int Wage

{

get { return wage; }

set { wage = value; }

}

int experience;

public int Experience

{

get { return experience; }

set { experience = value; }

}

public abstract string LetsTravel();

public string Dossier()

{

string s = Fio + " зарплата: " + Wage + " стаж работы " + Experience;

return s;

}

}

public class Sailors : Employee

{

public override string LetsTravel()

{

string s = "Отдать швартовы!";

return s;

}

}

public class Coptain : Employee

{

public override string LetsTravel()

{

string s = "В радио звучит весёлая песенка (Капитан, капитан, улыбнитесь...).Капитан " + Fio + " закуривает трубку.";

return s;

}

}

class Actions

{

static public string Premia(string p)

{

Random Pr = new Random();

p = p + "За отличные успехи награждаем Вас денюжкой " + Convert.ToString(Pr.Next(1000, 15000)) + Environment.NewLine;

return p;

}

static public string Otpusk(string d)

{

Random data = new Random();

d = d + "Начальство предлагает Вам отправиться в отпуск на срок " + Convert.ToString(data.Next(1, 15) + " дней!") + Environment.NewLine;

return d;

}

static public string Magic(ref string s)

{

Random x = new Random();

int p = x.Next(1,4);

string f = "C:\\Users\\Татьяна\\Documents\\Visual Studio 2015\\Projects\\Port1\\" + Convert.ToString(p)+".txt";

FileStream sr = new FileStream(f, FileMode.Open);

StreamReader Reader = new StreamReader(sr);

s= s+Environment.NewLine+Reader.ReadToEnd();

Reader.Close();

return s;

}

}

}

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.IO;

using System.Text;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Port1

{

public partial class Form1 : Form

{

public int l = 0;

public int kol=0;

public int k=0;

public int j = 0;

int terprnie = 0;

List<Sudno> Ship1 = new List<Sudno>();

List<Sailors> Sail = new List<Sailors>();

List<Coptain> Cop = new List<Coptain>();

List<Gruz> Gr = new List<Gruz>();

public Form1()

{

InitializeComponent();

}

private void button2_Click(object sender, EventArgs e)

{

for (int i = 0; i < Cop.Count; i++)

{

textBox3.Text = textBox3.Text + Cop[i].Dossier() + Environment.NewLine;

textBox3.Text = textBox3.Text + Sail[i].Dossier()+ Environment.NewLine+ DateTime.Now.ToLongTimeString()+ Environment.NewLine;

}

}

private void button1_Click(object sender, EventArgs e)

{

for (int i = 0; i < Ship1.Count; i++)

{

textBox3.Text = textBox3.Text + Ship1[i].Info() + Environment.NewLine + DateTime.Now.ToLongTimeString() + Environment.NewLine;

}

}

private void button3_Click(object sender, EventArgs e)

{

textBox3.Text = "";

}

private void button4_Click(object sender, EventArgs e)

{

if ((textBox1.Text == "") || (textBox2.Text == "") )

{ MessageBox.Show("Введите корректные данные!"); }

else

{

if (k >= kol) { MessageBox.Show("Всего в наличии " + kol + " судна, все судна отчалили"); }

else

{

Gr[k] = new Gruz( textBox1.Text, textBox2.Text);

textBox3.Text = textBox3.Text + Ship1[k].Letsgo();

textBox3.Text = textBox3.Text + Sail[k].LetsTravel();

textBox3.Text = textBox3.Text + Cop[k].LetsTravel() + DateTime.Now.ToLongTimeString() + Environment.NewLine;

k++;

}

}

}

private void button5_Click(object sender, EventArgs e)

{

for (int i = 0; i < Gr.Count; i++)

{

if (Gr[i].Whatis != " ")

{ textBox3.Text = textBox3.Text + Ship1[i].Name+ " c " + Gr[i].Whatis + " на борту отправился в " + Gr[i].Country; }

else

{ textBox3.Text = textBox3.Text + " Корабль " + Ship1[i].Name + " находится в порту"+ Environment.NewLine; }

textBox3.Text=textBox3.Text+ DateTime.Now.ToLongTimeString() + Environment.NewLine;

}

}

private void textBox4_KeyPress(object sender, KeyPressEventArgs e)

{

if (!(Char.IsDigit(e.KeyChar)))

{

e.Handled = true;

}

}

private void Form1_Load(object sender, EventArgs e)

{

StreamReader sr = File.OpenText("C:\\Users\\Татьяна\\Documents\\Visual Studio 2015\\Projects\\Port1\\Baza.txt"); //создали поток

while (true)

{

string str = sr.ReadLine();

if (str == null) { break; }

else

{

if (str[1] == 'N')

{

Nal ob1 = new Nal();

str = str.Substring(3);

ob1.Name = str.Substring(0, str.IndexOf(" "));

str = str.Substring(str.IndexOf(" ") + 1);

ob1.Massa_gr = Int32.Parse(str.Substring(0, str.IndexOf(" ")));

str = str.Substring((Convert.ToString(ob1.Massa_gr)).Length + 2);

Ship1.Add(ob1);

}

else

{

Suxogruz ob1 = new Suxogruz();

str = str.Substring(3);

ob1.Name = str.Substring(0, str.IndexOf(" "));

str = str.Substring(str.IndexOf(" ") + 1);

ob1.Massa_gr = Int32.Parse(str.Substring(0, str.IndexOf(" ")));

str = str.Substring((Convert.ToString(ob1.Massa_gr)).Length + 2);

Ship1.Add(ob1);

}

Coptain ob3 = new Coptain();

Sailors ob4 = new Sailors();

for (j = 1; j < 2; j++)

{

ob3.Fio = str.Substring(0, str.IndexOf("#"));

str = str.Substring(str.IndexOf("#") + 1);

ob3.Wage = Int32.Parse(str.Substring(0, str.IndexOf("#")));

str = str.Substring(str.IndexOf("#") + 1);

ob3.Experience = Int32.Parse(str.Substring(0, str.IndexOf("#")));

Cop.Add(ob3);

str = str.Substring(str.IndexOf("#") + 1);

ob4.Fio = str.Substring(0, str.IndexOf("#"));

str = str.Substring(str.IndexOf("#") + 1);

ob4.Wage = Int32.Parse(str.Substring(0, str.IndexOf("#")));

str = str.Substring(str.IndexOf("#") + 1);

ob4.Experience = Int32.Parse(str.Substring(0, str.IndexOf("#")));

Sail.Add(ob4);

kol++;

Gruz ob5 = new Gruz(" ", " ");

Gr.Add(ob5);

}

}

}

sr.Close();

}

bool f=true;

delegate string del (string s);

private void button6_Click(object sender, EventArgs e)

{

string s = " ";

del d;

del haljava1 = Actions.Otpusk;

del haljava2 = Actions.Premia;

del haljava3 = Actions.Magic;

d = haljava2;

d += haljava1;

d += haljava3;

Random r =new Random();

terprnie = r.Next(0, 10);

if ((terprnie < 8) && f)

{

textBox3.Text = textBox3.Text + d(s);

}

else

{

textBox3.Text = textBox3.Text + Environment.NewLine+"Терпение начальства лопнуло! Идите работать!" + Environment.NewLine;

f = false;

}

}

private void button7_Click(object sender, EventArgs e)

{

string s = "";

textBox3.Text=textBox3.Text+ Actions.Magic(s);

}

}

}

2.

Кафедра Информационных систем и программной инженерии - student2.ru

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

Наши рекомендации