Название таблицы
|
Атрибут
|
Тип данных
|
Размер
|
Автомобиль
|
Код автомобиля
Регистрационный № Марка Год выпуска № двигателя № шасси № кузова Код VIN Цвет
ФИО владельца
|
Счетчик Текст Текст Текст
Текст Текст Текст Текст Текст Число
|
− 25 30 10 50 50 50
50 25 50
|
Особые отметки
|
Код особых отметок
Регистрационный № ФИО владельца Вид груза Пробег Фары Вид топлива
Расположение руля
|
Счетчик Число Число Текст
Текст Текст Текст Текст
|
− 25 100 100 100 100
100 20
|
Личные данные автовладельца
|
Код личных данных ФИО Дата
рождения Адрес Телефон
|
Счетчик Текст Дата/время
Текст Текст
|
− 100 30 150 40
|
Страховое агенство
|
Код страхового агенства
Страховое агенство
|
Счетчик Текст
|
− 50
|
Автовладелец
|
Код автовладельца ФИО №
водительского удостоверения Серия водительского удостоверения № медицинской
справки Серия медицинской справки № страхового полиса Серия страхового полиса
Кем выдан страховой полис Дата оплаты ТО
|
Счетчик Число Текст Текст
Текст Текст Текст Текст Число Дата/время
|
− 100 50 50 50 50 50
50 50
|
3.8 Реляционная модель базы данных
Определив связи между сущностями и атрибутами, строим реляционную модель
базу данных. Данная реляционная модель представлена на Рисунке 3:
Рисунок 3 - Реляционная модель базы данных
4. АЛГОРИТМ РЕШЕНИЯ ЗАДАЧИ
Для начала необходимо создать БД в MS Access, к которой будет обращаться
разрабатываемое приложение.
Создается главная форма «ООО «СЭСМА-3»» (Form1). На ней размещаются
катринка(pictureBox1) и кнопки: автовладельцы(button1), транспортные
средства(button2), особые отметки(button3).
Создается форма «Информация об автовладельцах». Для нее настраиваются
компоненты: oleDbConnection1, oleDbDataAdapter1(Автовладелец),
oleDbDataAdapter3(Личные_данные_автовладельцев),
oleDbDataAdapter5(Страховые_агентства), по каждому из которых генерируется
dataset11. На форме размещаются компоненты-таблицы dataGridView1,
dataGridView2, dataGridView3, для которых происходит связь с конкретными
таблицами(свойство DataSource) и задаются значения столбцам(свойство Columns).
На форме, для каждого компонента-таблицы размещаются кнопки: добавить,
изменить, удалить и соответствующие кнопки, при нажатии на которые генерируются
необходимые отчеты. Также форма содержит компонент-флажок(checkBox1), при
нажатии на который происходит фильтрация данных компонента dataGridView3 формы
по ФИО.
Аналогично для форм «Информация о транспортных средствах»(Form7) и
«Особые отметки»(Form8).
Для генерации отчетов Crystal Reports выполняем команду меню Project -> Add New
Item, в открывшемся окне выберите пункт Crystal Report. В панели Field Explorer выбираем
нужные поля таблиц и переносим их в секцию Details формы отчета. Создаем новые
формы для отображения отчетов на экране (Form2, Form3, Form4, Form5, Form6,
Form9, Form10).
Чтобы генерировать отчеты в MS Word и MS Excel, необходимо добавить
компоненты Microsoft Word 11.0 Object Library и Microsoft Excel 11.0 Object
Library. Создаем соответствующие шаблоны документов и размещаем их в папках
docs и reports соответственно в каталоге, где находится .exe-файл приложения.
Написание программы сводится непосредственно к написанию кода обработки
всех этих событий
5. ОПИСАНИЕ ПРОГРАММЫ
5.1 Функциональное назначение
Данная программа предназначена для автоматизации учета транспортных
средств, их особых отметок и автовладельцев.
5.2 Внутренняя структура программы
Так как при нажатии какой-либо кнопки вызывается обработчик события
нажатия этой кнопки, то для каждой кнопки необходимо написать свой обработчик,
который оформляется в виде соответствующей процедуры.
Таким образом, исходный код программы состоит из процедур, содержащихся в
модуле, используемом программой. Ознакомиться с исходным кодом программы можно
в Приложении A.
5.3 Описание классов, используемых в программе
public partial class Form1 : Form- класс главной формы
public partial class Form2 : Form- класс формы «Информация
автовладельцев»partial class Form3 : Form- класс формы «Отчет по личным данным
автовладельцев»partial class Form4 : Form- класс формы «Отчет по страховым
агентствам»partial class Form5 : Form- класс формы «Отчет по
автовладельцам»partial class Form6 : Form- класс формы для заполнения
«Явка»partial class Form7 : Form- класс формы «Информация о транспортных
средствах»
public partial class Form8 : Form- класс формы «Особые отметки»
public partial class Form9 : Form- класс формы «Отчет по особым отметкам»
public partial class Form10 : Form- класс формы «Диаграмма»
5.4 Описание функций, используемых в программе
Функции Главной формы(Form1):
- public Form1()- функция инициализации главной формы(Form1)
- private void Form1_Load(object sender, EventArgs e)- функция
закрузки главной формы(Form1)
- private void button1_Click(object sender, EventArgs
e)- открытие формы «Информация автовладельцев»(Form2)
private void button2_Click(object sender, EventArgs
e)- открытие формы «Информация о транспортных средствах»(Form7)
private void button3_Click(object sender, EventArgs
e)- открытие формы «Особые отметки»(Form8)
Функции формы «Информация автовладельцев»(Form2):
- public Form2()- функция инициализации формы «Информация
автовладельцев»(Form2)
- private void Form2_Load(object sender, EventArgs e)- функция
закрузки формы «Информация автовладельцев»(Form2)
private void Form2_FormClosing(object sender,
FormClosingEventArgs e)- функция закрытия формы «Информация
автовладельцев»(Form2)
private void UpdateLich()- функция обновления таблиц БД
private void button1_Click(object sender, EventArgs)- функция
нажатия кнопки на добавление новой строки в таблицу
«Личные_данные_автовладельца»
private void button2_Click(object sender, EventArgs e) - функция
нажатия кнопки на добавление новой строки в таблицу «Страховые_агентства»
private void button3_Click(object sender, EventArgs e) - функция
нажатия кнопки на добавление новой строки в таблицу «Автовладелец»
private void button4_Click(object sender, EventArgs e) - функция
нажатия кнопки на изменение выделенной строки таблицы
«Личные_данные_автовладельца»
private void button5_Click(object sender, EventArgs e) - функция
нажатия кнопки на изменение выделенной строки таблицы «Страховые_агентства»
private void button6_Click(object sender, EventArgs e) - функция
нажатия кнопки на изменение выделенной строки таблицы «Автовладелец»
private void button7_Click(object sender, EventArgs e) - функция
нажатия кнопки на удаление выделенной строки таблицы
«Личные_данные_автовладельца»
private void button8_Click(object sender, EventArgs e) - функция
нажатия кнопки на удаление выделенной строки таблицы «Страховые_агентства»
private void button9_Click(object sender, EventArgs e) - функция
нажатия кнопки на удаление выделенной строки таблицы «Автовладелец»
private void checkBox1_CheckedChanged(object sender, EventArgs
e)-функция отметки флажка, осуществляющая фильтр по ФИО
private void button10_Click(object sender, EventArgs e) -
функция нажатия кнопки на открытие формы «Отчет по личным данным
автовладельцев»(Form3)
private void button11_Click(object sender, EventArgs e) - функция
нажатия кнопки на открытие формы «Отчет по страховым агентствам»(Form4)
private void button12_Click(object sender, EventArgs e) -
функция нажатия кнопки на открытие формы «Отчет по автовладельцам»(Form5)
private void button13_Click(object sender, EventArgs e) -
функция нажатия кнопки на открытие формы для заполнения «Явка»(Form6)
private void button14_Click(object sender, EventArgs e) -
функция нажатия кнопки на открытие отчета в MS Word, показывающий страховые
агентства, имеющие более одного клиента
private void button15_Click(object sender, EventArgs e) -
функция нажатия кнопки на открытие отчета в MS Excel, составляющего список
данных автовладельцев
Функции формы «Отчет по личным данным автовладельцев»(Form3):
- public Form3()- функция инициализации формы «Отчет по личным данным
автовладельцев»(Form3)
- private void Form3_Load(object sender, EventArgs e) - функция
закрузки формы «Отчет по личным данным автовладельцев»(Form3)
Функции формы «Отчет по страховым агентствам» (Form4):
- public Form4()- функция инициализации формы «Отчет по страховым
агентствам»(Form4)
- private void Form4_Load(object sender, EventArgs e) - функция
закрузки формы «Отчет по страховым агентствам»(Form4)
Функции формы «Отчет по автовладельцам»(Form5):
- public Form5()- функция инициализации формы «Отчет по
автовладельцам»(Form5)
- private void Form5_Load(object sender, EventArgs e) - функция
закрузки формы «Отчет по автовладельцам»(Form5)
Функции формы «Явка»(Form6):
- public Form6()- функция инициализации формы «Явка»(Form6)
- private void Form6_Load(object sender, EventArgs e)
- функция закрузки формы «Явка»(Form6)
Функции формы «Информация о транспортных средствах»(Form7):
- public Form7()- функция инициализации формы «Информация о
транспортных средствах»(Form7)
- private void Form7_Load(object sender, EventArgs e) - функция
закрузки формы «Информация о транспортных средствах»(Form7)
private void Form7_FormClosing(object sender,
FormClosingEventArgs e)- функция закрытия формы «Информация о транспортных
средствах»(Form7)
private void UpdateLich()- функция обновления таблиц БД
private void button1_Click(object sender, EventArgs)- функция
нажатия кнопки на добавление новой строки в таблицу
«Личные_данные_автовладельца»
private void button2_Click(object sender, EventArgs e) - функция
нажатия кнопки на добавление новой строки в таблицу «Автомобиль»
private void button3_Click(object sender, EventArgs e) - функция
нажатия кнопки на добавление новой строки в таблицу
«Личные_данные_автовладельца»
private void button4_Click(object sender, EventArgs e) - функция
нажатия кнопки на изменение выделенной строки таблицы «Автомобиль»
private void button5_Click(object sender, EventArgs e) - функция
нажатия кнопки на удаление выделенной строки таблицы
«Личные_данные_автовладельца»
private void button6_Click(object sender, EventArgs e) - функция
нажатия кнопки на удаление выделенной строки таблицы «Автомобиль»
private void button7_Click(object sender, EventArgs e) - функция
формирования отчета по автомобилям в MS Word
private void button8_Click(object sender, EventArgs e) - функция
формирования отчета в MS Word по автовладельцам, имеющим более одного
автомобиля
private void button9_Click(object sender, EventArgs e) - функция
формирования отчета в MS Excel
private void button10_Click(object sender, EventArgs e) -
функция нажатия кнопки на открытие формы «Диаграмма»(Form10)
Функции формы «Особые отметки»(Form8):
- public Form8()- функция инициализации формы «Особые отметки»(Form8)
- private void Form8_Load(object sender, EventArgs e) - функция
закрузки формы «Особые отметки»(Form8)
private void Form8_FormClosing(object sender,
FormClosingEventArgs e)- функция закрытия формы «Особые отметки»(Form8)
private void UpdateLich()- функция обновления таблиц БД
private void button1_Click(object sender, EventArgs)- функция
нажатия кнопки на добавление новой строки в таблицу «Особые_отметки»
private void button2_Click(object sender, EventArgs e) - функция
нажатия кнопки на изменение выделенной строки таблицы «Особые_отметки»
private void button3_Click(object sender, EventArgs e) - функция
нажатия кнопки на удаление выделенной строки таблицы «Особые_отметки»
private void button4_Click(object sender, EventArgs e) - функция
нажатия кнопки на открытие формы «Отчет по особым отметкам»(Form9)
private void button5_Click(object sender, EventArgs e) - функция
формирования отчета по особым отметкам в MS Word
private void button6_Click(object sender, EventArgs e) - функция
формирования отчета в MS Excel
Функции формы «Отчет по особым отметкам»(Form9):
- public Form9()- функция инициализации формы «Отчет по особым
отметкам»(Form9)
- private void Form9_Load(object sender, EventArgs e) - функция
закрузки формы «Отчет по особым отметкам»(Form9)
Функции формы «Диаграмма»(Form10):
- public Form10()- функция инициализации формы «Диаграмма»(Form10)
- private void Form10_Load(object sender, EventArgs e) - функция
закрузки формы «Диаграмма»(Form10)
5.5 Описание методов, используемых в программе
void dataGridView1_RowHeaderMouseClick(object sender,
DataGridViewCellMouseEventArgs e), private void
dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs
e), private void dataGridView1_RowHeaderMouseClick(object sender,
DataGridViewCellMouseEventArgs e)-методы получения выделенной строкиvoid
OpenExcelDocument(string FileName)-метод создания нового отчета в Excel на
основе заданного шаблона
private void PutCell(string cell, string val), private void
PutCellBorder(string cell, string val)-методы
занесения данных
в ячейки
private void OpenDocument(string FileName)-метод открытия Word, создания
документа на основе шаблона, добавление документа в список документов
приложения
public void ReplaceText(string word, string repl), private
Boolean ExecuteReplace(Word.Find find), private Boolean
ExecuteReplace(Word.Find find, Object replaceOption) - методы поиска и замены в тексте документа
5.6 Описание стандартных компонентов,
используемых в программе
Компонент textBox - используется для ввода или вывода пользовательского
текста. В программе используется для добавления/изменения записей таблиц.
Компонент button - используется для выполнения какого либо действия.
Компонент checkBox - флаг-переключатель. В программе применяется для
фильтрации по ФИО.
Компонент comboBox- выпадающий список. В программе используется для
выбора данных из списка.
Компонент dateTimePicker- поле ввода даты. В программе используется при
составлении документа о явке автовладельца.
6. Руководство пользователя
Установка приложения производится путем копирования sesma3.exe на к
компьютер
Запускаемым файлом программы является файл sesma3.exe.
После запуска на экране появляется главное окно программы (Рисунок 4).
Рисунок 4 - Главное окно программы «ООО «СЭСМА-3»»
На нем расположены кнопки: «Автовладельцы», «Транспортные средства»,
«Особые отметки». При нажатии на кнопки открываются, соответственно формы
«Информация об автовладельцах» (Рисунок 5), «Информация о транспортных
средствах» (Рисунок 6), «Особые отметки» (Рисунок 7).
Рисунок 5 - Форма «Информация об автовладельцах»
Рисунок 6 - Форма «Информация о транспортных средствах»
Рисунок 7 - Форма «Особые отметки»
Рассмотрим реализацию программы на примере формы «Информация об
автовладельцах».
Для добавления данных в таблицу необходимо внести информацию в текстовые
поля и нажать на кнопку «Добавить» (Рисунок 8).
Рисунок 8 - Добавление строки
Для изменения данных таблицы необходимо выделить нужную строку, внести
изменения в текстовых полях и нажать на кнопку «Изменить» (Рисунок 9). Удаление
производится аналогично.
Рисунок 9 - Изменение строки
Для фильтрации данных выбираем человека в выпадающем списке (Рисунок 10).
Рисунок 10 - Выбор человека
Нажимаем на флаг-переключатель «Фильтр по ФИО». В результате отобразится
строка только с выбранным человеком (Рисунок 11).
Рисунок 11 - Фильтрация
При нажатии на кнопку «Отчет по автовладельцам» открывается данный отчет
(Рисунок 12).
Рисунок 12 - Отчет по автовладельцам
При выборе человека в таблице «Личные данные автовладельца» нажимаем на
кнопку «Явка». Откроется форма для заполнения (Рисунок 13). Здесь пользователь
вносит место, куда необходимо явиться автовладельцу и дату явки.
Рисунок 13 - Форма для заполнения
При нажатии на кнопку «ОК» откроется отчет в Word (Рисунок 14).
Рисунок 14 - Отчет в Word
При нажатии на кнопку «Список в Excel» открывается отчет в Excel (Рисунок
15).
Рисунок 15 - Отчет в Excel
Аналогичные действия пользователь может производить с остальными формами.
При нажатии на кнопку «Диаграмма» на форме «Транспортные средства»
откроется отчет, содержащий диаграмму, в которой отображается количество
транспортных средств автовладельцев (Рисунок 16).
Рисунок 16 - Диаграмма
ЗАКЛЮЧЕНИЕ
В ходе выполнения курсового проекта были получены и закреплены навыки
программирования в среде Microsoft Visual Studio.
В результате создано работоспособное приложение для кассы ПТО предприятия
по техническому осмотру транспортных средств ООО «СЭСМА-3». Проведенное
тестирование работы приложения не выявило существенных ошибок. Это, однако, не
исключает возможности их появления при проведении более глубокого и длительного
тестирования.
Разработанное приложение автоматизирует работу помощника инспектора ПТО.
Оно реализует основные операций с БД на основе технологии ADO.NET (добавление,
редактирование, удаление, фильтрация записей), генерирует отчеты в соответствии
с заданными условиями, графически отображает необходимую информацию.
Плюсы данного приложения в том, что его не надо инсталлировать, простой
пользовательский интерфейс, простота использования, небольшой объем занимаемой
оперативной памяти.
К минусам можно отнести то, что без установленной среды разработки данное
приложение функционировать не будет.
Список используемой литературы
1. Кунт Рейсдорф - « Microsoft Visual
Studio 2005. Освой
самостоятельно за 21 день»
. Х. Дейтел, П. Дейтел. Как программировать на C#:
Пер. с англ. - Москва: ЗАО "Издательство БИНОМ", 1998. 1024с.
Приложение А
Листинг главной формы:
using
System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Text;System.Windows.Forms;курсач
{partial class Form1 : Form
{Form1()
{();
}void Form1_Load(object sender, EventArgs e)
{
}void button1_Click(object sender, EventArgs e)
{rep = new Form2();.Show();
}void button2_Click(object sender, EventArgs e)
{rep = new Form7();.Show();
}void button3_Click(object sender, EventArgs e)
{rep = new Form8();.Show();
}
}
}
Листинг формы «Информация автовладельцев»:
using
System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Text;CrystalDecisions.Shared;CrystalDecisions.CrystalReports.Engine;CrystalDecisions.Windows.Forms;System.Windows.Forms;Microsoft.Office.Core;курсач
{partial class Form2 : Form
{Form2()
{();
}Form2 MF;void Form2_Load(object sender, EventArgs e)
{.Open(); //открыть соединение
//заполнить таблицы в объекте DataSet();();();
}int LichId;int StragId;int AwzId;.Application wordApp;.Document
wordDoc;.Application ExcelApp; //объект приложения.Window ExcelWindow; //объект
окна Excel.Workbook WorkBook; //объект рабочей книги.Sheets ExcelSheets;
//набор листов Excel.Worksheet WorkSheet; //объект рабочего листа.Range range;
//диапазон ячеекvoid OpenExcelDocument(string FileName)
{
//создать новый объект приложения Excel= new Excel.Application();
//задать файл шаблонаtemplate = Application.StartupPath +
@"\reports\" + FileName;
//применить шаблон.Workbooks.Add(template);
//получить первую рабочую книгу файла= ExcelApp.Workbooks[1];
//получить список листов рабочей книги= WorkBook.Worksheets;
//выбрать первый лист= (Excel.Worksheet)ExcelSheets.get_Item(1);
}void PutCell(string cell, string val)
{
//получить диапазон, соответствующий выбранной ячейке=
WorkSheet.get_Range(cell, Type.Missing);
//занести в ячейку значение.Value2 = val;
}void PutCellBorder(string cell, string val)
{
//вызвать функцию занесения в ячейку значения(cell, val);
//нарисовать границу вокруг
ячейки.BorderAround(Excel.XlLineStyle.xlContinuous,
Excel.XlBorderWeight.xlThin, Excel.XlColorIndex.xlColorIndexAutomatic,
Type.Missing);
}void OpenDocument(string FileName)
{
//открываем Word= new Word.Application();
//создаем документ на основе шаблонаtemplate = Application.StartupPath +
@"\docs\" + FileName;newTemplate = false;
Object documentType =
Word.WdNewDocumentType.wdNewBlankDocument;
Object visible = true;
//добавляем документ в список документов приложения= wordApp.Documents.Add(ref
template, ref newTemplate, ref documentType, ref visible);
}void ReplaceText(string word, string repl)
{
// Смещаем выделение к началу документаunit = Word.WdUnits.wdStory;extend
= Word.WdMovementType.wdMove;.Selection.HomeKey(ref unit, ref extend);
//создаем объект Find для поиска текста.Find fnd =
wordApp.Selection.Find;
//очищаем его настройки.ClearFormatting();
//задаем текст для поиска.Text = word;
//очищаем настройки для замены.Replacement.ClearFormatting();
//задаем текст для замены.Replacement.Text = repl;
//запускаем процесс поиска и замены(fnd);
}Boolean ExecuteReplace(Word.Find find)
{ExecuteReplace(find, Word.WdReplace.wdReplaceAll);
}Boolean ExecuteReplace(Word.Find find, Object replaceOption)
{findText = Type.Missing;matchCase = Type.Missing;matchWholeWord =
Type.Missing;matchWildcards = Type.Missing;matchSoundsLike =
Type.Missing;matchAllWordForms = Type.Missing;forward = Type.Missing;wrap =
Type.Missing;format = Type.Missing;replaceWith = Type.Missing;replace =
replaceOption;matchKashida = Type.Missing;matchDiacritics =
Type.Missing;matchAlefHamza = Type.Missing;matchControl =
Type.Missing;find.Execute(ref findText, ref matchCase,matchWholeWord, ref
matchWildcards, ref matchSoundsLike,matchAllWordForms, ref forward, ref wrap,
ref format,replaceWith, ref replace, ref matchKashida,matchDiacritics, ref
matchAlefHamza, ref matchControl);
}void Form2_FormClosing(object sender, FormClosingEventArgs e)
{.Close(); //закрыть соединение
}void UpdateLich()
{
//обновить содержимое таблиц базы данных.Update(dataSet11);.Update(dataSet11);.Update(dataSet11);
//очистить DataSet.Clear();
//заполнить таблицы в объекте
DataSet.Fill(dataSet11.Личные_данные_автовладельца);.Fill(dataSet11.Страховые_агенства);.Fill(dataSet11.Автовладелец);
//очистить содерижмое списка фамилий.Items.Clear();
//заполнить список фамилий значениями из таблицы
foreach (DataRow row in
dataSet11.Личные_данные_автовладельца.Rows)
comboBox1.Items.Add(row["ФИО"]);
//в списке фамилий - ни одна фамилия не выделена.Text = "";
}void UpdateStrag()
{
//обновить содержимое таблиц базы
данных.Update(dataSet11);.Update(dataSet11);.Update(dataSet11);
//очистить DataSet.Clear();
//заполнить таблицы в объекте
DataSet.Fill(dataSet11.Личные_данные_автовладельца);.Fill(dataSet11.Страховые_агенства);.Fill(dataSet11.Автовладелец);
//очистить содерижмое списка страховых агентств.Items.Clear();
//заполнить список фамилий значениями из таблицы(DataRow row in
dataSet11.Страховые_агенства.Rows).Items.Add(row["Страховое
агенство"]);
//в списке агентств - ни одно агентство не выделено.Text = "";
}void UpdateAwz()
{
//обновить содержимое таблиц базы
данных.Update(dataSet11);.Update(dataSet11);.Update(dataSet11);
//очистить DataSet.Clear();
//заполнить таблицы в объекте
DataSet.Fill(dataSet11.Личные_данные_автовладельца);.Fill(dataSet11.Страховые_агенства);.Fill(dataSet11.Автовладелец);
}void button1_Click(object sender, EventArgs e)
{
//если текстовые поля не пусты,(textBox1.Text != "" &&
textBox2.Text != "" & textBox3.Text != "" &
textBox4.Text != "")
{
//то создать новую запись в таблице Личные_данные_автовладельца,row =
dataSet11.Личные_данные_автовладельца.NewRow();
//заполнить ее столбцы["ФИО"] = textBox1.Text;["Дата
рождения"] = textBox2.Text;["Адрес"] =
textBox3.Text;["Телефон"] = textBox4.Text;
//и добавить запись в таблицу.Личные_данные_автовладельца.Rows.Add(row);
//обновить содержимое главного окна();
}
}void button2_Click(object sender, EventArgs e)
{
//если текстовые поля не пусты,(textBox5.Text != "")
{
//то создать новую запись в таблице Страховые_агенстваrow =
dataSet11.Страховые_агенства.NewRow();
//заполнить ее столбцы["Страховое агенство"] = textBox5.Text;
//и добавить запись в таблицу.Страховые_агенства.Rows.Add(row);
//обновить содержимое главного окна();
}
}void button3_Click(object sender, EventArgs e)
{
//если текстовые поля не пусты,(textBox6.Text != "" &&
textBox7.Text != "" && textBox8.Text != ""
&& textBox9.Text != "" && textBox10.Text !=
"" && textBox11.Text != "" &&
textBox12.Text != "")
{
//то создать новую запись в таблице Автовладелец,row =
dataSet11.Автовладелец.NewRow();
//заполнить ее столбцы["№ водительско удостоверения"] =
textBox6.Text;["Серия водительского удостоверения"] =
textBox7.Text;["№ медицинской справки"] = textBox8.Text;["Серия
медицинской справки"] = textBox8.Text;["№ страхового полиса"] =
textBox10.Text;["Серия страхового полиса"] =
textBox11.Text;["Дата оплаты техосмотра"] = textBox12.Text;
//и добавить запись в таблицуfio = comboBox1.SelectedItem.ToString();
// string fioq = comboBox2.SelectedItem.ToString();
//составить условие для поиска этого человека str = "ФИО='" +
fio + "'";
//string strq = "Страховое агенство='" + fioq + "'";
//получить id этого человека в таблице Contacts[]
Личные_данные_автовладельца =
dataSet11.Личные_данные_автовладельца.Select(str);
//DataRow[] Страховые_агенства =
dataSet11.Страховые_агенства.Select(strq);
//заполнить столбец "ContactId" редактируемой
записи["ФИО"] = Личные_данные_автовладельца[0]["Код личных
данных автовладельца"];
//row["Кем выдан страховой полис"] = Страховые_агенства[0]["Код
cтрахового агенства"];.Автовладелец.Rows.Add(row);
//обновить содержимое главного окна();
}
}void dataGridView1_RowHeaderMouseClick(object sender,
DataGridViewCellMouseEventArgs e)
{
{
//получить номер выделенной строки= e.RowIndex;
//отобразить фамилию и имя выбранного человека
//в текстовых полях
textBox1.Text =
dataSet11.Личные_данные_автовладельца.Rows[LichId]["ФИО"].ToString();.Text
= dataSet11.Личные_данные_автовладельца.Rows[LichId]["Дата
рождения"].ToString();.Text = dataSet11.Личные_данные_автовладельца.Rows[LichId]["Адрес"].ToString();.Text
=
dataSet11.Личные_данные_автовладельца.Rows[LichId]["Телефон"].ToString();
}(Exception)
{
}
}void dataGridView2_RowHeaderMouseClick(object sender,
DataGridViewCellMouseEventArgs e)
{
{
//получить номер выделенной строки= e.RowIndex;
//отобразить фамилию и имя выбранного человека
//в текстовых полях.Text =
dataSet11.Страховые_агенства.Rows[StragId]["Страховое
агенство"].ToString();
}(Exception)
{
}
}void dataGridView3_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs
e)
{
{
//получить номер выделенной строки= e.RowIndex;
//найти запись с полученным номером в DataSetp =
dataSet11.Автовладелец.Rows[AwzId];
//отобразить номер телефона найденной записи в текстовом поле.Text =
p["№ водительско удостоверения"].ToString();.Text = p["Серия
водительского удостоверения"].ToString();.Text = p["№ медицинской
справки"].ToString();.Text = p["Серия медицинской
справки"].ToString();.Text = p["№ страхового полиса"].ToString();.Text
= p["Серия страхового полиса"].ToString();.Text = p["Дата оплаты
техосмотра"].ToString();
//получить записи из таблицы Contacts, связанные с данной[] fams =
p.GetParentRows(dataSet11.Relations["FK_Личные_данные_автовладельца_Автовладелец"]);
//выбрать фамилию человека (из текущей записи) в списке.SelectedItem =
fams[0]["ФИО"].ToString();[] famsq =
p.GetParentRows(dataSet11.Relations["FK_Страховые_агенства_Автовладелец"]);
//выбрать фамилию человека (из текущей записи) в списке.SelectedItem =
famsq[0]["Страховое агенство"].ToString();
}(Exception)
{
}
}void button4_Click(object sender, EventArgs e)
{
//если выбрана строка в таблице(dataGridView1.SelectedRows.Count != 0)
{
//получить содержимое выбранной строкиrow =
dataSet11.Личные_данные_автовладельца.Rows[LichId];
//изменить фамилию и имя на введенные значения["ФИО"] =
textBox1.Text;["Дата рождения"] = textBox2.Text;["Адрес"] =
textBox3.Text;["Телефон"] = textBox4.Text;
//сохранить изменения и обновить содержимое формы();
}.Show("Выберите строку для
редактирования","Внезапно...");
}void button5_Click(object sender, EventArgs e)
{
//если выбрана строка в таблице(dataGridView2.SelectedRows.Count != 0)
{
//получить содержимое выбранной строкиrow =
dataSet11.Страховые_агенства.Rows[StragId];
//изменить фамилию и имя на введенные значения["Страховое
агенство"] = textBox5.Text;
//сохранить изменения и обновить содержимое формы();
}.Show("Выберите строку для редактирования",
"Внезапно...");
}void button6_Click(object sender, EventArgs e)
{(dataGridView3.SelectedRows.Count != 0)
{
{
//получить содержимое выбранной строкиrow =
dataSet11.Автовладелец.Rows[AwzId];["№ водительско удостоверения"] =
textBox6.Text;["Серия водительского удостоверения"] =
textBox7.Text;["№ медицинской справки"] = textBox8.Text;["Серия
медицинской справки"] = textBox8.Text;["№ страхового полиса"] =
textBox10.Text;["Серия страхового полиса"] =
textBox11.Text;["Дата оплаты техосмотра"] = textBox12.Text;fio =
comboBox1.SelectedItem.ToString();str = "ФИО='" + fio +
"'";[] Личные_данные_автовладельца = dataSet11.Личные_данные_автовладельца.Select(str);["ФИО"]
= Личные_данные_автовладельца[0]["Код личных данных автовладельца"];
}(Exception)
{
}
//сохранить изменения и обновить содержимое формы();
}.Show("Выберите строку для редактирования",
"Внезапно...");
}void button7_Click(object sender, EventArgs e)
{
//если выбрана запись для удаления(dataGridView1.SelectedRows.Count != 0)
{(MessageBox.Show("Уверены?", "Точно?",
MessageBoxButtons.YesNo) == DialogResult.Yes)
{
{
//удалить выбранную строку.Личные_данные_автовладельца.Rows[LichId].Delete();
}(Exception)
{
}
//обновить БД и ее содержимое на форме();
}
}.Show("Выберите строку для удаления",
"Внезапно...");
}void button8_Click(object sender, EventArgs e)
{
//если выбрана запись для удаления(dataGridView2.SelectedRows.Count != 0)
{(MessageBox.Show("Уверены?", "Точно?",
MessageBoxButtons.YesNo) == DialogResult.Yes)
{
{
//удалить выбранную строку.Страховые_агенства.Rows[StragId].Delete();
}(Exception)
{
}
//обновить БД и ее содержимое на форме();
}
}.Show("Выберите строку для удаления",
"Внезапно...");
}void button9_Click(object sender, EventArgs e)
{
//если выбрана запись для удаления
//если выбрана запись для удаления(dataGridView3.SelectedRows.Count != 0)
{(MessageBox.Show("Уверены?", "Точно?",
MessageBoxButtons.YesNo) == DialogResult.Yes)
{
{
//удалить выбранную строку.Автовладелец.Rows[AwzId].Delete();
}(Exception)
{
}
//обновить БД и ее содержимое на форме();
}
}.Show("Выберите строку для удаления",
"Внезапно...");
}void checkBox1_CheckedChanged(object sender, EventArgs e)
{
//если установлен флажок и выбрана фамилия(checkBox1.Checked &&
comboBox1.Text != "")
{
//получить выбранную фамилиюfio = comboBox1.SelectedItem.ToString();
//составить условие для поиска нужного человека
//в таблице Личные_данные_автовладельцаstr = "ФИО='" + fio +
"'";
//найти нужного человека в таблице Личные_данные_автовладельца[]
Личные_данные_автовладельца =
dataSet11.Личные_данные_автовладельца.Select(str);
//составить условие для фильтра= "ФИО=" +
Личные_данные_автовладельца[0]["Код личных данных автовладельца"];
//применить фильтр
автовладелецBindingSource.Filter = str;
}
//отменить фильтрацию
автовладелецBindingSource.Filter = "";
}void button10_Click(object sender, EventArgs e)
{rep = new Form3();.MF = this;.Show();
}void button11_Click(object sender, EventArgs e)
{rep = new Form4();.MF = this;.Show();
}void button12_Click(object sender, EventArgs e)
{rep = new Form5();.MF = this;.Show();
}void button13_Click(object sender, EventArgs e)
{
//если выбран человек для формирования
приглашения(dataGridView1.SelectedRows.Count != 0)
{
//создаем форму для ввода доп. информацииform = new Form6();
//если мы ввели данные и нажали ОК, то формируем
документ(form.ShowDialog() == DialogResult.OK)
{
//создаем новый документ на основе шаблона("йц.doc");
//получаем из БД строку с выбранным человекомrow =
dataSet11.Личные_данные_автовладельца.Rows[LichId];
//получаем его имя и фамилиюFIO = row["ФИО"].ToString();
//заменяем метки в шаблоне конкретными
значениями("<ФИО>", FIO);("<Place>",@form.textBox1.Text);("<Date>",
form.dateTimePicker1.Value.ToLongDateString());
//делаем приложение Word видимым.Visible = true;
}
}.Show("Выберите человека", "Внезапно...");
}void button14_Click(object sender, EventArgs e)
{
//создаем новый документ на основе шаблона("список.doc");
//заменяем метку <Today> на текущую дату("<Today>",
DateTime.Today.ToShortDateString());
//задаем параметры для поиска метки <Table>start = 0;end =
wordDoc.Characters.Count;
//диапазон поиска - весь документ.Range rng = wordDoc.Range(ref start,
ref end);.TextRetrievalMode.IncludeHiddenText =
false;.TextRetrievalMode.IncludeFieldCodes = false;metka =
"<Table>";
//ищем в документе метку <Table>beginphrase =
rng.Text.IndexOf(metka);
//получаем "координаты" начала и конца метки в документе=
beginphrase;= beginphrase + metka.Length;
//если метка <Table> найдена(beginphrase != -1)
{
//то удаляем ее= wordDoc.Range(ref start, ref end);.Text = "";
//и вставляем на ее место таблицуdefaultTableBehavior = Type.Missing;autoFitBehavior
= Type.Missing;
//создаем объект таблицы (изначально - только шапка).Table tbl =
rng.Tables.Add(rng,1, 3, ref defaultTableBehavior, ref autoFitBehavior);
//Форматируем таблицу и применяем стиль.Range.Font.Size = 14;style =
"Сетка таблицы";.set_Style(ref style);
//шапка таблицы.Cell(1, 1).Range.Text = "№пп";.Cell(1,
2).Range.Text = "Страховое агенство";.Cell(1, 3).Range.Text = "№
водительско удостоверения";
//i - общее количество строк в формируемой таблицеi = 0;(DataRow row in
dataSet11.Страховые_агенства)
{[] srtah =
row.GetChildRows(dataSet11.Relations["FK_Страховые_агенства_Автовладелец"]);(srtah.Length
> 1)
{(DataRow st in srtah)
{++;
//добавляем в таблицу документа новую строкуbeforeRow =
Type.Missing;.Rows.Add(ref beforeRow);
//и заполняем ее столбцы.Cell(i + 1, 1).Range.Text = i.ToString();.Cell(i
+ 1, 2).Range.Text = row["Страховое агенство"].ToString();.Cell(i +
1, 3).Range.Text = st["№ водительско удостоверения"].ToString();
}
}
}
//шапку таблицы выделяем курсивом.Rows[1].Range.Font.Italic = 1;
//и устанавливаем выравнивание по
центру.Rows[1].Range.ParagraphFormat.Alignment =
Word.WdParagraphAlignment.wdAlignParagraphCenter;
}("Table", "");
//отображаем сформированный документ.Visible = true;
}void button15_Click(object sender, EventArgs e)
{
//создать документ на основе шаблона("spisok.xls");
//занести текущую дату в ячейку D1("E1",
DateTime.Now.ToShortDateString());
//i - порядковый номер записиi = 1;(DataRow row in
dataSet11.Личные_данные_автовладельца)
{
//занести в столбец А порядковый номер записи("A" + (i +
5).ToString(), i.ToString());("B" + (i + 5).ToString(),
row["ФИО"].ToString());("C" + (i + 5).ToString(),
row["Дата рождения"].ToString());("D" + (i + 5).ToString(),
row["Адрес"].ToString());("E" + (i + 5).ToString(),
row["Телефон"].ToString());++;
}
//сделать приложение Excel видимым.Visible = true;
}
}
}