БД «Личные данные о студентах». КурсовойПроект Левашов В.Б. ИВТз-171. Программное приложение с базой данных Личные данные о студентах
Скачать 1.16 Mb.
|
ЗаключениеВ данном курсовом проекте были решены все поставленные задачи: Создать базу данных “Личные данные о студентах”; Реализовать таблицы “Факультеты”, “Группы”, “Информация_о_студенте”; Произвести заполнение полей таблиц; Реализовать программу для работы с БД SQL Server Для программы создать две функции: выборки и работа со строками. На данный момент проект не является совершенным. Остаётся множество перспектив для совершенствования: создание пользователей с разными полномочиями, возможность сохранять таблицы в виде файлов с различными форматами (.docx или .xlsx), улучшение существующих алгоритмов. Тем не менее программа соответствует всем указанным требованиям, в следствие чего курсовой проект можно считать успешно завершённым. Список литературыБраст, Э.Дж. Разработка приложений на основе Microsoft SQL Server 2008 / Э.Дж. Браст. - М.: Русская Редакция, 2010. - 751 c. Аллен, Г. Тейлор SQL для чайников / Аллен Г. Тейлор. - М.: Диалектика, Вильямс, 2012. - 416 c. Жилинский, А. Самоучитель Microsoft SQL Server 2005 / А. Жилинский. - М.: БХВ-Петербург, 2007. - 224 c. Стиллмен Э., Грин Дж. Изучаем C# (Head First). Э. Стиллмен, Дж. Грин. – М.: БХВ-Петербург, 2013. – 816 с. Шарп Дж. Microsoft Visual C#. Подробное руководство. 8-е изд / Дж. Шарп. – М.: Питер, 2017. – 848 с. ПРИЛОЖЕНИЕ A Главная форма приложения using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace CourseProjectStudents { public partial class FormMain : Form { public FormMain() { InitializeComponent(); } private void выходИзПрограммыToolStripMenuItem_Click(object sender, EventArgs e) { this.Close(); } private void таблицаФакультетыToolStripMenuItem_Click(object sender, EventArgs e) { FormFaculties formFaculties = new FormFaculties(); formFaculties.Show(); } private void таблицаГруппыToolStripMenuItem_Click(object sender, EventArgs e) { FormGroups formGroups = new FormGroups(); formGroups.Show(); } private void таблицаИнформацияОСтудентахToolStripMenuItem_Click(object sender, EventArgs e) { FormStudents formStudents = new FormStudents(); formStudents.Show(); } private void запросыToolStripMenuItem_Click(object sender, EventArgs e) { FormRequests formRequests = new FormRequests(); formRequests.Show(); } } } ПРИЛОЖЕНИЕ B Форма для таблицы “Факультеты” using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace CourseProjectStudents { public partial class FormFaculties : Form { public FormFaculties() { InitializeComponent(); } private SqlConnection sqlConnection = null; private SqlDataAdapter sqlDataAdapter = null; private SqlCommandBuilder sqlBuilder = null; private DataSet dataSet = null; private bool newRowAdding = false; private void LoadData() { try { sqlDataAdapter = new SqlDataAdapter("SELECT *, 'Delete' AS [Действие] FROM [Факультеты]", sqlConnection); sqlBuilder = new SqlCommandBuilder(sqlDataAdapter); sqlBuilder.GetInsertCommand(); sqlBuilder.GetUpdateCommand(); sqlBuilder.GetDeleteCommand(); dataSet = new DataSet(); sqlDataAdapter.Fill(dataSet, "Факультеты"); dataGridView1.DataSource = dataSet.Tables["Факультеты"]; for (int i = 0; i < dataGridView1.Rows.Count; i++) { DataGridViewLinkCell linkCell = new DataGridViewLinkCell(); dataGridView1[3, i] = linkCell; } dataGridView1.Columns[1].Width = 130; dataGridView1.Columns[2].Width = 160; dataGridView1.Columns[3].Width = 65; } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void ReloadData() { try { dataSet.Tables["Факультеты"].Clear(); sqlDataAdapter.Fill(dataSet, "Факультеты"); dataGridView1.DataSource = dataSet.Tables["Факультеты"]; for (int i = 0; i < dataGridView1.Rows.Count; i++) { DataGridViewLinkCell linkCell = new DataGridViewLinkCell(); dataGridView1[3, i] = linkCell; } } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void FormFaculties_Load(object sender, EventArgs e) { sqlConnection = new SqlConnection(@"Data Source = (LocalDB)\MSSQLLocalDB; Initial Catalog = CourseProjectStudents1; Persist Security Info=true;User ID=adminka;Password=123456"); sqlConnection.Open(); LoadData(); } private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { try { if (e.ColumnIndex == 3) { string task = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString(); if (task == "Delete") { if (MessageBox.Show("Удалить эту строку?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { int rowIndex = e.RowIndex; dataGridView1.Rows.RemoveAt(rowIndex); dataSet.Tables["Факультеты"].Rows[rowIndex].Delete(); sqlDataAdapter.Update(dataSet, "Факультеты"); } } else if (task == "Insert") { int rowIndex = dataGridView1.Rows.Count - 2; DataRow row = dataSet.Tables["Факультеты"].NewRow(); row["Код_факультета"] = dataGridView1.Rows[rowIndex].Cells["Наименование"].Value; row["Название_факультета"] = dataGridView1.Rows[rowIndex].Cells["Название_факультета"].Value; row["Число_мест_на_факультете"] = dataGridView1.Rows[rowIndex].Cells["Число_мест_на_факультете"].Value; dataSet.Tables["Факультеты"].Rows.Add(row); dataSet.Tables["Факультеты"].Rows.RemoveAt(dataSet.Tables["Факультеты"].Rows.Count - 1); dataGridView1.Rows.RemoveAt(dataGridView1.Rows.Count - 2); dataGridView1.Rows[e.RowIndex].Cells[3].Value = "Delete"; sqlDataAdapter.Update(dataSet, "Факультеты"); newRowAdding = false; } else if (task == "Update") { int r = e.RowIndex; dataSet.Tables["Факультеты"].Rows[r]["Код_факультета"] = dataGridView1.Rows[r].Cells["Код_факультета"].Value; dataSet.Tables["Факультеты"].Rows[r]["Название_факультета"] = dataGridView1.Rows[r].Cells["Название_факультета"].Value; dataSet.Tables["Факультеты"].Rows[r]["Число_мест_на_факультете"] = dataGridView1.Rows[r].Cells["Число_мест_на_факультете"].Value; sqlDataAdapter.Update(dataSet, "Факультеты"); dataGridView1.Rows[e.RowIndex].Cells[3].Value = "Delete"; } ReloadData(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void dataGridView1_UserAddedRow(object sender, DataGridViewRowEventArgs e) { try { if (newRowAdding == false) { newRowAdding = true; int lastRow = dataGridView1.Rows.Count - 2; DataGridViewRow row = dataGridView1.Rows[lastRow]; DataGridViewLinkCell linkCell = new DataGridViewLinkCell(); dataGridView1[3, lastRow] = linkCell; row.Cells["Действие"].Value = "Insert"; } } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) { try { if (newRowAdding == false) { int rowIndex = dataGridView1.SelectedCells[0].RowIndex; DataGridViewRow editingRow = dataGridView1.Rows[rowIndex]; DataGridViewLinkCell linkCell = new DataGridViewLinkCell(); dataGridView1[3, rowIndex] = linkCell; editingRow.Cells["Действие"].Value = "Update"; } } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void Column_KeyPress(object sender, KeyPressEventArgs e) { if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)) { e.Handled = true; } } private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { e.Control.KeyPress -= new KeyPressEventHandler(Column_KeyPress); //валидируем ячейку if (dataGridView1.CurrentCell.ColumnIndex == 2) { TextBox textBox = e.Control as TextBox; if (textBox != null) { textBox.KeyPress += new KeyPressEventHandler(Column_KeyPress); } } } private void toolStripButton1_Click(object sender, EventArgs e) { ReloadData(); } } } ПРИЛОЖЕНИЕ C Форма для таблицы “Группы” using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace CourseProjectStudents { public partial class FormGroups : Form { public FormGroups() { InitializeComponent(); } private SqlConnection sqlConnection = null; private SqlDataAdapter sqlDataAdapter = null; private SqlCommandBuilder sqlBuilder = null; private DataSet dataSet = null; private bool newRowAdding = false; private void LoadData() { try { sqlDataAdapter = new SqlDataAdapter("SELECT *, 'Delete' AS [Действие] FROM [Группы]", sqlConnection); sqlBuilder = new SqlCommandBuilder(sqlDataAdapter); sqlBuilder.GetInsertCommand(); sqlBuilder.GetUpdateCommand(); sqlBuilder.GetDeleteCommand(); dataSet = new DataSet(); sqlDataAdapter.Fill(dataSet, "Группы"); dataGridView1.DataSource = dataSet.Tables["Группы"]; for (int i = 0; i < dataGridView1.Rows.Count; i++) { DataGridViewLinkCell linkCell = new DataGridViewLinkCell(); dataGridView1[3, i] = linkCell; } dataGridView1.Columns[0].Width = 90; dataGridView1.Columns[1].Width = 70; //dataGridView1.Columns[1].HeaderText = "Сумма стипендии"; } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void ReloadData() { try { dataSet.Tables["Группы"].Clear(); sqlDataAdapter.Fill(dataSet, "Группы"); dataGridView1.DataSource = dataSet.Tables["Группы"]; for (int i = 0; i < dataGridView1.Rows.Count; i++) { DataGridViewLinkCell linkCell = new DataGridViewLinkCell(); dataGridView1[3, i] = linkCell; } } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void FormGroups_Load(object sender, EventArgs e) { sqlConnection = new SqlConnection(@"Data Source = (LocalDB)\MSSQLLocalDB; Initial Catalog = CourseProjectStudents1; Persist Security Info=true;User ID=adminka;Password=123456"); sqlConnection.Open(); LoadData(); } private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { try { if (e.ColumnIndex == 3) { string task = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString(); if (task == "Delete") { if (MessageBox.Show("Удалить эту строку?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { int rowIndex = e.RowIndex; dataGridView1.Rows.RemoveAt(rowIndex); dataSet.Tables["Группы"].Rows[rowIndex].Delete(); sqlDataAdapter.Update(dataSet, "Группы"); } } else if (task == "Insert") { int rowIndex = dataGridView1.Rows.Count - 2; DataRow row = dataSet.Tables["Группы"].NewRow(); row["Номер_группы"] = dataGridView1.Rows[rowIndex].Cells["Номер_группы"].Value; row["Сумма_стипендии_студента"] = dataGridView1.Rows[rowIndex].Cells["Сумма_стипендии_студента"].Value; row["Год_зачисления"] = dataGridView1.Rows[rowIndex].Cells["Год_зачисления"].Value; dataSet.Tables["Группы"].Rows.Add(row); dataSet.Tables["Группы"].Rows.RemoveAt(dataSet.Tables["Группы"].Rows.Count - 1); dataGridView1.Rows.RemoveAt(dataGridView1.Rows.Count - 2); dataGridView1.Rows[e.RowIndex].Cells[4].Value = "Delete"; sqlDataAdapter.Update(dataSet, "Группы"); newRowAdding = false; } else if (task == "Update") { int r = e.RowIndex; dataSet.Tables["Группы"].Rows[r]["Номер_группы"] = dataGridView1.Rows[r].Cells["Номер_группы"].Value; dataSet.Tables["Группы"].Rows[r]["Сумма_стипендии_студента"] = dataGridView1.Rows[r].Cells["Сумма_стипендии_студента"].Value; dataSet.Tables["Группы"].Rows[r]["Год_зачисления"] = dataGridView1.Rows[r].Cells["Год_зачисления"].Value; sqlDataAdapter.Update(dataSet, "Группы"); dataGridView1.Rows[e.RowIndex].Cells[3].Value = "Delete"; } ReloadData(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void dataGridView1_UserAddedRow(object sender, DataGridViewRowEventArgs e) { try { if (newRowAdding == false) { newRowAdding = true; int lastRow = dataGridView1.Rows.Count - 2; DataGridViewRow row = dataGridView1.Rows[lastRow]; DataGridViewLinkCell linkCell = new DataGridViewLinkCell(); dataGridView1[3, lastRow] = linkCell; row.Cells["Действие"].Value = "Insert"; } } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) { try { if (newRowAdding == false) { int rowIndex = dataGridView1.SelectedCells[0].RowIndex; DataGridViewRow editingRow = dataGridView1.Rows[rowIndex]; DataGridViewLinkCell linkCell = new DataGridViewLinkCell(); dataGridView1[3, rowIndex] = linkCell; editingRow.Cells["Действие"].Value = "Update"; } } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void Column_KeyPress(object sender, KeyPressEventArgs e) { if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)) { e.Handled = true; } } private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { e.Control.KeyPress -= new KeyPressEventHandler(Column_KeyPress); //валидируем ячейку if (dataGridView1.CurrentCell.ColumnIndex == 2) { TextBox textBox = e.Control as TextBox; if (textBox != null) { textBox.KeyPress += new KeyPressEventHandler(Column_KeyPress); } } } private void toolStripButton1_Click(object sender, EventArgs e) { ReloadData(); } } } ПРИЛОЖЕНИЕ D Форма для таблицы “Информация_о_студенте” using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace CourseProjectStudents { public partial class FormStudents : Form { public FormStudents() { InitializeComponent(); } private SqlConnection sqlConnection = null; private SqlDataAdapter sqlDataAdapter = null; private SqlCommandBuilder sqlBuilder = null; private DataSet dataSet = null; private bool newRowAdding = false; private void LoadData() { try { sqlDataAdapter = new SqlDataAdapter("SELECT *, 'Delete' AS [Действие] FROM [Информация_о_студенте]", sqlConnection); sqlBuilder = new SqlCommandBuilder(sqlDataAdapter); sqlBuilder.GetInsertCommand(); sqlBuilder.GetUpdateCommand(); sqlBuilder.GetDeleteCommand(); dataSet = new DataSet(); sqlDataAdapter.Fill(dataSet, "Информация_о_студенте"); dataGridView1.DataSource = dataSet.Tables["Информация_о_студенте"]; for (int i = 0; i < dataGridView1.Rows.Count; i++) { DataGridViewLinkCell linkCell = new DataGridViewLinkCell(); dataGridView1[9, i] = linkCell; } dataGridView1.Columns[0].Width = 25; dataGridView1.Columns[3].Width = 40; dataGridView1.Columns[7].Width = 165; dataGridView1.Columns[8].Width = 165; dataGridView1.Columns[9].Width = 65; } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void ReloadData() { try { dataSet.Tables["Информация_о_студенте"].Clear(); sqlDataAdapter.Fill(dataSet, "Информация_о_студенте"); dataGridView1.DataSource = dataSet.Tables["Информация_о_студенте"]; for (int i = 0; i < dataGridView1.Rows.Count; i++) { DataGridViewLinkCell linkCell = new DataGridViewLinkCell(); dataGridView1[9, i] = linkCell; } } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void FormStudents_Load(object sender, EventArgs e) { sqlConnection = new SqlConnection(@"Data Source = (LocalDB)\MSSQLLocalDB; Initial Catalog = CourseProjectStudents1; Persist Security Info=true;User ID=adminka;Password=123456"); sqlConnection.Open(); LoadData(); } private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { try { if (e.ColumnIndex == 9) { string task = dataGridView1.Rows[e.RowIndex].Cells[9].Value.ToString(); if (task == "Delete") { if (MessageBox.Show("Удалить эту строку?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { int rowIndex = e.RowIndex; dataGridView1.Rows.RemoveAt(rowIndex); dataSet.Tables["Информация_о_студенте"].Rows[rowIndex].Delete(); sqlDataAdapter.Update(dataSet, "Информация_о_студенте"); } } else if (task == "Insert") { int rowIndex = dataGridView1.Rows.Count - 2; DataRow row = dataSet.Tables["Информация_о_студенте"].NewRow(); row["ID"] = dataGridView1.Rows[rowIndex].Cells["ID"].Value; row["ФИО_студента"] = dataGridView1.Rows[rowIndex].Cells["ФИО_студента"].Value; row["Дата_рождения"] = dataGridView1.Rows[rowIndex].Cells["Дата_рождения"].Value; row["Курс"] = dataGridView1.Rows[rowIndex].Cells["Курс"].Value; row["Факультет"] = dataGridView1.Rows[rowIndex].Cells["Факультет"].Value; row["Группы"] = dataGridView1.Rows[rowIndex].Cells["Группы"].Value; row["Специальность"] = dataGridView1.Rows[rowIndex].Cells["Специальность"].Value; row["Семейное положение"] = dataGridView1.Rows[rowIndex].Cells["Семейное_положение"].Value; row["Сведения_о_семье"] = dataGridView1.Rows[rowIndex].Cells["Сведения_о_семье"].Value; dataSet.Tables["Информация_о_студенте"].Rows.Add(row); dataSet.Tables["Информация_о_студенте"].Rows.RemoveAt(dataSet.Tables["Информация_о_студенте"].Rows.Count - 1); dataGridView1.Rows.RemoveAt(dataGridView1.Rows.Count - 2); dataGridView1.Rows[e.RowIndex].Cells[9].Value = "Delete"; sqlDataAdapter.Update(dataSet, "Информация_о_студенте"); newRowAdding = false; } else if (task == "Update") { int r = e.RowIndex; dataSet.Tables["Информация_о_студенте"].Rows[r]["ID"] = dataGridView1.Rows[r].Cells["ID"].Value; dataSet.Tables["Информация_о_студенте"].Rows[r]["ФИО_студента"] = dataGridView1.Rows[r].Cells["ФИО_студента"].Value; dataSet.Tables["Информация_о_студенте"].Rows[r]["Дата_рождения"] = dataGridView1.Rows[r].Cells["Дата_рождения"].Value; dataSet.Tables["Информация_о_студенте"].Rows[r]["Курс"] = dataGridView1.Rows[r].Cells["Курс"].Value; dataSet.Tables["Информация_о_студенте"].Rows[r]["Факультет"] = dataGridView1.Rows[r].Cells["Факультет"].Value; dataSet.Tables["Информация_о_студенте"].Rows[r]["Группы"] = dataGridView1.Rows[r].Cells["Группы"].Value; dataSet.Tables["Информация_о_студенте"].Rows[r]["Специальность"] = dataGridView1.Rows[r].Cells["Специальность"].Value; dataSet.Tables["Информация_о_студенте"].Rows[r]["Семейное_положение"] = dataGridView1.Rows[r].Cells["Семейное_положение"].Value; dataSet.Tables["Информация_о_студенте"].Rows[r]["Сведения_о_семье"] = dataGridView1.Rows[r].Cells["Сведения_о_семье"].Value; sqlDataAdapter.Update(dataSet, "Информация_о_студенте"); dataGridView1.Rows[e.RowIndex].Cells[9].Value = "Delete"; } ReloadData(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void dataGridView1_UserAddedRow(object sender, DataGridViewRowEventArgs e) { try { if (newRowAdding == false) { newRowAdding = true; int lastRow = dataGridView1.Rows.Count - 2; DataGridViewRow row = dataGridView1.Rows[lastRow]; DataGridViewLinkCell linkCell = new DataGridViewLinkCell(); dataGridView1[9, lastRow] = linkCell; row.Cells["Действие"].Value = "Insert"; } } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) { try { if (newRowAdding == false) { int rowIndex = dataGridView1.SelectedCells[0].RowIndex; DataGridViewRow editingRow = dataGridView1.Rows[rowIndex]; DataGridViewLinkCell linkCell = new DataGridViewLinkCell(); dataGridView1[9, rowIndex] = linkCell; editingRow.Cells["Действие"].Value = "Update"; } } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void Column_KeyPress(object sender, KeyPressEventArgs e) //проверка нажатия { if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)) { e.Handled = true; } } private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { e.Control.KeyPress -= new KeyPressEventHandler(Column_KeyPress); //валидируем ячейку if (dataGridView1.CurrentCell.ColumnIndex == 2) { TextBox textBox = e.Control as TextBox; if (textBox != null) { textBox.KeyPress += new KeyPressEventHandler(Column_KeyPress); } } } private void toolStripButton1_Click(object sender, EventArgs e) { ReloadData(); } } } |