Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
Курсовая работа по курсу «Инженерия программного обеспечения» тема: «Редактор диаграмм DiagramEditor» Выполнил: студент 2 курса гр. ИО-02 ФИВТ Радер Роман Ильич Зачетная книжка №215 Преподаватель: Абу Усбах Алексей Нидальевич Киев - 2012 Приложение DiagramEditor предназначено для создания и редактирования диаграмм, с сохранением и открытием множества данных в CSV (Comma Separated Values) файлы. Приложение отображает блок данных в виде круговой диаграммы с возможностью изменения данных с помощью мыши. Есть возможность работы с несколькими множествами данных одновременно, режим отображения только одного множества на диаграмме, или одновременно нескольких. Также присутствует возможность сохранения результирующей диаграммы в JPEG-файл. 1. Обзор DiagramEditor это приложения для отображения и редактирования CSV-файлов с табличным и графическим отображением данных. Есть возможность работы с несколькими сериями данных, как в табличном так и в графическом отображении. В графическом отображении все серии отображаются в виде концентрических круговых диаграмм с разным радиусом и цветами. Цвета на диаграмме соответствуют фону ячеек в таблице. Приложение написано на Java, без использования третьесторонних библиотек. Для построения интерфейса использован инструментарий Swing. 2. Проектирование Программа должна отображать таблично и графически несколько множеств данных одновременно. При изменении в одном отображении, изменения во втором должны появляться незамедлительно. Редактирование текущего множества данных возможно только с помощью мыши в графическом отображении данных. Требуемые действия: Увеличение значения Уменьшение значения Изменение пропорционально текущего значения (с помощью перетаскивания за сторону сектора мышкой). Добавление новой секции Удаление секции Также, кроме изменения данных непосредственно в отображении, требуются такие действия: Создание нового множества данных Закрытие текущего множества данных Сохранение текущего множества данных в файл .CSV Открытие множества из файла .CSV Для ускорения и безопасности открытия .CSV файла необходима сериализация данных с возможностью проверки на старость. По умолчанию чтение ведется из сериализованного файла .DAT с тем-же именем, что и у .CSV. При ошибке чтения или обнаружении устаревании данных, программа читает данные из .CSV файла и сохраняет рядом файл .DAT с новыми сериализованными данными. 3. Описание приложения С точки зрения архитектуры Используем парадигму Model-View-Controller. Так как программа работает в одном окне, модель можно сделать синглтоном с единой моделью данных для всех отображений. Отображения будут графическое и табличное. Контроллер будет находится в связующих частях между моделью и отображением. Для связи между элементами отображения используется наблюдатель (Observer) с вынесенным классом-синглтоном менеджером передачи сообщений наблюдателям. Список оповещений, которые могут передаваться наблюдателям: NEW_DATASET_NOTIFICATION — об изменении текущего множества данных. COLUMN_ADDED — о добавлении колонки в таблицу. DATASET_CHANGED — о изменении в текущем множестве данных VIEWSTATE_CHANGED — о изменении вида отображения Учитывая специфику Swing, для отображения таблицы понадобится источник данных — TableModel. Имеет смысл объединить модель данных и модель таблицы с помощью адаптера. Таким образом, модель данных будет одновременно моделью таблицы и моделью данных всего приложения. Соответственно это будет класс синглтон и адаптер коллекции типа List к AbstractTableModel: public final class DataModel extends AbstractTableModel implements List<DataSet> Множество данных можно описать как наследник ArrayList<Double>: public class DataSet extends ArrayList<Double> Чтение данных из файла происходит асинхронно, с использованием Thread. Для получения данных из асинхронного процесса используется стратегия public interface CSVReceiver Которая вызывает void receivingFailed(String message); при ошибке, и void receivingFinished(DataSet data); при успешном завершении операции. Также на окне присутствуют элементы управления как меню и панель инструментов, а также строка состояния. Каждое действие нажатия на кнопку панели инструментов или пункта меню является отдельным классом, реализующим ActionListener. С точки зрения пользователя Окно разделено на две основные области: слева — табличное отображение, справа — графическое. При запуске программы, приложение пробует загрузить файл по имени file.csv в рабочей папке. При ошибке программа запускается с пустым множеством данных. Пользователь имеет возможность создать новое множество посредством кнопки New на панели инструментов, или с помощью меню File → New. Также можно открыть существующий файл .CSV с помощью кнопки Open или меню File → Open. Для отображения конкретного столбца в графическом отображении нужно кликнуть по нему в таблице. Цвет ячейки таблицы соответствует цвету на диаграмме. Для добавления 0.5 к значению конкретной строки нужно кликнуть мышью левой кнопкой по соответствующему сектору диаграммы. Для уменьшения на 0.5 — правой кнопкой. Для добавления новой секции в текущий набор данных можно воспользоваться кнопкой на панели инструментов, или в меню Data set → Add section. Для удаления секций нужно перейти в режим удаления, для этого воспользуйтесь кнопкой Remove section или меню Data set → Remove section. После этого кликните по нужной области левой кнопкой и выберите ДА в диалоге подтверждения. Для перехода в режим одновременного отображения всех множеств данных следует воспользоваться кнопкой «Single/Simultaneously» или меню Diagram view → Single/Simultaneously. Для сохранения диаграммы как изображения .JPEG воспользуйтесь кнопкой Export to JPEG или пунктом меню Diagram view → Export to JPEG Заключение Конечный продукт — приложение DiagramEditor полностью соответствует заявленным требованиям и характеристикам.