Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Автоматизация рабочего места менеджера МСП
Введение
Одной из самых сложных задач для фирмы, занимающейся торговой деятельностью, является точный и упорядоченный учет материальных средств. При очень большом обороте первичных документов становится очень сложным их упорядочивание. Как правило, многие фирмы до сих пор, при таком стремительном развитии компьютерной техники и программного обеспечения, не имеют четко отлаженного компьютерного учета.
Одной из проблем несовершенства методов ведения учета является недальновидность руководства фирм. Да это факт, что это требует немало средств, но если посчитать убытки от разрозненности учета, несовпадения остатков на складе с остатками по документообороту и даже просто спокойствия, а не нервозности в коллективе, то становится очевидным, что фирме нужна автоматизация.
Пусть для начала это будет небольшая программа, с малым набором функций, но правильной структурой, и безошибочным счетом и учет станет гораздо проще. Просто подумать о том, чтобы посмотреть движение определенного товара за последний месяц, при средней интенсивности продаж, и становится понятно, что при “бумажном”учете это просто нереально. Но при компьютерном учете нет ничего проще (один запрос).
В данном курсовом проекте представлена справочная часть программы, автоматизирующей складской учет на малых и средних предприятиях. Наибольшее внимание в курсовом проекте направлено на построение правильных структур баз данных, т.е. на даталогическое проектирование.
Глава 1. Техническое задание на проектирование
1.1. Постановка задачи
Выделим предметную область. Это учет товарооборота на фирме занимающейся торговой деятельностью. Сюда входит и учет товаров на складе ( на нескольких складах), оформление документов по отгрузке и при оприходовании товара на склад, ведение реестра поставщиков и покупателей, учет взаиморасчетов с юридическими и частными лицами и получение отчетной информации о продажах.
Спроектировать всю систему целиком для учебных целей не имеет смысла, поэтому в данном проекте основной задачей ставится правильная организации структуры хранения информации (т.е. структуры баз данных.), алгоритмов ввода, чтения, корректировки информации. А сама программа представляет собой справочную систему, которая продемонстрирует пример доступа к хранимой информации.
1.2. Требования к системе.
Главным требованием данного курсового проекта является правильные структуры данных, поэтому и требования к проектируемой системе в основном будут состоять из требований к правильной организации структур баз данных и их взаимосвязи.
Требования к разрабатываемой системе:
Что касается требований к аппаратным ресурсам, то здесь все зависит от размеров автоматизируемого учета, но для данного проекта достаточным будет платформа на основе 386 процессора и операционной системы ДОС.
1.3. Пользователи системы
Данная проектируемая система предназначена для очень широкого круга пользователей.
Первыми пользователями этой системы будут кладовщик и/или менеджер, т.к. они будут вводит первичные документы. По мере надобности они могут удалять документы, изменять уже существующие документы, добавлять информацию о новых покупателях, формировать отчеты для отслеживания неточностей в учете. Но этими людьми круг пользователей не заканчивается.
Система может быть использована бухгалтером для получении информации о суммах приходных и расходных накладных, догах поставщикам, и долгов клиентов нам. Кроме того они могут участвовать в этой системе, например, вводить выписки из банка, которые будут погашать задолженности.
Для главного менеджера фирмы система тоже может представлять интерес. Например, он может посмотреть объемы продаж, товарооборота за определенный период, определить товар пользующийся, который приносит наибольший доход (самый продаваемый товар) и получить другую статистическую информацию.
1.4. Этапы разработки
Основными этапами разработки системы являются :
Сроки и состав работ согласовываются с преподавателем и оформляются представленным в приложениях “Заданием на курсовое проектирование”.
Приемка осуществляется преподавателем путем предоставления студентом демонстрации работы системы на контрольных примерах, защиты проектных и программных решений.
Глава 2. Инфологическое проектирование
2.1. Обследование предметной области.
Прежде чем начать любое проектирование необходимо проанализировать предметную область.
Для анализа предметной области была выбрана конкретная фирма, и на ёё примере исследовались информационные потребности менеджера, кладовщика, бухгалтера и других пользователей системы.
При более подробном рассмотрении работы менеджера был выявлен перечень документов и типовых операций, необходимых для ведения учета. Для оприходования товара использовались документы либо приходная накладная, либо возврат от покупателя. Расход товара оформлялся либо расходной накладной, либо возврат поставщику.
После выявления полного перечня необходимых документов и выполняемых типовых операций была разработана сложная структура баз данных (приведена ниже) основным требованием к которой - были универсальность, логичность, наглядность.
Для проектирования структур баз данных были формализованы первичные документы (выделен реквизитный минимум, проанализированы связи между ними) и сформированы структуры записей БД. Затем путем нормализации структур данных они были сведены к структурам данных, удовлетворяющим требованиям 3нф.
2.2. Описание пользователей
Для рассматриваемой системы может существовать большое множество категорий пользователей, но предлагаемая программа предполагает пользователя, которому необходима справочная информация.
Для каждой хорошей системы всегда должен существовать администратор, который будет сопровождать систему, устранять ошибки, а при расширении предметной области дорабатывать программные модули.
Что касается конечных пользователей, то тут могут быть почти все сотрудники фирмы, причем для каждого сотрудника может быть запрограммирован тип доступа (чтение, изменение, добавление, удаление и др.) к документам, справочникам, регистрам и другой информации в системе.
2.3. Запросы и регламентные задачи
Для проектируемой системы основным запросом является запрос на получение движения по определенному товару за конкретный промежуток времени. Этот запрос выполняется на основании данных хранящихся в базах данных, которые можно условно отнести к “Регистрам”.
Также в системе могут реализованы следующие запросы:
Регламентной задачей для проектируемой системы является расчет объемов продаж (например, за наличный или безналичный расчет).
Для прилагаемой программы регламентным запросом является получение информации об остатках товаров и движении товара по документам и вывод полученной информации в видеоформу.
2.4. Описание алгоритма работы системы
В данном разделе, описывается: каким образом должна функционировать проектируемая система на основании выбранной предметной области.
Рассмотрим цепочку документов, которые необходимо оформить для отпуска товара при расчете за безналичный расчет.
Сначала клиент выбирает нужный ему товар в необходимом количестве. На основании этой заявки (возможно устной) менеджер выписывает этому клиенту счет для оплаты. В случае если клиент еще не существует в системе, то его необходимо добавить. Когда клиенту выписан счет, это не говорит о том, что товар клиенту отдан, но документ в систему введен. Для этого этот вид документов не учитывается в базах учитывающих движение товаров (назовем их регистрами). Позже, когда клиент оплатил, выписанный ему счет, и деньги попали на наш расчетный счет, бухгалтер вводит выписку из банка, соответствующим документом, например, “приход денег на счет”. Соответственно в системе появляется наш долг клиенту на сумму, которую он оплатил. Через некоторое время клиент приходит, чтобы получить свой товар и тогда менеджер выписывает ему расходную накладную и налоговую накладную по безналичному расчету (можно ввести на основании ранее выписанного счета). При выписывании накладной система автоматически заносит информацию о том, что клиенту был отдан товар на сумму указанную в накладной, и таким образом погашает наш долг клиенту. Кроме этого документ проходит по регистрам движений и остатков товаров, т.е. информация о количестве проданного товара заносится в соответствующие базы данных.
На основании выданной клиенту накладной, кладовщик отдает товар. Таким образом, мы получили четкую систему отгрузки товара.
Процедура отгрузки товара за наличный расчет происходит аналогичным образом, только счет при этом не выписывается, деньги оформляются документом “приходный кассовый ордер”или другим подобным и при оформлении накладных указывается что продажа произведена за наличный расчет.
Поступление товара на склад может возникать в двух случаях. Во-первых, при поступлении товара от поставщика, а во-вторых, при возврате товара от покупателя.
В первом случае оформляется приходная накладная от поставщика за наличный или безналичный расчет, а деньги поставщику (подразумевается в системе) отдаем документом “платежное поручение”или “расходный кассовый ордер”или другим документом.
Если оформляется возврат от покупателя, то процедура идентична, только в накладной указывается соответствующий признак накладной.
2.5. Словарь данных
Словарь данных, необходимых для хранения в проектируемой системе получается очень объемным. Поэтому сейчас приводится только словарь данных для документов. Для упомянутых выше документов необходимо сохранять следующие реквизиты:
№ пп |
Наименование элемента данных |
Имя |
Скаляр/массив/ вх/вых/расчетный |
Длина байт |
Ограничение целосности |
Примечания |
1. |
Номер документа |
Number |
Скаляр |
10 |
Маска ##### |
Значение формируется автоматически |
2. |
Дата оформления |
Date |
Скаляр |
8 |
Маска 99.99.99 |
|
3. |
Вид документа |
DocType |
Скаляр |
3 |
Маска 999 |
|
4. |
Признак накладной |
Priznak |
Скаляр |
3 |
Маска 999 |
Имеет смысл только для накладной |
5. |
Фирма |
Firm |
Скаляр |
20 |
||
6. |
Клиент |
Klient |
Скаляр |
150 |
||
7. |
Вид продажи |
SailType |
Скаляр |
20 |
||
8. |
Склад |
Sklad |
Скаляр |
20 |
||
9. |
||||||
10. |
Основание для выписки документа |
Osnov |
Скаляр |
50 |
||
11. |
Автор документа |
Author |
Скаляр |
3 |
Маска 999 |
|
12. |
Наименование товара. |
Tovar |
Скаляр |
70 |
||
13. |
Цена за единицу |
Price |
Скаляр, входная |
10, 2 |
Маска 9999999.99 |
|
14. |
Количество |
Kol |
Скаляр, вход |
10, 3 |
Маска 999999.999 |
|
15. |
Сумма |
Sum |
Скаляр, расчетный |
12, 2 |
||
16. |
НДС |
NDS |
Скаляр, расчетный |
12, 2 |
||
17 |
Проведен |
Proveden |
Логический |
1 |
Проходит документ по регистрам или нет |
Глава 3. Даталогическое проектирование.
3.1. Выбор СУБД
Для реализации спроектированной системы могла бы подойти любая СУБД среднего уровня (например, Microsoft Access). Но в рамках данного курсового проекта система должна быть реализована в среде FoxPro. И эта система вполне подходит для составления программы, обслуживающей проектируемую систему, а именно:
СУБД является специализированной программой для работы с реляционными БД, что значительно упрощает процесс даталогического проектирования;
У нее довольно мощный язык, удобный для программирования приложений средней сложности;
Наличие большого количества мастеров позволяет быстро создавать удобный для конечных пользователей интерфейс, формировать красивые отчеты
Эта система очень нетребовательна к аппаратным ресурсам и может выполняться на любом компьютере на котором установлена система Windows (и сама СУБД)
Отдельные утилиты позволяют создавать конечный исполняемый файл, и тогда это очень значительно упрощает распространение программы.
3.2. Даталогическая модель
После подробного анализа предметной области на этапе инфологического проектирования были получены реквизиты баз данных. После этого было произведено распределение этих реквизитов по записям БД, затем базы были декомпозированы до тех пор, пока не получились структуры, удовлетворяющие требованиям третьей нормальной формы и обладающие минимальной избыточностью (хотя избыточность должна присутствовать для ускорения процессов обработки информации). В результате были получены файлы баз данных со следующими структурами:
Сначала представим базы, которые можно условно отнести к справочникам. Это означает, что в них хранится информация, которая используется другими базами.
Tovar.dbf Справочник товаров
Название поля |
Тип |
Длина |
Описание |
Kod |
Numeric |
Код товара |
|
Name |
Character |
Наименование товара |
|
PriceIn |
Numeric |
,2 |
Входная цена |
PriceOut |
Numeric |
,2 |
Продажная цена |
Unit |
Character |
Единица измерения |
|
Proizvod |
Numeric |
Код производителя |
Proizv.dbf Справочник с производителями
Название поля |
Тип |
Длина |
Описание |
Kod |
Numeric |
Код производителя |
|
Name |
Character |
Полное название производителя |
|
Coment |
Character |
Информация о производителе |
Sklad.dbf Справочник складов
Название поля |
Тип |
Длина |
Описание |
Kod |
Numeric |
Код склада |
|
Name |
Character |
Полное название склада |
Users.dbf Справочник пользователей системы
Название поля |
Тип |
Длина |
Описание |
Kod |
Numeric |
Код сотрудника |
|
Name |
Character |
Имя и Отчество сотрудника |
|
Passport |
Character |
Серия и номер паспорта |
|
Address |
Character |
Адрес сотрудника |
|
Status |
Numeric |
Статус сотрудника как пользователя |
Firms.dbf Справочник фирм по которым ведется учет
Название поля |
Тип |
Длина |
Описание |
Kod |
Numeric |
Код фирмы |
|
Name |
Character |
Полное название фирмы |
|
Address |
Character |
Адрес фирмы |
|
Tel |
Character |
Телефоны |
|
RS |
Numeric |
Расчетный счет |
|
OKPO |
Numeric |
Код ОКПО |
|
MFO |
Numeric |
Код МФО банка |
|
Bank |
Character |
Название банка |
Klients.dbf Справочник клиентов (поставщиков и покупателей)
Название поля |
Тип |
Длина |
Описание |
Kod |
Numeric |
Код клиента |
|
Name |
Character |
Полное название клиента |
|
Address |
Character |
Адрес клиента |
|
Tel |
Character |
Телефоны |
|
RS |
Numeric |
Расчетный счет |
|
OKPO |
Numeric |
Код ОКПО |
|
MFO |
Numeric |
Код МФО банка |
|
Bank |
Character |
Название банка |
Doctype.dbf Справочник типов накладных
Название поля |
Тип |
Длина |
Описание |
Kod |
Numeric |
Код |
|
Name |
Character |
Название документа |
|
Coment |
Character |
Расшифровка названия |
Sailtype.dbf Справочник видов продаж
Название поля |
Тип |
Длина |
Описание |
Kod |
Numeric |
Код |
|
Name |
Character |
Вид продажи |
|
Coment |
Character |
Расшифровка вида |
PriznDoc.dbf Справочник признаков накладных
Название поля |
Тип |
Длина |
Описание |
Kod |
Numeric |
Код |
|
Name |
Character |
Признак накладной |
|
Coment |
Character |
Расшифровка признака |
Следующие две базы в совокупности и представляют собой документ (в одном сохраняются шапки, в другом табличные части)
DocumShp.dbf Шапки документов
Название поля |
Тип |
Длина |
Описание |
Number |
Character |
Номер документа |
|
Date |
Date |
Дата оформления документа |
|
Type |
Numeric |
Тип накладной |
|
Firm |
Numeric |
Фирма от которой выпис. накладная |
|
Sklad |
Numeric |
Склад для документа |
|
Klient |
Numeric |
Клиент на которого выпис. Накл |
|
Osnov |
Character |
Основание документа |
|
Positions |
Numeric |
Количество позиций в накладной |
|
SailType |
Numeric |
Вид продажи |
|
Priznak |
Numeric |
Признак накладной |
|
Author |
Numeric |
Автор документа (сотрудник) |
|
Proveden |
Logical |
Прошел ли док-т по регистрам ? |
DocumTbl.dbf Табличные части документов
Название поля |
Тип |
Длина |
Описание |
Tovar |
Numeric |
Код товара |
|
Kol |
Numeric |
Количество |
|
Price |
Numeric |
,2 |
Цена (по которой продали) |
Docum |
Character |
Номер документа |
Следующая и последняя группа представляет собой базы в которых отражается реальное движение чего-либо. Назовем их регистрами.
Rests.dbf Регистр остатков товаров
Название поля |
Тип |
Длина |
Описание |
Tovar |
Numeric |
Код товара |
|
Sklad |
Numeric |
Склад |
|
Rest |
Numeric |
Остаток товара |
Motion.dbf Регистр движения остатков
Название поля |
Тип |
Длина |
Описание |
Tovar |
Numeric |
Товар |
|
Kolvo |
Numeric |
Количество |
|
Date |
Date |
Дата |
|
Docnum |
Character |
Номер Документа |
Duties.dbf Регистр остатков взаиморасчетов
Название поля |
Тип |
Длина |
Описание |
Klient |
Numeric |
Клиент |
|
Duty |
Numeric |
,2 |
Текущий долг (или кредит) |
Mduty.dbf Регистр движений взаиморасчетов с клиентами
Название поля |
Тип |
Длина |
Описание |
Klient |
Numeric |
Клиент |
|
Sum |
Numeric |
,2 |
Сумма |
Date |
Date |
Дата |
|
Docum |
Character |
Номер документа |
Теперь кратко опишем назначение каждого справочника.
Справочник товаров предназначен для хранения товаров. Причем код должен быть уникальным во всем справочнике. Каждый товар имеет приходную и продажную цены, ед. измерения и производителя, который хранится в справочнике производители.
Справочник производители сохраняет код производителя и его полное наименование. Поле Coment предназначено для дополнительной информации по производителю.
Справочник склад содержит код и название всех складов в системе.
В справочнике клиентов хранится вся необходимая информация о фирме-покупателе или фирме-поставщике. В то время как в справочнике фирм хранится информация о наших фирмах, т.е. фирмах от лица которых мы работаем.
Справочник Вид Накладной хранит в себе все виды документов, которые могут быть выданы системой. Например:
Справочник виды продаж может содержать информацию такого рода: ЗаНал; ЗаБН; Вкредит. Что будет означать, как была проведена операция за наличные, безналичные деньги или в кредит.
Справочник сотрудников хранит всех возможных пользователей системы и краткую информацию о них, причем каждому из них можно указать статус. Например: 1-Администратор;
-Менеджер; 3-Бухгалтер, и т.д. А уже программист определит для кого какие возможности доступны, а какие недоступны.
Справочник признаков накладной хранит информацию Следующего вида, например: 1-Продажа; 2-Возврат Поставщику; 3- Покупка; 4-Возврат Покупателю.
База данных в которой хранятся шапки документов просто хранит все необходимые реквизиты документа. Уникальным во всей системе является номер документа. Он специально объявлен текстовым. По этому номеру в базе, которая хранит табличные части, мы может отыскать те позиции, которые принадлежат этому документу. Если построить индексный файл по полю Number (он построен в системе), то став на первый элемент, соответствующий этому документу, можно получить все остальные элементы по порядку, т.к. в шапке документа хранится количество строк в нем.
Регистры остатков товаров хранят остатки товаров по каждому складу в отдельности. Получается как таблица, где столбцы соответствуют складам, а строки товарам, а на пересечении будет количество товара на конкретном складе.
В регистре движения остатков товаров отражается каждая операция, над этим товаром (приход или расход) и указывается, какой документ осуществил данное движение и когда.
Регистры взаиморасчетов идентичны регистрам остатков, только учитывают движение денежных средств.
3.3. Описание программы
Программа представляет собой справочную систему, которая призвана показать, каким образом можно получить доступ к заносимой в систему информации. В программе реализована система добавления нового товара, как пример добавления информации в справочник.
Сама программа предлагает выбрать товар и показывает всю информацию о товаре, остаток этого товара на складе, и все движения по данному товару. Ниже приведены виды экранов .
V. Выводы
В результате спроектирована надежная, логичная, гибкая структура данных, которая удовлетворяет требованиям 3 нф, наглядна и может быть легко изменена или дополнена. На базе спроектированной системы данных может быть написан серьёзный программный продукт, который в последствии может быть использован очень широким кругом фирм, занимающихся торговой деятельностью.
IV. Приложение.
Clear
Clear all
Set date to German
Set talk off
Close Databases
Set exact off
Set safety off
Use tovar
Index on name to tovar
Select b
Use Proizv
Index on name to proizv
Select c
Use Sklad
Index on kod to sklad
Select d
Use Motion
Index on kod to motion
Select a
Set safety on
Flag=.T.
KodTov=0
Define Window Main From 3,3 To 24,77 Title ' Программа Справочник по товарам ';
Double Float Close Shadow Color
Activate Window Main
@ 1,1
Define Menu MMenu Bar At Line 1 KEY ALT+Z MARK CHR(254)
Define Pad SelTov of MMenu Prompt '\<Выбрать товар'
Define Pad NewTovar of MMenu Prompt '\<новый товар'
Define Pad Quit of MMenu Prompt 'В\<ыход'
On Selection Menu MMenu Do CheckSelection With Pad()
Do While Flag
Activate Menu MMenu
EndDo
Deactivate Window Main
Quit
Procedure CheckSelection
Parameters pad
Do Case
Case pad='QUIT'
Flag=.F.
Case pad='SELTOV'
Do SelectTovar
Case pad='NEWTOVAR'
Do AddTovar
EndCase
Return
Procedure SelectTovar
Select Tovar
Go top
Define PopUp Tov From 2,1 To 10,22 Prompt Fields Tovar->Name
On Selection PopUp Tov Do Inf
Activate PopUp Tov
Return
Procedure Inf
Recn=Recno()
KodTov=Tovar->Kod
PrvKod=Tovar->Proizvod
*********************** Ищем название поставщика *************
Select Proizv
Go top
Locate For Kod=PrvKod
IF Found()
Prv=Proizv->Name
Else
Prv=Str(Tovar->Proizvod)
EndIF
*********************** Берем данные по складу **************
Select Sklad
Locate For Kod=KodTov
IF Found()
Ost=Str(Kol,4)
Rest=Str(MinRest,4)
Else
Ost="нет"
Rest=""
EndIF
*********************** Выводим информацию о товаре ***********
Clear
Select Tovar
Go Top
Go Recn
@ 3,35 say "Ед "+" Приходная "+"Розничная "
@ 4,8 say "Код "+"наименование "+"Изм "+" Цена "+" Цена "+" Производитель"
@ 6,1 say Str(Kod)+" "+Name+" "+Unit+" "+Str(PriceIn,6,2)+" "+Str(PriceOut,6,2)+" "+Prv
@ 8,1 say "Минимальный остаток на складе "+Rest
@ 9,1 say "Текущий остаток на складе "+Ost
*********************** Выбираем движения по товару ***********
Select Motion
Locate For Kod=KodTov
@ 11,1 say "Движения выбранного товара :"
@ 12,38 say "Документ"
@ 13,20 say "Движение Дата номер Вид"
i=1
Do While Found()=.T.
@ 14+i,24 say str(Kolvo,4)+" "+DtoC(Date)+" "+DocNum+" "+DocVid
i=i+1
Continue
EndDo
Deactivate PopUp Tov
Return
Function CP
Select Proizv
IF VarProizvod=0
Define PopUp pr from 1,40 to 8,51 prompt Fields Proizv->Name
On Selection PopUp Pr Do Cp1
Activate PopUp Pr
VarProizvod=Proizv->Kod
Deactivate PopUp Pr
EndIF
Select Tovar
Return
Procedure CP1
VarProizvod=Kod
Deactivate PopUp Pr
Return
Procedure AddTovar
Select Tovar
Flag2=.T.
VarKod=0
Store Space(20) To VarName
VarPriceIn=0
VarPriceOut=0
Store Space(5) To VarUnit
VarProizvod=0
Define Window AddTov From 4,4 To 17,66 Panel Title ' новый товар ' In Window Main
Activate Window AddTov
Do While Flag2
@ 1,1 say "Код" get VarKod picture "999"
@ 3,1 say "название" get VarName
@ 5,1 say "Входная цена" get VarPriceIn picture "999.99"
@ 5,23 say "Продажная цена" get VarPriceOut picture "999.99"
@ 7,1 say "Единица Изм" get VarUnit
@ 7,23 say "Производитель" get VarProizvod valid CP() picture "99"
@ 9,1 Get But Function '*h Ok; Отмена' size 1,8 default 1
read
@ 10,15 say " "
IF But=1
Append Blank
Replace Kod With VarKod
Replace Name With VarName
Replace PriceIN With VarPriceIn
Replace PriceOut With VarPriceOut
Replace Unit with VarUnit
Replace Proizvod With VarProizvod
Flag=.F.
EndIF
IF But=2
Flag2=.F.
EndIF
EndDo
Deactivate Window AddTov
Return