Разработка учебного пособия по метрологии на платформе Андроид

Метрология в учебной программе. Обзор платформ, мобильных приложений и операционных систем. Компьютерные средства обучения. Блок-схема алгоритма работы модуля лекций и тестов. Проектирование базы данных. Реализация интерфейса и компонентов приложения.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 14.12.2019
Размер файла 2,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

}

applyTask();

}

}

public void prevOnClick(View view) {

currentTask--;

applyTask();

if (currentTask == 0) {

buttonPrev.setVisibility(View.INVISIBLE);

}

}

private void loadTasks() {

DBHelper dbHelper = new DBHelper(this);

idTest = getIntent().getExtras().getLong("test_id");

tasks = dbHelper.findTasksByIdTest(idTest);

Collections.shuffle(tasks);

answers = new ArrayList<>();

correctAnswers = new ArrayList<>();

userAnswers = new ArrayList<>();

for (Task task : tasks) {

List<String> answersRow = new ArrayList<>();

List<String> correctAnswersRow = new ArrayList<>();

try {

Element answersElement = XMLHelper.getDocumentFromString(task.getAnswers()).getDocumentElement();

NodeList answersNodes = answersElement.getChildNodes();

int length = answersNodes.getLength();

for (int i = 0; i < length; ++i) {

Node answerNode = answersNodes.item(i);

String answer = answerNode.getTextContent();

answersRow.add(answer);

if (answerNode.getNodeName().equals("correctAnswer")) {

correctAnswersRow.add(answer);

}

}

Collections.shuffle(answersRow);

answers.add(answersRow);

correctAnswers.add(correctAnswersRow);

userAnswers.add(new ArrayList<String>());

}

catch (Exception e) {

e.printStackTrace();

}

}

}

private void processResults() {

clearActivity();

boolean[] taskResults = getTaskResults();

int result = 0;

for (boolean taskResult : taskResults) {

if (taskResult) {

result++;

}

}

TextView textView = new TextView(this);

textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 24);

textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);

textView.setText(String.format("Правильно %d из %d", result, tasks.size()));

linearLayout.addView(textView);

for (int i = 0; i < tasks.size(); i++) {

linearLayout.addView(OutputHelper.getHtmlTextView(this, String.format("<p>Вопрос %d</p>", i + 1)));

linearLayout.addView(OutputHelper.getHtmlTextView(this, tasks.get(i).getContent()));

if (taskResults[i]) {

linearLayout.addView(OutputHelper.getHtmlTextView(this,

String.format("<p><span style=\"color: green\">Правильно!</span><br><br>Ответ:<br><ul><li>%s</li></ul></p>",

StringUtils.join(correctAnswers.get(i), "</li><li>"))));

}

else {

linearLayout.addView(OutputHelper.getHtmlTextView(this,

String.format("<p><span style=\"color: red\">Неправильно!</span><br><br>Ответ:<br><ul><li>%s</li></ul><br>Правильный ответ:<br><ul><li>%s</li></ul></p>",

StringUtils.join(userAnswers.get(i), "</li><li>"), StringUtils.join(correctAnswers.get(i), "</li><li>"))));

}

if (i != tasks.size() - 1) {

linearLayout.addView(OutputHelper.getHtmlTextView(this, "<br>"));

}

}

buttonNext.setVisibility(View.INVISIBLE);

buttonPrev.setVisibility(View.INVISIBLE);

DBHelper dbHelper = new DBHelper(this);

dbHelper.addResult(idTest, result);

dbHelper.close();

}

private boolean[] getTaskResults() {

boolean[] correct = new boolean[tasks.size()];

for (int i = 0; i < tasks.size(); i++) {

if (userAnswers.get(i).size() != correctAnswers.get(i).size()) {

correct[i] = false;

continue;

}

correct[i] = true;

for (String correctAnswer : correctAnswers.get(i)) {

if (!userAnswers.get(i).contains(correctAnswer)) {

correct[i] = false;

break;

}

}

}

return correct;

}

private void clearActivity() {

linearLayout.removeAllViews();

}

private void applyTask() {

clearActivity();

Task task = tasks.get(currentTask);

try {

linearLayout.addView(OutputHelper.getHtmlTextView(this, String.format("Вопрос %d из %d" , currentTask + 1, tasks.size())));

linearLayout.addView(OutputHelper.getHtmlTextView(this, task.getContent()));

List<String> answersRow = answers.get(currentTask);

final List<String> userAnswersRow = userAnswers.get(currentTask);

CompoundButton.OnCheckedChangeListener onCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() {

@Override

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

String text = buttonView.getText().toString();

if (isChecked) {

if (!userAnswersRow.contains(text)) {

userAnswersRow.add(text);

}

buttonNext.setVisibility(View.VISIBLE);

} else {

userAnswersRow.remove(text);

if (userAnswersRow.size() != 0) {

buttonNext.setVisibility(View.VISIBLE);

}

}

}

};

if (correctAnswers.get(currentTask).size() == 1) {

linearLayout.addView(getRadioGroup(this, answersRow, userAnswersRow, onCheckedChangeListener));

}

else {

linearLayout.addView(getCheckBoxes(this, answersRow, userAnswersRow, onCheckedChangeListener));

}

}

catch (Exception e) {

e.printStackTrace();

TextView textView = new TextView(this);

textView.setText(String.format("Не удалось загрузить задание: %s", task.getContent()));

linearLayout.addView(textView);

}

}

private static RadioGroup getRadioGroup(Context context, List<String> answers, List<String> userAnswers, CompoundButton.OnCheckedChangeListener onCheckedChangeListener) {

RadioGroup radioGroup = new RadioGroup(context);

radioGroup.setPadding(10, 10, 10, 10);

for (String answer : answers) {

RadioButton radioButton = new RadioButton(context);

radioButton.setText(answer);

radioButton.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);

radioButton.setLayoutParams(new LinearLayout.LayoutParams(

LinearLayout.LayoutParams.MATCH_PARENT,

LinearLayout.LayoutParams.WRAP_CONTENT));

radioButton.setPadding(0, Converter.dpToPx(5), 0, Converter.dpToPx(5));

radioButton.setOnCheckedChangeListener(onCheckedChangeListener);

radioGroup.addView(radioButton);

radioButton.setChecked(userAnswers.contains(answer));

}

return radioGroup;

}

private static LinearLayout getCheckBoxes(Context context, List<String> answers, List<String> userAnswers, CompoundButton.OnCheckedChangeListener onCheckedChangeListener) {

LinearLayout layout = new LinearLayout(context);

layout.setOrientation(LinearLayout.VERTICAL);

layout.setPadding(10, 10, 10, 10);

for (String answer : answers) {

CheckBox checkBox = new CheckBox(context);

checkBox.setText(answer);

checkBox.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);

checkBox.setLayoutParams(new LinearLayout.LayoutParams(

LinearLayout.LayoutParams.MATCH_PARENT,

LinearLayout.LayoutParams.WRAP_CONTENT));

checkBox.setPadding(0, Converter.dpToPx(5), 0, Converter.dpToPx(5));

checkBox.setOnCheckedChangeListener(onCheckedChangeListener);

layout.addView(checkBox);

checkBox.setChecked(userAnswers.contains(answer));

}

return layout;

}

}

7. TestsActivity.java

package com.dianakosareva.tutorialmetrology.activities;

import android.content.Intent;

import android.graphics.Color;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

import android.widget.Button;

import android.widget.LinearLayout;

import android.widget.TextView;

import com.dianakosareva.tutorialmetrology.Converter;

import com.dianakosareva.tutorialmetrology.DBHelper;

import com.dianakosareva.tutorialmetrology.entities.Section;

import com.dianakosareva.tutorialmetrology.entities.Test;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

public class TestsActivity extends AppCompatActivity {

Map<String, Long> nameToId;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_tests);

getSupportActionBar().setTitle(R.string.tests);

nameToId = new HashMap<>();

addTestButtons();

}

public void onClickTest(View view) {

Button button = (Button) view;

Intent intent = new Intent(this, TestActivity.class);

intent.putExtra("test_id", nameToId.get(button.getText().toString()));

intent.putExtra("test_name", button.getText().toString());

startActivity(intent);

}

private void addTestButtons() {

LinearLayout layout = findViewById(R.id.tests);

DBHelper dbHelper = new DBHelper(this);

List<Section> sections = dbHelper.findAllSections();

List<Test> tests = dbHelper.findAllTests();

int i = 0;

for (int j = 0; j < sections.size(); j++) {

Section section = sections.get(j);

TextView textView = new TextView(this);

textView.setText(section.getName());

textView.setPadding(Converter.dpToPx(10), Converter.dpToPx(10), Converter.dpToPx(10), Converter.dpToPx(10));

textView.setTextSize(18);

//textView.setBackgroundColor(Color.parseColor("#1fffff00"));

layout.addView(textView);

for (; i < tests.size(); i++) {

Test test = tests.get(i);

if (test.getIdSection() == section.getId()) {

nameToId.put(test.getName(), test.getId());

Button button = new Button(this);

button.setText(test.getName());

button.setTextAlignment(View.TEXT_ALIGNMENT_TEXT_START);

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

onClickTest(v);

}

});

layout.addView(button);

} else {

break;

}

}

}

}

}

8. Lection.java

package com.dianakosareva.tutorialmetrology.entities;

public class Lection {

private long id;

private String name;

private String content;

private long lectionOrder;

private long idSection;

public long getId() {

return id;

}

public void setId(long id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getContent() {

return content;

}

public void setContent(String content) {

this.content = content;

}

public long getLectionOrder() {

return lectionOrder;

}

public void setLectionOrder(long lectionOrder) {

this.lectionOrder = lectionOrder;

}

public long getIdSection() {

return idSection;

}

public void setIdSection(long idSection) {

this.idSection = idSection;

}

}

9. Section.java

package com.dianakosareva.tutorialmetrology.entities;

public class Section {

private long id;

private String name;

private long sectionOrder;

public long getId() {

return id;

}

public void setId(long id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public long getSectionOrder() {

return sectionOrder;

}

public void setSectionOrder(long sectionOrder) {

this.sectionOrder = sectionOrder;

}

}

10. Task.java

package com.dianakosareva.tutorialmetrology.entities;

public class Task {

private long id;

private long idTest;

private String content;

private String answers;

public long getId() {

return id;

}

public void setId(long id) {

this.id = id;

}

public long getIdTest() {

return idTest;

}

public void setIdTest(long idTest) {

this.idTest = idTest;

}

public String getContent() {

return content;

}

public void setContent(String content) {

this.content = content;

}

public String getAnswers() {

return answers;

}

public void setAnswers(String answers) {

this.answers = answers;

}

}

11. Test.java

package com.dianakosareva.tutorialmetrology.entities;

public class Test {

private long id;

private String name;

private long idSection;

private long order;

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public long getIdSection() {

return idSection;

}

public void setIdSection(long idSection) {

this.idSection = idSection;

}

public long getOrder() {

return order;

}

public void setOrder(long order) {

this.order = order;

}

}

12. Converter.java

package com.dianakosareva.tutorialmetrology;

import android.content.res.Resources;

public class Converter {

public static int dpToPx(int dp) {

return (int) (dp * Resources.getSystem().getDisplayMetrics().density);

}

public static int pxToDp(int px) {

return (int) (px / Resources.getSystem().getDisplayMetrics().density);

}

}

13. DBHelper.java

package com.dianakosareva.tutorialmetrology;

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

import com.dianakosareva.tutorialmetrology.entities.Lection;

import com.dianakosareva.tutorialmetrology.entities.Section;

import com.dianakosareva.tutorialmetrology.entities.Task;

import com.dianakosareva.tutorialmetrology.entities.Test;

import java.util.ArrayList;

import java.util.List;

public class DBHelper extends SQLiteOpenHelper {

private static final int DATABASE_VERSION = 1;

private static final String DATABASE_NAME = "metrologyDb";

private static final String SECTIONS = "sections";

private static final String SECTIONS_ID = "_id";

private static final String SECTIONS_NAME = "name";

private static final String SECTIONS_ORDER = "section_order";

private static final String LECTIONS = "lections";

private static final String LECTIONS_ID = "_id";

private static final String LECTIONS_NAME = "name";

private static final String LECTIONS_CONTENT = "content";

private static final String LECTIONS_ID_SECTION = "id_section";

private static final String LECTIONS_ORDER = "lection_order";

private static final String TESTS = "tests";

private static final String TESTS_ID = "_id";

private static final String TESTS_NAME = "name";

private static final String TESTS_ID_SECTION = "id_section";

private static final String TESTS_ORDER = "test_order";

private static final String TASKS = "tasks";

private static final String TASKS_ID = "_id";

private static final String TASKS_ID_TEST = "id_test";

private static final String TASKS_CONTENT = "content";

private static final String TASKS_ANSWERS = "answers";

private static final String RESULTS = "results";

private static final String RESULTS_ID = "_id";

private static final String RESULTS_ID_TEST = "id_test";

private static final String RESULTS_MARK = "mark";

private static final String RESULTS_PASS_DATE = "pass_date";

public DBHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL("CREATE TABLE " + SECTIONS + "(" +

SECTIONS_ID + " INTEGER PRIMARY KEY," +

SECTIONS_NAME + " TEXT NOT NULL," +

SECTIONS_ORDER + " INTEGER NOT NULL)");

db.execSQL("CREATE TABLE " + LECTIONS + "(" +

LECTIONS_ID + " INTEGER PRIMARY KEY," +

LECTIONS_NAME + " TEXT NOT NULL," +

LECTIONS_CONTENT + " TEXT NOT NULL, " +

LECTIONS_ID_SECTION + " INTEGER NOT NULL," +

LECTIONS_ORDER + " INTEGER NOT NULL)");

db.execSQL("CREATE TABLE " + TESTS + "(" +

TESTS_ID + " INTEGER PRIMARY KEY," +

TESTS_NAME + " TEXT NOT NULL," +

TESTS_ID_SECTION + " INTEGER NOT NULL," +

TESTS_ORDER + " INTEGER NOT NULL)");

db.execSQL("CREATE TABLE " + TASKS + "(" +

TASKS_ID + " INTEGER PRIMARY KEY," +

TASKS_ID_TEST + " INTEGER NOT NULL," +

TASKS_CONTENT + " TEXT NOT NULL," +

TASKS_ANSWERS + " TEXT NOT NULL)");

db.execSQL("CREATE TABLE " + RESULTS + "(" +

RESULTS_ID + " INTEGER PRIMARY KEY," +

RESULTS_ID_TEST + " INTEGER NOT NULL," +

RESULTS_MARK + " INTEGER NOT NULL," +

RESULTS_PASS_DATE + " DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL)");

addContent(db);

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

db.execSQL("DROP TABLE IF EXISTS " + LECTIONS);

db.execSQL("DROP TABLE IF EXISTS " + SECTIONS);

db.execSQL("DROP TABLE IF EXISTS " + TESTS);

db.execSQL("DROP TABLE IF EXISTS " + TASKS);

db.execSQL("DROP TABLE IF EXISTS " + RESULTS);

onCreate(db);

}

@Override

public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {

onUpgrade(db, oldVersion, newVersion);

}

public List<Section> findAllSections() {

List<Section> sections = new ArrayList<>();

SQLiteDatabase database = getReadableDatabase();

try (Cursor cursor = database.query(SECTIONS, null, null, null, null, null, SECTIONS_ORDER)) {

int idIndex = cursor.getColumnIndex(SECTIONS_ID);

int nameIndex = cursor.getColumnIndex(SECTIONS_NAME);

int sectionOrderIndex = cursor.getColumnIndex(SECTIONS_ORDER);

if (cursor.moveToFirst()) {

do {

Section section = new Section();

section.setId(cursor.getLong(idIndex));

section.setName(cursor.getString(nameIndex));

section.setSectionOrder(cursor.getLong(sectionOrderIndex));

sections.add(section);

}

while (cursor.moveToNext());

}

}

return sections;

}

public List<Lection> findAllLections() {

List<Lection> lections = new ArrayList<>();

SQLiteDatabase database = getReadableDatabase();

try (Cursor cursor = database.query(LECTIONS, null, null, null, null, null, LECTIONS_ID_SECTION + "," + LECTIONS_ORDER)) {

if (cursor.moveToFirst()) {

int idIndex = cursor.getColumnIndex(LECTIONS_ID);

int nameIndex = cursor.getColumnIndex(LECTIONS_NAME);

int contentIndex = cursor.getColumnIndex(LECTIONS_CONTENT);

int idSectionIndex = cursor.getColumnIndex(LECTIONS_ID_SECTION);

int lectionsOrderIndex = cursor.getColumnIndex(LECTIONS_ORDER);

do {

Lection lection = new Lection();

lection.setId(cursor.getLong(idIndex));

lection.setName(cursor.getString(nameIndex));

lection.setContent(cursor.getString(contentIndex));

lection.setIdSection(cursor.getLong(idSectionIndex));

lection.setLectionOrder(cursor.getLong(lectionsOrderIndex));

lections.add(lection);

}

while (cursor.moveToNext());

}

}

return lections;

}

public Lection findLectionById(long id) {

Lection lection = null;

SQLiteDatabase database = getReadableDatabase();

try (Cursor cursor = database.query(LECTIONS, null, LECTIONS_ID + "=" + id, null, null, null, LECTIONS_ID_SECTION + "," + LECTIONS_ORDER)) {

if (cursor.moveToFirst()) {

int idIndex = cursor.getColumnIndex(LECTIONS_ID);

int nameIndex = cursor.getColumnIndex(LECTIONS_NAME);

int contentIndex = cursor.getColumnIndex(LECTIONS_CONTENT);

int idSectionIndex = cursor.getColumnIndex(LECTIONS_ID_SECTION);

int lectionsOrderIndex = cursor.getColumnIndex(LECTIONS_ORDER);

lection = new Lection();

lection.setId(cursor.getLong(idIndex));

lection.setName(cursor.getString(nameIndex));

lection.setContent(cursor.getString(contentIndex));

lection.setIdSection(cursor.getLong(idSectionIndex));

lection.setLectionOrder(cursor.getLong(lectionsOrderIndex));

}

}

return lection;

}

public List<Test> findAllTests() {

List<Test> tests = new ArrayList<>();

SQLiteDatabase database = getReadableDatabase();

try (Cursor cursor = database.query(TESTS, null, null, null, null, null, TESTS_ID_SECTION + "," + TESTS_ORDER)) {

if (cursor.moveToFirst()) {

int idIndex = cursor.getColumnIndex(TESTS_ID);

int nameIndex = cursor.getColumnIndex(TESTS_NAME);

int idSectionIndex = cursor.getColumnIndex(TESTS_ID_SECTION);

int orderIndex = cursor.getColumnIndex(TESTS_ORDER);

do {

Test test = new Test();

test.setId(cursor.getLong(idIndex));

test.setName(cursor.getString(nameIndex));

test.setIdSection(cursor.getLong(idSectionIndex));

test.setOrder(cursor.getLong(orderIndex));

tests.add(test);

}

while (cursor.moveToNext());

}

}

return tests;

}

public List<Task> findTasksByIdTest(long idTest) {

List<Task> tasks = new ArrayList<>();

SQLiteDatabase database = getReadableDatabase();

try (Cursor cursor = database.query(TASKS, null, TASKS_ID_TEST + "=" + idTest, null, null, null, null)) {

if (cursor.moveToFirst()) {

int idIndex = cursor.getColumnIndex(TASKS_ID);

int idTestIndex = cursor.getColumnIndex(TASKS_ID_TEST);

int contentIndex = cursor.getColumnIndex(TASKS_CONTENT);

int answersIndex = cursor.getColumnIndex(TASKS_ANSWERS);

do {

Task task = new Task();

task.setId(cursor.getLong(idIndex));

task.setIdTest(cursor.getLong(idTestIndex));

task.setContent(cursor.getString(contentIndex));

task.setAnswers(cursor.getString(answersIndex));

tasks.add(task);

}

while (cursor.moveToNext());

}

}

return tasks;

}

public long addResult(long idTest, long idMark) {

try (SQLiteDatabase db = getWritableDatabase()) {

return addResult(db, idTest, idMark);

}

}

public Long getLastMark(long idTest) {

return 0L;

}

private long addTask(SQLiteDatabase db, String content, String answers, long idTest) {

ContentValues values = new ContentValues();

values.put(TASKS_ID_TEST, idTest);

values.put(TASKS_CONTENT, content);

values.put(TASKS_ANSWERS, answers);

return db.insert(TASKS, null, values);

}

private long addTest(SQLiteDatabase db, String name, long idSection, long testOrder) {

ContentValues values = new ContentValues();

values.put(TESTS_NAME, name);

values.put(TESTS_ID_SECTION, idSection);

values.put(TESTS_ORDER, testOrder);

return db.insert(TESTS, null, values);

}

private long addSection(SQLiteDatabase db, String name, long sectionOrder) {

ContentValues values = new ContentValues();

values.put(SECTIONS_NAME, name);

values.put(SECTIONS_ORDER, sectionOrder);

return db.insert(SECTIONS, null, values);

}

private long addLection(SQLiteDatabase db, String name, String content, long idSection, long lectionOrder) {

ContentValues values = new ContentValues();

values.put(LECTIONS_NAME, name);

values.put(LECTIONS_CONTENT, content);

values.put(LECTIONS_ID_SECTION, idSection);

values.put(LECTIONS_ORDER, lectionOrder);

return db.insert(LECTIONS, null, values);

}

private long addResult(SQLiteDatabase db, long idTest, long mark) {

ContentValues values = new ContentValues();

values.put(RESULTS_ID_TEST, idTest);

values.put(RESULTS_MARK, mark);

return db.insert(RESULTS, null, values);

}

private void addContent(SQLiteDatabase db) {

addSection(db, "Введение", 1);

addSection(db, "Основные вопросы теоретической метрологии", 2);

addSection(db, "Законодательная метрология", 3);

addSection(db, "Элементарные средства измерений", 4);

addSection(db, "Измерительные приборы", 5);

addSection(db, "Измерительные установки и измерительные системы", 6);

addLection(db, "Лекция 1. Задачи, цели и предмет курса",

"<p><b>Метрология</b> - <u>это наука об измерениях, методах и средствах достижения требуемой точности.</u></p>" +

"<p> Происхождение самого термина «метрология» возводят к двум греческим словам: metron, что переводится как «мера», и logos - «учение». Бурное развитие метрологии пришлось на конец ХХ в. Оно неразрывно связано с развитием новых технологий. До этого метрология была лишь описательным научным предметом. Таким образом, можно сказать, что <b>метрология изучает:</b>" +

"<ol>" +

"<li>методы и средства для учета продукции по следующим показателям: длине, массе, объему, расходу и мощности;</li>" +

"<li>измерения физических величин и технических параметров, а также свойств и состава веществ;</li>" +

"<li>измерения для контроля и регулирования технологических процессов.</li>" +

"</ol></p>" +

"<p><b>Выделяют несколько основных направлений метрологии:</b></p>" +

"<ol>" +

"<li>общая теория измерений;</li>" +

"<li>системы единиц физических величин;</li>" +

"<li>методы и средства измерений;</li>" +

"<li>методы определения точности измерений;</li>" +

"<li>основы обеспечения единства измерений, а также основы единообразия средств измерения;</li>" +

"<li>эталоны и образцовые средства измерений;</li>" +

"<li>методы передачи размеров единиц от образцов средств измерения и от эталонов рабочим средствам измерения.</li>" +

"</ol>" +

"<p><b>Следует различать также объекты метрологии:</b></p>" +

"<ol>" +

"<li>единицы измерения величин;</li>" +

"<li>средства измерений;</li>" +

"<li>методики, используемые для выполнения измерений и т. д.</li>" +

"</ol>" +

"<p><b>Метрология включает в себя:</b> во-первых, общие правила, нормы и требования, " +

"во-вторых, вопросы, нуждающиеся в государственном регламентировании и контроле. И здесь речь идет о:</p>" +

"<ol>" +

"<li>физических величинах, их единицах, а также об их измерениях;</li>" +

"<li>принципах и методах измерений и о средствах измерительной техники;</li>" +

"<li>погрешностях средств измерений, методах и средствах обработки результатов измерений с целью исключения погрешностей;\n</li>" +

"<li>обеспечении единства измерений, эталонах, образцах;</li>" +

"<li>государственной метрологической службе;</li>" +

"<li>методике поверочных схем;</li>" +

"<li>рабочих средствах измерений.</li>" +

"</ol>" +

"<p>В связи с этим задачами метрологии становятся: усовершенствование эталонов, разработка новых методов точных измерений, обеспечение единства и необходимой точности измерений.</p>" +

"<p><b>Вопросы для самопроверки:</b></p>" +

"<ol>" +

"<li>Дайте определение метрологии;</li>" +

"<li>Что изучает метрология?</li>" +

"</ol>",

1, 1);

addLection(db, "Лекция 2. Этапы развития метрологии",

"<p><b>1. Период органолептических измерений</b><ul><li>На основе наблюдений установлены год, месяц;</li><li>Используются меры, имеющие антропологическое происхождение. Например, в Киевской руси это: вершок, пядь, локоть и др.</li></ul></p>" +

"<p><b>2. Период возникновения вещественных мер</b><ul><li>2 в. до н.э. - в Вавилоне время измеряется в минах (1 мина ? 2 часа, время, за которое вытекала 1 мина ? 500г воды);</li><li>1070г. - Золотой пояс великого князя Святослава Ярославича служит образцовой мерой длины, имеются сведения о хранении в церквях и монастырях образцовых мер и ежегодных поверках средств измерения;</li><li>1550г. - в Двинской грамоте Ивана Грозного регламентированы правила хранения и передачи размеров новой меры сыпучих тел - осьмины.</li></ul></p>" +

"<p><b>3. Период возникновения и развития электроизмерительных приборов</b><ul><li>1745г. - русским академиком Г.В.Рихманом был создан первый в мире элктроизмерительный прибор - электрометр, который использовали для оценки разности потенциалов;</li><li>1820г. - А.Ампер демонстрирует первый гальванометр;</li><li>1837г. - О де ла Рив изобрел тепловой электроизмерительный прибор;</li><li>1842г. - в России создается Депо образцовых мер и весов, задачей которого являлось хранение эталонов мер и их копий, поверка и сличение образцовых мер с иностранными;</li><li>1881г. - на Первом конгрессе по электричеству в Париже были приняты электромагнитная и электростатическая системы единиц;</li><li>1892 - 1917гг - управляющим Депо был Д.И.Менделеев, сыгравший большую роль в развитии метрологии.</li></ul></p>" +

"<p><b>4. Период современной метрологии</b> характеризуется расширением международного сотрудничества в области метрологии, широким распространением электрических измерений; применением метрологии в экономике, психологии, социологии, истории и многих других гуманитарных науках, искусстве, в общественной и политической жизни.<ul><li>XI Генеральная конференция по мерам и весам приняла Международную систему единиц физических величин, получившую у нас в стране сокращенное название СИ;</li><li>Появление квалиметрии (раздела метрологии, посвященного проблемам измерения качества продукции);</li><li>Создание государственной метрологической службы (1927); разработка и внедрение Государственной системы стандартизации (ГСС); создание органов ведомственного контроля ха мерами и измерительными приборами (1983).</li></ul></p>" +

"<p><b>Вопросы для самопроверки:</b></p>" +

"<ol>" +

"<li>Чем характеризуется период современной метрологии?</li>" +

"<li>Во время какого периода был изобетен гальванометр?</li>" +

"</ol></p>",

1, 2);

addLection(db, "Лекция 3. Аксиомы метрологии",

"",

2, 1);

addLection(db, "Лекция 4. Измерительные шкалы",

"",

2, 2);

addLection(db, "Лекция 5. Системы единиц физических величин",

"",

2, 3);

addLection(db, "Лекция 6. Виды и методы измерений",

"",

2, 4);

addLection(db, "Лекция 7. Условия измерений",

"",

2, 5);

addLection(db, "Лекция 8. Средства измерений и их характеристики",

"",

2, 6);

addLection(db, "Лекция 9. Основные вопросы теории погрешностей",

"",

2, 7);

addLection(db, "Лекция 10. Нормативная база метрологии",

"",

3, 1);

long id_test = addTest(db, "Тест 1. Задачи, цели и предмет курса", 1, 1);

long id_test2 = addTest(db, "Тест 2. Этапы развития метрологии", 1, 2);

long id_test3 = addTest(db, "Тест 3. Аксиомы метрологии", 2, 3);

long id_test4 = addTest(db, "Тест 4. Измерительные шкалы", 2, 4);

long id_test5 = addTest(db, "Тест 5. Системы единиц физических величин", 2, 5);

long id_test6 = addTest(db, "Тест 6. Виды и методы измерений", 2, 6);

long id_test7 = addTest(db, "Тест 7. Условия измерений", 2, 7);

long id_test8 = addTest(db, "Тест 8. Средства измерений и их характеристики", 2, 8);

long id_test9 = addTest(db, "Тест 9. Основные вопросы теории погрешностей", 2, 9);

long id_test10 = addTest(db, "Тест 10. Нормативная база метрологии", 3, 10);

addTask(db,

"<p>Укажите цель метрологии:</p>",

"<answers>" +

"<answer>Разработка новой и совершенствование, действующей правовой и нормативной базы</answer>" +

"<answer>Совершенствование эталонов единиц измерения для повышения их точности</answer>" +

"<correctAnswer>Обеспечение единства измерений с необходимой и требуемой, точностью</correctAnswer>" +

"<answer>Разработка и совершенствование средств и методов измерений повышения их точности</answer>" +

"<answer>Усовершенствование способов передачи единиц измерений от эталона к измеряемому объекту</answer>" +

"</answers>", id_test);

addTask(db,

"<p>Укажите задачи метрологии:</p>",

"<answers>" +

"<answer>Обеспечение единства измерений с необходимой и требуемой точностью</answer>" +

"<correctAnswer>Разработка и совершенствование средств и методов измерений; повышение их точности</correctAnswer>" +

"<correctAnswer>Разработка новой и совершенствование действующей правовой и нормативной базы</correctAnswer>" +

"<correctAnswer>Совершенствование эталонов единиц измерения для повышения их точности</correctAnswer>" +

"<correctAnswer>Усовершенствование способов передачи единиц измерений от эталона к измеряемому объекту</correctAnswer>" +

"<correctAnswer>Установление и воспроизведение в виде эталонов единиц измерений</correctAnswer>" +

"</answers>", id_test);

addTask(db,

"<p>Что такое метрология?</p>",

"<answers>" +

"<correctAnswer>Наука об измерениях, методах и средствах достижения требуемой точности</correctAnswer>" +

"<answer>Наука о погрешностях, их учете и измерениях</answer>" +

"<answer>Наука о разработке, опубликованию и применению стандартов, установлению норм, правил и характеристик в целях обеспечения безопасности продукции</answer>" +

"<answer>Наука о подтверждении соответствия объектов требованиям технических регламентов, положениям стандартов</answer>" +

"</answers>", id_test);

addTask(db,

"<p>От каких слов в переводе с гречесткого происходит термин метрология?</p>",

"<answers>" +

"<correctAnswer>Мера</correctAnswer>" +

"<answer>Измерение</answer>" +

"<answer>Длина</answer>" +

"<correctAnswer>Учение</correctAnswer>" +

"</answers>", id_test);

addTask(db,

"<p>Что изучает метрология?</p>",

"<answers>" +

"<correctAnswer>Методы и средства для учета продукции по следующим показателям: длине, массе, объему, расходу и мощности</correctAnswer>" +

"<correctAnswer>Измерения для контроля и регулирования технологических процессов</correctAnswer>" +

"<answer>Комплекс действий, проводимых с целью подтверждения соответствия определенным нормам ГОСТ</answer>" +

"<correctAnswer>Измерения физических величин и технических параметров, а также свойств и состава веществ</correctAnswer>" +

"</answers>", id_test);

addTask(db,

"<p>Что из перечисленного не является направлением метрологии?</p>",

"<answers>" +

"<answer>Общая теория измерений</answer>" +

"<answer>Системы единиц физических величин</answer>" +

"<answer>Методы и средства измерений</answer>" +

"<correctAnswer>Безопасность продукции</correctAnswer>" +

"</answers>", id_test);

addTask(db,

"<p>Что из перечисленного не является объектом метрологии?</p>",

"<answers>" +

"<answer>Единицы измерения величин</answer>" +

"<answer>Средства измерений</answer>" +

"<answer>Методики для выполнения измерений</answer>" +

"<correctAnswer>Точность измерений</correctAnswer>" +

"</answers>", id_test);

addTask(db,

"<p>Что из перечисленного относится к периоду современной метрологии?</p>",

"<answers>" +

"<correctAnswer>Появление квалиметрии</correctAnswer>" +

"<answer>Демонстрация первого гальванометра</answer>" +

"<correctAnswer>Принятие международной системы СИ</correctAnswer>" +

"<answer>Приняты электромагнитная и электростатическая системы единиц</answer>" +

"<answer>Использование мер, имеющих антропологическое происхождение</answer>" +

"</answers>", id_test2);

}}

14. OutputHelper.java

package com.dianakosareva.tutorialmetrology;

import android.content.Context;

import android.content.res.Resources;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.drawable.BitmapDrawable;

import android.graphics.drawable.Drawable;

import android.text.Html;

import android.util.Base64;

import android.util.TypedValue;

import android.widget.TextView;

import org.sufficientlysecure.htmltextview.HtmlTextView;

public final class OutputHelper {

private static Html.ImageGetter getImageGetter(final Resources resources)

{

return new Html.ImageGetter() {

@Override

public Drawable getDrawable(String source) {

byte[] data = Base64.decode(source, Base64.DEFAULT);

Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);

BitmapDrawable bitmapDrawable = new BitmapDrawable(resources, bitmap);

bitmapDrawable.setBounds(0, 0, bitmapDrawable.getIntrinsicWidth(), bitmapDrawable.getIntrinsicHeight());

return bitmapDrawable;

}

};

}

public static TextView getHtmlTextView(Context context, String html)

{

HtmlTextView htmlTextView = new HtmlTextView(context);

htmlTextView.setPadding(10, 10, 10, 10);

htmlTextView.setHtml(html, getImageGetter(context.getResources()));

htmlTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);

return htmlTextView;

}

}

15. XMLHelper.java

package com.dianakosareva.tutorialmetrology;

import org.w3c.dom.Document;

import org.xml.sax.InputSource;

import org.xml.sax.SAXException;

import java.io.IOException;

import java.io.StringReader;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.ParserConfigurationException;

public class XMLHelper {

private static DocumentBuilderFactory factory;

static {

factory = DocumentBuilderFactory.newInstance();

factory.setValidating(false);

factory.setIgnoringElementContentWhitespace(true);

}

public static Document getDocumentFromString(String xml) throws ParserConfigurationException, IOException, SAXException {

DocumentBuilder builder = factory.newDocumentBuilder();

InputSource inputSource = new InputSource(new StringReader(xml));

Document document = builder.parse(inputSource);

document.normalize();

return document;

}

}

16. activity_lection.xml

<?xml version="1.0" encoding="utf-8"?>

<ScrollView

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent">

<LinearLayout

android:id="@+id/lectionContent"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="vertical"/>

</ScrollView>

17. activity_lections.xml

<?xml version="1.0" encoding="utf-8"?>

<ScrollView

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".LectionsActivity">

<LinearLayout

android:id="@+id/lections"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="vertical"/>

</ScrollView>

18. activity_main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

<ImageView

android:id="@+id/imageView"

android:layout_width="match_parent"

android:layout_height="290dp"

app:srcCompat="@drawable/image_main"/>

<Button

android:id="@+id/buttonLections"

android:layout_width="match_parent"

android:layout_height="100dp"

android:text="@string/lections"

android:textSize="23sp"

android:textColor="#008577"

android:onClick="onClickLections" />

<Button

android:id="@+id/buttonsTests"

android:layout_width="match_parent"

android:layout_height="100dp"

android:text="@string/tests"

android:textSize="23sp"

android:textColor="#c42b49"

android:onClick="onClickTests" />

<Button

android:id="@+id/buttonResults"

android:layout_width="match_parent"

android:layout_height="100dp"

android:text="@string/results"

android:textSize="23sp"

android:onClick="onClickResults" />

</LinearLayout>

19. activity_results.xml

<?xml version="1.0" encoding="utf-8"?>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/resultTable"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:stretchColumns="0,*">

<LinearLayout

android:id="@+id/results"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_margin="5dp"

android:orientation="vertical" />

</ScrollView>

20. activity_test.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

<ScrollView

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginBottom="80dp">

<LinearLayout

android:id="@+id/test"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginBottom="80dp"

android:orientation="vertical" />

</ScrollView>

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:orientation="horizontal">

<Button

android:id="@+id/buttonPrevTask"

android:layout_width="wrap_content"

android:layout_height="80dp"

android:layout_weight="1"

android:onClick="prevOnClick"

android:text="@string/buttonPrev"

android:visibility="invisible" />

<Button

android:id="@+id/buttonNextTask"

android:layout_width="wrap_content"

android:layout_height="80dp"

android:layout_weight="1"

android:onClick="nextOnClick"

android:text="@string/buttonNext"

android:visibility="invisible" />

</LinearLayout>

</RelativeLayout>

21. activity_tests.xml

<?xml version="1.0" encoding="utf-8"?>

<ScrollView

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent">

<LinearLayout

android:id="@+id/tests"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="vertical"/>

</ScrollView>

22. strings.xml

<resources>

<string name="app_name">Метрология</string>

<string name="lections">Теория</string>

<string name="tests">Тестирование</string>

<string name="results">Результаты</string>

<string name="buttonNext">Вперёд</string>

<string name="buttonPrev">Назад</string>

</resources>

23. colors.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>

<color name="colorPrimary">#008577</color>

<color name="colorPrimaryDark">#00574B</color>

<color name="colorAccent">#D81B60</color>

</resources>

24. styles.xml

<resources>

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

<item name="colorPrimary">@color/colorPrimary</item>

<item name="colorPrimaryDark">@color/colorPrimaryDark</item>

<item name="colorAccent">@color/colorAccent</item>

</style>

</resources>

Размещено на Allbest.ru

...

Подобные документы

  • Общая характеристика и функциональное назначение проектируемого программного обеспечения, требования к нему. Разработка и описание интерфейса клиентской и серверной части. Описание алгоритма и программной реализации приложения. Схема базы данных.

    курсовая работа [35,4 K], добавлен 12.05.2013

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

    курсовая работа [1,1 M], добавлен 07.07.2013

  • Формирование требований пользователя к электронному учебнику. Подсистема вывода на экран сведений о программе. Алгоритм обработки данных выбора темы из предлагаемого списка учебного пособия. Работа с подсистемой "Курс лекций" и с системой тестирования.

    курсовая работа [151,0 K], добавлен 11.03.2013

  • Автоматизация промежуточного и финального контроля результатов обучения учащихся различных учебных заведений. Тестирование, основанное на диалоге вычислительной системы с пользователем. Реализация приложения генерации тестов из базы данных на языке РНР.

    курсовая работа [234,1 K], добавлен 04.08.2009

  • Мобильные операционные системы. Основные характеристики систем iOS и Android, их достоинства, недостатки и индивидуальные возможности. Анализ преимуществ лидирующих мобильных платформ для разработки приложения. Основные различия в механизмах безопасности.

    дипломная работа [806,5 K], добавлен 01.01.2018

  • Реализация приложения "Книжный магазин" средствами систем управления базами данных. Проектирование структуры базы данных, определение сущности и атрибутов. Логическое проектирование базы данных и реализация базы данных в СУБД Microsoft Office Access.

    курсовая работа [7,8 M], добавлен 13.02.2023

  • Анализ программного обеспечения Skype: оценка возможностей, сферы применения. Проектирование компонента: средства разработки, формирование пользовательского интерфейса и концептуальной модели данных. Реализация модулей. Диаграммы компонентов и классов.

    курсовая работа [1,4 M], добавлен 27.04.2012

  • Описание структуры обучающего блока. Проектирование его алгоритма и лингвистического и информационного обеспечения. Организация его взаимодействия с базой данных. Разработка графического интерфейса. Программная реализация основных функций приложения.

    дипломная работа [2,1 M], добавлен 20.12.2015

  • Проектирование программного модуля: сбор исходных материалов; описание входных и выходных данных; выбор программного обеспечения. Описание типов данных и реализация интерфейса программы. Тестирование программного модуля и разработка справочной системы.

    курсовая работа [81,7 K], добавлен 18.08.2014

  • Разработка клиент-серверного игрового приложения на примере игры в шашки для мобильных устройств на базе операционной системы Android. Обзор мобильных платформ. Экраны приложения и их взаимодействие. Графический интерфейс, руководство пользователя.

    курсовая работа [2,6 M], добавлен 15.06.2013

  • Обзор мобильной ОС Android. Выбор инструментов и технологий. Проектирование прототипа графического интерфейса. Характеристика и описание пользовательского интерфейса. Проектирование и разработка базы данных. Определение списка необходимых разрешений.

    курсовая работа [376,6 K], добавлен 13.09.2017

  • Рассмотрение инфологической и даталогической модели базы данных кинотеатров города. Разработка базы данных в программе MS Access. Описание структуры приложения и интерфейса пользователя. Изучение SQL-запросов на вывод информации о кинотеатре и о фильме.

    курсовая работа [1,1 M], добавлен 04.09.2014

  • Разработка игрового проекта на игровом движке Unity 3D в среде программирования MS Visual Studio 2017. Блок-схема алгоритма работы приема сообщений с сервера на клиенте с упрощенным описанием выполняемых команд. Реализация пользовательского интерфейса.

    курсовая работа [1,5 M], добавлен 10.07.2017

  • Рассмотрение игр, схожих по жанру и модели распространения с разрабатываемым приложением. Выбор среды разработки и сторонних библиотек. Проектирование интерфейса и подготовка графических материалов приложения. Особенности введения в игру микротрансакций.

    дипломная работа [3,1 M], добавлен 18.11.2017

  • Проектирование и отладка Windows-приложений для работы с внешними источниками данных. Функциональная блок-схема взаимодействия программных модулей. Описание связей между таблицами. Тестирование программного средства. Требования к техническому обеспечению.

    курсовая работа [2,7 M], добавлен 17.05.2011

  • Проектирование системы управления базами данных. Особенности реализации в MS SQL. Разработка пользовательского интерфейса. Тестирование и отладка приложения. Руководство пользователя и системного администратора. Анализ и методы разработки приложений.

    курсовая работа [867,9 K], добавлен 16.07.2013

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

    курсовая работа [641,7 K], добавлен 17.08.2013

  • Назначение программного модуля (базы данных). Разработка информационной базы данных для колледжа. Поиск пользователями информации о преподавателях и дисциплинах. Анализ входной и выходной информации. Разработка алгоритма работы программы-приложения.

    реферат [513,1 K], добавлен 22.10.2012

  • Разработка приложения для работы с базой данных с использованием объектно-ориентированного и визуального программирования. Обзор языка элементов языка программирования Delphi. Проектирование базы данных автозаправки. Клиентская система приложения.

    курсовая работа [2,3 M], добавлен 31.01.2016

  • Разработка алгоритма фильтрации данных, полученных с систем спутниковой навигации с помощью GNSS-модуля. Анализ работы фильтра Калмана, его программная реализация под конкретную задачу. Выбор навигационных модулей для получения данных позиционирования.

    дипломная работа [3,6 M], добавлен 12.01.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.