Разработка оптимального плана продажи скота на ферме
Описание и формализация процесса содержания и эксплуатации животных. Математическая модель оптимального плана продаж скота на ферме. Обоснование выбора программных средств разработки и реализации алгоритма. Функционал и интерфейс разработанной программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 01.12.2016 |
Размер файла | 1,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
Введение
1. Продажа скота на ферме
2. Описание процесса содержания и эксплуатации животных
3. Постановка задачи
4. Построение базовой аналитической модели
5. Обоснование выбора программных средств разработки
6. Описание структуры данных
7. Спецификация вариантов использования
8. Модели представления системы
8.1 Описание диаграммы классов
8.2 Описание диаграммы состояний
8.3 Описание диаграммы компонентов
8.4 Описание диаграммы развертывания
8.5 Описание диаграммы последовательности
9. Описание алгоритма работы всей программы
10. Результаты тестирования разработаной системы
11. Контрольный пример
Заключение
Список использованных источников
Приложение А. Блок-схема программы (к разделу 9)
Приложение Б. Листинг алгоритмов, реализующих бизнес-логику
Введение
Скотоводство имеет наибольшее экономическое значение в развитии животноводства нашей страны. На его долю приходится около половины всех доходов, получаемых от этой отрасли народного хозяйства. Крупный рогатый скот дает более 99% молока и около 50% говядины - главных животноводческих продуктов питания населения нашей планеты.
Увеличение производства высококачественных продуктов скотоводства - проблема с годами, не теряющая своей актуальности, а все больше приобретающая значение с ростом населения планеты, в частности нашей страны, удовлетворение потребностей человечества в продуктах питания. В связи с этим развитию этой отрасли, придается большое народно-хозяйственное значение. Главным направлением развития скотоводства в нашей стране является совершенствование материально-технической базы, позволяющей перевести отрасли на интенсивный путь развития, суть которого заключается в максимальном производстве продукции, при наименьших трудовых и материальных затратах. В настоящее время вполне доказано, что при применении интенсивных технологий каждая корова в молочном скотоводстве способна давать 3500-4500 л молока.
Кроме того, скотоводства снабжает отрасль растениеводства органическими удобрениями, способствуя этим повышению урожайности сельскохозяйственных культур.[1]
Целью данного курсового проекта является разработка оптимального плана продажи скота на ферме.
Для достижения поставленной цели необходимо решить следующие задачи:
- осуществить анализ предметной области;
- построить соответствующую математическую модель расчета оптимального плана продаж;
- произвести расчет вручную поиска оптимальной стратегии;
- составить алгоритм работы программы;
- разработать программу с удобным интерфейсом, которая будет осуществлять поиск оптимального плана продаж.
1. Продажа скота на ферме
В связи с развитием многоукладной экономики и рыночных отношений в сельском хозяйстве, широкое распространение получили крестьянские (фермерские) хозяйства основанные на новых формах землевладения и землепользования. Этому процессу способствовали радикальное изменение земельного законодательства, принятие новых нормативных актов исполнительной и законодательной власти.
Крестьянское хозяйство (далее КФХ) - это самостоятельный хозяйствующий субъект с правами юридического лица, который представлен отдельными гражданами, семьей или группой лиц желающих совместно вести хозяйство, осуществляющей производство, переработку и реализацию сельскохозяйственной продукции на основе использования имущества и земельных участков, находящихся в их собственности и аренде. Оно представляет собой форму свободного предпринимательства, которое осуществляется как самостоятельная и инициативная сельскохозяйственная деятельность на свой риск, под имущественную ответственность, направленная на получение экономической выгоды, дохода. Членами крестьянского хозяйства считаются трудоспособные члены семьи и другие граждане, совместно ведущие хозяйство. Его главой является один из трудоспособных членов. Он представляет интересы КФХ в отношениях с государственными органами, предприятиями, организациями и гражданами.
Как звено, составная часть экономической системы, КФХ равноправно с другими предприятиями независимо от их организационно-правовой формы. Вмешательство государственных и иных органов в хозяйственную и иную деятельность КФХ законом не допускается. Но если его права все, же будут нарушены, то убытки, в том числе упущенную выгоду, причиненные хозяйству, подлежат возмещению этими органами.
Экономические отношения КФХ с предприятиями, организациями, гражданами, государственными органами строится путем заключения договора, на основе операций по наличному и безналичному расчету.
Государство стремится активно поддерживать фермерское движение, развитие КФХ путем экономического регулирования сельского хозяйства:
льготное кредитование сельского хозяйства;
льготное налогообложение и т.д.
Крестьянские хозяйства могут добровольно объединяться и вступать в кооперативы, ассоциации, союзы по производству, переработке и сбыту продукции, материально-техническому снабжению, строительству, производственно-техническому обслуживанию, а также учреждать и быть участниками банков, страховых учреждений, в том числе с зарубежными партнерами, покупать и продавать ценные бумаги[2].
Создание крестьянских хозяйств является следствием одного из принципов земельной реформы; внедрение форм собственности в хозяйстве, когда на смену государственной монополии на землю пришли различные формы:
? коллективно-долевая;
? коллективно-совместная;
? частная;
? федеральная;
? муниципальная.
А на смену колхозов, совхозов пришли кооперативы, крестьянское (фермерские) хозяйства[3].
Основные вопросы теории и практики крестьянских хозяйств заложены в начале 20 века русскими ученными Чаяновым, Макаровым и д.р.
Наиболее развита была теория и практика организации крестьянских хозяйств после национализации земли и предоставления ее в единоличное использование с 1918-1925 гг.[4]
Обобщая труды ученных можно выделить следующие закономерности образования и функционирования крестьянских хозяйств - экономической основой крестьянских хозяйств является рациональное сочетание труда крестьянской семьи, имеющихся средств производства и земельных ресурсов[5].
В настоящее время создание крестьянских хозяйств идет на земле колхозов, совхозов и других коллективных сельскохозяйственных предприятий.
В процессе затрагиваются землепользования многих предприятий. Поэтому организация только в том случае обоснована, когда она является эффективной и не ухудшает землепользования соседних хозяйств.
В основе рационального построения и ведения любого крестьянского хозяйства должны лежат определенные требования, без учета которых невозможно организовать территорию и производство.
Специализация хозяйства, его отраслевая структура должны обязательно устанавливаться с учетом плодородия, степени окультуренности земель, возможности последующей трансформации и улучшения угодий[6].
Сельская местность - хорошее место для открытия своего бизнеса. Разведение крупного рогатого скота (далее КРС), на сегодня очень перспективное дело. Чтобы начать бизнес по разведению крупного рогатого скота, необходимо грамотно составить бизнес план и изучить все особенности этой отрасли сельского хозяйства.
Первое в начинающем бизнесе по разведению крупного рогатого скота должно быть следующее: необходимо определить цель разведения животных - мясо, молоко, шерсть, шкуры, комбинированные виды, разведение и продажа молодняка.
После четко определенной и поставленной Вами цели, необходимо начинать строительство фермы (со всем необходимым инвентарем для КРС). Самым оптимальным вариантом при выборе площади под ферму будет территория с заброшенными фермами. Чтобы начать строительство, необходимо пройти все необходимые инстанции и получить главное - Разрешение на строительство на данной территории.
Когда у Вас будет ферма с оборудованием, можно начать закупку поголовья. Покупать КРС необходимо с консультациями и личным присутствием опытного животновода, врача-ветеринара. Бизнес по разведению крупного рогатого скота в целом зависит от здоровья животного.
Основные критерии выбора коров
Высокоудойность коров характеризуется бочкоподобной формой середины туловища. У такой коровы - объемистый живот, не особенно хорошо развитая мускулатура, тонкий, но крепкий костяк, данные показатели свидетельствуют о хорошо развитых легких и пищеварительной системе коровы. У молочных коров удлиненная легкая голова, небольшие тонкие рога, не острая, не раздвоенная холка. Обратите внимание на спину, она с задней частью туловища сверху образует прямую линию.
Вымя - основной орган молочной коровы, на который необходимо обратить особенное внимание. Высокоудойная корова имеет большое вымя, которое покрыто нежными редкими волосками. После доения вымя должно значительно уменьшаться в объеме, образуя складки кожи, оно становится мягким. Кожа на вымени должна легко оттягиваться и быть очень эластичной и подвижной по отношению к внутренней стороне железистой части. Вымя малоудойных коров после доения практически не изменяется в объеме, остается мясистым, плотным. Большое значение в дойности коров играет форма вымени. Самая благоприятная форма вымени - ваннообразная или чашеобразная. Коровы с округлым, козьим выменем малопродуктивны. Первая треть лактации характеризуется высокой продуктивность коров. Продуктивность с возрастом возрастает до седьмой лактации и потом идет на снижение. При покупке коровы необходимо знать точный ее возраст (дата рождения). Возраст можно определить по количеству валиков на рогах, свидетельствующих о ее отелах, к их числу прибавляется еще 2 года.
При разведении мясных пород, также необходимо знать основные критерии выбора животного (от этого будет зависеть успех бизнеса).
Основные критерии продуктивности мясной породы коров:
высокая интенсивность роста молодняка в течение длительного периода;
конечная живая масса должна быть большой;
туши должны быть высокого качества;
коровы хорошо окупаются;
матки обладают хорошими воспроизводительными качествами;
молочность высокая;
животные хорошо акклиматизируются.
Как будет налажено производство на вашей ферме, нужно определить пути сбыта готовой продукции. Хороший рынок сбыта - активный рост и стабильность вашего бизнеса.
Если ваша ферма специализируется на производстве молока, то путями сбыта могут быть близлежащие молокозаводы, которые покупают молоко оптом. При производстве мяса это могут стать мясоперерабатывающие комбинаты, лучше чтоб они были расположены поблизости. Чтобы не возникало проблем со сбытом продукции, необходимо правильно устанавливать цены на реализацию готовой продукции, которые по итогам сезона выведут ваше дело в плюс и оно будет прибыльным, а не затратным.
Скотоводство является одной из важных и сложных отраслей сельского хозяйства. Оно дает ценные продукты питания, кожевенное сырье, органическое удобрение. Мясо и мясопродукты являются неотъемлемыми элементами структуры стратегической продовольственной безопасности нашей страны. В последнее время наблюдается резкий спад производства продукции мясного скотоводства, эта отрасль для сельскохозяйственных товаропроизводителей является убыточной. В связи с этим вывод отрасли из кризиса, повышение эффективности производства мяса крупного рогатого скота в настоящее время является актуальной проблемой.
Известно, что на общий объем производства продукции мясного скотоводства влияют множество факторов, но основными являются поголовье животных на выращивании и откорме и их продуктивность. Эффективность производства мяса крупного рогатого скота определяется по ряду показателей, основным из которых является себестоимость, показатели прироста на одну голову, трудоемкость, цена реализации, выручка и уровень рентабельности.
Развитие животноводства прогнозируется, главным образом, за счет интенсификации скороспелых отраслей в общественных хозяйствах, а также стимулирования производства в фермерских и личных подсобных хозяйствах населения. Достигнуть эти цели возможно лишь при условии обеспечения государственных и коллективных хозяйств комбикормом, технологическим оборудованием и другими материальными ресурсами по ценам разумного паритета. Внедрение в животноводство новой технологии и средств модернизации, интенсификация кормления и оптимизация кормовых рационов, восстановление и дальнейшее развитие крупных предприятий по откорму скота с устранением ручного труда. Это в свою очередь позволит ускорить производство говядины и телятины. Достижение результатов всех факторов повышения эффективности производства продукции скотоводства, в настоящее время напрямую связано с размером выделяемых бюджетных средств, льготного налогообложения, информационного обеспечения и т.д.
Совершенствование внутрихозяйственных экономических отношений в мясном скотоводстве позволит заинтересовать работников отрасли в увеличении производства продукции, экономном расходовании кормов, средств производства. В результате этого повысится продуктивность животных, увеличится объем производства продукции мясного скотоводства, повысится экономическая эффективность отрасли.
Важно анализировать направленность, характер и последствия взаимодействия АПК с окружающей средой, влияние техногенных факторов на сельское хозяйство. Необходимо эффективно использовать природный базис сельскохозяйственного производства, обеспечивая при этом последовательное его восстановление и воспроизводство, устойчивую сбалансированность элементов.
2. Описание процесса содержания и эксплуатации животных
Ферма содержит животных и посредством их эксплуатации и управления их развитием, используя корма, производит продукцию животноводства и товарный скот. Своей основной продукцией ферма удовлетворяет запросы населения на продукты питания, животноводческих предприятий и частных хозяйств на ремонтный молодняк; молоко- и мясоперерабатывающих предприятий на сырьё для своего производства.
Производство осуществляется путём конверсии корма в продукцию: молоко, приплод, прирост массы животных. При этом соблюдаются нормы содержания и эксплуатации животных, поддерживается оптимальная структура стада по половозрастным группам в рамках имеющихся скотомест.
На рисунке 4.1 отображена контекстная диаграмма верхнего уровня "Содержание и эксплуатация животных".
Рисунок 4.1 - Контекстная диаграмма верхнего уровня "Содержание и эксплуатация животных"
Входными данными являются: стадо, корма, денежные средства.
Выходными данными являются: воспроизводство породы, продукция животноводства, денежные средства.
Управлением является: Конституция РБ, закон "О племенном животноводстве", сертификат (свидетельство), стандарты.
Механизмами являются: фермеры, оборудование покупатели, аналитик.
На рисунке 4.2 отображена декомпозиция первого уровня контекстной диаграммы "Содержание и эксплуатация животных".
Рисунок 4.2 - Декомпозиция первого уровня контекстной диаграммы "Содержание и эксплуатация животных"
Процесс содержания и эксплуатации животных на ферме можно разделить на следующие этапы:
выбор технологии выращивания;
разведение племенных животных;
производство продуктов животноводства;
использование продукции животноводства.
Технология выращивания мясных коров/телят - это работа на ферме, где есть коровы и быки, которых держат вместе, чтобы они производили потомство. Телят часто продают на рынке в виде говядины. Существует две технологии выращивания: коммерческая и выращивание молодняка. Коммерческая обычно включает перекрестное разведение коров для получения телят, которые пойдут в основном на производство говядины. Коммерческая технология может использовать коров одной породы, но большинство из них не чистокровные коровы. Выращивание молодняка, с другой стороны, призвано выводить лучшую породу (иногда более чем одну) и выращивать коров для получения потомства, которое потом продают другим производителям для поддержания поголовья.
Как правило, большинство новичков начинает как коммерческие скотоводы, чтобы получить опыт в отеле коров, отъеме телят, продаже, выборе коров, быков и ремонтных телок, выбраковки остальной скотины и т.д., прежде чем они решаться выращивать молодняк или вести чистокровный бизнес[8].
Процесс выбора технологии выращивания более подробно представлен на рисунке 4.3.
Данный процесс включает:
- формирование групп выращивания;
- анализ технологии;
- сравнение способов и выбор способа разведения;
- экономический расчет и анализ решения;
- представление результатов.
Рисунок 4.3 - Декомпозиция блока "Выбор технологии выращивания"
Фермер не сможет вырастить крупный рогатый скот, если ему нечем кормить животных и у него нет пастбищ, на которых они смогут пастись. Перед закупкой скота фермеру следует убедиться, что у него достаточно корма и есть подходящее пастбище. Коровы едят траву, сено, силос, зерно и лучше всего растут на первых трех видах корма.
То, каким типом корма будут кормить животных, зависит от того, какая порода скота будет выращиваться, от целей и местоположения. Например, легко можно вырастить стадо мясной породы только на траве и сене, или откормить животных на убой только травой на протяжении всего лета. Для нагула скота необходимы зерно и силос, для кормления молочных коров сено нужно дополнительно увлажнять, делая травяной силос.
Некоторые молочные породы тоже могут пастись часть года или даже весь год, в зависимости от того, кормят их органической травой или нет.
Для пастбищ следует убедиться, что численность поголовья скота на гектар земли соответствует норме, чтобы исключить чрезмерный выпас. В идеале, нужно организовать пастбищеоборот для повышения эффективности пастбищ [8].
Процесс разведения племенных животных представлен на рисунке 4.4.
Рисунок 4.4 - Декомпозиция блока "Разведение племенных животных"
3. Постановка задачи
В данной работе необходимо построить математическую модель, которая будет позволять рассчитывать оптимальный план продаж скота на ферме.
Для того, чтобы построить модель, необходимо знать следующие данные:
- начальное количество голов скота;
- прибыль от продажи одной головы скота;
- во сколько раз увеличивается количество коров каждый год;
- максимально возможное количество коров;
- количество лет, через которое фермер намеревается продать все стадо.
Основные необходимые свойства, которыми должна обладать задача, для применения метода динамического программирования:
- задача должна допускать интерпретацию как n-шаговый процесс принятия решений (в нашем случае в качестве шага выступает год принятия решения).
- задача должна быть определена для любого числа шагов и иметь структуру, не зависящую от их числа;
- при рассмотрении k-шаговой задачи должно быть задано некоторое множество параметров, описывающих состояние системы, от которых зависят оптимальные значения переменных, причем это множество не должно изменяться при увеличении числа шагов;
- выбор решения (управления) на k-м шаге не должен оказывать влияния на предыдущие решения, кроме необходимого пересчета переменных[9].
4. Построение базовой аналитической модели
Для решения данной задачи используем основные шаги типовой схемы решения задач динамического программирования.
Шаг 1: Выбрать способ описания процесса
Итак, в задаче явным образом задана периодизация процесса принятия решений: есть три точки принятия решений, соответствующих началам 1го, 2го и 3го годов. В начале 4го года все оставшиеся животные продаются. При анализе условия задачи необходимо выделить три составляющие, обязательные при решении задачи методом динамического программирования: выигрыш, управление и состояние.
Выигрыш в данной задаче соответствует доходу, получаемому от продажи животных. Управление - это решение о том, сколько животных в данной точке принятия решение следует продать. Поскольку все стадо в каждой точке принятия решения делится на две непересекающиеся группы - продаваемые животные и остающиеся животные - вводить отдельную переменную управления для остающихся животных нет смысла. Обозначим единственную переменную, задающую управление, через x. Для различения управлений на разных этапах будем использовать нижнюю индексацию, например, x1 соответствует управлению на первом этапе, то есть, количеству коров, которые фермер продает в начале первого года. Состояние. В каждой точке принятия решения управляемая система описывается одним параметром - количеством животных, это и будет состояние системы k. По аналогии с управлением, для различения состояний, используемых на разных этапах, будем использовать нижнюю индексацию: k1, …, k4.
Шаг 2: Записать выигрыш на i-том этапе в зависимости от состояния и управления
На предыдущем шаге мы определили, что выигрыш в данной задаче определяется доходом, получаемым от реализации животных. Функции для определения дохода от продажи одного животного, таким образом, выигрыш на i-том шаге определяется по следующей формуле:
Шаг 3: Записать для i-того шага функцию, выражающую изменение состояния системы под влиянием управления
На этом шаге нам нужно построить функцию, с помощью которой можно вычислить, каким будет состояние системы к следующей точке принятия решения (i+1), если фермер в i-той точке принятия решения выберет управление xi. Допустим, к моменту принятия решения у фермера было ki животных. После продажи xi животных остается (ki - xi), а за год, в соответствии с условием задачи, количество оставленных животных увеличивается в a раз. Значит, через год, к следующей точке принятия решения, количество животных будет определяться по следующей формуле:
Шаг 4: Записать основное функциональное уравнение ДП Собираем воедино все, что было рассмотрено ранее:
Как несложно заметить, функция условного оптимального выигрыша имеет рекурсивную природу, которую можно либо отразить в организации вычислений, либо нет. Мы пойдем по итеративному пути, рассчитывая условный оптимальный выигрыш от последнего шага к первому, а значит, к моменту вычисления Wi Wi+1 уже будет вычислено. А если будет вычислено, значит, результаты этих вычислений необходимо: а) как-то сохранить; б) как-то извлечь. Простейшим способом хранения результатов вычисления определенного этапа будут два массива: k_i и W_i. В первый массив поместим различные значения состояний (размеры стада), для которых вычислены условные оптимальные выигрыши, а во второй - соответствующие значения условных оптимальных выигрышей. Де факто, получили функцию, заданную таблично - значению размера стада k_i[q] соответствует условный оптимальный выигрыш W_i[q]. Добавим к этим двум массивам еще один - x_i, имеющий ту же длину, и хранящий управление, позволяющее получить условный оптимальный выигрыш (условное оптимальное управление). Например, если для 4-го этапа k_4, W_4 и x_4 уже рассчитаны и известно, что к 4-му этапу останется 12 коров, то для нахождения условного оптимального выигрыша необходимо выполнить следующие действия:
- найти в массиве k_4 такой индекс z, что k_4[z] =12 либо близкий к нему;
- получить значение с соответствующим индексом из вектора W_4.
Необходимо определить функцию W(k, ks, Ws), которая будет при заданном k перебирать все возможные управления (от 0 до k), и искать то из них, которое дает наибольший выигрыш. Параметры ks и Ws вместе представляют собой таблично заданную функцию условного оптимального выигрыша следующего этапа. То есть, когда мы будем вычислять условные оптимальные выигрыши для 3-го этапа, то подставим рассчитанные предварительно массивы x_4 и W_4, содержащие данные четвертого этапа, при расчете 2го этапа, подставим x_3 и W_3 и т.д.
Шаг 5: Найти функцию условного оптимального выигрыша для последнего этапа
На предыдущем шаге мы исходили из того, что все k_i, x_i и W_i уже заполнены. Сейчас же остановимся на том, как именно (и в какой последовательности) они вычисляются. Последним этапом принятия решения является третий. Традиционно, для последнего этапа функциональное уравнение ДП модифицируется исключением слагаемого Wi+1, снимающего рекуррентный характер этого уравнения. Раз уравнение модифицируется, то для последнего этапа придется определить отдельную функцию вычисления условного оптимального выигрыша. Действительно, функция W(k, ks, Ws), которую мы определили на шаге 4, принимает в качестве параметра (и использует) таблицы значений, относящихся к следующему этапу, но для третьего этапа никакого следующего нет. Однако чтобы не вводить еще одну функцию, очень похожую на уже определенную W(k, ks, Ws), можно попытаться искусственно сформировать эти таблицы. В условии задачи сказано, что через год после последнего этапа принятия решения все стадо должно быть продано. Значит, можно ввести некоторую "фиктивную" четвертую точку принятия решения, на которой собственно решения-то и не принимается - просто выполняется требование о продаже всего стада, и исходя из этого заполнить значения условных оптимальных выигрышей и управлений:
- помещения позволяют фермеру держать максимум 200 голов, поэтому 0 < k_4 < 200.
- вычисляем выигрыш от продажи всех животных.
5. Обоснование выбора программных средств разработки
Для реализации алгоритма в качестве основного был выбран язык программирования С++, который стал едва ли не стандартом для написания любых достаточно сложных программ.
Язык программирования служит двум связанным между собой целям: он дает программисту аппарат для задания действий, которые должны быть выполнены, и формирует концепции, которыми пользуется программист, размышляя о том, что делать. Первой цели идеально отвечает язык, который настолько "близок к машине", что всеми основными машинными аспектами можно легко и просто оперировать достаточно очевидным для программиста образом. С таким умыслом первоначально задумывался C. Второй цели идеально отвечает язык, который настолько "близок к решаемой задаче", чтобы концепции её решения можно было выражать прямо и коротко. С таким умыслом предварительно задумывались средства, добавленные к C для создания С++.
С++ - это универсальный язык программирования, задуманный так, чтобы сделать программирование более простым и приятным для серьёзного программиста. За исключением второстепенных деталей С++ является надмножеством языка программирования C (его объектно-ориентированным расширением) [10].
Основной целью разработчиков C было создание языка, который вместо неудобного и лишённого наглядности ассемблера применялся бы в самых насущных задачах системного программирования. К достоинствам языка С относятся лаконичность записи алгоритмов, логическая стройность написанных на нём программ, их переносимость между компьютерами с различной архитектурой и различными операционными средами (чего не скажешь о программах на машинно-зависимом языке ассемблера). Компиляторы языка разработаны практически для всех существующих в настоящее время платформ. Как никакой другой язык программирования, язык С "доверяет" программисту. Даже в таком существенном вопросе, как преобразование типов данных, налагаются лишь незначительные ограничения. Во многих случаях программы, написанные на этом языке программирования, сравнимы по скорости с программами, написанными на языке ассемблера, при этом они более наглядны и просты в сопровождении. Всё это делает его удобным и эффективным средством для решения разнообразных задач.
Помимо возможностей, которые дает C, С++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы.
Различие между C и С++ состоит в первую очередь в степени внимания, уделяемого типам и структурам. C выразителен и снисходителен. С++ еще более выразителен, но, чтобы достичь этой выразительности, программист должен уделить больше внимания типам объектов. Когда известны типы объектов, компилятор может правильно обрабатывать выражения, тогда как в противном случае программисту пришлось бы задавать действия с мучительными подробностями. Знание типов объектов также позволяет компилятору обнаруживать ошибки, которые в противном случае остались бы до тестирования. Немаловажно то, что использование системы типов для того, чтобы получить проверку параметров функций, защитить данные от случайного искажения, задать новые операции и т.д., само по себе не увеличивает расходов по времени выполнения и памяти. Система типов особенно полезна в нетривиальных задачах.
Некоторые части программы (работа с мышью и видеокартой) выполнены в виде ассемблерных вставок[11].
6. Описание структуры данных
В данном программном приложение вся информация записывается в файл. На рисунке 6.1 представлен файл Data.txt, в котором хранится информация, необходимая для расчета оптимальной продажи скота.
Рисунок 6.1 - Файл Data.txt
Первое число - это количество голов скота на начальном этапе.
Второе - максимально возможное количество коров.
Третье - прибыль от продажи головы скота.
Четвертое показывает во сколько раз увеличивается количество оставленных голов каждый год.
На основе этих данных легко рассчитать оптимальный план продаж по годам.
Также есть еще один файл, в котором хранятся пароли пользователя и администратора (рисунок 6.2). Считывание информации из этого файла происходит при авторизации.
Рисунок 6.2 - Файл Users.txt
7. Спецификация вариантов использования
Диаграмма вариантов использования обеспечивает высокоуровневое описание того, что система в состоянии сделать и с кем (или чем) она будет взаимодействовать.
В данной программе актерами являются пользователь и администратор. Для каждого характерен свой функционал.
Администратору доступны такие функции, как:
- остановить сервер;
- изменить исходные данные;
- авторизироваться;
- рассчитать оптимальную стратегию;
- подключиться к серверу.
У пользователя же меньший функционал. Он может подключиться к серверу, авторизироваться и, на основе данных, которые у нас уже добавил администратор, рассчитать оптимальную стратегию.
Диаграмма вариантов использования представлена на рисунке 7.1.
Рисунок 7.1 - Диаграмма вариантов использования
8. Модели представления системы
8.1 Описание диаграммы классов
На серверной части программы используется 2 основных класса для решения поставленной задачи: Task и YearState. Диаграмма данных классов представлена на рисунке 8.1.
В классе YearState содержатся такие компоненты, как:
- количество имеющихся коров;
- предыдущий год;
- количество проданных голов скота;
- сумма полученной прибыли;
А также методы:
- GetCows;
- GetPrevious;
- GetSum;
- GetSaled;
В классе Task содержатся следующие компоненты:
- набор всевозмодных стратегий, из которых выбирается оптимальная;
- начальное количество коров;
- число, показывающее во сколько раз увеличивается количество голов каждый год;
- максимально возможное количество коров;
- прибыль от продажи головы скота;
- количество лет, после которого все коровы будут проданы;
В данном классе содержатся методы для определения оптимального плана продаж.
Рисунок 8.1 - Диаграмма классов сервера
Рисунок 8.2 - Диаграмма классов клиента
8.2 Описание диаграммы состояний
Описать поведение отдельно взятого объекта помогает диаграмма состояний.
Также диаграмма состояний используется для описания последовательности переходов объекта из одного состояния в другое.
Диаграмма состояний покажет нам все возможные состояния, в которых может находиться объект, а также процесс смены состояний в результате внешнего влияния. Рассмотрим диаграмму состояний на примере процесса заказа товара. После того, как покупатель нашел интересующий его товар, ему необзодимо связаться с продавцом для уточнения информации о его наличии. В случае, если товар найден происходит оформление заказа, в противном случае покупателю необходимо выбрать другой товар. Оформление заказа состоит в том, что необходимо сформировать запрос на товар со склада, после чего доставить товар покупателю.
На рисунке 8.3 представлена диаграмма состояний процесса заказа товара.
Рисунок 8.3 - Диаграмма состояний
8.3 Описание диаграммы компонентов
Диаграмма компонентов - статическая структурная диаграмма, показывает разбиение программной системы на структурные компоненты и связи (зависимости) между компонентами.
В диаграмме компонентов клиента имеется пакет Client(рисунок 8.5), в котором хранятся все необходимые файлы для работы клиентской части программы.
В диаграмме компонентов сервера(рисунок 8.4) имеется 2 пакета: Server и Txt. В пакете Server хранятся все необходимые файлы для правильной работы серверной части приложения. Txt содержит текстовые файлы, в которых хранится необходимая информация и с которых происходит считывание.
Рисунок 8.4 - Диаграмма компонентов клиента
Рисунок 8.5 - Диаграмма компонентов сервера
8.4 Описание диаграммы развертывания
Для представления общей конфигурации и топологии распределенной программной системы в UML предназначены диаграммы развертывания.
Диаграмма развертывания программы представлена на рисунке 8.6.
В данной программе взаимодействие между клиентом и сервером осуществляется на основе протокола TCP/IP.
Рисунок 8.6 - Диаграмма развертывания
8.5 Описание диаграммы последовательности
алгоритм формализация интерфейс продажа
Диаграмма последовательностей отображает взаимодействие объектов в динамике. Диаграмма последовательностей относится к диаграммам взаимодействия UML, описывающим поведенческие аспекты системы, но рассматривает взаимодействие объектов во времени. Другими словами, диаграмма последовательностей отображает временные особенности передачи и приема сообщений объектами.
Рассмотри диаграмму последовательности процесса расчета оптимальной стратегии (рисунок 8.7). После выбора пункта меню "Расчет оптимальной стратегии" происходит проверка на авторизацию пользователя, если пользователь был авторизирован, на сервер отправляется соответствующий запрос. Как только сервер получил запрос, он обрабатывает его, а именно происходит считывание информации из файла. Если файл содержал необходимые данные для расчета, осуществляется поиск оптимальной стратегии. Сервер получает результат и отправляет их клиенту, в окне клиента выводится план оптимальной продажи.
Рисунок 8.7 - Диаграмма последовательности
9. Описание алгоритма работы всей программы
Работа программы начинается с запуска сервера, далее необходимо запустить клиентскую часть программы.
Для того, чтобы начать работу необходимо ввести команду start. Пока не будет введена данная команда, работы приложения не начнется. После того, как была получена команда start, необходимо подключиться к серверу, введя соответствующую команду.
После подключения следует блок авторизации. Можно войти под пользователем либо под администратором. Все пароли хранятся в файле, из которого идет считывание. В случае ввода несуществующего пароля выводится сообщение об ошибке и дается еще попытка для ввода пароля. И так происходит до тех пор, пока не будет введен корректный пароль.
После успешной авторизации клиенту предоставляется меню в зависимости от того, под кем был осуществлен вход.
Если вход осуществлен под администратором, предоставляется следующее меню:
расчет оптимальной стратегии;
остановка сервера;
изменение исходных данных.
В блоке "Расчет оптимальной стратегии" происходит считывание данных из файла. Если считывание произошло успешно, сервер обрабатывает данные и посылает готовый результат. В окне клиента выводится оптимальный план продажи на основе имеющихся данных.
При выборе команды "Остановка сервера" завершается работа клиента.
В блоке "Изменение данных" администратору предоставляется возможность добавить новые данные для расчета оптимальной стратегии, если файл пуст, в противном случае он может изменить существующие данные, которые уже записаны в файле.
Пользователю доступна команда "Расчет оптимальной стратегии".
Если необходимо завершить программу нужно ввести команду exit.
Алгоритм работы программы представлен на рисунке А.1.
10. Результаты тестирования разработаной системы
Начало работы (рисунок 10.1) программы начинается с ввода необходимой команды:
start - начало работы;
exit - выход из программы.
Рисунок 10.1 - Начало работы программы
Если была получена команда start, появляется меню (рисунок 10.2).
Рисунок 10.2 - Выбор команды
Для начала необходима подключиться к серверу (рисунок 10.3), введя соответствующую команду: connect;<хост>;<порт>.
Рисунок 10.3 - Подключение к серверу
Затем следует авторизироваться, введя логин: login, который идентичен для пользователя и администратора, и пароль: admin/user для администратора/пользователя соответственно. Авторизация представлена на рисунке 10.4.
Рисунок 10.4 - Авторизация
После того, как был осуществлен вход предлагаются следующие действия для администратора:
расчет оптимальной стратегии;
остановить сервер;
изменить исходные данные.
Для пользователя доступен только пункт расчета оптимальной стратегии.
При вводе команды calculate происходит расчет оптимального плана продаж на основе данных, которые хранятся в файле. Расчет продемонстрирован на рисунке 10.5.
Рисунок 10.5 - Расчет оптимального плана продаж
Все операции, выполняемые клиентом, отображаются в окне сервера (рисунок 10.6).
Рисунок 10.6 - Окно сервера
При выборе команды stop работа сервера прекращается (рисунок 10.7)
Рисунок 10.7 - Прекращение работы сервера
При изменении исходных данных происходит их замена в файле на введенные (рисунок 10.8).
Рисунок 10.8 - Изменение исходных данных
11. Контрольный пример
По условию задачи:
Фермеру принадлежит стадо скота, насчитывающее 60 голов. Один раз в году фермер решает, сколько голов скота продать и сколько оставить. Прибыль от продажи одной головы скота в любом году рассматриваемого четырехлетнего периода составляет 10 ден. ед. Количество оставленных голов скота в следующем году увеличивается на 100%. По истечении четырех лет фермер намеривается продать все стадо, так как переходит на производство другой продукции. Производственные помещения не позволяют ему содержать более 200 голов скота.
Найти оптимальный план продажи скота по годам четырехлетнего периода, при котором прибыль, полученная за этот период, будет максимальной.
Задача о нахождении оптимального плана продажи скота на ферме была решена с использованием среды MS Excel 2013. Все данные и конечный результат представлена на рисунке 11.1
Значения x1, x2, x3, x4 - количество голов скота, которые следует продать в 1-ом, 2-ом, 3-м, 4-м годах соответственно. Сначала эти ячейки не заполняются. Их значения будут меняться в ходе выполнения процесса "Поиск решений".
s1, s2, s3, s4 - состояние в начале 1-го, 2-го, 3-го, 4-го годах соответственно, т.е. количество голов на начало года с учетом продажи в предыдущем и увеличения оставшихся на 100%.
В эти ячейки были введены следующие формулы:
В ячейке продано всего суммируются значения x1, x2, x3, x4.
В ячейке общая прибыль количество всех проданных коров умножается на стоимость одной головы скота, а именно на 10.
Для того, чтобы рассчитать оптимальный план продаж, используем надстройку "Поиск решений". В поле "Оптимизировать целевую функцию" вводим ячейку, в которой рассчитывается общая прибыль. В поле "Изменяя ячейки переменных" - ячейки, в которые будут помещены данные о количестве коров, которых необходимо продать.
Также следует предусмотреть следующие ограничения:
Далее, используя метод Поиск решения нелинейных задач методом ОПГ был получен результат:
1 год: 0 голов продаем, прибыль 0 ден. ед.;
2 год: 20 голов продаем, прибыль 200 ден. ед.;
3год: 100 голов продаем, прибыль 1000 ден. ед.;
4 год: 200 голов продаем, прибыль 2000 ден. ед.;
Суммарная, максимальная, прибыль за весь период составила 3200.
Рисунок 11.1 - Контрольный пример
В ходе выполнения программы был получен аналогичный результат, который представлен на рисунке 11.2.
Рисунок 11.2 - Программное решение контрольного примера
Заключение
В век информационных технологий множество действий, работ и проектов упрощаются и систематизируются благодаря различным программным средствам.
Целью данного проекта являлось нахождение оптимального плана продаж скота на ферме. Это было реализовано с помощью основных принципов проектирования на языке C++ и моделирования IDEF0.
Приложение облегчает процесс поиска оптимального плана продаж, позволяет добавлять, изменять, просматривать и удалять данные. Реализация записи в файл и считывания из файла также обеспечивает читабельность и универсальность приложения.
Поиск оптимального плана продаж позволяет фермеру прогнозировать финансово-хозяйственную деятельность. План продаж позволяет адекватно определить границы возможностей фермы на предстоящий период, распланировать работу таким образом, чтобы использовать ресурсы как можно эффективнее и достигать высоких результатов.
Если рассматривать саму работу приложения, то необходимо отметить, что системы была протестирована, не обнаружив значительных ошибок, и получила неплохие результаты быстродействия. Интерфейс программного продукта прост и лаконичен, таким образом, любой пользователь сможет легко работать с приложением.
Можно сказать, что цель и задачи, поставленные в начале разработки программного продукта, были достигнуты.
Список использованных источников
1. Зеленеков П.И., Баранников А.И., Зеленков А.П., "Скотоводство" Ростов н/д. Феникс. 2005г - 305с.
2. Федеральный закон "О крестьянском (фермерском) хозяйстве от 11 июня 2003г. №74-ФЗ
3. Кудряшов В. Крестьянские (фермерские) хозяйства: проблемы и пути развития // АПК: экономика, управление. - №5, 2002. - С.50-57
4. Агеенко А.А., Чайка Р.А., Новосельцева Л.И. Крестьянские (фермерские) хозяйства // Вопросы статистики. - №5, 2001. - С.21-24
5. Буробкин И. Моделирование эффективной работы сельскохозяйственного предприятия// АПК: экономика, управление. - №12, 2005. - С.70-72.
6. Голубев А. Теоретические основы эффективного аграрного производства// АПК: экономика, управление. - №12, 2003. - С.23-32
7. Виноходова А.Ф. Организация и эффективность производства продукции скотоводства в условиях различных форм хозяйствования. - М.: Колос, 1994.
8. http://ru.wikihow.com/выращивать-коров-и-телят
9. http://matmetod-popova.narod.ru/theme211.htm
10. http://proizvodstvo-rb.blogspot.com/p/blog-page_19.html
11. http://www.life-prog.ru/1_3088_ER-modeli.html
Приложение А. Блок-схема программы (к разделу 9)
Рисунок А.1 - Алгоритм работы программы
Приложение Б. Листинг алгоритмов, реализующих бизнес-логику
using namespace std;
bool Task::Init()
{
std::vector<CString> parameters = Helper::ReadFromFile("Data.dat");
if (parameters.size() < 4)
{
return false;
}
m_cows = _tstoi(parameters[0]); // начальное кол-во коров
m_maxCows = _tstoi(parameters[1]); // максимально возможное кол-во коров
m_price = _tstoi(parameters[2]); // прибыль от продажи головы скота
m_increase = _tstoi(parameters[3]); // раз в год кол-во оставленных голов увеличивается в X раза
m_years = 4; // кол-во лет после которого все головы будут проданы
if (m_cows <= 0 || m_maxCows <= 0 || m_price <= 0 || m_increase <= 0 || m_years <= 0 || m_cows >= m_maxCows)
{
return false;
}
m_allStrategies.clear();
}
CString Task::Resolve()
{
if (!Init())
{
return CString("Не удалось загрузить данные");
}
// Начальное состояное - нулевой год
StrategyArray yearStates;
YearState* previous = new YearState(m_cows, 0, 0);
m_allStrategies.push_back(previous);
// Перебираем все возможные стратегии продажи за последующие 3 года
for (int year = 1; year < m_years; year++)
{
if (yearStates.size() == 0)
{
yearStates = YearStrategy(previous);
}
else
{
StrategyArray newYearStates;
for (StrategyArray::iterator it = yearStates.begin(); it != yearStates.end(); ++it)
{
StrategyArray yearStatesX = YearStrategy(*it);
for (StrategyArray::const_iterator cit = yearStatesX.begin(); cit != yearStatesX.end(); ++cit)
{
newYearStates.push_back(*cit);
}
}
yearStates = newYearStates;
}
}
// В 4-й год единственно возможная стратегия - продажа всех оставшихся коров
StrategyArray newYearStates;
for (StrategyArray::iterator it = yearStates.begin(); it != yearStates.end(); ++it)
{
YearState* yearState = new YearState(*it, 0, (*it)->GetSum() + (*it)->GetCows() * m_price, (*it)->GetCows());
m_allStrategies.push_back(yearState);
newYearStates.push_back(yearState);
}
yearStates = newYearStates;
// Ищем стратегию с максимальной суммой продажи
int maxSum = 0;
YearState* bestState = NULL;
for (StrategyArray::iterator cit = yearStates.begin(); cit != yearStates.end(); ++cit)
{
if ((*cit)->GetSum() > maxSum)
{
maxSum = (*cit)->GetSum();
bestState = *cit;
}
}
CString result = GetResult(bestState);
for (int i = 0; i < m_allStrategies.size(); i++)
{
delete m_allStrategies[i];
}
m_allStrategies.clear();
return result;
}
StrategyArray Task::YearStrategy(YearState* previous)
{
StrategyArray yearStates;
int maxSaleCows = m_maxCows / m_increase;
// минимальное и максимальное число коров, которых можно продать.
int minCount = previous->GetCows() <= maxSaleCows ? 0 : previous->GetCows() - maxSaleCows;
int maxCount = previous->GetCows() - 1;
// Добавляем в список все возможные варианты продаж (от 0 до максимально возможного количетсва)
for (int count = minCount; count <= maxCount; count++)
{
YearState* yearState = new YearState(previous, (previous->GetCows() - count) * m_increase, previous->GetSum() + count * m_price, count);
m_allStrategies.push_back(yearState);
yearStates.push_back(yearState);
}
return yearStates;
}
CString Task::GetResult(YearState* bestState)
{
CString message(CString(""));
message.AppendFormat(CString("%d"), bestState->GetSum());
YearState* state = bestState;
while (state != NULL)
{
if (state->GetPrevious() != NULL)
{
CString subMessage(CString(""));
subMessage.AppendFormat(CString("%d;"), state->GetSaled());
CString oldMessage(message);
message = subMessage + message;
}
state = state->GetPrevious();
}
return message;
}
using namespace std;
bool Task::Init()
{
std::vector<CString> parameters = Helper::ReadFromFile("Data.dat");
if (parameters.size() < 4)
{
return false;
}
m_cows = _tstoi(parameters[0]); // начальное кол-во коров
m_maxCows = _tstoi(parameters[1]); // максимально возможное кол-во коров
m_price = _tstoi(parameters[2]); // прибыль от продажи головы скота
m_increase = _tstoi(parameters[3]); // раз в год кол-во оставленных голов увеличивается в X раза
m_years = 4; // кол-во лет после которого все головы будут проданы
if (m_cows <= 0 || m_maxCows <= 0 || m_price <= 0 || m_increase <= 0 || m_years <= 0 || m_cows >= m_maxCows)
{
return false;
}
m_allStrategies.clear();
}
CString Task::Resolve()
{
if (!Init())
{
return CString("Не удалось загрузить данные");
}
// Начальное состояное - нулевой год
StrategyArray yearStates;
YearState* previous = new YearState(m_cows, 0, 0);
m_allStrategies.push_back(previous);
// Перебираем все возможные стратегии продажи за последующие 3 года
for (int year = 1; year < m_years; year++)
{
if (yearStates.size() == 0)
{
yearStates = YearStrategy(previous);
}
Else
{
StrategyArray newYearStates;
for (StrategyArray::iterator it = yearStates.begin(); it != yearStates.end(); ++it)
{
StrategyArray yearStatesX = YearStrategy(*it);
for (StrategyArray::const_iterator cit = yearStatesX.begin(); cit != yearStatesX.end(); ++cit)
{
newYearStates.push_back(*cit);
}
}
yearStates = newYearStates;
}
}
// В 4-й год единственно возможная стратегия - продажа всех оставшихся коров
StrategyArray newYearStates;
for (StrategyArray::iterator it = yearStates.begin(); it != yearStates.end(); ++it)
{
YearState* yearState = new YearState(*it, 0, (*it)->GetSum() + (*it)->GetCows() * m_price, (*it)->GetCows());
m_allStrategies.push_back(yearState);
newYearStates.push_back(yearState);
}
yearStates = newYearStates;
// Ищем стратегию с максимальной суммой продажи
int maxSum = 0;
YearState* bestState = NULL;
for (StrategyArray::iterator cit = yearStates.begin(); cit != yearStates.end(); ++cit)
{
if ((*cit)->GetSum() > maxSum)
{
maxSum = (*cit)->GetSum();
bestState = *cit;
}
}
CString result = GetResult(bestState);
for (int i = 0; i < m_allStrategies.size(); i++)
{
delete m_allStrategies[i];
}
m_allStrategies.clear();
return result;
}
StrategyArray Task::YearStrategy(YearState* previous)
{
StrategyArray yearStates;
int maxSaleCows = m_maxCows / m_increase;
// минимальное и максимальное число коров, которых можно продать.
int minCount = previous->GetCows() <= maxSaleCows ? 0 : previous->GetCows() - maxSaleCows;
int maxCount = previous->GetCows() - 1;
// Добавляем в список все возможные варианты продаж (от 0 до максимально возможного количетсва)
for (int count = minCount; count <= maxCount; count++)
{
YearState* yearState = new YearState(previous, (previous->GetCows() - count) * m_increase, previous->GetSum() + count * m_price, count);
m_allStrategies.push_back(yearState);
yearStates.push_back(yearState);
}
return yearStates;
}
CString Task::GetResult(YearState* bestState)
{
CString message(CString(""));
message.AppendFormat(CString("%d"), bestState->GetSum());
YearState* state = bestState;
while (state != NULL)
{
if (state->GetPrevious() != NULL)
{
CString subMessage(CString(""));
subMessage.AppendFormat(CString("%d;"), state->GetSaled());
CString oldMessage(message);
message = subMessage + message;
}
state = state->GetPrevious();
}
return message;
}
Размещено на Allbest.ru
...Подобные документы
Математическая модель алгоритма с модификацией муравьиной колонии. Выбор аппаратных и программных средств для разработки программы. Особенность построения оптимального маршрута обхода пациентов. Характеристика тестирования и отладки данного проекта.
дипломная работа [1,9 M], добавлен 17.11.2017Математическая постановка задачи. Обоснование выбора средств разработки. Входные и выходные данные работы программы. Решение задачи теста для написания и отладки программы. Описание программных модулей. Разработка алгоритма, анализ полученных результатов.
курсовая работа [2,2 M], добавлен 13.12.2015Программные продукты для решения задачи построения оптимального маршрута. Выбор аппаратных и программных средств для построения маршрута обхода пациентов. Математическая модель муравьиного алгоритма: состав, структура, тестирование, отладка, реализация.
дипломная работа [1,9 M], добавлен 03.12.2017Определение оптимального плана выпуска продукции частного предприятия по изготовлению мебели с применением метода линейного программирования (симплекс-метод). Построение схемы движения информации в подсистеме оптимального плана выпуска продукции.
лабораторная работа [301,5 K], добавлен 08.06.2009Организационная структура и функциональная модель санатория "Дубрава" и функции ее основных элементов, сценарий бизнес-процессов и математическая модель оптимального питания. Реализация информационной системы: выбор программных средств, эффективность.
дипломная работа [1,7 M], добавлен 20.07.2014Выбор и обоснование выбора среды разработки. Разработка алгоритма работы программы, проектирование системы меню. Общее описание программы: назначение и область применения, интерфейс, требования к аппаратным и программным ресурсам, тестирование и листинг.
курсовая работа [543,2 K], добавлен 20.05.2013Обоснование выбора программно-технических средств. Надежность программы и состав технических средств. Разработка структурной схемы программы, алгоритмического и программного интерфейса. Технология разработки интерфейса пользователя и программных модулей.
дипломная работа [3,2 M], добавлен 22.01.2013Математическая модель задачи оптимизации, принципы составления, содержание и структура, взаимосвязь элементов. Обоснование возможности решения поставленной задачи средствами оптимизации Excel. Оценка экономической эффективности оптимизационных решений.
курсовая работа [3,4 M], добавлен 10.11.2014Разработка алгоритма, выполняющего поиск наилучшего решения на каждый ход в игре "крестики-нолики" (используя минимальный алгоритм). Обоснование выбора программных средств для решения задачи. Блок-схема интеллектуального алгоритма реализации программы.
контрольная работа [380,0 K], добавлен 28.04.2014Технические характеристики игрового приложения для операционной системы Microsoft Windows. Обоснование выбора состава технических и программных средств. Характеристика процесса разработки программы "Угадайка", ее спецификация, описание и тестирование.
курсовая работа [422,4 K], добавлен 10.06.2011Создание программы для составления оптимального плана закупки товара у поставщиков, его реализация с помощью простого и модифицированного симплекс-методов. Проектирование математического обеспечения решения задачи. Описание пользовательского интерфейса.
курсовая работа [1,2 M], добавлен 21.01.2011Характеристика предприятия и его деятельности. Описание основных сущностей и их функций. Обоснование выбора системы управления БД и анализ имеющихся программных средств. Проектирование базы данных. Разработка интерфейса и алгоритмов реализации системы.
дипломная работа [1,4 M], добавлен 18.10.2015Обоснование выбора программных продуктов для разработки и их краткое описание. Определение назначения предложенного варианта упаковки, подбор габаритных размеров. Краткое описание упаковываемого товара. Этапы алгоритма разработки компьютерного макета.
контрольная работа [2,2 M], добавлен 10.05.2013Разработка программы нахождения оптимального пути обхода шахматной доски шахматным конем с обязательной визуализацией процесса и пошаговой демонстрацией. Тестирование графического интерфейса. Исходный код программы, составление и проверка алгоритма.
курсовая работа [468,3 K], добавлен 11.12.2012Двоичные деревья в теории информации. Двоичные кодовые деревья допускают интерпретацию в рамках теории поиска. Обоснование выбора, описание алгоритма и структур данных. Обоснование набора тестов. Построение оптимального кода. Сущность алгоритма Хаффмана.
курсовая работа [241,6 K], добавлен 17.10.2008Обоснование выбора Microsoft Project - программы управления проектами, разработанной корпорацией Microsoft. Использование программы для определения критического пути проекта. Основные понятия и методы управления проектами. Составление плана работ.
курсовая работа [2,7 M], добавлен 13.07.2014Порядок и принципы документирования работ, выполняемых на этапе анализа и проектирования в жизненном цикле программных средств, нормативная основа. Описание пользовательского интерфейса прототипа разработанной информационной системы, его структура.
курсовая работа [472,9 K], добавлен 11.11.2014Проектирование программного обеспечения, позволяющего создавать и вести множество электронных словарей. Обоснование выбора программных средств решения задачи. Разработка формы входных и выходных данных. Описание модулей программы и процесса отладки.
дипломная работа [1007,7 K], добавлен 03.07.2015Планирование прибыли при производстве двух видов топлива. Составление оптимального плана выпуска продукции для получения максимальной прибыли от ее реализации. Определение опорного плана перевозок грузов методом минимальной стоимости и с помощью Excel.
контрольная работа [32,5 K], добавлен 12.11.2014Разработка алгоритма и программы, которая позволяет создавать программное обеспечение для языка программирования Паскаль. Функциональная спецификация программы. Выбор и обоснование комплекса технических средств. Пользовательское меню и интерфейс.
курсовая работа [1,3 M], добавлен 02.02.2014