Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прикладне програмування.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
448.52 Кб
Скачать

3 Проектна частинина

3.1. Опис створення програмного продукту

    1. Визначення щорічного прибутку при заданих початкових вкладах

    2. З допомогою фінансового калькулятора можна визначити максимальний щорічний прибуток (при регулярному вилученню грошей), який можна отримати при заданому початковому вкладі капіталу через вказаний проміжок часу. Наприклад, якщо ви маєте 500 тисяч доларів на банківському рахунку, то яку суму можна отримувати кожен місяць протягом 20 років припускаючи, що норма прибутку складає 6%. Формула для підрахунку цього значення буде така:

Maximum Withdrawal = principal* (((rateOfRet/wdPerYear)/(-1+((rateOfRet/wdPerYear)+1))+ (rateOfRet/wdPerYear))

де змінна rateOfRet визначає норму прибутку, змінна principal містить початкове значення суми інвестицій, змінна wdPerYear задає кількість виплат за рік і змінна numYears визначає строк виплат.

    1. Аплет MaxWD, лістинг якого наведений нижче, підраховує максимальне значення регулярних виплат, які можуть бути отримані виходячи із строку виплат при передбачуваній нормі прибутку.

Для створення даної програми необхідно вибрати середовище розробки програм на платформі Java, для цього краще обрати NetBeans IDE.

Порядок виконання роботи:

Для початку даної роботи потрібно запустити NetВеаns IDE 6.9.1 (рис 1.1), у вікні, що відкрилось вибрати Файл\Создать проект. Відкриється вікно створення нового проекту. В ньому виберіть категорію проекту Java, а у вікні Проекти\Приложение Java та натисніть клавішу Далее. Далі необхідно задати ім'я Java-проекту та вибрати папку для його збереження. В полі Имя проекта задайте назву Applet.

В полі Расположение проекта виберіть диск, на якому розміщена Ваша робоча директорія (для цього скористайтесь клавішею Обзор...). Для збереження введених змін натисніть на клавішу Завершить. Далі потрібно створити в Вашому проекті аплет з назвою MyMaxWD. Для цього необхідно натиснути правою клавішею миші (ПКМ) на назві проекту Applet та в меню, що відкрилось виберіть: Создать\Аплет (рис. 3.1).

Рисунок 3.1 – Створення аплета

В вікні створення аплету, що відкриється введіть ім’я класу (до якого ми пізніше будемо звертатись для виклику аплета), та для остаточного примінення змін натисніть клавішу Завершить, перед Вами з’явиться вікно редагування файлу MyMaxWD .java, де і потрібно прописувати код програми (рис. 3.2).

Рисунок 3.2 – Редагування файлу MyMaxWD.java

Для працездатності програми підключіть всі бібліотеки класів, що використовуються, а також пропишіть клас MyMaxWD (рис 3.3).

Рисунок 3.3 – Підключення бібліотек

Наступним кроком є написання самого коду програми, лістинг якого наведений нижче.

public class MaxWD extends Applet

implements ActionListener {

TextField maxWDText, orgPText, periodText,

rateText, numWDText;

Button doIt;

double principal; // initial principal

double rateOfRet; // annual rate of return

double numYears; // length of time in years

int numPerYear; // number of withdrawals per year

NumberFormat nf;

public void init() {

// Use a grid bag layout.

GridBagLayout gbag = new GridBagLayout();

GridBagConstraints gbc = new GridBagConstraints();

setLayout(gbag);

Label heading = new

Label("Maximum Regular Withdrawals");

Label orgPLab = new Label("Original Principal");

Label periodLab = new Label("Years");

Label rateLab = new Label("Rate of Return");

Label numWDLab =

new Label("Number of Withdrawals per Year");

Label maxWDLab = new Label("Maximum Withdrawal");

maxWDText = new TextField(16);

periodText = new TextField(16);

orgPText = new TextField(16);

rateText = new TextField(16);

numWDText = new TextField(16);

// Max withdrawal field for display only.

maxWDText.setEditable(false);

doIt = new Button("Compute");

// Define the grid bag.

gbc.weighty = 1.0; // use a row weight of 1

gbc.gridwidth = GridBagConstraints.REMAINDER;

gbc.anchor = GridBagConstraints.NORTH;

gbag.setConstraints(heading, gbc);

// Anchor most components to the right.

gbc.anchor = GridBagConstraints.EAST;

gbc.gridwidth = GridBagConstraints.RELATIVE;

gbag.setConstraints(orgPLab, gbc);

gbc.gridwidth = GridBagConstraints.REMAINDER;

gbag.setConstraints(orgPText, gbc);

gbc.gridwidth = GridBagConstraints.RELATIVE;

gbag.setConstraints(periodLab, gbc);

gbc.gridwidth = GridBagConstraints.REMAINDER;

gbag.setConstraints(periodText, gbc);

gbc.gridwidth = GridBagConstraints.RELATIVE;

gbag.setConstraints(rateLab, gbc);

gbc.gridwidth = GridBagConstraints.REMAINDER;

gbag.setConstraints(rateText, gbc);

gbc.gridwidth = GridBagConstraints.RELATIVE;

gbag.setConstraints(numWDLab, gbc);

gbc.gridwidth = GridBagConstraints.REMAINDER;

gbag.setConstraints(numWDText, gbc);

gbc.gridwidth = GridBagConstraints.RELATIVE;

gbag.setConstraints(maxWDLab, gbc);

gbc.gridwidth = GridBagConstraints.REMAINDER;

gbag.setConstraints(maxWDText, gbc);

gbc.anchor = GridBagConstraints.CENTER;

gbag.setConstraints(doIt, gbc);

// Add all the components.

add(heading);

add(orgPLab);

add(orgPText);

add(periodLab);

add(periodText);

add(rateLab);

add(rateText);

add(numWDLab);

add(numWDText);

add(maxWDLab);

add(maxWDText);

add(doIt);

// Register to receive action events.

orgPText.addActionListener(this);

periodText.addActionListener(this);

rateText.addActionListener(this);

numWDText.addActionListener(this);

doIt.addActionListener(this);

nf = NumberFormat.getInstance();

nf.setMinimumFractionDigits(2);

nf.setMaximumFractionDigits(2);

}

/* User pressed Enter on a text field or

pressed Compute. */

public void actionPerformed(ActionEvent ae) {

repaint();

}

public void paint(Graphics g) {

double result = 0.0;

String orgPStr = orgPText.getText();

String periodStr = periodText.getText();

String rateStr = rateText.getText();

String numWDStr = numWDText.getText();

try {

if(orgPStr.length() != 0 &&

periodStr.length() != 0 &&

rateStr.length() != 0 &&

numWDStr.length() != 0) {

principal = Double.parseDouble(orgPStr);

numYears = Double.parseDouble(periodStr);

rateOfRet = Double.parseDouble(rateStr) / 100;

numPerYear = Integer.parseInt(numWDStr);

result = compute();

maxWDText.setText(nf.format(result));

}

showStatus(""); // erase any previous error message

} catch (NumberFormatException exc) {

showStatus("Invalid Data");

maxWDText.setText("");

}

}

// Compute the maximum regular withdrawals.

double compute() {

double b, e;

double t1, t2;

t1 = rateOfRet / numPerYear;

b = (1 + t1);

e = numPerYear * numYears;

t2 = Math.pow(b, e) - 1;

return principal * (t1/t2 + t1);

}

}

Здійсніть побудову проекту (Выполнить \ Построить главный проект) та запустіть створений Вами проект ыполнить \ Запустить главный проект).

Якщо Ви все правильно зробили, то проект запуститься, однак результатів створеної роботи візуально не буде помітно. Для того щоб побачити, те що Ви створили потрібно прописати посилання на скомпільований файл MyMaxWDlass, що знаходиться в папці: Назва диска : \Applet\ build\classes. Створіть в папці, де знаходиться клас MyMaxWDlass html-файл MyMaxWD.html, в який помістіть посилання на створений Вами клас аплету (рис.3.4).

Рисунок 3.4 – Перевірка працездатносты аплету

Для цього запустіть створений Вами файл MyMaxWD.html.

Для цього використовується Блокнот. Створюєте текстовий документ MyMaxWD.txt з інформацією, вказаною на малюнку, а потім збережіть його у форматі .html (отримаєте документ MyMaxWD.html).

Зовнішній вигляд аплета, який відображається при виконанні програми, зображений на рис. 3.5. Для використання аплета просто введіть початковий баланс, термін(роки) і норму прибутку. Після введення інформації клацніть на кнопці Обчислити для розрахунку щомісячної виплати.

Рисунок 3.5 – Аплет MyMaxWD .