Website Summary Files Commits Branches @commit @diff @stats
path: root / Week07 / Exercise01 / Transaction.h
diff options
context:
space:
mode:
Commit945f7e67d6ca8047c961457786fac5e2d9a13d82 (patch)
Author
 Syndamia <kamen@syndamia.com>
2026-04-03 18:17:51 +0300
Committer
 Syndamia <kamen@syndamia.com>
2026-04-03 18:17:51 +0300
Files5c6b23aaee4eb653f9c461d7303edcd31d697f10 /Week07/Exercise01/Transaction.h
oop-2025-solutions-945f7e67d6ca8047c961457786fac5e2d9a13d82.tar
oop-2025-solutions-945f7e67d6ca8047c961457786fac5e2d9a13d82.tar.gz
oop-2025-solutions-945f7e67d6ca8047c961457786fac5e2d9a13d82.zip
Parent8f162cde46a34d04e3a8a655067ee5174258e249 (diff)
feat(Week07): Add solutions
1 files changed, 46 insertions, 0 deletions
-rw-r--r--Week07/Exercise01/Transaction.h46
diff --git a/Week07/Exercise01/Transaction.h b/Week07/Exercise01/Transaction.h
new file mode 100644
index 0000000..d4941ce
--- /dev/null
+++ b/Week07/Exercise01/Transaction.h
@@ -0,0 +1,46 @@
+#ifndef _TRANSACTION
+#define _TRANSACTION
+
+#include "String.h"
+#include <fstream>
+
+const unsigned STATUS_PENDING = 0;
+const unsigned STATUS_ACCEPTED = 1;
+const unsigned STATUS_REJECTED = 2;
+
+// Няма да обвързваме транзакции с потребители директно
+// (т.е. няма член-данна която свързва User обект).
+// Тази връзка осъществяваме с UserTransaction класа.
+// Логически, можем да приемем че не искаме банковия служител
+// да знае за акаунтите на купувачите.
+class Transaction {
+ unsigned clerkNumber;
+ double sum;
+ unsigned bankCard;
+ // Уговаряме се, че стойността на status ще бъде равна на една
+ // от глобалните променливи STATUS_PENDING, STATUS_ACCEPTED и STATUS_REJECTED.
+ // Тук е добро място за употреба на енумерации (enum).
+ unsigned status;
+
+public:
+ Transaction(double sum, unsigned bankCard);
+ // Ако направим поне един конструктор, то конструктора по подразбиране
+ // спира да се създава автоматично
+ Transaction();
+
+ // Не искаме транзакции да могат да се променят своеволно.
+ // Т.е. след като се създаде транзакция, единствено можем да променяме статус
+ unsigned GetClerkNumber() const;
+ double GetSum() const;
+ unsigned GetBankCard() const;
+
+ unsigned GetStatus() const;
+ String GetStatusStr() const;
+ void SetStatus(unsigned clerk, unsigned status);
+
+ void PrintTransactionInfo() const;
+
+ void Export(std::ofstream& exportFile) const;
+};
+
+#endif /* _TRANSACTION */