Автоматизированная информационная система Оптовый продовольственный склад. 1. Курсовая - ПЭИС. Курсовая работа по дисциплинам Проектирование экономических информационных систем иБазы данных
Скачать 0.82 Mb.
|
6.3Главная форма приложенияЗадача главной формы – отображать основную информацию на экране и позволять управлять подчиненными формами. Для того чтобы объекты форм не создавались несколько раз, необходимо чтобы главная форма хранила список открытых окон. В самом верху формы расположена панель инструментов, на которой пока одна гиперссылка, отображающая полное имя пользователя, который в данный момент работает с системой. При нажатии на неё, а также при входе в систему главная форма запрашивает пароль пользователя.
На панель инструментов предполагается вывести кнопки, выполняющие общие функции для системы, но пока не известно что может понадобиться пользователю. В верхней части формы расположены вкладки, позволяющие переключаться между функциями системы. Для экономии места вкладки представлены в виде изображений, характеризующих функции системы. В зависимости от уровня доступа пользователя изменяется набор отображаемых вкладок. Так, например, покупателю доступна только первая вкладка, на которой возможно лишь редактировать собственные заявки. Менеджеру по продажам доступны все вкладки кроме последней, предназначенной для администрирования. Администратору системы разрешён доступ ко всем вкладкам. 6.3.1Вкладка «Формирование заявок покупателя»С данной закладкой работает покупатель. Здесь отображаются только заявки текущего пользователя. Нижняя таблица отображает список допустимых фильтров. Здесь данные только отображаются, редактировать их нельзя. Для редактирования заявок существует отдельная форма. Конечно, удобней было бы редактировать данные прямо в списке, но это временное решение, так как пока не решена проблема с привязкой данных. 6.3.2Вкладка «Утверждение/отклонение заявок покупателя»Работая с этой вкладкой, менеджер по закупкам принимает решение о принятии заявки или об отказе от неё. Слева в верху находятся ссылки на отчеты, дающие информацию для принятия такого решения. Чуть ниже расположены ссылки для списка товаров и их характеристик. В верхней таблице отображается, сгруппированная по покупателям, информация о необработанных заявках. В нижней таблице находится расшифровка по каждой заявке. Здесь же приводится ориентировочная цена товара. Она берется из списка товаров и вычисляется как средняя между всеми товарами, соответствующими условиям, которые определены в заявке. 6.3.3Вкладка «Формирование заявок поставщику»В левой части данной вкладки отображается сгруппированная информация о заказанных товарах. Эта информация приводится справочно и необходима менеджеру для контроля за заказом товаров поставщику. В правой части формы вносятся заявки поставщику. Вверху – список заявок поставщикам, внизу их расшифровка. На панели инструментов кнопки добавить, редактировать и удалить необходимы для ручного управления заявками поставщику. Кнопка «Сформировать автоматически» формирует заявки поставщикам на основании заявок покупателей. Кнопкой «Пакетная печать» вызывается диалог, в котором можно выбрать заявки и распечатать все одновременно. Кнопкой Утвердить заявки меняется статус заявок поставщику и заявки покупателя. После данной операции ни ту ни другую менять уже нельзя. 6.3.4Вкладка «Учет поступления товаров»Здесь менеджер по продажам оформляет приход товара от поставщика. Слева в рамке располагаются ссылки на отчеты связанные с остатками товаров на складе. 6.3.5Вкладка «Учет реализации товара»6.3.6Вкладка «Настройки системы»6.3.7Исходный код главной формыПолный исходный код главной формы приложения приводить не буду, так как он достаточно велик и содержит немало служебных строк кода. Здесь только самые интересные концепции. Во-первых, для того чтобы отследить и предотвратить открытие одинаковых форм. Например, нельзя чтобы одновременно было открыто две формы списка или два одинаковых документа. Для этой цели у формы есть специальный параметр, представляющий собой словарь (Dictionary)
Для открытия справочника, например, форма проверяет наличие в словаре объекта по названию таблицы. Если такой объект есть, то он становится активным. Если же его нет, то вызывается конструктор формы списка.
Для документов такой функционал располагается в реализации класса для того или иного документа. При закрытии формы справочника или документа, она (форма) удаляет себя из данного объекта. Второй особенностью главной формы является то, что она должна отображать информацию о документах, содержащихся в БД. Ниже представлен код, для отображения списка заявок текущего пользователя и код для отображения сгруппированных по клиентам заявок. Здесь применяется несколько из возможностей новой версии языка C#. Такие как вывод типа, анонимные типы и встроенный язык доступа к объектам Linq. Необходимость применения Linq здесь обусловлена необходимостью получения информации о заявках в двух видах: подробном с параметрами каждой заявки и свернутом по номерам заявок. В методе сначала выполняется запрос к БД для получения подробной информации, затем полученная информация конвертируется в анонимный тип, а затем полученная коллекция анонимных типов группируется по составному ключу, включающему идентификатор заявки, дату и статус заявки, а также наименование и количество товара.
Второй метод формы. Необходим для обновления сгруппированной по покупателям информации о необработанных заявках. Код интересен наличием встроенных агрегатных функций и несложного лямбда-выражения. Кроме того SQL запрос здесь на порядок сложнее предыдущего. В нём используется вложенность, группировка и агрегатные функции.
Неудачным решением покажется получение сразу всех данных, возможных для отображения в таблицах расшифровки. Однако, так как предполагается работа приложения через интернет, боле важным моментом является экономия трафика и уменьшение задержек при смене строки, которую необходимо расшифровать. |