Автор работы: Пользователь скрыл имя, 25 Января 2014 в 13:25, курсовая работа
Целью данной работы является разработка системы, автоматизирующей ведение базы данных библиотеки. Данная система упрощает процесс учета книг, связанный с обработкой больших объемов информации, а также позволяет читателям осуществлять в интерактивном режиме поиск и выбор интересующих книг.
Для достижения поставленной цели предполагается составление технического задания в соответствии с требованиями предметной области, разработка инфологической и физической модели базы данных на платформе Oracle, написание информационной системы на язык программирования C#.
Введение 5
1 Техническое задание 6
1.1 Описание предметной области 6
1.2 Модели вариантов использования 6
1.3 Требования к информационному и программному обеспечению 7
2 Технический проект 8
2.1 Модели локальных представлений 8
2.2 Инфологическая модель предметной области 11
2.3 Физическая модель базы данных 14
2.4 Основные запросы к базе данных 17
2.5 Хранимые процедуры 21
2.6 Архитектура информационной системы 24
3 Рабочий проект 25
3.1 SQL-скрипт создания базы данных 25
3.2 SQL-скрипт хранимых процедур 25
3.3 Текст программы 25
3.4 Руководство пользователя 25
Заключение 32
Список источников 32
public AddBook(OracleConnection oc, string i)
{
InitializeComponent();
OC = oc;
flag = false;
if (i != null)
{
flag = true;
isbn = i;
this.Text = "Редактирование";
}
}
private void AddBook_Load(object sender, EventArgs e)
{
if (!flag)
{
button1.Enabled = false;
button2.Enabled = false;
OracleCommand Comand = OC.CreateCommand();
DataTable tab = new DataTable();
Comand.CommandText = "SELECT \"sCode\", \"sName\" FROM \"Section\"";
tab = new DataTable();
tab.Load(Comand.ExecuteReader(
comboBox2.DataSource = tab;
comboBox2.ValueMember = "sCode";
comboBox2.DisplayMember = "sName";
}
else
{
label10.Visible = false;
comboBox2.Visible = false;
textBox1.ReadOnly = true;
button1.Visible = false;
button3.Text = "Отмена";
button2.Text = "Подтвердить";
button3.Location = new Point(213, 235);
button3.Size = new System.Drawing.Size(102, 32);
OracleCommand Comand = OC.CreateCommand();
DataTable tab = new DataTable();
Comand.CommandText = "select * from \"Book\" where ISBN = '"+isbn+"'";
tab.Load(Comand.ExecuteReader(
textBox1.Text = tab.Rows[0][0].ToString();
textBox2.Text = tab.Rows[0][1].ToString();
textBox3.Text = tab.Rows[0][2].ToString();
textBox4.Text = tab.Rows[0][3].ToString();
textBox5.Text = tab.Rows[0][4].ToString();
numericUpDown2.Value = Convert.ToDecimal(tab.Rows[0][
numericUpDown1.Value = Convert.ToDecimal(tab.Rows[0][
}
}
private void comboBox1_
{ }
private void button1_Click(object sender, EventArgs e)
{
textBox1.ReadOnly = true;
textBox2.ReadOnly = true;
textBox3.ReadOnly = true;
textBox4.ReadOnly = true;
textBox5.ReadOnly = true;
OracleCommand Comand = OC.CreateCommand();
DataTable tab = new DataTable();
Comand.CommandText = "select \"sCode\" from \"saved\" where ISBN = (select to_char('" + textBox1.Text + "') from dual)";
tab.Load(Comand.ExecuteReader(
for (int i = 0; i < tab.Rows.Count; ++i)
{
if (Convert.ToInt32(tab.Rows[i][
{
MessageBox.Show("Книга уже
return;
}
}
tab = new DataTable();
Comand.CommandText = "begin PROCEDURE_ADD_SECTION('" + isbn
+ "', '" + comboBox2.SelectedValue.
Comand.ExecuteNonQuery();
MessageBox.Show("Книга добавлена в раздел каталога");
}
private void button2_Click(object sender, EventArgs e)
{
if (!flag)
{
OracleCommand Comand = OC.CreateCommand();
DataTable tab = new DataTable();
Comand.CommandText = "select count(*) from \"Book\" where ISBN = (select to_char('" + textBox1.Text + "') from dual)";
tab.Load(Comand.ExecuteReader(
if (Convert.ToInt32(tab.Rows[0][
{
isbn = textBox1.Text;
MessageBox.Show("Книга с таким кодом уже есть в библиотеке. Добавьте экземпляр");
AddCopy AC = new AddCopy(OC, isbn, 0);
AC.Show();
this.Close();
}
Comand.CommandText = "begin PROCEDURE_INS_BOOK('" + textBox1.Text + "', " +
"'" + textBox2.Text + "', '" + textBox3.Text + "', '" + textBox4.Text + "', '" + textBox5.Text +
"', '" + numericUpDown2.Value + "', '" + numericUpDown1.Value + "', '" + comboBox2.SelectedValue + "'); end;";
Comand.ExecuteNonQuery();
MessageBox.Show("Книга зарегистрирована");
button1.Enabled = true;
isbn = textBox1.Text;
}
else
{
OracleCommand Comand = OC.CreateCommand();
DataTable tab = new DataTable();
Comand.CommandText = "begin PROCEDURE_EDIT_BOOK('" + textBox1.Text + "', '" + textBox2.Text + "', '" + textBox3.Text + "', '" + textBox4.Text + "', '" +
textBox5.Text + "', '" + numericUpDown2.Value + "', '" + numericUpDown1.Value + "'); end;";
Comand.ExecuteNonQuery();
MessageBox.Show("Изменения сохранены");
this.Close();
}
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if(textBox1.Text == null || textBox1.Text == "" ||
textBox2.Text == null || textBox2.Text == "" ||
textBox3.Text == null || textBox3.Text == "" ||
textBox4.Text == null || textBox4.Text == "" ||
textBox5.Text == null || textBox5.Text == "")
{}
else
button2.Enabled = true;
}
private void button3_Click(object sender, EventArgs e)
{
if (!flag)
{
AddCopy AC = new AddCopy(OC, isbn,0);
AC.Show();
this.Close();
}
else
{
this.Close();
}
}
}
}
Рисунок 19. Диаграмма вариантов использования
Рисунок 20. ER-диаграмма инфологической модели предметной области
Рисунок 21. Диаграмма физической модели предметной области
Хранимые процедуры
Рисунок 22. Алгоритм регистрации нового читателя
Рисунок 23. Алгоритм регистрации книги
Рисунок 24. Алгоритм добавления экземпляра книги
Рисунок 25. Алгоритм добавления книги в раздел каталога
Рисунок 26. Алгоритм редактирования экземпляра книги и изменения его места расположения
Рисунок 27. Алгоритм редактирования данных книги
Рисунок 27. Алгоритм редактирования данных читателя
1 Диаграммы вариантов использования (use-case) представлены в приложении 4