Кафедра Информационных систем и программной инженерии
Федеральное государственное бюджетное образовательное учреждение Высшего профессионального образования «Владимирский государственный университет имени Александра Григорьевича и Николая Григорьевича Столетовых» (ВлГУ) Кафедра Информационных систем и программной инженерии
Лабораторная работа №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.
Вывод: я ознакомилась с возможностями делегатов в С# и научилась применять их групповой вызов на практике.
Популярное: Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (294)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |