Файл: Создание системы тестирования с одним правильным ответом.pdf
Добавлен: 29.03.2023
Просмотров: 300
Скачиваний: 3
Формируется из журнала тестирования.
Проектирование ИС тестирования
Описание входных, нормативно-справочных и итоговых документов
Входная информация представлена в таблице 1.
Таблица 1
Описание входных данных
|
Данные |
Атрибуты |
|
Участник |
ФИО, ДР, пол, админ, пароль, группа. |
|
Тест |
Название, порог, описание, предмет, отведено времени. |
|
Вопрос |
Название, номер, картинка, тест. |
|
Ответ |
Название, вопрос, свой вариант, баллы, правильный ответ. |
|
Список предметов |
Участник, предмет. |
|
Журнал тестов |
Тест, участник, дата сдачи, время прохождения, итоговое количество баллов, пройдено. |
|
Журнал ответов |
Журнал тестов, ответ, введённый ответ, результат. |
Нормативно-справочная информация представлена в таблице 2.
Таблица 2
Нормативно-справочная информация
|
Справочник |
Связанные таблицы |
|
Группа |
Участники |
|
Предмет |
Список предметов, тест |
Результатная информация – это отчёты:
- отчёт о тестировании по студенту;
- отчёт о тестировании за период;
- подробный отчёт о тестировании.
В таблице 3 представлено описание результатных документов
Таблица 3
Описание результатных документов
|
Отчёт |
Поля |
Условие |
|
Отчёт о тестировании по студенту |
название теста; порог прохождения; дата сдачи; набранные баллы; сдано или нет. |
По студенту |
|
Отчёт о тестировании за период |
ФИО студента; группа; дата сдачи; название теста; порог сдачи; набрано баллов; сдано или нет. |
За период |
|
Подробный отчёт о тестировании |
название теста; ФИО студента; затраченное время; вопрос; выбранные варианты ответа; верность ответа; общее количество баллов и порог прохождения. |
Выбор записи из журнала тестирования |
Проектирование логической модели БД
Выделены сущности предметной области:
- группа;
- предмет;
- участники;
- список предметов;
- тест;
- вопрос;
- ответ;
- журнал тестов;
- журнал ответов.
В таблице 4 представлено описание связей между сущностями.
Таблица 4
Связи между сущностями
|
Сущность 1 |
Сущность 2 |
Тип связи |
Разрешено Null |
|
Группа |
Участник |
Один-ко-многим |
Да |
|
Участник |
Список предметов |
Один-ко-многим |
Нет |
|
Предмет |
Список предметов |
Один-ко-многим |
Нет |
|
Предмет |
Тест |
Один-ко-многим |
Нет |
|
Тест |
Вопрос |
Один-ко-многим |
Нет |
|
Вопрос |
Ответ |
Один-ко-многим |
Нет |
|
Тест |
Журнал тестов |
Один-ко-многим |
Нет |
|
Люди |
Журнал тестов |
Один-ко-многим |
Нет |
|
Журнал тестов |
Журнал ответов |
Один-ко-многим |
Нет |
|
Ответ |
Журнал ответов |
Один-ко-многим |
Да |
На рисунке 5 представлена логическая модель данных.
Рисунок 5 – Логическая модель
Проектирование интерфейса системы
В системе требуется допустить возможность двух типов пользователей:
- преподаватель;
- студент.
Преподавателю должны быть доступны следующие функции:
- авторизация;
- управление базой участников тестов;
- ведение справочников;
- создание тестов;
- создание вопросов и ответов;
- тестирование;
- формирование отчётов.
Тестируемому учащемуся должно быть доступно:
- авторизация;
- пройти тестирование.
На рисунке 6 представлена Use Case диаграмма работы пользователя «преподаватель» в системе тестирования.
Рисунок 6 – Use Case диаграмма пользователя «преподаватель»
На рисунке 7 представлена диаграмма вариантов использования пользователя «студент».
Рисунок 7 – Use Case диаграмма пользователя «студент»
Для организации работы пользователей в системе потребуется реализовать графический интерфейс. На рисунке 8 представлен сценарий диалога с пользователем.
Рисунок 8 – Сценарий диалога
Разработка ИС тестирования
Каталог базы данных и запросы к ней
Потребуется реализовать базу данных со следующими таблицами:
- «GroupStud» – группа;
- «Subj» – предмет;
- «SubjList» – список предметов;
- «People» – участники;
- «Test» – тест;
- «Quest» – вопросы;
- «Answer» – ответы;
- «Journaltest» – журнал тестирования;
- «Journalanswer» – журнал ответов.
На рисунке 9 представлена физическая модель базы данных.
Рисунок 9 – Физическая модель
В таблицах 5 – 13 представлено описание базы данных.
Таблица 5
«GroupStud»
|
Поле |
Тип данных |
Длина |
Ограничения |
|
ID |
Int |
- |
PK |
|
Name |
Varchar |
50 |
Not null |
Таблица 6
«Subj»
|
Поле |
Тип данных |
Длина |
Ограничения |
|
ID |
Int |
- |
PK |
|
Name |
Varchar |
50 |
Not null |
Таблица 7
«People»
|
Поле |
Тип данных |
Длина |
Ограничения |
|
ID |
Int |
- |
PK |
|
Name |
Varchar |
50 |
Not null |
|
Sex |
Char |
1 |
Not null |
|
Birthdate |
Datetime |
- |
Not null |
|
GroupStud |
Int |
- |
FK |
|
Admin |
Bit |
- |
|
|
Pass |
Varchar |
50 |
Таблица 8
«SubjList»
|
Поле |
Тип данных |
Длина |
Ограничения |
|
ID |
Int |
- |
PK |
|
People |
Int |
- |
FK, not null |
|
Subj |
Int |
- |
FK, not null |
Таблица 9
«Test»
|
Поле |
Тип данных |
Длина |
Ограничения |
|
ID |
Int |
- |
PK |
|
Name |
Varchar |
50 |
Not null |
|
Description |
Varchar |
200 |
|
|
Porog |
Int |
Not null |
|
|
Subj |
Int |
- |
FK, not null |
|
TestTime |
Int |
- |
Таблица 10
«Quest»
|
Поле |
Тип данных |
Длина |
Ограничения |
|
ID |
Int |
- |
PK |
|
Numb |
Int |
- |
|
|
Name |
Varchar |
Max |
Not null |
|
Pic |
Image |
- |
|
|
Test |
Int |
- |
FK, not null |
Таблица 11
«Answer»
|
Поле |
Тип данных |
Длина |
Ограничения |
|
ID |
Int |
- |
PK |
|
Quest |
Int |
- |
FK, not null |
|
Name |
Varchar |
100 |
Not null |
|
Point |
Int |
- |
Not null |
|
EnterAnswer |
Bit |
- |
|
|
RightAnswer |
Varchar |
100 |
Таблица 12
«JournalTest»
|
Поле |
Тип данных |
Длина |
Ограничения |
|
ID |
Int |
- |
PK |
|
People |
Int |
- |
FK, not null |
|
Test |
Int |
- |
FK |
|
Totla |
Int |
- |
|
|
Passed |
Bit |
- |
|
|
DateTest |
Datetime |
- |
Not null |
|
TestTime |
Таблица 13
«JournalAnwer»
|
Поле |
Тип данных |
Длина |
Ограничения |
|
ID |
Int |
- |
PK |
|
JournalTest |
Int |
- |
FK, not null |
|
Answer |
Int |
- |
FK |
|
Score |
Int |
- |
|
|
EnterAnswer |
varchar |
100 |
На рисунке 10 представлена схема данных полученной базы данных в MS SQL Server 2017.
Рисунок 10 – Физическая модель (схема данных в MS SQL Server Management Studio)
Потребуется реализовать хранимую процедуру расчёта общего балла тестирования. Код процедуры:
CREATE PROCEDURE [dbo].[CalcTotalTest]
-- Add the parameters for the stored procedure here
@JournalTestID int
AS
BEGIN
DECLARE @Total int;
DECLARE @Porog int;
SELECT @Porog=t.Porog
FROM Test t
INNER JOIN JournalTest jt ON t.ID=jt.Test
WHERE jt.ID=@JournalTestID;
SELECT @Total=SUM(Score) FROM JournalAnswer WHERE JournalTest=@JournalTestID;
UPDATE JournalTest
SET
Total=@Total
,Passed=CASE WHEN @Total>=@Porog THEN 1 ELSE 0 END
WHERE ID=@JournalTestID
END
Помимо этого, создана вспомогательная процедура нумерации вопросов:
CREATE PROCEDURE [dbo].[sp_RankQuestion]
-- Add the parameters for the stored procedure here
@TestID int
AS
BEGIN
DECLARE @TableVar TABLE(idt int, Nm int);
insert into @TableVar (idt, Nm)
select ID, ROW_NUMBER() over (order by ID) from Quest where Test=@TestID
update Quest
set Numb=(select NM from @TableVar where idt=Quest.ID)
where Test = @TestID
END
Потребуется реализовать запросы для формирования:
- отчёт о тестировании по студенту;
- отчёт о тестировании за период;
- подробного результата тестирования.
SQL-коды запроса для отчёта о тестировании по студенту:
Select t.Name AS [Тест]
, t.Porog AS [Порог]
, CONVERT(nvarchar(10), jt.DateTest, 104) AS [Дата сдачи]
, jt.Total AS [Набрано]
, case jt.Passed when 1 then 'Да' else 'Нет' end AS [Сдано]
From JournalTest jt
left join Test t on t.ID=jt.Test
Where jt.People=:pr
Order by [Тест], [Дата сдачи]
SQL-коды запроса для отчёта о тестировании за период:
Select p.Name AS [Студент]
, d.Name AS [Группа]
, CONVERT(nvarchar(10), jt.DateTest, 104) AS [Дата сдачи]
, t.Name AS [Тест]
, t.Porog AS [Порог]
, jt.Total AS [Набрано]
, case jt.Passed when 1 then 'Да' else 'Нет' end AS [Сдано]
From JournalTest jt
left join Test t on t.ID=jt.Test
left join People p on p.ID=jt.People
left join GroupStud d on d.ID=p.GroupStud
Where jt.DateTest between :sd and :ed
Order by [Студент], [Дата сдачи]
SQL-коды запроса для отчёта о подробном результате тестирования:
select
(convert(varchar(10),jt.DateTest,104) + ' ' + t.Name) as [Тест]
, p.Name as [Студент]
, cast(q.Numb as varchar(5))+'. '+q.Name as [Вопрос]
, case when isnull(a.EnterAnswer,0)=0 then a.Name else ja.EnterAnswer end as [Ответ]
, case when isnull(ja.Score,0)=0 then 'Нет' else 'Да' end as [Верно]
, 'Порог прохождения '+cast(t.Porog as varchar(5))+'. Набрано '+cast(jt.Total as varchar(5)) as [Результат]
from JournalTest jt
inner join People p on p.ID=jt.People
inner join Test t on t.ID=jt.Test
inner join JournalAnswer ja on ja.JournalTest=jt.ID
inner join Answer a on a.ID=ja.Answer
inner join Quest q on q.ID=a.Quest
where jt.ID=:idJT
Состав системы
Потребуется реализовать систему, которая включает в себя следующие классы:
- TfrmLogin;
- TfrmMain;
- TfrmGrid;
- TfrmQuestAnswer;
- TfrmTest;
- TfrmReport;
- TDM.
В таблице 14 представлено описание классов.
Таблица 14
Описание классов системы
|
Класс |
Описание |
|
TfrmLogin |
Описывает форму авторизации в системе |
|
TfrmMain |
Описывает главную форму приложения |
|
TfrmGrid |
Описывает форму обработки табличных данных |
|
TfrmQuestAnswer |
Описывает форму создания вопросов и ответов по тесту |
|
TfrmTest |
Описывает форму тестирования |
|
TfrmReport |
Описывает форму формирования отчётов |
|
TDM |
Описывает контейнер данных |
На рисунке 11 представлена диаграмма классов.
Рисунок 11 – Диаграмма классов
Были разработаны алгоритмы работы в системе преподавателя и тестирование студента.
Алгоритм работы преподавателя в системе представлен ниже:
1. Начало.
2. Вход в систему.
3. Указать справочную информацию? Если нет, то к пункту 6, если да, то к следующему.
4. Выбрать справочник и внести данные.