Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования





НазваниеРоссийской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования
страница10/11
Дата публикации23.11.2017
Размер0.74 Mb.
ТипДипломная работа
100-bal.ru > Информатика > Дипломная работа
1   2   3   4   5   6   7   8   9   10   11

ЗАКЛЮЧЕНИЕ


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

Следует отметить, что данный прототип нуждается в развитии. Перечислим некоторые идеи для дальнейшей доработки нашей системы:

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

  • Добавление возможности редактирования и сохранения информации о туристических объектах в базе данных.

  • Расширение базы данных туристических объектов.

  • Расширение файла связи адресов и географических координат.

  • Локализация программы на различные языки


ЛИТЕРАТУРА





  1. Ципилева Т.А. - Геоинформационные системы.

  2. http://www.dataplus.ru/ - ООО "ДАТА+" – распространение в России и других странах СНГ передовых геоинформационных технологий ESRI.

  3. http://www.trisoftrus.com/ - Научно-техническая фирма Трисофт

  4. http://www.objectland.ru/ - Геоинформационная система ObjectLand

  5. Голощапов А.Л. - Google Android. Программирование для мобильных устройств

  6. Reto Meier – Professional Android™ 2 Application development

  7. Rick Rogers, John Lombardo, Zigurd Mednieks, and Blake Meike - Android Application Development

  8. Chris Haseman – Android Essentials


ПРИЛОЖЕНИЕ


Файл AndroidManifest.xml

"1.0" encoding="utf-8"?>

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

package="com.touristmap" android:versionCode="1" android:versionName="1.0.">
"8" />
"@drawable/icon" android:label="@string/app_name">


".providers.ObjectViewProvider"

android:authorities="com.touristmap.ObjectViewProvider">

".providers.MuseamProvider"

android:authorities="com.touristmap.MuseamProvider">

".providers.ArhitectureProvider"

android:authorities="com.touristmap.ArhitectureProvider">

".providers.InterestProvider"

android:authorities="com.touristmap.InterestProvider">

".providers.TemplesProvider"

android:authorities="com.touristmap.TemplesProvider">

".providers.HostelProvider"

android:authorities="com.touristmap.HostelProvider">

"com.google.android.maps" />
".activities.MainActivity"

android:label="TouristMap MainMenu"

android:launchMode="singleTask">



"android.intent.action.MAIN" />

"android.intent.category.LAUNCHER" />




".activities.MapsActivity"

android:label="Map" />
".activities.ObjectsEditorActivity"

android:label="Objects">



".activities.TheatersViewActivity"

android:label="@string/title_view">



".activities.MuseamViewActivity"

android:label="@string/title_view">



".activities.ArhitectureViewActivity"

android:label="@string/title_view">



".activities.InterestViewActivity"

android:label="@string/title_view">



".activities.TemplesViewActivity"

android:label="@string/title_view">



".activities.HostelViewActivity"

android:label="@string/title_view">



".activities.ViewObjectOnMapActivity"

android:label="@string/title_view">





"android.permission.INTERNET" />

"android.permission.ACCESS_COARSE_LOCATION" />

"android.permission.ACCESS_FINE_LOCATION" />



Файл MainActivity.java

package com.touristmap.activities;

import com.touristmap.R;

import android.app.Activity;

import android.app.AlertDialog;

import android.content.Context;

import android.content.DialogInterface;

import android.content.Intent;

import android.location.LocationManager;

import android.os.Bundle;

import android.provider.Settings;

import android.view.View;

import android.widget.Button;
public class MainActivity extends Activity {
/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setMessage("GPS выключен")

.setCancelable(false)

.setPositiveButton("Настройки GPS", new DialogInterface.OnClickListener() {

public void onClick(final DialogInterface dialog, final int id) {

Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);

startActivityForResult(intent, 1);

}

})

.setNegativeButton("Отмена", new DialogInterface.OnClickListener() {

public void onClick(final DialogInterface dialog, final int id) {

finish();

}

});

final AlertDialog alert = builder.create();

alert.show();

}

final Button button_map = (Button) findViewById (R.id.button_map);

button_map.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent mapsActivity = new Intent(MainActivity.this,MapsActivity.class);

startActivity(mapsActivity);

}

});

final Button button_settings = (Button) findViewById (R.id.button_poi);

button_settings.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent objectsEditorActivity = new Intent(MainActivity.this,ObjectsEditorActivity.class);

startActivity(objectsEditorActivity);

}

});

final Button button_exit = (Button) findViewById (R.id.button_exit);

button_exit.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

finish();

}

});

}

}

Файл map.xml

"1.0" encoding="utf-8"?>


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

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">


android:id="@+id/mapView"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:enabled="true"

android:clickable="true"

android:apiKey="0GJi6BBZP0bHZdweHL03Lq1vTlpaVxMqpoZrqMQ"

/>




Файл MapsActivity.java

package com.touristmap.activities;

import android.net.Uri;

import android.os.Bundle;

import com.touristmap.DirectionPathOverlay;

import com.touristmap.HelloItemizedOverlay;

import com.touristmap.MyPositionOverlay;

import com.touristmap.ObjectDbHelper;

import com.touristmap.R;

import com.google.android.maps.GeoPoint;

import com.google.android.maps.MapActivity;

import com.google.android.maps.MapController;

import com.google.android.maps.MapView;

import com.google.android.maps.Overlay;

import com.google.android.maps.OverlayItem;

import com.touristmap.activities.MapsActivity;

import com.touristmap.providers.ArhitectureProvider;

import com.touristmap.providers.HostelProvider;

import com.touristmap.providers.InterestProvider;

import com.touristmap.providers.MuseamProvider;

import com.touristmap.providers.ObjectViewProvider;

import com.touristmap.providers.TemplesProvider;

import android.app.AlertDialog;

import android.app.Dialog;

import android.content.Context;

import android.content.DialogInterface;

import android.content.Intent;

import android.database.Cursor;

import android.graphics.drawable.Drawable;

import android.location.Address;

import android.location.Criteria;

import android.location.Geocoder;

import android.location.Location;

import android.location.LocationListener;

import android.location.LocationManager;

import android.view.LayoutInflater;

import android.view.Menu;

import android.view.MenuItem;

import android.view.MotionEvent;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.Toast;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.util.*;
public class MapsActivity extends MapActivity {

MapController mapController;

MyPositionOverlay positionOverlay;
private String[] street;

private int[] house;

private double[] lath;

private double[] lonh;

private int sizeSTR=-1;

private String streetIsc="ленина";

private int houseIsc = 47;

private double latIsc=0;

private double lonIsc=0;

public static final int IDM_SETTINGS = 101;

public static final int IDM_ADD_OBJ = 102;

public static final int IDM_ADD_ROUTE = 103;

public static final int IDM_PATH_TEST = 104;

public static final int IDM_SEARCH = 105;

public static final int IDM_EXIT = 106;

private final static int IDD_OBJECTS = 0;

private final static int IDD_ADD_TOURIST_ROUTE = 1;

private final static int IDD_COLLECT_ROUTE=2;

final CharSequence[] mObjects = { "Theaters", "Museams", "Monuments", "Interest Objects", "Temples", "Hostels" };

final boolean[] mCheckedObjItems = { false, false, false, false, false, false };

final boolean[] mCheckedPathItems = { false, false, false, false, false, false };

final CharSequence[] mRouteObj = { "Памятник первому паравозу", "гостиница Свердловск", "Усадьба Расторгуева-Харитонова", "Храм-на-крови", "Отель Вознесенский", "Галерея Эгида", "Коляда-театр", "Площадь Советской Армии", "Театр Музыкальной Комедии", "Гостиница Исеть", "Памятник “Первая конная”" };

final boolean[] mCheckedRouteObjItems = { false, false, false, false, false, false, false, false, false, false, false};

private static final String[] mCoord = new String[] { ObjectDbHelper._ID,

ObjectDbHelper.NAME, ObjectDbHelper.LAT, ObjectDbHelper.LON };

public static String NLAT = "nlat";

public static String NLNG = "nlng";

List mapOverlays;

HelloItemizedOverlay itemizedOverlay;

MapView myMapView;

double lat;

double lng;

private double[] latiC;

private double[] longC;

private String[] nameC;

Drawable theatres;

Drawable museams;

Drawable monuments;

Drawable interestObjects;

Drawable temples;

Drawable hostels;

String path = "/mnt/sdcard/OutCoord.txt";

String coord = "/mnt/sdcard/coord.txt";

String in = "/mnt/sdcard/in.txt";

String out = "/mnt/sdcard/out.txt";

String out_coord = "/mnt/sdcard/OutCoord.txt";

private int[][] A;

private int s, t;

private int size = -1;

int[] d;

private Stack st;

private Stack st1;

private int stackSize = 0;

public LinkedList l = new LinkedList();
/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.map);

myMapView = (MapView) findViewById(R.id.mapView);

mapController = myMapView.getController();

myMapView.setStreetView(true);

myMapView.setBuiltInZoomControls(true);

mapOverlays = myMapView.getOverlays();

mapController.setCenter(START_POINT);

mapController.setZoom(12);
// Добавляем маркер своего местоположения

positionOverlay = new MyPositionOverlay();

List overlays = myMapView.getOverlays();

overlays.add(positionOverlay);
theatres = getResources().getDrawable(R.drawable.h_theatre);

museams = getResources().getDrawable(R.drawable.h_museum);

monuments = getResources().getDrawable(R.drawable.h_memorial);

interestObjects = getResources().getDrawable(R.drawable.h_view_point);

temples = getResources().getDrawable(R.drawable.h_shelter);

hostels = getResources().getDrawable(R.drawable.h_hotel);
LocationManager locationManager;

String context = Context.LOCATION_SERVICE;

locationManager = (LocationManager) getSystemService(context);
Criteria criteria = new Criteria();

criteria.setAccuracy(Criteria.ACCURACY_FINE);

criteria.setAltitudeRequired(false);

criteria.setBearingRequired(false);

criteria.setCostAllowed(true);

criteria.setPowerRequirement(Criteria.POWER_LOW);

String provider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(provider);
updateWithNewLocation(location);
locationManager.requestLocationUpdates(provider, 1500, 3,

locationListener);
}
@Override

public boolean onCreateOptionsMenu(Menu menu) {

menu.add(Menu.NONE, IDM_SETTINGS, Menu.NONE, "POI")

.setAlphabeticShortcut('p');

menu.add(Menu.NONE, IDM_ADD_OBJ, Menu.NONE, "Add objects")

.setAlphabeticShortcut('a');

menu.add(Menu.NONE, IDM_ADD_ROUTE, Menu.NONE, "Route")

.setAlphabeticShortcut('r');

menu.add(Menu.NONE, IDM_SEARCH, Menu.NONE, "Search")

.setAlphabeticShortcut('s');

menu.add(Menu.NONE, IDM_EXIT, Menu.NONE, "Exit").setAlphabeticShortcut(

'x');

return (super.onCreateOptionsMenu(menu));

}
@Override

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case IDM_SETTINGS:

Intent objectsEditorActivity = new Intent(MapsActivity.this, ObjectsEditorActivity.class);

startActivity(objectsEditorActivity);

item.setChecked(true);

break;

case IDM_ADD_OBJ:

showDialog(IDD_OBJECTS);

item.setChecked(true);

break;

case IDM_SEARCH:

LayoutInflater inflater = LayoutInflater.from(this);

View root = inflater.inflate(R.layout.search_menu2, null);

final Button button_addr = (Button) root.findViewById(R.id.button_addr);

final Button button_coord = (Button) root.findViewById(R.id.button_coord);

button_addr.setText("Search by address");

button_coord.setText("Search by coordinates");

AlertDialog.Builder menu = new AlertDialog.Builder(this);

menu.setView(root);

menu.show();

button_addr.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

CallSearchAddressDialog();

};

});

button_coord.setOnClickListener(new OnClickListener() {
@Override

public void onClick(View v) {

CallSearchCoordDialog();

};
});

item.setChecked(true);

break;

case IDM_EXIT:

System.exit(0);

break;

default:

return false;

}
return true;

}
// Меню с чекбоксами для добавления групп объектов на карту

@Override

protected Dialog onCreateDialog(int id) {

switch (id) {

case IDD_OBJECTS:

AlertDialog.Builder builderObj = new AlertDialog.Builder(this);

builderObj.setTitle("Add group objects");

builderObj.setMultiChoiceItems(mObjects, mCheckedObjItems, new DialogInterface.OnMultiChoiceClickListener() {

@Override

public void onClick(DialogInterface dialog, int which, boolean isChecked) {

mCheckedObjItems[which] = isChecked;

}

});
builderObj.setPositiveButton("OK", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

if (!mapOverlays.isEmpty()) {

mapOverlays.clear();

} else {

if (mCheckedObjItems[0]) {

addGroup(ObjectViewProvider.CONTENT_URI, theatres);

}
if (mCheckedObjItems[1]) {

addGroup(MuseamProvider.CONTENT_URI, museams);

}

if (mCheckedObjItems[2]) {

addGroup(ArhitectureProvider.CONTENT_URI, monuments);

}

if (mCheckedObjItems[3]) {

addGroup(InterestProvider.CONTENT_URI, interestObjects);

}

if (mCheckedObjItems[4]) {

addGroup(TemplesProvider.CONTENT_URI, temples);

}

if (mCheckedObjItems[5]) {

addGroup(HostelProvider.CONTENT_URI, hostels);

}

}

}

});
builderObj.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

dialog.cancel();

Toast.makeText(getApplicationContext(), "Dialog cancel", Toast.LENGTH_SHORT).show();

}

});
builderObj.setCancelable(false);

return builderObj.create();

// Процедура Добавления группы объектов на карту

private void addGroup(Uri uri, Drawable drawable) {

Cursor cursor = managedQuery(uri, mCoord, "_ID", null, null);

int count = cursor.getCount();

latiC = new double[count];

longC = new double[count];

nameC = new String[count];

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

latiC[i] = -1;

longC[i] = -1;

nameC[i] = "";

}
for (int i = 0; i < count; i++) {

cursor.moveToPosition(i);

lat = Double.parseDouble(cursor.getString(2));

lng = Double.parseDouble(cursor.getString(3));

latiC[i] = lat;

longC[i] = lng;

nameC[i] = cursor.getString(1);

}

double nl, nlg;

itemizedOverlay = new HelloItemizedOverlay(this, drawable);
try {

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

nl = latiC[i];

nlg = longC[i];

String name = nameC[i];

isAddLocationPoint(nl, nlg, name);

}

} catch (NullPointerException e) {

e.printStackTrace();

}

}
// Процедура добавления точки на карту

public void isAddLocationPoint(double netlat, double netlng, String name) {
GeoPoint point = new GeoPoint((int) (netlat * 1E6),

(int) (netlng * 1E6));

String coord = "Широта: " + netlat + "\nДолгота: " + netlng;

// Создаем точку и текст появляющийся при нажатии

OverlayItem overlayitem = new OverlayItem(point, name, coord);

// Положение карты при запуске в точке point

mapController.animateTo(point);

mapController.setZoom(13);
// Добавляем точку на карту

itemizedOverlay.addOverlay(overlayitem);

mapOverlays.add(itemizedOverlay);
}
//Процедура поиска по адресу

private void CallSearchAddressDialog() {

LayoutInflater inflater = LayoutInflater.from(this);

View root = inflater.inflate(R.layout.search_address, null);

final EditText textStreet = (EditText)root.findViewById(R.id.street);

final EditText textHouse = (EditText)root.findViewById(R.id.house);
AlertDialog.Builder b = new AlertDialog.Builder(this);

b.setView(root);

b.setTitle("Search by address");

b.setPositiveButton(

"Ок", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int whichButton) {

String street = textStreet.getText().toString();

int house = Integer.parseInt(textHouse.getText().toString());

ReadInTxtSearch();

searchadress(street, house);

if (latIsc!=0 & lonIsc !=0 ){

String text = "Широта: " + latIsc + "\nДолгота: "

+ lonIsc;

Toast.makeText(getBaseContext(), text, Toast.LENGTH_SHORT).show();

itemizedOverlay = new HelloItemizedOverlay(null, getResources().getDrawable(R.drawable.androidmarker));

isAddLocationPoint(latIsc, lonIsc, "Искомая точка");

}

else {

String ErrMsg = "Адрес не найден!";

Toast.makeText(getBaseContext(), ErrMsg, Toast.LENGTH_SHORT).show();

}

}

});

b.setNegativeButton(

"Cancel", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int whichButton) {}

});

b.show();

}
//Процедура поиска по координатам

private void CallSearchCoordDialog() {

LayoutInflater inflater = LayoutInflater.from(this);

View root = inflater.inflate(R.layout.search_coord, null);

final EditText textLatitude = (EditText)root.findViewById(R.id.latitude);

final EditText textLongitude = (EditText)root.findViewById(R.id.longitude);

AlertDialog.Builder b = new AlertDialog.Builder(this);

b.setView(root);

b.setTitle("Search by coordinates");

b.setPositiveButton(

"Ок", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int whichButton) {

String sslat = textLatitude.getText().toString();

String sslon = textLongitude.getText().toString();

double slat = Double.parseDouble(sslat);

double slon = Double.parseDouble(sslon);

Drawable SearchCoord = getResources().getDrawable(R.drawable.androidmarker);

itemizedOverlay = new HelloItemizedOverlay( null, SearchCoord);

isAddLocationPoint (slat,slon,"искомая точка");
}

});

b.setNegativeButton(

"Cancel", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int whichButton) {}

});

b.show();

}

//Процедура считывания данных для поиска

private void ReadInTxtSearch()

{

try

{

BufferedReader ibr = new BufferedReader(

new InputStreamReader(

new FileInputStream("/mnt/sdcard/insearch.txt"),"windows-1251"));

String str;

Scanner scanner;

String[] vr;

sizeSTR=Integer.parseInt(ibr.readLine());

street = new String [sizeSTR];

house = new int [sizeSTR];

lath = new double [sizeSTR];

lonh = new double [sizeSTR];

vr = new String [4];

int a;

for(int i = 0; i
{

lath[i]=-1000;

lonh[i]=-1000;

street[i]=" ";

house[i]=-1;

}

for(int i = 0; i
{

for (int j=0;j<4;j++)

{

vr[j]="";

}

a=0;

str=ibr.readLine();

scanner = new Scanner(str);

while (scanner.hasNext())

{

vr[a]=scanner.next();

a=a+1;

}

street[i]=vr[0];

house[i]=Integer.parseInt(vr[1]);

lath[i]=Double.parseDouble(vr[2]);

lonh[i]=Double.parseDouble(vr[3]);

}

ibr.close();

}

catch(IOException ae){}

};


private void searchadress(String streetIsc, int houseIsc)

{

streetIsc = streetIsc.toLowerCase();

int fl=0, ch=0;

while ((fl==0) & (ch
{

if ((streetIsc.equals(street[ch])) & (houseIsc == house[ch]))

{

latIsc = lath[ch];

lonIsc = lonh[ch];

fl=1;

}

ch=ch+1;

}
}}
1   2   3   4   5   6   7   8   9   10   11

Похожие:

Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования iconПравила оформления дипломных работ Министерство образования и науки...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования iconПрограмма дисциплины «Сценарный трейдинг» Правительство Российской...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования iconМинистерство образования и науки российской федерации федеральное...
Государственное автономное образовательное учреждение дополнительного профессионального образования (повышения квалификации) специалистов...
Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования iconПравительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования iconПравительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования iconПравительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования iconПравительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования iconПравительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования iconПравительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования iconПравительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования iconПравительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования iconПравительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования iconПравительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования iconПравительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования iconПравительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования iconПравительство Российской Федерации Федеральное государственное автономное...
Федеральное государственное автономное образовательное учреждение высшего профессионального образования


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск