Содержание
Введение
1. Задание на курсовую работу
2. Описание работы системы
2.1 Общие положения.
2.2 Начало работы с системой
2.3 Работа со студентом
2.4 Работа с преподавателем
3. Описание и коды классов системы
3.1 Класс Enter
3.2 Класс Check
3.3 Класс ShowFile
3.4 Класс WorkWithQuestion
3.5 Класс TimeInSystem
3.6 Класс ShowResult
3.7 Класс Modification
3.8 Класс ShowResultForTeacher
4.Структура файлов
5.Инструкция пользователя
5.1 Инструкция для пользователя «студент»
5.2 Инструкция для пользователя «преподаватель»
6.Тестирование работы системы
6.1 Тестирование работы для пользователя «студент»
6.2 Тестирование работы для пользователя «преподаватель»
Заключение
Список литературы
Введение
Объектноеи объектно-ориентированное программирование (ООП) возникло в результатеразвития идеологии процедурного программирования, где данные и подпрограммы(процедуры, функции) их обработки формально не связаны. Кроме того, всовременном объектно-ориентированном программировании часто большое значениеимеют понятия события (так называемое событийно-ориентированноепрограммирование) и компонента (компонентное программирование).
Первым языкомпрограммирования, в котором были предложены принципы объектнойориентированности, была Симула. В момент своего появления (в 1967 году), этотязык программирования предложил поистине революционные идеи: объекты, классы,виртуальные методы и др., однако это всё не было воспринято современниками какнечто грандиозное. Тем не менее, большинство концепций были развиты АланомКэйем и Дэном Ингаллсом в языке Smalltalk. Именно он стал первым широкораспространённым объектно-ориентированным языком программирования.
В настоящее времяколичество прикладных языков программирования (список языков), реализующихобъектно-ориентированную парадигму, является наибольшим по отношению к другимпарадигмам. В области системного программирования до сих пор применяетсяпарадигма процедурного программирования, и общепринятым языком программированияявляется язык C. Хотя при взаимодействии системного и прикладного уровнейоперационных систем заметное влияние стали оказывать языки объектно-ориентированногопрограммирования. Например, одной из наиболее распространенных библиотекмультиплатформенного программирования является объектно-ориентированнаябиблиотека Qt, написанная на языке C++.
1. Задание на курсовуюработу
Метою курсовоїроботи є поглиблення та закріплення знань, одержаних при вивченні дисципліни «Об’єктно-орієнтоване програмування»,та набуття практичних навичок у проектуванні та налагодженні програм, щозастосовують класи та об’єкти.
Студент маєрозробити навчаючу програму.
Навчаюча програмаповинна виконувати наступні функції:
- реєстраціюстудента;
- представленняматеріалу до навчання;
- забезпеченняконтролю знань;
- введеннята корегування навчального матеріалу;
- отриманняінформації щодо успіхів студента.
- Навчальнапрограма повинна складатися з наступних класів.
1.Клас представлення навчальногоматеріалу.
Клас обов’язковореалізує наступні функції.Читання навчального матеріалу з файла.Наданнястуденту порції навчального матеріалу.Перехід до наступної порціїматеріалу.Клас додатково може реалізувати наступні функції відповіднодо конкретного завдання до курсової роботи.
1.1.Жорстка, заздалегідь встановленасхема подання матеріалу
2.Клас контролю знань студента.
Клас обов’язково реалізує наступні функції.Читання завдання до контролю з файлу. Читання еталонних відповідей з файлу.Надання студенту завдань до контролю знань. Оцінювання кожної відповіді. Класдодатково може реалізувати наступні функції відповідно до конкретного завданнядо курсової роботи.
2.2. Завданнятипу «вставити необхідне».
3.Клас реєстрації студента та видачіпідсумкового документу.
Клас обов’язково реалізує наступні функції.Приймає дані щодо студента. Видає підсумковий документ. Клас додатково можереалізувати наступні функції відповідно до конкретного завдання до курсовоїроботи.
3.5.Підсумковий документ містить усі оцінки по порціям.
Клас введенняучбового матеріалу, контрольних завдань, еталонів відповідей та іншоїінформації.
Клас обов’язково реалізує наступні функції.Введення учбового матеріалу у форматі, що задано іншими пунктами завдання.Введення контрольних завдань у форматі, що задано іншими пунктами завдання.
Введення еталоніввідповідей у форматі, що задано іншими пунктами завдання. Клас додатково може реалізуватинаступні функції відповідно до конкретного завдання до курсової роботи.
4.2.Клас може приймати дані з іншогоносія, що не входить до системи.
5.Клас контролю за ходом навчальногопроцесу викладачем.
Клас обов’язково реалізує наступні функції.Перегляд результатів навчання для кожного студента. Клас додатково можереалізувати наступні функції відповідно до конкретного завдання до курсовоїроботи.
5.1.Отримання даних щодо загального часунавчання конкретного студента.
Система обучения написанана языке Java.
/>2. Описание работы системы
/>2.1 Общие положения
Система обученияреализует разделение пользователей на студентов и преподавателей,предоставление студенту учебного материала, контрольных вопросов, оцениваниеответов на вопросы, изменение преподавателем учебного материала, контрольныхвопросов и ответов на них, просмотр преподавателем результатов обучения длякаждого студента.
Ниже представленадиаграмма вариантов использования для обучающей системы:
/>
Рис. 1
Пользователь категории «преподаватель»может смотреть результаты обучения студентов, править учебный материал, правитьконтрольные вопросы, править ответы на вопросы.
Пользователь категории «студент»может получать(читать) учебный материал, проходить контроль полученных знаний,смотреть итоги(результаты) своего обучения.
Система обучениявыполняет авторизацию, регистрацию, разделение пользователей на категории,оценивание ответов на вопросы, выдачу результатов.
2.2 Начало работы с системой
Работа с системойначинается прохождением авторизации либо регистрации. После запуска системы, наэкране появляется окно авторизации:
/>
Рис.2
Если пользователь ужезарегистрирован в системе, то он вводит свой логин и пароль, и если введенверный логин и пароль, то по нажатию на кнопку «Вход», пользовательпродолжает работу в системе, в зависимости от своей категории(студент илипреподаватель).Если пользователь вводит несуществующий логин и пароль, либохочет зайти посторонний человек, который не зарегистрирован в системе, топродолжение работы блокируется и выводится соответствующее сообщение об ошибке:
/>
Рис.3
Если пользователь желаетзарегистрироваться в системе обучения, то по нажатию на кнопку «Регистрация»,попадает в окно регистрации:
/>
Рис.4
Здесь пользовательпроходит регистрацию. Для начала необходимо выбрать категорию для регистрации,по умолчанию выбран студент. Если пользователь регистрируется как студент то нижнееполе «Ключ» для него не доступно.
Студент заполняет всеполя, и если они заполнены и в поле «Пароль» и «Еще раз»введены одинаковые данные, то по нажатию на кнопку «Регистрация»,студент регистрируется в системе и продолжает работу с ней дальше.
Если какие то из полей незаполнены, либо заполнены неверно(несовпадение паролей, использование служебныхсимволов) или повторная регистрация с уже существующим ФИО в системе, торегистрация не происходит и выдается соответствующее сообщение:
/>
Рис.5
Если пользователь хочетзарегистрироваться как преподаватель, то он ставит переключатель всоответствующую позицию:
/>
Рис. 6
Становится активным поле «Ключ»а поле «Группа» становится неактивным.
Преподаватель аналогичнозаполняет все поля, а в поле ключ вводит специальный ключ известный толькопреподавателям. Если все поля регистрации заполнены верно, то по нажатию накнопку «Регистрация» пользователь регистрируется как преподаватель.
2.3 Работа со студентом
Когда пользовательзаходит, как студент, то попадает в главное окно обучающей системы, в которомон изучает учебный материал.
В моей обучающей системепредусмотрено 10 порций учебного материала.
Так как мне необходимореализовать жесткую схему представления материала, то сначала студенту доступентолько первый урок.
Когда студент нажимает накнопку «Урок 1», то в текстовое поле записывается первая порцияматериала и становится активной кнопка «Урок 2».По нажатиям на этикнопки, из файлов читается учебный материал и предоставляется студенту. Послепрочтения первого урока и до начал работы со вторым уроком пользователя системапереводит в окно контроля и там он проходит контроль по прочитанному уроку.
Так же как только,студент заходит в систему обучения, включается счетчик времени, по нажатию накнопку «Выход» программа закрывается и время пребывания студента всистеме сохраняется и записывается в файл.
/>
Рис. 6
Если студент уже прошелвесь курс обучения, прошел контроль, и опять заходит в систему, то ему ужедоступны все уроки, и кнопка «Результаты» для него не отображается.
/>
Рис 7
По нажатию на кнопки «Ответить»,появляется диалоговое окно, в которое студент вводи свой ответ, выполняетсяпроверка на правильность ответа и выдается соответствующее сообщение. Еслипользователь ввел пустую строку, то так же выдается соответствующее сообщение.После ответа на вопрос, то кнопка ответа на этот вопрос становится неактивной.
/>
Рис. 8
После того, какпользователь ответил на все вопросы становится активной кнопка «Результат»,по нажатию на которую студент может просмотреть результаты своего обучения:
/>
Рис. 9
В окне результатыобучения, студент видит свой результат прохождения контрольного опроса. Понажатию на кнопку «К лекциям» студент попадает в основное окносистемы, и там ему доступны все 15 уроков, и отсутствует кнопка «Контроль».По нажатию на кнопку «Выход» программа закрывается.
2.4 Работа с преподавателем
Когда пользовательзаходит в систему как преподаватель, то ему открывается окно «Менюпреподавателя», в котором он может выбрать, что он хочет сделать.Преподаватель может править лекции, править вопросы и ответы, просматривать результатыобучения студентов.
/>
Рис. 10
По нажатию на кнопку «Правитьлекции» преподаватель попадает в окно в котором он может изменять учебныйматериал. Преподаватель выбирает нужный урок, вносит изменения и нажимает накнопку «Сохранить» и изменения сохраняются.
/>
Рис .11
По нажатию на кнопку «Правитьвопросы» преподаватель попадает в окно в котором он может изменять вопросыи ответы. Преподаватель изменяет вопросы или ответы и сохраняет изменения понажатию на соответствующую кнопку.
/>
Рис. 13
По нажатию на кнопку «Рез-тыобучения» преподаватель попадает в окно в котом он может смотретьрезультату обучения для всех студентов, которые прошли контроль. Каждый студентпрошедший контроль, попадает в список доступных для просмотра преподавателемстудентов, преподаватель выбирает студента, результаты которого он хочетпросмотреть и нажимает на кнопку «Показать»
/>
Рис. 13
3. Описание и кодыклассов системы
3.1 Класс Enter
Класс Enter реализует авторизацию и регистрациюпользователя в системе. Метод public booleanRegistration(String info,String name) создает файлс регистрационными данными пользователя. Если регистрируется преподаватель то впапку для преподавателей если студент – то для студента.
Метод public boolean Authorisation(String path, String toCompare)реализует авторизацию пользователя( то есть проверяют есть ли такой пользовательи правильный ли он ввёл пароль).
public classEnter
{
publicEnter(){}
public booleanRegistration(String info,String name){
File f1;
f1=newFile(name);
if(!f1.exists()){
try {
f1.createNewFile();
PrintWriterwriter = null;
writer = newPrintWriter(
newOutputStreamWriter(
newFileOutputStream(name)));
writer.write(info);
writer.close();
return true;
}
catch(Exception ex) { return true;}
}
else {
return false;}
}
public booleanAuthorisation(String path,String toCompare){
File F = newFile(path);
StringArrOfFile[] = F.list();
boolean b;
for ( int k=0;k
try {
Scanner in =new Scanner(new File(path+"\\"+ArrOfFile[k]));
StringBufferdata = new StringBuffer();
while(in.hasNext()) {
data.append(in.nextLine()).append("\n");
String s =data.toString();
int i =s.indexOf("#");
int r =s.indexOf("~");
int t =s.indexOf("%");
int u =s.indexOf("&");
int h =s.indexOf("\n");
String L1 =s.substring(0, i);
String L2 =s.substring((i+1), r);
String L3 =s.substring((r+1), t);
String L4 =s.substring((t+1), u);
String L5 =s.substring((u+1), h);
if((L3+L4).equals(toCompare)){
Main.this_path=«User_stud\\»+ArrOfFile[k];
Main.this_time= L5;
Main.this_name= L1;
Main.this_group= L2;
return true;
}
}
}
catch(FileNotFoundException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE,null, ex);
return false;
}
}
return false;
}
}
3.2 КлассCheck
Класс реализует 3проверки: проверку на использование в полях для регистрации и авторизации «служебныхсимволов»(тех символов которые я использую в качестве разделителей вфайлах), проверку на то что такой пользователь уже существует и проверку на точто пользователь прошел контроль и получил результаты. Метод public boolean Chek_on_Symbol(String s1, String s2, String s3) выполняет проверку на использование в полях длярегистрации и авторизации служебных символов.
Метод public boolean Check_on_Reg(String name, String path) реализуетпроверку на то, что в папке, где хранятся зарегистрированные пользователи ужесуществует такой пользователь.
Метод public boolean Check_on_Rez(String fullpath) реализует проверку на то, чтопользователь прошел контроль и его итоговый результат записан в файл, вследствии чего он становится видимым для преподавателя когда преподавательхочет просмотреть результаты обучения
public classCheck
{
publicCheck(){}
public booleanChek_on_Symbol(String s1, String s2, String s3)
{
for (int i =0;i
{
if(s1.charAt(i)=='~'|| s1.charAt(i)=='#' || s1.charAt(i)=='%' ||s1.charAt(i)=='&')
{
return false;
}
}
for (int i =0;i
{
if(s2.charAt(i)=='~'|| s2.charAt(i)=='#' || s2.charAt(i)=='%' ||s2.charAt(i)=='&')
{
return false;
}
}
for (int i =0;i
{
if(s3.charAt(i)=='~'|| s3.charAt(i)=='#' || s3.charAt(i)=='%' ||s3.charAt(i)=='&')
{
return false;
}
}
return true;
}
public booleanCheck_on_Reg(String name, String path)
{
File F = newFile(path);
StringtoCompare = name+".txt";
StringArrOfFile[] = F.list();
for(int i =0;i
{
if(toCompare.equals(ArrOfFile[i]))
{
return false;
}
}
return true;
}
public booleanCheck_on_Rez(String fullpath)
{
try {
Scanner in =new Scanner(new File(fullpath));
StringBufferdata = new StringBuffer();
while(in.hasNext()) {
data.append(in.nextLine()).append("\n");
}
String s =data.toString();
if(s.equals(""))
{
return false;
}
return true;
} catch(FileNotFoundException ex) {
Logger.getLogger(Check.class.getName()).log(Level.SEVERE,null, ex);
return false;
}
}
}
3.3 Класс ShowFile
Класс реализует следующиеметоды: чтение лекционного материала из файла и запись его в текстовое поле,чтение вопросов/ответов из файла и запись их в текстовое поле, и просто чтениетекста из файла.
Метод publicString SetLek(String s,JTextArea t) читаетлекционный материал из файла и записывает в текстовое поле.
Метод publicString ShowAQ(String s,JTextField t) читает вопросы или ответы(взависимости оттого, что требуется), и записывает в текстовое поле.
Метод publicString GetTextFromFile(String s) читает текст из файла.
public classShowFile
{
publicShowFile(){}
public Stringzap(String s,JTextArea t){
try {
Scanner in = newScanner(new File(s));
StringBuffer data= new StringBuffer();
while(in.hasNext())
data.append(in.nextLine()).append("\n");
t.setText(data.toString());
returndata.toString();
} catch (Exception ex ) {
ex.printStackTrace();
return"";
}
}
public StringShowAQ(String s,JTextField t){
try {
Scanner in = newScanner(new File(s));
StringBuffer data= new StringBuffer();
while(in.hasNext())
data.append(in.nextLine()).append("\n");
t.setText(data.toString());
returndata.toString();
} catch ( Exceptionex ) {
ex.printStackTrace();
return"";
}
}
public StringGetTextFromFile(String s)
{
try {
Scanner in = newScanner(new File(s));
StringBuffer data= new StringBuffer();
while(in.hasNext())
data.append(in.nextLine()).append("\n");
returndata.toString();
} catch (Exception ex ) {
ex.printStackTrace();
return"";
} }}
3.4 Класс WorkWithQuestion
Класс реализуетоценивание ответа на вопрос. Если в диалоговое окно предназначенное для ответа введена пустая строкато выдается соответствующее предупреждение. Если ответ совпал с эталонном илине совпал с эталонном ответа то соответственно увеличивается или неувеличивается счетчик ответов верных, но в том и другом случае, кнопкапредназначенная для ответа на этот вопрос становится нерабочей, что быпользователь не мог ответить на него второй раз. Так же, если студент ответилна 15 вопросов, делается рабочей кнопка «Результат».
public classWorkWithQuestion
{
WorkWithQuestion(){}
public voidAnswer(String s,JButton B )
{
String answ =JOptionPane.showInputDialog(«Введите ваш ответ»);
String answ1=answ+"\n";
char ch2[] =answ1.toCharArray();
try {
Scanner in =new Scanner(new File(s));
StringBufferdata = new StringBuffer();
while(in.hasNext())
{data.append(in.nextLine()).append("\n");}
char ch[]=data.toString().toCharArray();
boolean b =Arrays.equals(ch, ch2);
if(answ.equals(""))
{
JOptionPane.showMessageDialog(Main.F4,«Выне ответили на етот вопрос»);
return;
}
if(b)
{
Main.i++;
if(Main.i==10)
{
Main.F4.R.setEnabled(true);
}
JOptionPane.showMessageDialog(Main.F4,«Верно»);
Main.t++;
B.setEnabled(false);
System.out.println(Main.i);
}
else
{
Main.i++;
if(Main.i==10)
{
Main.F4.R.setEnabled(true);
}
JOptionPane.showMessageDialog(Main.F4,«Неверно»);
B.setEnabled(false);
}
}
catch (Exception ex ) {
ex.printStackTrace();
} } }
3.5Класс TimeInSystem
Класс, реализует подсчетвремени, в течение которого студент находился в системе обучения. Метод этогокласса создает счетчик времени и увеличивает его на единицу после каждой минутыпребывания в системе, и останавливает таймер и записывает в файл время студентакоторое он провел в системе. В случае повторного захода студента в системуберется значение времени из файла этого студента и к нему уже прибавляетсяновое время пребывания.
public classTimeInSystem
{
public staticInteger c;
public static Integeri =0;
public staticjava.util.Timer timer = new java.util.Timer();
public TimeInSystem(){}
public void time(String T1,int flag,String path)
{
if(flag==1)
{
Main.T.c =Main.T.c.parseInt(T1);
TimerTask task =new TimerTask() {
public void run()
{ Main.T.i++; }
};
timer.schedule(task,30000, 60000 );
}
if(flag==2)
{
Main.T.timer.cancel();
Main.T.timer.purge();
try {
Scanner in = newScanner(new File(path));
StringBuffer data= new StringBuffer();
while(in.hasNext()) {
data.append(in.nextLine()).append("\n");
}
String s =data.toString();
int i =s.indexOf("#");
int r =s.indexOf("~");
int t =s.indexOf("%");
int u =s.indexOf("&");
int h =s.indexOf("\n");
String L1 =s.substring(0, i);
String L2 =s.substring(i + 1, r);
String L3 =s.substring(r + 1, t);
String L4 =s.substring(t + 1, u);
String L5 =s.substring(u + 1, h);
Integer y =Main.T.i+Main.T.c;
String Rez =y.toString();
String F = L1 +"#" + L2 + "~" + L3 + "%" + L4 +"&" +Rez ;
File f1;
f1 = newFile(path);
PrintWriterwriter = null;
writer = newPrintWriter(new OutputStreamWriter(new FileOutputStream(path)));
writer.write(F);
writer.close();
} catch(FileNotFoundException ex) {
Logger.getLogger(TimeInSystem.class.getName()).log(Level.SEVERE,null, ex);
} } }}
3.6 Класс ShowResult
Релизует демонстрациюстуденту его конечного результата обучения, тесть его оценок. Методы классазаписывают в текстовые поля окна, в котором будут отображться результатыобучения, ФИО студента, группу, количесвто верных ответов, баллы, и текстовыйэквивалент.
public classShowResult
{
publicShowResult(){}
public voidSetFIO_and_Group(String path,String toCompare ,JTextField FIO, JTextFieldGroup)
{
File F = newFile(path);
StringArrOfFile[] = F.list();
boolean b;
for ( int k=0;k
{
try {
Scanner in = newScanner(new File(path+"\\"+ArrOfFile[k]));
StringBuffer data= new StringBuffer();
while(in.hasNext()) {
data.append(in.nextLine()).append("\n");
String s =data.toString();
int i =s.indexOf("#");
int r =s.indexOf("~");
int t =s.indexOf("%");
int u =s.indexOf("&");
String L1 =s.substring(0, i);
String L2 =s.substring((i+1), r);
String L3 =s.substring((r+1), t);
String L4 =s.substring((t+1), u);
if((L3+L4).equals(toCompare))
{
System.out.println(L3+L4);
FIO.setText(L1);
Group.setText(L2);
}}
}
catch(FileNotFoundException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE,null, ex);
}} }
public StringResult_Q()
{
StringRez="";
if(Main.t==0)
{Rez =Main.t +" вопросов";}
if(Main.t==1)
{ Rez = Main.t +" вопрос";}
if(Main.t>1&& Main.t
{Rez=Main.t +" вопроса";}
if(Main.t>4&& Main.t
{Rez = Main.t +" вопросов"; }
Main.F5.T3.setText(Rez);
return Rez;
}
public StringResult_B()
{
int ball=0;
String s ="";
switch(Main.t)
{
case 10:ball=100;break;
case 9:ball=90;break;
case 8:ball=80;break;
case 7:ball=70;break;
case 6:ball=60;break;
case 5:ball=50;break;
case 4:ball=40;break;
case 3:ball=30;break;
case 2:ball=20;break;
case 1:ball=10;break;
case 0:ball=0;break;
}
s=ball +"баллов";
Main.F5.T4.setText(s);
return s;
}
public StringResult_T()
{
StringT="";
if(Main.t>8&& Main.t
{T=«Отлично»;}
if(Main.t>6&& Main.i
{T=«Хорошо»;}
if(Main.t>5&& Main.t
{T=«Удовлетворительно»;}
if(Main.t>2&& Main.t
{T=«Плохо»;}
if(Main.t
{T=«Оченьплохо»; }
Main.F5.T5.setText(T);
return T;
}
public voidShowTime(String path, JTextField T)
{
String s =Main.this_name+".txt";
System.out.println(s);
File F = newFile(path);
StringArrOfFile[] = F.list();
for(int i=0;i
System.out.println(ArrOfFile[i]);
for( int k=0;k
{
if(s.equals(ArrOfFile[k]))
{
try {
Scanner in = newScanner(new File(path+"\\"+ArrOfFile[k]));
System.out.println(«11111»);
StringBuffer data= new StringBuffer();
while(in.hasNext()) {
data.append(in.nextLine()).append("\n");
String s1 =data.toString();
int i =s1.indexOf("#");
int r =s1.indexOf("~");
int t =s1.indexOf("%");
int u =s1.indexOf("&");
int h =s1.indexOf("\n");
String L1 =s1.substring(0, i);
String L2 =s1.substring((i+1), r);
String L3 =s1.substring((r+1), t);
String L4 =s1.substring((t+1), u);
String L5 =s1.substring(u+1,h );
System.out.println(L5+"минут");
T.setText(L5+"минут");
}}
catch(FileNotFoundException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE,null, ex);
}
}
}}
}
3.7 Класс Modification
Методы этого классареализуют возможности изменения лекционного материала, вопросов и ответовпреподавателем.
public classModification
{
publicModification(){}
public voidModificationLek(String s,JTextArea t)
{
String u1 =t.getText();
PrintWriterwriter = null;
try {
writer = newPrintWriter(
newOutputStreamWriter(
newFileOutputStream(s)));
writer.write(u1);
writer.close();
} catch(Exception ex) {}
}
public voidModificationAQ(String s,JTextField t)
{
String u2 =t.getText();
PrintWriterwriter = null;
try {
writer = newPrintWriter(
newOutputStreamWriter(
newFileOutputStream(s)));
writer.write(u2);
writer.close();
} catch(Exception ex) {}
}
}
3.8Класс ShowResultForTeacher
Класс реализуетдемонстрацию результатов обучения студентов преподавателю.
Метод public voidCreateResultFile(String path) создает файл с результатами обчунеия прирегистрации студента.
Метод public voidSetResultInFile(String path, String info) записывает результаты обучения в файлдля результатов этого студента.
Метод public void SetInList(Stringpath, JComboBox j)записывает ФИО студента в список доступних для просмотрапреподавателем студентов(если он прошел контроль и получил конечный документ).
Метод public voidShowResultForEach(String path,JTextField t1,JTextField t2,JTextField t3,JTextFieldt4,JTextField t5,JTextField t6,JComboBox j) записывает в текстовые поляинформацию про студента котрого выбрал преподаваетль из списка.
Метод public voidShowTime(String path, JTextField T, JComboBox j) записывает в текстовое полеинформацию про время обучения выбранного из списка студента.
public classShowResultForTeacher
{
publicShowResultForTeacher(){}
public voidCreateResultFile(String path)
{
File f1;
f1=newFile(path);
if(!f1.exists())
{
try
{
f1.createNewFile();
}
catch (Exceptionex) { }
}
else {
}
}
public voidSetInList(String path, JComboBox j)
{
File F = newFile(path);
StringArrOfFile[] = F.list();
for ( int k=0;k
{
try {
Scanner in = newScanner(new File(path + "\\" + ArrOfFile[k]));
StringBuffer data= new StringBuffer();
while(in.hasNext()) {
data.append(in.nextLine()).append("\n");
}
String s1 =data.toString();
if(!s1.equals("")){
int i =ArrOfFile[k].indexOf(".");
String L1 =ArrOfFile[k].substring(0, i);
j.addItem(L1);}
} catch(FileNotFoundException ex) {
Logger.getLogger(ShowResultForTeacher.class.getName()).log(Level.SEVERE,null, ex);
}
}
}
public voidSetResultInFile(String path, String info)
{
try {
File f1;
f1 = newFile(path);
PrintWriterwriter = null;
writer = newPrintWriter(new OutputStreamWriter(new FileOutputStream(path)));
writer.write(info);
writer.close();
} catch(FileNotFoundException ex) {
Logger.getLogger(ShowResultForTeacher.class.getName()).log(Level.SEVERE,null, ex);
}
}
public void ShowResultForEach(Stringpath,JTextField t1,JTextField t2,JTextField t3,JTextField t4,JTextFieldt5,JTextField t6,JComboBox j)
{
String s =(String) j.getSelectedItem()+".txt";
File F = newFile(path);
StringArrOfFile[] = F.list();
System.out.println(ArrOfFile.length);
boolean b;
for( int k=0;k
{
if(s.equals(ArrOfFile[k]))
{
try {
b=false;
Scanner in = newScanner(new File(path+"\\"+ArrOfFile[k]));
StringBuffer data= new StringBuffer();
while(in.hasNext()) {
data.append(in.nextLine()).append("\n");
String s1 =data.toString();
System.out.println(b);
int i =s1.indexOf("#");
int r =s1.indexOf("~");
int t =s1.indexOf("%");
int u =s1.indexOf("&");
int h =s1.indexOf("\n");
String L1 =s1.substring(0, i);
String L2 =s1.substring((i+1), r);
String L3 =s1.substring((r+1), t);
String L4 =s1.substring((t+1), u);
String L5 =s1.substring(u+1,h );
t1.setText(L1);
t2.setText(L2);
t3.setText(L3);
t4.setText(L4);
t5.setText(L5);
}
}
catch(FileNotFoundException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE,null, ex);
} } }}
public voidShowTime(String path, JTextField T, JComboBox j)
{
String s =(String) j.getSelectedItem()+".txt";
File F = newFile(path);
StringArrOfFile[] = F.list();
for( int k=0;k
{
if(s.equals(ArrOfFile[k]))
{
try {
Scanner in = newScanner(new File(path+"\\"+ArrOfFile[k]));
StringBuffer data= new StringBuffer();
while(in.hasNext()) {
data.append(in.nextLine()).append("\n");
String s1 = data.toString();
int i =s1.indexOf("#");
int r =s1.indexOf("~");
int t =s1.indexOf("%");
int u =s1.indexOf("&");
int h =s1.indexOf("\n");
String L1 =s1.substring(0, i);
String L2 =s1.substring((i+1), r);
String L3 =s1.substring((r+1), t);
String L4 =s1.substring((t+1), u);
String L5 =s1.substring(u+1,h );
T.setText(L5+"минут");
}}
catch(FileNotFoundException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE,null, ex);
}
}
}}
}
4. Структура файлов
В системе предусмотрено 6каталогов для хранения файлов. Папка Lection содержит 10 текстовых файлов, в которых хранится 10 порцийучебного материала. Папка Question содержит 10 текстовых файлов, в которыххранятся контрольные вопросы. Папка Answer содержит 10 текстовых файлов, в которых хранятся ответы на контрольныевопросы.
Папка User_Stud содержиттекстовые файлы, в которых хранится информация про зарегистрированныхстудентах. Когда студент регистрируется в системе, то в этой папке создаетсяфайл, в котором хранится информация про этого пользователя.
/>
Рис. 15
Сначала идет ФИО, затемгруппа, логин, пароль, и время пребывания студента в системе. Данные отделеныслужебными символами. Папка User_Prep содержит текстовые файлы, в которыххранится информация про зарегистрированных преподавателях. Когда преподавательрегистрируется в системе, то в этой папке создается файл, в котором хранитсяинформация про этого пользователя. Папка Rez содержит текстовые файлы, в которых хранятсярезультаты обучения студентов. Когда студент регистрируется, то создается вэтой папке файл пустой, когда студент проходит контроль, то в него записываютсярезультаты обучения.
/>
Рис. 16
5. Инструкция пользователя
5.1 Инструкция дляпользователя «студент»
Если студент ужезарегистрирован в системе, то он вводит свой логин и пароль, и если он верныйто попадает в окно, где ему предоставляется учебный материал. Если студент незарегистрирован в системе, то он нажимает на кнопку «Регистрация» ипопадает в окно регистрации пользователя. Там студент ставит переключатель впозицию «Студент», заполняет поля регистрации, если поля заполненыверно(т.е заполнены все поля, пароль указан одинаково два раза, и неиспользованы служебные символы(~,#,%,&)), то по нажатию на кнопку «Регистрация»студент регистрируется и входит в систему. В следующем окне студенту доступныдля изучения 10 занятий. Контроль проводится после каждого пройденного урока.Щелкая на кнопку «Ответ», возле соответствующего вопроса, студент впоявившимся окне вводит свой ответ. После того как студент ответил на всевопросы, становится доступной кнопка «Результат», по нажатию накоторую студент предоставляются результаты его обучения. Ознакомившись срезультатами, студент может перейти обратно к лекциям, однако кнопки «Контроль»уже нет. Так же студент может выйти из системы обучения, нажав на кнопку «Выход».
5.2 Инструкция дляпользователя «преподаватель»
Если преподаватель ужезарегистрирован в системе, то он вводит свой логин и пароль, и если он верныйто попадает в окно, где ему предоставляется меню преподавателя. Еслипреподаватель не зарегистрирован в системе, то он нажимает на кнопку «Регистрация»и попадает в окно регистрации пользователя. Там студент ставит переключатель впозицию «Преподаватель», заполняет поля регистрации, если полязаполнены верно(т.е заполнены все поля, пароль указан одинаково два раза, верноуказан ключ, который известен только преподавателям и не использованы служебныесимволы(~,#,%,&)), то по нажатию на кнопку «Регистрация»преподаватель регистрируется и входит в систему. Далее преподаватель попадает в«Меню преподавателя». В этом окне преподаватель может выбрать то, чтоон желает сделать: править лекции, править вопросы и ответы, просмотретьрезультаты обучения. По нажатию на кнопку «Править лекции»преподаватель попадает в окно в котором он может добавить или изменить материалв лекциях. Для этого необходимо выбрать урок, который необходимо исправить,ввести информацию и нажать на кнопку «Сохранить». По нажатию накнопку «Править вопросы», преподаватель попадает в окно, в которомможно править вопросы и ответы. Для этого в необходимом вопросе или ответе нужноизменить текст и нажать на кнопку «Сохранить». По нажатию на кнопку «Смотретьрез-ты обучения» преподаватель попадает в окно, в котором он можетпросмотреть результаты обучения студентов.Для этого необходимо выбрать изсписка интересующего студента, и нажать на кнопку «Показать», послечего в текстовые поля запишется информация про этого студента
6. Тестирование работы системы
6.1 Тестирование работы для пользователя «студент»
Для того, что быпроверить правильность работы системы с пользователем «студент», язарегистрирую двух студентов и для каждого пройду все стадии обучения, и сравнюполученные результаты с ожидаемыми. Для начала я зарегистрирую в системе двухстудентов, после чего в папке User_Stud должны появиться файлы с даннымирегистрации для каждого из зарегистрированного студента и в папке Rez должны появиться два пустых файладля записи в них результатов обучения конкретного студента.Пройдя все этапыработы с системой я убедился что система с пользователем «студент»работает правильно.
6.2 Тестирование работы для пользователя «преподаватель»
Для того, что быпроверить правильность работы системы с пользователем «преподаватель»,я зарегистрирую одного преподавателя и проверю правильность работы системы. Прирегистрации преподавателя, в папке User_Prep должен появиться файл с его даннымирегистрации:
/>
Рис. 21
Далее проверимвозможность преподавателя править лекции. Для этого в первой лекции добавим,какую либо надпись, сохраним, и проверим, изменилась ли лекция. Для этого,после изменений лекции я зайду как студент и прочитаю изменённую лекцию.
/>
Рис. 21
Далее проверимвозможность преподавателя править вопросы и ответы. Для этого в первом вопросеи ответе добавим, какую либо надпись, сохраним, и проверим, изменилась лилекция. Для этого, после изменений лекции я зайду в папку с вопросами и в папкус ответами, и просмотрю изменённые файлы.
/>
Рис. 22
Наконец проверимвозможность преподавателя смотреть результаты обучения всех студентов:
/>
Рис. 23
Заключение
В ходе выполнениякурсовой работы по дисциплине «Объектно-ориентированное программирование»,я разработал и протестировал систему обучения, отвечающую требованиям моеговарианта, тем самым углубил и закрепил свои знания, полученные мною врезультате курса обучения по дисциплине «Объектно-ориентированноепрограммирование» и получил практические навыки с разработке программ сграфическим интерфейсом пользователя. Так же я убедился, чтообъектно-ориентированная методология создания программных продуктовпредставляет собой очень мощное и гибкое средство для разработки программногообеспечения.
Список литературы
1. ГСТУ 3008-95. Документация. Отчёты в сфере науки итехники. Структура и правила оформления. — Киев: Изд-во стандартов, 1995. – 38с.
2. МУ к курс. работе по курсу «Языкиобъектно-ориентированного программирования» /: ОГПУ, 2007г.
3. Давыдов В.И.Кунгурцев А.Б. Объектно-ориентированное программирование. Одесса: Автограф,2003.
4. Кунгурцев О.Б. Основи програмування на мові Java.Середовище Net Beans. Одеса.: ВМВ, 2006. -182с.