Разработка программного обеспечения 


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



ЗНАЕТЕ ЛИ ВЫ?

Разработка программного обеспечения



1. Принято решение создать пользовательский интерфейс для удобного получения данных БД, без возможности их изменения для сохранения целостности.

2. Разработанное ПО для пользователя должно позволить просмотреть все данные БД, осуществлять поиск по большим таблицам и производить выборку.

Могут потребоваться следующие сведения:

• какой рекомендуемый водный режим у заданного растения летом;

• какие растения можно держать в комнате с северной стороны на окне;

• какие растения, цветущие в мае, неприхотливы к воде летом

• в какое время нужно вносить заданную подкормку для указанного растения;

• когда необходимо пересадить указанное растение заданного возраста.

Необходимо предусмотреть возможность выдачи справки о времени и типе подкормки для заданного растения и отчета о растениях указанного класса (их количество в БД, название каждого растения, водный режим и цветения).

3. 4 таблицы (представления с общими данными из 6 исходных таблиц) находятся на вкладках элемента управления TabControl)

Рисунок 16 - Общий вид закладок и 1ой таблицы

На 1ой вкладке реализованы функции: поиск записей (по названию, группе и помещению), который изменит таблицу по результату; получение данных о водном режиме растения на летнее и нет время, при помощи нажатия на запись с растением в таблице; отмена выборки отображением полной таблицы.

Рисунок 17 – Ф-ия поиска и получения данных о поливе (выбрана Зебрина)

4. На второй вкладке находится таблица с данными о группах растений, таблица с функцией выборки по 2 критериям (полив и цветение), и ф-ия получения отчёта о растениях группы с подсчётом записей и возможностью сохранения.

Рисунок 18 – Общие данные о группах

Рисунок 19 - Запрос отчёта о группе

Рисунок 20 - Результат запроса из Рис.19

Рисунок 21 - Сохранённый отчёт о группе Декоративно-лиственные

Рисунок 22 - Результат выборки по 2 критериям выбранным снизу

5. На 3ей вкладке находится таблица с данными о подкормках растений с функцией поиска (по типу подкормки и названию растения), получения отчёта по выборке и кнопкой для отмены выборки и отображения полной таблицы.

Рисунок 23 - Результат поиска Азотных подкормок по слогу – азо

6. На четвёртой вкладке находятся таблицы с данными о помещениях, вторая таблица выдаёт данные по заданию «какие растения можно держать в комнате с северной стороны на окне»

Рисунок 24 - Данные о помещениях

Рисунок 25 - Данные о несветолюбивых растениях

ЗАКЛЮЧЕНИЕ

В процессе выполнения курсовой работы были приобретены навыки работы с системами управления базами данных (СУБД), изучены принципы организации и построения БД, а также язык SQL.

Была спроектирована и разработана база данных «Комнатные растения» в СУБД Microsoft Access 2016.

По итогу инфологического проектирования было создано 4 отношения, в последствии была произведена нормализация полученных таблиц базы данных к 3НФ в 6 отношений и полное заполнение БД.

К базе данных было добавлена подсистема безопасности в виде представлений и разделения прав пользователей.

Было создано программное обеспечение БД в виде Windows Forms на языке C# в среде разработки Visual Studio 2017. В данном ПО были добавлены все необходимые функции для работы, с помощью разработанных SQL запросов, такие как поиск по таблице, выдача отчётов и заполнение пользовательских представлений.

 

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Справка и обучение Microsoft Office. Интернет ресурс. (URL:  support.office.com/ru-ru)

2. Советов, Б.Я. Базы данных. Учебник: учебник для вузов / Б.Я. Советов, В.В. Цехановский, В.Д. Чертовской. – Юрайт: Профессиональное образование, 2017. – 463с. – Библиогр. в конце кн.

2. Смирнов Олег Игоревич. Базы данных: модели и проектирование: учеб. пособие / О. И. Смирнов; ТулГУ. – Тула: Изд-во ТулГУ, 2007. – 106 с.: ил. – в дар от каф. ПМиИТулГУТулГУ: 1308588-1308597. – Библиогр. в конце кн.

3. Семенчев Е.А. Распределенные и объектно-ориентированные базы данных: учеб. пособие / Е. А. Семенчев; ТулГУ. – Тула: Изд-во ТулГУ, 2008. – 136 с.: ил.

 

 

ПРИЛОЖЕНИЯ

Листинг

Подключение базы данных к пользовательскому интерфейсу

public partial class Form1: Form{

   public static string connect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Plants.mdb;";

   private OleDbConnection DataBase;

   public Form1()

   {

       InitializeComponent();

       DataBase = new OleDbConnection(connect);

       DataBase.Open();

   }

Запросы для заполнения основных таблиц – Растения, Группы, Помещения, Подкормки, и дополнительной - Несветолюбивые растения для помещений

string query = "SELECT Растение.Номер, Растение.Народное_название, Растение.Общепринятое_название,Растение_Группа_Помещение.Группа,Растение.Время_цветения,Растение.Время_пересадки,Растение.Возраст,Растение_Группа_Помещение.Помещение FROM [Растение],[Растение_Группа_Помещение] WHERE Растение.Номер = Растение_Группа_Помещение.Растение";

string query2 = "SELECT * FROM [Группа]";

string query3 = "SELECT * FROM [Помещение]";

string query4 = "SELECT Растение.Номер, Растение.Народное_название, Подкормка.Тип_подкормки, Подкормка.Время_подкормки FROM [Растение], [Подкормка], [Растение_Подкормка] WHERE Растение.Номер = Растение_Подкормка.Растение AND Растение_Подкормка.Подкормка = Подкормка.Номер";

 string query5 = "SELECT Растение_Группа_Помещение.Растение, Растение.Народное_название,Растение_Группа_Помещение.Помещение FROM [Растение_Группа_Помещение],[Группа],[Растение] WHERE Растение.Номер = Растение_Группа_Помещение.Растение AND Группа.Название = Растение_Группа_Помещение.Группа AND Группа.Тип_освещения NOT LIKE '%Светолюбивые' ORDER BY Растение_Группа_Помещение.Растение";

Заполнение таблицы через отправленный запрос-строку

       // объект OleDbCommand для выполнения запроса к БД MS Access

       OleDbCommand command = new OleDbCommand(query, DataBase);

       OleDbDataReader reader = command.ExecuteReader();//для чтения табл результата запроса

       List<string[]> data = new List<string[]>();

       while (reader.Read()){

           data.Add(new string[8]);

           for (int i = 0; i < 8; i++)

               data[data.Count - 1][i] = reader[i].ToString();

       }

       foreach (string[] s in data) tablePlants.Rows.Add(s);

Запрос для поиска в таблице по введённому слову в поле textBox

string query = "SELECT Растение.Номер, Растение.Народное_название, Растение.Общепринятое_название, Растение_Группа_Помещение.Группа, Растение.Время_цветения, Растение.Время_пересадки, Растение.Возраст, Растение_Группа_Помещение.Помещение FROM [Растение], [Растение_Группа_Помещение] WHERE Растение.Номер = Растение_Группа_Помещение.Растение AND Растение.Народное_название LIKE '%"+textBox1.Text+"%'";

Запрос для поиска по таблице по 2 критериям, выбранным в comboBox

if (comboBox3.SelectedItem == "Прихотливы к поливу")

   query = "SELECT Растение.Народное_название, Растение_Группа_Помещение.Группа, Группа.Водный_режим, Растение.Время_цветения FROM [Растение], [Группа], Растение_Группа_Помещение WHERE Растение.Номер = Растение_Группа_Помещение.Растение AND Растение_Группа_Помещение.Группа=Группа.Название AND Группа.Водный_режим LIKE 'Частый полив'";

if (comboBox4.SelectedItem == "Цветение весной")

query += " AND (Растение.Время_цветения LIKE 'Круглогодично' OR Растение.Время_цветения LIKE '%есна%')";

 

Запрос для получения данных о выбранной в comboBox группе растений

string query = "SELECT Растение.Народное_название, Растение_Группа_Помещение.Группа, Группа.Водный_режим, Растение.Время_цветения FROM [Растение], [Группа], [Растение_Группа_Помещение] WHERE Растение.Номер = Растение_Группа_Помещение.Растение AND Растение_Группа_Помещение.Группа = Группа.Название AND Группа.Название LIKE '" + comboBox5.SelectedItem.ToString() + "'";

 

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

string plantGr = tablePlants.Rows[e.RowIndex].Cells[3].Value.ToString();

string query = "SELECT Группа.Водный_режим FROM Группа WHERE Группа.Название LIKE '" + plantGr + "'";

 

Метод для сохранения отчёта о растениях группы из заполненной таблицы

   private void Save2_Click_1(object sender, EventArgs e)

   {

       if (tableWater.Rows.Count == 0 || comboBox5.SelectedItem == null) return;  

       saveFileDialog1.FileName = "Отчёт о растениях группы " + comboBox5.SelectedItem.ToString();

       saveFileDialog1.Filter = "Текстовый файл (*.txt)|*.txt";

       if (saveFileDialog1.ShowDialog() == DialogResult.Cancel) return;

       string fileName = saveFileDialog1.FileName;

       string name, gr;

       string spr = "\t\t\t\t\t Отчёт о растениях группы " + comboBox5.SelectedItem.ToString() + "\r\n\r\n";

       spr += $"Кол-во растений в группе {comboBox5.SelectedItem.ToString()} = {tableWater.RowCount} \r\n\r\n";

spr+="\tНазвание_Растения\t|\tНазвание_группы\t\t|\tВодный_режим\t|\t Время_цветения\t|\r\n"; spr+="_________________________________________________________________________________________________________________\r\n";

       foreach (DataGridViewRow row in tableWater.Rows)

       {

           if (row.Cells[0].Value.ToString().Contains("\t")) name = row.Cells[0].Value.ToString();

           else name = "\t" + row.Cells[0].Value.ToString();

           if (row.Cells[0].Value.ToString().Length < 17) name += "\t";

           if (row.Cells[0].Value.ToString().Length < 9) name += "\t";

           if (row.Cells[1].Value.ToString().Length < 12) gr = row.Cells[1].Value.ToString() + "\t";

           else gr = row.Cells[1].Value.ToString();

                  spr+=$"{name}\t|\t{gr}\t|\t{row.Cells[2].Value.ToString()}\t|\t{row.Cells[3].Value.ToString()}\t\r\n";

        spr += "-----------------------------------------------------------------------------------------------------------------\r\n";

       }

       File.WriteAllText(fileName, spr);          

   }

 



Поделиться:


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

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