Разработка учебного пособия по метрологии на платформе Андроид
Метрология в учебной программе. Обзор платформ, мобильных приложений и операционных систем. Компьютерные средства обучения. Блок-схема алгоритма работы модуля лекций и тестов. Проектирование базы данных. Реализация интерфейса и компонентов приложения.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 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