Разработка информационно-справочной системы 'Аптека'

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    2,28 Мб
  • Опубликовано:
    2014-01-20
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка информационно-справочной системы 'Аптека'










Курсовая работа

по дисциплине

"Визуальное программирование"

Тема курсовой работы:

"Разработка информационно-справочной системы "Аптека"

Содержание

 

Введение

Глава I. Теория

Построение базы данных в MS Access

Построение визуальной части в Delphi

Глава II. Практика

Построение базы данных в MS Access

Соединение Базы Данных

Создание запросов поисков и вывод таблиц

Заключение

Список использованной литературы

Приложения

Введение


В данной курсовой работе будет приведен пример приложения, показывающею базу данных товаров Аптеки. Приложение было разработано в среде Delphi7. В приложении будет реализован показ таблиц: продавцы, товары, чеки, поставка, счета. А также защита паролем и система поиска.

Глава I. Теория


Построение базы данных в MS Access


Основные компоненты MS Access:

·        Таблицы

·        Запросы

·        Отчеты

·        Формы

MS Access поддерживает реляционную модель данных, т.е. база данных состоит из множества взаимосвязанных отношений, каждому отношению соответствует отдельная таблица.

Таблицы состоят из строк и столбцов. Столбцы таблицы отражают общие свойства или характеристики объектов реального мира, которые моделируются с использованием данной таблицы. Для каждого свойства пользователь выделяет один столбец. Строки таблицы соответствуют различным экземплярам реальных объектов и называются записям.

Желательно для каждой таблицы определить первичный ключ - столбец или набор столбцов однозначно определяющих строку таблицы. В интерфейсе пользователя Microsoft Access можно создать таблицу в базе данных, используя любой из трех методов:

) Можно создать таблицу с помощью мастера таблиц.

) Таблицу можно создать путем ввода данных в таблицу.

) Можно создать таблицу в режиме конструктора.

Запрос-команда на выбор, просмотр, изменение, создание или удаление данных, необходим для решения задач анализа данных.

Основные функции запросов:

·              поиск записи по условию

·              сортировка записей в требуемом порядке

база информационная справочная программирование

·              получение выборки записей таблицы, удовлетворяющей заданному условию, или задание фильтра для таблицы

Создается с помощью Мастера создания запросов, или с помощью Конструктора.

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

В Microsoft Access можно создавать отчеты различными способами:

Конструктор

Мастер отчетов

Автоотчет: в столбец

Автоотчет: ленточный

Мастер диаграмм

Почтовые наклейки.

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

Внешний вид формы выбирается в зависимости от того, с какой целью она создается. Формы Access позволяют выполнять задания, которые нельзя выполнить в режиме таблицы. Формы позволяют вычислять значения и выводить на экран результат. Источником данных для формы являются записи таблицы или запроса.

Форма предоставляет возможности для:

ввода и просмотра информации базы данных

изменения данных

печати

создания сообщений

Способы создания форм:

Конструктор форм (предназначен для создания формы любой сложности)

Мастер форм (позволяет создавать формы различные как по стилю, так и по содержанию)

Автоформа: в столбец (многостраничная - поля для записи выводятся в один столбец, в форме одновременно отображаются данные для одной записи)

Автоформа: ленточная (все поля записи выводятся в одну строку, в форме отображаются все записи)

Автоформа: табличная (отображение записей осуществляется в режиме таблица)

Автоформа: сводная таблица

Автоформа: сводная диаграмма

Диаграмма (создается форма с диаграммой, построенной Microsoft Graph)

Сводная таблица (создается форма Access, отображаемая в режиме сводной таблицы Excel)

Построение визуальной части в Delphi


Процесс создания простейшего оконного приложения можно разбить на два этапа: этап конструирования формы и этап программирования.

1.      На этапе конструирования (создание формы приложения) выбираются необходимые компоненты из палитры компонентов и размещают их на форму: выполнить щелчок левой кнопкой мыши на компоненте, затем щелкнуть левой кнопкой мыши в то место формы, куда должен быть помещен компонент.

2.      Вид компонента, его размер и поведение определяют значения свойств компонента. Чтобы придать компоненту нужные свойства, следует использовать страницу properties в окне Инспектора объектов. Эта страница состоит из двух колонок: левая содержит название свойства, а правая - конкретное значение свойства. Окно инспектора объектов отображает информацию для того компонента, который выделен щелчком мыши. Строки могут отображать простые и сложные свойства. К простым относятся свойства, которые определяются одним значением - числом, строкой символов и т.д. Сложные свойства определяются совокупностью значений. слева от имени таких свойств указывается символ "+".

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

Рассмотрим основные особенности этого этапа.

.        Каждый компонент может реагировать на определенный набор событий. Для того чтобы узнать, на какие именно события откликается компонент, необходимо выделить его щелчком мыши на форме, после чего перейти на страницу events инспектора объектов.

Страница содержит две колонки. В первой колонке перечислены имена событий, на которые откликается компонент, вторая заполняется программистом и содержит имена созданных обработчиков событий.

.        Обработчик события представляет собой процедуру и имеет имя, состоящее из двух частей, разделенных точкой. Первая часть представляет собой имя класса создаваемой формы. Вторая часть имени создается либо программистом, либо создается средой Delphi. Если Delphi автоматически формирует вторую часть имени для обработчика, то оно представляет собой объединение имени компонента и имени события без предлога Оn.

1.      Label-текстовое поле.

2.      Edit-текстовое поле с возможность изменения содержимого.

3.      Button - командная кнопка.

4.      Combobox - окно с выбором одного из нескольких вариантов.

5.      MainMenu PopupMenu - набор именованных команд и других вложенных меню (подменю), которые сгруппированы в отдельные функциональные категории. В зависимости от уровня охвата функциональности различают главное меню и локальное меню

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

7.      Timer - позволяет отсчитывать время (программируемая).

8.      StatusBar-Панель, которую можно разделить на несколько частей и в каждую из них вставить различный текст (так же можно поставить дату и время) располагается внизу формы

9.      ADO Connection - Элемент соединяющий БД с программой

10.    ADO Table - Компонент через который идет обращение к таблице расположенной в базе данных

11.    Data Source - Связывает ADO Table с другими элементами (пример DBGrid и DBnavigation).

12.    DBGrid - используют для отображения и редактирования содержимого таблиц

13.    DBNavigator-набор кнопок, при щелчках на которых во время работы программы происходит перемещение указателя текущей записи к следующей, предыдущей, первой или последней записи базы данных, а также добавление к файлу данных новой записи, удаление текущей записи

А так же Message и MessageDlg.

Глава II. Практика


Построение базы данных в MS Access


Создаем таблицу в режиме конструктора. В окне конструктора необходимо вводить слева названия поля, а справа указывать тип данных. Крайний правый столбец - Описание, туда можно вписать подсказку, которая будет выходить при наводке указателя мыши на столбец. Так же необходимо указать ключевое поле, с помощью которого будут создаваться связи между таблицами. Создадим таблицу "Товары", и укажем поле "Код" как ключевой. (Смотри рисунок 1)

Рисунок 1

По аналогии создадим остальные таблицы:

.        Продавцы (Ключевое поле-Код продавца) Рисунок 2

2.      Поставка (Ключевое поле-Код товара) Рисунок 3

.        Чек (Ключевое поле - Код) Рисунок 4

Рисунок 2

Рисунок 3

Рисунок 4

Теперь откроем таблицы в режиме таблиц и заполним их.

Рисунок 5 Таблица чеков

Рисунок 6 Таблица товаров

Рисунок 7 Таблица поставки

Рисунок 8 Таблица Продавцов

Построение визуальной части в Delphi

Создадим главную форму, в которой будут содержаться компоненты ADOConnection, ADOTable, DataSource, MainMenu, PopupMenu, StatusBar и кнопки открывающие другие формы, но перед этим создадим схему связей всех форм, которая в данном случае будет выглядеть так:

Рисунок 9

Для начала расположим элементы на форму и дадим названия (Рисунок 10):

Рисунок 10

Элементы ADOTable и DataSource добавляются попарно на каждую таблицу. Для создания Главного и всплывающего меню делаем двойной щелчок мыши на элемент MainMenu Popupmenu и в появившемся окне добавляем кнопки и переименовываем их (смотри Рисунок 11 и 12). Для указания команд, необходимо щелкнуть мышью на созданную вами кнопку 2 раза в режиме добавления кнопок.

Рисунок 11 Создание кнопок в Главном меню

Рисунок 12 Создание кнопок в Всплывающем меню

Для того что бы кнопки открывали другие формы необходимо прописать formХ. show; где Х-это число от 2 до 7 обозначающее номер формы.

Для того что бы снова не писать повторяющиеся команды в кнопках расположенных на главном и всплывающем меню, укажем ссылки на кнопки уже созданные ранее. То есть для кнопки из меню напишем buttonХclick (buttonХ) где Х номер кнопки на которую мы ссылаемся.

Что бы создать кнопку выхода, которая будет спрашивать об уверенности пользователя закрыть программу необходимо поместить в кнопку данный код: "If MessageDlg ('Вы действительно хотите выйти? ',mtConfirmation, [mbYes,mbNo],0) = mrYes then Form1. Close; " Она будет находится на каждой форме. (Рисунок 13)

Рисунок 13

Для создания часов в StatusBar и краткой информаций о создателе. Разделим его на 3 раздела. Для этого щелкаем по параметру Panels и добавляем новые панели (Рисунок 14). Для того что бы создать часы и информацию в панель, нужно ввести в код для таймера:

"statusbar1. Panels [0]. Text: =datetostr (now);

statusbar1. Panels [1]. Text: =timetostr (now);. panels [2]. text: ='Шарипов Есет Бау 11-6'"

Рисунок 14

Установка защиты паролем. В данной работе создана схема защиты паролем путем скрывания большинства кнопок и раскрыть их можно только вписав код и нажав "Вход" после чего должно выйти сообщение либо об ошибке либо о Входе в программу (или верном пароле) после чего поле ввода пароля и кнопка проверки становятся недоступны. Для создания такой защиты необходимо скрыть все нужные нам кнопки при создании формы путем вписывания кода в раздел "при создании формы Form Create. Скрытие кнопок делается двумя путями: либо устанавливается параметр visible false либо вписав команду X. hide где Х-кнопка которую мы скрываем. После ввода верного пароля мы указываем либо команду X. Show либо изменяем параметр visible true проверка пароля делается вот так: "if edit1. Text='240594"

Как выглядит работа защиты паролем:

Рисунок 15 До ввода пароля

Рисунок 16 Неверный пароль

Рисунок 17 Верный пароль

Соединение Базы Данных


ADOConnection: двойной щелчок по пиктограмме элемента выбираем параметр Microsoft Jet 4.0 OLE DB Provider и в следующей вкладке указываем путь к базе (Рисунок 18):

Рисунок 18

Создав пары ADOTable-DataSource, соединяем Table с Connection, Source с Table указав в Table имя нужной нам таблице как на рисунках 19 и 20.

Рисунок 19                                               Рисунок 20

Создание запросов поисков и вывод таблиц


Расставляем DBGrid, Edit, Button1-2,DBNavigation,Label на форму (Рисунок 20)

Рисунок 21 Таблица Продавцы

Соединяем DBGrrid и DBNavigation с DataSource

А в процедуру "при изменении Edit" впишем

"if edit1. text=''then showmessage ('необходимо ввести хотя бы 1 символ')begin. visible: =true;. Adotable2. active: =true;. Adotable2. locate ('ФИО Продавца',Edit1. text, [loPartialKey]); "

Получится, что при вводе Фамилии начинается поиск в таблице, если есть совпадение то курсор автоматически наводится на искомую строку (Рисунок 22):

Рисунок 22

А в случае если после становится пустым (Рисунок 23)

Рисунок 23

по аналогии создаем другие формы с таблицами и поиском

Эта форма отличается тем, что в ней присутствует выбор между двумя параметрами поиска, который реализован через ComboBox

"if edit1. text=''then showmessage ('необходимо ввести хотя бы 1 символ')

else begin. visible: =true;. Adotable3. active: =true;combobox1. itemindex=0 then. Adotable3. locate ('ФИО Продавца',Edit1. text, [loPartialKey])form1. Adotable3. locate ('Наименование',Edit1. text, [loPartialKey]); " (Рисунок 24)

Рисунок 24 Отчет по покупкам

Рисунок 25 Список товаров

Рисунок 26 Список Чеков

Отличие поставки в том, что дополнительно указывается количество и цена указанного товара, а так же суммы на которую он был закуплен (Рисунок29). Для создания подсчета суммы необходимо добавить 2 DBEdit и 1 Label соединить DBEdit с таблицей через DataSource Рисунок 27 и 28

                   

Рисунок 27                                               Рисунок 28

И прописать "label2. Caption: =inttostr (strtoint (dbedit1. text) *strtoint (dbedit2. text)); " при изменении одного из DBEdit

Рисунок 29 Поставка

Рисунок 30. О программе

Заключение


В данной курсовой работе была разработана модель работы с базой данных Аптеки, которая позволяет легко ориентироваться, добавлять изменения в имеющие данные, удалять содержащиеся в ней данные.

При выполнении курсовой работы были изучены технологии связывания MS Access со средой программирования Delphi.

Список использованной литературы


1.      Ешпанова М. Д, Ибрашева А.Т. Объектно-ориентированное программирование. Часть 1. Методические указания к выполнению лабораторных работ для студентов специальности 5В070200-"Автоматизация и управление"-Алматы: АУЭС, 2010-55с.

2.      Культин Н.Б. Delphi в задачах и примерах. - СПб.: БХВ-Петербург, 2004. - 288 с.: ил.

3.      Фленов М. Библия для программиста в среде Delphi. - СПб: БХВ-Петербург, 2008.

4. http://www.delphiplus.org/programirovanie-baz-dannih-v-delphi/prostoi-otchet.html

. http://www.delphiplus.org/programirovanie-baz-dannih-v-delphi/ustanovka-quick-report.html

Приложения

Приложение А

 

unit Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, DB, StdCtrls, Grids, DBGrids, ADODB, ExtCtrls, DBCtrls, ComCtrls,;= class (TForm): TButton;: TButton;: TButton;: TButton;: TButton;: TButton;: TADOConnection;: TDataSource;: TADOTable;: TDataSource;: TADOTable;: TDataSource;: TADOTable;: TDataSource;: TADOTable;: TStatusBar;: TMainMenu;: TPopupMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TTimer;: TButton;: TEdit;: TDataSource;: TADOTable;Button1Click (Sender: TObject);Button2Click (Sender: TObject);Button3Click (Sender: TObject);Button4Click (Sender: TObject);Button5Click (Sender: TObject);Button6Click (Sender: TObject);N8Click (Sender: TObject);N1Click (Sender: TObject);Timer1Timer (Sender: TObject);N5Click (Sender: TObject);N4Click (Sender: TObject);N6Click (Sender: TObject);N7Click (Sender: TObject);N9Click (Sender: TObject);N10Click (Sender: TObject);FormCreate (Sender: TObject);Button7Click (Sender: TObject);Button8Click (Sender: TObject);Edit1KeyPress (Sender: TObject; var Key: Char);

{ Private declarations }

{ Public declarations };: TForm1;Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8;

{$R *. dfm}TForm1. Button1Click (Sender: TObject);. show;;TForm1. Button2Click (Sender: TObject);. show;;TForm1. Button3Click (Sender: TObject);. show;;TForm1. Button4Click (Sender: TObject);. show;;TForm1. Button5Click (Sender: TObject);MessageDlg ('Вы действительно хотите выйти? ',mtConfirmation, [mbYes,mbNo],0) = mrYes then Form1. Close;;TForm1. Button6Click (Sender: TObject);. show;;TForm1. N8Click (Sender: TObject);. show;;TForm1. N1Click (Sender: TObject);. show;;TForm1. Timer1Timer (Sender: TObject);. Panels [0]. Text: =datetostr (now);. Panels [1]. Text: =timetostr (now);. panels [2]. text: ='Шарипов Есет Бау 11-6';TForm1. N5Click (Sender: TObject);click (button3);;TForm1. N4Click (Sender: TObject);click (button1);;TForm1. N6Click (Sender: TObject);click (button4);;TForm1. N7Click (Sender: TObject);click (button6);;TForm1. N9Click (Sender: TObject);click (button2);;TForm1. N10Click (Sender: TObject);MessageDlg ('Вы действительно хотите выйти? ',mtConfirmation, [mbYes,mbNo],0) = mrYes then Form1. Close;;TForm1. FormCreate (Sender: TObject);. Visible: =false; n5. Visible: =false; n6. Visible: =false;. Visible: =false; n9. Visible: =false;. Hide; button2. Hide; button3. Hide;. Hide; button6. Hide;;TForm1. Button7Click (Sender: TObject);edit1. Text='240594'then. Visible: =true; n5. Visible: =true; n6. Visible: =true;. Visible: =true; n9. Visible: =true;. Show; Button2. Show; Button3. Show;. Hide; Edit1. Hide;. Show; Button6. Show; ShowMessage ('Добро Пожаловать! ');

Button7. Hide; Edit1. Hide;

endShowMessage ('Непревильный Пароль! ');;TForm1. Button8Click (Sender: TObject);. show; form1. Hide;;TForm1. Edit1KeyPress (Sender: TObject; var Key: Char);key=#13 then. SetFocus;;;.

Приложение Б

 

unit Unit2;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Grids, DBGrids, ADODB, DB, ExtCtrls, DBCtrls, StdCtrls;= class (TForm): TDBGrid;: TDBNavigator;: TButton;: TButton;: TEdit;: TLabel;Button1Click (Sender: TObject);Button5Click (Sender: TObject);Edit1Change (Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm2;Unit1;

{$R *. dfm}TForm2. Button1Click (Sender: TObject);. Hide; Form1. show;;TForm2. Button5Click (Sender: TObject);MessageDlg ('Вы действительно хотите выйти? ',mtConfirmation, [mbYes,mbNo],0) = mrYes then Form1. Close;;TForm2. Edit1Change (Sender: TObject);edit1. text=''then showmessage ('необходимо ввести хотя бы 1 символ')begin. visible: =true;. Adotable2. active: =true;. Adotable2. locate ('ФИО Продавца',Edit1. text, [loPartialKey]); end; end;.

Приложение В

unit Unit3;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, DBCtrls, DB, ADODB, Grids, DBGrids, StdCtrls;= class (TForm): TDBGrid;: TDBNavigator;: TButton;: TButton;: TEdit;: TComboBox;: TLabel;Button1Click (Sender: TObject);Button5Click (Sender: TObject);Edit1Change (Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm3;Unit1;

{$R *. dfm}TForm3. Button1Click (Sender: TObject);Form3. Hide; Form1. show; end;TForm3. Button5Click (Sender: TObject);If MessageDlg ('Вы действительно хотите выйти? ',mtConfirmation, [mbYes,mbNo],0) = mrYes then Form1. Close;;TForm3. Edit1Change (Sender: TObject);if edit1. text=''then showmessage ('необходимо ввести хотя бы 1 символ')begin dbgrid1. visible: =true;. Adotable3. active: =true;combobox1. itemindex=0 then. Adotable3. locate ('ФИО Продавца',Edit1. text, [loPartialKey])form1. Adotable3. locate ('Наименование',Edit1. text, [loPartialKey]);

end;;.

Приложение Г

 

unit Unit4;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, DBCtrls, DB, ADODB, Grids, DBGrids, StdCtrls;= class (TForm): TDBGrid;: TDBNavigator;: TButton;: TButton;: TEdit;: TLabel;Button1Click (Sender: TObject);Button5Click (Sender: TObject);Edit1Change (Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm4;Unit1;

{$R *. dfm}TForm4. Button1Click (Sender: TObject);Form4. Hide; Form1. show; end;TForm4. Button5Click (Sender: TObject);If MessageDlg ('Вы действительно хотите выйти? ',mtConfirmation, [mbYes,mbNo],0) = mrYes then Form1. Close; end;TForm4. Edit1Change (Sender: TObject);if edit1. text=''then showmessage ('необходимо ввести хотя бы 1 символ')begin dbgrid1. visible: =true;. Adotable4. active: =true;. Adotable4. locate ('Наименование',Edit1. text, [loPartialKey]);

end;;.

Приложение Д

unit Unit5;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, DBCtrls, DB, ADODB, Grids, DBGrids, StdCtrls;= class (TForm): TDBGrid;: TDBNavigator;: TButton;: TButton;: TEdit;: TLabel;Button1Click (Sender: TObject);Button5Click (Sender: TObject);Edit1Change (Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm5;Unit1;

{$R *. dfm}TForm5. Button1Click (Sender: TObject);. Hide; Form1. show; end;TForm5. Button5Click (Sender: TObject);If MessageDlg ('Вы действительно хотите выйти? ',mtConfirmation, [mbYes,mbNo],0) = mrYes then Form1. Close; end;TForm5. Edit1Change (Sender: TObject);edit1. text=''then showmessage ('необходимо ввести хотя бы 1 символ')begin. visible: =true;. Adotable5. active: =true;. Adotable5. locate ('Код',Edit1. text, [loPartialKey]);


Приложение Е

 

unit Unit6;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, DBCtrls, DB, ADODB, Grids, DBGrids, StdCtrls, Mask;= class (TForm): TButton;: TButton;: TDBGrid;: TADOTable;: TDataSource;: TDBNavigator;: TEdit;: TLabel;: TLabel;: TDBEdit;: TDBEdit;: TLabel;: TLabel;: TLabel;Button1Click (Sender: TObject);Button5Click (Sender: TObject);Edit1Change (Sender: TObject);Label2Click (Sender: TObject);DBEdit1Change (Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm6;Unit5, Unit1;

{$R *. dfm}TForm6. Button1Click (Sender: TObject);. Hide; Form1. show;;TForm6. Button5Click (Sender: TObject);MessageDlg ('Вы действительно хотите выйти? ',mtConfirmation, [mbYes,mbNo],0) = mrYes then Form1. Close;;TForm6. Edit1Change (Sender: TObject);edit1. text=''then showmessage ('необходимо ввести хотя бы 1 символ')begin. visible: =true;. active: =true;. locate ('Наименование',Edit1. text, [loPartialKey]);;;TForm6. Label2Click (Sender: TObject);. Caption: =inttostr (strtoint (dbedit1. text) *strtoint (dbedit2. text));;TForm6. DBEdit1Change (Sender: TObject);. Caption: =inttostr (strtoint (dbedit1. text) *strtoint (dbedit2. text));

end;.

Приложение Ж

 

unit Unit7;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls;= class (TForm): TButton;: TLabel;: TLabel;Button1Click (Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm7;

{$R *. dfm}TForm7. Button1Click (Sender: TObject);

begin. Hide;;.

Похожие работы на - Разработка информационно-справочной системы 'Аптека'

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!