Budget App import 'dart:io'; const double taxRate = 0.15; void main() { final List> incomeList = []; final List> expenseList = []; print('Welcome to the Budget Management Application!'); while (true) { print('\nPlease choose an option:'); print('1. Add income'); print('2. Add expense'); print('3. View summary'); print('4. Exit'); final choice = _readInt('Enter your choice: '); if (choice == 1) { final desc = _readString('Enter income description: '); final amount = _readPositiveDouble('Enter income amount: '); incomeList.add({desc: amount}); print('Income added!'); } else if (choice == 2) { final desc = _readString('Enter expense description: '); final amount = _readPositiveDouble('Enter expense amount: '); expenseList.add({desc: amount}); print('Expense added!'); } else if (choice == 3) { final totalIncome = _sumList(incomeList); final totalExpenses = _sumList(expenseList); final net = totalIncome - totalExpenses; print('\nSummary:'); print('Total income: \$${totalIncome.toStringAsFixed(2)}'); print('Total expenses: \$${totalExpenses.toStringAsFixed(2)}'); if (net >= 0) { print('Net profit: \$${net.toStringAsFixed(2)}'); } else { print('Net loss: \$${(-net).toStringAsFixed(2)}'); } // Optional tax (ternary): tax only if profitable final tax = (net > 0) ? net * taxRate : 0.0; if (tax > 0) { print('Tax to be paid: \$${tax.toStringAsFixed(2)}'); } } else if (choice == 4) { print('Exiting the application. Goodbye!'); break; } else { print('Invalid choice. Please try again.'); } } } double _sumList(List> list) { double sum = 0.0; for (final entry in list) { for (final value in entry.values) { sum += value; } } return sum; } int _readInt(String prompt) { while (true) { stdout.write(prompt); final input = stdin.readLineSync(); final value = int.tryParse(input ?? ''); if (value != null) return value; print('Please enter a valid number.'); } } String _readString(String prompt) { while (true) { stdout.write(prompt); final input = stdin.readLineSync(); final value = (input ?? '').trim(); if (value.isNotEmpty) return value; print('Input cannot be empty.'); } } double _readPositiveDouble(String prompt) { while (true) { stdout.write(prompt); final input = stdin.readLineSync(); final value = double.tryParse(input ?? ''); // logical & relational operators for validation if (value != null && value >= 0) return value; print('Please enter a valid non-negative number.'); } }