Report On FinPy
Report On FinPy
Tracking System
Yogi G Malvankar|6712|SYBSc
The first part of the FinPy code is dedicated to login and authentication.
Upon launching the program, the user is greeted and asked to enter their
six-digit account number and a four-digit PIN. These details are collected as
input from the user, and the PIN is converted into an integer for further
validation. A conditional check ensures that the account number consists of
exactly six digits and the PIN exactly four digits. If either condition fails, the
system immediately terminates the program with an “INVALID!” message,
enhancing the security of the login process by preventing further
unauthorized access. If the credentials meet the length requirements, the
user is welcomed into the system and proceeds to the main menu.
INPUT CODE
OUTPUT
Once logged in, the user is directed to the main menu, which operates
within an infinite loop to ensure continuous access to banking services until
the user chooses to exit. The menu presents five primary options: Check
Balance, Transaction History, Transfer Money, Customer Care, and Exit. By
entering the corresponding number, users can navigate through these
options, and the system responds accordingly by executing the relevant
block of code associated with their choice. This looped design ensures that
after completing any action, the user is brought back to the menu, creating
an uninterrupted and seamless user experience
INPUT CODE
Balance Enquiry
The first option in the menu is Balance Enquiry, where the user is asked to
select between their current and savings accounts. Based on their selection,
the system displays the respective static balance. This function allows users
to quickly view their available funds, albeit from the fixed amounts
established at the start of the program. After displaying the balance, the
system automatically redirects the user back to the main menu.
Transaction History
The second option, Transaction History, presents the user with a static
message that outlines the general structure of recent transactions, including
columns for date, time, type of transaction, amount, and account number.
However, this is purely illustrative, as the code does not track actual
transactions or dynamically populate the history with real data from the
user’s activities. This placeholder serves as a conceptual demonstration of
what a transaction history might look like in a full-fledged banking
application.
Money transfer
In the third option, the user can perform a money transfer through IMPS.
Here, the user selects whether the transfer is to themselves or another
recipient, and which account type—savings or current—they wish to use.
The system then requests critical transfer details, including IFSC code,
account number, amount, and PIN verification. An inner check ensures that
the entered PIN matches the initial login PIN and that the necessary fields
are not empty. Additionally, the system checks whether the transfer amount
exceeds the balances of the respective accounts. If the PIN verification fails
or the balance is insufficient, the system alerts the user with appropriate
error messages. If the inputs are valid, the system simulates the deduction
of funds from the chosen account. However, this deduction is only displayed
and not reflected in the actual stored balance, due to the static nature of the
balance variables. Furthermore, there is a logical flaw in the balance
checking condition that may inadvertently block valid transactions if the
amount is acceptable in one account but exceeds the other, since it checks
both balances regardless of the selected account.
Customer Care support
The fourth menu option offers Customer Care support. When selected, the
system provides the user with customer service information, notifying them
that assistance will be available shortly and offering a toll-free number for
immediate help. This section simulates the kind of support communication
a banking application might include, ensuring users know how to seek
assistance if needed.
Finally, the fifth option allows the user to exit the application safely. Upon
selection, the system displays a farewell message and uses the break
statement to terminate the infinite loop, thus closing the program. This
controlled exit helps ensure that the session concludes properly, preventing
the program from running indefinitely.
Invalid menu selections are also handled gracefully. If the user inputs a
number outside the range of 1 to 5, the system alerts them of the invalid
choice and prompts them to enter a valid option. This helps maintain the
stability of the program and prevents it from crashing due to unexpected
inputs, though additional validation could further enhance this aspect.
Strengths of the Code:
The FinPy system demonstrates a well-structured, menu-driven interface
that is easy to navigate. Its authentication step is simple yet effective,
requiring specific formats for account numbers and PINs to prevent
unauthorized use. The program design effectively utilizes a loop to keep the
main menu accessible after each action, contributing to a smooth user
experience. With static balances and placeholder transaction history, the
system is straightforward to understand, making it a useful educational tool
for beginners learning about banking systems and fundamental Python
programming techniques.