Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 9. Разработать программу для обработки и анализа списка финансовых транзакций за месяц. Каждая транзакция включает в себя информацию о дате, типе операции (доход или расход) и сумме. Программа должна подсчитать общий доход и расход за месяц, вычислить итоговый баланс и идентифицировать день с самым большим расходом. В конце работы программа предоставляет подробный отчет.
- void main() {
- final transactionManager = TransactionManager();
- transactionManager.addTransaction(
- Transaction(
- date: DateTime(2024, 07, 01),
- operation: Operation.income,
- transactionSum: 1000,
- ),
- );
- transactionManager.addTransaction(
- Transaction(
- date: DateTime(2024, 07, 05),
- operation: Operation.expense,
- transactionSum: 200,
- ),
- );
- transactionManager.addTransaction(
- Transaction(
- date: DateTime(2024, 07, 10),
- operation: Operation.expense,
- transactionSum: 300,
- ),
- );
- transactionManager.addTransaction(
- Transaction(
- date: DateTime(2024, 07, 15),
- operation: Operation.income,
- transactionSum: 1500,
- ),
- );
- transactionManager.addTransaction(
- Transaction(
- date: DateTime(2024, 07, 20),
- operation: Operation.expense,
- transactionSum: 100,
- ),
- );
- final report = transactionManager.report;
- print('Общий доход: ${report.resultIncome}');
- print('Общий расход: ${report.resultExpense}');
- print('Итоговый баланс: ${report.resultBalanse}');
- print('День с самым большим расходом: ${report.mostExpensesDay}');
- }
- enum Operation { income, expense }
- final class Transaction {
- final DateTime date;
- final Operation operation;
- final double transactionSum;
- const Transaction({
- required this.date,
- required this.operation,
- required this.transactionSum,
- });
- @override
- String toString() {
- return 'Transaction{date: $date, operation: $operation, transactionSum: $transactionSum}';
- }
- }
- final class TransactionManager {
- final List<Transaction> _transactions = [];
- void addTransaction(Transaction transaction) {
- _transactions.add(transaction);
- }
- Report get report => Report(_transactions);
- }
- final class Report {
- final List<Transaction> _transactions;
- const Report(this._transactions);
- double get resultIncome {
- var resultIncomeVar = 0.0;
- for (final transaction in _transactions) {
- if (transaction.operation == Operation.income) {
- resultIncomeVar += transaction.transactionSum;
- }
- }
- return resultIncomeVar;
- }
- double get resultExpense {
- var resultExpenseVar = 0.0;
- for (final transaction in _transactions) {
- if (transaction.operation == Operation.expense) {
- resultExpenseVar += transaction.transactionSum;
- }
- }
- return resultExpenseVar;
- }
- double get resultBalanse {
- return resultIncome - resultExpense;
- }
- DateTime? get mostExpensesDay {
- if (_transactions.isEmpty) {
- return DateTime.now();
- }
- double maxExpense = 0;
- DateTime? maxExpenseDate;
- for (final transaction in _transactions) {
- if (transaction.operation != Operation.expense) continue;
- final date = DateTime(
- transaction.date.year,
- transaction.date.month,
- transaction.date.day,
- );
- final expense = transaction.transactionSum;
- if (maxExpenseDate == null || expense > maxExpense) {
- maxExpense = expense;
- maxExpenseDate = date;
- }
- }
- return maxExpenseDate;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement