Классы, формы и элементы управления в C#

Автор работы: Пользователь скрыл имя, 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

Файлы: 1 файл

Курсяк СИШАРП.docx

— 483.80 Кб (Скачать файл)

Элементом управления DataGridView можно воспользоваться для отображения данных вместе с источником базовых данных или без него. Не указывая источник данных, можно создать столбцы и строки, содержащие данные, и добавить их непосредственно в объект DataGridView с помощью свойств Rows иColumns. Можно также использовать коллекцию Rows для доступа к объектам DataGridViewRow и свойство DataGridViewRow.Cells для непосредственного считывания или записи значения ячейки. Индексатор Item также обеспечивает прямой доступ к ячейкам.

В качестве альтернативы заполнению элемента управления вручную можно задать свойства DataSource и DataMember, чтобы привязать объектDataGridView к источнику данных и автоматически заполнить его данными. 

При работе с очень большими объемами данных можно задать для свойства VirtualMode значение true, чтобы отобразить подмножество доступных данных. Виртуальный режим требует реализацию кэша данных, из которого будет заполняться элемент управления DataGridView. 

Дополнительные сведения о возможностях, доступных в элементе управления DataGridView, см. в разделе элемент управления DataGridView (Windows Forms). В следующей таблице приводятся прямые ссылки на общие задачи.

Хотя элемент управления DataGridView заменяет и добавляет функциональные возможности к элементу управления DataGrid предыдущих версий, элемент управления DataGrid сохраняет для обоих элементов обратную совместимость и возможность использования в будущем по желанию пользователя.

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_CellContentClick(object sender, DataGridViewCellEventArgs e)

        {

 

        }

 

        private void MainForm_Load(object sender, EventArgs e)

        {

            // количество студентов - 0, т.к. мы не ввели информацию ни об одном

            Properties.Settings.Default.quantity = 0;

            textBox1.Text = (Properties.Settings.Default.quantity + 1).ToString();

            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.subj1;

            form.label6.Text = Properties.Settings.Default.subj2;

            form.label7.Text = Properties.Settings.Default.subj3;

            form.label8.Text = Properties.Settings.Default.subj4;

            form.label9.Text = Properties.Settings.Default.subj5;

        }

 

 

        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.quantity++;

                // Заполняем поля экземпляра объекта

                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.quantity - 1;

                students[raw_no] = stud;

 

                // Заполняем табличку

                dataGridView1.Rows[raw_no].Cells[1].Value = students[raw_no].name1;

                dataGridView1.Rows[raw_no].Cells[2].Value = students[raw_no].name2;

                dataGridView1.Rows[raw_no].Cells[3].Value = students[raw_no].group;

                dataGridView1.Rows[raw_no].Cells[4].Value = students[raw_no].GetAvgMark().ToString("F");

 

                //Ждем ввода информации о следующем студенте!

                textBox1.Text = (Properties.Settings.Default.quantity + 1).ToString();

 

               

                //Если данные обо всех студентах введены, блокируем возможность ввода новых

                if (Properties.Settings.Default.quantity == 10)

                {

                    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.quantity = 0;

            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.subj1;

            textBox2.Text = Properties.Settings.Default.subj2;

            textBox3.Text = Properties.Settings.Default.subj3;

            textBox4.Text = Properties.Settings.Default.subj4;

            textBox5.Text = Properties.Settings.Default.subj5;

           

        }

 

        private void textBox1_TextChanged(object sender, EventArgs e)

        {

 

        }

 

        private void btnOK_Click(object sender, EventArgs e)

        {

            Properties.Settings.Default.subj1 = textBox1.Text;

            Properties.Settings.Default.subj2 = textBox2.Text;

            Properties.Settings.Default.subj3 = textBox3.Text;

            Properties.Settings.Default.subj4 = textBox4.Text;

            Properties.Settings.Default.subj5 = textBox5.Text;

            Properties.Settings.Default.Save();

            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";

            // при загрузке

Информация о работе Классы, формы и элементы управления в C#