Классы, формы и элементы управления в C#
Министерство образования Российской Федерации
Государственное образовательное учреждение
высшего профессионального образования
Воронежский государственный архитектурно-строительный
университет
Кафедра прикладной информатики и информационных систем
КУРСОВОЙ ПРОЕКТ
на тему
«Классы, формы и элементы управления в C#»
Выполнил:
студент группы 2531 Арапов В.С.
Научный руководитель:
к.т.н., доцент кафедры Корелина Т.В.
Оценка: ____________
Подпись руководителя: ____________
Дата защиты: «….» …………2012 г.
Воронеж 2012
Оглавление
Введение 3
I. КЛАССЫ 4
1.1 Объявление классов 5
1.2 Создание экземпляра класса 6
II. ФОРМЫ 8
2.1 Класс Form 8
2.2 Создание новой формы 9
III. ЭЛЕМЕНТЫ УПРАВЛЕНИЯ, ИСПОЛЬЗУЕМЫЕ ДЛЯ ВЫВОДА ДАННЫХ 12
3.1 DataGridView 12
3.2 Label 13
3.3 TextBox 13
IV ПРАКТИЧЕСКАЯ ЧАСТЬ 15
4.1 Задание 15
4.2 Общая диаграмма классов 15
4.3 Описание класса STUDENT 15
4.4 Листинг формы MainForm 16
4.5 Листинг формы SetingsForm 20
4.6 Листинг формы Results 22
4.6 Работа с программой 23
Заключение 29
Список литературы: 30
Введение
В процессе выполнения курсового проекта написана программа, которая описывает структуру с именем STUDENT, содержащую следующие поля:
- фамилия и инициалы;
- номер группы;
- успеваемость (массив из пяти элементов).
Программа, выполняет следующие действия:
- ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT (записи должны быть упорядочены по возрастанию номера группы);
- вывод на экран фамилий и номеров групп для всех студентов, включенных, в массив, если средний балл студента больше 4,0 (если таких студентов нет, вывести соответствующее сообщение).
Программа написана на языке C# - объектно-ориентированном языке общей направленности. Это язык, разработанный Майкрософт как часть платформы .Net на основе языков C и С++. Это важная часть среды разработки .Net. Изучение C#, который можно было бы сравнить с Java, получившим другое имя, очень важно, если вы ориентируетесь на использование технологий Майкрософт.
В первых трех главах описываются основные элементы C#, использованные в процессе разработки программы.
В первой главе дана информация о классах – основе ООП. Во второй главе – о формах. В третей – об элементах управления, которые использованы в проект для вывода информации о студентах.
Четвертая глава – практическая, в ней приведен код программы, а также разъяснены принципы её работы и добавлены скриншоты.
I. КЛАССЫ
Класс — разновидность абстрактного типа данных в объектно-
На практике объектно-
Идея классов пришла из работ по базам знаний, имеющих отношение к исследованиям по искусственному интеллекту. Используемые человеком классификации в зоологии, ботанике, химии, деталях машин, несут в себе основную идею, что любую вещь всегда можно представить частным случаем некоторого более общего понятия. Конкретное яблоко — это в целом некоторое яблоко, вообще яблоко, а любое вообще яблоко — фрукт. Именно поэтому примеры классов в учебных пособиях по объектно-ориентированному программированию так часто упоминают яблоки и груши.
Объявление классов
Основная конструкция C# – объявление класса. Класс есть тип. Тип характеризуется неизменяемым набором свойств и методов. Для предопределенных типов определены множества операций, которые кодируются с использованием множества определенных в языке символов операций. Классы объявляются с помощью ключевого слова class, как показано в следующем примере.
public class MyClass
{
//Член, доступный любому классу программы
public int k;
//Член, доступный любому классу в том же модуле программы
internal int l;
//Член, доступный любому классу в том же модуле программы либо только текущему классу и всем его подклассам в другом модуле
protected internal int m;
//Член, доступный только текущему классу и всем его подклассам
protected int n;
//Член, доступный только из текущего класса (по умолчанию).
private int p;
}
Ключевому слову class предшествует уровень доступа. В данном случае используется public. В большинстве случаев подходящими для класса модификаторами являются только public, который означает, что класс может быть виден из любой части кода, и internal. Модификатор internal позволяет предоставить доступ к данному классу большому количеству классов, не гарантируя при этом доступ абсолютно всем классам. Класс, помеченный как internal, становится доступным всем классам, входящим в данную сборку (assembly). Таким образом такой класс становится доступным всей программе, но нигде больше. Модификатор internal часто используется при написании вспомогательных классов (helper classes), которые должны быть скрыты от конечного пользователя.
Создание экземпляра класса
Класс и объект — это разные вещи, хотя в некоторых случаях они взаимозаменяемы. Класс определяет тип объекта, но не сам объект. Объект — это конкретная сущность, основанная на классе и иногда называемая экземпляром класса.
Объекты можно создавать с помощью ключевого слова new, за которым следует имя класса, на котором будет основан объект:
Customer object1 = new Customer();
При создании экземпляра класса ссылка на этот объект передается программисту. В предыдущем примере object1 является ссылкой на объект, основанный наCustomer. Эта ссылка указывает на новый объект, но не содержит данные этого объекта. Фактически, можно создать ссылку на объект без создания самого объекта:
Customer object2;
Создание таких ссылок, которые не указывают на объект, не рекомендуется, так как попытка доступа к объекту по такой ссылке приведет к сбою во время выполнения.Однако такую ссылку можно сделать указывающей на объект, создав новый объект или назначив ее существующему объекту:
Customer object3 = new Customer();
Customer object4 = object3;
В данном коде
создаются две ссылки на объекты, которые
указывают на один объект. Поэтому любые
изменения объекта, выполненные посредством object3, будут видны
при последующем использовании object4. Посколь
II. ФОРМЫ
2.1 Класс Form
Класс Form представляет окно или диалоговое окно, которое составляет пользовательский интерфейс приложения.
Form является представлением
любого окна, отображаемого в приложении. Класс Form использ
С помощью
свойств, доступных в классе Form, имеется возможность
определить внешний вид, размер, цвет и
компоненты управления создаваемого окна
или диалогового окна. Свойство Text позволяет
задавать заголовок окна в строке заголовка. С помощью
свойств Size и DesktopLocation
Помимо свойств для управления формой используются методы класса. Например, метод ShowDialog используется для отображения формы как модального диалогового окна. Имеет возможность использовать метод SetDesktopLocation для размещения формы на рабочем столе.
События класса Form позволяют отвечать на действия, выполненные с формой. Имеется возможность использовать событие Activated для выполнения таких операций, как обновление данных, отображаемых в элементах управления формы при ее активации.
Форма используется в качестве начального класса приложения с помощью помещения в класс метода, называемого Main В методе Main необходимо добавить код для создания и отображения формы. Необходимо также добавить атрибут STAThread для метода Main для запуска формы. Если начальная форма закрыта, приложение также закрыто.
Если для свойства Enabled указать значение false перед тем как Form станет видимым (например, установив значение FALSE в конструкторе EnabledMicrosoft Visual Studio), кнопки свертывания, максимизирования, закрытия и системная кнопки останутся включенными. Если для Enabled указать значениеfalse после того, как Form становится видимым (например, при возникновении события Load), кнопки будут отключены.
2.2 Создание новой формы
В следующем
примере кода создается новый экземпляр
класса Form и вызывается
метод ShowDialog для отображения
формы как диалогового окна. В следующем
примере с помощью свойств FormBorderStyle, Accep
public void CreateMyForm()
{
// Create a new instance of the form.
Form form1 = new Form();
// Create two buttons to use as the accept and cancel buttons.
Button button1 = new Button ();
Button button2 = new Button ();
// Set the text of button1 to "OK".
button1.Text = "OK";
// Set the position of the button on the form.
button1.Location = new Point (10, 10);
// Set the text of button2 to "Cancel".
button2.Text = "Cancel";
// Set the position of the button based on the location of button1.
button2.Location
= new Point (button1.Left, button1.Height + button1.Top + 10);
// Set the caption bar text of the form.
form1.Text = "My Dialog Box";
// Display a help button on the form.
form1.HelpButton = true;
// Define the border style of the form to a dialog box.
form1.FormBorderStyle = FormBorderStyle.FixedDialog;
// Set the MaximizeBox to false to remove the maximize box.
form1.MaximizeBox = false;
// Set the MinimizeBox to false to remove the minimize box.
form1.MinimizeBox = false;
// Set the accept button of the form to button1.
form1.AcceptButton = button1;
// Set the cancel button of the form to button2.
form1.CancelButton = button2;
// Set the start position of the form to the center of the screen.
form1.StartPosition = FormStartPosition.
// Add button1 to the form.
form1.Controls.Add(button1);
// Add button2 to the form.
form1.Controls.Add(button2);
// Display the form as a modal dialog box.
form1.ShowDialog();
}
III. ЭЛЕМЕНТЫ УПРАВЛЕНИЯ, ИСПОЛЬЗУЕМЫЕ ДЛЯ ВЫВОДА ДАННЫХ
3.1 DataGridView
Класс DataGridView отображает данные в настраиваемой сетке.
Элемент управления DataGridView предос
Элементом
управления DataGridView можно воспользоваться
для отображения данных вместе с источником
базовых данных или без него. Не указывая
источник данных, можно создать столбцы
и строки, содержащие данные, и добавить
их непосредственно в объект DataGridView с помощью
свойств Rows иColumns. Можно также
использовать коллекцию Rows для доступа
к объектам DataGridViewRow и свойство DataGridViewRow.
В качестве
альтернативы заполнению элемента управления
вручную можно задать свойства DataSource и DataMemb
При работе
с очень большими объемами данных можно
задать для свойства VirtualMode значение
Дополнительные сведения о возможностях, доступных в элементе управления DataGridView, см. в разделе элемент управления DataGridView (Windows Forms). В следующей таблице приводятся прямые ссылки на общие задачи.
Хотя элемент
управления DataGridView заменя
3.2 Label
Метка чаще всего используется для информирования пользователя. На неё заносится текст прямо из программы, и заменить его нет возможности. Доступ к метке в исполняемой программе запрещён. Однако содержимое метки может быть изменено программно.
Разместим под кнопкой метку, отредактируем её по своему вкусу и запишем на неё текст: "Нажмите кнопку". Кроме того в обработчик кнопки занесём код:
int a = 6 * 8;
label1.Text = a.ToString ();
После запуска программы под кнопкой увидим подпись: "Нажмите кнопку", а после нажатия на кнопку на этом месте появится результат умножения: "48".
3.3 TextBox
Используется для ввода и редактирования неформатированного текста пользователем. Необходимо указать некоторые важные свойства для этого элемента управления. Свойство "Multiline = true" позволяет создавать многострочный текст. Если текст очень большой имеет смысл активировать свойство "ScrollBars". Оно имеет три состояния: вертикальная прокрутка, горизонтальная и обе. Свойство "ReadOnly = true" запрещает пользователю вмешиваться в содержимое. Это бывает полезно, если автор статьи (допустим, размещённой в интернете) не желает, чтобы посторонние вносили поправки в оригинал. MaxLenght ограничивает размер статьи (по количеству знаков). Свойство Dock определяет положение TextBox на форме. По умолчанию оно равно "None" и тогда TextBox располагается там, куда его поместят.
Текстбокс часто используют для ввода пароля с использованием свойства "PasswordChar". В свойство "PasswordChar" записывается какой-нибудь символ, например: "*".
IV ПРАКТИЧЕСКАЯ ЧАСТЬ
4.1 Задание
Тема 1. Описать структуру с именем STUDENT , содержащую следующие поля:
- фамилия и инициалы;
- номер группы;
- успеваемость (массив из пяти элементов). Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT (записи должны быть упорядочены по возрастанию номера группы);
- вывод на экран фамилий и номеров групп для всех студентов, включенных, в массив, если средний балл студента больше 4,0 (если таких студентов нет, вывести соответствующее сообщение).
4.2 Общая диаграмма классов
4.3 Описание класса STUDENT
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Student
{
public class Student : MainForm
{
public String name1; //имя
public String name2; //инициалы
public String group; //группа
public byte[] marks = new byte[5]; //оценки
public Student(String name1, String name2, String group, byte[] marks)
{
this.name1 = name1;
this.name2 = name2;
this.group = group;
this.marks[0] = marks[0];
this.marks[1] = marks[1];
this.marks[2] = marks[2];
this.marks[3] = marks[3];
this.marks[4] = marks[4];
}
// возвращает среднюю оценку
public double GetAvgMark()
{
double qwe = (this.marks[0] + this.marks[1] + this.marks[2] + this.marks[3] + this.marks[4])/5.0;
return qwe;
}
}
}
4.4 Листинг формы MainForm
MainForm – главная рабочая форма программы
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 Student
{
public partial class MainForm : Form
{
public Student[] students = new Student[10];
public MainForm()
{
InitializeComponent();
}
// кнопка "настройки"
private void btnSettings_Click(object sender, EventArgs e)
{
SettingsForm f = new SettingsForm();
f.Owner = this; //Передаём вновь созданной форме владельца. Для того, чтобы затем обновить значения Label
f.ShowDialog();
}
private void dataGridView1_
{
}
private void MainForm_Load(object sender, EventArgs e)
{
// количество студентов - 0, т.к. мы не ввели информацию ни об одном
Properties.Settings.Default.
textBox1.Text = (Properties.Settings.Default.
for (int i = 0; i < 10; ++i)
{
// строим табличку из 10 строк
dataGridView1.Rows.Add();
dataGridView1[0, i].Value = Convert.ToString(i + 1);
// обновляем надписи текстом из настроек
RefreshLabels(this);
}
}
public void RefreshLabels(MainForm form)
{
form.label5.Text = Properties.Settings.Default.
form.label6.Text = Properties.Settings.Default.
form.label7.Text = Properties.Settings.Default.
form.label8.Text = Properties.Settings.Default.
form.label9.Text = Properties.Settings.Default.
}
internal static void RefreshLabels()
{
throw new NotImplementedException();
}
// щелчок по кнопке "ОК", добавляет студента
private void button2_Click(object sender, EventArgs e)
{
// проверим, все ли поля заполнены
if ((textBox2.Text == "") ||
(textBox3.Text == "") ||
(textBox4.Text == "") ||
(textBox5.Text == "") ||
(textBox6.Text == "") ||
(textBox7.Text == "") ||
(textBox9.Text == "") ||
(textBox9.Text == ""))
{
MessageBox.Show("Заполните все поля!");
}
else // все данные введены
{
// +1 к количеству объектов
Properties.Settings.Default.
// Заполняем поля экземпляра объекта
byte[] marks_ = new byte[5];
marks_[0] = Convert.ToByte(textBox5.Text);
marks_[1] = Convert.ToByte(textBox6.Text);
marks_[2] = Convert.ToByte(textBox7.Text);
marks_[3] = Convert.ToByte(textBox8.Text);
marks_[4] = Convert.ToByte(textBox9.Text);
Student stud = new Student(textBox2.Text, textBox3.Text, textBox4.Text, marks_);
// raw_no - номер строки, которую мы заполняем
int raw_no = Properties.Settings.Default.
students[raw_no] = stud;
// Заполняем табличку
dataGridView1.Rows[raw_no].
dataGridView1.Rows[raw_no].
dataGridView1.Rows[raw_no].
dataGridView1.Rows[raw_no].
//Ждем ввода информации о следующем студенте!
textBox1.Text = (Properties.Settings.Default.
//Если данные обо всех студентах введены, блокируем возможность ввода новых
if (Properties.Settings.Default.
{
MessageBox.Show("Данные о 10 студентах введены!");
textBox2.Enabled = false;
textBox3.Enabled = false;
textBox4.Enabled = false;
textBox5.Enabled = false;
textBox6.Enabled = false;
textBox7.Enabled = false;
textBox8.Enabled = false;
textBox9.Enabled = false;
button2.Enabled = false;
label10.Visible = true;
}
}
}
private void textBox5_TextChanged(object sender, EventArgs e)
{
}
// Разрешаем ввод только чисел
private void textBox5_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(Char.IsDigit(e.KeyChar)))
{
if (e.KeyChar != (char)Keys.Back)
{
e.Handled = true;
}
}
}
private void textBox6_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(Char.IsDigit(e.KeyChar)))
{
if (e.KeyChar != (char)Keys.Back)
{
e.Handled = true;
}
}
}
private void textBox7_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(Char.IsDigit(e.KeyChar)))
{
if (e.KeyChar != (char)Keys.Back)
{
e.Handled = true;
}
}
}
private void textBox8_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(Char.IsDigit(e.KeyChar)))
{
if (e.KeyChar != (char)Keys.Back)
{
e.Handled = true;
}
}
}
private void textBox9_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(Char.IsDigit(e.KeyChar)))
{
if (e.KeyChar != (char)Keys.Back)
{
e.Handled = true;
}
}
}
// кнопка "Очистить"
private void button3_Click(object sender, EventArgs e)
{
Properties.Settings.Default.
textBox1.Text = "1";
// Перезагружаем табличку
dataGridView1.Rows.Clear();
for (int i = 0; i < 10; ++i)
{
// строим табличку из 10 строк
dataGridView1.Rows.Add();
dataGridView1[0, i].Value = Convert.ToString(i + 1);
// обновляем надписи текстом из настроек
RefreshLabels(this);
}
// Разблокировуем кнопки и поля ввода, если они заблокированы
textBox2.Enabled = true;
textBox3.Enabled = true;
textBox4.Enabled = true;
textBox5.Enabled = true;
textBox6.Enabled = true;
textBox7.Enabled = true;
textBox8.Enabled = true;
textBox9.Enabled = true;
button2.Enabled = true;
label10.Visible = false;
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
// кнопка "Результат"
private void button1_Click(object sender, EventArgs e)
{
Results f1 = new Results();
f1.Owner = this; //Передаём вновь созданной форме владельца.
f1.ShowDialog();
}
}
}
4.5 Листинг формы SetingsForm
SettingsForm – форма настроек
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 Student
{
public partial class SettingsForm : Form
{
public SettingsForm()
{
InitializeComponent();
}
private void Settings_Load(object sender, EventArgs e)
{
textBox1.Text = Properties.Settings.Default.
textBox2.Text = Properties.Settings.Default.
textBox3.Text = Properties.Settings.Default.
textBox4.Text = Properties.Settings.Default.
textBox5.Text = Properties.Settings.Default.
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void btnOK_Click(object sender, EventArgs e)
{
Properties.Settings.Default.
Properties.Settings.Default.
Properties.Settings.Default.
Properties.Settings.Default.
Properties.Settings.Default.
Properties.Settings.Default.
Close();
MainForm frm = (MainForm)this.Owner;
frm.RefreshLabels(frm);
}
private void btnCancel_Click(object sender, EventArgs e)
{
Close();
}
}
}
4.6 Листинг формы Results
Форма Results – форма вывода результатов.
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 Student
{
public partial class Results : Form
{
public Results()
{
InitializeComponent();
}
private void Results_Load(object sender, EventArgs e)
{
label1.Text = "Студенты с оценками 4+:\n";
// при загрузке

- Классы экономико-математических моделей и методы их прикладного значения в экономике и управлении
- Кластеризация, как метод анализа данных в социально - экономических и политических исследованиях
- Кластерлердің қажеттілігі, даму тенденциясы
- Кластерлік жүйені дамытудың бағыттары
- Кластерлік модельдер
- Кластерлік модельдер
- Кластерная политика
- Классовое и общечеловеческое в сущности государств
- Классовое и общечеловеческое в сущности государства
- Класс, предоставляющий возможности отбработки алгоритмов в форме таблиц решений
- Класс, предоставляющий возможности отбработки алгоритмов в форме таблиц решений
- Классы и слои современной России
- Классы обслуживание туристов на воздушном судне
- Классы случаев существования интеграла Стилтьеса