
- •1 Сучасні тенденції програмування систем автоматизації
- •1.1. Загальна характеристика та особливості програмування сучасних систем автоматизованого проектування
- •1.2. Порівняльна характеристика середовищ розробки прикладних програм на мові Java
- •2.1. Характеристика класу Calendar
- •2.2. Опис методу getClass()
- •2.3. Приклад використання об’єктів
- •3 Проектна частинина
- •3.1. Опис створення програмного продукту
- •Визначення щорічного прибутку при заданих початкових вкладах
- •3.2. Коротка характеристика використаних у програмі компонентів
- •Висновок
- •Список використаних джерел:
3 Проектна частинина
3.1. Опис створення програмного продукту
Визначення щорічного прибутку при заданих початкових вкладах
З допомогою фінансового калькулятора можна визначити максимальний щорічний прибуток (при регулярному вилученню грошей), який можна отримати при заданому початковому вкладі капіталу через вказаний проміжок часу. Наприклад, якщо ви маєте 500 тисяч доларів на банківському рахунку, то яку суму можна отримувати кожен місяць протягом 20 років припускаючи, що норма прибутку складає 6%. Формула для підрахунку цього значення буде така:
Maximum Withdrawal = principal* (((rateOfRet/wdPerYear)/(-1+((rateOfRet/wdPerYear)+1))+ (rateOfRet/wdPerYear))
де змінна rateOfRet визначає норму прибутку, змінна principal містить початкове значення суми інвестицій, змінна wdPerYear задає кількість виплат за рік і змінна numYears визначає строк виплат.
Аплет 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);
}
}
Здійсніть побудову проекту (Выполнить \ Построить главный проект) та запустіть створений Вами проект (Выполнить \ Запустить главный проект).
Якщо Ви все правильно зробили, то проект запуститься, однак результатів створеної роботи візуально не буде помітно. Для того щоб побачити, те що Ви створили потрібно прописати посилання на скомпільований файл MyMaxWD.сlass, що знаходиться в папці: Назва диска : \Applet\ build\classes. Створіть в папці, де знаходиться клас MyMaxWD.сlass html-файл MyMaxWD.html, в який помістіть посилання на створений Вами клас аплету (рис.3.4).
Рисунок 3.4 – Перевірка працездатносты аплету
Для цього запустіть створений Вами файл MyMaxWD.html.
Для цього використовується Блокнот. Створюєте текстовий документ MyMaxWD.txt з інформацією, вказаною на малюнку, а потім збережіть його у форматі .html (отримаєте документ MyMaxWD.html).
Зовнішній вигляд аплета, який відображається при виконанні програми, зображений на рис. 3.5. Для використання аплета просто введіть початковий баланс, термін(роки) і норму прибутку. Після введення інформації клацніть на кнопці Обчислити для розрахунку щомісячної виплати.
Рисунок 3.5 – Аплет MyMaxWD .