Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Виконання роботи

Мета роботи

- створення таблиці з інформацією про абітурієнтів;

- реалізація пошуку в таблиці;

- реалізація сортування таблиці;

 

Матеріали для засвоєння

1) Робота з таблицями(datagridview);

2) Заповнення, редагування полів таблиці;

3) Зміна властивостей таблиці.

 

Виконання роботи

Створення проекту

Створюємо новий проект Lab3 та замінюємо файли з попереднього проекту, як було показано раніше.

 

Створення таблиці

Рейтинг абітурієнтів зручніше всього представити у таблиці. Додамо до проекту форму 8, в якій буде міститися таблиця з рейтингом:

 

 

Верхня частина створена для сортування, основна – це таблиця datagridview.

 

У Form8_Loadопишемо заповнення таблиці. Спочатку створимо таблицю:

 

DataTable dt = newDataTable("table1"); //create table

 

Додамо до таблиці колонки з назвами полів:

 

//--------------Create columns----------------------

DataColumn dc1 = newDataColumn("ID", typeof(string));

DataColumn dc2 = newDataColumn("П.І.Б.", typeof(string));

DataColumn dc3 = newDataColumn("Факультет", typeof(string));

DataColumn dc4 = newDataColumn("Спеціальність", typeof(string));

DataColumn dc5 = newDataColumn("Деннаформаначання", typeof(string));

DataColumn dc6 = newDataColumn("Заочнаформаначання", typeof(string));

DataColumn dc7 = newDataColumn("Бюджет", typeof(string));

DataColumn dc8 = newDataColumn("Контракт", typeof(string));

DataColumn dc9 = newDataColumn("Українськамоваталітература", typeof(string));

DataColumn dc10 = newDataColumn("Математика", typeof(string));

DataColumn dc11 = newDataColumn("Фізика", typeof(string));

DataColumn dc12 = newDataColumn("Англійськамова", typeof(string));

DataColumn dc13 = newDataColumn("ІсторіяУкраїни", typeof(string));

DataColumn dc14 = newDataColumn("Біологія", typeof(string));

DataColumn dc15 = newDataColumn("Географія", typeof(string));

DataColumn dc16 = newDataColumn("Хімія", typeof(string));

DataColumn dc17 = newDataColumn("Російськамова", typeof(string));

DataColumn dc18 = newDataColumn("Кількістьпрофільнихбалів", typeof(string));

DataColumn dc19 = newDataColumn("Прохіднийбал", typeof(string));

DataColumn dc20 = newDataColumn("Льготи", typeof(string));

DataColumn dc21 = newDataColumn("Документ", typeof(string));

 

Зв’яжемо колонки та талбицю за допомогою функції Columns.Add(). Наприклад,dt.Columns.Add(dc1) – додали 1-шу колонку.

Відкриємо головний файл “Abiturient.txt” та запишемо з нього дані про кожного абітурієнта до колонок за допомогою:

 

DataRowdr; - створення рядку

dr = dt.NewRow(); -ініціалізація порожнього рядку

dr[номер колонки] = значення;- запис до відповідної колонки

 

Після запису інформаціїнеобхідно зв’язати дану таблицю з створеною на формі:

 

dataGridView1.DataSource = dt;

 

Далі необхідно відмінити стандартне сортування столбців:

 

for (int i = 0; i < dataGridView1.ColumnCount; i++)

dataGridView1.Columns[i].SortMode =DataGridViewColumnSortMode.NotSortable;

 

Стандартне сортування буде блокувати наше сортування, тому краще переозначити його.

 

Сортування стовпців

Для переозначення сортування необхідно додати обробники до подій ColumnHeaderMouseClick та ColumnHeaderMouseDoubleClick, що описують дії при натисненні миші на назву колонки 1 або 2-х разів.

Сортування будемо робити методом обміну:

 

//==============Sort by columns upwards======================

privatevoid dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)

{

string[] temp1=newstring[21]; //temporary

string[] temp2 = newstring[21];//temporary

DataTable dat = (DataTable)dataGridView1.DataSource; //get table

for (int j=0;j<dat.Rows.Count;j++) //do number of wors times

for (int i=0;i<dat.Rows.Count-1;i++) //for each row

if (String.Compare(dat.Rows[i + 1][e.ColumnIndex].ToString(),

dat.Rows[i][e.ColumnIndex].ToString())<0) //next cell < current

{

for (int k = 0; k < dat.Columns.Count; k++) //copy rows to temporary

{

temp1[k] = dat.Rows[i][k].ToString();

temp2[k] = dat.Rows[i+1][k].ToString();

}

for (int k = 0; k < dat.Columns.Count; k++) //change rows

{

dat.Rows[i][k] = temp2[k];

dat.Rows[i+1][k] = temp1[k];

}

}

}

 

Якщо наступна клітина менша поточної, то замінюємо рядки місцями.

Аналогічно і для ColumnHeaderMouseDoubleClick, але навпаки: якщо наступна клітина більше поточної, то замінюємо рядки місцями.

 

Сортування користувача

 

Сортування користувача виконується аналогічно, але з перевіркою співпадання відповідного поля з поточним рядком. Наприклад, сортування по факультетам:

 

string str1=comboBox1.Text; //faculty

string str2=textBox2.Text; //speciality

string str3 = textBox1.Text; //name

string[] temp1=newstring[21]; //temporary for i-rows

string[] temp2 = newstring[21];//temporary for p-rows

int p = 0; //counter increaser

DataTable dat = (DataTable)dataGridView1.DataSource; //get table

if ((str1!= "")&&(str2=="")&&(str3=="")) //faculty entered

{

for (int i = 0; i < dat.Rows.Count; i++) //for all rows

{

if (dat.Rows[i][2].ToString() == str1) //row right

{

if (i == p) //row has biggest position

{

p++;

continue; //do nothing

}

for (int k = 0; k < dat.Columns.Count; k++) //copy rows to temporary

{

temp1[k] = dat.Rows[i][k].ToString();

temp2[k] = dat.Rows[p][k].ToString();

}

for (int k = 0; k < dat.Columns.Count; k++) //change rows

{

dat.Rows[i][k] = temp2[k];

dat.Rows[p][k] = temp1[k];

}

p++;

}

}

}

 

Тут ми дивимося на позицію рядка, який необхідно сортувати. Якщо ця позиція є найменшою, то залишаємо рядок на місці, інакше замінюємо з тим, чия позиція нижче. Таке сортування виконується набагато швидше, ніж звичайне, при великій кількості даних.

Аналогічне сортування необхідно розглянути і для спеціальності, і для ПІБ, і для їх різних комбінацій(якщо є факультет, спеціальність, але нема ПІБ тощо).

 


<== предыдущая | следующая ==>
Захист права інтелектуальної власності | 

Date: 2015-12-11; view: 309; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию