Автор работы: Пользователь скрыл имя, 13 Октября 2013 в 22:49, курсовая работа
В процессе выполнения курсового проекта написана программа, которая описывает структуру с именем STUDENT, содержащую следующие поля:
• фамилия и инициалы;
• номер группы;
• успеваемость (массив из пяти элементов).
Программа, выполняет следующие действия:
• ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT (записи должны быть упорядочены по возрастанию номера группы);
• вывод на экран фамилий и номеров групп для всех студентов, включенных, в массив, если средний балл студента больше 4,0 (если таких студентов нет, вывести соответствующее сообщение).
Введение 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
Элементом
управления 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".
Используется для ввода и редактирования неформатированного текста пользователем. Необходимо указать некоторые важные свойства для этого элемента управления. Свойство "Multiline = true" позволяет создавать многострочный текст. Если текст очень большой имеет смысл активировать свойство "ScrollBars". Оно имеет три состояния: вертикальная прокрутка, горизонтальная и обе. Свойство "ReadOnly = true" запрещает пользователю вмешиваться в содержимое. Это бывает полезно, если автор статьи (допустим, размещённой в интернете) не желает, чтобы посторонние вносили поправки в оригинал. MaxLenght ограничивает размер статьи (по количеству знаков). Свойство Dock определяет положение TextBox на форме. По умолчанию оно равно "None" и тогда TextBox располагается там, куда его поместят.
Текстбокс часто используют для ввода пароля с использованием свойства "PasswordChar". В свойство "PasswordChar" записывается какой-нибудь символ, например: "*".
Тема 1. Описать структуру с именем 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;
}
}
}
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();
}
}
}
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();
}
}
}
Форма 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";
// при загрузке
Информация о работе Классы, формы и элементы управления в C#