- •Содержание
- •Цель работы
- •Введение
- •Теоретическая часть Некоторые понятия и определения бд
- •Модели данных
- •Иерархическая модель данных
- •Сетевая модель данных
- •Реляционная модель данных
- •Объекты, атрибуты и ключи
- •Нормализация
- •Назначение и основные возможности Access
- •OleDbConnection - класс
- •Практическая часть
- •Пример работы программы
- •Список литературы
- •Приложение
Пример работы программы
Главное окно Form1 (рис. 2) . Для начала работы выбираем нужную вкладку и начинаем работу.
Рис. 2 Вкладка Экзамены
Во вкладки Экзамены добавляем/удаляем/изменяем/сохраняем параметры.
Рис. 3 Вкладка предметы
Во вкладки Предмет добавляем/удаляем/изменяем/сохраняем параметры.
Рис. 4 Вкладка Специальности
Во вкладки Специальности добавляем/удаляем/изменяем/сохраняем параметры.
Рис. 5 Вкладка Группы
Во вкладки Группы добавляем/удаляем/изменяем/сохраняем параметры.
Рис. 6 Вкладка Студенты
Во вкладки Студенты добавляем/удаляем/изменяем/сохраняем параметры.
Рис. 7 Вкладка Оценки
Во вкладки Оценки обновляем/добавляем/изменяем/сохраняем параметры.
Рис. 8 Оценки (после обновления БД)
Список литературы
http://msdn.microsoft.com/ru-RU/
http://ru.wikipedia.org/
http://www.cyberforum.ru/
Приложение
Класс Form1
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace exam_supa
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void examBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate();
this.examBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.databaseDataSet);
}
private void Form1_Load(object sender, EventArgs e)
{
// TODO: данная строка кода позволяет загрузить данные в таблицу "databaseDataSet.mark". При необходимости она может быть перемещена или удалена.
this.markTableAdapter.Fill(this.databaseDataSet.mark);
// TODO: данная строка кода позволяет загрузить данные в таблицу "databaseDataSet.student". При необходимости она может быть перемещена или удалена.
this.studentTableAdapter.Fill(this.databaseDataSet.student);
// TODO: данная строка кода позволяет загрузить данные в таблицу "databaseDataSet.group". При необходимости она может быть перемещена или удалена.
this.groupTableAdapter.Fill(this.databaseDataSet.group);
// TODO: данная строка кода позволяет загрузить данные в таблицу "databaseDataSet.spec". При необходимости она может быть перемещена или удалена.
this.specTableAdapter.Fill(this.databaseDataSet.spec);
// TODO: данная строка кода позволяет загрузить данные в таблицу "databaseDataSet.subject". При необходимости она может быть перемещена или удалена.
this.subjectTableAdapter.Fill(this.databaseDataSet.subject);
// TODO: данная строка кода позволяет загрузить данные в таблицу "databaseDataSet.exam". При необходимости она может быть перемещена или удалена.
this.examTableAdapter.Fill(this.databaseDataSet.exam);
comboBox1.SelectedIndex = 0;
}
enum aTable { Ex, Gr, Mk, Sp, St, Sb, dEx, dSt }
private int KeyToIndex(int key, aTable tab)
{
int i;
switch(tab)
{
// exam table
case aTable.Ex:
for(i=0;i<examDataGridView.Rows.Count-1;i++)
{
if(Convert.ToInt32(examDataGridView.Rows[i].Cells[0].Value) == key)
return i;
}
break;
// group table
case aTable.Gr:
for(i=0;i<groupDataGridView.Rows.Count-1;i++)
{
if(Convert.ToInt32(groupDataGridView.Rows[i].Cells[0].Value) == key)
return i;
}
break;
// mark table
case aTable.Mk:
for(i=0;i<markDataGridView.Rows.Count-1;i++)
{
if(Convert.ToInt32(markDataGridView.Rows[i].Cells[0].Value) == key)
return i;
}
break;
// spec table
case aTable.Sp:
for(i=0;i<specDataGridView.Rows.Count-1;i++)
{
if(Convert.ToInt32(specDataGridView.Rows[i].Cells[0].Value) == key)
return i;
}
break;
// student
case aTable.St:
for(i=0;i<studentDataGridView.Rows.Count-1;i++)
{
if(Convert.ToInt32(studentDataGridView.Rows[i].Cells[0].Value) == key)
return i;
}
break;
// subject
case aTable.Sb:
for(i=0;i<subjectDataGridView.Rows.Count-1;i++)
{
if(Convert.ToInt32(subjectDataGridView.Rows[i].Cells[0].Value) == key)
return i;
}
break;
// datagridview1
case aTable.dSt:
for(i=0;i<dataGridView1.Rows.Count-1;i++)
{
if(Convert.ToInt32(dataGridView1.Rows[i].Cells[0].Value) == key)
return i;
}
break;
// datagridview2
case aTable.dEx:
for(i=0;i<dataGridView2.Rows.Count-1;i++)
{
if(Convert.ToInt32(dataGridView2.Rows[i].Cells[0].Value) == key)
return i;
}
break;
}
return -1;
}
private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Validate();
this.examBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.databaseDataSet);
}
private void tabPage6_Click(object sender, EventArgs e)
{
/*listBox1.Items.Clear();
int i;
for(i=0;i<studentDataGridView.Rows.Count-1;i++)
{
listBox1.Items.Add(studentDataGridView.Rows[i].Cells[1].Value);
}*/
}
private void updexam(int group)
{
dataGridView2.Rows.Clear();
int kurs = Convert.ToInt32(groupDataGridView.Rows[group].Cells[3].Value);
int spec = Convert.ToInt32(groupDataGridView.Rows[group].Cells[2].Value);
int i, j;
for(i=0;i<subjectDataGridView.Rows.Count-1;i++)
{
if(Convert.ToInt32(subjectDataGridView.Rows[i].Cells[2].Value) == kurs &&
Convert.ToInt32(subjectDataGridView.Rows[i].Cells[3].Value) == spec)
{
int t = Convert.ToInt32(subjectDataGridView.Rows[i].Cells[0].Value);
for(j=0;j<examDataGridView.Rows.Count-1;j++)
{
if(Convert.ToInt32(examDataGridView.Rows[j].Cells[1].Value) == t)
{
dataGridView2.Rows.Add(1);
int k = dataGridView2.Rows.Count-2;
dataGridView2.Rows[k].Cells[0].Value = examDataGridView.Rows[j].Cells[0].Value;
dataGridView2.Rows[k].Cells[1].Value = examDataGridView.Rows[j].Cells[2].Value;
dataGridView2.Rows[k].Cells[2].Value = subjectDataGridView.Rows[i].Cells[1].Value;
dataGridView2.Rows[k].Cells[3].Value = examDataGridView.Rows[j].Cells[3].Value;
}
}
}
}
//MessageBox.Show(group.ToString());
}
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.Rows.Clear();
int i;
for(i=0;i<studentDataGridView.Rows.Count-1;i++)
{
dataGridView1.Rows.Add(1);
int j = dataGridView1.Rows.Count-2;
dataGridView1.Rows[j].Cells[0].Value = studentDataGridView.Rows[i].Cells[0].Value;
dataGridView1.Rows[j].Cells[1].Value = studentDataGridView.Rows[i].Cells[1].Value;
dataGridView1.Rows[j].Cells[2].Value = studentDataGridView.Rows[i].Cells[3].Value;
int t = KeyToIndex(Convert.ToInt32(studentDataGridView.Rows[i].Cells[2].Value), aTable.Gr);
dataGridView1.Rows[j].Cells[3].Value = groupDataGridView.Rows[t].Cells[1].Value;
int k = KeyToIndex(Convert.ToInt32(groupDataGridView.Rows[t].Cells[2].Value), aTable.Sp);
dataGridView1.Rows[j].Cells[4].Value = specDataGridView.Rows[k].Cells[1].Value + " ''"+specDataGridView.Rows[k].Cells[2].Value+"''";
dataGridView1.Rows[j].Cells[5].Value = groupDataGridView.Rows[t].Cells[3].Value;
for(int l=0;l<4;l++)
{
t = KeyToIndex(Convert.ToInt32(studentDataGridView.Rows[i].Cells[0].Value), aTable.St);
object sb = null;
if(markDataGridView.Rows[t].Cells[1+l*2].Value != DBNull.Value)
{
k = KeyToIndex(Convert.ToInt32(markDataGridView.Rows[t].Cells[1+l*2].Value), aTable.Ex);
int k1 = KeyToIndex(Convert.ToInt32(examDataGridView.Rows[k].Cells[1].Value), aTable.Sb);
sb = subjectDataGridView.Rows[k1].Cells[1].Value;
}
int mk = 0;
if(markDataGridView.Rows[t].Cells[2+l*2].Value != DBNull.Value) mk = Convert.ToInt32(markDataGridView.Rows[t].Cells[2+l*2].Value);
dataGridView1.Rows[j].Cells[6+l*2].Value = sb;
dataGridView1.Rows[j].Cells[7+l*2].Value = comboBox1.Items[mk].ToString();
}
}
}
private void button2_Click(object sender, EventArgs e)
{
int t = -1, ex = -1;
DataGridViewSelectedRowCollection scc = dataGridView1.SelectedRows;
if(scc != null && scc.Count > 0)
{
t = KeyToIndex(Convert.ToInt32(scc[0].Cells[0].Value), aTable.St);
}
if(t==-1)
{
MessageBox.Show("Не выбран студент!", "Внимание");
return;
}
scc = dataGridView2.SelectedRows;
if(scc != null && scc.Count > 0)
{
ex = Convert.ToInt32(scc[0].Cells[0].Value);
}
if(ex==-1)
{
MessageBox.Show("Не выбран экзамен!", "Внимание!");
return;
}
int mk;
mk = comboBox1.SelectedIndex;
int pos=1;
int i;
for(i=0;i<4;i++)
{
if(markDataGridView.Rows[t].Cells[1+i*2].Value != DBNull.Value)
{
if(Convert.ToInt32(markDataGridView.Rows[t].Cells[1+i*2].Value) == ex)
{
pos = 1+i*2;
break;
}
}
else
{
pos = 1+i*2;
break;
}
}
markDataGridView.Rows[t].Cells[pos].Value = ex;
markDataGridView.Rows[t].Cells[pos+1].Value = mk;
button1_Click(this, null);
}
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
DataGridViewSelectedRowCollection scc = dataGridView1.SelectedRows;
if(scc != null && scc.Count > 0)
{
int t = KeyToIndex(Convert.ToInt32(scc[0].Cells[0].Value), aTable.St);
if(t!=-1)
{
int g = KeyToIndex(Convert.ToInt32(studentDataGridView.Rows[t].Cells[2].Value), aTable.Gr);
updexam(g);
}
}
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
this.Validate();
this.examBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.databaseDataSet);
}
private bool StringAsInt(string str)
{
char[] toa = str.ToCharArray();
for(int i=0;i<str.Length;i++)
{
if(toa[i] < (int)'0' || toa[i] > (int)'9')
return false;
}
return true;
}
private void button3_Click(object sender, EventArgs e)
{
if(textBox1.Text == "" || textBox2.Text == "" ||
comboBox2.SelectedIndex == -1)
{
MessageBox.Show("Не все поля заполнены!", "Внимание!");
return;
}
if(StringAsInt(textBox2.Text))
{
int t = Convert.ToInt32(textBox2.Text);
if(t<1 || t>groupDataGridView.Rows.Count-1)
{
MessageBox.Show("В базе данных нет группы с ключом: "+t.ToString()+"!", "Внимание");
return;
}
}
else
{
MessageBox.Show("Некорретный ввод в поле ''Код группы''!", "Внимание");
return;
}
studentBindingSource.AddNew();
int k = studentDataGridView.Rows.Count-2;
studentDataGridView.Rows[k].Cells[1].Value = textBox1.Text;
studentDataGridView.Rows[k].Cells[2].Value = textBox2.Text;
studentDataGridView.Rows[k].Cells[3].Value = comboBox2.SelectedItem.ToString();
}
private void studentDataGridView_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
markBindingSource.AddNew();
}
private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
DataGridViewSelectedRowCollection scc = studentDataGridView.SelectedRows;
if(scc != null && scc.Count > 0)
{
int key = Convert.ToInt32(scc[0].Cells[0].Value);
int i;
for(i=0;i<studentDataGridView.Rows.Count-1;i++)
{
if(Convert.ToInt32(studentDataGridView.Rows[i].Cells[0].Value) == key)
{
studentBindingSource.RemoveAt(i);
markBindingSource.RemoveAt(i);
return;
}
}
}
}
private void toolStripMenuItem2_Click(object sender, EventArgs e)
{
DataGridViewSelectedRowCollection scc = examDataGridView.SelectedRows;
if(scc != null && scc.Count > 0)
{
int key = Convert.ToInt32(scc[0].Cells[0].Value);
int i = KeyToIndex(key, aTable.Ex);
int j, l;
for(j=0;j<markDataGridView.Rows.Count-1;j++)
{
for(l=0;l<4;l++)
{
if(markDataGridView.Rows[j].Cells[1+l*2].Value != DBNull.Value)
{
if(Convert.ToInt32(markDataGridView.Rows[j].Cells[1+l*2].Value) == key)
{
markDataGridView.Rows[j].Cells[1+l*2].Value = DBNull.Value;
markDataGridView.Rows[j].Cells[2+l*2].Value = DBNull.Value;
}
}
}
}
examBindingSource.RemoveAt(i);
}
}
private void toolStripMenuItem3_Click(object sender, EventArgs e)
{
DataGridViewSelectedRowCollection scc = subjectDataGridView.SelectedRows;
bool t=false;
if(scc != null && scc.Count > 0)
{
int key = Convert.ToInt32(scc[0].Cells[0].Value);
int i = KeyToIndex(key, aTable.Sb);
int j;
for(j=0;j<examDataGridView.Rows.Count-1;j++)
{
if(examDataGridView.Rows[j].Cells[1].Value != DBNull.Value)
{
if(Convert.ToInt32(examDataGridView.Rows[j].Cells[1].Value) == key)
{
t = true;
}
}
}
if(t)
{
MessageBox.Show("Нельзя удалить предмет, с которым связан экзамен!", "Внимание");
}
else
{
subjectBindingSource.RemoveAt(i);
}
}
}
private void toolStripMenuItem4_Click(object sender, EventArgs e)
{
DataGridViewSelectedRowCollection scc = specDataGridView.SelectedRows;
if(scc != null && scc.Count > 0)
{
bool t = false;
int key = Convert.ToInt32(scc[0].Cells[0].Value);
int i = KeyToIndex(key, aTable.Sp);
int j;
for(j=0;j<groupDataGridView.Rows.Count-1;j++)
{
if(groupDataGridView.Rows[j].Cells[2].Value != DBNull.Value)
{
if(Convert.ToInt32(groupDataGridView.Rows[j].Cells[2].Value) == key)
{
t = true;
}
}
}
if(t)
{
MessageBox.Show("Нельзя удалить специальность, с которой связана(ы) группа(ы)!","Внимание");
}
else
{
specBindingSource.RemoveAt(i);
}
}
}
private void удалитьToolStripMenuItem_Click(object sender, EventArgs e)
{
DataGridViewSelectedRowCollection scc = groupDataGridView.SelectedRows;
if(scc != null && scc.Count > 0)
{
bool t = false;
int key = Convert.ToInt32(scc[0].Cells[0].Value);
int i = KeyToIndex(key, aTable.Gr);
int j;
for(j=0;j<groupDataGridView.Rows.Count-1;j++)
{
if(studentDataGridView.Rows[j].Cells[2].Value != DBNull.Value)
{
if(Convert.ToInt32(studentDataGridView.Rows[j].Cells[2].Value) == key)
{
t = true;
}
}
}
if(t)
{
MessageBox.Show("Нельзя удалить группу, с которой связан(ы) студент(ы)!","Внимание");
}
else
{
groupBindingSource.RemoveAt(i);
}
}
}
}
}
