Файл: Курсовая работа по дисциплине Методы и средства проектирования информационных систем и технологий на тему Разработка регламента выполнения процесса Движение библиотечного фонда.docx

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 29.11.2023

Просмотров: 104

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

ОГЛАВЛЕНИЕ

ВВЕДЕНИЕ

1 РАЗВЕРНУТОЕ ОПИСАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ

2 ДИАГРАММЫ UML

2.1 ДИАГРАММА ПРЕЦЕДЕНТОВ

2.2 ДИАГРАММА КЛАССОВ

2.3 ДИАГРАММА ДЕЯТЕЛЬНОСТИ

2.4 ДИАГРАММА ПОСЛЕДОВАТЕЛЬНОСТИ

2.5 ДИАГРАММА КОМПОНЕНТОВ И РАЗВЕРТЫВАНИЯ

ЗАКЛЮЧЕНИЕ

СПИСОК ЛИТЕРАТУРЫ

ПРИЛОЖЕНИЕ А - ЛИСТИНГ ПО

set(L5, 'facec', [0.216,1,.583]);set(L5, 'EdgeColor','none');set(L6, 'facec', [1,1,0.255]);set(L6, 'EdgeColor','none');set(L7, 'facec', [0.306,0.733,1]);set(L7, 'EdgeColor','none');set(A1, 'facec', [.8,.8,.8],'FaceAlpha',.25);set(A1, 'EdgeColor','none');%setappdata(0,'ThetaOld',[90,-90,-90,0,0,0]);%end%%function T = tmat(alpha, a, d, theta)% tmat(alpha, a, d, theta) (T-Matrix used in Robotics)% The homogeneous transformation called the "T-MATRIX"% as used in the Kinematic Equations for robotic type% systems (or equivalent).%% This is equation 3.6 in Craig's "Introduction to Robotics."% alpha, a, d, theta are the Denavit-Hartenberg parameters.%% (NOTE: ALL ANGLES MUST BE IN DEGREES.)%alpha = alpha*pi/180; %Note: alpha is in radians.theta = theta*pi/180; %Note: theta is in radians.c = cos(theta);s = sin(theta);ca = cos(alpha);sa = sin(alpha);T = [c -s 0 a; s*ca c*ca -sa -sa*d; s*sa c*sa ca ca*d; 0 0 0 1];end%%function del_app(varargin)%This is the main figure window close function, to remove any% app data that may be left due to using it for geometry.%CloseRequestFcn% here is the data to remove:% Link1_data: [1x1 struct]% Link2_data: [1x1 struct]% Link3_data: [1x1 struct]% Link4_data: [1x1 struct]% Link5_data: [1x1 struct]% Link6_data: [1x1 struct]% Link7_data: [1x1 struct]% Area_data: [1x1 struct]% patch_h: [1x9 double]% ThetaOld: [90 -182 -90 -106 80 106]% xtrail: 0% ytrail: 0% ztrail: 0% Now remove them.rmappdata(0,'Link1_data');rmappdata(0,'Link2_data');rmappdata(0,'Link3_data');rmappdata(0,'Link4_data');rmappdata(0,'Link5_data');rmappdata(0,'Link6_data');rmappdata(0,'Link7_data');rmappdata(0,'ThetaOld');rmappdata(0,'Area_data');rmappdata(0,'patch_h');rmappdata(0,'xtrail');rmappdata(0,'ytrail');rmappdata(0,'ztrail');delete(fig_1);end%%function [hout,ax_out] = uibutton(varargin)%uibutton: Create pushbutton with more flexible labeling than uicontrol.% Usage:% uibutton accepts all the same arguments as uicontrol except for the% following property changes:%% Property Values% ----------- ------------------------------------------------------% Style 'pushbutton', 'togglebutton' or 'text', default =% 'pushbutton'.% String Same as for text() including cell array of strings and% TeX or LaTeX interpretation.% Interpreter 'tex', 'latex' or 'none', default = default for text()%% Syntax:% handle = uibutton('PropertyName',PropertyValue,...)% handle = uibutton(parent,'PropertyName',PropertyValue,...)% [text_obj,axes_handle] = uibutton('Style','text',...% 'PropertyName',PropertyValue,...)%% uibutton creates a temporary axes and text object containing the text to% be displayed, captures the axes as an image, deletes the axes and then% displays the image on the uicontrol. The handle to the uicontrol is% returned. If you pass in a handle to an existing uicontol as the first% argument then uibutton will use that uicontrol and not create a new one.%% If the Style is set to 'text' then the axes object is not deleted and the% text object handle is returned (as well as the handle to the axes in a% second output argument).%% See also UICONTROL.% Version: 1.6, 20 April 2006% Author: Douglas M. Schwarz% Email: dmschwarz=ieee*org, dmschwarz=urgrad*rochester*edu% Real_email = regexprep(Email,{'=','*'},{'@','.'})% Detect if first argument is a uicontrol handle.keep_handle = false;if nargin > 0h = varargin{1};if isscalar(h) && ishandle(h) && strcmp(get(h,'Type'),'uicontrol')keep_handle = true;varargin(1) = [];endend% Parse arguments looking for 'Interpreter' property. If found, note its% value and then remove it from where it was found.interp_value = get(0,'DefaultTextInterpreter');arg = 1;remove = [];while arg <= length(varargin)v = varargin{arg};if isstruct(v)fn = fieldnames(v);for i = 1:length(fn)if strncmpi(fn{i},'interpreter',length(fn{i}))interp_value = v.(fn{i});v = rmfield(v,fn{i});endendvarargin{arg} = v;arg = arg + 1;elseif ischar(v)if strncmpi(v,'interpreter',length(v))interp_value = varargin{arg+1};remove = [remove,arg,arg+1];endarg = arg + 2;elseif arg == 1 && isscalar(v) && ishandle(v) && ...any(strcmp(get(h,'Type'),{'figure','uipanel'}))arg = arg + 1;elseerror('Invalid property or uicontrol parent.')endendvarargin(remove) = [];% Create uicontrol, get its properties then hide it.if keep_handleset(h,varargin{:})elseh = uicontrol(varargin{:});ends = get(h);if

s5 = getappdata(0,'Link5_data');s6 = getappdata(0,'Link6_data');s7 = getappdata(0,'Link7_data');%A1 = getappdata(0,'Area_data');Link1 = s1.V1;Link2 = (T_01*s2.V2')';Link3 = (T_02*s3.V3')';Link4 = (T_03*s4.V4')';Link5 = (T_04*s5.V5')';Link6 = (T_05*s6.V6')';Link7 = (T_06*s7.V7')';% Tool = T_07;% if sqrt(Tool(1,4)^2+Tool(2,4)^2)<514% Err2 = 1;% break% end%handles = getappdata(0,'patch_h'); %L1 = handles(1);L2 = handles(2);L3 = handles(3);L4 = handles(4);L5 = handles(5);L6 = handles(6);L7 = handles(7);Tr = handles(9);%set(L1,'vertices',Link1(:,1:3),'facec', [0.717,0.116,0.123]);set(L1, 'EdgeColor','none');set(L2,'vertices',Link2(:,1:3),'facec', [0.216,1,.583]);set(L2, 'EdgeColor','none');set(L3,'vertices',Link3(:,1:3),'facec', [0.306,0.733,1]);set(L3, 'EdgeColor','none');set(L4,'vertices',Link4(:,1:3),'facec', [1,0.542,0.493]);set(L4, 'EdgeColor','none');set(L5,'vertices',Link5(:,1:3),'facec', [0.216,1,.583]);set(L5, 'EdgeColor','none');set(L6,'vertices',Link6(:,1:3),'facec', [1,1,0.255]);set(L6, 'EdgeColor','none');set(L7,'vertices',Link7(:,1:3),'facec', [0.306,0.733,1]);set(L7, 'EdgeColor','none');% store trail in appdataif trail == 'y'x_trail = getappdata(0,'xtrail');y_trail = getappdata(0,'ytrail');z_trail = getappdata(0,'ztrail');%xdata = [x_trail T_04(1,4)];ydata = [y_trail T_04(2,4)];zdata = [z_trail T_04(3,4)];%setappdata(0,'xtrail',xdata); % used for trail tracking.setappdata(0,'ytrail',ydata); % used for trail tracking.setappdata(0,'ztrail',zdata); % used for trail tracking.%set(Tr,'xdata',xdata,'ydata',ydata,'zdata',zdata);enddrawnowendsetappdata(0,'ThetaOld',[theta1,theta2,theta3,theta4,theta5,theta6]);end%%%%%%function InitHome% Use forward kinematics to place the robot in a specified% configuration.% Figure setup data, create a new figure for the GUIset(0,'Units','pixels')dim = get(0,'ScreenSize');fig_1 = figure('doublebuffer','on','Position',[0,35,dim(3)-200,dim(4)-110],...'MenuBar','none','Name',' 3D Puma Robot Graphical Demo',...'NumberTitle','off','CloseRequestFcn',@del_app);hold on;%light('Position',[-1 0 0]);light % add a default lightdaspect([1 1 1]) % Setting the aspect ratioview(135,25)xlabel('X'),ylabel('Y'),zlabel('Z');title('WWU Robotics Lab PUMA 762');axis([-1500 1500 -1500 1500 -1120 1500]);plot3([-1500,1500],[-1500,-1500],[-1120,-1120],'k')plot3([-1500,-1500],[-1500,1500],[-1120,-1120],'k')plot3([-1500,-1500],[-1500,-1500],[-1120,1500],'k')plot3([-1500,-1500],[1500,1500],[-1120,1500],'k')plot3([-1500,1500],[-1500,-1500],[1500,1500],'k')plot3([-1500,-1500],[-1500,1500],[1500,1500],'k')s1 = getappdata(0,'Link1_data');s2 = getappdata(0,'Link2_data');s3 = getappdata(0,'Link3_data');s4 = getappdata(0,'Link4_data');s5 = getappdata(0,'Link5_data');s6 = getappdata(0,'Link6_data');s7 = getappdata(0,'Link7_data');A1 = getappdata(0,'Area_data');%a2 = 650;a3 = 0;d3 = 190;d4 = 600;Px = 5000;Py = 5000;Pz = 5000;%The 'home' position, for init.t1 = 90;t2 = -90;t3 = -90;t4 = 0;t5 = 0;t6 = 0;% Forward KinematicsT_01 = tmat(0, 0, 0, t1);T_12 = tmat(-90, 0, 0, t2);T_23 = tmat(0, a2, d3, t3);T_34 = tmat(-90, a3, d4, t4);T_45 = tmat(90, 0, 0, t5);T_56 = tmat(-90, 0, 0, t6);% Each link fram to base frame transformationT_02 = T_01*T_12;T_03 = T_02*T_23;T_04 = T_03*T_34;T_05 = T_04*T_45;T_06 = T_05*T_56;% Actual vertex data of robot linksLink1 = s1.V1;Link2 = (T_01*s2.V2')';Link3 = (T_02*s3.V3')';Link4 = (T_03*s4.V4')';Link5 = (T_04*s5.V5')';Link6 = (T_05*s6.V6')';Link7 = (T_06*s7.V7')';% points are no fun to watch, make it look 3d.L1 = patch('faces', s1.F1, 'vertices' ,Link1(:,1:3));L2 = patch('faces', s2.F2, 'vertices' ,Link2(:,1:3));L3 = patch('faces', s3.F3, 'vertices' ,Link3(:,1:3));L4 = patch('faces', s4.F4, 'vertices' ,Link4(:,1:3));L5 = patch('faces', s5.F5, 'vertices' ,Link5(:,1:3));L6 = patch('faces', s6.F6, 'vertices' ,Link6(:,1:3));L7 = patch('faces', s7.F7, 'vertices' ,Link7(:,1:3));A1 = patch('faces', A1.Fa, 'vertices' ,A1.Va(:,1:3));Tr = plot3(0,0,0,'b.'); % holder for trail paths%setappdata(0,'patch_h',[L1,L2,L3,L4,L5,L6,L7,A1,Tr])%setappdata(0,'xtrail',0); % used for trail tracking.setappdata(0,'ytrail',0); % used for trail tracking.setappdata(0,'ztrail',0); % used for trail tracking.%set(L1, 'facec', [0.717,0.116,0.123]);set(L1, 'EdgeColor','none');set(L2, 'facec', [0.216,1,.583]);set(L2, 'EdgeColor','none');set(L3, 'facec', [0.306,0.733,1]);set(L3, 'EdgeColor','none');set(L4, 'facec', [1,0.542,0.493]);set(L4, 'EdgeColor','none');set(L5, 'facec', [0.216,1,.583]);set(L5, 'EdgeColor','none');set(L6, 'facec', [1,1,0.255]);set(L6, 'EdgeColor','none');set(L7, 'facec', [0.306,0.733,1]);set(L7, 'EdgeColor','none');set(A1, 'facec', [.8,.8,.8],'FaceAlpha',.25);set(A1, 'EdgeColor','none');%setappdata(0,'ThetaOld',[90,-90,-90,0,0,0]);%end%%function T = tmat(alpha, a, d, theta)% tmat(alpha, a, d, theta) (T-Matrix used in Robotics)% The homogeneous transformation called the "T-MATRIX"% as used in the Kinematic Equations for robotic type% systems (or equivalent).%% This is equation 3.6 in Craig's "Introduction to Robotics."% alpha, a, d, theta are the Denavit-Hartenberg parameters.%% (NOTE: ALL ANGLES MUST BE IN DEGREES.)%alpha = alpha*pi/180; %Note: alpha is in radians.theta = theta*pi/180; %Note: theta is in radians.c = cos(theta);s = sin(theta);ca = cos(alpha);sa = sin(alpha);T = [c -s 0 a; s*ca c*ca -sa -sa*d; s*sa c*sa ca ca*d; 0 0 0 1];end%%function del_app(varargin)%This is the main figure window close function, to remove any% app data that may be left due to using it for geometry.%CloseRequestFcn% here is the data to remove:% Link1_data: [1x1 struct]% Link2_data: [1x1 struct]% Link3_data: [1x1 struct]% Link4_data: [1x1 struct]% Link5_data: [1x1 struct]% Link6_data: [1x1 struct]% Link7_data: [1x1 struct]% Area_data: [1x1 struct]% patch_h: [1x9 double]% ThetaOld: [90 -182 -90 -106 80 106]% xtrail: 0% ytrail: 0% ztrail: 0% Now remove them.rmappdata(0,'Link1_data');rmappdata(0,'Link2_data');rmappdata(0,'Link3_data');rmappdata(0,'Link4_data');rmappdata(0,'Link5_data');rmappdata(0,'Link6_data');rmappdata(0,'Link7_data');rmappdata(0,'ThetaOld');rmappdata(0,'Area_data');rmappdata(0,'patch_h');rmappdata(0,'xtrail');rmappdata(0,'ytrail');rmappdata(0,'ztrail');delete(fig_1);end%%function [hout,ax_out] = uibutton(varargin)%uibutton: Create pushbutton with more flexible labeling than uicontrol.% Usage:% uibutton accepts all the same arguments as uicontrol except for the% following property changes:%% Property Values% ----------- ------------------------------------------------------% Style 'pushbutton', 'togglebutton' or 'text', default =% 'pushbutton'.% String Same as for text() including cell array of strings and% TeX or LaTeX interpretation.% Interpreter 'tex', 'latex' or 'none', default = default for text()%% Syntax:% handle = uibutton('PropertyName',PropertyValue,...)% handle = uibutton(parent,'PropertyName',PropertyValue,...)% [text_obj,axes_handle] = uibutton('Style','text',...% 'PropertyName',PropertyValue,...)%% uibutton creates a temporary axes and text object containing the text to% be displayed, captures the axes as an image, deletes the axes and then% displays the image on the uicontrol. The handle to the uicontrol is% returned. If you pass in a handle to an existing uicontol as the first% argument then uibutton will use that uicontrol and not create a new one.%% If the Style is set to 'text' then the axes object is not deleted and the% text object handle is returned (as well as the handle to the axes in a% second output argument).%% See also UICONTROL.% Version: 1.6, 20 April 2006% Author: Douglas M. Schwarz% Email: dmschwarz=ieee*org, dmschwarz=urgrad*rochester*edu% Real_email = regexprep(Email,{'=','*'},{'@','.'})% Detect if first argument is a uicontrol handle.keep_handle = false;if nargin > 0h = varargin{1};if isscalar(h) && ishandle(h) && strcmp(get(h,'Type'),'uicontrol')keep_handle = true;varargin(1) = [];endend% Parse arguments looking for 'Interpreter' property. If found, note its% value and then remove it from where it was found.interp_value = get(0,'DefaultTextInterpreter');arg = 1;remove = [];while arg <= length(varargin)v = varargin{arg};if isstruct(v)fn = fieldnames(v);for i = 1:length(fn)if strncmpi(fn{i},'interpreter',length(fn{i}))interp_value = v.(fn{i});v = rmfield(v,fn{i});endendvarargin{arg} = v;arg = arg + 1;elseif ischar(v)if strncmpi(v,'interpreter',length(v))interp_value = varargin{arg+1};remove = [remove,arg,arg+1];endarg = arg + 2;elseif arg == 1 && isscalar(v) && ishandle(v) && ...any(strcmp(get(h,'Type'),{'figure','uipanel'}))arg = arg + 1;elseerror('Invalid property or uicontrol parent.')endendvarargin(remove) = [];% Create uicontrol, get its properties then hide it.if keep_handleset(h,varargin{:})elseh = uicontrol(varargin{:});ends = get(h);if


20



Рисунок 2.1 – Диаграмма прецедентов модернизированной задачи «Движение библиотечного фонда» ИС библиотеки предприятия

2.2 ДИАГРАММА КЛАССОВ


Для представления формализованного описания логической структуры задачи используется методология объектно-ориентированного проектирования UML. UML – это графический язык визуализации, специфицирования и документирования.

Концептуальная модель UML включает в себя три составные части:

  • основные строительные блоки языка;

  • правила их сочетания;

  • строительные блоки UML.

UML включает три вида строительных блоков:

  • сущности;

  • отношения;

  • диаграммы.

Диаграмма в UML – это графическое представление набора элементов.

В результате построения диаграммы классов был разработан ряд классов, представленных в таблице 2.1 соединенные связями, указанными в таблице 2.2.

Таблица 2.1 – Классы, использованные при построении диаграммы классов

№ п/п

Наименование класса

Примечание

1

Сотрудники

Сотрудник отдела комплектования библиотеки предприятия

2

Книги

Информация о книгах, которые находятся в библиотечном фонде

3

Экземпляры

Информация об экземплярах книг библиотечного фонда

4

Акты списания

Информация об актах списания книг

5

Причины списания

Информация о причинах списания книг

6

Издательства

Информация об издательствах книг

7

Тип литературы

Информация о типах литературы

8

Языки книги

Информация о языках книги

9

Авторы

Информация об авторах книг

10

Партии

Информация о поступивших партиях книг


Таблица 2.2 – Отношения между классами

№ п/п

Класс

Вид связи

Класс

Кардинальность


1

Книги

Агрегация

Экземпляры

1:M

2

Языки книги

Агрегация

Книги

1:М

3

Тип литературы

Агрегация

Книги

1:М

4

Сотрудники

Агрегация

Акты списания

1:М

5

Партии

Агрегация

Экземпляры

1:М

6

Акты списания

Агрегация

Экземпляры

1:М

7

Издательства

Агрегация

Экземпляры

1:М

8

Причины списания

Агрегация

Акты списания

1:М

9

Книги

Агрегация

Авторы

1:М(М:М?)


Диаграмма классов для задачи «Движение библиотечного фонда» представлена на рисунке 2.2

Диаграмма классов логически построена на основе будущих форм разрабатываемой ИС. «Взаимодействие» с формами осуществляется с помощью кнопок, каждая из которых поддерживается методом соответствующего класса. Напр. форма Книги.

В программе она вызывается следующим образом:

Нажатие на кнопку Каталог книг – появляется форма с перечнем книг. Можно выбрать кнопки - добавить книгу, изменить, удалить книгу.

Добавить книгу – отображаются все поля, которые отражены в классе «Книги». Поле автор – специальная кнопка, которая вызывает форму авторы – т.о. можно выбрать автора из появившегося перечня авторов. Такие же поля Тип литературы и Язык книги.

Кнопки «Сохранение данных» и «Отмена» не отражены в реализации класса «Книги».






Рисунок 2.2 – Диаграмма классов для задачи «Движение библиотечного фонда»

2.3 ДИАГРАММА ДЕЯТЕЛЬНОСТИ


Для представления формализованного описания логической структуры задачи используется метод объектно-ориентированного проектирования UML.

К диаграммам поведения можно отнести следующие диаграммы:

  • деятельности (Activity diagram);

  • состояний (State Machine diagram);

  • вариантов использования (Use case diagram).

Диаграмма деятельности для прецедента «Формирование библиотечного фонда» задачи «Движение библиотечного фонда» представлена на рисунке 2.3.

Реализация прецедента «Формирование библиотечного фонда» возможна тремя поведенческими аспектами:

Выбор кнопки Каталог книг, Каталог экземпляров книг или Выход.

При открытии формы Каталог книг (см. описание диаграммы классов) главная форма остается открытой и возможен возврат к главной форме без закрытия формы Каталог книг.



Рисунок 2.3 – Диаграмма деятельности для прецедента «Формирование библиотечного фонда» задачи «Движение библиотечного фонда»

2.4 ДИАГРАММА ПОСЛЕДОВАТЕЛЬНОСТИ


Для представления формализованного описания логической структуры задачи используется метод объектно-ориентированного проектирования UML.

В унифицированном языке моделирования UML существуют два вида диаграмм, которые помогают документировать и описывать эти взаимодействия: диаграмма последовательности взаимодействия и диаграмма сотрудничества объектов. Обе они известны как диаграммы взаимодействия. Для данной задачи была разработана диаграмма последовательности, представленная на рисунке 2.4.

На диаграмме приведены основные этапы реализации функциональной задачи индивидуального учета библиотечного фонда путем формирования документа «Инвентарная книга».

Последовательность при выполнении данной задачи:

  • осуществление входа в систему;

  • введение логина и пароля;

  • вход в форму «Инвентарная книга»;

  • введение номера партии;

  • сохранение результатов;

  • печать документа.





Рисунок 2.4 – Диаграмма последовательности для прецедента «Формирование «Инвентарной книги»» задачи «Движение библиотечного фонда»

2.5 ДИАГРАММА КОМПОНЕНТОВ И РАЗВЕРТЫВАНИЯ


Диаграмма компонентов, в отличие от прежде рассмотренных диаграмм, описывает особенности физического представления системы. Она позволяет определить архитектуру системы, которая разрабатывается, установив зависимости между программными компонентами, в роли которых может выступать исходный и выполняемый код. Основными графическими элементами диаграммы компонентов есть компоненты, интерфейсы и зависимости между ними.

Диаграмма развертывания предназначена для визуализации элементов и компонентов программы, существующих лишь на этапе ее исполнения. При этом представляются только компоненты-экземпляры программы, являющиеся исполнимыми файлами или динамическими библиотеками. Те компоненты, которые не используются на этапе исполнения, на диаграмме развертывания не показываются. Компоненты с исходными текстами программ могут присутствовать только на диаграмме компонентов. На диаграмме развертывания они не указываются.

Структурно программа реализована следующим образом:

Данные хранятся в таблицах БД MySQL.

Проект программы представлен 3-мя пакетами:

1) Вспомогательные классы

2) Классы реализации форм (пакет View).

3) библиотеки (jasperreports и др.)

Исполняемый файл Library.jar

Диаграмма компонентов, разработанная для данной задачи, реализована в двух вариантах и представлена на рисунке

- (1-ый вариант)

Логическое упрощенное представление реализации программы. Возможно даже не полное отражение и соответствие со структурой программы (см.выше), а просто возможно ли такое представление программы?

- (2-ой вариант)

Логически совпадает с существующей структурой программы (см.выше).

Данные хранятся в таблицах БД MySQL.(пакет Model)

Вспомогательные классы (пакет Control )

Классы реализации форм (пакет View).

Исполняемый файл Library.jar

Можно ли соединить DB MySQL с соответ-щим пакетом Model?

Разработка диаграммы развертывания осуществляется для моделирования требуемых устройств (сервер, рабочая станция клиента), драйвера (для работы с БД), процессов (реализуемых классами) и связи между ними.

Диаграмма развертывания, разработанная для данной задачи, представлена на рисунке: