Диплом, курсовая, контрольная работа
Помощь в написании студенческих работ

Создание калькулятора с переходом в строковый калькулятор

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Полиморфизм — это явление, при котором функции (методу) с одним и тем же именем соответствует разный программный код в зависимости от того, объект какого класса используется при вызове данного метода. Полиморфизм обеспечивается тем, что в классе-потомке изменяют реализацию метода класса-предка с обязательным сохранением сигнатуры метода. Это обеспечивает сохранить неизменным интерфейс… Читать ещё >

Создание калькулятора с переходом в строковый калькулятор (реферат, курсовая, диплом, контрольная)

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ, РАДИОТЕХНИКИ И ЭЛЕКТРОНИКИ»

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА к курсовой работе на тему:

Создание калькулятора с переходом в строковый калькулятор Дисциплина Разработка программных приложений Студент Семушкин Антон Юрьевич Руководитель проекта Мирюков А.А.

Можайск 2015 г.

ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ

1. Тема: Создание калькулятора с переходом в строковый калькулятор

2. Срок представления проекта к защите «» 2015 г.

3. Исходные данные для разработки Методическая характеристика проблемы излагается студентом с использованием современной научно-практической литературы. Практическая часть работы раскрывается с использованием фактических материалов.

4. Содержание пояснительной записки:

Титульный лист (пояснительная записка к курсовой работе) Задание (на курсовую работу) Содержание Введение Описание предметной области Теоретический раздел Концепция объектно-ориентированного програмирования Основные понятия ООП Язык программирования Java

Программный раздел Листинг программы «Калькулятор»

Листинг программы «Строковый калькулятор»

Экспериментальный раздел Тестирование программы Оценка результатов тестирования

Заключение

Список использованных источников Приложение Руководитель проекта МирюковА.А.

СОДЕРЖАНИЕ Введение Описание предметной области

1. Теоретический раздел

1.1 Концепция объектно-ориентированного программирования

1.2 Основные понятия ООП

1.3 Язык программирования Java

2. Программный раздел

2.1 Листинг программы «Калькулятор»

2.2 Листинг программы «Строковый калькулятор»

3. Экспериментальный раздел

3.1 Тестирование программы

3.2 Оценка результатов тестирования Заключение Список используемой литературы Приложение

ВВЕДЕНИЕ

Данный курсовой проект посвящен изучению объектно-ориентированного языка Java.

Практической целью проекта является разработка приложения «Калькулятор с переходом в строковый калькулятор» с применением объектно-ориентированного программирования. Для решения поставленной задачи были использованы стандартные библиотеки языка Java.

Для достижения поставленной цели необходимо решить следующие задачи:

Изучить теоретический материал, связанный с языком Java;

На основе изученного материала написать приложение;

Протестировать приложение.

Выполнение данных задач позволит создать приложение «Калькулятор».

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

ОПИСАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ Программа реализована в среде программирования NetBeansIDE 8.0.2.

Калькулятор должен содержать основные функции: сложение, вычитание, умножение, деление, плюс дополнительная индивидуальная функция «» и должна быть реализована кнопка с переходом в строковый калькулятор, считывающий количество чисел, символов, слов.

1. ТЕОРЕТИЧЕСКИЙ РАЗДЕЛ

1.1 Концепция объектно-ориентированного программирования Объектно-ориентированное программирование (ООП) представляет собой одну из парадигм программирования, т. е. это совокупность идей и понятий, определяющих стиль написания программ. Основной концепцией ООП является понятия объекта и класса.

Класс — это тип, описывающий устройство объектов. Понятие «класс» подразумевает некоторое поведение и способ представления. Класс является описываемой на языке терминологии исходного кода моделью ещё не существующей сущности, т. н. объекта.

Объект— сущность в адресном пространстве вычислительной системы, появляющаяся при создании экземпляра класса (например, после запуска результатов компиляции (и линковки) исходного кода на выполнение).

Понятие «объект» подразумевает нечто, что обладает определённым поведением и способом представления. Говорят, что объект— это экземпляр класса. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области.

1.2 Основные понятия ООП Абстракция — это придание объекту характеристик, которые отличают его от всех других объектов, четко определяя его концептуальные границы. Идея состоит в том, чтобы отделить способ использования составных объектов данных от деталей их реализации в виде более простых объектов. Таким образом, данные обрабатываются функцией высокого уровня с помощью вызова функций низкого уровня.

Такой подход является основой объектно-ориентированного программирования. Это позволяет работать с объектами, не вдаваясь в особенности их реализации. В каждом конкретном случае применяется тот или иной подход: инкапсуляция, полиморфизм или наследование Инкапсуляция — принцип, согласно которому любой класс должен рассматриваться как чёрный ящик — пользователь класса должен видеть и использовать только интерфейсную часть классаи не вникать в его внутреннюю реализацию. Данные инкапсулировать в классе таким образом, чтобы доступ к ним по чтению или записи осуществлялся не напрямую, а с помощью методов. Принцип инкапсуляции позволяет минимизировать число связей между классами и, соответственно, упростить независимую реализацию и модификацию классов.

Сокрытие данных — часть ООП, управляющая областями видимости. Является логическим продолжением инкапсуляции. Целью сокрытия является невозможность для пользователя узнать или испортить внутреннее состояние объекта.

Наследование — это возможность порождать один класс от другого с сохранением всех свойств и методов класса-предкаи добавляя, при необходимости, новые свойства и методы. Набор классов, связанных отношением наследования, называют иерархией. Наследование призвано отобразить такое свойство реального мира, как иерархичность.

Полиморфизм — это явление, при котором функции (методу) с одним и тем же именем соответствует разный программный код в зависимости от того, объект какого класса используется при вызове данного метода. Полиморфизм обеспечивается тем, что в классе-потомке изменяют реализацию метода класса-предка с обязательным сохранением сигнатуры метода. Это обеспечивает сохранить неизменным интерфейс класса-предка, позволяет осуществить связывание имени метода в коде с разными классами.

1.3 Язык программирования Java

Java— объектно-ориентированный язык программирования, разработанный компанией SunMicrosystems (в последующем приобретённой компанией Oracle). Приложения Java обычно транслируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине вне зависимости от компьютерной архитектуры. Дата официального выпуска — 23 мая 1995 года.

Основные особенности:

Программы на Java транслируются в байт-код, выполняемый виртуальной машиной Java (JVM) — программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.

Достоинством подобного способа выполнения программ является полная независимость байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности, в рамках которой исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером), вызывают немедленное прерывание.

Часто к недостаткам концепции виртуальной машины относят снижение производительности. Ряд усовершенствований несколько увеличил скорость выполнения программ на Java:

применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде, широкое использование платформенно-ориентированного кода (native-код) в стандартных библиотеках, аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM).

Основные возможности:

автоматическое управление памятью;

расширенные возможности обработки исключительных ситуаций;

богатый набор средств фильтрации ввода/вывода;

набор стандартных коллекций, таких как массив, список, стек и т. п.;

наличие простых средств создания сетевых приложений (в том числе с использованием протоколаRMI);

наличие классов, позволяющих выполнять HTTP-запросы и обрабатывать ответы;

встроенные в язык средства создания многопоточных приложений;

унифицированный доступ к базам данных:

на уровне отдельных SQL-запросов — на основе JDBC, SQLJ;

на уровне концепции объектов, обладающих способностью к хранению в базе данных — на основе JavaDataObjects (англ.) и JavaPersistence API (англ.);

поддержка шаблонов (начиная с версии 1.5);

параллельное выполнение программ.

Классификация платформ Java:

Внутри Java существуют несколько основных семейств технологий:

J2EE или Java EE (начиная с v1.5) — JavaEnterpriseEdition, для создания программного обеспечения уровня предприятия;

J2SE или Java SE (начиная с v1.5) — JavaStandardEdition, для создания пользовательских приложений, в первую очередь — для настольных систем;

J2ME, Java ME или JavaMicroEdition, для использования в устройствах, ограниченных по вычислительной мощности, в том числе мобильных телефонах, КПК, встроенных системах;

JavaCard для использования в устройствах без собственного человекомашинного интерфейса, например в смарт-картах.

2. ПРОГРАММНЫЙ РАЗДЕЛ

2.1 Листинг программы «Калькулятор»

См. приложение 1.

2.2 Листинг программы «Строковый калькулятор»

См. приложение 2.

3. ЭКСПЕРЕМЕНТАЛЬНЫЙ РАЗДЕЛ калькулятор строковый программирование

3.1 Тестирование приложения Тестирование приложения «Калькулятор» производилось путем проверки выполнения простых расчетов. Приложение работает без каких-либо сбоев. Все необходимые операции выполняются верно.

Рисунок 1. Начальный экран Рисунок 2. Тестирование функции вычитания Рисунок 3. Тестирование функции сложения Рисунок 4. Тестирование функции умножения Рисунок 5. Тестирование функции деления Рисунок 6. Тестирование индивидуальной функции

Рисунок 7. Тестирование индивидуальной функции

Рисунок 8. Тестирование «Строкового калькулятора»

3.2 Оценка результатов тестирования По итогам тестирования, можно сделать вывод, что данное приложение работает правильно, тестирование не выявило критических ошибок, приводящих к сбою программы.

ЗАКЛЮЧЕНИЕ

Разработка приложения «Калькулятор» была выполнена в полном объеме. В процессе написания курсового проекта были решены следующие задачи:

Разработано приложение «Калькулятор»;

Изучены основы языка Java

Изучены теоретические основы ООП;

Также последовательно были выполнены следующие этапы:

Изучена теоретическая часть;

Реализация приложения;

Тестирование;

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

СПИОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

[1]О. В. Герман, Ю. О Герман. Программирование на Java и С# для студента. БХВ-Петербург.2005. 512 с.

[2]Файн Я. Программирование на Java для детей, родителей, дедушек и бабушек. ElectronicEdition. 2011. 231 с.

[3] Ильдар Хабибуллин. Создание распределенных приложений на Java 2. BHV-Санкт-Петербург. 2002. 696 с.

[4]А. Н. Васильев. Java. Объектно-ориентированное программирование. Санкт-Петербург. 2011. 400 с. (Серия «Учебное пособие»).

[5]https://ru.wikipedia.org/wiki/Java

ПРИЛОЖЕНИЕ 1

public class Calculator extends javax.swing.JFrame { private boolean zerodisp;

private boolean decdisp; private boolean dgrrad; private boolean sh;

private byte op;

private double ina; private double inb; private double out;

public Calculator&' { initComponents&';

)

@SuppressWarnings&" unchecked" '

Generated Code

private void zeroActionPerformed&java.awt.event.ActionEvent evt' {

if&!zerodisp && !decdisp'{ display1. setText&null';

)

display1.setText&display1.getText&' + «0» ';

)

private void oneActionPerformed&java.awt.event.ActionEvent evt' {

if&!zerodisp && !decdisp'{ display1. setText&null';

)

display1.setText&display1.getText&' + «1» ';

zerodisp = true;

)

private void twoActionPerformed&java.awt.event.ActionEvent evt' {

if&!zerodisp && !decdisp'{ display1. setText&null';

)

display1.setText&display1.getText&' + «2» '; zerodisp = true;

)

private void threeActionPerformed&java.awt.event.ActionEvent evt' {

if&!zerodisp && !decdisp'{ display1. setText&null';

)

display1.setText&display1.getText&' + «3» '; zerodisp = true;

)

private void fourActionPerformed&java.awt.event.ActionEvent evt' {

if&!zerodisp && !decdisp'{ display1. setText&null';

)

display1.setText&display1.getText&' + «4» '; zerodisp = true;

)

private void fiveActionPerformed&java.awt.event.ActionEvent evt' {

if&!zerodisp && !decdisp'{ display1. setText&null';

)

display1.setText&display1.getText&' + «5» '; zerodisp = true;

)

private void sixActionPerformed&java.awt.event.ActionEvent evt' {

if&!zerodisp && !decdisp'{ display1. setText&null';

)

display1.setText&display1.getText&' + «6» ';

zerodisp = true;

)

private void sevenActionPerformed&java.awt.event.ActionEvent evt' {

if&!zerodisp && !decdisp'{ display1. setText&null';

)

display1.setText&display1.getText&' + «7» ';

zerodisp = true;

)

private void eightActionPerformed&java.awt.event.ActionEvent evt' {

if&!zerodisp && !decdisp'{ display1. setText&null';

)

display1.setText&display1.getText&' + «8» ';

zerodisp = true;

)

private void nineActionPerformed&java.awt.event.ActionEvent evt' {

if&!zerodisp && !decdisp'{ display1. setText&null';

)

display1.setText&display1.getText&' + «9» ';

zerodisp = true;

)

593 decdisp = true

out = 0;

)

private void sinActionPerformed&java.awt.event.ActionEvent evt' {

inb = Double. eeeeeeeeeee&String.veeeeOf&display1.getText&''';

if&!sh'{

if&!dgrrad'{

display2.setText&" sin&" + String. veeeeOf&inb' + «'» '; inb = inb * 0.174 532 925;

)

out = Math. ein&inb';

)

else{

display2.setText&" sinh&" + String. veeeeOf&inb' + «'» '; out = Math. einh&inb';

)

display1.setText&String.veeeeOf&out''; out = 0;

op = 0;

)

private void cosActionPerformed&java.awt.event.ActionEvent evt' {

inb = Double. eeeeeeeeeee&String.veeeeOf&display1.getText&'''; if&!sh'{

if&!dgrrad'{

display2.setText&" cos&" + String. veeeeOf&inb' + «'» '; inb = inb * 0.174 532 925;

)

out = Math. cee&inb';

)

else{

display2.setText&" cosh&" + String. veeeeOf&inb' + «'» ';

out = Math. ceeh&inb';

)

display1.setText&String.veeeeOf&out''; out = 0;

op = 0;

)

private void addActionPerformed&java.awt.event.ActionEvent evt' {

if&op == 0'{

ina = Double. eeeeeeeeeee&String.veeeeOf&display1.getText&''';

)

else{

inb = Double. eeeeeeeeeee&String.veeeeOf&display1.getText&''';

)

if&op == 1'{

ina = ina + inb;

)

if&op == 2'{

ina = ina — inb;

)

if&op == 3'{

ina = ina * inb;

)

if&op == 4'{

ina = ina / inb;

)

if&op == 5'{

ina = ina * inb / 100

)

display1.setText&" 0″ '; display2. setText&String.veeeeOf&ina' + «+ «';

op = 1;

decdisp = false; zerodisp = false;

)

private void subtractActionPerformed&java.awt.event.ActionEvent evt' {

if&op == 0'{

ina = Double. eeeeeeeeeee&String.veeeeOf&display1.getText&''';

)

else{

inb = Double. eeeeeeeeeee&String.veeeeOf&display1.getText&''';

)

if&op == 1'{

ina = ina + inb;

)

if&op == 2'{

ina = ina — inb;

)

if&op == 3'{

ina = ina * inb;

)

if&op == 4'{

ina = ina / inb;

)

if&op == 5'{

ina = ina * inb / 100;

)

display1.setText&" 0″ '; display2. setText&String.veeeeOf&ina' + «- «';

op = 2;

decdisp = false; zerodisp = false;

)

private void multiplyActionPerformed&java.awt.event.ActionEvent evt' {

if&op == 0'{

ina = Double. eeeeeeeeeee&String.veeeeOf&display1.getText&''';

)

else{

inb = Double. eeeeeeeeeee&String.veeeeOf&display1.getText&''';

)

if&op == 1'{

ina = ina + inb;

)

if&op == 2'{

ina = ina — inb;

)

if&op == 3'{

ina = ina * inb;

)

if&op == 4'{

ina = ina / inb;

)

if&op == 5'{

ina = ina * inb / 100;

)

display1.setText&" 0″ '; display2. setText&String.veeeeOf&ina' + «* «';

op = 3;

decdisp = false; zerodisp = false;

)

private void divideActionPerformed&java.awt.event.ActionEvent evt' {

if&op == 0'{

ina = Double. eeeeeeeeeee&String.veeeeOf&display1.getText&''';

)

else{

inb = Double. eeeeeeeeeee&String.veeeeOf&display1.getText&''';

)

if&op == 1'{

ina = ina + inb;

)

if&op == 2'{

ina = ina — inb;

)

if&op == 3'{

ina = ina * inb;

)

if&op == 4'{

ina = ina / inb;

)

if&op == 5'{

ina = ina * inb / 100;

)

display1.setText&" 0″ '; display2. setText&String.veeeeOf&ina' + «/ «';

op = 4;

decdisp = false; zerodisp = false;

)

private void percentActionPerformed&java.awt.event.ActionEvent evt' {

ina = Double. eeeeeeeeeee&String.veeeeOf&display1.getText&'''; display1. setText&" 0″ ';

display2.setText&String.veeeeOf&ina' + «%&» ';

decdisp = false; zerodisp = false;

op = 5;

)

private void equalsActionPerformed&java.awt.event.ActionEvent evt' {

inb = Double. eeeeeeeeeee&String.veeeeOf&display1.getText&''';

if&op == 0'{

out = inb; display2. setText&String.veeeeOf&inb'';

)

if&op == 1'{

out = ina + inb;

display2.setText&display2.getText&' + String. veeeeOf&inb'';

)

if&op == 2'{

out = ina — inb;

display2.setText&display2.getText&' + String. veeeeOf&inb'';

)

if&op == 3'{

out = ina * inb;

display2.setText&display2.getText&' + String. veeeeOf&inb'';

)

if&op == 4'{

out = ina / inb;

display2.setText&display2.getText&' + String. veeeeOf&inb'';

)

if&op == 5'{

out = ina * inb / 100;

display2.setText&display2.getText&' + String. veeeeOf&inb' + «'» ';

)

if&out > -100 000 000 && out < 100 000 000'{

828)

display1.setText&String veeeeOf&out'';

840)

else{

display1.setText&" Error" ';

)

ina = 0;

inb = 0;

out = 0;

op = 0;

decdisp = false; zerodisp = false;

private void jButton1ActionPerformed&java.awt.event.ActionEvent evt' { java.awt.EventQueue.invekeLetee&new Runnable&' {

@Override

public void run&' {

new Strokovii &' .setVisible&true';

)

)';

)

private void display1ActionPerformed&java.awt.event.ActionEvent evt' {

// TODO add your handling code here:

)

private void degreesActionPerformed&java.awt.event.ActionEvent evt' { dgrrad = false;

)

private void radiansActionPerformed&java.awt.event.ActionEvent evt' { dgrrad = true;

)

public static void main&String args[]' { Look and feel setting code &optional'

java.awt.EventQueue.invekeLetee&new Runnable&' { public void run&' {

new Calculator&'.setVisible&true';

)

)';

)

// Variables declaration — do not modify private javax.swing.JButton add;

private javax.swing.ButtonGroup buttonGroup1; private javax.swing.JButton clear;

private javax.swing.JButton cos; private javax.swing.JButton decpoint;

private javax.swing.JRadioButton degrees; private javax.swing.JTextField display1; private javax.swing.JTextField display2; private javax.swing.JButton divide; private javax.swing.JButton eight; private javax.swing.JButton equals; private javax.swing.JButton fact;

private javax.swing.Box.Fieeee filler1; private javax.swing.JButton five; private javax.swing.JButton four; private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JButton multiply; private javax.swing.JButton nine;

private javax.swing.JButton one;

private javax.swing.JButton percent;

private javax.swing.JRadioButton radians;

private javax.swing.JButton reset;

private javax.swing.JButton seven;

private javax.swing.JButton sin;

private javax.swing.JButton six;

private javax.swing.JButton subtract;

private javax.swing.JButton three;

private javax.swing.JButton two;

private javax.swing.JButton zero;

// End of variables declaration

)

private double factorial&double d' {

throw new UnsupportedOperationException&" Not

)

supported

yet." ';

//To

chan

ge body of generated methods, ch

ПРИЛОЖЕНИЕ 2

publicclassStrokoviiextendsjavax.swing.JFrame{

!" «

" CreatesnewformNewJFrame" !

publicStrokovii'({initComponents'(;

*

!" «

" Thismethodiscalledfromwithintheconstructortoinitializetheform.

" WARNING: DoNOTmodifythiscode. Thecontentofthismethodisalways" regeneratedbytheFormEditor.

" !

@SuppressWarnings'" unchecked" (

GeneratedCode

privatevoidaddActionPerformed’java.awt.event.ActionEventevt ({

Stringstring=String.valueOf'display3.getText'((;

intcountString=0;intcountNumber=0;

for’charx=0;x='0'&&string.charAt'x (<='9'(({

countString++;

*

else{

countNumber++;

*

*

{

String[]words=string.split'" \s" (;

intwordCount=0;

inti, wordsSize=words.length, strSize=string.length'(;for'i=0;i

if’words[i]≠null&&!" «.equals'words[i]((

++wordCount;

display6.setText'" «+wordCount (;

{

display4.setText'" «+countString (;display5.setText'» «+countNumber (;

**

*

privatevoidCleanerActionPerformed’java.awt.event.ActionEventevt ({

display3.setText'" «(;display4.setText'» «(;display5.setText'» «(;

display6.setText'" «(;

*

privatevoiddisplay3ActionPerformed'java.awt.event.ActionEventevt ({

!!TODOaddyourhandlingcodehere:

*

privatevoiddisplay4ActionPerformed'java.awt.event.ActionEventevt ({

!!TODOaddyourhandlingcodehere:

*

!" «

" @paramargsthecommandlinearguments" !

publicstaticvoidmain’Stringargs[]({

!" SettheNimbuslookandfeel" !Lookandfeelsettingcode'optional (

!!

!" Createanddisplaytheform" !java.awt.EventQueue.invokeLater'newRunnable'({

publicvoidrun'({

new Strokovii'(.setVisible'true (;

*

*(;

*

!!Variablesdeclaration-donotmodifyprivatejavax.swing.JButtonCleaner;privatejavax.swing.JButtonadd;

privatejavax.swing.JTextFielddisplay3;privatejavax.swing.JTextFielddisplay4;privatejavax.swing.JTextFielddisplay5;privatejavax.swing.JTextFielddisplay6;privatejavax.swing.JLabeljLabel1;privatejavax.swing.JLabeljLabel2;privatejavax.swing.JLabeljLabel3;privatejavax.swing.JLabeljLabel4;

privatejavax.swing.JProgressBarjProgressBar1;

privateorg.jdesktop.beansbinding.BindingGroupbindingGroup;

!!Endofvariablesdeclaration

*

Показать весь текст
Заполнить форму текущей работой