База требований к организации проверки знаний

Автор работы: Пользователь скрыл имя, 01 Декабря 2013 в 19:31, курсовая работа

Краткое описание

Розробка ефективних систем генерації завдань для тестування знань, незважаючи на наявність відомих розробок, залишається актуальною, що обумовлено наступними факторами: досить високою вартістю представлених розробок для споживача; неможливістю створення високоефективних тестів та баз завдань для контролю якості знань за певним фахом; невирішеністю проблеми перевірки якості запропонованих тестів; представлені системи не надають засобів інтеграції в єдину комплексну систему.
Об’єктом даного дослідження є процес розробки бази вимог щодо організації перевірки якості знань, що дозволить спростити та автоматизувати процес формування питань у білеті для визначення рівня знань студента.

Содержание

ВСТУП 7
1 АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ ТА ПОСТАНОВКА ЗАДАЧІ ПРЕДМЕТНОЇ ОБЛАСТІ «БАЗА ВИМОГ ЩОДО ОРГАНІЗАЦІЇ ПЕРЕВІРКИ ЯКОСТІ ЗНАНЬ» 9
2 РОЗРОБКА УНІВЕРСАЛЬНОГО ВІДНОШЕННЯ ПРЕДМЕТНОЇ ОБЛАСТІ «БАЗА ВИМОГ ЩОДО ОРГАНІЗАЦІЇ ПЕРЕВІРКИ ЯКОСТІ ЗНАНЬ» 12
3 РОЗРОБКА КОНЦЕПТУАЛЬНОЇ СХЕМИ ПРЕДМЕТНОЇ ОБЛАСТІ «БАЗА ВИМОГ ЩОДО ОРГАНІЗАЦІЇ ПЕРЕВІРКИ ЯКОСТІ ЗНАНЬ» ЗА ER-ПРИНЦИПОМ 14
4 ОБҐРУНТУВАННЯ ВИБОРУ МОДЕЛІ ДАНИХ ПРЕДМЕТНОЇ ОБЛАСТІ «БАЗА ВИМОГ ЩОДО ОРГАНІЗАЦІЇ ПЕРЕВІРКИ ЯКОСТІ ЗНАНЬ» 17
4.1 Ієрархічна модель даних 17
4.2 Мережева модель даних 19
4.3 Реляційна модель даних 20
4.4 Об’єктно-орієнтована модель даних 22
5 ПРОЕКТУВАННЯ НОРМАЛІЗОВАНИХ ВІДНОШЕНЬ ПРЕДМЕТНОЇ ОБЛАСТІ «БАЗА ВИМОГ ЩОДО ОРГАНІЗАЦІЇ ПЕРЕВІРКИ ЯКОСТІ ЗНАНЬ» 23
6 ОЦІНКА СПРОЕКТОВАНИХ ВІДНОШЕНЬ БАЗИ ДАНИХ 30
«БАЗА ВИМОГ ЩОДО ОРГАНІЗАЦІЇ ПЕРЕВІРКИ ЯКОСТІ ЗНАНЬ» 30
7 РОЗРОБКА ВИХІДНИХ ФОРМ БАЗИ ДАНИХ 33
«БАЗА ВИМОГ ЩОДО ОРГАНІЗАЦІЇ ПЕРЕВІРКИ ЯКОСТІ ЗНАНЬ» 33
8 РОЗРОБКА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ДЛЯ ОРГАНІЗАЦІЇ ТА УПРАВЛІННЯ ДАНИМИ БАЗИ «БАЗА ВИМОГ ЩОДО ОРГАНІЗАЦІЇ ПЕРЕВІРКИ ЯКОСТІ ЗНАНЬ» 37
8.1 Розробка схеми-алгоритму реалізації запитів 37
8.2 Обґрунтування використання мови програмування для управління організованою базою даних 44
8.3 Основні команди та оператори мови програмування 46
8.4 Розробка схеми-алгоритму реалізації програмного забезпечення для бази даних 48
ВИСНОВКИ 51
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ 52

Прикрепленные файлы: 1 файл

База данных.docx

— 1.85 Мб (Скачать документ)

Оператор IS NULL використовується в тому випадку коли потрібно розрізнити неправильне та невідоме значення.

При реалізації запитів команда GROUP BY дає можливість визначити підмножину значень в полі в терміналах другого  поля, і застосовує функцію аргументу  до такої підмножини.

HAVING – визначає критерії, які використовуються для видалення  зазначених груп із виводу.

8.4 Розробка схеми-алгоритму реалізації  програмного забезпечення для  бази даних

Для інтерактивного використання створеної бази даних реалізовано  програмне забезпечення. Його використання надає можливість користування базою  даних особам, що не мають розуміння  про структуру бази даних чи фізичне  розміщення даних.

База даних «База завдань  для перевірки якості знань за певним фахом» працює за наступним алгоритмом (Додаток Г):

Крок 1. Завантажується головна  сторінка.

Крок 2. Проводиться вибір  дії над базою даних. 

Крок 3. Якщо вибрано винонання запиту, то переходимо до Кроку 4, якщо вибрано редагування даних - до Кроку 9.

Крок4. Виконується вибір  потрібного і-го запиту.

Крок 5. Введення критеріїв  для виконання запиту.

Крок 6. Виконання операцій реляційної алгебри над відношеннями у відповідності до введених критеріїв.

Крок 7. Виведення результатів  виконання запиту.

Крок 8. Повернення до Кроку 2.

Крок 9. Редагування і додавання  даних.

Крок 10. Вихід.

Схема алгоритму реалізації програмного забезпечення для бази даних «База вимог щодо організації перевірки якості знань» зображено на рисунку 8.4.1 Лістинг запитів наведено в додатку А. Приклад виконання запиту наведено в додатку В. Інструкція користувача програми наведена в додатку Б.

 

Рисунок 8.4.1 - Схема алгоритму програмного забезпечення для бази даних “ База вимог щодо організації перевірки якості знань ”

ВИСНОВКИ

 

В курсовій роботі була розроблена «База вимог щодо організації перевірки якості знань». Враховуючи запити, які необхідно реалізувати, було проведено детальний аналіз предметної області та виявлено всі сутності та їх атрибути.

При цьому отримані результати відповідають технічному завданню:

    - Кількість критеріїв   пошуку, не менше 2;

    - Потужність універсального  відношення, дорівнює 30;

    - Кількість сутностей,  рівне 12;

    - Форма нормалізації  відношень, рівна 3 НФ;

    - Кількість вихідних  форм, дорівнює 10-ми;

    - Кількість запитів,  що реалізуються, рівне 10;

    - Мова програмування  – MS SQL.

Нормалізація схеми бази даних предметної області "Вимоги щодо організації перевірки якості знань" допомогла виключити надлишковість інформації, виділила кращі властивості при зміні і вилученні даних.

В процесі проектування було розроблено «Базу вимог щодо організації перевірки якості знань» створено групу запитів, що аналізують спроектовану предметну область та  відображають потрібну користувачеві інформацію.

 

 

СПИСОК  ВИКОРИСТАНИХ ДЖЕРЕЛ

 

  1. Кондратенко Ю.П., Волкова С.О. Програмний комплекс для автоматизованого тестування знань студентів.
  2. Грабченко А.І., Федорович В.О., Гаращенко Я.М.  Методи наукових досліджень: Навчальний посібник. – Х.: НТУ «ХХПІ», 2009. – 142с.
  3. Сиргушичева А.П., Швецов А.Н.  Гибридный подход к синтезу тестовых заданий в тестирующих системах.
  4. О.Н. Романюк, Т.О. Савчук. Організація баз даних і знань. Навчальний       посібник. - Вінниця: УНІВЕРСУМ - Вінниця, 2003. – 217с.
  5. Джудит С. Боуманб Сандра Л. Эмерсон, М. Дарновски. Практическое руководство по SQL  4-е издание. – Москва: Вильямс,    2001. – 352с.
  6. Карпова В.П. Організація баз даних. Підручник. – Санкт-Петербург: ПИТЕР, 2001. – 260с.
  7. Т. Конноли, К. Бегг, А. Страчан. Базы данных: проектирование, реализация и сопровождение. – М.: Диалектика, 2000. – 1139 с.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ДОДАТКИ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Додаток А

Лістинг запитів

package com.sasha.kursach.dao;

 

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ArrayList;

import java.util.List;

 

import com.sasha.kursach.dbconnector.Connector;

import com.sasha.kursach.query.responses.Cortege;

import com.sasha.kursach.query.responses.QueryResponse;

 

public class CommonQueryDao {

private Connection connection = Connector.getInstance().getConnection();

 

private QueryResponse commonQuery(String query, List<String> columnsNames) {

Statement statement = null;

ResultSet resultSet = null;

try {

statement = connection.createStatement();

resultSet = statement.executeQuery(query);

} catch (SQLException e) {

e.printStackTrace();

}

if (resultSet != null) {

try {

ResultSetMetaData metaData = resultSet.getMetaData();

QueryResponse queryResponse = new QueryResponse();

queryResponse.setColumnsName(columnsNames);

int columnAmount = metaData.getColumnCount();

while (resultSet.next()) {

Cortege cortege = new Cortege();

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

cortege.addValue(resultSet.getString(i));

}

queryResponse.addCortege(cortege);

}

return queryResponse;

} catch (SQLException e) {

e.printStackTrace();

}

}

return null;

}

 

private <T> List<T> createList(T... items) {

List<T> list = new ArrayList<T>();

for (T i : items) {

list.add(i);

}

return list;

}

 

public QueryResponse getAlltasks(String qualificationName) {

String query = "SELECT * FROM TASK";

List<String> list = createList("Код теми", "Номер в темі", "Текст", "Тип");

return commonQuery(query, list);

}

 

public QueryResponse firstQuery(String qualificationName) {

String query = "SELECT NAME, CODE, TYPE FROM OPPP WHERE QUALIFICATION_CODE IN (SELECT Q_CODE FROM QUALIFICATION WHERE Q_NAME = '"

+ qualificationName + "');";

List<String> list = createList("Назва", "Код", "Тип");

return commonQuery(query, list);

}

 

public QueryResponse secondQuery_1(String oPppName) {

String query = "select * from SKILL where SKILL.CODE in ( select DISTINCT SKILL.CODE from  (SKILL inner join COMPETENCE_SKILL on SKILL.CODE = COMPETENCE_SKILL.SKILL_CODE inner join COMPETENCE on COMPETENCE_SKILL.COMPETENCE_CODE = COMPETENCE.CODE inner join OPPP_COMPETENCE on COMPETENCE.CODE = OPPP_COMPETENCE.COMPETENCE_CODE inner join OPPP on OPPP_COMPETENCE.OPPP_CODE = OPPP.CODE) where OPPP.CODE in (select OPPP.CODE from OPPP where OPPP.NAME like '"

+ oPppName + "'));";

List<String> list = createList("Код", "Зміст");

return commonQuery(query, list);

}

 

public QueryResponse secondQuery_2(String oPppName) {

String query = "select * from PRACTICE where PRACTICE.NAME in( select DISTINCT PRACTICE.NAME from (PRACTICE inner join COMPETENCE_PRACTICE on PRACTICE.NAME = COMPETENCE_PRACTICE.PRACTICE_NAME inner join COMPETENCE on COMPETENCE_PRACTICE.COMPETENCE_CODE = COMPETENCE.CODE inner join OPPP_COMPETENCE on COMPETENCE.CODE = OPPP_COMPETENCE.COMPETENCE_CODE inner join OPPP on OPPP_COMPETENCE.OPPP_CODE = OPPP.CODE inner join KNOWLEDGE_BRANCH on OPPP.KNOWLEDGE_BRANCH_CODE = KNOWLEDGE_BRANCH.CODE) where OPPP.CODE in (select OPPP.CODE from OPPP where OPPP.NAME like '"

+ oPppName + "'));";

List<String> list = createList("Назва", "Зміст");

return commonQuery(query, list);

}

 

public QueryResponse thirdQuery(String knowledgeBranchName) {

String query = "SELECT CODE FROM OPPP WHERE KNOWLEDGE_BRANCH_CODE IN (SELECT CODE FROM KNOWLEDGE_BRANCH WHERE NAME = '"

+ knowledgeBranchName + "');";

List<String> list = createList("Код");

return commonQuery(query, list);

}

 

public QueryResponse fourthQuery_1(String knowledgeBranchName,

String oPppName, String competenceCode) {

String query = "select * from SKILL where SKILL.CODE in ( select DISTINCT SKILL.CODE from  (SKILL inner join COMPETENCE_SKILL on SKILL.CODE = COMPETENCE_SKILL.SKILL_CODE inner join COMPETENCE on COMPETENCE_SKILL.COMPETENCE_CODE = COMPETENCE.CODE inner join OPPP_COMPETENCE on COMPETENCE.CODE = OPPP_COMPETENCE.COMPETENCE_CODE inner join OPPP on OPPP_COMPETENCE.OPPP_CODE = OPPP.CODE) where ( OPPP.CODE in (select OPPP.CODE from OPPP where OPPP.NAME like '"

+ oPppName

+ "') AND KNOWLEDGE_BRANCH_CODE in (select kb.CODE from KNOWLEDGE_BRANCH as kb where kb.NAME like '"

+ knowledgeBranchName

+ "') and COMPETENCE.CODE = '"

+ competenceCode + "'))";

List<String> list = createList("Код", "Зміст");

return commonQuery(query, list);

}

 

public QueryResponse fourthQuery_2(String knowledgeBranchName,

String oPppName, String competenceCode) {

String query = "select * from PRACTICE where PRACTICE.NAME in( select DISTINCT PRACTICE.NAME from (PRACTICE inner join COMPETENCE_PRACTICE on PRACTICE.NAME = COMPETENCE_PRACTICE.PRACTICE_NAME inner join COMPETENCE on COMPETENCE_PRACTICE.COMPETENCE_CODE = COMPETENCE.CODE inner join OPPP_COMPETENCE on COMPETENCE.CODE = OPPP_COMPETENCE.COMPETENCE_CODE inner join OPPP on OPPP_COMPETENCE.OPPP_CODE = OPPP.CODE inner join KNOWLEDGE_BRANCH on OPPP.KNOWLEDGE_BRANCH_CODE = KNOWLEDGE_BRANCH.CODE) where ( OPPP.CODE in (select OPPP.CODE from OPPP where OPPP.NAME like '"

+ oPppName

+ "') AND KNOWLEDGE_BRANCH_CODE in (select kb.CODE from KNOWLEDGE_BRANCH as kb where kb.NAME like '"

+ knowledgeBranchName

+ "') and COMPETENCE.CODE = '"

+ competenceCode + "'));";

List<String> list = createList("Назва", "Зміст");

return commonQuery(query, list);

}

 

public QueryResponse fifthQuery(String oPppName, String skillCode) {

String query = "SELECT sm.NAME AS SEMANTIC_MODULE_NAME, SM.CODE AS SEMANTIC_MODULE_CODE, d.D_NAME AS DISCIPLINE_NAME "

+ "FROM DISCIPLINE AS d INNER JOIN SEMANTIC_MODULE AS sm ON d.D_NAME = SM.DISCIPLINE_NAME WHERE d.D_NAME IN ( SELECT op.DISCIPLINE_NAME FROM OPPP_DISCIPLINE AS op INNER JOIN OPPP ON op.OPPP_CODE = OPPP.CODE WHERE OPPP.NAME LIKE '"

+ oPppName

+ "') AND d.D_NAME IN( SELECT ds.DISCIPLINE_NAME FROM DISCIPLINE_SKILL AS ds INNER JOIN SKILL ON ds.SKILL_CODE = SKILL.CODE WHERE SKILL.CODE = '"

+ skillCode + "');";

List<String> list = createList("Назва змістовного модуля",

"Код змістовного модуля", "Назва дисципліни");

return commonQuery(query, list);

}

 

public QueryResponse sixthQuery(String oPppName) {

String query = "SELECT * FROM DISCIPLINE WHERE DISCIPLINE.D_NAME IN (SELECT OPPP_DISCIPLINE.DISCIPLINE_NAME FROM OPPP_DISCIPLINE WHERE OPPP_DISCIPLINE.OPPP_CODE IN (SELECT OPPP.CODE FROM OPPP WHERE OPPP.NAME LIKE '"

+ oPppName + "'));";

List<String> list = createList("Назва", "Кількість академічних годин",

"Кількість національних кредитів", "Кількість кредитів ECTS",

"Вид контролю", "Назва циклу");

return commonQuery(query, list);

}

 

public QueryResponse seventhQuery(String qualificationName,

String productionFunctionName) {

String query = "SELECT TYPICAL_TASK.TT_CODE, TYPICAL_TASK.CONTENT FROM TYPICAL_TASK, PRODUCTION_FUNCTION, QUALIFICATION WHERE PRODUCTION_FUNCTION.PF_NAME = TYPICAL_TASK.PRODUCTION_FUNCTION_NAME AND PRODUCTION_FUNCTION.PF_NAME = '"

+ productionFunctionName

+ "' AND PRODUCTION_FUNCTION.QUALIFICATION_CODE = QUALIFICATION.Q_CODE AND QUALIFICATION.Q_NAME = '"

+ qualificationName + "';";

List<String> list = createList("Код", "Зміст");

return commonQuery(query, list);

}

 

public QueryResponse eighthQuery_1(String qualificationName,

String productionFunctionName, String typicalTaskCode) {

String query = "select * from SKILL where SKILL.CODE in ( select DISTINCT SKILL.CODE from  (SKILL inner join TYPICAL_TASK_SKILL on SKILL.CODE = TYPICAL_TASK_SKILL.SKILL_CODE inner join TYPICAL_TASK on TYPICAL_TASK_SKILL.TYPICAL_TASK_CODE = TYPICAL_TASK.TT_CODE inner join PRODUCTION_FUNCTION on PRODUCTION_FUNCTION.PF_NAME = TYPICAL_TASK.PRODUCTION_FUNCTION_NAME inner join QUALIFICATION on PRODUCTION_FUNCTION.QUALIFICATION_CODE = QUALIFICATION.Q_CODE ) where ( QUALIFICATION.Q_CODE in (select q.Q_CODE from QUALIFICATION as q where q.Q_NAME like '"

+ qualificationName

+ "') and PRODUCTION_FUNCTION.PF_NAME like '"

+ productionFunctionName

+ "' and TYPICAL_TASK.TT_CODE = '"

+ typicalTaskCode + "'))";

List<String> list = createList("Код", "Зміст");

return commonQuery(query, list);

}

 

public QueryResponse eighthQuery_2(String qualificationName,

String productionFunctionName, String typicalTaskCode) {

String query = "select * from PRACTICE where PRACTICE.NAME in( "

+ "select DISTINCT PRACTICE.NAME from (PRACTICE inner join TYPICAL_TASK_PRACTICE on PRACTICE.NAME = TYPICAL_TASK_PRACTICE.PRACTICE_NAME inner join TYPICAL_TASK on TYPICAL_TASK_PRACTICE.TYPICAL_TASK_CODE = TYPICAL_TASK.TT_CODE inner join PRODUCTION_FUNCTION on PRODUCTION_FUNCTION.PF_NAME = TYPICAL_TASK.PRODUCTION_FUNCTION_NAME inner join QUALIFICATION on PRODUCTION_FUNCTION.QUALIFICATION_CODE = QUALIFICATION.Q_CODE) where ( QUALIFICATION.Q_CODE in (select q.Q_CODE from QUALIFICATION as q where q.Q_NAME like '"

+ qualificationName

+ "') and PRODUCTION_FUNCTION.PF_NAME like '"

+ productionFunctionName + "' and TYPICAL_TASK.TT_CODE = '"

+ typicalTaskCode + "'))";

List<String> list = createList("Назва", "Зміст");

return commonQuery(query, list);

}

 

public QueryResponse ninthQuery(String oPppName, String disciplineName,

String semanticModuleName) {

String query = "select TOPIC.CODE, TOPIC.NAME from TOPIC inner join SEMANTIC_MODULE on TOPIC.SEMANTIC_MODULE_CODE = SEMANTIC_MODULE.CODE inner join DISCIPLINE on SEMANTIC_MODULE.DISCIPLINE_NAME = DISCIPLINE.D_NAME inner join OPPP_DISCIPLINE on DISCIPLINE.D_NAME = OPPP_DISCIPLINE.DISCIPLINE_NAME inner join OPPP on OPPP_DISCIPLINE.OPPP_CODE = OPPP.CODE where OPPP.NAME like '"

+ oPppName

+ "' and DISCIPLINE.D_NAME like '"

+ disciplineName

+ "' and SEMANTIC_MODULE.NAME like '"

+ semanticModuleName

+ "'";

List<String> list = createList("Код", "Назва");

return commonQuery(query, list);

}

 

public QueryResponse tenthQuery(String oPppName, String disciplineName,

String semanticModuleName, String topicName) {

String query = "select TASK.NUMBER_IN_TOPIC, TASK.TEXT, TASK.TYPE from TASK inner join TOPIC on TASK.TOPIC_CODE = TOPIC.CODE inner join SEMANTIC_MODULE on TOPIC.SEMANTIC_MODULE_CODE = SEMANTIC_MODULE.CODE inner join DISCIPLINE on SEMANTIC_MODULE.DISCIPLINE_NAME = DISCIPLINE.D_NAME inner join OPPP_DISCIPLINE on DISCIPLINE.D_NAME = OPPP_DISCIPLINE.DISCIPLINE_NAME inner join OPPP on OPPP_DISCIPLINE.OPPP_CODE = OPPP.CODE where OPPP.NAME like '"

+ oPppName

+ "' and DISCIPLINE.D_NAME like '"

+ disciplineName

+ "' and SEMANTIC_MODULE.NAME like '"

+ semanticModuleName

+ "' and TOPIC.NAME like '" + topicName + "'";

List<String> list = createList("Номер", "Текст", "Тип");

return commonQuery(query, list);

}

 

}

 

 

<%@ include file="/WEB-INF/pages/include.jsp"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html>

<head>

<title>Kursach</title>

<meta http-equiv="Content-type" content="text/html" charset="UTF-8">

<meta name="keywords" content="">

<meta name="description" content="">

<link rel="stylesheet"

href="${pageContext.request.contextPath}/styles/style.css" />

</head>

<body>

<div id="all">

<div id="header">

<h1>${title}</h1>

</div>

<!--end header-->

 

<div id="sidebar">

<ul id="menu">

<li><a href="${pageContext.request.contextPath}/homepage">${homePage}</a></li>

<li><a href="${pageContext.request.contextPath}/queries">${queries}</a></li>

<li><a href="${pageContext.request.contextPath}/editData">${editData}</a></li>

</ul>

</div>

<!--end sidebar-->

 

<div id="content">

<h4><span class="query" >Визначити освітньо-професійні програми підготовки (назва, шифр, тип), навчання за якими забезпечить можливість отримання певної кваліфікації.</span></h4>

<form action="${pageContext.request.contextPath}/query/1"

method="post">

<p>

<span>Кваліфікація: </span> <input type="text" name="qualification"

size="50" /> <input type="submit" value="Виконати запит" />

</p>

 

</form>

 

<c:if test="${not empty responseQuery}">

<h4><span class="zagl">Кваліфікація: </span>${qualificationValue}</h4>

<center>

<h3>

<span>Освітньо-професійні програми підготовки </span>

</h3>

</center>

Информация о работе База требований к организации проверки знаний