Продолжаем изучать основы разработки Windows-приложений. Ввод данных, проверка данных, защита полей от внешних незапланированных действий пользователя.
Массив объектов пользовательского класса. Его отображение в «списках».
Элементы Button, TextBox, MessageBox, Label, компонент ToolTip.
Как добавить класс в проект: Solution_Explorer -> (правая кнопка) Имя_Проекта -> Add ->Class -> (Name)Имя_класса.cs -> Add
Задача
Определить класс для представления результатов тестирования с полями объектов: фамилия тестируемого, балл (от 0 до 100). Статические поля: название дисциплины и максимальный балл по тесту среди всех, выполнивших этот тест. Свойство для нормирования балла, то есть для перехода от шкалы [0-100] к шкале [0-10]. Перегрузить метод ToString(). В диалоге: вводить сведения о прошедших тестирование и выводить в поле элемента TextBox список результатов теста.
Класс разместить в отдельном файле TestResult.cs
Решение Mod_1
Настройки свойств элементов:
textBox1.Multiline=True; textBox1.ScrollBars=Verical
Label1.Text=“Список результатов”; Label1.Font.Size=20; textBox1.BackColor = White; и т.д.
Объявление класса:
namespace Mod_1 {
public class TestResult // Результат студента
{
public static int maxBall = 0; // Максимальный балл по результатам
public static string title = "Информатика"; // название теста
string name; // фамилия тестируемого
int ball; // балл (от 0 до 100)
public int NormBall { // нормированное значение балла (от 0 до 10)
get {
double rom = maxBall == 0 ? 10 : 10.0 * ball / maxBall;
return (int)Math.Round(rom); } }
public TestResult(string name, int ball) // конструктор
{
this.name = name;
this.ball = ball;
if (ball > maxBall) maxBall = ball;
}
public override string ToString() {
string res = string.Format("{0,-60}\t{1,10}{2,10}",
name, ball, NormBall);
return res; }
}
}
Результат проектирования интерфейса:
namespace Mod_1 {
public partial class Form1 : Form
{
static TestResult[] records = new TestResult[30];
public static int numbRec = 0; // счетчик записей
string[] result = new string[30]; // представление оценок
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
records[0] = new TestResult("Степанов ", 50);
records[1] = new TestResult("Сазонова ", 30);
records[2] = new TestResult("Жарова ", 75);
numbRec = 3;
for (int i=0; i< numbRec; i++)
result[i] = records[i].ToString();
textBox1.Lines = result; // вывести оценки в окно
textBox1.Enabled = false;
}
private void button1_Click(object sender, EventArgs e)
{
int bl;
if (textBox2.Text == "")
{
MessageBox.Show("Введите фамилию!");
textBox2.Focus();
button1.Enabled = false;
return;
}
if (!int.TryParse(textBox3.Text, out bl)| bl<0 ||bl>100) {
MessageBox.Show("Введите балл!\nДиапазон от 0 до 100!");
textBox3.Focus();
button1.Enabled = false;
return;
}
records[numbRec] = new TestResult(textBox2.Text, bl);
for (int i = 0; i <= numbRec; i++) // обновить оценки
result[i] = records[i].ToString();
textBox1.Lines = result; // вывести оценки в окно
numbRec++; // счетчик записей
button1.Enabled = false;
textBox2.Text = textBox3.Text = "";
textBox2.Focus();
label2.Text = "Тест: \"" + TestResult.title +
"\", Максимальный балл: " + TestResult.maxBall;
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
button1.Enabled = true;
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
button1.Enabled = true;
}
}
}
Массив объектов пользовательского класса. Его отображение в «списках».
Элементы Button, TextBox, MessageBox, Label, компонент ToolTip.
Как добавить класс в проект: Solution_Explorer -> (правая кнопка) Имя_Проекта -> Add ->Class -> (Name)Имя_класса.cs -> Add
Задача
Определить класс для представления результатов тестирования с полями объектов: фамилия тестируемого, балл (от 0 до 100). Статические поля: название дисциплины и максимальный балл по тесту среди всех, выполнивших этот тест. Свойство для нормирования балла, то есть для перехода от шкалы [0-100] к шкале [0-10]. Перегрузить метод ToString(). В диалоге: вводить сведения о прошедших тестирование и выводить в поле элемента TextBox список результатов теста.
Класс разместить в отдельном файле TestResult.cs
Решение Mod_1
Настройки свойств элементов:
textBox1.Multiline=True; textBox1.ScrollBars=Verical
Label1.Text=“Список результатов”; Label1.Font.Size=20; textBox1.BackColor = White; и т.д.
Объявление класса:
namespace Mod_1 {
public class TestResult // Результат студента
{
public static int maxBall = 0; // Максимальный балл по результатам
public static string title = "Информатика"; // название теста
string name; // фамилия тестируемого
int ball; // балл (от 0 до 100)
public int NormBall { // нормированное значение балла (от 0 до 10)
get {
double rom = maxBall == 0 ? 10 : 10.0 * ball / maxBall;
return (int)Math.Round(rom); } }
public TestResult(string name, int ball) // конструктор
{
this.name = name;
this.ball = ball;
if (ball > maxBall) maxBall = ball;
}
public override string ToString() {
string res = string.Format("{0,-60}\t{1,10}{2,10}",
name, ball, NormBall);
return res; }
}
}
Результат проектирования интерфейса:
namespace Mod_1 {
public partial class Form1 : Form
{
static TestResult[] records = new TestResult[30];
public static int numbRec = 0; // счетчик записей
string[] result = new string[30]; // представление оценок
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
records[0] = new TestResult("Степанов ", 50);
records[1] = new TestResult("Сазонова ", 30);
records[2] = new TestResult("Жарова ", 75);
numbRec = 3;
for (int i=0; i< numbRec; i++)
result[i] = records[i].ToString();
textBox1.Lines = result; // вывести оценки в окно
textBox1.Enabled = false;
}
private void button1_Click(object sender, EventArgs e)
{
int bl;
if (textBox2.Text == "")
{
MessageBox.Show("Введите фамилию!");
textBox2.Focus();
button1.Enabled = false;
return;
}
if (!int.TryParse(textBox3.Text, out bl)| bl<0 ||bl>100) {
MessageBox.Show("Введите балл!\nДиапазон от 0 до 100!");
textBox3.Focus();
button1.Enabled = false;
return;
}
records[numbRec] = new TestResult(textBox2.Text, bl);
for (int i = 0; i <= numbRec; i++) // обновить оценки
result[i] = records[i].ToString();
textBox1.Lines = result; // вывести оценки в окно
numbRec++; // счетчик записей
button1.Enabled = false;
textBox2.Text = textBox3.Text = "";
textBox2.Focus();
label2.Text = "Тест: \"" + TestResult.title +
"\", Максимальный балл: " + TestResult.maxBall;
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
button1.Enabled = true;
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
button1.Enabled = true;
}
}
}