Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

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 полностью соответствует заявленным требованиям и характеристикам.

About

Редактор диаграмм. Курсовая работа за 4 семестр. КПИ ФИВТ кафедра ВТ.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages