- •В.А. Новиков Объектно-ориентированное программирование в с#
- •Минск ● вгкс
- •Лабораторная работа 1 Константы, переменные, выражения. Визуальные элементы: кнопка и текстовое поле
- •Лабораторная работа 2 Операторы управления. Визуальные элементы: маскированное поле и установка цвета
- •Лабораторная работа 3 Ввод – вывод на консоль. Визуализация через файлы. Независимый переключатель и шрифты
- •Лабораторная работа 4 Строки. Модальные формы пользователя
- •Лабораторная работа 5 Массивы. Зависимый переключатель
- •Лабораторная 6 Перечисление. Немодальные формы пользователя
- •Лабораторная 7 Регулярные выражения. Таймер
- •Лабораторная работа 8 Прототипы-данные. Визуальный элемент выпадающий список
- •Лабораторная работа 9 Подпрограммы. Визуальный элемент список. Отработка событий клавиатуры
- •Лабораторная работа 10 Обработка исключительных ситуаций. Визуальный элемент закладка tabControl
- •Лабораторная работа 11 Переопределение операций. Закладка TabStrip
- •Лабораторная работа 12 Работа с файлами. Всплывающая подсказка
- •Лабораторная работа 13 Структуры. Перетаскивание элемента на форме
- •Лабораторная работа 14 Построение графиков через Excel. Объект Drawning
- •Содержание
Лабораторная работа 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