Обработка наборов данных на C#

Структура информационного и программного обеспечения. Создание проекта типа Windows Application. Средства навигации и редактирования для таблицы, проверка правильности данных на уровне ячейки, строки. Автоматизация действий при добавлении элемента данных.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 02.06.2017
Размер файла 1002,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство образования и науки Российской федерации

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

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

Курсовая работа

по дисциплине «Объектно-ориентированное программирование»

Пояснительная записка

Техническое задание

на курсовую работу по дисциплине «Объектно-ориентированное программирование» студенту группы Кудиновой Д.И.

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

Исходные данные: каталог автомобилей в автосалоне.

Работа должна содержать:

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

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

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

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

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

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

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

программный редактирование ячейка windows

Содержание

  • Введение
  • Структура информационного и программного обеспечения
  • Работа с DataGridView
  • Проверка правильности данных на уровне ячейки таблицы
  • Проверка правильности данных на уровне строки таблицы
  • Использование XML-сериализации для сохранения и загрузки наборов данных
  • Дополнительные средства навигации и редактирования для таблицы с набором данных
  • Автоматизация действий при добавлении нового элемента данных
  • Сортировка данных
  • Поиск по шаблону
  • Дополнительно
  • Тестирование
  • Заключение
  • Библиографический список
  • Приложение 1

Введение

Одним из основных элементов, используемых в данном проекте, является элемент управления Data Grid View, который предоставляет мощный и гибкий способ отображения данных в табличном формате. Элемент управления Data Grid View можно использовать для отображения представлений небольшого объема данных только для чтения, либо можно масштабировать его для отображения редактируемого представления очень больших наборов данных.

Для того, чтобы реализовать пользовательское поведение в приложениях, элемент управления Data Grid View легко настраивается заданием значений нескольких свойств. В качестве источника данных могут использоваться хранилища данных различных типов, также элемент управления Data Grid View может работать без привязанного к нему источника данных.

Базой для выполнения курсовой работы является дисциплина «Объектно-ориентированное программирование». Навыки, полученные в ходе выполнения курсовой работы, будут использоваться в большинстве общепрофессиональных и специальных дисциплин.

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

Id (уникальный номер авто, тип int),

Make (марка авто, тип string),

Model (модель авто, тип string),

Country(страна-производитель авто, тип string),

Year(год выпуска, тип int),

Power (мощность двигателя, тип int),

Price (цена, типdouble),

Photo (фото, типBitmap).

Работа с DataGridView

Создание проекта типа Windows Application.

Добавление в форму Form2 таблицу dataGridView1, а также невизуального компонента типа BindingSource

Настройка свойств формы и компонента dataGridView1:

Form1: Text =CarShop, StartPosition = CenterScreen

dataGridView1: Dock = Top, AutoSizeColumnsMode = Fill,

DataSource = carBindingSource

Связывание таблицы с набором данных (выполнение команды меню Project| AddClass…, )

Текст файла Car.cs:

using System;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Threading.Tasks;

usingSystem.Drawing;

namespaceCarsShowroom

{

publicclassCar

{

privateintid; // Уникальный номер авто

privatestringmake; // Маркаавто

privatestringmodel; // Модельавто

privateBitmapphoto; // Фотоавто

privatestringcountry; // Страна-производительавто

privateintyear; // Годвыпускаавто

privateintpower; // Мощностьдвигателя

privatedoubleprice; // Ценаавто

publicCar()

{ }

// id

publicint Id

{

get

{

return id;

}

set

{

id = value;

}

}

// make

publicstring Make

{

get

{

return make;

}

set

{

make = value;

}

}

// model

publicstring Model

{

get

{

return model;

}

set

{

model = value;

}

}

// country

publicstring Country

{

get

{

return country;

}

set

{

country = value;

}

}

// power

publicint Power

{

get

{

return power;

}

set

{

power = value;

}

}

// year

publicint Year

{

get

{

return year;

}

set

{

year = value;

}

}

// price

publicdouble Price

{

get

{

return price;

}

set

{

price = value;

}

}

// photo

publicBitmap Photo

{

get

{

return photo;

}

set

{

photo = value;

}

}

}

}

Откомпилируем приложение для того, чтобы информацию о созданном классе можно было использовать при настройке свойства Data Source компонента car Binding Source.

В качестве значения свойства Data Source компонента car Binding Source следует указать имя только что определенного класса.

Правка столбцов:

Корректировка свойств столбцов:

Id: Name = Id1, HeaderText = №, ReadOnly = True;

Make: Name = Make1, HeaderText = Марка, ReadOnly = False;

Model: Name = Model1, HeaderText = Модель, ReadOnly = False;

Photo: Name = Photo1, HeaderText = Ссылка, Visible = False, ReadOnly = False;

Country: Name = Country1, HeaderText =Производитель, ReadOnly = False;

Year: Name = Year1, HeaderText = Годвыпуска, ReadOnly = False;

Power: Name = Power1, HeaderText = Мощностьдвигателя, ReadOnly = False;

Price: Name = Price1, HeaderText = Цена, ReadOnly = False;

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

Определение события Cell Validating:

privatevoid dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)

{

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

return;

string err = "", s = e.FormattedValue.ToString();

inti; double d;

switch (e.ColumnIndex)

{

// id

case 0:

// make

case 1:

if (s == "")

err = "Поле \"Марка\" не должно быть пустым";

break;

// model

case 2:

if (s == "")

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

break;

// country

case 3:

if (s == "")

err = "Поле \"Производитель\" не должно быть пустым";

break;

// power

case 4:

if(!int.TryParse(s, outi))

err = "Строку нельзя преобразовать в число";

elseif (i < 0)

err = "Отрицательные числа не допускаются";

break;

// year

case 5:

if(!int.TryParse(s, outi))

err = "Строку нельзя преобразовать в число";

elseif (i < 0)

err = "Отрицательные числа не допускаются";

break;

// price

case 6:

if(!double.TryParse(s, out d))

err = "Строку нельзя преобразовать в число";

elseif (d < 0)

err = "Отрицательные числа не допускаются";

break;

}

e.Cancel = err != "";

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

}

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

Определение события Row Validating:

privatevoid 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-сериализации для сохранения и загрузки наборов данных

Добавляем на форму Form2 невизуальные компоненты типа Open File Dialog и Save File Dialog, а также компонент меню Menu Strip (эти компоненты получат имена openFileDialog1, saveFileDialog1, menuStrip1).

Создадим в компоненте menuStrip1 пункт меню первого уровня Файл (Name - file1). В выпадающем меню связанном с пунктом Файл четыре пункта меню с текстом Создать, Открыть…, Сохранить как…, Выход.

Настройка свойств добавленных компонентов и пунктов меню:

Пункт меню Создать(группа Файл): Name = new1

Пункт меню Открыть (группа Файл): Name = open1

Пункт меню Сохранить как (группа Файл): Name = save1

Пункт меню Выход (группа Файл): Name = exit1

Добавление в начало файла Form2.csоператоров:

using System.IO;

using System.Xml.Serialization;

Добавление нового поля в описание класса Form2:

privateXmlSerializerxmls = newXmlSerializer(typeof(List<Car>));

Дополнение конструктора классаForm2:

publicForm2()

{

InitializeComponent();

contactsBindingSource.DataSource = newList<Car>();

}

Описание в классеForm2 нового метода SaveData:

privatevoidSaveData (string name)

{

if (name == "" || dataGridView1.RowCount == 1)

return;

if (dataGridView1.CurrentRow.IsNewRow)

dataGridView1.CurrentCell =

dataGridView1[0, dataGridView1.RowCount - 2];

StreamWritersw = newStreamWriter(name, false, Encoding.Default);

xmls.Serialize(sw, carBindingSource.DataSource);

sw.Close();

}

Определение обработчика события Drop Down Opening для пункта меню Файл, события Click для пунктов меню new1, open1, save1, а также события Form Closing для формы Form2, обработчика события Current Cell Dirty State ChangeдлякомпонентаdataGridView1:

privatevoid new1_Click(object sender, EventArgs e)

{

SaveData(saveFileDialog1.FileName);

carBindingSource.DataSource = newList<Car>();

dataGridView1.CurrentCell = dataGridView1[0, 0];

saveFileDialog1.FileName = "";

Text = "CarShop";

foreach (DataGridViewRow row in dataGridView1.Rows)

{

row.Height = 60;

}

}

privatevoid open1_Click(object sender, EventArgs e)

{

openFileDialog1.FileName = "";

openFileDialog1.FileName = "";

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

SaveData(saveFileDialog1.FileName);

string s = openFileDialog1.FileName;

StreamReadersr = newStreamReader(s, Encoding.Default);

carBindingSource.SuspendBinding();

carBindingSource.DataSource = xmls.Deserialize(sr);

carBindingSource.ResumeBinding();

sr.Close();

saveFileDialog1.FileName = s;

Text = "CarShop - " + Path.GetFileNameWithoutExtension(s);

int n = dataGridView1.RowCount;

for (inti = 0; i< n; i++)

{

dataGridView1.Rows[i].Cells[1].Value = newBitmap(dataGridView1.Rows[i].Cells[7].Value + "");

dataGridView1.Rows[i].Height = newBitmap(dataGridView1.Rows[i].Cells[7].Value + "").Height;

}

}

}

privatevoid saveAs1_Click(object sender, EventArgs e)

{

if (saveFileDialog1.ShowDialog() == DialogResult.OK)

{

string h = saveFileDialog1.FileName;

SaveData(h);

Text = "Car - " + Path.GetFileNameWithoutExtension(h);

}

}

privatevoid Form2_FormClosing(object sender, FormClosingEventArgs e)

{

SaveData(saveFileDialog1.FileName);

}

privatevoid file1_DropDownOpening(object sender, EventArgs e)

{

saveAs1.Enabled = dataGridView1.RowCount > 1;

}

privatevoid dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)

{

menuStrip1.Enabled = !dataGridView1.IsCurrentCellDirty;

int row = dataGridView1.CurrentRow.Index;

if(!dataGridView1.IsCurrentCellDirty&&

(int)dataGridView1["Id1", row].Value == 0)

{

intmaxId = 0;

for (inti = 0; i< row; i++)

{

int v = (int)dataGridView1["Id1", i].Value;

if (maxId< v)

maxId = v;

}

dataGridView1["Id1", row].Value = maxId + 1;

}

}

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

Добавление на форму Form2 компонента типа Binding Navigator (Dock = Bottom, BindingSource = carBindingSource):

определение обработчика события Row Enter для таблицы data Grid View1:

privatevoid dataGridView1_RowEnter (object sender, DataGridViewCellEventArgs e)

{

}

Автоматизация действий при добавлении нового элемента данных

Настройка свойства первого столбца таблицы data Grid View1:

dataGridView1.Columns. Id1.ReadOnly = True,

DefaultCellStyle.ForeColor = GrayText,

DefaultCellStyle.SelectionForeColor = GrayText

Дополнение метода dataGridView1_CurrentCellDirtyStateChanged

privatevoid dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)

{

menuStrip1.Enabled = !dataGridView1.IsCurrentCellDirty;

int row = dataGridView1.CurrentRow.Index;

if(!dataGridView1.IsCurrentCellDirty&&

(int)dataGridView1["Id1", row].Value == 0)

{

intmaxId = 0;

for (inti = 0; i< row; i++)

{

int v = (int)dataGridView1["Id1", i].Value;

if (maxId< v)

maxId = v;

}

dataGridView1["Id1", row].Value = maxId + 1;

}

};

Теперь при добавлении нового элемента данных в его свойство Id, отображаемое в первом столбце таблицы с заголовком №, автоматически заносится номер, который на 1 больше максимального из уже имеющихся номеров в загруженном наборе данных.

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

Создание в компоненте menuStrip1 нового пункта меню первого уровня с текстом Данные (Name - data1). Создание пунктов с текстом Сортировка по (Name -sortby1). Создание пунктов меню с текстом Порядковому номеру (Name -id2), Году (Name -year2), Цене (Name -price2):

Добавление новых операторов в конструктор класса Form2:

id2.Tag = 0;

year2.Tag = 1;

price2.Tag = 2;

Добавление трёх вспомогательных методов в описание классаForm2:

CompareById, CompareByYear, CompareByPrice:

privateintCompareById(Car a, Car b)

{

returna.Id - b.Id;

}

privateintCompareByYear(Car a, Car b)

{

returna.Year.CompareTo(b.Year);

}

privateintCompareByPrice(Car a, Car b)

{

returna.Price.CompareTo(b.Price);

}

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

privatevoid year2_Click(object sender, EventArgs e)

{

if (dataGridView1.RowCount == 1)

return;

dataGridView1.CurrentCell = dataGridView1[0, 0];

Comparison<Car> comp = CompareByYear;

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

{

case 0:

comp = CompareById;

break;

case 1:

comp = CompareByYear;

break;

case 2:

comp = CompareByPrice;

break;

}

(carBindingSource.DataSourceasList<Car>).Sort(comp);

carBindingSource.ResetBindings(false);

}

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

Подключение к проекту библиотеки Microsoft.Visual Basic.

Добавим оператор в начало файла Form2.cs:

usingMicrosoft.VisualBasic;

Добавим новое поле в описание класса Form2:

privatestringmakeToFind = "";

Дополнение выпадающего меню, связанного с пунктом Данные: добавим в него пункт с текстом Поиск (Name - find1).

Изменение первого оператора метода data Grid View 1_Row Enter:

privatevoid dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)

{

find1.Enabled = bindingNavigatorDeleteItem.Enabled= !dataGridView1.Rows[e.RowIndex].IsNewRow;

}

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

privatevoid find1_Click(object sender, EventArgs e)

{

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

"Поиск по марке авто", makeToFind, -1, -1).Trim();

if (makeToFind == "")

return;

intind = (carBindingSource.DataSourceas

List<Car>).FindIndex(dataGridView1.CurrentRow.Index, delegate (Car a)

{

returna.Make.StartsWith(makeToFind,

StringComparison.OrdinalIgnoreCase);

});

if (ind != -1)

dataGridView1.CurrentCell = dataGridView1[1, ind];

else

MessageBox.Show("Марка авто не найдена", "Поиск по марке авто");

}

Дополнительно

Создаем кнопку «Добавить фото»:

С её помощью можно изменять фотографии автомобилей, загружая изображение с внешних источников в любом графическом формате.

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

privatevoid button1_Click(object sender, EventArgs e)

{

OpenFileDialog d = newOpenFileDialog();

if (d.ShowDialog() == System.Windows.Forms.DialogResult.Cancel)

return;

Imageimg = Image.FromFile(d.FileName);

dataGridView1.CurrentCell.Value = img;

}

Тестирование

Запуск программы, открытие файла, сортировка по году:

Сортировка по цене

Создадим побочную форму Form1-стартовое меню:

Заключение

В ходе проделанной работы были закреплены знания основ программирования на языке C#, а также получены навыки работы с формой Data Grid View, сериализацией и десериализацией XML файла, bilding Sourse и binding Navigator, подключением встроенных ссылок, ресурсными папками, файловым менеджером, встроенными библиотеками и т.д. При выполнении курсовой работы были освоены все этапы создания программного комплекса от постановки задачи до практической реализации, сопровождающейся документацией и инструкциями по его использованию.

Библиографический список

1. Культин. Н. Основы программирования в VicrosoftVisual С# 2010. - СПб.: БХВ-Петербург, 2011. - 368 с.: ил. + CD-ROM - (Самоучитель).

2. Лабор В.В. Си Шарп: Создание приложений для Windows / В.В.Лабор - Мн.:Харвест, 2003.-384с.

3. Прайс Д. Visual C#.NET Полное руководство / Д. Прайс, М.Гандерлой - К.: ВЕК+.СПб.:Коронапринт, К: НТИ. М.:Энтроп, 2008.- 2008.-960с.

4. Фленов. М. Библия C#. - 2-е изд., перераб. и доп. - СПб.: БХВ-Петербург, 2011. - 560 с.: ил. + CD_ROM.

Приложение 1

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

Содержимое файла Car.cs

using System;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Threading.Tasks;

usingSystem.Drawing;

namespaceCarsShowroom

{

publicclassCar

{

privateintid; // Уникальныйномеравто

privatestringmake; // Маркаавто

privatestringmodel; // Модельавто

privateBitmapphoto; // Фотоавто

privatestringcountry; // Страна-производительавто

privateintyear; // Годвыпускаавто

privateintpower; // Мощностьдвигателя

privatedoubleprice; // Ценаавто

publicCar()

{ }

// id

publicint Id

{

get

{

return id;

}

set

{

id = value;

}

}

// make

publicstring Make

{

get

{

return make;

}

set

{

make = value;

}

}

// model

publicstring Model

{

get

{

return model;

}

set

{

model = value;

}

}

// country

publicstring Country

{

get

{

return country;

}

set

{

country = value;

}

}

// power

publicint Power

{

get

{

return power;

}

set

{

power = value;

}

}

// year

publicint Year

{

get

{

return year;

}

set

{

year = value;

}

}

// price

publicdouble Price

{

get

{

return price;

}

set

{

price = value;

}

}

// photo

publicBitmap Photo

{

get

{

return photo;

}

set

{

photo = value;

}

}

}

}

Файл Form2.cs

usingMicrosoft.VisualBasic;

using System;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Threading.Tasks;

usingSystem.Windows.Forms;

using System.IO;

usingSystem.Xml.Serialization;

namespaceCarsShowroom

{

publicpartialclassForm2 :Form

{

privateXmlSerializerxmls = newXmlSerializer(typeof(List<Car>));

privatestringmakeToFind = "";

public Form2()

{

InitializeComponent();

carBindingSource.DataSource = newList<Car>();

id2.Tag = 0;

year2.Tag = 1;

price2.Tag = 2;

}

privatevoid dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)

{

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

return;

string err = "", s = e.FormattedValue.ToString();

inti; double d;

switch (e.ColumnIndex)

{

// id

case 0:

// make

case 1:

if (s == "")

err = "Поле \"Марка\" не должно быть пустым";

break;

// model

case 2:

if (s == "")

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

break;

// country

case 3:

if (s == "")

err = "Поле \"Производитель\" не должно быть пустым";

break;

// power

case 4:

if(!int.TryParse(s, outi))

err = "Строку нельзя преобразовать в число";

elseif (i < 0)

err = "Отрицательные числа не допускаются";

break;

// year

case 5:

if(!int.TryParse(s, outi))

err = "Строку нельзя преобразовать в число";

elseif (i < 0)

err = "Отрицательные числа не допускаются";

break;

// price

case 6:

if(!double.TryParse(s, out d))

err = "Строку нельзя преобразовать в число";

elseif (d < 0)

err = "Отрицательные числа не допускаются";

break;

}

e.Cancel = err != "";

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

}

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

}

privatevoidSaveData(string name)

{

if (name == "" || dataGridView1.RowCount == 1)

return;

if (dataGridView1.CurrentRow.IsNewRow)

dataGridView1.CurrentCell =

dataGridView1[0, dataGridView1.RowCount - 2];

StreamWritersw = newStreamWriter(name, false, Encoding.Default);

xmls.Serialize(sw, carBindingSource.DataSource);

sw.Close();

}

privatevoid new1_Click(object sender, EventArgs e)

{

SaveData(saveFileDialog1.FileName);

carBindingSource.DataSource = newList<Car>();

dataGridView1.CurrentCell = dataGridView1[0, 0];

saveFileDialog1.FileName = "";

Text = "CarShop";

foreach (DataGridViewRow row in dataGridView1.Rows)

{

row.Height = 60;

}

}

privatevoid open1_Click(object sender, EventArgs e)

{

openFileDialog1.FileName = "";

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

SaveData(saveFileDialog1.FileName);

string s = openFileDialog1.FileName;

StreamReadersr = newStreamReader(s, Encoding.Default);

carBindingSource.SuspendBinding();

carBindingSource.DataSource = xmls.Deserialize(sr);

carBindingSource.ResumeBinding();

sr.Close();

saveFileDialog1.FileName = s;

Text = "CarShop - " + Path.GetFileNameWithoutExtension(s);

int n = dataGridView1.RowCount;

for (inti = 0; i< n; i++)

{

dataGridView1.Rows[i].Cells[1].Value = newBitmap(dataGridView1.Rows[i].Cells[7].Value + "");

dataGridView1.Rows[i].Height = newBitmap(dataGridView1.Rows[i].Cells[7].Value + "").Height;

}

}

}

privatevoid save1_Click(object sender, EventArgs e)

{

if (saveFileDialog1.ShowDialog() == DialogResult.OK)

{

string h = saveFileDialog1.FileName;

SaveData(h);

Text = "Car - " + Path.GetFileNameWithoutExtension(h);

}

}

privatevoid Form2_FormClosing(object sender, FormClosingEventArgs e)

{

SaveData(saveFileDialog1.FileName);

}

privatevoid file1_DropDownOpening(object sender, EventArgs e)

{

save1.Enabled = dataGridView1.RowCount > 1;

}

privatevoid dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)

{

menuStrip1.Enabled = !dataGridView1.IsCurrentCellDirty;

int row = dataGridView1.CurrentRow.Index;

if(!dataGridView1.IsCurrentCellDirty&&

(int)dataGridView1["Id1", row].Value == 0)

{

intmaxId = 0;

for (inti = 0; i< row; i++)

{

int v = (int)dataGridView1["Id1", i].Value;

if (maxId< v)

maxId = v;

}

dataGridView1["Id1", row].Value = maxId + 1;

}

}

privateintCompareById(Car a, Car b)

{

returna.Id - b.Id;

}

privateintCompareByYear(Car a, Car b)

{

returna.Year.CompareTo(b.Year);

}

privateintCompareByPrice(Car a, Car b)

{

returna.Price.CompareTo(b.Price);

}

privatevoid dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)

{

find1.Enabled = bindingNavigatorDeleteItem.Enabled= !dataGridView1.Rows[e.RowIndex].IsNewRow;

}

privatevoid year2_Click(object sender, EventArgs e)

{

if (dataGridView1.RowCount == 1)

return;

dataGridView1.CurrentCell = dataGridView1[0, 0];

Comparison<Car> comp = CompareByYear;

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

{

case 0:

comp = CompareById;

break;

case 1:

comp = CompareByYear;

break;

case 2:

comp = CompareByPrice;

break;

}

(carBindingSource.DataSourceasList<Car>).Sort(comp);

carBindingSource.ResetBindings(false);

}

privatevoid find1_Click(object sender, EventArgs e)

{

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

"Поиск по марке авто", makeToFind, -1, -1).Trim();

if (makeToFind == "")

return;

intind = (carBindingSource.DataSourceas

List<Car>).FindIndex(dataGridView1.CurrentRow.Index, delegate (Car a)

{

returna.Make.StartsWith(makeToFind,

StringComparison.OrdinalIgnoreCase);

});

if (ind != -1)

dataGridView1.CurrentCell = dataGridView1[1, ind];

else

MessageBox.Show("Марка авто не найдена", "Поиск по марке авто");

}

privatevoid button1_Click_1(object sender, EventArgs e)

{

OpenFileDialog d = newOpenFileDialog();

if (d.ShowDialog() == System.Windows.Forms.DialogResult.Cancel)

return;

Imageimg = Image.FromFile(d.FileName);

dataGridView1.CurrentCell.Value = img;

}

}

}

Файл Form1.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace CarsShowroom

{

publicpartialclassForm1 : Form

{

privateForm2 form2 = newForm2();

public Form1()

{

InitializeComponent();

}

privatevoid button1_Click(object sender, EventArgs e)

{

form2.Owner = this;

form2.ShowDialog();

this.Close();

}

privatevoid button2_Click(object sender, EventArgs e)

{

Application.Exit();

}

}

}

Размещено на Allbest.ru

...

Подобные документы

  • Структура таблицы и типы данных. Ввод данных в ячейки таблицы. Создание запросов на выборку, удаление, обновление и добавление записей, на создание таблицы. Основное различие между отчетами и формами, их назначение. Создание отчетов для базы данных.

    курсовая работа [1,9 M], добавлен 17.06.2014

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

    дипломная работа [3,9 M], добавлен 06.03.2013

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

    практическая работа [4,4 M], добавлен 02.04.2009

  • Типы данных языка SQL, определенные стандартом ISO. Средства поддержки целостности данных. Введение ограничений для доменов. Разработка рабочего проекта для автосалона. Построение информационной схемы базы. Создание форм для занесения данных в таблицы.

    курсовая работа [2,5 M], добавлен 29.01.2012

  • Электронные таблицы как средство формирования табличных баз данных. Структура и формирование списка при помощи формы. Сопоставление наиболее популярных систем управления базами данных. Автоматическое изменение цвета ячейки, основываясь на её значении.

    курсовая работа [2,4 M], добавлен 10.01.2017

  • Базы данных с двумерными файлами и реляционные системы управления базами данных (СУБД). Создание базы данных и обработка запросов к ним с помощью СУБД. Основные типы баз данных. Базовые понятия реляционных баз данных. Фундаментальные свойства отношений.

    реферат [57,1 K], добавлен 20.12.2010

  • Концептуальная модель базы данных "Бюро по трудоустройству". Разработка информационного и программного обеспечения объектов автоматизации. Реализация базы данных в СУБД MsAccess. Запросы к базе данных. Таблицы, отчеты и макросы. Интерфейс пользователя.

    курсовая работа [5,2 M], добавлен 30.05.2016

  • Автоматизация сбора и обработки данных. Основы, таблицы и средства для работы с базами данных. Инструментальные средства и компоненты. Технология создания приложения. Работа с псевдонимами и со связанными таблицами. Система управления базами данных.

    методичка [1,5 M], добавлен 06.07.2009

  • Разработка программного проекта для осуществления автоматизированного учета оплаты обучения в количественном и стоимостном выражении. Описание алгоритма формирования отчета и структуры таблицы базы данных. Осуществление просмотра и редактирования данных.

    курсовая работа [2,1 M], добавлен 02.05.2015

  • Средства первичной обработки данных MS Excel. Сортировка связанных областей. Виды поиска: по формату; по содержанию. Главные средства фильтрации. Использование форм в поиске записей. Целостная обработка данных таблицы на примере телефонного справочника.

    курсовая работа [426,1 K], добавлен 29.11.2010

  • Предпосылки появления и история эволюции баз данных (БД и СУБД). Основные типы развития систем управления базами данных. Особенности и черты Access. Создание и ввод данных в ячейки таблицы. Сортировка и фильтрация. Запрос на выборку, основные связи.

    презентация [1,2 M], добавлен 01.12.2015

  • Составление таблицы согласно образцу в программе MS Excel. Создание данных таблицы базы данных. Введение формул в программе MS Excel. Установление связи между таблицами. Создание запроса на выборку данных из одной таблицы с помощью мастер запросов.

    контрольная работа [4,0 M], добавлен 17.04.2016

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

    курсовая работа [906,6 K], добавлен 20.01.2010

  • Возможности создания баз данных средствами программного продукта SQL. Изучение предметной области и разработка проекта базы данных по учету студентов "Журнал классного руководителя". Задачи реализации программного средства, его тестирование и отладка.

    курсовая работа [3,7 M], добавлен 07.12.2012

  • Основные понятия и классификация систем управления базами данных. Модели организации данных. Проектирование реляционных баз данных. Основные особенности создания и использования баз данных для информационного обеспечения управленческой деятельности.

    курсовая работа [2,0 M], добавлен 20.01.2013

  • Разработка программного обеспечения, предназначенного для автоматизации деятельности туристической фирмы. Анализ и проектирование базы данных предметной области. Создание концептуальной, логической и физической моделей данных и программы их обработки.

    курсовая работа [816,5 K], добавлен 05.02.2018

  • Создание программ, позволяющих создавать базы данных. Создание таблицы базы данных. Создание схемы данных. Создание форм, отчетов, запросов. Увеличение объема и структурной сложности хранимых данных. Характеристика системы управления базой данных Access.

    курсовая работа [2,1 M], добавлен 17.06.2013

  • Обзор программного обеспечения мебельной фабрики. Система управления базами данных. Разработка схемы данных для информационной системы фабрики. Справочники и шифраторы системы. Экранные формы ввода и редактирования данных. Корректировка схемы данных.

    дипломная работа [504,6 K], добавлен 05.05.2014

  • Использование электронной таблицы как базы данных. Сортировка и фильтрация данных в Microsoft Excel 97. Сортировка - это упорядочение данных по возрастанию или по убыванию. При фильтрации базы отображаются только записи, обладающие нужными свойствами.

    реферат [6,6 K], добавлен 17.11.2002

  • Разработка базы данных и клиента для управления базой данных с целью автоматизации рабочего места менеджера по клининговым услугам для ООО "Мастер блеск". Обоснование выбора программного обеспечения для создания базы данных. Заполнение данных в таблицы.

    дипломная работа [1,8 M], добавлен 13.04.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.