Лобзин ДП-шаблон. Дипломный проект тема Пояснительная записка дп. 09. 02. 07. 41. 25. 2022 01 пз
Скачать 4.88 Mb.
|
ЗАКЛЮЧЕНИЕЦелью дипломного проекта являлась разработка программы для записи на курсы в ДТУЦ «ТемоЦентр». Был проведен подробный анализ предметной области. Описаны причины необходимости проектировании архитектуры проекта, построен макет приложения, также были описаны принципы работы приложения и его функционала. Помимо прочего, прописана минимальная требования к версии android для установки. Были выбраны средства реализации – а именно для создания была выбрана среда разработки Android Studio, и язык программирования Java, из-за легкости в освоении. В итоге, был получен конечный продукт, для которого составлена подробная инструкция пользователя, описывающая основной функционал программы. Программа является мобильной и при необходимости, может быть модернизирована. Также, проект является мало затратным, что несомненно, является положительным показателем. СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВИспользуемая литература: Жемеров Дмитрий «Kotlin в действии». Количество страниц: 402, 2017г. Брайан Харди, Билл Филлипс,Крис Стюарт, Кристин Марсикано. Программирование под Android. 2-е издание. Количество страниц: 640, 2016г. «Ководство» Артемия Лебедева. 4-е издание, исправленное и дополненное. Количество страниц: 536, 2014г. Гриффитс Д., Гриффитс Д., Head First программирование для Android – Питер 2016 Интернет источники: https://developer.android.com/studio/intro/ (Описание работы интерфейса в среде программирования Android Studio) https://developer.android.com/studio/install (Установка Android Studio) https://kotlinlang.org/ (Все про язык программирования) https://developer.android.com/studio/intro/keyboard-shortcuts (Описание горячих клавиш) https://developer.android.com/studio/projects/ (Управление проектом Android Studio) http://java-help.ru/ (Сайт для разработчиков приложений под Android) http://developer.alexanderklimov.ru/android/java/class.php (Классы и объекты) https://ru.stackoverflow.com/questions/672033/Визуализация-классов-java-в-android-studio (Визуализация классов Java в Android Studio) https://ru.wikipedia.org/wiki/Android (ОС Android) https://ru.wikipedia.org/wiki/IOS (ОС IOS) https://ru.wikipedia.org/wiki/Windows_10_Mobile (ОС Windows_Phone) https://ru.wikipedia.org/wiki/Android_Studio (Информация про среду разработки Android Studio) https://ru.wikipedia.org/wiki/IntelliJ_IDEA (Информация про среду разработки Java) https://ru.wikipedia.org/wiki/C_Sharp (Информация об языке программирования С#) https://ru.wikipedia.org/wiki/Kotlin (Информация об языке программирования Kotlin) https://ru.wikipedia.org/wiki/Java (Информация об языке программирования Java) ПРИЛОЖЕНИЕ 1Текст программы package com.example.kursi import android.content.Intent import android.net.Uri import android.os.Bundle import android.support.design.widget.FloatingActionButton import android.support.design.widget.Snackbar import android.support.v4.view.GravityCompat import android.support.v7.app.ActionBarDrawerToggle import android.view.MenuItem import android.support.v4.widget.DrawerLayout import android.support.design.widget.NavigationView import android.support.v7.app.AppCompatActivity import android.support.v7.widget.Toolbar import android.view.Menu import android.view.View import android.widget.AdapterView import android.widget.ArrayAdapter import android.widget.ListView import android.widget.Toast import kotlinx.android.synthetic.main.content_activity__budget.* class Activity_Budget : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener { private var listItems = ArrayList override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity__budget) val toolbar: Toolbar = findViewById(R.id.toolbar) setSupportActionBar(toolbar) val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout) val navView: NavigationView = findViewById(R.id.nav_view) val toggle = ActionBarDrawerToggle( this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) drawerLayout.addDrawerListener(toggle) toggle.syncState() navView.setNavigationItemSelectedListener(this) var lv: ListView = findViewById(R.id.list_view_budget) val strings = arrayOf("ШКОЛА ДЕТСКОГО ТЕЛЕВИДЕНИЯ","ШКОЛА ЮНОГО ПРОГРАММИСТА","ТЕХНИЧЕСКОЕ ТВОРЧЕСТВО","МУЗЫКАЛЬНОЕ И ХОРОВОЕ ТВОРЧЕСТВО", "ТЕАТРАЛЬНОЕ ТВОРЧЕСТВО","ТАНЦЕВАЛЬНОЕ ТВОРЧЕСТВО","ХУДОЖЕСТВЕННОЕ И ДЕКОРАТИВНОЕ ТВОРЧЕСТВО") lv.adapter = ArrayAdapter lv.onItemClickListener = object : AdapterView.OnItemClickListener { override fun onItemClick(parent: AdapterView<*>, view: View, position: Int, id: Long) { when(position) { 0 -> { val oneActivity = Intent(this@Activity_Budget, itemOneActivity::class.java) startActivity(oneActivity) } 1 -> { val oneActivity = Intent(this@Activity_Budget, itemTwoActivity::class.java) startActivity(oneActivity) } 2 -> { val oneActivity = Intent(this@Activity_Budget, itemThreeActivity::class.java) startActivity(oneActivity) } 3 -> { val oneActivity = Intent(this@Activity_Budget, itemFourActivity::class.java) startActivity(oneActivity) } 4 -> { val oneActivity = Intent(this@Activity_Budget, itemFiveActivity::class.java) startActivity(oneActivity) } 5 -> { val oneActivity = Intent(this@Activity_Budget, itemSixActivity::class.java) startActivity(oneActivity) } 6 -> { val oneActivity = Intent(this@Activity_Budget, itemSevenActivity::class.java) startActivity(oneActivity) } else -> { } } } } } override fun onBackPressed() { val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout) if (drawerLayout.isDrawerOpen(GravityCompat.START)) { drawerLayout.closeDrawer(GravityCompat.START) } else { super.onBackPressed() } } override fun onCreateOptionsMenu(menu: Menu): Boolean { // Inflate the menu; this adds items to the action bar if it is present. menuInflater.inflate(R.menu.activity__budget, menu) return true } override fun onOptionsItemSelected(item: MenuItem): Boolean { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. return when (item.itemId) { R.id.action_settings -> true else -> super.onOptionsItemSelected(item) } } override fun onNavigationItemSelected(item: MenuItem): Boolean { // Handle navigation view item clicks here. when (item.itemId) { R.id.glavnaya -> { val main = Intent(this, MainActivity::class.java) startActivity(main) } R.id.budget -> { val budget = Intent(this, Activity_Budget::class.java) startActivity(budget) } R.id.no_budget -> { val nobudget = Intent(this, ActivityNoBudget::class.java) startActivity(nobudget) } R.id.my_signs -> { val budget = Intent(this, MySigns::class.java) startActivity(budget) } R.id.phone -> { val phone = Intent(Intent.ACTION_DIAL, Uri.parse("tel:+74953907566")) startActivity(phone) } R.id.email -> { val emailIntent = Intent( Intent.ACTION_SENDTO, Uri.fromParts( "mailto", "tv@edu.mos.ru", null ) ) emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject") emailIntent.putExtra(Intent.EXTRA_TEXT, "Body") startActivity(Intent.createChooser(emailIntent, "Send email...")) } R.id.map -> { val map = Intent(Intent.ACTION_VIEW, Uri.parse("https://yandex.ru/maps/-/CCG-eSIR")) startActivity(map) } } val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout) drawerLayout.closeDrawer(GravityCompat.START) return true } } package com.example.kursi import android.content.Intent import android.net.Uri import android.os.Bundle import android.support.design.widget.FloatingActionButton import android.support.design.widget.Snackbar import android.support.v4.view.GravityCompat import android.support.v7.app.ActionBarDrawerToggle import android.view.MenuItem import android.support.v4.widget.DrawerLayout import android.support.design.widget.NavigationView import android.support.v7.app.AppCompatActivity import android.support.v7.widget.Toolbar import android.view.Menu import android.view.View import android.widget.AdapterView import android.widget.ArrayAdapter import android.widget.ListView import android.widget.Toast import kotlinx.android.synthetic.main.content_activity__budget.* class Activity_Budget : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener { private var listItems = ArrayList override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity__budget) val toolbar: Toolbar = findViewById(R.id.toolbar) setSupportActionBar(toolbar) val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout) val navView: NavigationView = findViewById(R.id.nav_view) val toggle = ActionBarDrawerToggle( this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) drawerLayout.addDrawerListener(toggle) toggle.syncState() navView.setNavigationItemSelectedListener(this) var lv: ListView = findViewById(R.id.list_view_budget) val strings = arrayOf("ШКОЛА ДЕТСКОГО ТЕЛЕВИДЕНИЯ","ШКОЛА ЮНОГО ПРОГРАММИСТА","ТЕХНИЧЕСКОЕ ТВОРЧЕСТВО","МУЗЫКАЛЬНОЕ И ХОРОВОЕ ТВОРЧЕСТВО", "ТЕАТРАЛЬНОЕ ТВОРЧЕСТВО","ТАНЦЕВАЛЬНОЕ ТВОРЧЕСТВО","ХУДОЖЕСТВЕННОЕ И ДЕКОРАТИВНОЕ ТВОРЧЕСТВО") lv.adapter = ArrayAdapter lv.onItemClickListener = object : AdapterView.OnItemClickListener { override fun onItemClick(parent: AdapterView<*>, view: View, position: Int, id: Long) { when(position) { 0 -> { val oneActivity = Intent(this@Activity_Budget, itemOneActivity::class.java) startActivity(oneActivity) } 1 -> { val oneActivity = Intent(this@Activity_Budget, itemTwoActivity::class.java) startActivity(oneActivity) } 2 -> { val oneActivity = Intent(this@Activity_Budget, itemThreeActivity::class.java) startActivity(oneActivity) } 3 -> { val oneActivity = Intent(this@Activity_Budget, itemFourActivity::class.java) startActivity(oneActivity) } 4 -> { val oneActivity = Intent(this@Activity_Budget, itemFiveActivity::class.java) startActivity(oneActivity) } 5 -> { val oneActivity = Intent(this@Activity_Budget, itemSixActivity::class.java) startActivity(oneActivity) } 6 -> { val oneActivity = Intent(this@Activity_Budget, itemSevenActivity::class.java) startActivity(oneActivity) } else -> { } } } } } override fun onBackPressed() { val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout) if (drawerLayout.isDrawerOpen(GravityCompat.START)) { drawerLayout.closeDrawer(GravityCompat.START) } else { super.onBackPressed() } } override fun onCreateOptionsMenu(menu: Menu): Boolean { // Inflate the menu; this adds items to the action bar if it is present. menuInflater.inflate(R.menu.activity__budget, menu) return true } override fun onOptionsItemSelected(item: MenuItem): Boolean { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. return when (item.itemId) { R.id.action_settings -> true else -> super.onOptionsItemSelected(item) } } override fun onNavigationItemSelected(item: MenuItem): Boolean { // Handle navigation view item clicks here. when (item.itemId) { R.id.glavnaya -> { val main = Intent(this, MainActivity::class.java) startActivity(main) } R.id.budget -> { val budget = Intent(this, Activity_Budget::class.java) startActivity(budget) } R.id.no_budget -> { val nobudget = Intent(this, ActivityNoBudget::class.java) startActivity(nobudget) } R.id.my_signs -> { val budget = Intent(this, MySigns::class.java) startActivity(budget) } R.id.phone -> { val phone = Intent(Intent.ACTION_DIAL, Uri.parse("tel:+74953907566")) startActivity(phone) } R.id.email -> { val emailIntent = Intent( Intent.ACTION_SENDTO, Uri.fromParts( "mailto", "tv@edu.mos.ru", null ) ) emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject") emailIntent.putExtra(Intent.EXTRA_TEXT, "Body") startActivity(Intent.createChooser(emailIntent, "Send email...")) } R.id.map -> { val map = Intent(Intent.ACTION_VIEW, Uri.parse("https://yandex.ru/maps/-/CCG-eSIR")) startActivity(map) } } val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout) drawerLayout.closeDrawer(GravityCompat.START) return true } } package com.example.kursi class item { var id: Int? = null var title: String? = null constructor(id: Int, title: String) { this.id = id this.title = title } } package com.example.kursi import android.os.Bundle import android.support.v7.app.AppCompatActivity; import kotlinx.android.synthetic.main.activity_item_five.* class itemFiveActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_item_five) setSupportActionBar(toolbar) } } package com.example.kursi import android.os.Bundle import android.support.v7.app.AppCompatActivity; import kotlinx.android.synthetic.main.activity_item_four.* class itemFourActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_item_four) setSupportActionBar(toolbar) } } package com.example.kursi import android.content.Intent import android.os.Bundle import android.support.v7.app.AppCompatActivity; import android.view.View import android.widget.AdapterView import android.widget.ArrayAdapter import android.widget.ListView import kotlinx.android.synthetic.main.activity_item_one.* class itemOneActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_item_one) setSupportActionBar(toolbar) var lv: ListView = findViewById(R.id.list_budget_one) val strings = arrayOf("Cценическая речь".toUpperCase(), "Творческое объединение \"Кадр: тележурналистика\"".toUpperCase(), "Тележурналистика".toUpperCase(), "Режиссура телевидения".toUpperCase(), "Видеомонтаж".toUpperCase(), "Операторское мастерство".toUpperCase(), "Основы телережиссуры".toUpperCase(), "Основы журналистики".toUpperCase(), "Школа мультимедийной журналистики \"МедиаСтарт\"".toUpperCase(), "Юный телеоператор".toUpperCase()) lv.adapter = ArrayAdapter lv.onItemClickListener = object : AdapterView.OnItemClickListener { override fun onItemClick(parent: AdapterView<*>, view: View, position: Int, id: Long) { when(position) { 0 -> { val oneActivity = Intent(this@itemOneActivity, itemTwoActivity::class.java) startActivity(oneActivity) } 1 -> { val oneActivity = Intent(this@itemOneActivity, itemTwoActivity::class.java) startActivity(oneActivity) } 2 -> { val oneActivity = Intent(this@itemOneActivity, itemThreeActivity::class.java) startActivity(oneActivity) } 3 -> { val oneActivity = Intent(this@itemOneActivity, itemFourActivity::class.java) startActivity(oneActivity) } 4 -> { val oneActivity = Intent(this@itemOneActivity, itemFiveActivity::class.java) startActivity(oneActivity) } 5 -> { val oneActivity = Intent(this@itemOneActivity, itemSixActivity::class.java) startActivity(oneActivity) } 6 -> { val oneActivity = Intent(this@itemOneActivity, itemSevenActivity::class.java) startActivity(oneActivity) } else -> { } } } } } } package com.example.kursi import android.os.Bundle import android.support.v7.app.AppCompatActivity; import kotlinx.android.synthetic.main.activity_item_seven.* class itemSevenActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_item_seven) setSupportActionBar(toolbar) } } package com.example.kursi import android.os.Bundle import android.support.v7.app.AppCompatActivity; import kotlinx.android.synthetic.main.activity_item_six.* class itemSixActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_item_six) setSupportActionBar(toolbar) } } package com.example.kursi import android.os.Bundle import android.support.v7.app.AppCompatActivity; import kotlinx.android.synthetic.main.activity_item_three.* class itemThreeActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_item_three) setSupportActionBar(toolbar) } } package com.example.kursi import android.content.Intent import android.os.Bundle import android.support.v7.app.AppCompatActivity; import kotlinx.android.synthetic.main.activity_item_two.* import kotlinx.android.synthetic.main.content_item_two.* import android.content.DialogInterface import android.support.v7.app.AlertDialog class itemTwoActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_item_two) setSupportActionBar(toolbar) val oneActivity = Intent(this, MySigns::class.java) val twoActivity = Intent(this, MainActivity::class.java) val builder = AlertDialog.Builder(this) builder.setMessage("Хотите открыть страницу ваших курсов?") .setCancelable(false) .setPositiveButton("Да", DialogInterface.OnClickListener { dialog, id -> startActivity(oneActivity) }) .setNegativeButton("Нет", DialogInterface.OnClickListener { dialog, id -> startActivity(twoActivity) }) .setTitle("Вы успешно записались!") } } package com.example.kursi import android.os.Bundle import android.support.v7.app.AppCompatActivity; import kotlinx.android.synthetic.main.activity_item_two_one.* class itemTwoOneActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_item_two_one) setSupportActionBar(toolbar) } } package com.example.kursi import android.os.Bundle import android.support.v7.app.AppCompatActivity; import kotlinx.android.synthetic.main.activity_item_two_two.* class itemTwoTwoActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_item_two_two) setSupportActionBar(toolbar) } } package com.example.kursi import android.content.Intent import android.net.Uri import android.os.Bundle import android.support.v4.view.GravityCompat import android.support.v7.app.ActionBarDrawerToggle import android.view.MenuItem import android.support.v4.widget.DrawerLayout import android.support.design.widget.NavigationView import android.support.v7.app.AppCompatActivity import android.support.v7.widget.Toolbar import android.view.Menu import android.widget.Toast class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val toolbar: Toolbar = findViewById(R.id.toolbar) setSupportActionBar(toolbar) val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout) val navView: NavigationView = findViewById(R.id.nav_view) val toggle = ActionBarDrawerToggle( this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close ) drawerLayout.addDrawerListener(toggle) toggle.syncState() navView.setNavigationItemSelectedListener(this) Toast.makeText(this, "Добро пожаловать, Вадим Грищенко!", Toast.LENGTH_LONG).show() } override fun onBackPressed() { val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout) if (drawerLayout.isDrawerOpen(GravityCompat.START)) { drawerLayout.closeDrawer(GravityCompat.START) } else { super.onBackPressed() } } override fun onCreateOptionsMenu(menu: Menu): Boolean { // Inflate the menu; this adds items to the action bar if it is present. menuInflater.inflate(R.menu.main, menu) return true } override fun onOptionsItemSelected(item: MenuItem): Boolean { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. return when (item.itemId) { R.id.action_settings -> true else -> super.onOptionsItemSelected(item) } } override fun onNavigationItemSelected(item: MenuItem): Boolean { // Handle navigation view item clicks here. when (item.itemId) { R.id.glavnaya -> { val main = Intent(this, MainActivity::class.java) startActivity(main) } R.id.budget -> { val budget = Intent(this, Activity_Budget::class.java) startActivity(budget) } R.id.no_budget -> { val nobudget = Intent(this, ActivityNoBudget::class.java) startActivity(nobudget) } R.id.my_signs -> { val budget = Intent(this, MySigns::class.java) startActivity(budget) } R.id.phone -> { val phone = Intent(Intent.ACTION_DIAL, Uri.parse("tel:+74953907566")) startActivity(phone) } R.id.email -> { val emailIntent = Intent( Intent.ACTION_SENDTO, Uri.fromParts( "mailto", "tv@edu.mos.ru", null ) ) emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject") emailIntent.putExtra(Intent.EXTRA_TEXT, "Body") startActivity(Intent.createChooser(emailIntent, "Send email...")) } R.id.map -> { val map = Intent(Intent.ACTION_VIEW, Uri.parse("https://yandex.ru/maps/-/CCG-eSIR")) startActivity(map) } } val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout) drawerLayout.closeDrawer(GravityCompat.START) return true } } package com.example.kursi import android.content.Intent import android.os.Bundle import android.support.v7.app.AppCompatActivity; import kotlinx.android.synthetic.main.activity_my_signs.* import kotlinx.android.synthetic.main.content_my_signs.* class MySigns : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_my_signs) setSupportActionBar(toolbar) button_zapis.setOnClickListener({ val oneActivity = Intent(this@MySigns, itemOneActivity::class.java) startActivity(oneActivity) }) } } ПРИЛОЖЕНИЕ 2Образцы результатов выполнения программы Экран входа в приложение: Главный экран приложения: Боковое меню с контактами и выбором категории обучения: Лист с направлениями бесплатных курсов: Лист с направлениями платных курсов: Окно записи на выбранный курс: Звонок оператору ДТУЦ: Курсы на которые произведена запись: |