ПЕРВОЕ ВЫСШЕЕ ТЕХНИЧЕСКОЕ УЧЕБНОЕ ЗАВЕДЕНИЕ РОССИИ



Мы поможем в написании ваших работ!


Мы поможем в написании ваших работ!



Мы поможем в написании ваших работ!


ЗНАЕТЕ ЛИ ВЫ?

ПЕРВОЕ ВЫСШЕЕ ТЕХНИЧЕСКОЕ УЧЕБНОЕ ЗАВЕДЕНИЕ РОССИИ



ПЕРВОЕ ВЫСШЕЕ ТЕХНИЧЕСКОЕ УЧЕБНОЕ ЗАВЕДЕНИЕ РОССИИ

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«НАЦИОНАЛЬНЫЙ МИНЕРАЛЬНО-СЫРЬЕВОЙ УНИВЕРСИТЕТ «ГОРНЫЙ»

Кафедра информационных систем и вычислительной техники

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

К выполнению курсового проекта

по дисциплине

«Программирование»

(наименование по рабочему учебному плану)

 

Специальности:

Вычислительные машины, комплексы, системы и сети»

Автоматизированные системы обработки информации и управления»

Программное обеспечение вычислительной техники

И автоматизированных систем»

Составитель: старший преподаватель Е.О.Шумова

 

 

Санкт-Петербург


Составитель: ст.преподаватель Е.О.Шумова

 

Научный редактор: профессор И.В.Иванова

 

 


 

Задание на курсовой проект

 

Тема «Обработка наборов данных на языке С#»

 

Цель: овладение стандартными средствами.NET, связанными с обработкой наборов данных, включая их привязку к компонентам формы (databinding).

Студент должен самостоятельно выбрать предметную область (тему) проекта.

Независимо от темы курсовой проект должен содержать:

- создание класса с описанием структуры данных (с различными типами полей);

- связывание с помощью компонента BindingSource созданной структуры с таблицей DataGridView;

-проверку правильности вводимых данных на уровне отдельной ячейки и строки в целом;

- использование средствXML-сериализации наборов данных для обеспечения чтения и записи данных в файл;

- использование средств навигации BindingNavigator, предоставляющий дополнительные средства навигации и редактирования данных;

- выполнение сортировки данных;

- выполнение поиска данных по указанному полю.

 

Содержание пояснительной записки

 

- титульный лист;

- техническое задание на разработку информационного и программного обеспечения;

- структура информационного и программного обеспечения;

- описание алгоритмов и подпрограмм (функций и процедур), используемых для создания программного обеспечения;

- тексты программных модулей;

- результаты тестирования программного обеспечения (ПО) по всем функциям, заложенным в техническом задании (печать экранов);

- список используемой литературы;

- оглавление.

 

 

Проверка правильности данных на уровне строки таблицы

 

Контроль данных на уровне строки позволяет отказаться от блокирования выхода из ошибочной ячейки строки. Это дает возможность пользователю заполнить другие поля текущего элемента данных в случае, если некоторые из этих полей содержат неверные данные (необходимо лишь впоследствии вернуться к этим полям и откорректировать их значения; в противном случае покинуть текущую строку таблицы будет невозможно). При реализации подобного контроля за правильностью данных удобно выводить значок ошибки непосредственно в той ячейке, в которой ошибка обнаружена; для этого достаточно заносить сообщение об ошибке в свойство ErrorText не строки, а текущей ячейки. Значок ошибки исчезает сразу после начала редактирования ошибочной ячейки, в то время как значок в заголовке строки исчезнет только после ввода правильного значения и выхода из данной ячейки.

Определите обработчик события RowValidating для таблицы dataGridView:

 

private void dataGridView1_RowValidating(object sender,

DataGridViewCellCancelEventArgs e)

{

if (dataGridView1.Rows[e.RowIndex].IsNewRow)

return;

string err = "";

if (dataGridView1[1, e.RowIndex].Value == null)

err = "Поле \"Фамилия\" должно быть непустым";

e.Cancel = err != "";

dataGridView1.Rows[e.RowIndex].ErrorText = err;

 

}

 

Использование XML-сериализации

Дополнительные средства навигации и редактирования

Сортировка данных

Используя конструктор меню, создайте в компоненте menuStrip1 новый пункт меню первого уровня с текстом &Data и с помощью окна Properties измените имя этого пункта (т.е. свойство Name) наdate1. В выпадающем меню, связанном с пунктом Data, создайте пункт с текстом &Sortby…и измените имя этого пункта на sortby1. Затем перейдите в заготовку меню третьего уровня, связанную с пунктом Sortby…, добавьте в нее три пункта меню с текстом &Id, &Surname, &Course+Group и измените имена этих пунктов на id2, surname2, course2соответственно.

 

 

В конструктор класса Form1 добавьте новые операторы:

id2.Tag = 0;

surname2.Tag = 1;

course2.Tag = 2;

 

В описание класса Form1 добавьте три вспомогательных метода: CompareById, CompareBySurname, CompareByCourse:

 

private int CompareById(student a, student b)

{

return a.Id - b.Id;

}

 

private int CompareBySurname(student a, student b)

{

return a.Surname.CompareTo(b.Surname);

}

 

private int CompareByCourse(student a, student b)

{

int res = a.Course - b.Course;

if (res == 0)

res = a.Group - b.Group;

if (res == 0)

res = a.Surname.CompareTo(b.Surname);

return res;

}

 

Определите обработчик события Click для пункта меню id2:

 

private void id2_Click(object sender, EventArgs e)

{

if (dataGridView1.RowCount == 1)

return;

dataGridView1.CurrentCell = dataGridView1[0, 0];

Comparison<student> comp = CompareById;

switch ((int)(sender asToolStripMenuItem).Tag)

{

case 1:

comp = CompareBySurname;

break;

case 2:

comp = CompareByCourse;

break;

 

}

(bindingSource1.DataSource asList<student>).Sort(comp);

bindingSource1.ResetBindings(false);

}

 

Свяжите созданный обработчик с событием Click пунктов меню surname2, course2.

 

 

 

 

Поиск по шаблону

 

Поиск организуется с помощью одного из перегруженных вариантов метода FindIndex обобщенного класса List<T>, а именно – варианта с двумя параметрами: номера элемента, с которого начинается поиск, и тестовой функции. Тестовая функция должна иметь один параметр типа T и возвращать логическое значение true, если ее параметр удовлетворяет критерию поиска, и false в противном случае. Параметр метода FindIndex, соответствующий тестовой функции, описывается в виде делегата-обобщения Predicate<T>.

Для организации поиска подключите к проекту библиотеку Microsoft.VisualBasic. Для этого щелкните правой кнопкой мыши на строке References в окне SolutionExplorer, выберите в появившемся контекстом меню команду AddReference. Выделите пункт Microsoft.VisualBasic, после чего нажмите кнопку OK.

 

 

В начало файла Form1.cs добавьте оператор

 

using Microsoft.VisualBasic;

 

В описание класса Form1 добавьте новое поле:

 

private string surnameToFind = "";

 

Дополните выпадающее меню, связанное с пунктом Data, добавив в него пункт с текстом &Find…, и измените имя добавленного пункта меню на find1.

Измените первый оператор метода dataGridView1_RowEnter (приведен полный вариант дополненного метода с выделенными дополнениями)

 

private void dataGridView1_RowEnter(object sender,

DataGridViewCellEventArgs e)

{

Find.Enabled = bindingNavigatorDeleteItem.Enabled =

!dataGridView1.Rows[e.RowIndex].IsNewRow;

}

 

Аналогичным образом измените первый оператор метода dataGridView1_CurrentCellDirtyStateChanged (добавьте Find.Enabled)

 

 

Определите обработчик события Click для пункта меню find1

 

private void find1_Click(object sender, EventArgs e)

{

surnameToFind =

Interaction.InputBox("Введите начальную часть фамилии для поиска:",

"Поиск по фамилии", surnameToFind, -1, -1).Trim();

if (surnameToFind == "")

return;

int ind = (bindingSource1.DataSource as

List<student>).FindIndex(dataGridView1.CurrentRow.Index,

delegate(student a)

{

return a.Surname.StartsWith(surnameToFind,

StringComparison.OrdinalIgnoreCase);

});

if (ind != -1)

dataGridView1.CurrentCell = dataGridView1[1, ind];

else

MessageBox.Show("Фамилия не найдена", "Поиск по фамилии");

}

 

В результате добавленная в меню команда Find позволяет организовать поиск студента по начальной части его фамилии. Для ввода требуемой начальной фамилии используется стандартное диалоговое окно. При отображении этого окна в нем выводится предыдущий текст для поиска. В случае, если введенный текст является пустым или содержит только пробелы, а также если диалоговое окно закрывается нажатием кнопки Cancel или клавиши <Esc>, действие команды Find отменяется, а текст для поиска полагается равным пустой строке.

 

Поиск начинается с текущего элемента набора данных. Если требуемая фамилия найдена, то ячейка таблицы с найденной фамилией делается текущей; если фамилия не найдена, то об этом выводится сообщение. Поиск выполняется без учета регистра символов; кроме того, в тексте для поиска удаляются начальные и конечные пробелы.

Если текущей является последняя строка таблицы (NewRow), то команда Find недоступна.

 

 

 

 

Приложение 1. Оформление титульного листа

 

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«НАЦИОНАЛЬНЫЙ МИНЕРАЛЬНО-СЫРЬЕВОЙ УНИВЕРСИТЕТ «ГОРНЫЙ»

КУРСОВОЙ ПРОЕКТ

по дисциплине

«Программирование»

Выполнил студент_________________________

Курс__________________

Группа______________

Шифр_________________

 

Санкт-Петербург

 

 

Приложение2. Оформление Технического задания

 

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«НАЦИОНАЛЬНЫЙ МИНЕРАЛЬНО-СЫРЬЕВОЙ УНИВЕРСИТЕТ «ГОРНЫЙ»

ЗАДАНИЕ

на курсовой проект по дисциплине

«Программирование»

Студенту группы ________ ____________________________

ф.и.о.

 

Тема: “Обработка наборов данных на C#”

 

Исходные данные:(указывается Ваша конкретная предметная область)

 

Проект должен содержать:

 

- создание класса с описанием структуры данных (с различными типами полей);

- связывание с помощью компонента BindingSource созданной структуры с таблицей DataGridView;

- проверку правильности вводимых данных на уровне отдельной ячейки и строки в целом;

- использование средств XML-сериализации наборов данных для обеспечения чтения и записи данных в файл;

- использование средств навигации BindingNavigator, предоставляющий дополнительные средства навигации и редактирования данных;

- выполнение сортировки данных;

- выполнение поиска данных по указанному полю.

 

Срок сдачи законченного проекта ____________________________

 

Руководитель проекта ______________________ст.преп. Е.О.Шумова

 

 

Дата выдачи задания 25.03.2013 г.

 

ПЕРВОЕ ВЫСШЕЕ ТЕХНИЧЕСКОЕ УЧЕБНОЕ ЗАВЕДЕНИЕ РОССИИ

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«НАЦИОНАЛЬНЫЙ МИНЕРАЛЬНО-СЫРЬЕВОЙ УНИВЕРСИТЕТ «ГОРНЫЙ»



Последнее изменение этой страницы: 2016-04-23; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.204.48.69 (0.013 с.)