Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metodicheskoe_posobie_VGKS_po_S.docx
Скачиваний:
49
Добавлен:
13.02.2016
Размер:
433.75 Кб
Скачать

Лабораторная работа 8 Прототипы-данные. Визуальный элемент выпадающий список

Цель работы.

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

План занятия.

Изучить теоретические сведения формирования программы на С#.

По приведенному листингу программы разработать на Visual Studio программу и отладить ее. Составить программу по индивидуальному заданию.

Краткие теоретические сведения.

Прототипы- данные.

Класс-прототип List <T> используется для удобной работы с вектором данных.

Объявление:

List<string> St=new List<string>(); // будет сформирован вектор строк

Добавление элемента в список:

St.Add(“кошка”);

По этому методу Add индекс вектора увеличится на +1 и в него запишется строка «кошка»

St.Add(“животное“,”собака”);

По этому методу Add индекс вектора увеличится нa +1 , ему будет установлен ключ «животное» и в элемент с этим ключом запишется строка «собака»

Пример :

List<int> Zp=new List<int>();

Zp.Add(4);

Zp.Add(“февраль”,8);

Zp.Add(“март”,7);

Zp.Add(11);

Zp.Add(“май”,16);

Из вектора Zp при этом элементы можно выбрать как по номеру, так и по ключу (номера индексов с 0):

int i=Zp[1]; // в i будет число 8

int i=Zp[«март»]; // в i будет число 7

int i=Zp[3]; // в i будет число 11

Свойства класса List:

Zp.Count – число элементов в списке,

Zp.Keys – возвращает список ключей,

Zp.Values – возвращает список значений.

Методы класса List:

Zp.Add() – добавляет элемент в конец списка,

Xp.Clear() – очищает список ,

bool b =Zp.ContainsKey(“февраль”); – определяет наличие (true) или отсутсвие (false) указанного ключа в списке,

Zp.Remove (“февраль”); – удаление из списка элемента c ключом “февраль”,

S=Zp.GetByIndex(4); – возвращает значение 4-го элемента списка,

S=Zp.GetKey(4); – возвращает ключ 4-ого элемента списка,

I=Zp.IndexOfKey(“март”); – возвращает номер элемента по ключу,

Zp.RemoveAt(4); – удаляет 4-ый элемент списка,

Zp.SetByIndex(4,5); – замена 4-го элемента значением 5, где 5 – значение ,4 – номер элемента (тоже, что Zp[4]=5;),

Zp.TrimToSize(); – уменьшает емкость списка до реального числа элементов в списке,

Zp.Sort(); – сортирует список по возрастанию значений.

КЛАСС SortedList ничем не отличается от List, кроме того, что у него список всегда отсортирован по возрастанию ключей

КЛАСС Dictionary это разновидность списка, но при добавлении элемента в список в отличие от List ведется проверка на наличие добавляемого ключа в список.

Обьявление:

Dictionary<тип Ключа, тип значения> Zp=new Dictionary<тип Ключа, тип значения>;

В отличие от List к элементу списка Dictionary можно обратиться только по ключу.

Порядок выполнения работы.

Создать форму:

Воспроизвести программный код.

//FORM

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

public class Attr

{

public string Name;

public byte Value;

public int Code;

public Attr(name, value,code)

{

this.Name=name; this.Value=value; this.Code=code;

}

}

Attr[] att = new Attr[50];

int Numb;

public Form1()

{

InitializeComponent();

att[0] = new Attr("sin", 4, 8); this.comboBox1.Items.Add(att[0].Name);

att[1] = new Attr("cos", 6, 9); this.comboBox1.Items.Add(att[1]).Name;

att[2] = new Attr("exp", 4, 5); this.comboBox1.Items.Add(att[2].Name);

}

private void button2_Click(object sender, EventArgs e)

{

this.Close();

}

private void button1_Click(object sender, EventArgs e)

{

double x, y; string st;

y = -1;

x = Convert.ToDouble(textBox1.Text);

int ind = this.comboBox1.SelectedIndex;

if (ind != -1)

{

if (att[ind].Name == "sin") y = Math.Sin(x);

else if (att[ind].Name == "cos") y = Math.Cos(x);

else if (att[ind].Name == "exp") y = Math.Exp(x);

}

st = String.Format("{0,4:0.##}",y);

textBox2.Text = st;

}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{

int ind = this.comboBox1.SelectedIndex;

Numb = ind;

this.textBox3.Text = Convert.ToString(att[ind].Value);

this.textBox4.Text = Convert.ToString(att[ind].Code);

}

private void button4_Click(object sender, EventArgs e)

{

int II = this.comboBox1.Items.Count;

if (II < 50)

{

att[II] = new Attr(comboBox1.Text, Convert.ToByte(this.textBox3.Text),

Convert.ToInt32(this.textBox4.Text));

this.comboBox1.Items.Add(this.comboBox1.Text);

}

else MessageBox.Show("Слишком длинный список");

}

private void button3_Click(object sender, EventArgs e)

{

for (int i = this.comboBox1.SelectedIndex; i < this.comboBox1.Items.Count-1; i++)

{

att[i].Value = att[i + 1].Value; att[i].Code = att[i + 1].Code;

att[i].Name = att[i + 1].Name;

}

this.comboBox1.Items.RemoveAt(this.comboBox1.SelectedIndex);

this.textBox3.Text = "";

this.textBox4.Text = "";

}

private void button5_Click(object sender, EventArgs e)

{

int m = Numb;

att[m].Value = Convert.ToByte(this.textBox3.Text);

att[m].Code = Convert.ToInt32(this.textBox4.Text);

att[m].Name = this.comboBox1.Text;

this.comboBox1.Items.RemoveAt(m);

this.comboBox1.Items.Insert(m,this.comboBox1.Text);

}}}

Индивидуальное задание.

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

Содержание отчета.

Представить отлаженную программу по индивидуальному заданию.

Литература.

Павловская Т.А. С#, Программирование на языке высокого уровня. – М., СПб: Питер, 2010, с.299-308

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]