Курсовая работа: Разработка и реализация системы учета товара.

Заказ 146

Цена понлй версии курсовой: 600 рублей

Оглавление

  1. Введение. 3
  2. Постановка задачи. 3
  3. Модели и спецификации программного обеспечения. 3

3.1.       Дополнительные спецификации. 3

3.2.       Анализ предметной области. 3

3.2.1.         Вариант использования Login. 3

3.2.2.         Вариант использования Занесение товара на склад. 3

3.2.3.         Вариант использования Изменение информации. 3

3.2.4.         Вариант использования Списание товара со склада: 3

3.2.5.         Вариант использования Формирование заказа. 3

3.2.6.         Вариант использования Добавление нового поставщика. 3

3.2.7.         Вариант использования Изменение информации о поставщике. 3

3.2.8.         Вариант использования Удаление информации о поставщике: 3

3.2.9.         Вариант использования Выход из системы: 3

3.3.       UML-диаграммы.. 3

3.3.1.         UML-диаграмма прецедентов. 3

3.3.2.         UML-диаграмма классов. 3

3.3.3.         UML-диаграммы взаимодействия. 3

3.3.4.         UML-диаграмма деятельности. 3

3.3.5.         UML-диаграмма компонентов. 3

  1. Руководство программиста. 3
  2. Руководство пользователя. 3
  3. Заключение. 3
  4. Использованные материалы. 3

Приложение 1. 3

Приложение 2. 3

Приложение 3. 3

Приложение 4. 3

Приложение 5. 3

 

1.  Введение.

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

Одной из проблем несовершенства методов ведения учета – является недальновидность руководства фирм.

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

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

В данное время существует множество систем автоматизации, и эти системы широко распространены и успешно функционируют на многих предприятиях.

 

 

2.  Постановка задачи.

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

Требуется разработать средствами Rational Rose модель системы поддержки заказа и учета товаров.

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

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

Итак, задача поставлена. Для реализации системы учета товара выберу Borland C++ Builder, т.к. данная среда позволит без труда создать многооконное приложение. Также в задание требуется разработать базу данных, а в Borland C++ Builder уже есть свои средства для работы с ними.

 

 

3.  Модели и спецификации программного обеспечения

Данная часть курсового проекта содержит описание моделей и схем, отражающих структуру программы, схемы взаимодействия её компонентов, использованные алгоритмы, структуры и файлы данных. Для оформления могут использоваться любые из известных наглядных средств и диаграмм, например, блок-схемы, структурные и функциональные схемы, диаграммы UML и т.д. Мы будем использовать UML, т.к. это тематика нашего курса. Средство разработки UML- диаграмм ‑ программа Rational Rose Enterprise Edition.

3.1.               Дополнительные спецификации

Функциональные возможности:

Система должна обеспечивать многопользовательский режим работы.

Удобство использования:

Пользовательский интерфейс должен быть совместимым с Windows 95/98.

Надёжность:

Система должна быть работоспособна 24 часа в день, 7 дней в неделю.

Безопасность:

Система не должна позволять никому, кроме работника склада, изменять любые данные.

Проектные ограничения:

Система должна обеспечивать работу с существующей базой данных.

 

 

3.2.               Анализ предметной области

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

Исходя из потребностей действующих лиц, выделим следующие варианты использования:

  • Вход в систему (Login)
  • Занесение товара на склад (Entering Goods)
  • Изменение информации о товаре (Edition Goods)
  • Списание товара со склада (Delition Goods)
  • Формирование заказа (Entering Order)
  • Добавление нового поставщика (Entering Distributor)
  • Изменение информации о поставщике (Edition Distributor)
  • Удаление информации о поставщике (Delition Distributor)
  • Выход из системы (Logout)

 

3.2.1.                 Вариант использования Login

Краткое описание

Данный вариант использования описывает вход пользователя в систему базы данных склада.

Основной поток событий

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

  1. Система запрашивает имя пользователя и пароль.
  2. Пользователь вводит имя и пароль.
  3. Система проверяет имя и пароль, после чего открывается доступ в систему и предоставляет доступ к функциям.

Альтернативные потоки

Неправильное имя/пароль

Если во время выполнения Основного потока обнаружится, что пользователь ввёл неправильное имя и/или пароль, система выводит сообщение об ошибке. Пользователь может вернуться к началу Основного потока или отказаться от входа в систему, при этом выполнение варианта использования завершается.

Предусловия

Отсутствуют.

Постусловия

Если вариант использования выполнен успешно, пользователь входит в систему. В противном случае состояние системы не изменяется.

 

3.2.2.                 Вариант использования Занесение товара на склад

Краткое описание

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

Основной поток событий

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

Работнику склада необходимо ввести информацию о поступившем товаре.

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

Итак, в результате работы была создана система учета товара, которая обладает:

  • Дружественным интерфейсом;
  • Многопользовательской средой;
  • Возможностью напрямую из программы делать заказ поставщику и т.д.

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

 

 

1.  Использованные материалы.

  1. Rational Rose:

http://www-01.ibm.com/software/awdtools/developer/rose/ – оф. сайт;

http://www.interface.ru/rational/rosemain.htm – описание на русском.

  1. Архангельский А.Я. ‑ «Программирование в С++ Builder 5» ‑ М.: ЗАО «Издательство БИНОМ», 2002г. – 1152с.:ил.
  2. Балса А.Р. ‑ Теоретический курс лекции: «Методы программирования»

 

 

Приложение 1

Программный код функции, представляющей работу с INI-файлом.

Модуль «uConfig.cpp».

 

#include «IniFiles.hpp» //подключение модуля работы с INI-файлами

 

//Функция сохранения в INI-файл

void __fastcall TfConfig::bOKClick(TObject *Sender)

{

Ini->WriteString(«Path», «dbDir», ePath->Text);

Ini->WriteString(«DB», «Gooddb», eGooddb->Text);

Ini->WriteString(«DB», «Distributordb», eDistributordb->Text);

Ini->WriteString(«DB», «Orderdb», eOrderdb->Text);

Close();

}

 

//Функция загрузки из INI-файла

void __fastcall TfConfig::FormShow(TObject *Sender)

{

ePath->Text = Ini->ReadString(«Path», «dbDir», ExtractFileDir(Application->ExeName) + «\\database»);

eGooddb->Text = Ini->ReadString(«DB», «Gooddb», «goods.db»);

eDistributordb->Text = Ini->ReadString(«DB», «Distributordb», «distributors.db»);

eOrderdb->Text = Ini->ReadString(«DB», «Orderdb», «order.db»);

}

 

 

Приложение 2

Программный код функции, представляющей отправку e-mail.

Модуль «uSendOrder.cpp».

 

//Функция создания формы

__fastcall TfMailOrder::TfMailOrder(TComponent* Owner): TForm(Owner)

{

SendMessage(GetWindow(cbPriority->Handle, GW_CHILD), EM_SETREADONLY, 1, 0);

ePort->WindowProc = NewEditProc;

if (FileExists(«settings.dat»))

{

TStringList *sett = new TStringList;

sett->LoadFromFile(«settings.dat»);

eLogin->Text = sett->Strings[0];

ePassword->Text = sett->Strings[1];

eResiver->Text = sett->Strings[2];

eServer->Text = sett->Strings[3];

ePort->Text = sett->Strings[4];

delete sett;

}

}

 

 

//Функция добавления файла

void __fastcall TMyThread::Execute()

{

AnsiString login = fMailOrder->eLogin->Text;

AnsiString pass = fMailOrder->ePassword->Text;

AnsiString host = fMailOrder->eServer->Text;

AnsiString port = fMailOrder->ePort->Text;

AnsiString email = fMailOrder->eResiver->Text;

 

if (fMailOrder->eFile->Text == «null»)

{

TIdSMTP *smtp = new TIdSMTP(fMailOrder); // Создать smtp

 

smtp->UserId = login;

smtp->Password = pass;

smtp->Host = host;

smtp->Port = port.ToInt();

smtp->AuthenticationType = atLogin;

smtp->Connect();

 

TIdMessage *msg = new TIdMessage(fMailOrder); // Создать msg

 

if (smtp->Authenticate())

{

msg->Subject = fMailOrder->eTheme->Text;

msg->Body->Text = fMailOrder->mText->Text;

msg->From->Text = login;

msg->Recipients->EMailAddresses = email;

 

if (fMailOrder->cbPriority->Text == «Высокий»)

{

msg->Priority = TIdMessagePriority(mpHigh);

}

if (fMailOrder->cbPriority->Text == «Очень высокий»)

{

Приложение 3

msg->Priority = TIdMessagePriority(mpHighest);

}

if (fMailOrder->cbPriority->Text == «Обычный»)

{

msg->Priority = TIdMessagePriority(mpNormal);

}

if (fMailOrder->cbPriority->Text == «Низкий»)

{

msg->Priority = TIdMessagePriority(mpLow);

}

if (fMailOrder->cbPriority->Text == «Самый низкий»)

{

msg->Priority = TIdMessagePriority(mpLowest);

}

 

try

{

smtp->Send(msg);

}

catch (Exception &exception)

{

//

}

smtp->Disconnect();

}

delete msg; // Удалить msg

delete smtp; // Удалить smtp

}

else

{

TIdSMTP *smtp = new TIdSMTP(fMailOrder); // SMTP

 

smtp->UserId = login;

smtp->Password = pass;

smtp->Host = host;

smtp->Port = port.ToInt();

smtp->AuthenticationType = atLogin;

smtp->Connect();

 

TIdMessage *msg = new TIdMessage(fMailOrder); // MSG

 

TIdAttachment *file = new TIdAttachment(msg->MessageParts, fMailOrder->od->FileName); // Добавление файла

 

if (smtp->Authenticate())

{

msg->Subject = fMailOrder->eTheme->Text;

msg->MessageParts->Add();

msg->MessageParts->Items[0] = file;

msg->Body->Text = fMailOrder->mText->Text;

msg->From->Text = login;

msg->Recipients->EMailAddresses = email;

 

if (fMailOrder->cbPriority->Text == «Высокий»)

{

msg->Priority = TIdMessagePriority(mpHigh);

}

if (fMailOrder->cbPriority->Text == «Очень высокий»)

{

msg->Priority = TIdMessagePriority(mpHighest);

}

Приложение 4

if (fMailOrder->cbPriority->Text == «Обычный»)

{

msg->Priority = TIdMessagePriority(mpNormal);

}

if (fMailOrder->cbPriority->Text == «Низкий»)

{

msg->Priority = TIdMessagePriority(mpLow);

}

if (fMailOrder->cbPriority->Text == «Самый низкий»)

{

msg->Priority = TIdMessagePriority(mpLowest);

}

 

try

{

smtp->Send(msg);

}

catch (Exception &exception)

{

//

}

smtp->Disconnect();

}

delete file; // Удаление файла

delete msg; // Удаление msg

delete smtp; // Удаление smtp

}

 

fMailOrder->bSendEmail->Enabled = true;

fMailOrder->bAddFile->Enabled = true;

fMailOrder->bDellFile->Enabled = true;

fMailOrder->eLogin->Enabled = true;

fMailOrder->ePassword->Enabled = true;

fMailOrder->eResiver->Enabled = true;

fMailOrder->eServer->Enabled = true;

fMailOrder->ePort->Enabled = true;

fMailOrder->eTheme->Enabled = true;

fMailOrder->eFile->Enabled = true;

fMailOrder->mText->Enabled = true;

fMailOrder->cbPriority->Enabled = true;

fMailOrder->bSendEmail->Caption = «Отправить письмо»;

}

 

 

//Функция отправки письма

void __fastcall TfMailOrder::bSendEmailClick(TObject *Sender)

{

bSendEmail->Enabled = false;

bAddFile->Enabled = false;

bDellFile->Enabled = false;

eLogin->Enabled = false;

ePassword->Enabled = false;

eResiver->Enabled = false;

eServer->Enabled = false;

ePort->Enabled = false;

eTheme->Enabled = false;

eFile->Enabled = false;

mText->Enabled = false;

cbPriority->Enabled = false;

 

MyThread = new TMyThread(true);

Приложение 5

MyThread->FreeOnTerminate = true;

MyThread->Resume();

Close();

}

//Сохранение вводимой информации в файл dat

void __fastcall TfMailOrder::FormClose(TObject *Sender,

TCloseAction &Action)

{

TStringList *sett = new TStringList;

sett->Add(eLogin->Text);

sett->Add(ePassword->Text);

sett->Add(eResiver->Text);

sett->Add(eServer->Text);

sett->Add(ePort->Text);

sett->SaveToFile(ExtractFilePath(Application->ExeName) + «\\settings.dat»);

delete sett;

}