|
||||
Государственное автономное профессиональное образовательное учреждениеГосударственное автономное профессиональное образовательное учреждение Стерлитамакский многопрофильный профессиональный колледж (ГАПОУ СМПК)
ОТЧЕТ ПО УЧЕБНОЙ ПРАКТИКЕ
по профессиональному модулю УП.02. МДК 01.03/01.04
Стерлитамак, 2020 г
СОДЕРЖАНИЕ
ЗАДАНИЕ 1. 3 ЗАДАНИЕ 2. 5 ЗАДАНИЕ 3. 6 ЗАДАНИЕ 4. 8 ЗАДАНИЕ 5. 9
ЗАДАНИЕ 1
Разработка технического задания для мобильного приложения «Записная книжка студента»: 1. Сбор и анализ информации, формулировка потребности клиента, выбор вида деятельности. 2. Оформление технического задания по шаблону согласно ГОСТ 19.201-78 или 34.602-89.
Разработано техническое задание для многооконного приложения по разработке анализ приложения «Записная книжка». Произведены сбор и формулировка потребности клиента, выбор вида деятельности. Оформление технического задания по шаблону согласно ГОСТ 19.201-78. Выполненное задание соответствует требованиям: техническое задание разработано в соответствии с ГОСТ 19.201-78.
ЗАДАНИЕ 2
Создание и разработка пользовательского интерфейса (UI) многооконного мобильного приложения «Записная книжка» в соответствии с техническим заданием: 1. Создание интерфейса в XML файле на главном активити. 2. Использование различных разметок при создании главного активити. 3. Определение расположения компонентов на активити. 4. Создание фона. 5. Создаем пустой проект, с указанием основных параметров (название проекта, вид активити, язык программирования). Далее подключаем библиотеки, потом создать классы и написать коды. После создать разметки, расположить элементы приложения и создать фон.
ЗАДАНИЕ 3
Создание и разработка пользовательского интерфейса (UI) многооконного мобильного приложения «Записная книжка» в соответствии с техническим заданием: 1. Создание интерфейса в XML файлах дочерних активити. 2. Определение расположения компонентов на активити. 3. Создание фона с использованием элементов стиля, изображений.
Были созданы интерфейсы в XML файлах дочерних активити. Настроены свойства компонентов разметки. Осуществлено эстетичное расположение стандартных элементов, назначение которых понятно пользователю. Определен фон и стиль приложения.
ЗАДАНИЕ 4
Разработка логики приложения. Наличие управляющих элементов: 1. На главном активити. 2. Перехода между активити. 3. На дочерних активити.
Были разработаны все стандартные элементы, кнопки: сохранение удаление и создание, поле для ввода текста заметки. В активити реализованы различные методы для взаимодействия элементов приложения между собой.
ЗАДАНИЕ 5
Реализация взаимодействия между активити: 1. Возможность перехода с главного активити к дочернему; 2. Создание и сохранение данных в активити; 3. Организации передачи данных между активити; 4. Возможность обратного перехода на главное активити.
Реализована возможность перехода между активностями, передача данных от дочернего активити к главной.
Activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:orientation="vertical" >
<Button android:id="@+id/btn_new" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/main_btn_new_task" />
<ListView android:id="@+id/view_task_list" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" > </ListView>
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" >
<ToggleButton android:id="@+id/btn_incomplete" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="@string/main_btn_show_incompleted" android:textOff="@string/main_btn_show_incompleted" android:textOn="@string/main_btn_show_incompleted" />
<ToggleButton android:id="@+id/btn_complete" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="@string/main_btn_show_completed" android:textOff="@string/main_btn_show_completed" android:textOn="@string/main_btn_show_completed" />
</LinearLayout>
</LinearLayout> Task.xml <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/checkedTextView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:checkMark="?android:attr/textCheckMark"> </CheckedTextView>
MainActivity.java
package com.SpisokDel.todo;
import com.bobboau.todo.TaskListAdapter.LIST_MODE;
import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.ToggleButton;
public class MainActivity extends Activity {
/** * адаптер для списка задач */ TaskListAdapter task_list_adapter;
/** * кнопки главно активити */ ToggleButton complete_button; ToggleButton incomplete_button;
/** * функция, которая настраивает пользовательский интерфейс */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // добавление прослушивателей к элементам активити
final Button add_new_button = (Button) findViewById(R.id.btn_new); complete_button = (ToggleButton) findViewById(R.id.btn_complete); incomplete_button = (ToggleButton) findViewById(R.id.btn_incomplete); final ListView task_list_view = (ListView) findViewById(R.id.view_task_list);
complete_button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { showComplete(); } });
incomplete_button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { showIncomplete(); } });
add_new_button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { addNew(); } });
//set up the listview and it's adapter task_list_adapter = new TaskListAdapter(this); task_list_view.setAdapter( task_list_adapter );
//показать задачу incomplete_button.setChecked(false); showIncomplete(); }
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; }
private void showComplete() { task_list_adapter.setMode(LIST_MODE.COMPLETE); complete_button.setChecked(true); incomplete_button.setChecked(false); }
private void showIncomplete() { task_list_adapter.setMode(LIST_MODE.INCOMPLETE); incomplete_button.setChecked(true); complete_button.setChecked(false); }
private void addNew() { //get the description from the user AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("New Task"); alert.setMessage("Введите текст задачи");
final EditText input = new EditText(this); input.setEnabled(true); alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { String description = input.getText().toString(); task_list_adapter.addTask(description); } });
alert.setNegativeButton("Cancel", null);
alert.show(); } }
TaskListAdapter.java
package com.bobboau.todo;
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InvalidClassException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.List;
import TaskList.TaskList; import android.content.Context; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.CheckedTextView;
/** * адаптер, который принимает список задач и позволяет просматривать его. */ public class TaskListAdapter extends BaseAdapter {
/** * файл список задач сериализуется в */ private static final String todo_list_file = "todo_list";
TaskList task_list;
/** * определяет, в каких возможных режимах мы могли бы находиться для показа задач */ public enum LIST_MODE {COMPLETE, INCOMPLETE};
/** * каков наш текущий режим */ LIST_MODE list_mode;
/** * ссылка на MainActivity */ private MainActivity activity;
/** * конструктор */ public TaskListAdapter(MainActivity a) { activity = a; deserializeTaskList(); list_mode = LIST_MODE.INCOMPLETE; notifyDataSetChanged(); }
/** * извлекает объект списка задач из файловой системы * @return TaskList */ private void deserializeTaskList() { task_list = null;
try { FileInputStream in_file = activity.openFileInput(todo_list_file); ObjectInputStream in_stream = new ObjectInputStream(in_file);
task_list = (TaskList)in_stream.readObject();
in_stream.close(); in_file.close(); } catch(FileNotFoundException e) { task_list = new TaskList(); } catch(InvalidClassException e) { //wrong serialization version activity.deleteFile(todo_list_file); task_list = new TaskList(); } catch(IOException i) { Log.e(TAG, "Error loading ToDo list. "+i.getLocalizedMessage()); } catch(ClassNotFoundException c) { Log.e(TAG, "Class TaskList not found. "+c.getLocalizedMessage()); } catch(Exception e) { Log.e(TAG, "Error loading ToDo list. "+e.getLocalizedMessage()); } }
/** * возвращает список задач обратно в поле */ private void serializeTaskList() { try { FileOutputStream out_file = activity.openFileOutput(todo_list_file, Context.MODE_PRIVATE); ObjectOutputStream out_stream = new ObjectOutputStream(out_file);
out_stream.writeObject(task_list);
out_stream.close(); out_file.close(); } catch(IOException i) { Log.e(TAG, "Error saving ToDo list. "+i.getLocalizedMessage()); } }
private List<Integer> getItems() { List<Integer> items = null;
switch(list_mode) { case COMPLETE: items = task_list.getCompleteTasks(); break;
case INCOMPLETE: items = task_list.getIncompleteTasks(); break; }
return items; }
/** * возвращает количество элементов в списке задач */ @Override public int getCount() { return getItems().size(); }
/** * получение элемента определяемого как индекс */ @Override public Object getItem(int idx) { return getItems().get(idx); }
@Override public long getItemId(int idx) { return getItems().get(idx); }
/** * создает то что видит пользователь */ @Override public View getView(int idx, View view, ViewGroup parent) { if(view == null) { LayoutInflater vi = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = vi.inflate(R.layout.task, null); }
final Integer handle = getItems().get(idx);
//event handler for clicking (on the checkbox) ((CheckedTextView)view).setOnClickListener( new View.OnClickListener() { public void onClick(View v) { ((CheckedTextView)v).toggle();
if(((CheckedTextView)v).isChecked()) { task_list.setComplete(handle); } else { task_list.setIncomplete(handle); } dataChanged(); } } );
((CheckedTextView)view).setText(task_list.getDescription(handle)); ((CheckedTextView)view).setChecked(task_list.isComplete(handle));
return view; }
/** * устанавливает режим просмотра * @param mode */ public void setMode(LIST_MODE mode) { list_mode = mode; notifyDataSetChanged(); }
/** * добавление задач */ public void addTask(String description) { task_list.addTask(description); dataChanged(); }
/** * действия при изменении данных */ private void dataChanged() { serializeTaskList(); notifyDataSetChanged(); } }
Task.java package TaskList;
/** * класс, который представляет собой то, что нужно сделать * */ public class Task implements java.io.Serializable { /** * используется для того, чтобы убедиться, что файл имеет ту же версию, что и *текущий загруженный класс */ private static final long serialVersionUID = 1L;
/** * опишите что требуется сделать */ private String description;
/** * сделано-ли это? */ private boolean completed;
/** * constructor * @param _description */ Task(String _description, boolean _completed) { description = _description; completed = _completed; }
/** * описание * @return String */ public String getDescription() { return description; }
/* * @return String */ public void setDescription(String _description) { description = _description; }
/** * проверка на выполнение задачи */ public boolean isComplete() { return completed; }
/** * пометить задачу как выполненную */ public void setComplete() { completed = true; }
/** * пометить задачу как не выполненную */ public void setIncomplete() { completed = false; } }
TaskList.java
package TaskList;
import java.util.ArrayList; import java.util.List;
/** * класс, который представляет собой список дел, которые нужно сделать * */ public class TaskList implements java.io.Serializable { private static final long serialVersionUID = 1L;
/** * то что нужно сделать *@var List<Task> */ ArrayList <Task> tasks;
/** * конструктор */ public TaskList() { tasks = new ArrayList<Task>(); }
/** * добавление задач в список * @param description * @return Integer -- дескриптор для добавления созданной задачи */ public Integer addTask(String description) { tasks.add( new Task(description, false) );
return tasks.size()-1; }
/** * возвращает список дескрипторов задач, удовлетворяющих переданным критериям * @param boolean completed -- если true, то получите только завершенные задачи, в противном случае получите только неполные задачи * return List<Integer> */ public List<Integer> get(boolean completed) { List<Integer> found = new ArrayList<Integer>(); for(Integer i = 0; i<tasks.size(); i++) { Task task = tasks.get(i); if(task.isComplete() == completed) { found.add(i); } } return found; }
/** * возвращает список дескрипторов задач, которые были завершены * @return List<Integer> */ public List<Integer> getCompleteTasks() { return get(true); }
/** * возвращает неполный список дескрипторов задач * @return List<Integer> */ public List<Integer> getIncompleteTasks() { return get(false); }
/** * завершена ли задача, определяемая переданным дескриптором * @param Integer handle * @return boolean */ public boolean isComplete(Integer handel) { return tasks.get(handel).isComplete(); }
/** * возвращает описание задачи, идентифицированной переданным дескриптором * @param Integer handle * @return String */ public String getDescription(Integer handel) { return tasks.get(handel).getDescription(); }
/** * @param Integer handle * @return String */ public void setDescription(Integer handel, String description) { tasks.get(handel).setDescription(description); }
/** * устанавливает задачу, идентифицированную переданным дескриптором, как завершенную * @param Integer handle */ public void setComplete(Integer handel) { tasks.get(handel).setComplete(); }
/** * устанавливает задачу, идентифицированную переданным дескриптором, как не завершенную * @param Integer handle */ public void setIncomplete(Integer handel) { tasks.get(handel).setIncomplete(); } }
|
||||
|