Министерство науки и образования Украины
Одесский национальный политехнический университет
Кафедра системного программного обеспечения
Объяснительная записка к курсовой работе
с дисциплины «Объектно-ориентированное программирование»
Группа: АС-071
Выполнил: Розгон А. С.
Приняла: Кунгурцев А. Б.
Одесса 2009 г.
Аннотация
Данная курсовая работа заключалась в написании учебной системы на языке программирования Java, что и было сделано. Учебная система представляет собой совокупность пяти основных классов и около десятка вспомогательных. Она предполагает регистрацию, выдачу учебного материала, проверку знаний, способы выдачи и принятия информации, детально описанные в задании для каждого варианта отдельно. Также имеются общие характеристики системы для всех вариантов, и они являются базовыми, индивидуальные только расширяют их. Именно это повлияло на распределение функций по классам. На основе задания и программы была составлена диаграмма классов, иллюстрирующая все аспекты вышеперечисленного, и поэтому была распечатана отдельном листе формата А1. В данной пояснительной записке указана инструкция использования, некоторые особенности поведения программы, приведены коды всех классов и файлов, а также имеется объяснение к диаграмме классов на А1.
Содержание
1. Задание
2. Анализ требований
3. Структуры классов
4. Коды классов
5. Структура файлов
6. Инструкция пользователя и контрольный пример
Список использованной литературы
1. Задание
Завдання №8.
Учбовий матеріал – функції з параметрами-масивами мови С++.
Треба реалізувати наступні вимоги до програмних класів:1.4, 2.1, 3.6, 4.1, 5.4
Навчальна програма повинна складатися з наступних класів.
1.Клас представлення навчального матеріалу.
Клас обов’язково реалізує наступні функції.
Читання навчального матеріалу з файла.
Надання студенту порції навчального матеріалу.
Перехід до наступної порції матеріалу.
Клас додатково може реалізувати наступні функції відповідно до конкретного завдання до курсової роботи.
Матеріал подається за схемою, що задається викладачем для кожного конкретного випадку.
2.Клас контролю знань студента.
Клас обов’язково реалізує наступні функції.
Читання завдання до контролю з файлу.
Читання еталонних відповідей з файлу.
Надання студенту завдань до контролю знань.
Оцінювання кожної відповіді.
Клас додатково може реалізувати наступні функції відповідно до конкретного завдання до курсової роботи.
Завдання типу «вибір альтернативної відповіді».
3.Клас реєстрації студента та видачі підсумкового документу.
Клас обов’язково реалізує наступні функції.
Приймає дані щодо студента.
Видає підсумковий документ.
Клас додатково може реалізувати наступні функції відповідно до конкретного завдання до курсової роботи.
Підсумковий документ містить загальний час навчання.
4.Клас введення учбового матеріалу, контрольних завдань, еталонів відповідей та іншої інформації.
Клас обов’язково реалізує наступні функції.
Введення учбового матеріалу у форматі, що задано іншими пунктами завдання. Введення контрольних завдань у форматі, що задано іншими пунктами завдання.Введення еталонів відповідей у форматі, що задано іншими пунктами завдання.
Клас додатково може реалізувати наступні функції відповідно до конкретного завдання до курсової роботи.
Клас приймає дані тільки у діалоговому режимі.
5.Клас контролю за ходом навчального процесу викладачем.
Клас обов’язково реалізує наступні функції.
Перегляд результатів навчання для кожного студента.
Клас додатково може реалізувати наступні функції відповідно до конкретного завдання до курсової роботи.
Отримання даних щодо тем, які успішно пройшов конкретний студент.
Завдання на курсову роботу видається на початку 3 семестру.
Докладний зміст курсової роботи характеризується типовим завданням.
2. Анализ тренований:
- Очевидно, что нужно ввести два типа пользователя: студент и
преподаватель, так как их функции и возможности граничат и
конфликтуют.
- Система должна содержать пять главных классов и несколько
второстепенных;
- Система должна выполнять все пункты задания;
3. Структуры классов
На диаграмме классов, приведенной отдельно от объяснительной записке на А1, мы можем видеть поочередность вызова классов, их взаимосвязи, функции и переменные, поэтому дальше описаны детали того, что мы увидели:
1. Class Main – чтобы работать с системой, программа должна считывать с определенных файлов определенные данные(а именно файлы Control.txtAnswers.txt, указанные в задании, но сначала они должны быть записаны, что и реализует этот класс. Помимо этого этот класс вызывает класс, отвечающий за регистрацию – ButtonFrame11. Все переменные этого класса – строки, которые записываются в выше перечисленные классы, а функция writeData () – это реализует.
2. Class ButtonFrame11 – класс, отвечающий за правильное расположения окна регистрации и вызов самого класса регистрации – ButtonPanel11.
3. Class ButtonPunel11 – класс, отвечающий за регистрацию, вход в систему и авторизацию. Содержит в себе элементы окна регистрации и внутренний класс ColorAction11, который отвечает за получение и обработку данных, полученных от пользователя. В зависимости от этого он может вызвать, а может и не вызвать класс ButtonFrame. Единственный метод этого класса – ActionPerformed () – отвечает за считывание данных, сравнения их с существующими, создания или не создания различных файлов в различных ситуациях.
4. ClassButtonFrame– класс, содержащий в себе элементы главного окна, отвечающий за распределения возможностей между студентом и преподавателем, отвечающий за правильное расположение главного окна. В нем имеется встроенный класс ColorAction – отвечающий за идентификацию действия, который вызывает пользователь. И в зависимости от этого может вызвать следующие классы: JFrame1, JFrame2, CheckBoxFrame, MyTimer, MyTimer1.
5. ClassJFrame1 – это класс, который отвечает за расположения окна частичного вывода материала. Его главная задача – вызов класса ButtonPanel1.
6. ClassButtonPanel1 – класс, содержащий все элементы окна, и отвечающий за чтение и вывод информации на экран. Для этого он имеет функцию readData () – отвечающую за чтение, и встроенный класс – Color1Action – отвечающий за преобразования на экране, что, в свою очередь, осуществляет функция actionPefrormed ().
7. ClassJFrame2 – это класс, который отвечает за расположения окна изменение порядка вывода материала. Его главная задача – вызов класса ButtonPanel2.
8. ClassButtonPanel2 – – класс, содержащий все элементы окна, и отвечающий за принятие и обработку информации, введенной пользователем. Для этого он имеет функцию getPrevios() – отвечающую за преобразование информации, и функцию actionPefrormed (), которая отвечает за считывание.
9. ClassCheckBoxFrame – это класс, содержащий все элементы и свойства окна тестирование знаний, который отвечает за вывод информации из файла на экран, принятия информации пользователя, формулирования и вывод результатов на экран, а также их последующая запись в файл. Функция addRadioButton () – отвечает за добавления кнопки и элементов идентификации. Функция actionPerformed () – отвечает за чтение и сравнение информаций пользователя и конкретного задания.
10. Class MyTimer – это класс, отвечающий за выход из системы и вывод на экран результатов работы системы, для чего в нем предусмотрена функция readData () – для чтения информации из файла, а также функция actionPerformed () – для выхода с системы.
11. Class MyTimer1 – класс, отвечающий за те же функции, что и класс MyTimer, содержащий те же элементы, но имеется существенное исключение : MyTimer – выдавал информацию о текущем клиенте, а класс MyTimer1 – выдает информацию о любом студенте.
12. ClassDevice – отвечает за первоначальную запись и чтение элементов в файле, так как они являются объектами класса, это реализует функции readData () и writeData (), а доступ к элементам класса функция getName ().
4. Кодыклассов
package javaapplication20;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import java.util.*;
import java.text.*;
import java.net.*;
import java.lang.reflect.*;
public class Main
{
public static void main(String[] args)throws IOException
{
DataInputStream inData = new DataInputStream(System.in);
String T0="Оцените утверждение : массив в С++ никогда не передается по значению";
String T1="Верно ли, что размер массива важен при объявлении параматра?";
String T2="Действительно ли, что указатель указывает на нулевой элемент массива, при передачи массива";
String T3="Оцените утверждение: изменение значения аргумента внутри функции затрагивает сам переданный объект и его локальную копию ";
String T4="Верно ли, размер массива не является частью типа параметра ";
String T5="Действительно ли, функция знает реальный размер передаваемого массива?";
String T6="Правда ли, что в конце каждого массива имеется , который указывает на конец массива";
String T7="Оцените утверждение: другой способ сообщить функции размер массива-параметра – объявить параметр как ссылку ";
String T8="Верно ли, что использование абстрактный контейнерный тип - это один из способов получения размера передаваемого массива";
String T9="Правда ли, что параметры шаблона заключаются в круглые скобки";
String T10="3";
String T11="2";
String T12="3";
String T13="1";
String T14="3";
String T15="2";
String T16="2";
String T17="3";
String T18="3";
String T19="2";
try{
FileOutputStream OS=new FileOutputStream (new File("C:\USER\Control.txt"));
DataOutputStream ods = new DataOutputStream (OS);
ods.writeUTF(T0);
ods.writeUTF(T1);
ods.writeUTF(T2);
ods.writeUTF(T3);
ods.writeUTF(T4);
ods.writeUTF(T5);
ods.writeUTF(T6);
ods.writeUTF(T7);
ods.writeUTF(T8);
ods.writeUTF(T9);
ods.close();
FileOutputStream OS1=new FileOutputStream (new File("C:\USER\Answers.txt"));
DataOutputStream ods1 = new DataOutputStream (OS1);