Разработка мероприятий по
внедрению и сопровождению ПП
2.1 Построение ER-диаграммы
Рисунок 2.1 - ER-диаграмма диаграмма Автоматизированного библиотечного
каталога
Проанализировав предметную область, выделим из нее часть, которую будем
автоматизировать. Отделим основные сущности предметной области, их атрибуты
(свойства, характеристики) и связи, в которые они вступают между собой[4].
В ходе анализа были выделены основные сущности: «пользователь»,
«предмет», «библиотека» и «библиотекарь», а также связи: «берет предмет»,
«хранится» и «работает». Всего 4 сущности; 1 четырехсторонняя и 2 двухсторонние
связи.
Связи между сущностями отображены на ER-диаграммы предметной области
«Автоматизированный библиотечный каталог» (рисунок 2.1).
2.2 Построение диаграммы ER-экземпляров
Для понимания логики работы предметной области, а также установления
степени связности и класса принадлежности таблиц разработана Диаграмма
ER-экземпляров. Рассмотрим сущности «пользователь», «предмет», «библиотекарь».
Графическую иллюстрацию этого можно увидеть на рисунке 2.2.
Рисунок 2.2 - Диаграмма ER-экземпляров
Относительно пар сущностей «пользователь» и «предмет», «библиотекарь» и
«пользователь» можно сказать, что связь между ними многие ко многим потому, что
на любой пользователь может взять любой предмет и его может обслужить любой
библиотекарь.
2.3 Диаграмма функциональных зависимостей
Ограничения уникальности, накладываемые объявлениями первичного и
кандидатных ключей отношения, является частным случаем ограничений, связанных с
понятием функциональных зависимостей. Функциональная зависимость - это
однозначная зависимость, затабулированная в системах управления базами данных.
В таблице 2.1 приведены буквенные обозначения атрибутов сущностей и
связей.
Таблица 2.1- Буквенное обозначение атрибутов
А*
|
В
|
С
|
D
|
Е
|
F
|
G *
|
Н
|
I
|
J
|
К
|
L
|
М *
|
N
|
О
|
Р
|
Q
|
R *
|
S
|
Т
|
U
|
V
|
UsrID
|
UsrFirstName
|
UsrSecondName
|
UsrRegistered
|
TakenDate
|
ReturnedDate
|
ItID
|
ItName
|
ItFirstAuthor
|
ItType
|
ItGenre
|
ItOutYear
|
LibID
|
LibAdress
|
LibOpens
|
LibCloses
|
Quanity
|
LbrID
|
LbrFirstName
|
LbrSurname
|
LbrStart
|
LbrOver
|
На рисунке 2.3 представлена диаграмма ФЗ:
Рисунок 2.3 - Диаграмма ФЗ
Проведем декомпозицию:
РАЗДЕЛ 3. ФИЗИЧЕСКОЕ
ПРОЕКТИРОВАНИЕ ПРИЛОЖЕНИЯ АВТОМАТИЗИРОВАННОГО БИБЛИОТЕЧНОГО КАТАЛОГА
3.1 Описание структуры спроектированной БД
В результате процесса проектирования с помощью ER-диаграмм и концепции ФЗ были получены отношения, которые
соответствуют набору из семи таблиц (рисунки 3.1 - 3.7):
) Пользователи - User
Рисунок 3.1 - Таблица «User»
) Предметы - Item
Рисунок 3.2 - Таблица «Item»
Таблица «Item»
предназначена для хранения данных о предметах. Таблица является справочной и
заполняется в режиме администратора.
) Библиотеки - Library
Рисунок 3.3 - Таблица «Library»
Таблица «Library»
предназначена для хранения данных о библиотеках. Таблица является справочной и
заполняется в режиме администратора.
) Библиотекари - Librarian
Рисунок 3.4 - Таблица «Librarian»
Таблица «Librarian»
предназначена для хранения данных о библиотекарях. Таблица является справочной
и заполняется в режиме администратора.
) Берет - ItemTaken
Рисунок 3.5 - Таблица «ItemTaken»
Таблица «ItemTaken»
предназначена для хранения данных о предметах, взятых пользователями. Таблица
является справочной и заполняется в режиме администратора.
6)
Хранится - Stored <#"699039.files/image011.gif">
Рисунок 3.6 - Таблица «Stored»
Таблица «Stored»
предназначена для хранения информации о количестве и месте хранения предмета.
Таблица является справочной администратора.
) Работает - Working
Рисунок 3.7 - Таблица «Working»
Таблица «Working»
предназначена для хранения данных о месте и времени работы библиотекаря.
Таблица является справочной и заполняется в режиме администратора.
Рисунок 3.8 - Схема связей
Для возможности выполнения запросов поставленных в базу данных,
предусматривающие соединение таблиц, а также просмотра и выбора данных одной
таблицы из другой, синхронизации навигации по записям была разработана схема
связей между таблицами, которая представлена на рисунке 3.8.
3.2 Реализация SQL
запросов в Access
1. Реализация запроса «Предметы изданные до 2000 г.» представлена
на рисунке 3.9.
SELECT Item.ItID, Item.ItName,
Item.ItOutYearItem((([Item].[ItOutYear])<=2000));
Рисунок 3.9 - Запрос 1
2. Реализация запроса «Библиотеки, которые можно посетить в 22:00»
представлена на рисунке 3.10.
SELECT Library.LibID, LibNameLibrary(hour(Library.LibOpens) < 22) and
(hour(Library.LibCloses) > 22);
Рисунок 3.10 - Запрос 2
3. Реализация запроса «Вывести предметы в соответствии с их типом»
представлена на рисунке 3.11.
SELECT *Item(Item.ItType='Книга');
Рисунок 3.11 - Запрос 3
4. Реализация запроса «Вывести предметы, которые никогда не брали»
представлена на рисунке 3.12.
SELECT a.ItID, a.ItNameItem as anot exists(SELECT
b.TakenDateItemTaken as bb.ItID = a.ItID);
Рисунок
3.12 - Запрос 4
5. Реализация запроса «Подсчитать общее количество каждого из
предметов» представлена на рисунке 3.13.
SELECT Item.ItID, Item.ItName, sum(Stored.Quanity) as
CountItem inner join Stored on Item.ItID = Stored.ItIDBY Item.ItID,
Item.ItName;
Рисунок 3.13 - Запрос 5
6. Реализация запроса «Подсчитать общее количество предметов в
библиотеках» представлена на рисунке 3.14.
SELECT sum(Stored.Quanity) as CountItem inner join Stored on
Item.ItID = Stored.ItID;
Рисунок 3.14 - Запрос 6
РАЗДЕЛ 4. СОЗДАНИЕ ПРОГРАММНОГО ПРОДУКТА
4.1 Интерфейс
Данный курсовой проект тему «Автоматизированный библиотечный каталог»
реализован в Microsoft Visual Studio 2010. В реализованной программе мы осуществили вывод
запросов, а так же добавление, удаление и сохранение введённых данных [9]. На
форме существует меню «Справка». Реализация запросов осуществляется на двух
вкладках (рис. 4.5-4.6) [10].
В остальных четырех вкладках реализуется добавление, удаление и
сохранение данных в таблицах [11]. Мы можем добавлять, удалять и сохранять
информацию в таких таблицах как:
А) Item (рис 4.1);
Б) User (рис 4.2);
В)
Librarian (рис 4.2);
Г)
Library (рис. 4.3);
Д)
Working (рис. 4.3);
Е)
Stored (рис. 4.4);
Ж) ItemTaken (рис. 4.4)
В окне «Cправка и данные» (рис. 4.7)
содержится рекомендации пользователю для данной программы «Автоматизированный
библиотечный каталог» [12-14], а именно:
1) запуск программы;
2) выбор требуемого запроса;
3) добавление, удаление и сохранение
данных;
В разделе «О нас» (рис. 4.8) мы можем получить данные о теме курсовой
работы, какие пункты были реализованы, а также информацию о разработчике и
руководителе проекта[14].
Программная часть представлена в Приложении А.
Рисунок 4.1- Таблица Item
Рисунок 4.2 - Таблицы User и
Librarian
Рисунок 4.3 - Таблицы Library
и Working
Рисунок 4.4 - Таблицы Prodazhi и Zakazy
Рисунок 4.5 - Запросы 4, 5 и 6
Рисунок 4.6 - Запросы 1, 2 и 3
Рисунок 4.7 - Документ справки и данных о программе
Рисунок 4.8 - Документ информации о разработчике
В программе реализован отчёт по 4 запросу. В нем отображается название
предметов, которые никогда не брали. Вид отчётов представлен на рисунке 4.9.
Рисунок 4.9 - Отчёт по запросу №4
ВЫВОД
Данный программный комплекс является реализацией курсовой работы по
дисциплине «Организация баз данных» и была разработана база данных по теме
«Автоматизированный библиотечный каталог».
Представлена логическая модель системы баз данных, создано её физическое
проектирование, реализована программная часть.
Автоматизированный библиотечный каталог позволяет выполнять следующие
функции:
добавление записей в базу;
удаление записей из базы;
получение информации о записях.
Это позволяет существенно облегчить поиск необходимого предмета среди
библиотек города, избежать возможности ошибок и увеличить эффективность работы
библиотек. В данной курсовой работе реализованы:
1) ER- диаграмма;
2) Диаграмма прецедентов;
3) Диаграмма ER- экземпляров;
4) Диаграмма функциональной зависимости;
5) Физическая база данных;
6) Программный комплекс.
СПИСОК ЛИТЕРАТУРЫ
http://ru.wikipedia.org/wiki/Электронный_библиотечный_каталог.
http://ru.wikipedia.org/wiki/Библиотека.
1.
Сагайда П. И.
Разработка и организация баз данных в системах автоматизации проектирования и
управления: Учебное пособие для студентов специальности 7.080402. - Краматорск:
ДГМА, 2003. - 160 с.
2.
Карчевский Е. М.
Филиппов И. Е. Access 2010 в примерах - Изд. дом «Казанский федеральный
университет»,2011. - 118 с.
3.
Конноли Т. Базы
данных: проектирование, реализация и сопровождение. Теория и практика / Т.
Конноли, К. Бегг. - 2-е изд. - М.: Изд. дом «Вильямс», 2000. - 1120 с.
4.
Базы данных:
Учебник для вузов / Под ред. А. Д. Хомоненко. - СПб.: Корона принт, 2000. - 416
с.
5.
Джексон
«Проектирование реляционных баз данных » - М: Мир, 1991.-278с.
6.
Реализация баз
данных Microsoft SQL Server 7.0. Учебный курс: официальное пособие для
самостоятельной подготовки. - М.: Русская редакция, 2000. - 528 с.
7.
Базы данных.
Интеллектуальная обработка информации / В. В. Корнеев, А. Ф. Гареев, С. В.
Васютин, В. В. Райх. - М.: Нолидж, 2000. - 351 с.
8.
Гаврилова Т. А.
Базы знаний интеллектуальных систем: Учебное пособие / Т. А. Гаврилова, В. Ф.
Хорошевский. - СПб.: Питер, 2000. - 384 с.
9.
Мартин Р.С.,
Мартин М. Принципы, паттерны и методики гибкой разработки на языке C#, 2011.-
768с.
10.
Рубанцев В.
Тотальный тренинг по C#, 2013. - 213 с.
11.
Фленов М.Е.
Библия C#, 2011. - 560 с.
12.
Абрамян М.Э. Visual C# на примерах, 2008. - 496 с.
13.
Уотсон К. Базовый
курс C#, 2009.- 1216 с.
ПРИЛОЖЕНИЕ А
using
System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;System.Data.OleDb;System.Data.Common;System.Collections;Word
= Microsoft.Office.Interop.Word;BD
{partial class Form1 : Form
{Form1()
{();
}Word.Documents worddocuments;Word.Document
worddocument;Word.Application wordapp;Word.Paragraph
wordparagraph;adapter;tableItem;MyInit1(string year)
{objConnection =OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;
Jet OLEDB:Engine Type=5; Data Source=C:\\Users\\Тамара\\Desktop\\КУРСАЧ!!!\\bd\\BD\\BD\\Microsoft
Access База Данных.accdb");selectCommand = new OleDbCommand();.CommandText
= "SELECT * FROM Item";.CommandType = CommandType.Text;= new
OleDbDataAdapter(selectCommand);= new DataTable();
{.Fill(tableItem);
}(OleDbException exc)
{= null;.Show(exc.Message, "Ошибка",.OK, MessageBoxIcon.Error);
}
{.Connection.Close();
}.PrimaryKey =DataColumn[] {
tableItem.Columns["ItID"] };row =
tableItem.Rows.Find(1);.DefaultView.Sort =
"ItName";.DefaultView.RowFilter = "[ItOutYear]>" +
year;.DataSource = tableItem;
}MyInit2(string year)
{objConnection
=OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Jet OLEDB:Engine
Type=5; Data Source=C:\\Users\\Тамара\\Desktop\\КУРСАЧ!!!\\bd\\BD\\BD\\Microsoft Access База Данных.accdb");selectCommand
= new OleDbCommand();.Connection = objConnection;.CommandText = "SELECT *
FROM Item";.CommandType = CommandType.Text;= new
OleDbDataAdapter(selectCommand);= new DataTable();
{.Fill(tableItem);
}(OleDbException exc)
{= null;.Show(exc.Message, "Ошибка",.OK, MessageBoxIcon.Error);
}
{.Connection.Close();
}.PrimaryKey =DataColumn[] {
tableItem.Columns["ItID"] };row =
tableItem.Rows.Find(1);.DefaultView.Sort =
"ItName";.DefaultView.RowFilter = "[ItOutYear]<" +
year;.DataSource = tableItem;
}MyInit3(string hour)
{objConnection
=OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Jet OLEDB:Engine
Type=5; Data Source=C:\\Users\\Тамара\\Desktop\\КУРСАЧ!!!\\bd\\BD\\BD\\Microsoft Access База Данных.accdb");dbAdapter1
= new OleDbDataAdapter(@"SELECT Library.LibID, LibName FROM Library WHERE
(hour(Library.LibOpens) <" + hour + ") and
(hour(Library.LibCloses) >" + hour + ")",
objConnection);dataTable = new DataTable();.Fill(dataTable);.DataSource =
dataTable;
}MyInit4(string type)
}void Form1_Load(object sender, EventArgs e)
{
// TODO: данная строка кода позволяет загрузить данные в таблицу
"microsoft_Access_База_данныхDataSet.Запрос2". При необходимости она
может быть перемещена или
удалена..запрос2TableAdapter.Fill(this.microsoft_Access_База_данныхDataSet.Запрос2);
// TODO: данная строка кода позволяет загрузить данные в таблицу
"microsoft_Access_База_данныхDataSet.Запрос1". При необходимости она
может быть перемещена или
удалена..запрос1TableAdapter.Fill(this.microsoft_Access_База_данныхDataSet.Запрос1);
// TODO: данная строка кода позволяет загрузить данные в таблицу
"microsoft_Access_База_данныхDataSet.Запрос6". При необходимости она
может быть перемещена или
удалена..запрос6TableAdapter.Fill(this.microsoft_Access_База_данныхDataSet.Запрос6);
// TODO: данная строка кода позволяет загрузить данные в таблицу "microsoft_Access_База_данныхDataSet.Запрос5".
При необходимости она может быть перемещена или
удалена..запрос5TableAdapter.Fill(this.microsoft_Access_База_данныхDataSet.Запрос5);
// TODO: данная строка кода позволяет загрузить данные в таблицу
"microsoft_Access_База_данныхDataSet.Запрос4". При необходимости она
может быть перемещена или
удалена..запрос4TableAdapter.Fill(this.microsoft_Access_База_данныхDataSet.Запрос4);
// TODO: данная строка кода позволяет загрузить данные в таблицу
"microsoft_Access_База_данныхDataSet.ItemTaken". При необходимости
она может быть перемещена или
удалена..itemTakenTableAdapter.Fill(this.microsoft_Access_База_данныхDataSet.ItemTaken);
// TODO: данная строка кода позволяет загрузить данные в таблицу
"microsoft_Access_База_данныхDataSet.Stored". При необходимости она
может быть перемещена или
удалена..storedTableAdapter.Fill(this.microsoft_Access_База_данныхDataSet.Stored);
// TODO: данная строка кода позволяет загрузить данные в таблицу
"microsoft_Access_База_данныхDataSet.Working". При необходимости она
может быть перемещена или
удалена..workingTableAdapter.Fill(this.microsoft_Access_База_данныхDataSet.Working);
// TODO: данная строка кода позволяет загрузить данные в таблицу
"microsoft_Access_База_данныхDataSet.Library". При необходимости она
может быть перемещена или
удалена..libraryTableAdapter.Fill(this.microsoft_Access_База_данныхDataSet.Library);
// TODO: данная строка кода позволяет загрузить данные в таблицу
"microsoft_Access_База_данныхDataSet.Librarian". При необходимости
она может быть перемещена или
удалена..librarianTableAdapter.Fill(this.microsoft_Access_База_данныхDataSet.Librarian);
// TODO: данная строка кода позволяет загрузить данные в таблицу
"microsoft_Access_База_данныхDataSet.User". При необходимости она может
быть перемещена или
удалена..userTableAdapter.Fill(this.microsoft_Access_База_данныхDataSet.User);
// TODO: данная строка кода позволяет загрузить данные в таблицу
"microsoft_Access_База_данныхDataSet.Item". При необходимости она
может быть перемещена или
удалена..itemTableAdapter.Fill(this.microsoft_Access_База_данныхDataSet.Item);
}void toolStripButton1_Click(object sender, EventArgs e)
{.Validate();.itemBindingSource.EndEdit();.itemTableAdapter.Update(this.microsoft_Access_База_данныхDataSet);
}void toolStripButton2_Click(object sender, EventArgs e)
{.Validate();.userBindingSource.EndEdit();.userTableAdapter.Update(this.microsoft_Access_База_данныхDataSet);
}void toolStripButton7_Click(object sender, EventArgs e)
{.Validate();.librarianBindingSource.EndEdit();.librarianTableAdapter.Update(this.microsoft_Access_База_данныхDataSet);
}void toolStripButton3_Click(object sender, EventArgs e)
{.Validate();.libraryBindingSource.EndEdit();.libraryTableAdapter.Update(this.microsoft_Access_База_данныхDataSet);
}void toolStripButton6_Click(object sender, EventArgs e)
{.Validate();.workingBindingSource.EndEdit();.workingTableAdapter.Update(this.microsoft_Access_База_данныхDataSet);
}void toolStripButton4_Click(object sender, EventArgs e)
{.Validate();.storedBindingSource.EndEdit();.storedTableAdapter.Update(this.microsoft_Access_База_данныхDataSet);
}void toolStripButton5_Click(object sender, EventArgs e)
{.Validate();.itemTakenBindingSource.EndEdit();.itemTakenTableAdapter.Update(this.microsoft_Access_База_данныхDataSet);
}void button1_Click(object sender, EventArgs e)
{(radioButton1.Checked)(maskedTextBox1.Text);(radioButton2.Checked)(maskedTextBox1.Text);
}void button2_Click(object sender, EventArgs e)
{(textBox1.Text);
}void radioButton3_CheckedChanged(object sender, EventArgs e)
{("Книга");
}void radioButton4_CheckedChanged(object sender, EventArgs e)
{("Журнал");
}void radioButton5_CheckedChanged(object sender, EventArgs e)
{("Газета");
}void button3_Click(object sender, EventArgs e)
{
{
//Создаем объект Word - равносильно запуску Word
wordapp = new Word.Application();
//Делаем его видимым.Visible = true;template =
Type.Missing;newTemplate = false;documentType =
Word.WdNewDocumentType.wdNewBlankDocument;visible = true;
//Создаем документ 1.Documents.Add(template, ref newTemplate, ref documentType,
ref visible);= wordapp.Documents;name = "Документ1";
//Для Visual Studio 2003
//worddocument=(Word.Document)worddocuments.Item(ref name);=
(Word.Document)worddocuments.get_Item(ref name);
worddocument.Activate();
//Непосредственно работа с объектом Selection
//Устанавливаем шрифт по умолчанию.Content.Font.Size = 15;
worddocument.Content.Font.Bold = 0;
//worddocument.Content.Font.Underline =
Word.WdUnderline.wdUnderlineSingle;.Content.ParagraphFormat.Alignment
=.WdParagraphAlignment.wdAlignParagraphLeft;.Content.ParagraphFormat.LeftIndent
=.Content.Application.CentimetersToPoints((float)2);.Content.ParagraphFormat.RightIndent
=.Content.Application.CentimetersToPoints((float)1);unit;count;extend;
//Курсор ввода устанавливается в начало документа
unit = Word.WdUnits.wdStory;=
Word.WdMovementType.wdMove;.Selection.HomeKey(ref unit, ref extend);
//Добавляем параграфы и выводим в них
текст.Selection.TypeParagraph();.Selection.TypeText("Предметы, которые
никогда не брали");
wordapp.Selection.TypeParagraph();.Selection.TypeText("1006
Бог как иллюзия");.Selection.TypeParagraph();.Selection.TypeText("1008
PHP. Рецепты программирования");.Selection.TypeParagraph();.Selection.TypeText("1009
Подшивка Autobild 2010 г.");.Selection.TypeParagraph();.Selection.TypeText("1010
Подшивка Сhip 2012 г.");.Selection.TypeParagraph();.Selection.TypeText("1011
Подшивка GAME.EXE 1997 г.");.Selection.TypeParagraph();.Selection.TypeText("1012
Подшивка Сomputer Build
2007");.Selection.TypeParagraph();.Selection.TypeText("1005 Занимательная физика");.Selection.TypeParagraph();=
worddocument.Paragraphs[2];.Range wordrange = wordparagraph.Range;
//Подготавливаем параметры для сохранения документаfileName =
@"C:\Документ2.doc";
Object fileFormat =
Word.WdSaveFormat.wdFormatDocument;lockComments = false;password =
"";addToRecentFiles = false;writePassword =
"";readOnlyRecommended = false;embedTrueTypeFonts =
false;saveNativePictureFormat = false;saveFormsData = false;saveAsAOCELetter =
Type.Missing;encoding = Type.Missing;insertLineBreaks =
Type.Missing;allowSubstitutions = Type.Missing;lineEnding =
Type.Missing;addBiDiMarks = Type.Missing;
#if OFFICEXP.SaveAs2000(ref fileName,
#else.SaveAs(ref fileName,
#endiffileFormat, ref lockComments,password, ref
addToRecentFiles, ref writePassword,readOnlyRecommended, ref
embedTrueTypeFonts,saveNativePictureFormat, ref saveFormsData,saveAsAOCELetter,
ref encoding, ref insertLineBreaks,allowSubstitutions, ref lineEnding, ref addBiDiMarks);
}(Exception ex)
{= ex.Message;
}
}void helpToolStripMenuItem_Click(object sender, EventArgs e)
{.ShowHelp(this, "C:\\\\Help.chm");
}
}
}
Похожие работы на - Автоматизированный библиотечный каталог
|