Автор работы: Пользователь скрыл имя, 01 Июня 2013 в 18:26, дипломная работа
Целью данной дипломной работы является создание программного комплекса «Библиотека» (далее ПК «Библиотека») для ведения учета литературы находящийся в библиотеке, а также сотрудников имеющих на руках какие либо материалы из нее.
Задачи исследования: (задачи исследования вытекают из глав твоей дипломной работы, перечисли их по пунктам).
ПК «Библиотека» состоит из двух модулей:
Библиотекарь - представляет собой приложение Windows, в котором и происходит заполнение базы данных информацией о литературе и сотрудниках.
Читатель – этот модуль предназначен для обеспечения сотрудников ОНУТЦ доступа к базе данных книг библиотеки. Модуль читателя представляет собой веб-интерфейс.
Введение 3
1. Постановка задачи 6
2. История развития СУБД 8
2.1. Типы и структуры данных 8
2.1.1. Основные типы данных. 8
2.1.2. Обобщенные структуры или модели данных. 9
2.1.3. Методы доступа к данным. 10
2.2. Классификация моделей баз данных 11
2.2.1. Иерархическая модель данных. 11
2.2.2. Сетевая модель данных 12
2.2.3. Реляционная модель данных 15
2.2.4. Постреляционные СУБД. 19
3. Практическая реализация 23
3.1. Пояснения к техническому заданию. 23
3.2. Интерфейс ПК «Библиотека» 24
3.3. Описание программного кода 34
3.3.1 Описание класса Form1. 34
4. Экономическое обоснование 55
5. Инструкция по технике безопасности при работе на компьютере 67
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using FirebirdSql.Data.
using FirebirdSql.Data.Isql;
Выше описан блок подключений пространств имен. Все, за исключением двух последних подключений, включены в приложение по умолчанию, и являются стандартными пространствами имен.
using FirebirdSql.Data.
using FirebirdSql.Data.Isql; - подключаемое пространство имен обеспечивающее работоспособность SQL запросов по отношению к базе данных firebird.
namespace FBDB_Test
{
public partial class UserControlОписание : UserControl, IMyUserControlInterface
{
public UserControlОписание()
{
InitializeComponent();
}
Выше описано создание класса UserControlОписание и подключение к нему интерфейса (наследование от IMyUserControlInterface)
public String СтрокаНаДобавление
{
get
{
return "INSERT INTO NEW_TABLE VALUES(gen_id(gtbn, 1), '" +
textBoxName.Text.ToString() + "', '" +
textBoxANNO.Text.ToString() + "', '" +
textBoxHeader.Text.ToString() + "', '" +
textBoxVal.Text.ToString() + "', '" +
textBoxYear.Text.ToString() + "', '" +
textBoxBBK.Text.ToString() + "', '" +
textBoxKW.Text.ToString() + "', '" +
textBoxPrice.Text.ToString() + "', '" +
textBoxComment.Text.ToString() + "', '" +
comboBox1.SelectedText == "В БИБЛИОТЕКЕ"
? "0" : ((MC_Читатели)comboBox1.
}
}
Создание поля типа строка в котором будет содержаться SQL запрос на добавление новой записи в базе данных. Это поле будет передаваться через пользовательский интерфейс.
public String СтрокаНаУдаление
{
get
{
return "delete from new_table where id=" + textBoxID.Text;
}
}
Создание поля типа строка в котором будет содержаться SQL запрос на обновление записи в базе данных. Это поле будет передаваться через пользовательский интерфейс.
public String СтрокаНаОбновить
{
get
{
return "UPDATE new_table SET autor = '" +
textBoxName.Text.ToString() + "' , comments = '" +
textBoxComment.Text.ToString() + "' , price = '" +
textBoxPrice.Text.ToString() + "' , anno = '" +
textBoxANNO.Text.ToString() + "' , B_D_DATE = '" +
textBoxYear.Text.ToString() + "' , bbk = '" +
textBoxBBK.Text.ToString() + "' , header = '" +
textBoxHeader.Text.ToString() + "' , key_words = '" +
textBoxKW.Text.ToString() + "' , B_D_value = '" +
textBoxVal.Text.ToString() + "' , ID_READER = '" +
(comboBox1.SelectedItem.
textBoxID.Text.ToString();
}
}
Создание поля типа строка в котором будет содержаться SQL запрос на удаление записи в базе данных. Это поле будет передаваться через пользовательский интерфейс.
private void checkBox1_CheckedChanged(objec
{
label2.Visible = !label2.Visible;
textBoxID.Visible = !textBoxID.Visible;
}
Выше описан элемент переключатель, это временный элемент, позволяющий скрыть или отобразить поле ID.
public void MyRefresh(FbConnection fb)
{
listBox1.Items.Clear();
if (fb.State == ConnectionState.Closed)
fb.Open();
FbTransaction fbt = fb.BeginTransaction();
FbCommand SelectSQL = new FbCommand("SELECT * FROM new_table", fb);
SelectSQL.Transaction = fbt;
FbDataReader reader = SelectSQL.ExecuteReader();
try
{
while (reader.Read())
{
MC_Литература my = new MC_Литература();
my.id = reader.GetInt32(0);
my.name = reader.GetString(1);
my.ANNO = reader.GetString(2);
my.header = reader.GetString(3);
my.val = reader.GetString(4);
my.year = reader.GetString(5).ToString()
my.bbk = reader.GetString(6);
my.keywords = reader.GetString(7);
my.price = reader.GetString(8);
my.comment = reader.GetString(9);
my.id_reader = reader.GetInt32(10);
listBox1.Items.Add(my);
}
}
finally
{
fbt.Commit();
fbt.Dispose();
reader.Close();
fb.Close();
}
}
Описанный выше код – является методом и одной из важнейших частей проекта. Данный метод осуществляет заполнение списков и таблиц, а также их обновление. Список читателей заполняется из класса МС_Читатели, который содержит поля, которые считываются из базы данных.
Ход выполнения этого метода начинается с удаления всех элементов списка, это сделано для того, чтобы записи не повторялись. После чего идет проверка соединения, и если оно закрыто, то мы должны его открыть. Далее создается SQL запрос, на выборку элементов из таблицы в базе данных. После чего создается экземпляр класса МС_Читатели, и происходит заполнение его полей с помощью FbDataReader (объект позволяющий считывать строки из таблиц базы данных). Далее экземпляр этого класса добавляется в список читателей.
После выполнения всех выше описанных действий, закрывается соединение, и закрывается FbDataReader.
private void listBox1_SelectedIndexChanged(
{
if (listBox1.SelectedIndex == -1)
return;
MC_Литература my = (MC_Литература)listBox1.
textBoxName.Text = my.name;
textBoxANNO.Text = my.ANNO;
textBoxBBK.Text = my.bbk;
textBoxComment.Text = my.comment;
textBoxHeader.Text = my.header;
textBoxID.Text = my.id.ToString();
textBoxKW.Text = my.keywords;
textBoxPrice.Text = my.price;
textBoxVal.Text = my.val;
textBoxYear.Text = my.year;
if (my.id_reader == 0)
comboBox1.SelectedIndex = 0;
else
for (int i = 1; i < comboBox1.Items.Count; i++)
{
if (((MC_Читатели)comboBox1.
{
comboBox1.SelectedIndex = i;
break;
}
}
}
Выше описанный код отвечает за заполнение текстовых полей, расположенных рядом со списком статей. Этот код описывает событие клика по элементу списка, при этом заполняются текстовые поля.
Первым действием является проверка на снятие фокуса с элемента, если фокус был снят, поля останутся заполненными. Далее создается экземпляр класса MC_ART с помощью которого заполняются текстовые поля.
public void RefreshOutData1(FbConnection fb)
{
comboBox1.Items.Clear();
if (fb.State == ConnectionState.Closed)
fb.Open();
FbTransaction fbt = fb.BeginTransaction();
FbCommand SelectSQL = new FbCommand("SELECT * FROM READER", fb);
SelectSQL.Transaction = fbt;
FbDataReader reader = SelectSQL.ExecuteReader();
try
{
while (reader.Read())
{
MC_Читатели my = new MC_Читатели();
my.ID = reader.GetInt32(0);
my.name2 = reader.GetString(2);
my.name3 = reader.GetString(3);
my.Dolz = reader.GetString(4);
my.Mail = reader.GetString(6);
my.name = reader.GetString(1);
my.Tub_Number = reader.GetString(5);
comboBox1.Items.Add(my);
}
}
finally
{
reader.Close();
fb.Close();
}
}
Выше описанный код добавляет читателя в поле книги «Читатель», при подтверждении изменений, в поле читатель, появиться имя читателя у которого находится данная книга.
public void RefreshOutData2(object o)
{
comboBox1.Items.Clear();
comboBox1.Items.Add("В БИБЛИОТЕКЕ");
foreach (var item in (ListBox.ObjectCollection)o)
{
comboBox1.Items.Add(item);
}
}
}
}
Выше описанный код изменяет состояние книги на свободное, т.е. находится в библиотеке.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
Подключение пространств имен, все включения являются стандартными.
namespace FBDB_Test
{
class MC_Литература
{
public string name { get; set; }
public string header { get; set; }
public string bbk { get; set; }
public string keywords { get; set; }
public string comment { get; set; }
public string ANNO { get; set; }
public string val { get; set; }
public string year { get; set; }
public string price { get; set; }
public int id { get; set; }
public int id_reader { get; set; }
Создание полей класса МС_Литература, при помощи которых будет производиться заполнение полей окна литература.
public MC_Литература()
{
name = "";
header = "";
bbk = "";
keywords = "";
comment = "";
ANNO = "";
val = "";
year = "";
price = "";
id = 0;
id_reader = 0;
}
Инициализация полей класса МС_Литература.
public override string ToString()
{
return name + " " + header;
}
}
}
Перегрузка метода ToString() для отображения названия и заглавия в списке на окне литературы.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
Подключение пространств имен, все включения являются стандартными.
namespace FBDB_Test
{
class MC_Читатели
{
public string name { get; set; }
public string name2 { get; set; }
public string name3 { get; set; }
public string Dolz { get; set; }
public string Tub_Number { get; set; }
public string Mail { get; set; }
public int ID { get; set; }
Создание полей класса
МС_Читатели, при помощи которых
будет производиться
public MC_Читатели()
{
name = "";
name2 = "";
name3 = "";
Dolz = "";
Tub_Number = "";
Mail = "";
ID = 0;
}
Инициализация полей класса МС_Литература.
public override string ToString()
{
return name + " " + name2 + " " + name3;
}
}
Перегрузка метода ToString() для отображения фамилии, имени и отчества в списке на окне читателей.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
Подключение пространств имен, все включения являются стандартными.
namespace FBDB_Test.classes
{
class MC_ART
{
public string header { get; set; }
public string autor { get; set; }
public int pages { get; set; }
public string res { get; set; }
public string keywords { get; set; }
public string ANNO { get; set; }
public int id { get; set; }
Создание полей класса МС_АРТ, при помощи которых будет производиться заполнение полей окна статей.
public MC_ART()
{
autor = "";
res = "";
pages = 0;
header = "";
keywords = "";
ANNO = "";
id = 0;
}
Инициализация полей класса МС_АРТ.
public override string ToString()
{
return header;
}
}
Перегрузка метода ToString() для отображения заглавия в списке на окне статьи.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FirebirdSql.Data.
using FirebirdSql.Data.Isql;
Подключение пространств имен, все включения являются стандартными.
namespace FBDB_Test
{
public interface IMyUserControlInterface
{
String СтрокаНаДобавление { get;}
String СтрокаНаУдаление { get; }
String СтрокаНаОбновить { get; }
void MyRefresh(FbConnection fb);
}
}
Создание интерфейса при помощи которого будут передаваться строки с SQL запросами а также метод MyRefresh() который отвечает за заполнение списков, а также за их обновление.
XXI век - это век развитых информационных технологий. Развитие рынка технологий поспособствовало появлению компьютерных программ (программного обеспечения). В соответствии с законом «Об авторском праве и смежных правах» (с изменениями и дополнениями) компьютерные программы - это объекты авторского права. Согласно нормам законодательства выделяют исключительные права на результаты интеллектуальной деятельности (интеллектуальная собственность) как вид объектов гражданских прав, отличный от товаров, работ, услуг.
Определения программы, программного обеспечения и стадии создания программного обеспечения даны в действующих ГОСТах (ГОСТ 19102-77, ГОСТ 19781-90 и др.):