Курсовая работа по дисциплине «Объектно-ориентированное программирование»






Скачать 115.74 Kb.
НазваниеКурсовая работа по дисциплине «Объектно-ориентированное программирование»
Дата публикации29.01.2015
Размер115.74 Kb.
ТипКурсовая
top-bal.ru > Информатика > Курсовая


Министерство образования и науки Российской Федерации
Уральский федеральный университет

имени первого Президента России Б. Н. Ельцина

Факультет ускоренного обучения
Кафедра программных средств и систем

УДК 004.421

Оценка проекта



Члены комиссии
КУРСОВАЯ РАБОТА
по дисциплине «Объектно-ориентированное программирование»
Тема: Разработка программы «Ежедневник»
Студент гр.СП-621и Грипас Е.А.
Руководитель Суханов В.И.


Екатеринбург 2011

Уральский федеральный университет

имени первого Президента России Б. Н. Ельцина

Факультет ускоренного обучения
УТВЕРЖДАЮ

Зав.кафедрой ПСС
“ “ 201__ г.

ЗАДАНИЕ
на курсовую работу по дисциплине

«Объектно-ориентированное программирование»
Студент группы СП-6____ Специальность ПО ВТ и АС
Фамилия______________ Имя__________ Отчество____________
Срок проектирования с “__” _____ по “ __ “ ________ 200__ г.


  1. Тема работы и ее содержание:

^ Разработка приложений в среде Java

Разработать приложение средствами Java для решения расчетно-логических задач. Предусмотреть использование компонентов: Menu, PopupMenu, Label, Edit, ComdoBox (ListBox), CheckBox, Panel (для зонирования форм), Button, Image, OpenDialog, SaveDialog. Исходные данные для расчета вводить на отдельной странице блокнота, по команде меню или кнопки иметь возможность сохранить в файле или прочитать из файла, имя которого запрашивать у пользователя. Задание режимов расчета производить на отдельной странице с последующим сохранением в файле вместе с исходными данными или в INI-файле. Результаты расчета отображать на отдельной странице блокнота, сохранять в файле или печатать на принтере. Разработать службу встроенной помощи.

2. Дополнительные сведения: назначение приложения можно выбрать по усмотрению студента, связав его с потребностями предприятия. Пояснительная записка должна содержать описание задачи, структуры выходных и входных данных, алгоритм управления приложением, распечатки экранных форм и программных модулей.

3. Курсовое проектирование закончено _____________________

4. Оценка проекта _______________________________________
Руководитель ____________ (Суханов В.И.)

СОДЕРЖАНИЕ


ВВЕДЕНИЕ 4

^ 1 ОПИСАНИЕ ПРОГРАММЫ 5

1.1 Закладка «ЗАДАНИЯ» 6

1.2 Закладка «Телефоны» 6

2 ОПИСАНИЕ АЛГОРИТМОВ 9

ЗАКЛЮЧЕНИЕ 11

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 12

^ ПРИЛОЖЕНИЕ А 13



ВВЕДЕНИЕ


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

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

1 ОПИСАНИЕ ПРОГРАММЫ


При запуске открывается главное окно программы (рисунок 1).

Р
исунок 1 – Главное окно программы
Активной устанавливается закладка, которая была активной при закрытии программы. Также, после запуска программы восстанавливается последнее положение окна на рабочем столе и положение сплитера (разделителя). Если программа запускается впервые на компьютере или файл настроек был стерт(нарушен), то все настройки будут восстановлены значениями по умолчанию, файл настроек будет перезаписан.
Смену активных закладок можно проводить тремя способами:

- Всплывающим меню. Если активна закладка «Телефоны», то в меню есть пункт «Задания». При нажатии на него, активной становится закладка «Телефоны» и наоборот (рисунок 2).






Рисунок 2 – Дополнительные меню
-
Главное меню. Пункт «Окно» содержит пункты «Задания» и «Телефоны» (рисунок 3).
Рисунок 3 – Главное меню


  • Непосредственное нажатие на нужную закладку приводит к ее активации.



^

1.1 Закладка «ЗАДАНИЯ»



При активации закладки на ней автоматически устанавливается текущее время и дата. При смене даты или времени на закладке «Задание» в окно выводятся имеющиеся записи, относящиеся к данному времени. Если таковых нет, то окно остается пустое. Данные в окне можно изменять при помощи одноименной кнопки. При этом активной становится только эта закладка, другая становится недоступной до тех пор, пока не будет нажата та же кнопка, но с другим названием «Сохранить».

^

1.2 Закладка «Телефоны»



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

Функции кнопок на закладке «Телефоны»:

  • Добавить. Добавление нового элемента списка. После нажатия появляется окно для ввода необходимых данных (рисунок 4).






Рисунок 4 – Диалоговая форма


  • Изменить. Редактирование уже имеющихся данных. Появляется аналогичное окно, но с заполненными полями. Фамилия И.О. не редактируется.

  • Удалить. Удаляет запись, на которой стоит курсор в верхней половине закладки. Подтверждение не требуется.

  • Найти. Ищет в списке элемент, соответствующий введенному в окне поиска элементу. Регистр значения не имеет (рисунок 5).






Рисунок 5 – Диалоговая форма
Пункт «Печать» верхнего меню позволяет распечатывать информацию из текущего окна (рисунок 6).





Рисунок 6 – Фрагмент меню
П
ункт «Настройки» позволяет разрешить или запретить хранение данных в папке задания, время которых уже вышло (рисунок 7).
Рисунок 7 – Диалоговая форма
П
ри нажатии на пункт «О программе…» выводится окно, содержащее информацию о программе (рисунок 8).
Рисунок 8 – Информационное окно

^

2 ОПИСАНИЕ АЛГОРИТМОВ


При запуске программы выполняется предопределенная процедура FormCreate. В ней считывается файл настроек и в соответствии с ним настраивается интерфейс программы. Файл содержит положение главного окна программы при последнем запуске, положение разделителя на закладке «Телефоны», номер активной закладки и данные о необходимости хранить задания прошедших периодов. Если файл настроек не обнаружен в нужной папке, то он перезаписывается со значениями «по умолчанию».

Далее считываются файлы с заданиями и телефонами. Если какой-то файл не обнаружен, то данные берутся из BAK-файла.

Также в окне задания устанавливается текущие дата и время (при помощи функций ^ Now и DecodeTime), и вызывается процедура ComboBox1Change(Sender) для поиска записей, соответствующих текущему времени.

При закрытии программы срабатывает процедура FormClose, которая записывает в нужные файлы задания, телефоны и данные для настройки программы.

При изменении даты или времени на закладке «Задания» срабатывает процедура ComboBox1Change. Она проверяет наличие пустых строк и если обнаруживает, то удаляет их. Далее проверяется опция «Хранить задания прошедших периодов». Если значение установлено в False, то производится проверка на наличие заданий, хранящихся под устаревшими датами и удаление таких записей. Проверка проводится с помощью сравнения текущего времени (Now) и преобразованной из Строкового типа в тип Даты оглавления записи (StrToDateTime(Memo2.Lines[i])). Далее производится поиск записи под оглавлением соответствующим значению установленному в DateTimePicker1 и ComboBox1. Если запись находится, то ее содержимое выводится в Memo1. Если нет, Memo1 остается пустым.

При нажатии на кнопку «Изменить» срабатывает процедура BitBtn5Click. Сначала определяем, в каком режиме находится Memo1. Если в режиме просмотра (свойство ReadOnly имеет значение True), то меняется цветовая настройка Memo1, значение ReadOnly меняется на False, меняется значение Caption в BitBtn5 с «Изменить» на «Сохранить», запрещается доступ к другой закладке, а также возможность выхода из программы. Если Memo1 находится в режиме редактирования, то возвращаются в исходное состояние значения, произведенные при переходе к режиму редактирования. Также производится поиск уже имеющейся записи с подобной датой и временем. Если таковая имеется, то выполняется ее удаление. Далее производится запись новой строки под соответствующими временем и датой.

При выборе определенной записи в ListBox1 на закладке «Телефоны» выполняется процедура ListBox1Enter, которая находит данные о владельце выбранном в ListBox1 и выводит их в Memo3.
Удаление производится процедурой BitBtn3Click. Сначала ищется нужная запись при помощи функции AnsiCompareText. Данная функция сравнивает две строки независимо от регистра. Идет сравнение записи в ListBox1 и в общем списке телефонов. Найденная запись удаляется.
При помощи той же функции AnsiCompareText, производится поиск нужного элемента. Искомая запись вводится в специальном окне в ^ Edit1.

Программа имеет два объекта PopupMenu. Для каждой закладки работает определенное всплывающее меню. Они содержат возможность выполнения действий, возможных на этой закладке, а также возможность перехода на другую закладку.

Процедура N7Click выполняет печать информации. Если текущей является закладка «Задания», то печатается дата, время задания и само задание. Если текущей является закладка «Телефоны», то печатается владелец записи и содержимое записи. При помощи процедуры AssignPrn создается файл, через который данные отправляются на печать.

ЗАКЛЮЧЕНИЕ


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

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

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

  • отслеживания времени и напоминания о текущем задании;

  • использования масок для поиска номеров телефонов;

  • функционирование агента программы в резидентном режиме.



^

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ


1 Суханов В.И. Программирование графических интерфейсов на языке Java с использованием библиотеки SWT [Электронный ресурс] –Екатеринбург: Изд.УГТУ-УПИ, 2007. –272 с.

2 Тимошенко С.И. Лекции по языку Java [Электронный ресурс] –Екатеринбург: Изд.УГТУ-УПИ, 2007. –213 с.

3 Оформление курсовых и дипломных проектов: Методические указания [Текст] / В.Н.Кичигин, И.У.Мясников, С.И.Тимошенко. –Екатеринбург: Изд. ИПК УГТУ, 2004. – 80 с.

4 Разработка встроенной помощи: Методические указания [Текст] / В.И.Суханов. –Екатеринбург: Изд. ИПК УГТУ, 2001. – 32 с.

^

ПРИЛОЖЕНИЕ А


(Обязательное)
Тексты программ

package Проект;

import org.eclipse.swt.*;

import org.eclipse.swt.events.*;

import org.eclipse.swt.graphics.*;

import org.eclipse.swt.widgets.*;

import org.eclipse.swt.layout.*;

import org.eclipse.swt.program.*;

import org.eclipse.swt.printing.*;

import java.util.*;

import java.io.*;

import java.text.*;

public class MainProg {

static Display display; // Дисплей

static Shell shell; // Главное окно

static Text nameGr; // Имя графика

static Text nameX; // Имя оси Х

static Text nameY; // Имя оси У

static Text minXText; // Минимальное Х

static double minX;

static Text maxXText; // Максимальное Х

static double maxX;

static Text colXText; // Число точек графика

static int colX;

static Text kAText; // Коэффициенты полинома

static Text errText; // Для сообщений

static boolean isError = false;

static boolean isVerify = false;

static boolean isTable = false;

static boolean isGraph = false;

static double[] A, Xi, Yi ; // Массивы коэффициентов и точек графика

static Label errLabel;

static Table table; // Таблица значений полинома

static TableColumn columnX; // Столбцы таблицы

static TableColumn columnY;

static String fileName; // Имя файла для сохранения

static FileWriter fOut; // Файл для записи

static FileReader fIn; // Файл для чтения

static Group grpGr; // Группа элементов для построения графика

static int penW = 1; // Параметры пера для рисования

static int penG = 2;

// Для работы всплывающих подсказок необходимы ресурсы пакета в файле с именем help.properties

// Смотри Test.help.HoverHelp.java

static Locale loc = new Locale("utf-8");

private static ResourceBundle resourceBundle = ResourceBundle.getBundle("help", loc);

// и ряд констант и массив иконок для обращения к методам System.getProperty("file.encoding")

static final int

hhiInformation = 0,

hhiWarning = 1;

static final String[] imageLocations = {

"information.gif",

"warning.gif"

};

static Image images[];

static Listener onHelp = new Listener () {

public void handleEvent (Event e) {

// Загрузить файл справки руководствуясь расширением html или hlp

//Program.launch("MainGraphic.htm");

Program.launch("project.hlp");

}

};

static Listener onPrint = new Listener () {

// Обработка команды меню "Печать графика"

public void handleEvent (Event e) {

// Запрос установленного принтера по умолчанию

PrinterData data = Printer.getDefaultPrinterData(); // 148

if (data == null) {

MessageBox msg = new MessageBox(shell, // 94

^ SWT.ICON_QUESTION | SWT.OK);

msg.setMessage("Предупреждение: Не определен принтер по умолчанию");

msg.open(); // 94

//System.out.println("Warning: No default printer.");

return;

}

// Создать объект - принтер

Printer printer = new Printer(data); // 147

if (printer.startJob("Graphic_1")) {

Color black = printer.getSystemColor(SWT.COLOR_BLACK);

Color white = printer.getSystemColor(SWT.COLOR_WHITE);

Color red = printer.getSystemColor(SWT.COLOR_RED);

Rectangle bnd = printer.getBounds();

Point dpi = printer.getDPI();

int leftMargin = dpi.x / 2 + bnd.x; // 1/2 дюйма слева от границы бумаги

int topMargin = dpi.y / 2 + bnd.y; // 1/2 дюйма сверху от границы бумаги

GC gc = new GC(printer); // Получили графический контекст 130

//Font font = gc.getFont(); // пример использования printer's default font

if (printer.startPage()) { // Принтер готов печатать страницу

gc.setBackground(white); // 136

gc.setForeground(black);

//gc.fillRectangle(bnd); //Можно не рисовать белый фон листа

//System.out.println(getWidthString(gc, "Пример"));
// Амплитуда по вертикали

double minY = Yi[0];

double maxY = Yi[0];

for (int i = 1; i < colX; i++){

if (minY > Yi[i]) {minY = Yi[i];};

if (maxY < Yi[i]) {maxY = Yi[i];};

};

int w = bnd.width - 10 - dpi.x;

int h = bnd.height - 15 - dpi.y;

double scaleX = w / ((maxX - minX) * 1.10); // Масштаб по Х

double scaleY = h / ((maxY - minY) * 1.10); // Масштаб по Y

int x0 = (int)Math.floor((0 - minX) * scaleX) + leftMargin; // Положение оси Y

int y0 = (int)Math.floor(h - (0 - minY) * scaleY) + topMargin; // Положение оси Х

gc.setLineWidth (penW); // 137

gc.drawText(nameGr.getText(), w/2 - getWidthString(gc, nameGr.getText()) + leftMargin , 30 + topMargin); // Имя графика

gc.drawText(nameX.getText(), w-20 + leftMargin, h-10 + topMargin); // Имя оси Х 133

gc.drawText(nameY.getText(), 5 + leftMargin, 15 + topMargin); // Имя оси Y

double dx = (maxX - minX) / 5.0; // Шаг сетки по Х

double dy = (maxY - minY) / 5.0; // Шаг сетки по Y

for (int i = 0; i < 6; i++){ // Рисуем шкалы и сетку

double x = Math.floor(minX + dx*i); // Координата X исходная

int x1 = (int)Math.floor((x - minX) * scaleX) + leftMargin; // Координата X на экране

Formatter fmtx = (new Formatter());

gc.drawText(fmtx.format("%.2f", x).toString(), x1, h + 1 + topMargin); // Шкала по Х

gc.drawLine(x1, topMargin, x1, h + topMargin); // Сетка по Х

double y = Math.floor(minY + dy*i); // Координата Y исходная

int y1 = (int)Math.floor(h - (y - minY) * scaleY) + topMargin; // Координата Y на экране

Formatter fmty = (new Formatter());

gc.drawText(fmty.format("%.2f", y).toString(), 3 + leftMargin, y1-20); // Шкала по Y

gc.drawLine(leftMargin, y1, leftMargin + w, y1); // Сетка по Y

};

// Рисуем график

x0 = (int)Math.floor((Xi[0] - minX) * scaleX) + leftMargin; // Задаем начальную точку

y0 = (int)Math.floor(h - (Yi[0] - minY) * scaleY) + topMargin;

gc.setLineWidth (penG); // Перо для графика

gc.setForeground(red); // Цвет для графика

for (int i = 1; i < colX; i++){ // По точкам графика

int x1 = (int)Math.floor((Xi[i] - minX) * scaleX) + leftMargin;

int y1 = (int)Math.floor(h - (Yi[i] - minY) * scaleY) + topMargin;

gc.drawLine(x0, y0, x1, y1);

x0 = x1; y0 = y1; // Меняем начальную точку

};

printer.endPage(); // 147

}

gc.dispose(); // Освободили графический контекст
Текст встроенной помощи
Desiderata.






topMargin=0 vLink=#49456c> 










alt=Desiderata border=0 height=52 src="navbar_logo_n1.jpg" width=485>

about us, online help, learning center
border=0 height=52 src="navbar_aboutus.jpg" useMap=#Navbar width=239>











verba volant, scripta manent
height=26 src="navbar_weartheworld3.jpg" width=220>
home
height=26 src="navbar_h.jpg" useMap=#Navbar2 width=504>

your
coords=103,37,177,51 href="http://ulm.uni.udm.ru/~logov/service"

shape=RECT>learning center
href="http://ulm.uni.udm.ru/~logov/8" shape=RECT>shopping bag
coords=102,21,175,34 href="http://ulm.uni.udm.ru/~logov/Offer"

shape=RECT>online help
href="http://ulm.uni.udm.ru/~logov/23" shape=RECT>wish list
coords=102,6,149,18 href="http://ulm.uni.udm.ru/~logov/flag=7"

shape=RECT>about us
href="http://ulm.uni.udm.ru/~logov/=33" shape=RECT>

name=Navbar2>1
href="http://ulm.uni.udm.ru/~logov/1015" shape=RECT>1
coords=339,2,419,25 href="http://ulm.uni.udm.ru/~logov/1153" shape=RECT>
alt="Black and White pages" coords=255,2,335,25

href="http://ulm.uni.udm.ru/~logov/blserv.htm" shape=RECT>
alt="Work students" coords=171,2,251,25

href="http://ulm.uni.udm.ru/~logov/exsample.htm" shape=RECT>3
coords=86,2,167,25 href="http://ulm.uni.udm.ru/~logov/222" shape=RECT>
alt=Home coords=2,2,82,25 href="http://ulm.uni.udm.ru/~logov/index.html"

shape=RECT>

























































































line
height=11 src="line.jpg" vspace=5 width=121>

alt="About us" border=0 height=22 src="about.jpg" width=85>

height=10 src="blan.jpg" width=5>




color=#000000>3

года истории



color=#000000>
href="http://ulm.uni.udm.ru/~logov/196">Читайте нашу прессу


line
height=11 src="line.jpg" vspace=5 width=121>
advice
border=0 height=22 src="advice.jpg" width=85>

height=10 src="blan.jpg" width=5>




color=#000000>
href="http://ulm.uni.udm.ru/~logov/8">Обучающий центр

size=-2>Рекомендации, интерактивные курсы по изучению языков

программирования



href="http://ulm.uni.udm.ru/~logov/1097">Реальная помощь

size=-2>Профессиональные советы, учебники и консультирование


line
height=11 src="line.jpg" vspace=5 width=121>
newsletter
border=0 height=22 src="newletter.jpg" width=150>

src="blan.jpg" width=5>


size=-2>Возможность получения


face=Arial>самой свежей информации
size=-2>в короткое время.

src="blan.jpg" width=5>



border=0 src="send_n.jpg" type=image>
line
height=11 src="line.jpg" vspace=5 width=121>
help
height=22 src="help.jpg" width=85>

height=10 src="blan.jpg" width=5>

href="http://ulm.uni.udm.ru/~logov/=23">Быстрая помощь

size=-2>Часто задаваемые

вопросы.



color=#000000>
href="http://ulm.uni.udm.ru/~logov/d=16">Регистрация.


line
border=0 height=11 src="line.jpg" width=121>




Введение.






Данный курс построен по примерам книги Братко И. "Программирование на языке

Пролог для искусственного интеллекта:" известного специалиста по

программированию (Югославия), содержащая основы языка Prolog и его приложения

для решения задач искусственного интелекта.
вернуться на

предыдущюю страницу

















Добавить документ в свой блог или на сайт

Похожие:

Курсовая работа по дисциплине «Объектно-ориентированное программирование» iconУчебно-методический комплекс по дисциплине " объектно-ориентированное...
Спецкурс «Программирование» нацелен на формирование у будущих учителей информатики умения реализовать, в первую очередь, педагогический...

Курсовая работа по дисциплине «Объектно-ориентированное программирование» iconРабочая программа дисциплины (модуля) «Объектно-ориентированное программирование»

Курсовая работа по дисциплине «Объектно-ориентированное программирование» iconРабочая программа дисциплины (модуля) «Объектно-ориентированное программирование»

Курсовая работа по дисциплине «Объектно-ориентированное программирование» iconРабочая программа дисциплины (модуля) «Объектно-ориентированное программирование»

Курсовая работа по дисциплине «Объектно-ориентированное программирование» iconЛабораторная работа №1 Тема: Компонентно-ориентированное программирование
Цель работы: Ознакомится с парадигмой компонентно – ориентированного программирования на примере создания собственного. Net компонента...

Курсовая работа по дисциплине «Объектно-ориентированное программирование» iconУчебно-методический комплекс по дисциплине “программирование(часть 2)” для специальности
Главная цель курса формирование системы понятий, знаний, умений и навыков в области современного программирования, включающего в...

Курсовая работа по дисциплине «Объектно-ориентированное программирование» iconКурсовая работа по дисциплине «Микроэкономика»
Целью написания курсовой работы является детальное усвоение содержания основных вопросов темы, углубление и закрепление знаний, полученных...

Курсовая работа по дисциплине «Объектно-ориентированное программирование» iconКурсовая работа
Курсовая работа состоит из одного задания. Вид графического объекта, движение которого надо будет реализовать в работе, выбирается...

Курсовая работа по дисциплине «Объектно-ориентированное программирование» iconКурсовая работа по дисциплине: «Организация коммерческой деятельности предприятий»

Курсовая работа по дисциплине «Объектно-ориентированное программирование» iconКурсовая работа является обязательным видом итогового контроля по...
Курсовая работа – это первый этап в самостоятельном теоретическом осмыслении материала, накопленного в ходе обучения в университете,...



Школьные материалы


При копировании материала укажите ссылку © 2018
контакты
top-bal.ru

Поиск