Смекни!
smekni.com

Розробка програмного забезпечення для ведення електронного обліку успішності школярів (стр. 6 из 7)

ss.MainSel(dataGridView1, zaput1);

ss.VisiF(dataGridView1, 1);

Запуск форми на якій відображається успішність вибраного учня з переданням параметрів для його вибору:

uchen fo3 = new uchen(dataGridView1.CurrentRow.Cells[0].Value.ToString(),"ІДЗ");

fo3.Show();

Запуск форми редагування з передачею відомостей про те який клас потрібно відкрити:

edit ed = new edit(strkl);

ed.Show();


Рисунок 3.2 – Форма головної сторінки.

Блок інізіалізації форми що відображає інформацію про учня з прийомом даних які передаються з іншої форми:

public uchen(string idUhc,string tup)

{

fkUch = idUhc;

zaput1 = "SELECT idz.ocinka AS [Оцінка], idznazva.nazva AS [Назва ІДЗ], predmetu.nazva AS [Предмет] FROM (((predmetu INNER JOIN idz ON predmetu.fkpredm = idz.idzfkpre) INNER JOIN((uchni INNER JOIN semestru ON uchni.fkuchni = semestru.semfkuchen) INNER JOIN klasu ON uchni.fkklasu = klasu.fkklasu) ON idz.idzfksem = semestru.fksem) INNER JOIN idznazva ON idz.nazva = idznazva.fkidznazva) WHERE (uchni.fkuchni = " + fkUch + ")";

InitializeComponent();

}


Процедура події яка відповідає за завантаження форми з блоком заповнення даними учня таблиці DataGridViev:

private void Form3_Load(object sender, EventArgs e)

{

zhusl.MainSel(dataGridView1, zaput1);

connection.Open();

OleDbCommand thisCommandp = new OleDbCommand("SELECT uchni.prizv FROM (uchni INNER JOIN klasu ON uchni.fkklasu = klasu.fkklasu) WHERE (uchni.fkuchni = " + fkUch + ")", connection);

OleDbDataReader thisReader = thisCommandp.ExecuteReader();

thisReader.ToString();

thisReader.Read();

ipp.Text += thisReader[0].ToString()+" ";

thisCommandp = new OleDbCommand("SELECT uchni.imya FROM (uchni INNER JOIN klasu ON uchni.fkklasu = klasu.fkklasu) WHERE (uchni.fkuchni = " + fkUch + ")", connection);

thisReader = thisCommandp.ExecuteReader();

thisReader.ToString();

thisReader.Read();

ipp.Text += thisReader[0].ToString() + " ";

thisCommandp = new OleDbCommand("SELECT uchni.pobat FROM (uchni INNER JOIN klasu ON uchni.fkklasu = klasu.fkklasu) WHERE (uchni.fkuchni = " + fkUch + ")", connection);

thisReader = thisCommandp.ExecuteReader();

thisReader.ToString();

thisReader.Read();

ipp.Text += thisReader[0].ToString() + " ";

thisReader.Close();

connection.Close();

}


Рисунок 3.3 – Форма яка відображає успішність вибраного учня.

Прийом даних які передає головна форма – формі редагування:

public edit(string klos)

{

strkl = klos;

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();