Проектирование и разработка БД «Компьютерные курсы»
Заказать уникальную курсовую работу- 40 40 страниц
- 13 + 13 источников
- Добавлена 23.05.2019
- Содержание
- Часть работы
- Список литературы
- Вопросы/Ответы
Введение 3
1 Анализ предметной области 4
1.1 Анализ объекта автоматизации 4
1.2 Обоснование выбора СУБД. Краткая характеристика 6
2 Логическое проектирование базы данных 10
2.1 Построение инфологической модели 10
2.1 Физическое проектирование базы данных 13
3 Построение пользовательского интерфейса 17
3.1 Разработка интерфейсной части приложения 17
3.2 Хранимые процедуры базы данных 20
3.3 Тестирование 22
Заключение 25
Список использованных источников 26
Приложения 28
Приложение А. Код программы 28
Form1.cs 28
Kurs.cs 29
KursAdd.cs 31
Приложение Б. SQL скрипт базы данных 32
Now.Month - 1;txYear.Text = DateTime.Now.Year.ToString(); }privatevoidTxYear_KeyPress(object sender, KeyPressEventArgs e) {if(!char.IsDigit(e.KeyChar) || !char.IsControl(e.KeyChar))e.Handled = true; }privatevoid ToolStripButton3_Click(object sender, EventArgs e) {curseSelTableAdapter.Fill(curseSelDataSet.curseSel, cbMonth.SelectedIndex + 1, int.Parse(txYear.Text)); }privatevoid ToolStripButton2_Click(object sender, EventArgs e) {if (grDate.CurrentRow == null) return;SqlConnectioncn = newSqlConnection(Properties.Settings.Default.teachersConnectionString);SqlCommandcmd = newSqlCommand() { Connection = cn,CommandType = CommandType.StoredProcedure,CommandText = "curseDel" };cmd.Parameters.AddWithValue("@id_gr", (int)grDate.CurrentRow.Cells["idgr"].Value);cmd.Parameters.AddWithValue("@id_gr", (int)grDate.CurrentRow.Cells["idpr"].Value);try {cn.Open();cmd.ExecuteNonQuery(); }catch (Exception ex) {MessageBox.Show(ex.Message);DialogResult = DialogResult.None; }finally {cn.Close(); } }privatevoid ToolStripButton1_Click(object sender, EventArgs e) {fKursAddfrm = newfKursAdd();frm.ShowDialog(this);if (frm.DialogResult == DialogResult.OK)curseSelTableAdapter.Fill(curseSelDataSet.curseSel, cbMonth.SelectedIndex + 1, int.Parse(txYear.Text));} }}KursAdd.csusing System;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;usingSystem.Data.SqlClient;namespace teachers{publicpartialclassfKursAdd : Form {publicfKursAdd() {InitializeComponent(); }privatevoidFKursAdd_Load(object sender, EventArgs e){// TODO: данная строка кода позволяет загрузить данные в таблицу "prepodsDataSet.prepods". При необходимости она может быть перемещена или удалена.this.prepodsTableAdapter.Fill(this.prepodsDataSet.prepods);// TODO: данная строка кода позволяет загрузить данные в таблицу "programsDataSet.programs". При необходимости она может быть перемещена или удалена.this.programsTableAdapter.Fill(this.programsDataSet.programs);// TODO: данная строка кода позволяет загрузить данные в таблицу "groupsDataSet.groups". При необходимости она может быть перемещена или удалена.this.groupsTableAdapter.Fill(this.groupsDataSet.groups);}privatevoid Button1_Click(object sender, EventArgs e) {SqlConnectioncn = newSqlConnection(Properties.Settings.Default.teachersConnectionString);SqlCommandcmd = newSqlCommand() { Connection = cn,CommandType = CommandType.StoredProcedure,CommandText = "curseIns" };cmd.Parameters.AddWithValue("@id_gr", cbGroup.SelectedValue);cmd.Parameters.AddWithValue("@id_pr", cbProg.SelectedValue);cmd.Parameters.AddWithValue("@tabNo", cbPrep.SelectedValue);cmd.Parameters.AddWithValue("@krВBegin", dtBegin.Value);cmd.Parameters.AddWithValue("@krВEnd", dtEnd.Value);try {cn.Open();cmd.ExecuteNonQuery(); }catch (Exception ex) {MessageBox.Show(ex.Message);DialogResult = DialogResult.None; }finally {cn.Close();} } }}Приложение Б. SQLскрипт базы данныхSET DATEFORMAT ymdSET ARITHABORT, ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, NOCOUNT ONSET NUMERIC_ROUNDABORT, IMPLICIT_TRANSACTIONS, XACT_ABORT OFFGOUSE teachersGOIF DB_NAME() <> N'teachers' SET NOEXEC ONGO---- Создатьтаблицу [dbo].[programs]--PRINT (N'Создатьтаблицу [dbo].[programs]')GOCREATE TABLE dbo.programs (id_pr int IDENTITY,prNamevarchar(50) NULL,prCost money NULL, CONSTRAINT PK_programs PRIMARY KEY CLUSTERED (id_pr))ON [PRIMARY]GO---- Создатьтаблицу [dbo].[prepods]--PRINT (N'Создатьтаблицу [dbo].[prepods]')GOCREATE TABLE dbo.prepods (tabNo int IDENTITY,prFiovarchar(50) NULL, CONSTRAINT PK_prepods PRIMARY KEY CLUSTERED (tabNo))ON [PRIMARY]GO---- Создатьтаблицу [dbo].[groups]--PRINT (N'Создатьтаблицу [dbo].[groups]')GOCREATE TABLE dbo.groups (id_gr int IDENTITY,grNamevarchar(50) NULL,grDate date NULL, CONSTRAINT PK_groups PRIMARY KEY CLUSTERED (id_gr))ON [PRIMARY]GO---- Создатьтаблицу [dbo].[client]--PRINT (N'Создатьтаблицу [dbo].[client]')GOCREATE TABLE dbo.client (id_kl int IDENTITY,klFiovarchar(50) NULL,klPasspvarchar(20) NULL,klPhonevarchar(20) NULL,klAdresvarchar(150) NULL, CONSTRAINT PK_client PRIMARY KEY CLUSTERED (id_kl))ON [PRIMARY]GO---- Создатьтаблицу [dbo].[sostav]--PRINT (N'Создатьтаблицу [dbo].[sostav]')GOCREATE TABLE dbo.sostav (id_kl int NOT NULL,id_gr int NOT NULL,stBall int NULL, CONSTRAINT PK_sostav PRIMARY KEY CLUSTERED (id_kl, id_gr))ON [PRIMARY]GO---- Создатьиндекс [IX_Relationship1] дляобъектатипатаблица [dbo].[sostav]--PRINT (N'Создатьиндекс [IX_Relationship1] дляобъектатипатаблица [dbo].[sostav]')GOCREATE INDEX IX_Relationship1 ON dbo.sostav (id_kl) ON [PRIMARY]GO---- Создатьиндекс [IX_Relationship2] дляобъектатипатаблица [dbo].[sostav]--PRINT (N'Создатьиндекс [IX_Relationship2] дляобъектатипатаблица [dbo].[sostav]')GOCREATE INDEX IX_Relationship2 ON dbo.sostav (id_gr) ON [PRIMARY]GOSET QUOTED_IDENTIFIER, ANSI_NULLS ONGO---- Создать процедуру [dbo].[sostavUpd]--GOPRINT (N'Создатьпроцедуру [dbo].[sostavUpd]')GOCREATE OR ALTER PROCEDURE dbo.sostavUpd @id_kl INT, @id_gr INT, @stBall INTAS UPDATE sostav SETstBall = @stBall WHERE id_kl = @id_kl AND id_gr = @id_gr;GO---- Создать процедуру [dbo].[sostavSel]--GOPRINT (N'Создатьпроцедуру [dbo].[sostavSel]')GOCREATE OR ALTER PROCEDURE dbo.sostavSel @id_gr INTAS SELECTsostav.id_kl,client.klFio,sostav.id_gr,groups.grName,groups.grDate,sostav.stBall FROM dbo.sostav INNER JOIN dbo.groups ON sostav.id_gr = groups.id_gr INNER JOIN dbo.client ON sostav.id_kl = client.id_kl WHERE groups.id_gr = @id_gr;GO---- Создать процедуру [dbo].[sostavIns]--GOPRINT (N'Создатьпроцедуру [dbo].[sostavIns]')GOCREATE OR ALTER PROCEDURE dbo.sostavIns @id_kl INT, @id_gr INTAS INSERT INTO sostav (id_kl, id_gr, stBall) VALUES (@id_kl, @id_gr, 0);GO---- Создать процедуру [dbo].[sostavDel]--GOPRINT (N'Создатьпроцедуру [dbo].[sostavDel]')GOCREATE OR ALTER PROCEDURE dbo.sostavDel @id_kl INT, @id_gr INTAS DELETE FROM sostav WHERE id_kl = @id_kl AND id_gr = @id_gr;GO---- Создать таблицу [dbo].[curse]--PRINT (N'Создатьтаблицу [dbo].[curse]')GOCREATE TABLE dbo.curse (id_gr int NOT NULL,id_pr int NOT NULL,tabNo int NOT NULL,krВBegin date NULL,krВEnd date NULL, CONSTRAINT PK_curse PRIMARY KEY CLUSTERED (id_gr, id_pr))ON [PRIMARY]GO---- Создатьиндекс [IX_Relationship3] дляобъектатипатаблица [dbo].[curse]--PRINT (N'Создатьиндекс [IX_Relationship3] дляобъектатипатаблица [dbo].[curse]')GOCREATE INDEX IX_Relationship3 ON dbo.curse (id_gr) ON [PRIMARY]GO---- Создатьиндекс [IX_Relationship4] дляобъектатипатаблица [dbo].[curse]--PRINT (N'Создатьиндекс [IX_Relationship4] дляобъектатипатаблица [dbo].[curse]')GOCREATE INDEX IX_Relationship4 ON dbo.curse (id_pr) ON [PRIMARY]GO---- Создатьиндекс [IX_Relationship5] дляобъектатипатаблица [dbo].[curse]--PRINT (N'Создатьиндекс [IX_Relationship5] дляобъектатипатаблица [dbo].[curse]')GOCREATE INDEX IX_Relationship5 ON dbo.curse (tabNo) ON [PRIMARY]GO---- Создатьпроцедуру [dbo].[curseSel]--GOPRINT (N'Создатьпроцедуру [dbo].[curseSel]')GOCREATE OR ALTER PROCEDURE dbo.curseSel @pMonth INT, @pYear INTAS SELECTcurse.id_gr,curse.id_pr,curse.tabNo,curse.krВBegin,curse.krВEnd,prepods.prFio,groups.grName,programs.prName,programs.prCost FROM dbo.curse INNER JOIN dbo.groups ON curse.id_gr = groups.id_gr INNER JOIN dbo.prepods ON curse.tabNo = prepods.tabNo INNER JOIN dbo.programs ON curse.id_pr = programs.id_pr WHERE DATEPART(YEAR, krВBegin) = @pYear AND DATEPART(MONTH, krВBegin) = @pMonth;GO---- Создать процедуру [dbo].[curseIns]--GOPRINT (N'Создатьпроцедуру [dbo].[curseIns]')GOCREATE OR ALTER PROCEDURE dbo.curseIns @id_gr INT, @id_pr INT, @tabNo INT, @krВBegin DATE, @krВEnd DATEAS INSERT INTO curse (id_gr, id_pr, tabNo, krВBegin, krВEnd) VALUES (@id_gr, @id_pr, @tabNo, @krВBegin, @krВEnd);GO---- Создать процедуру [dbo].[curseDel]--GOPRINT (N'Создатьпроцедуру [dbo].[curseDel]')GOCREATE OR ALTER PROCEDURE dbo.curseDel @id_gr INT, @id_pr INT AS DELETE FROM curse WHERE id_gr = @id_gr ANDid_pr = @id_prGOUSE teachersGOIF DB_NAME() <> N'teachers' SET NOEXEC ONGO---- Создать внешний ключ [Relationship1] для объекта типа таблица [dbo].[sostav]--PRINT (N'Создать внешний ключ [Relationship1] для объекта типа таблица [dbo].[sostav]')GOALTER TABLE dbo.sostav ADD CONSTRAINT Relationship1 FOREIGN KEY (id_kl) REFERENCES dbo.client (id_kl)GO---- Создать внешний ключ [Relationship2] для объекта типа таблица [dbo].[sostav]--PRINT (N'Создать внешний ключ [Relationship2] для объекта типа таблица [dbo].[sostav]')GOALTER TABLE dbo.sostav ADD CONSTRAINT Relationship2 FOREIGN KEY (id_gr) REFERENCES dbo.groups (id_gr)GO---- Создать внешний ключ [Relationship3] для объекта типа таблица [dbo].[curse]--PRINT (N'Создать внешний ключ [Relationship3] для объекта типа таблица [dbo].[curse]')GOALTER TABLE dbo.curse ADD CONSTRAINT Relationship3 FOREIGN KEY (id_gr) REFERENCES dbo.groups (id_gr)GO---- Создать внешний ключ [Relationship4] для объекта типа таблица [dbo].[curse]--PRINT (N'Создать внешний ключ [Relationship4] для объекта типа таблица [dbo].[curse]')GOALTER TABLE dbo.curse ADD CONSTRAINT Relationship4 FOREIGN KEY (id_pr) REFERENCES dbo.programs (id_pr)GO---- Создать внешний ключ [Relationship5] для объекта типа таблица [dbo].[curse]--PRINT (N'Создать внешний ключ [Relationship5] для объекта типа таблица [dbo].[curse]')GOALTER TABLE dbo.curse ADD CONSTRAINT Relationship5 FOREIGN KEY (tabNo) REFERENCES dbo.prepods (tabNo)GOSET NOEXEC OFFGO
2. C# 5.0 и платформа .NET 4.5 для профессионалов [Текст] / Кристиан Нейгел [и др.]. - Москва: Диалектика, 2014. - 1435 с. ISBN 978-5-8459-1850-5
3. C# [Текст] / Борис Пахомов. - Санкт-Петербург: БХВ-Петербург, 2014. - 431 с. ISBN 978-5-9775-0943-5
4. Искусство автономного тестирования с примерами на C# [Текст] / Р. Ошероув. Москва: ДМК Пресс, 2014. - 360 с. ISBN 978-5-94074-945-5
5. Microsoft Visual C# [Текст]: подробное руководство / Джон Шарп. - 8-е изд. - Санкт-Петербург: Питер, 2017. - 846 с. ISBN 978-5-496-02372-6
6. C# 6.0. Справочник [Текст]: полное описание языка / Джозеф Албахари и Бен Албахари. - 6-е изд. Рассматриваются CLR 4.6 и компилятор Roslyn. - Москва: Вильямс, 2016. - 1039 с. ISBN 978-5-8459-2087-4
7. C# 5.0 и платформа .NET 4.5 для профессионалов [Текст] / Кристиан Нейгел. - Москва: Диалектика, 2014. - 1435 с. ISBN 978-5-8459-1850-5
8. Как программировать на Visual C# 2012 [Текст] : включая работу в Windows 7 и Windows 8 / Пол Дейтел, Харви Дейтел. - 5-е изд. - Москва: Питер, 2014. - 857 с. ISBN 978-5-496-00897-6
9. Базы данных: теория и практика: Учебник для бакалавров / Б.Я. Советов, В.В. Цехановский, В.Д. Чертовской. - М.: Юрайт, 2013. - 463 c.
10. Проектирование серверной инфраструктуры баз данных Microsoft SQL Server 2005. Учебный курс Microsoft. Дж. Макин, М.Хотек. Русская редакция. 2008.
11. Базы данных: проектирование, реализация, сопровождение. Теория и практика./ Т. Коннолли. М.: Изд. дом «Вильямс», 2014.
12. Microsoft SQL Server 2012 / Д. Петкович, С-т Петербург: БХВ-Петербург, 2013.
13. Информационные системы и базы данных: организация и проектирование: Учебное пособие / В.Ю. Пирогов. - СПб.: БХВ-Петербург, 2009. - 528 c.
Вопрос-ответ:
Какой процесс включает в себя проектирование и разработка базы данных для компьютерных курсов?
Процесс проектирования и разработки базы данных для компьютерных курсов включает в себя анализ предметной области, анализ объекта автоматизации, обоснование выбора СУБД, логическое проектирование базы данных, построение инфологической модели, физическое проектирование базы данных, построение пользовательского интерфейса, разработку интерфейсной части приложения, создание хранимых процедур базы данных, тестирование и составление списка использованных источников.
Какое значение имеет анализ предметной области при проектировании и разработке базы данных для компьютерных курсов?
Анализ предметной области при проектировании и разработке базы данных для компьютерных курсов позволяет понять основные потребности и требования пользователей, определить сущности и связи между ними, а также выявить основные процессы и операции, которые будут выполняться в системе.
Как происходит выбор СУБД при разработке базы данных для компьютерных курсов?
Выбор СУБД при разработке базы данных для компьютерных курсов осуществляется на основе анализа требований к системе, объема данных, доступных ресурсов, требований к производительности и надежности, а также опыта и предпочтений разработчиков. При выборе СУБД также учитывается поддержка необходимых функций и возможностей для работы с базой данных.
Как осуществляется логическое проектирование базы данных для компьютерных курсов?
Логическое проектирование базы данных для компьютерных курсов осуществляется путем построения инфологической модели, которая включает в себя определение сущностей, атрибутов и связей между ними. В процессе логического проектирования определяются ключевые элементы базы данных, такие как таблицы, поля, индексы и ограничения, которые позволяют хранить и организовывать данные в системе.
Как проектирование пользовательского интерфейса связано с разработкой базы данных для компьютерных курсов?
Проектирование пользовательского интерфейса связано с разработкой базы данных для компьютерных курсов, так как пользовательский интерфейс предоставляет пользователям доступ к данным, хранящимся в базе данных. В процессе проектирования пользовательского интерфейса определяются элементы управления, формат отображения данных и функциональность системы, которая будет доступна пользователям при работе с базой данных.
Какая задача решается при проектировании и разработке БД "Компьютерные курсы"?
При проектировании и разработке БД "Компьютерные курсы" решается задача организации хранения и управления информацией о компьютерных курсах, их содержании, учениках, преподавателях и других связанных сущностях.
Как происходит анализ предметной области при разработке базы данных?
Анализ предметной области при разработке базы данных включает в себя изучение бизнес-процессов, идентификацию основных сущностей и их атрибутов, а также определение связей между сущностями. В результате анализа формируется представление о структуре данных и их взаимосвязях в предметной области.
Какими функциями должна обладать выбранная СУБД для базы данных "Компьютерные курсы"?
Выбранная СУБД для базы данных "Компьютерные курсы" должна обладать следующими функциями: хранение и управление данными, поддержка транзакций и многопользовательского доступа, возможность использования хранимых процедур, обеспечение безопасности и резервного копирования данных.