p align="left"> InitializeComponent(); } Зміні необхідні для вибірки даних: public static string strkl = "klasu.klas", strpredm = "predmetu.nazva", stridznazva = "idznazva.nazva"; Заповнення усіх об'єктів на формі даними: zhusl.combSel(combklasu, "SELECT klas, fkklasu, rikpost FROM klasu ORDER BY rikpost", false); zhusl.combSel(combpredm, "SELECT nazva FROM predmetu ORDER BY nazva", true); zhusl.combSel(combidz, "SELECT nazva FROM idznazva ORDER BY nazva", true); combpredm.SelectedIndex = 0; //combklasu.SelectedIndex = 11; // combimya.SelectedIndex = 0; //FormLoad zhusl.MainSel(dataGridView1, "SELECT idz.fkidz AS [FKIDZ], idz.idzfksem AS [FKSEMIDZ], idz.idzfkpre, idz.nazva AS idznazva, klasu.fkklasu, uchni.fkuchni, klasu.klas AS [Клас], uchni.prizv AS [Прізвище], uchni.imya AS [Ім'я], uchni.pobat AS [Побатькові], idznazva.nazva AS [Назва ІДЗ], idz.ocinka AS [Оцінка], predmetu.nazva AS [Предмет] FROM (predmetu INNER JOIN (((uchni INNER JOIN semestru ON uchni.fkuchni = semestru.semfkuchen) INNER JOIN klasu ON uchni.fkklasu = klasu.fkklasu) INNER JOIN(idz INNER JOIN idznazva ON idz.nazva = idznazva.fkidznazva) ON semestru.fksem = idz.idzfksem) ON predmetu.fkpredm = idz.idzfkpre) WHERE (klasu.klas = " + strkl + " AND predmetu.nazva = " + strpredm + " AND idznazva.nazva = " + stridznazva + ") ORDER BY uchni.prizv"); zhusl.VisiF(dataGridView1, 5); Вибірка за предметами: if (combpredm.SelectedItem.ToString() == "*") strpredm = "predmetu.nazva"; else strpredm = "'" + combpredm.SelectedItem.ToString() + "'"; zhusl.MainSel(dataGridView1, "SELECT idz.fkidz AS [FKIDZ], idz.idzfksem AS [FKSEMIDZ], idz.idzfkpre, idz.nazva AS idznazva, klasu.fkklasu, uchni.fkuchni, klasu.klas AS [Клас], uchni.prizv AS [Прізвище], uchni.imya AS [Ім'я], uchni.pobat AS [Побатькові], idznazva.nazva AS [Назва ІДЗ], idz.ocinka AS [Оцінка], predmetu.nazva AS [Предмет] FROM (predmetu INNER JOIN (((uchni INNER JOIN semestru ON uchni.fkuchni = semestru.semfkuchen) INNER JOIN klasu ON uchni.fkklasu = klasu.fkklasu) INNER JOIN(idz INNER JOIN idznazva ON idz.nazva = idznazva.fkidznazva) ON semestru.fksem = idz.idzfksem) ON predmetu.fkpredm = idz.idzfkpre) WHERE (klasu.klas = " + strkl + " AND predmetu.nazva = " + strpredm + " AND idznazva.nazva = " + stridznazva + ") ORDER BY uchni.prizv"); zhusl.VisiF(dataGridView1, 5); Вибірка за класами: if (combklasu.SelectedItem.ToString() == "*") strkl = "klasu.klas"; else strkl = "'" +combklasu.SelectedItem.ToString()+"'"; zhusl.MainSel(dataGridView1, "SELECT idz.fkidz AS [FKIDZ], idz.idzfksem AS [FKSEMIDZ], idz.idzfkpre, idz.nazva AS idznazva, klasu.fkklasu, uchni.fkuchni, klasu.klas AS [Клас], uchni.prizv AS [Прізвище], uchni.imya AS [Ім'я], uchni.pobat AS [Побатькові], idznazva.nazva AS [Назва ІДЗ], idz.ocinka AS [Оцінка], predmetu.nazva AS [Предмет] FROM (predmetu INNER JOIN (((uchni INNER JOIN semestru ON uchni.fkuchni = semestru.semfkuchen) INNER JOIN klasu ON uchni.fkklasu = klasu.fkklasu) INNER JOIN(idz INNER JOIN idznazva ON idz.nazva = idznazva.fkidznazva) ON semestru.fksem = idz.idzfksem) ON predmetu.fkpredm = idz.idzfkpre) WHERE (klasu.klas = " + strkl + " AND predmetu.nazva = " + strpredm + " AND idznazva.nazva = " + stridznazva + ") ORDER BY uchni.prizv"); zhusl.VisiF(dataGridView1, 5); Вибірка за назвою оцінки: if (combidz.SelectedItem.ToString() == "*") stridznazva = "idznazva.nazva"; else stridznazva = "'" + combidz.SelectedItem.ToString() + "'"; zhusl.MainSel(dataGridView1, "SELECT idz.fkidz AS [FKIDZ], idz.idzfksem AS [FKSEMIDZ], idz.idzfkpre, idz.nazva AS idznazva, klasu.fkklasu, uchni.fkuchni, klasu.klas AS [Клас], uchni.prizv AS [Прізвище], uchni.imya AS [Ім'я], uchni.pobat AS [Побатькові], idznazva.nazva AS [Назва ІДЗ], idz.ocinka AS [Оцінка], predmetu.nazva AS [Предмет] FROM (predmetu INNER JOIN (((uchni INNER JOIN semestru ON uchni.fkuchni = semestru.semfkuchen) INNER JOIN klasu ON uchni.fkklasu = klasu.fkklasu) INNER JOIN(idz INNER JOIN idznazva ON idz.nazva = idznazva.fkidznazva) ON semestru.fksem = idz.idzfksem) ON predmetu.fkpredm = idz.idzfkpre) WHERE (klasu.klas = " + strkl + " AND predmetu.nazva = " + strpredm + " AND idznazva.nazva = " + stridznazva + ") ORDER BY uchni.prizv"); zhusl.VisiF(dataGridView1, 5); Функція яка дістає ключове поле таблиці за назвою інших полів: string getFK(string stre) { string tem = ""; OleDbCommand thisCommand = new OleDbCommand(stre, connection); OleDbDataReader thisReader = thisCommand.ExecuteReader(); thisReader.ToString(); thisReader.Read(); tem = thisReader[0].ToString(); thisReader.Close(); return tem; } Динамічна зміна предмету та назви оцінки: switch (dataGridView1.CurrentCell.ColumnIndex) { case 10: zhusl.combSel(combfrog, "SELECT nazva FROM idznazva ORDER BY nazva;",false); panel1.Visible = true; panel1.Top = e.Y + dataGridView1.Top; panel1.Left = e.X + dataGridView1.Left; break; case 12: zhusl.combSel(combfrog, "SELECT nazva FROM predmetu ORDER BY nazva;",false); panel1.Visible = true; panel1.Top = e.Y + dataGridView1.Top; panel1.Left = e.X + dataGridView1.Left break; default: break;} Процедура динамічної зміни: private void combfrog_SelectedIndexChanged(object sender, EventArgs e) { connection.Open(); OleDbCommand thisCommand = new OleDbCommand(); thisCommand.Connection = connection; thisCommand.CommandText = "SELECT nazva FROM idznazva ORDER BY nazva;"; OleDbDataReader thisReader = thisCommand.ExecuteReader(); thisReader.Close(); switch (dataGridView1.CurrentCell.ColumnIndex) { case 10: thisCommand.CommandText = "UPDATE idz SET nazva = ? WHERE (fkidz= ?);"; thisCommand.Parameters.Add("@nazva", OleDbType.VarChar).Value = getFK("SELECT fkidznazva FROM idznazva WHERE (nazva = '" + combfrog.SelectedItem.ToString() + "');"); thisCommand.Parameters.Add("@fkidz", OleDbType.VarChar).Value = dataGridView1.CurrentRow.Cells[0].Value.ToString(); thisReader = thisCommand.ExecuteReader(); thisReader.ToString(); thisReader.Close(); break; case 12: thisCommand.CommandText = "UPDATE idz SET idzfkpre = ? WHERE (fkidz= ?);"; thisCommand.Parameters.Add("@idzfkpre", OleDbType.VarChar).Value = getFK("SELECT fkpredm FROM predmetu WHERE (nazva = '" + combfrog.SelectedItem.ToString() + "');"); thisCommand.Parameters.Add("@fkidz", OleDbType.VarChar).Value = dataGridView1.CurrentRow.Cells[0].Value.ToString(); thisReader = thisCommand.ExecuteReader(); thisReader.ToString(); thisReader.Close(); break; default: break; } panel1.Visible = false; connection.Close(); zhusl.MainSel(dataGridView1, "SELECT idz.fkidz AS [FKIDZ], idz.idzfksem AS [FKSEMIDZ], idz.idzfkpre, idz.nazva AS idznazva, klasu.fkklasu, uchni.fkuchni, klasu.klas AS [Клас], uchni.prizv AS [Прізвище], uchni.imya AS [Ім'я], uchni.pobat AS [Побатькові], idznazva.nazva AS [Назва ІДЗ], idz.ocinka AS [Оцінка], predmetu.nazva AS [Предмет] FROM (predmetu INNER JOIN (((uchni INNER JOIN semestru ON uchni.fkuchni = semestru.semfkuchen) INNER JOIN klasu ON uchni.fkklasu = klasu.fkklasu) INNER JOIN(idz INNER JOIN idznazva ON idz.nazva = idznazva.fkidznazva) ON semestru.fksem = idz.idzfksem) ON predmetu.fkpredm = idz.idzfkpre) WHERE (klasu.klas = " + strkl + " AND predmetu.nazva = " + strpredm + " AND idznazva.nazva = " + stridznazva + ")"); zhusl.VisiF(dataGridView1, 5); } Процедура створення нової оцінки для динамічної процедури: private void addbutton_Click(object sender, EventArgs e) { //panel1.Height = 70; MessageBox.Show(combfrog.Text); connection.Open(); OleDbCommand thisCommand = new OleDbCommand(); thisCommand.Connection = connection; thisCommand.CommandText = "SELECT nazva FROM idznazva ORDER BY nazva;"; OleDbDataReader thisReader = thisCommand.ExecuteReader(); thisReader.Close(); switch (dataGridView1.CurrentCell.ColumnIndex) { case 10: thisCommand.CommandText = "INSERT INTO idznazva (nazva) VALUES(@Nazva);"; thisCommand.Parameters.Add("@nazva", OleDbType.VarChar).Value = combfrog.Text; thisReader = thisCommand.ExecuteReader(); thisReader.ToString(); thisReader.Close(); connection.Close(); zhusl.combSel(combfrog, "SELECT nazva FROM idznazva ORDER BY nazva", false); break; case 12: thisCommand.CommandText = "INSERT INTO predmetu (nazva) VALUES(@Nazva);"; thisCommand.Parameters.Add("@nazva", OleDbType.VarChar).Value = combfrog.Text; thisReader = thisCommand.ExecuteReader(); thisReader.ToString(); thisReader.Close(); connection.Close(); zhusl.combSel(combfrog, "SELECT nazva FROM idznazva ORDER BY nazva", false); break; default: break; } } Блок відкриття, закриття панелі для додавання нової оцінки: if (panel2.Visible) panel2.Visible = false; else panel2.Visible = true; Додання нової оцінки: OleDbCommand thisCommanduch = new OleDbCommand("SELECT uchni.fkuchni FROM (uchni INNER JOIN klasu ON uchni.fkklasu = klasu.fkklasu) WHERE (klasu.klas = " + strkl + ")", connection); OleDbCommand thisCommandsem = new OleDbCommand(); OleDbCommand thisCommand = new OleDbCommand(); OleDbCommand thisCommandi = new OleDbCommand(); connection.Open(); thisCommandi = new OleDbCommand("INSERT INTO idznazva (nazva) VALUES (@nazva)", connection); thisCommandi.Parameters.Add("@nazva", OleDbType.VarChar).Value = textBox1.Text; OleDbDataReader thisReaderuch2 = thisCommandi.ExecuteReader(); OleDbDataReader thisReaderuch = thisCommanduch.ExecuteReader(); string uch = "",uch2 = ""; bool kt = false; thisReaderuch.ToString(); string stre = "",stre2 = ""; while (thisReaderuch.Read()) { string rea = thisReaderuch[0].ToString(); thisCommandsem = new OleDbCommand("SELECT semestru.fksem FROM (semestru INNER JOIN uchni ON semestru.semfkuchen = uchni.fkuchni) WHERE (uchni.fkuchni = " + rea + ")", connection); OleDbDataReader thisReadersem = thisCommandsem.ExecuteReader(); thisReadersem.ToString(); while (thisReadersem.Read()) { if ((sem1.Checked) && (uch!=rea)) { string reasem = thisReadersem[0].ToString(); thisCommand = new OleDbCommand("INSERT INTO idz (nazva, ocinka, idzfkpre, idzfksem) VALUES (@nazva, @ocinka, @idzfkpre, @idzfksem);", connection); thisCommand.Parameters.Add("@nazva", OleDbType.VarChar).Value = getFK("SELECT fkidznazva FROM idznazva WHERE (nazva = '" + textBox1.Text + "')"); thisCommand.Parameters.Add("@ocinka", OleDbType.VarChar).Value = "0"; thisCommand.Parameters.Add("@idzfkpre", OleDbType.VarChar).Value = getFK("SELECT fkpredm FROM predmetu WHERE (nazva = " + strpredm + ")"); thisCommand.Parameters.Add("@idzfksem", OleDbType.VarChar).Value = reasem; OleDbDataReader thisReader = thisCommand.ExecuteReader(); uch = rea; kt = true; } else { kt = false; uch = rea; } if ((sem2.Checked) && (uch == rea) && !kt) { kt = false; } else { } } } connection.Close(); textBox1.Text = ""; panel2.Visible = false; zhusl.combSel(combidz, "SELECT nazva FROM idznazva ORDER BY nazva", true); Відкриття, закриття панелі для додання нового предмету: if (panel3.Visible) panel3.Visible = false; else panel3.Visible = true; Процедура виставлення оцінок із збереженням іх у базу даних: void updOcinku() { connection.Open(); if (dataGridView1.CurrentRow.Cells[11].Value.ToString() == "") dataGridView1.CurrentRow.Cells[11].Value = "0"; OleDbCommand thisCommand = new OleDbCommand("UPDATE idz SET ocinka = ? WHERE (fkidz= ?);", connection); thisCommand.Parameters.Add("@ocinka", OleDbType.VarChar).Value = dataGridView1.CurrentRow.Cells[11].Value.ToString(); thisCommand.Parameters.Add("@fkidz", OleDbType.VarChar).Value = dataGridView1.CurrentRow.Cells[0].Value.ToString(); OleDbDataReader reader = thisCommand.ExecuteReader(); reader.Close(); connection.Close(); } Відалення вибраної оцінки: OleDbCommand thisCommandsem = new OleDbCommand(); OleDbCommand thisCommand = new OleDbCommand(); OleDbCommand thisCommandi = new OleDbCommand(); OleDbDataReader thisReader; connection.Open(); thisCommandsem = new OleDbCommand("SELECT idz.fkidz FROM (idz INNER JOIN idznazva ON idz.nazva = idznazva.fkidznazva) WHERE (idznazva.nazva = " + stridznazva + ")", connection); OleDbDataReader thisReadersem = thisCommandsem.ExecuteReader(); thisReadersem.ToString(); while (thisReadersem.Read()) { string rea = thisReadersem[0].ToString(); thisCommand = new OleDbCommand("DELETE FROM idz WHERE (fkidz = " + rea + ")", connection); thisReader = thisCommand.ExecuteReader(); } thisCommandi = new OleDbCommand("DELETE FROM idznazva WHERE (nazva = " + stridznazva + ")", connection); thisReader = thisCommandi.ExecuteReader(); connection.Close(); zhusl.combSel(combidz, "SELECT nazva FROM idznazva ORDER BY nazva", true); combidz.SelectedIndex = 0; Добавлення нового предмету: connection.Open(); OleDbCommand thisCommand = new OleDbCommand("INSERT INTO predmetu (nazva) VALUES(@nazva);", connection); thisCommand.Parameters.Add("@nazva", OleDbType.VarChar).Value = textBox2.Text; OleDbDataReader thisReader = thisCommand.ExecuteReader(); thisReader.ToString(); connection.Close(); zhusl.combSel(combpredm, "SELECT nazva FROM predmetu ORDER BY nazva", true); textBox2.Text = ""; panel3.Visible = false; Видалення предмету і всіх оцінок пов'язаних з ним: OleDbCommand thisCommandsem = new OleDbCommand(); OleDbCommand thisCommand = new OleDbCommand(); OleDbCommand thisCommandi = new OleDbCommand(); OleDbDataReader thisReader; connection.Open(); thisCommandsem = new OleDbCommand("SELECT idz.fkidz FROM (idz INNER JOIN predmetu ON idz.idzfkpre = predmetu.fkpredm) WHERE (predmetu.nazva = " + strpredm + ")", connection); OleDbDataReader thisReadersem = thisCommandsem.ExecuteReader(); thisReadersem.ToString(); while (thisReadersem.Read()) { string rea = thisReadersem[0].ToString(); thisCommand = new OleDbCommand("DELETE FROM idz WHERE (fkidz = " + rea + ")", connection); thisReader = thisCommand.ExecuteReader(); } thisCommandi = new OleDbCommand("DELETE FROM predmetu WHERE (nazva = " + strpredm + ")", connection); thisReader = thisCommandi.ExecuteReader(); connection.Close(); zhusl.combSel(combpredm, "SELECT nazva FROM predmetu ORDER BY nazva", true); zhusl.combSel(combidz, "SELECT nazva FROM idznazva ORDER BY nazva", true); combpredm.SelectedIndex = 0; Рисунок 3.4 - Форма редагування даних. Функція для заповнення даними об'єктів DataGridView модуля «zhu.cs»: public void MainSel(DataGridView datta,string zaput1) { connection.Open(); OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(zaput1, connection); DataSet dSet = new DataSet(); adapter.Fill(dSet); datta.DataSource = dSet.Tables[0]; connection.Close(); } Функція для заповнення даними об'єктів ComboBox модуля «zhu.cs»: public void combSel(ComboBox combi, string stre,bool resh) { // OleDbDataAdapter adapter; combi.Items.Clear(); OleDbCommand thisCommand = new OleDbCommand(stre, connection); connection.Open(); OleDbDataReader thisReader = thisCommand.ExecuteReader(); thisReader.ToString(); if (resh) combi.Items.Add("*"); while (thisReader.Read()) combi.Items.Add(thisReader[0].ToString()); thisReader.Close(); connection.Close(); } Функція для коректного відображеня даних в об'єктах DataGridView модуля «zhu.cs»: public void VisiF(DataGridView dataGridParent, int county) { CurrencyManager cmgr = (CurrencyManager)dataGridParent.BindingContext[dataGridParent.DataSource]; cmgr.SuspendBinding(); for (int i = 0; i <= county; i++) dataGridParent.Columns[i].Visible = false; cmgr.ResumeBinding(); } 3.3 Інструкція користувача При запуску програми з'являється форма зі списком усіх учнів школи: Рисунок 3.5 - Головна форма. У ній можна вибрати клас який нас цікавить у випадаючому списку, який знаходиться у верхньому лівому куті: Рисунок 3.6 - Вибір класу за яким проведеться вибірка. Якщо ж двічі клацнути по якомусь з учнів, то з'виться форма з його успішністтю: Рисунок 3.7 - Успішність вибраного учня. Для переходу на форму редагування потрібно натиснути кнопку «Форма редагування успішності», яка знаходиться у верхньому правому куті головної форми. Рисунок 3.7 - Форма редагування. На формі редагування можна додати, або видалити предмети, та оцінки з назвами тем, також можна виставляти оцінки редагуючи стовпчик оцінки. Всі змінювані дані будуть заноситись в базу даних. 3.4 Вимоги до технічних засобів Вимоги до апаратних засобів значною мірою залежать не від вимог розробленого програмного забезпечення, а від вимог операційної системи. Однак рекомендованими мінімальними вимогами до апаратного забезпечення розрахункової програми можна вважати такі: процесор - AMD Athlon 1.8 GHz або його аналог іншого виробника; обсяг оперативної пам'яті - 256 MB Мбайт; обсяг вільного місця на диску - 20 MB. Зазначені мінімальними вимоги до апаратного забезпечення стосуються лише IBM-сумісних персональних комп'ютерів, оскільки для комп'ютерів сімейства Apple Macintosh тестування розробленого програмного забезпечення не проводилося. До зазначених апаратних вимог необхідно також додати наявність мінімальної розширювальної здатності монітору 800*600. Вимоги до програмного забезпечення викладені нижче. У якості операційної системи комп'ютера можуть виступати: Windows XP/Vista/7 x86 - x64. Тестування з іншими операційними системами не проводилось. Висновки Як висновок, можна відзначити, що електронні журнали необхідно розглядати не як новомодний спосіб відображення оцінок, а як потужний засіб підвищення успішності і рівня освіти в цілому на рівні школи. Для кращої реалізації власного проекту було проведено огляд новітніх інформаційних технологій, та програмного забезпечення, що могли б бути використані для розробки сучасного, ефективного та головне конкуренто здатного програмного продукту. Для роботи обрано середовище розробки програмного забезпечення Microsoft Visual Studio 2008. Література 1. А. Климов C#. Советы программистам,2008 - 658с. 2. Чарльз Петцольд Программирование с использованием Microsoft Windows Forms Русская Редакция, -Питер,2006 - 432с 3. Павловская Т.А. C#. Программирование на языке высокого уровня,2009 - 453с 4. Фаронов В.В. Программирование на языке С#,2007 - 240с. 5. Ульман Л. MySQL: Пер. с англ. Слинкина А.А -- М.: ДМК Пресс; СПб.: Питер, 2004. -- 352 с. 6. Интернет-Университет Информационных Технологий [Електронний ресурс]. - Режим доступу: http://www.INTUIT.ru 7. Библиотека класов С# [Електронний ресурс]. - Режим доступу: http://msdn.microsoft.com/ 8. Форум программистов .NET [Електронний ресурс]. - Режим доступу: http://forum.vingrad.ru/forum/
Страницы: 1, 2, 3, 4, 5
|