Страницу Назад
Поискать другие аналоги этой работы

700

ЛАБОРАТОРНЫЕ РАБОТЫ №1-3 по дисциплине «Современные технологии программирования (часть 2)». Вариант общий. 2019 год.

ID: 198939
Дата закачки: 21 Февраля 2019
Продавец: teacher-sib (Напишите, если есть вопросы)
    Посмотреть другие работы этого продавца

Тип работы: Работа Лабораторная
Сдано в учебном заведении: ДО СИБГУТИ

Описание:
Лабораторная работа №1
Конвертор чисел из десятичной системы счисления в систему счисления с заданным основанием
Цель: Сформировать практические навыки реализации классов на языке C#.
Задание 1
1. Реализовать преобразователь действительных чисел со знаком из десятичной системы счисления в систему счисления с заданным основанием p, в соответствии с приведенной ниже спецификацией, используя класс. Основание системы счисления p принадлежит диапазону значений от 2 до 16.
2. Протестировать каждый метод класса.
Спецификация класса «Преобразователь чисел из десятичной системы счисления в систему счисления с заданным основанием p».
ADT Conver_10_p
Данные
Преобразователь действительных чисел из десятичной системы счисления в систему счисления с заданным основанием (тип Conver_10_p). Основание системы счисления p - это целое число, со значением, принадлежащим диапазону от 2 до 16 и целое число c, определяющее точность представления результата, выраженную в количестве разрядов.
Операции. Операции представлены в таблице 1.
Таблица 1 -Операции
Do(double n, int p, int c) Выполнитьпреобразование
 Вход: Десятичное действительное число n. Основание системы счисления p. Точность преобразования дроби, заданная числом разрядов дробной части результата c. Например:
Do(-17.875,16,3) = “-А1.Е” .
 Процесс: Выполняет преобразование десятичного действительного числа n, в систему счисления с основанием р и точностью c.
Например:Do (”-17.875”,16,3) = “-А1.Е”.
 Выход: Строка результата.
Например: Do(”-17.875”) = “-А1.Е”.
int_to_Char(int d) Преобразовать целое значение в цифру системы счисления с основанием р.
 Вход: d – значение типа int – целое, соответствующее цифре в системе счисления с основанием р.
 Предусловия: Нет.
 Процесс: Преобразует целое d в соответствующую ему цифру в системе счисления с основанием р, значение типа Char.
  Например: int_to_Char (14) = “E”.
 Выход: Значениетипа char.
 Постусловия: Нет.
int_to_P(int n, int p) Преобразоватьцелое в строку.
 Вход: n – целое число в системе счисления с основанием 10. p – основание системы счисления результата.
 Предусловия: Нет.
 Процесс: Преобразует целое n в строку, содержащую целое число в системе счисления с основанием p. Например:
int_to_P(161, 16) = “A1”
 Выход: Строка.
 Постусловия: Нет.
flt_to_P(double n, int p, int c) Преобразоватьдробь в строку.
 Вход: n – дробь в системе счисления с основанием 10, p – основание системы счисления, c – точность представления дроби.
 Предусловия: Нет.
 Процесс: Преобразует дробь n в строку, содержащую дробь в системе счисления с основанием p с точностью с. Например: flt_to_P(0.9375, 2, 4) «1111»
 Выход: Строка.
 Постусловия: Нет.
end Conver_10_p
Рекомендации к выполнению.
1. Тип данных реализовать, используя статический класс.
2. Тип данных сохраните в отдельном файле Conver_10_p.
Ниже представлена заготовка описания класса Conver_10_p. Вам необходимо написать код методов и протестировать методы.
namespace Конвертор
{
class Conver_10_P
{
//Преобразоватьцелоевсимвол.
public static char int_to_Char(int n) { }
//Преобразовать десятичное целое в с.сч. с основанием р.
public static string int_to_P(int n, int p) { }
//Преобразовать десятичную дробь в с.сч. с основанием р.
public static string flt_to_P(double n, int p, int c) { }
//Преобразовать десятичное
//действительное число в с.сч. с осн. р.
public static string Do(double n, int p, int c) { }
}
}


Класс «Конвертер р_10» - преобразователь чисел из системы счисления с основанием р в десятичную систему счисления
Цель: Сформировать практические навыки реализации классов на языке C#.
Задание 2
1. Реализовать преобразователь действительных (конвертер р_10) чисел из системы счисления с основанием р в десятичную систему счисления в соответствии с приведенной ниже спецификацией, используя класс. Основание системы счисления р принадлежит диапазону значений от 2 до 16.
2. Протестировать каждый метод класса.
Спецификация класса «Конвертер р_10» - преобразователь действительных чисел со знаком из системы счисления с основанием р в десятичную систему счисления.
ADT Conver_p_10
Данные
Преобразователь действительных чисел из заданной системы счисления с основанием p в десятичную систему счисления (тип Conver_p_10). Основание системы счисления со значением, принадлежащим диапазону от 2 до 16.
Операции
Операции приведены в таблице 2.
Таблица 2 -Операции
dval(string P_num, int P) Выполнитьпреобразование
 Вход: P_num - строковое представление действительного числа в системе счисления с основанием р. Например:
dval(“A5.E”, 16)
 Процесс: Выполняет преобразование действительного числа, представленного строкой в числовое представление.
Например:
dval(“A5.E”, 16) = -165.875.
 Выход: Вещественноечисло.
 Постусловия: Нет.
char_To_num(char ch) Преобразоватьсимвол в целое
 Вход: ch – значение типа char – символ, изображающий цифру системы счисления с основанием p.
 Предусловия: Нет.
 Процесс: Преобразует символ ch в значение целого типа.
  Например:
PCharToInt(‘A’) = 10.
 Выход: Вещественноечисло.
 Постусловия: Нет.
convert(string P_num, int P, double weight) Преобразовать строку в вещественное число.
 Вход: P_num – строка, изображающая цифры целой и дробной частей вещественного числа в системе счисления с основанием p без разделителя. weight – вес единицы старшего разряда целой части числа.
 Предусловия: Нет.
 Процесс: Преобразует строку P_num, содержащую цифры целой и дробной частей вещественного числа в системе счисления с основанием p без разделителя в вещественное число. Например:
convert (“A5E1”, 16, 16)
 Выход: Вещественноечисло.
 Постусловия: Нет.
endConver_p_10
Рекомендации к выполнению.
Описание класса может выглядеть следующим образом:
namespace Конвертор
{
public class Conver_P_10
{
//Преобразоватьцифрувчисло.
static double char_To_num(char ch) { }
//Преобразоватьстрокувчисло
private static double convert(string P_num, int P, double weight) { }
//Преобразовать из с.сч. с основанием р
//в с.сч. с основанием 10.
public static double dval(string P_num, int P) { }
}
}
3. Тип данных реализовать, используя статический класс.
4. Сохраните класс в отдельном файле Conver_p_10.
 



Лабораторная работа №2.
Редактор чисел в системе счисления с основанием р.
Цель: Сформировать практические навыки реализации классов средствами объектно-ориентированного языка программирования C#.
Задание 1
1. Разработать и реализовать класс Editor «Редактор действительных чисел представленных в системе счисления с основанием р», используя класс языка высокого уровня. Основание системы счисления р принимает значение из диапазона 2..16. Все команды редактора удобно пронумеровать, начиная с команды добавить 0 целыми числами от 0. При реализации интерфейса номера команд удобно хранить в свойстве Tag, которое имеется у визуальных компонентов.
Атрибуты и операции класс представлены на рисунке 10.

Рисунок 10 - Атрибуты и операции класса
2. Ответственность класса Editor (редактор) – хранение, ввод и редактирование строкового представления числа, представленного в системе счисления с основанием p. Класс должен обеспечивать: добавление символов (AddDigit), соответствующих р-ичным цифрам (р от 2 до 16); добавления нуля (AddZero()); добавление разделителя целой и дробной частей (AddDelim()); забой символа - удаление символа, стоящего справа (BS); очистку - установку нулевого значения числа (Clear); чтение строкового представления р-ичного числа (Number).
3. Протестировать каждый метод класса.
Рекомендации к выполнению
Описание класса может выглядеть следующим образом:
namespace Конвертор
{
classEditor
{
//Поле для хранения редактируемого числа.
stringnumber = "";
//Разделитель целой и дробной частей.
conststringdelim = ".";
//Ноль.
conststringzero = "0";
//Свойствое для чтения редактируемого числа.
public string Number
{ get { } }
//Добавитьцифру.
public string AddDigit(int n) { }
//Точность представления результата.
publicintAcc(){ }
//Добавитьноль.
publicstringAddZero(){ }
//Добавитьразделитель.
publicstringAddDelim(){ }
//Удалить символ справа.
publicstringBs() { }
//Очистить редактируемое число.
publicstringClear() { }
//Выполнить команду редактирования.
public string DoEdit(int j) { }
}
}
Класс сохраните в файле Editor. В разделе описания констант опишите следующие константы: «разделитель целой и дробной частей» строкового типа; «строковое представление нуля» строкового типа.
 
Класс История.
Цель: Сформировать практические навыки реализации классов средствами объектно-ориентированного программирования языка C#;использования библиотечного класса обобщённой коллекции List<> для обработки данных.
Задание 2
1. Разработать и реализовать класс History «История», используя класс языка C#. Класс отвечает за документирование выполнения пользователем переводов чисел. Объекты класса хранят исходные числа, результаты преобразования и основания систем счисления исходного числа и результата.
Атрибуты и операции класса представлены таблице 3.
Таблица 3 - Атрибуты и операции класса «История»
История
Запись(i: integer): String;
ДобавитьЗапись(a: String);
Записей(): integer
ОчиститьИсторию();
Обязанность: ввод, вывод, хранение данных введённых пользователем и полученных результатов.
2. Класс должен отвечать за ввод, вывод, хранение данных введённых пользователем и полученных результатов. Класс должен обеспечивать:
• добавление записи (ДобавитьЗапись) - строки, содержащей введённое пользователем число, результат его преобразования и основания систем счисления исходной и той, в которую число преобразовано;
• извлечение записи по её номеру в списке (Запись);
• очистка списка (ОчиститьИсторию);
• конструктор (Запись);
• текущий размер списка в числе записей (Записей);
3. Протестировать каждый метод класса.
Рекомендации к выполнению
1. Создайте консольное приложение, в которое добавьте класс History и сохраните его в файле History.
2. В этот же файл добавьте структуру (struct) Record с четырьмя полями для хранения исходного числа, результата и оснований их систем счисления. В структуру добавьте конструктор и метод ToString() для преобразования значения в формат строки.
3. Класс History, постройте на основе библиотечного класса коллекции List<Record> из пространства имён System.Collections.Generic.
4. В классе History опишите поле List<Record> L – список значений типа Record. Для поля опишите уровень доступа private.
5. Следующие операции класса опишите с уровнем доступа public:
•  добавить запись (AddRecord) - строку, содержащую введённое пользователем число, результат его преобразования и основания их систем счисления;
• извлечь запись по её номеру из списка L;
• очистить историю (Clear);
• конструктор (History);
• текущий размер списка в числе записей (Count);
Описание структуры Record и класса History могут иметь следующий вид:
public struct Record
{
int p1;
int p2;
string number1;
string number2;
public Record(int p1, int p2, string n1, string n2) { }
public override string ToString(){ }
}
public class History
{
List<Record> L;
public Record this[inti] { }
public void AddRecord(int p1, int p2, string n1, string n2) { }
public void Clear() { }
public intCount() { }
public History(){ }
}
&#8195;

Лабораторная работа №3
Класс Управление для «Конвертора p1_р2».
Цель: Сформировать практические навыки реализации классов на языке C#.
Задание 1
1. Реализовать Управление для «Конвертера p1_р2».
2. Протестировать каждый метод класса.
Спецификация класса Управление для «Конвертера p1_р2».
ADT Control_
Данные
Объект класса Control_ (Управление) отвечают за координацию действий между классом «Интерфейс» и классами «Редактор», «Конвертер p1_10», «Конвертер 10_p2», «История». Объект класса Control_ содержат поля: ed типа Editor, his типа История, и свойства: Pin типа int (основание системы счисления исходного числа), Pout типа int (основание системы счисления результата), St типа State (состояние конвертера). Он может находиться в одном из двух состояний: «Редактирование», «Преобразовано». Объекты этого типа изменяемы.
Операции
Операции представлены в таблице 4.
Таблица 4 - Операции
Control_ Конструктор
 Вход: Нет.
 Процесс: Создаёт объект Управление типа (тип Control_) и инициирует поля объекта начальными значениями.
DoCommand Выполнить команду.
 Вход: n - целое значение, номер выполняемой команды.
 Предусловия: Нет.
 Процесс: В зависимости от значения n и состояния (St) передаёт сообщение объекту Редактор или Преобразователь и изменяет состояние. Возвращает строку результата: либо отредактированное число, либо результат преобразования.
 Выход: Строка.
 Постусловия: Нет.
end Control_
Рекомендации к выполнению
1. Тип данных реализовать, используя класс.
2. Для записи и считывания полей «преобразователя» используйте свойства.
3. Тип данных реализуйте в отдельном файле Control_.
Пример описания класса Управление приведён ниже.
namespace Конвертор
{
class Control_
{
//Основание системы сч. исходного числа.
const int pin = 10;
//Основание системы сч. результата.
const int pout = 16;
//Число разрядов в дробной части результата.
const int accuracy = 10;
public История his = new История();
public enum State {Редактирование, Преобразовано}
//Свойство для чтения и записи состояние Конвертера.
public State St { get; set; }
//Конструктор.
public Control_()
{
St = State.Редактирование;
Pin = pin;
Pout = pout;
}
//объектредактор
public Editor ed = new Editor();
//Свойство для чтения и записи основание системы сч. р1.
public int Pin { get; set; }
//Свойство для чтения и записи основание системы сч. р2.
public int Pout { get; set; }
//Выполнить команду конвертера.
publicstringDoCmnd(intj)
{
if (j == 19)
{
double r = Conver_P_10.dval(ed.Number, (Int16)Pin);
string res = Conver_10_P.Do(r, (Int32)Pout,acc());
St = State.Преобразовано;
his.ДобавитьЗапись(Pin, Pout, ed.Number, res);
return res;
}
else
{
St = State.Редактирование;
return ed.DoEdit(j);
}

}
//Точность представления результата.
privateintacc()
{
return (int)Math.Round(ed.Acc() * Math.Log(Pin) / Math.Log(Pout) + 0.5);
}
}
}


Интерфейс приложения «Конвертор р1_р2».
Цель: Сформировать практические навыки реализации графических интерфейсов пользователя (GUI) на основе библиотеки визуальных компонентов.
Задание 2
1. Реализовать «Интерфейс» приложения «Конвертер р1_р2», используя библиотечный класс формы и визуальные компоненты.
2. Протестировать методы класса.
Спецификация класса «Интерфейс».
Интерфейс приложения представлен на рисунке 1.
ADT TPanel_p_p
Данные
«Интерфейс» конвертера действительных чисел из системы счисления с основанием p1 в систему счисления с основанием p2 предназначен для: выбора оснований систем счисления p1, p2 из диапазона от 2..16; ввода и редактирования действительного числа со знаком в системе счисления с выбранным основанием p1; отображения результата – представления ввёдённого числа в системе счисления с основанием p2; отображения справки о приложении; отображения истории текущего сеанса работы пользователя с приложением.
«Интерфейс» несёт на себе визуальные компоненты, реализующие выполнения команд преобразователя и объект «Управление» класса Control_.
Операции. Операции представлены в таблице 5.
Таблица 5 - Операции
Наименование Пояснение
trackBar1_Scroll Обработчик события Scroll для компонента trackBar1.
 Вход: objectsender, EventArgse.
sender – указатель на объект, который явился инициатором события Scroll. e - это объект базового класса для классов, содержащих данные о событии.
 Предусловия: Пользователь перетаскивает бегунок компонента trackBar1.
 Процесс: Обновляет свойства визуальных компонентов формы, связанных с изменением основания системы счисления р1 исходного числа. Устанавливает новое значение основания системы счисления. Обновляет состояние командных кнопок.
 Постусловия: Обновления выполнены.
 Выход: Нет.
numericUpDown1_ValueChanged Обработчик события ValueChanged для компонента numericUpDown1.
 Вход: objectsender, EventArgse. sender – указатель на объект, который явился инициатором события ValueChanged.
 Предусловия: Пользователь изменяет р1 с помощью компонента numericUpDown1.
 Процесс: Обновляет свойства визуальных компонентов формы, связанных с изменением основания системы счисления р1 исходного числа. Устанавливает новое значение основания системы счисления. Обновляет состояние командных кнопок.
 Постусловия: Обновления выполнены.
 Выход: Нет.
trackBar2_Scroll Обработчик события Scroll для компонента trackBar2.
 Вход: objectsender, EventArgse. sender – указатель на объект, который явился инициатором события Scroll.
 Предусловия: Пользователь перетаскивает бегунок компонента trackBar2.
 Процесс: Обновляет свойства визуальных компонентов формы, связанных с изменением основания системы счисления p2 исходного числа. Устанавливает новое значение основания системы счисления.
 Постусловия: Обновления выполнены.
 Выход: Нет.
numericUpDown2_ValueChanged Обработчик события ValueChanged для компонента numericUpDown2.
 Вход: objectsender, EventArgse. sender – указатель на объект, который явился инициатором события ValueChanged.
 Предусловия: Пользователь изменяет р2 с помощью компонента numericUpDown2.
 Процесс: Обновляет свойства визуальных компонентов формы, связанных с изменением основания системы счисления р2 результата. Устанавливает новое значение основания системы счисления. Обновляет состояние командных кнопок.
 Постусловия: Обновления выполнены.
 Выход: Нет.
numericUpDown1_ValueChanged Обработчик события ValueChanged для компонента numericUpDown1.
 Вход: objectsender, EventArgse. sender – указатель на объект, который явился инициатором события ValueChanged.
 Предусловия: Пользователь изменяет р1 с помощью компонента numericUpDown1.
 Процесс: Обновляет свойства визуальных компонентов формы, связанных с изменением основания системы счисления р1 результата. Устанавливает новое значение основания системы счисления. Обновляет состояние командных кнопок.
 Постусловия: Обновления выполнены.
 Выход: Нет.
TPanelp_p_Load Обработчик события Load для компонента TPanelp_p.
 Вход: (objectsender, EventArgse). sender – указатель на объект, который явился инициатором события Load.
 Предусловия: Форма загружается в память.
 Процесс: Устанавливает начальные значения свойств визуальных компонентов формы после загрузки формы.
 Выход: Нет.
 Постусловия: Установка свойств выполнена.
DoCmnd(int j) Выполнить команду.
 Вход: j значение целого типа – номер команды преобразователя.
Предусловия: Пользователь нажал командную кнопку команды с номером j.
 Процесс: Передаёт сообщение объекту Управление и отображает возвращаемый им результат. Вызывается метод объекта Управление и передаётся номер набранной пользователем команды Конвертора.
 Выход: Нет.
 Постусловия: Обновляется состояние Интерфейса.
button_Click Обработчик события Click для командных кнопок.
 Вход: object sender, EventArgs e. sender: object – указатель на объект, который явился инициатором события Click.
 Предусловия: Пользователь нажал командную кнопку.
 Процесс: Извлекает из свойства Tag командной кнопки номер соответствующей ей команды. Вызывает метод DoCmnd Интерфейса и передаёт в него номер команды.
 Выход: Нет.
 Постусловия: Нет.
TPanelp_p_KeyPress Обработчик события KeyPress для алфавитно-цифровых клавиш клавиатуры.
 Вход: object sender, KeyPressEventArgs e.
 Предусловия: Пользователь нажал алфавитно-цифровую клавишу клавиатуры.
 Процесс: Определяет по нажатой алфавитно-цифровой клавише номер соответствующей ей команды. Вызывает метод DoCmnd Интерфейса и передаёт в него номер команды.
 Выход: Нет.
 Постусловия: Команда пользователя вызвана.
TPanelp_p_KeyDown Обработчик события KeyDown для клавиш управления клавиатуры.
 Вход: (object sender, KeyEventArgs e)
 Предусловия: Пользователь нажал клавишу управления клавиатуры.
 Процесс: Определяет по нажатой клавише управления номер соответствующей ей команды. Вызывает метод DoCmnd Интерфейса и передаёт в него номер команды.
 Выход: нет.
 Постусловия: Команда пользователя вызвана.
UpdateP1
 Выполнить обновления связанные с изменением р1.
 Вход: Нет.
 Предусловия: Изменено основание с.сч. р1 исходного числа.
 Процесс: Выполняет необходимые обновления при смене ос. с. сч. р1.
 Выход: Нет.
 Постусловия: Состояние кнопок обновлено.
UpdateP2
 Выполнить обновления связанные с изменением р2.
 Вход: Нет.
 Предусловия: Изменено основание с.сч. р2 результата.
 Процесс: Выполняет необходимые обновления при смене ос. с. сч. р2.
 Выход: Нет.
 Постусловия: Состояние кнопок обновлено.
UpdateButtons 
 Вход: Нет.
 Предусловия: Изменено основание с.сч. р1 исходного числа.
 Процесс: Обновляет состояния командных кнопок предназначенных для ввода цифр выбранной системы счисления p1.
 Выход: Нет.
 Постусловия: Состояние кнопок обновлено.
выходToolStripMenuItem_Click Команда Выход основного меню класса TPanelp_p формы.
 Вход: object sender, EventArgs e.
 Предусловия: Пользователь кликает мышью на пункте Выход основного меню формы.
 Процесс: Завершает работу приложения.
 Выход: Нет.
 Постусловия: Приложение завершено.
справкаToolStripMenuItem_Click Команда Справка основного меню класса TPanelp_p формы.
 Вход: object sender, EventArgs e
 Предусловия: Пользователь кликает мышью на пункте Справка основного меню формы.
 Процесс: Показывает окно со справкой по приложению.
 Выход: Нет.
 Постусловия: Отображено окно справки.
историяToolStripMenuItem_Click Команда История основного меню класса TPanelp_p формы.
 Вход: object sender, EventArgs e
 Предусловия: Пользователь кликает мышью на пункте История основного меню формы.
 Процесс: Открывает окно История.
 Выход: Нет.
 Постусловия: Окно История - открыто.
endTPanel_p_p
Рекомендации к выполнению.
1. Интерфейс приложения будет состоять из трёх форм: основная форма класс TPanel_p_p, HistoryForm – форма для отображения истории, AboutBox – форма, информирующая о приложении. Все они наследники класса Form.
2. Для реализации интерфейса приложения разместите на форме компоненты, описанные в таблице 6.
Таблица 6 - Компоненты
Имя компонента Имя класса Назначение
label1 Label Исходное число.
label2 Label Результат.
label3 Label Подпись к исходному числу.
label4 Label Подпись к результату.
trackBar1 TrackBar Изменять основание с. сч. р1.
trackBar2 TrackBar Изменять основание с. сч. р2.
numericUpDown1 NumericUpDown Изменять основание с. сч. р1.
numericUpDown2 NumericUpDown Изменять основание с. сч. р2.
button1 – button10 Button Ввод цифр от 0 – 9.
button11 – button16 Button Ввод цифр от A – F.
button17 Button Разделитель целой и дробной частей (,).
button18 Button Забой крайнего правого символа (BS).
button19 Button Удалить исходное число (CL).
button20 Button Выполнить (Execute).
menuStrip1 menuStrip1 Основное меню главной формы.
выходToolStripMenuItem ToolStripMenuItem Завершение работы приложения.
историяToolStripMenuItem ToolStripMenuItem Просмотр журнала сеанса работы.
справкаToolStripMenuItem ToolStripMenuItem Справка по приложению.
Для этого перейдите на вкладку Конструктор формы окна редактора и сделайте форму активной. Добавьте на форму из вкладки «Панели элементов» из раздела «Все формы Windows Forms» командные кнопки Button. Кнопки помещайте на форму снизу вверх слева направо, начиная с 0. Порядок добавления кнопок на форму должен совпадать с порядком их нумерации. Выделите все кнопку и в окне Свойства на закладке Свойства раскройте свойство Font (Шрифт) и установите требуемые вам свойства для шрифта. Затем в свойство Text (Текст) занесите соответствующие цифры. Затем в свойство Tag каждой кнопки занесите целое число соответствующее кнопке: кнопки для ввода цифр нумеруйте от 0 до 15; кнопка разделитель целой и дробной части – 16; удалить крайний символ слева (BS) - 17; очистить всё (CL) – 18; выполнить ( Enter) - 19. Измените размер кнопок (свойство Size), если это необходимо.
Добавьте на форму два компонента TrackBar из вкладки «Панель элементов» из раздела «Все формы Windows Forms». С помощью окна «Свойства» установите в их свойства Minimum значение 2, а в Maximum - значение 16. Рядом с каждым из них разместите компонент NumericUpDown «числовое поле со стрелками вверх/вниз». Добавьте на форму два компонента Label. В одном будем отображать основание системы счисления р1, в другом – подпись к нему. Добавьте на форму ещё два компонента Label для основания системы счисления результата р2.
Добавьте на форму компонент MenuStrip из вкладки «Панель элементов» из раздела «Все формы Windows Forms». Добавьте в компонент MenuStrip три пункта меню MenuItem. С помощью окна «Свойства» установите в их свойства Text значение Выход, История, Справка. Полученная форма будет иметь вид, как представлено на рис.18 .
Для настройки отклика приложения на действия пользователя необходимо создать обработчики событий для тех компонент интерфейса, которыми будет манипулировать пользователь. Обработчик события для выделенного компонента создаётся с помощью окна «Свойства» закладки «События». Правее выбранного события в свободном поле необходимо сделать двойной клик мышью и в классе формы появится текст шаблона обработчика этого события. Затем вам необходимо описать в обработчике необходимые вам действия. Обработчики событий для компонентов главной формы приведены в таблице 7.
Таблица 7 - Обработчики событий для компонентов главной формы
Имя компонента Событие  Обработчик
TPanelp_p (главная форма) Load TPanelp_p_Load
TPanelp_p (главная форма) KeyDown TPanelp_p_KeyDown
TPanelp_p (главная форма) KeyPress TPanelp_p_KeyPress
trackBar1 Scroll trackBar1_Scroll
trackBar2 Scroll trackBar1_Scroll
numericUpDown1 ValueChanged numericUpDown1_ValueChanged
numericUpDown2 ValueChanged numericUpDown1_ValueChanged
button1 – button19 Click button_Click
выходToolStripMenuItem Click выходToolStripMenuItem_Click
историяToolStripMenuItem Click историяToolStripMenuItem1_Click
справкаToolStripMenuItem Click справкаToolStripMenuItem_Click
Теперь можно запустить приложение и протестировать работу командных кнопок для ввода цифр действительного числа, представленного в выбранной системе счисления. А также для изменения оснований систем счисления исходного числа и результата. Ниже приведён текст модуля главного окна приложения.
namespaceКонвертор
{
publicpartialclassForm1 : Form
{
//ОбъектклассаУправление.
Control_ ctl = new Control_();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
label1.Text = ctl.ed.Number;
//Основание с.сч. исходного числа р1.
trackBar1.Value = ctl.Pin;
//Основание с.сч. результата р2.
trackBar2.Value = ctl.Pout;
label3.Text = "Основание с. сч. исходного числа " + trackBar1.Value;
label4.Text = "Основание с. сч. результата " + trackBar2.Value;
label2.Text = "0";
//Обновить состояние командных кнопок.
this.UpdateButtons();
}
//Обработчик события нажатия командной кнопки.
private void button1_Click(object sender, EventArgs e)
{
//ссылка на компонент, на котором кликнули мышью
Button but = (Button)sender;
//номервыбраннойкоманды
int j = Convert.ToInt16(but.Tag.ToString());
DoCmnd(j);
}
//Выполнитькоманду.
private void DoCmnd(int j)
{
if (j == 19) { label2.Text = ctl.DoCmnd(j); }
else
{
if (ctl.St == Control_.State.Преобразовано)
{
//очистить содержимое редактора
label1.Text = ctl.DoCmnd(18);
}
//выполнить команду редактирования
label1.Text = ctl.DoCmnd(j);
label2.Text = "0";
}
}
//Обновляет состояние командных кнопок по основанию с. сч. исходного числа.
private void UpdateButtons()
{
//просмотреть все компоненты формы
foreach (Control i in this.Controls)
{
if (i is Button)//текущий компонент - командная кнопка
{
int j = Convert.ToInt16(i.Tag.ToString());
if (j < trackBar1.Value)
{
//сделать кнопку доступной
i.Enabled = true;
}
if ((j >= trackBar1.Value) && (j <= 15))
{
//сделать кнопку недоступной
i.Enabled = false;
}
}
}
}
//Изменяет значение основания с.сч. исходного числа.
private void trackBar1_Scroll(object sender, EventArgs e)
{
numericUpDown1.Value = trackBar1.Value;
//Обновитьсостояниекомандныхкнопок.
this.UpdateP1();
}
//Изменяет значение основания с.сч. исходного числа.
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
//Обновитьсостояние.
trackBar1.Value = Convert.ToByte(numericUpDown1.Value);
//Обновить состояние командных кнопок.
this.UpdateP1();
}
//Выполняет необходимые обновления при смене ос. с.сч. р1.
private void UpdateP1()
{
label3.Text = "Основание с. сч. исходного числа " + trackBar1.Value;
//Сохранить р1 в объекте управление.
ctl.Pin = trackBar1.Value;
//Обновить состояние командных кнопок.
this.UpdateButtons();
label1.Text = ctl.DoCmnd(18);
label2.Text = "0";
}
//Изменяет значение основания с.сч. результата.
private void trackBar2_Scroll(object sender, EventArgs e)
{
//Обновитьсостояние.
numericUpDown2.Value = trackBar2.Value;
this.UpdateP2();
}
//Изменяет значение основания с.сч. результата.
private void numericUpDown2_ValueChanged(object sender, EventArgs e)
{
trackBar2.Value = Convert.ToByte(numericUpDown2.Value);
this.UpdateP2();
}
//Выполняет необходимые обновления при смене ос. с.сч. р2.
private void UpdateP2()
{
//Копировать основание результата.
ctl.Pout = trackBar2.Value;
//Пересчитать результат.
label2.Text = ctl.DoCmnd(19);
label4.Text = "Основание с. сч. результата " + trackBar2.Value;
}
//ПунктменюВыход.
private void выходToolStripMenuItem_Click(object sender, EventArgs e)
{
Close();
}
//ПунктменюСправка.
private void справкаToolStripMenuItem_Click(object sender, EventArgs e)
{
AboutBox1 a = new AboutBox1();
a.Show();
}
//ПунктменюИстория.
private void историяToolStripMenuItem1_Click(object sender, EventArgs e)
{
Form2 history = new Form2();
history.Show();
if (ctl.his.Записей() == 0)
{
history.textBox1.AppendText("Историяпуста");
return;
}
//Ообразитьисторию.
for (int i = 0; i < ctl.his.Записей(); i++)
{
history.textBox1.AppendText(ctl.his.ToString());
}
}
//Обработкаалфавитно-цифровыхклавиш.
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
int i = -1;
if (e.KeyChar >= \'A\' && e.KeyChar <= \'F\') i = (int)e.KeyChar - \'A\' + 10;
if (e.KeyChar >= \'a\' && e.KeyChar <= \'f\') i = (int)e.KeyChar - \'a\' + 10;
if (e.KeyChar >= \'0\' && e.KeyChar <= \'9\') i = (int)e.KeyChar - \'0\';
if (e.KeyChar == \'.\') i = 16;
if ((int)e.KeyChar == 8) i = 17;
if ((int)e.KeyChar == 13) i = 19;
if ((i < ctl.Pin)||(i >= 16)) DoCmnd(i);
}
//Обработкаклавишуправления.
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Delete)
//Клавиша Delete.
DoCmnd(18);
if (e.KeyCode == Keys.Execute)
//Клавиша Execute Separator.
DoCmnd(19);
if (e.KeyCode == Keys.Decimal)
//Клавиша Decimal.
DoCmnd(16);
}
}
}


Комментарии: 2019 год сдачи.

Размер файла: 1,5 Мбайт
Фаил: Упакованные файлы (.rar)
-------------------
Обратите внимание, что преподаватели часто переставляют варианты и меняют исходные данные!
Если вы хотите, чтобы работа точно соответствовала, смотрите исходные данные. Если их нет, обратитесь к продавцу или к нам в тех. поддержку.
Имейте ввиду, что согласно гарантии возврата средств, мы не возвращаем деньги если вариант окажется не тот.
-------------------

   Скачать

   Добавить в корзину


    Скачано: 24         Коментариев: 0


Есть вопросы? Посмотри часто задаваемые вопросы и ответы на них.
Опять не то? Мы можем помочь сделать!

Некоторые похожие работы:

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

Не можешь найти то что нужно? Мы можем помочь сделать! 

От 350 руб. за реферат, низкие цены. Просто заполни форму и всё.

Спеши, предложение ограничено !



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

Страницу Назад

  Cодержание / Современные технологии программирования / ЛАБОРАТОРНЫЕ РАБОТЫ №1-3 по дисциплине «Современные технологии программирования (часть 2)». Вариант общий. 2019 год.
Вход в аккаунт:
Войти

Забыли ваш пароль?

Вы еще не зарегистрированы?

Создать новый Аккаунт


Способы оплаты:
UnionPay СБР Ю-Money qiwi Payeer Крипто-валюты Крипто-валюты


И еще более 50 способов оплаты...
Гарантии возврата денег

Как скачать и покупать?

Как скачивать и покупать в картинках


Сайт помощи студентам, без посредников!