Tracking conference attendees
Program plan:
- In a file “atmmanager.py”,
- Create a class “ATMAp” that calls account information from JSON file and modifies it according to the commands given through an interface class.
- Define the function “_init_()” to create a list of users and manage the account information.
- Define the “run()” function to execute the transaction according to user input.
- Define the function “screen_1()” to return the user input.
- Define the function “screen_2()” to process the transaction according to the user input.
- Define the function “get_User()” to return the user with the given user id.
- Define the function “send_Money()” to move the amount from one user to another. There are two types of accounts are used; “Checking” and “Savings”.
- Define the function “_updateAccounts()” to update the amount in output file whenever the transaction has occurred.
- Define the function “verify()” to check whether the userid and pin given by the user is matched with the saved userid and pin.
- Create a class “User”,
- Define the function “_init_()” method to assign the initial values.
- Define the function “check_Balances()” to return the amount of balance in checking and savings account.
- Define the function “exchange_Cash()” to deposit or withdraw amount fro checking or savings account.
- Define the function “transfer_Money()” to transfer the amount between checking and savings account.
- Define the function “getID()” to return the user id.
- Define the function “getPIN()” to return the pin.
- Create a class “ATMAp” that calls account information from JSON file and modifies it according to the commands given through an interface class.
- In the file “textatm.py”,
- Create a class “TextInterface”,
- Define “_init_()” method to assign initial values.
- Define the function “get_UserInput()” to return the user inputs.
- Define the function “choose_Transaction()” to select the type of transaction.
- Define the function “display_Balanace()” to print the amount in savings and checking accounts.
- Define the function “withdraw_Cash()” to return the withdraw amount and account type.
- Define the function “getTransferInfo()” to return the information of amount transfer between checking and savings account.
- Define the function “getSendInfo()” to return the information of receiver amount transfer.
- Define the function “close()” to exit the transaction.
- Create a class “TextInterface”,
- In a file “atm.py”,
- Import necessary packages.
- Define the “main()” function,
- All the interface class “TextInterface”.
- Call the “ATMAp” class functions with the argument of file and interface.
- Call the “main()” function.
This Python program is to keep track of conference attendees.
Explanation of Solution
Program:
File name: “atmmanager.py”
#Import package
import json
#Create a class
class ATMAp:
#Define the function
def __init__(self, account_file, interface):
#Open the file
with open(account_file) as fi:
#Serialize the object as a json stream
data = json.load(fi)
#Create a list of users
self.users = []
'''Create for loop to iterate key, value pairs till the list of tuples'''
for key,value in data['users'].items():
#Assign the value
usr = User(value["userid"], value["pin"],value["checkin"],value["saving"], value["name"])
#Append to the list
self.users.append(usr)
#Assign the value
self.interface = interface
#Call the run()
self.run()
#Define the run() function
def run(self):
#Execute while loop
while not self.interface.close():
#Call the functions
self.screen_1()
self.screen_2()
#Define the function
def screen_1(self):
#Assign the values
user_id = None
pin = None
#Execute while loop
while not self.verify(user_id, pin):
#Make simultaneous assignment
user_id, pin = self.interface.get_UserInput()
#Assign the value return from get_USer()
self.user = self.get_User(user_id)
#Define the function
def screen_2(self):
#Assign the value
terminate = self.interface.close()
#Execute while loop
while not terminate:
#Make simultaneous assignment
checkin, saving = self.user.check_Balances()
#Assign the value
tran_type = self.interface.choose_Transaction()
#Call the function
self.__updateAccounts()
#Execute the condition
if tran_type[0] == "C":
#Call the function
self.interface.display_Balance(checkin, saving)
#Execute the condition
elif tran_type[0] == "W":
#Make simultaneous assignment
value, account_type = self.interface.withdraw_Cash()
#Call the function
self.user.exchange_Cash(value, account_type)
#Execute the condition
elif tran_type[0] == "T":
#Make simultaneous assignment
inaccount, outaccount, value = self.interface.getTransferInfo()
#Call the function
self.user.transfer_Money(inaccount, outaccount, value)
#Execute the condition
elif tran_type[0] == "S":
#Make the assignment
recipient, type_sender, type_recipient, value = self.interface.getSendInfo()
#Assign the value return from get_User()
recipient = self.get_User(recipient)
#Call the function
self.send_Money(self.user, recipient, value, type_sender, type_recipient)
#Execute the condition
elif tran_type[0] == "Q":
#Call the function
self.user.exchangeCash(-100, "Checking")
#Execute the condition
elif tran_type[0] == "E":
#Call the unction
self.__updateAccounts()
#Assign the boolean value
terminate = True
#Define the function
def get_User(self, userid):
#Create for loop
for user in self.users:
#Check the condition
if userid == user.getID():
#Return the user object for the given userid
return user
#Define the function
def send_Money(self, sender, recipient, value, type_sender, type_recipient):
#Assign the values return from check_Balances()
checking, savings = sender.check_Balances()
checking, savings = recipient.check_Balances()
#Call the functions
sender.exchange_Cash(-value, type_sender)
recipient.exchange_Cash(value, type_recipient)
#Define the function
def __updateAccounts(self):
#Create dictionary
data = {}
#Assign empty dictionary
data['users'] = {}
#Create for loop
for usr in self.users:
#Assign the values
json_str = (vars(usr))
user_id = usr.getID()
#Assign the value
data['users'][user_id] = json_str
#Open the output file in write mode
with open('new_atmusers.json', 'w') as f:
#Serialize the objecct as a json stream
json.dump(data, f, indent=4)
#Define the function
def verify(self, user_id, pin):
#Create for loop
for usr in self.users:
#Execute the condition
if (usr.getID() == user_id) and (usr.getPIN() == pin):
#Return boolean value
return True
#Otherwise
else:
#Return boolean value
return False
#Create a class
class User:
#Define _init_() method
def __init__(self, userid, pin, checkin, saving, name):
#Assign initial values
self.userid = userid
self.pin = pin
self.checkin = float(checkin)
self.saving = float(saving)
self.name = name
#Define the function
def check_Balances(self):
#Return two values
return self.checkin, self.saving
#Define the function
def exchange_Cash(self, value, inaccount):
#Check the condition
if inaccount[0] == "C":
#Assign the value
self.checkin = round(self.checkin + value, 2)
else:
#Assign the value
self.saving = round(self.saving + value, 2)
#Define the function
def transfer_Money(self, inaccount, outaccount, value):
#Check the condition
if inaccount[0] == "C":
#Assign the values
self.checkin = self.checkin + value
self.saving = self.saving - value
#Otherwise
else:
#Assign the values
self.checkin = self.checkin - value
self.saving = self.saving + value
#Define the function
def getID(self):
"""Returns userid"""
#Return the value
return self.userid
#Define the function
def getPIN(self):
#Return the value
return self.pin
File name: “textatm.py”
#Create a class
class TextInterface:
#Define the function
def __init__(self):
#Assign boolean value
self.active = True
#Print the string
print("Welcome to the ATM")
#Define the function
def get_UserInput(self):
#Get user inputs
a = input("Username >> ")
b = input("Pin >> ")
#Return the values
return a, b
#Define the function
def choose_Transaction(self):
#Display user balance
#Assign the value
tran = "xxx"
#Execute the loop
while tran[0] != ("C" or "W" or "T" or "S" or "E" or "Q"):
#Get the choice
tran = input('Please select a transaction from the approved list. "Check Balance", \n "Withdraw/Deposit Cash", "Transfer Money", "Send Money", "Exit", "Quick Cash $100 >> ')
#Check the condition
if tran[0] != "E":
#Return the choice
return tran
else:
#Assign boolean value
self.active = False
#Return the choice
return tran
#Define the function
def display_Balance(self, checking, savings):
#Print savings and checking
print("Checking: {0} Savings: {1}".format(checking, savings))
#Define the function
def withdraw_Cash(self):
#Print the string
print("This function will withdraw or deposit cash.")
#Get the values
value = eval(input("Enter the amount to deposit/withdraw? Enter negative value to withdraw. >> "))
account = input("Checking or Savings account? >> ")
#Print the string
print("Transaction is complete.\n")
#Retuen the values
return value, account
#Define the function
def getTransferInfo(self):
#Get the inputs
outaccount = input("Select account to withdraw money from: >> ")
inaccount = input("Select account to deposit money in: >> ")
value = eval(input("How much would you like to move?"))
#Print the string
print("Transaction is complete.\n")
#Return the values
return inaccount, outaccount, value
#Define the function
def getSendInfo(self):
#Get the inputs
recipient = input("Recipient userid")
type_sender = input("Sender: Checking or Savings? >> ")
type_recipient = input("Recipient: Checking or Savings? >> ")
value = eval(input("How much to send? >> "))
#Print the string
print("Transaction is complete.\n")
#Return the values
return recipient, type_sender, type_recipient, value
#Define the function
def close(self):
#Execute the condition
if self.active == False:
#Print the string
print("\nPlease come again.")
#Return boolean value
return True
#Otherwise
else:
#Return boolean value
return False
File name: “atm.py”
#Import packages
from atmmanager import ATMAp, User
from textatm import TextInterface
#Define the function
def main():
#Assign the value return from TextInterface()
interface = TextInterface()
#Assign the value return from ATMApp class
app = ATMAp("new_atmusers.json", interface)
#Call the function
main()
Content of “new_atmusers.json”:
{
"users": {
"xxxx": {
"userid": "xxxx",
"pin": "1111",
"checkin": 2000.0,
"saving": 11000.0,
"name": "Christina"
},
"ricanontherun": {
"userid": "ricanontherun",
"pin": "2112",
"checkin": 8755.0,
"saving": 7030.0,
"name": "Christian"
},
"theintimidator": {
"userid": "theintimidator",
"pin": "3113",
"checkin": 1845.0,
"saving": 112.0,
"name": "Sean"
},
"jazzplusjazzequalsjazz": {
"userid": "jazzplusjazzequalsjazz",
"pin": "4114",
"checkin": 4489.0,
"saving": 24000.0,
"name": "Dan"
}
}
}
Output:
Welcome to the ATM
Username >> xxxx
Pin >> 1111
Please select a transaction from the approved list. "Check Balance",
"Withdraw/Deposit Cash", "Transfer Money", "Send Money", "Exit", "Quick Cash $100 >> Check Balance
Checking: 2000.0 Savings: 11000.0
Please select a transaction from the approved list. "Check Balance",
"Withdraw/Deposit Cash", "Transfer Money", "Send Money", "Exit", "Quick Cash $100 >> Exit
Please come again.
>>>
Additional output:
Welcome to the ATM
Username >> xxxx
Pin >> 1111
Please select a transaction from the approved list. "Check Balance",
"Withdraw/Deposit Cash", "Transfer Money", "Send Money", "Exit", "Quick Cash $100 >> Withdraw/Deposit Cash
This function will withdraw or deposit cash.
Enter the amount to deposit/withdraw? Enter negative value to withdraw. >> 100
Checking or Savings account? >> Checking
Transaction is complete.
Please select a transaction from the approved list. "Check Balance",
"Withdraw/Deposit Cash", "Transfer Money", "Send Money", "Exit", "Quick Cash $100 >> Exit
Please come again.
>>>
Want to see more full solutions like this?
Chapter 12 Solutions
Python Programming: An Introduction to Computer Science, 3rd Ed.
- Write a program that can suggest an activity based on the temperature. If the temperature is between 20 to 40 degrees Fahrenheit, suggest the user go skiing; if the temperature is between 41 to 60 degrees Fahrenheit, suggest the user go hiking; if the temperature is in the range of 61 to 80, suggest swimming. For all the temperatures out of these ranges (too cold or too hot), then suggest staying inside.arrow_forwardWrite a program that displays twocircles with radius 10 at location (40, 40) and (120, 150) with a line connectingthe two circles, as shown in Figure . The distance between the circlesis displayed along the line. The user can drag a circle. When that happens, thecircle and its line are moved, and the distance between the circles is updated.arrow_forwardWrite a program in Java that creates a login name for a user, given the user's first name, last name, and a four-digit integer as input. Output the login name, which is made up of the first six letters of the first name, followed by the first letter of the last name, an underscore (_), and then the last digit of the number (use the % operator). If the first name has less than six letters, then use all letters of the first name. Ex: If the input is: Michael Jordan 1991 the output is: Your login name: MichaeJ_1 Ex: If the input is: Nicole Smith 2024 the output is: Your login name: NicoleS_4arrow_forward
- Write a java program that can suggest an activity based on the temperature. If the temperature is between 20 to 40 degrees Fahrenheit, suggest the user go skiing; if the temperature is between 41 to 60 degrees Fahrenheit, suggest the user go hiking; if the temperature is in the range of 61 to 80, suggest swimming. For all the temperatures out of these ranges (too cold or too hot), then suggest staying inside.arrow_forwardWrite a program that plays a dice game called "21" It is a variation on BlackJack where one player plays against the computer trying to get 21 or as close to 21 without going over. Here are the rules of the game: You will play with dice that have numbers from 1 to 11. To win, the player or the computer has to get to 21, or as close as possible without going over. If the player or computer goes over 21, they instantly lose. If there is a tie, the computer wins. Starting the game: The player is asked to give the computer a name. For now, we'll simply call the computer opponent, "computer." The game starts with rolling four dice. The first two dice are for the player. These two dice are added up and the total outputted to the screen. The other two dice are for the computer. Likewise, their total is outputted to the screen. Player: If a total of 21 has been reached by either the player or the computer, the game instantly stops and the winner is declared. Otherwise,…arrow_forwardWrite a program that plays a dice game called "21" It is a variation on BlackJack where one player plays against the computer trying to get 21 or as close to 21 without going over. Here are the rules of the game: You will play with dice that have numbers from 1 to 11. To win, the player or the computer has to get to 21, or as close as possible without going over. If the player or computer goes over 21, they instantly lose. If there is a tie, the computer wins. Starting the game: The player is asked to give the computer a name. For now, we'll simply call the computer opponent, "computer." The game starts with rolling four dice. The first two dice are for the player. These two dice are added up and the total outputted to the screen. The other two dice are for the computer. Likewise, their total is outputted to the screen. Player: If a total of 21 has been reached by either the player or the computer, the game instantly stops and the winner is declared. Otherwise,…arrow_forward
- Write a program that prompts the capacity, in gallons, of an automobile fuel tank and the miles per gallon theautomobile can be driven without refueling.arrow_forwardWrite a Java program for a Play-House Manager, who would like to calculate the total profit from selling tickets of the Drama. There are 3 types of tickets: Balcony (120 AED), VIP (70 AED) and Basic (40 AED). The manager has bills and salaries to pay. Therefore, the profit is equal to (incomes – expenses). last time it was wrong codearrow_forwardYou are to write a program that allows the user to draw a simple house using 5 mouse clicks. - The first two clicks will be the opposite corners of the rectangular frame of the house. - The third click will indicate the center of the top edge of the rectangular door. The door should have a total width that is 1/5 of the width of the house frame. The sides of the door should extend from the corners of the top down to the bottom of the frame. - The 4th click will indicate the center of a square window. The window is as wide as the door. (A change from the original book program.) - The last click will indicate the peak of the roof. The edges of the roof will extend from the point at the peak to the corners of the top edge of the house frame. Make the lines of the roof edge green. (Another change from the original book program.)arrow_forward
- can you solve this please? Adopt appropriate Java animation code to implement the video in the file “test4.wmv” and given that the parametric equation for a circle. x=r*cos(t) y=r*sin(t) with t in range [0, 2p] and r is the radius of the circle. (the circle goes in a loop like in the images, i did my best to try to explain it , please try to do it ) and here is a sample of what they want me to use : package javaapplication1;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.awt.geom.*;import java.util.Random;import javax.imageio.*;import java.io.File;import java.io.IOException;import java.awt.image.BufferedImage;import java.awt.event.*;import java.util.Calendar; public class JavaApplication1 extends JApplet { public static void main(String[] args) { JFrame frame=new JFrame(); frame.setTitle("hello"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JApplet applete =new JavaApplication1(); applete.init();…arrow_forwardWrite a java program that shows a square frame filled with 10 buttons labeled 1 to 10, when one of the buttons is clicked, it shows the message "you clicked the # button", # meaning the corisponding button that was clickedarrow_forwardWrite a program that deals a number of cards (their numerical values) to a player's hand. To begin, the program asks the player for the values of the deck of cards. Then, the program deals the first two cards of the deck to a player's hand, and asks him if he wants another card. If he does not want a card, the program ends. If he wants a card, the program deals the next available card in the deck, adds it to the player's hand, and asks the player if he wants another card. The dealing process repeats as long as the user continues to accept cards, or until the cards in the deck run out. Card dealing involves copying the available card from the deck vector to another vector, which stores the player's hand, at the next available position. Assume that the deck of cards consists of only 10 cards with numerical values from 1 to 10, which the player will enter by keyboard before the program deals. The following functions must be implemented/used: enterDeckValues. - This…arrow_forward
- Database System ConceptsComputer ScienceISBN:9780078022159Author:Abraham Silberschatz Professor, Henry F. Korth, S. SudarshanPublisher:McGraw-Hill EducationStarting Out with Python (4th Edition)Computer ScienceISBN:9780134444321Author:Tony GaddisPublisher:PEARSONDigital Fundamentals (11th Edition)Computer ScienceISBN:9780132737968Author:Thomas L. FloydPublisher:PEARSON
- C How to Program (8th Edition)Computer ScienceISBN:9780133976892Author:Paul J. Deitel, Harvey DeitelPublisher:PEARSONDatabase Systems: Design, Implementation, & Manag...Computer ScienceISBN:9781337627900Author:Carlos Coronel, Steven MorrisPublisher:Cengage LearningProgrammable Logic ControllersComputer ScienceISBN:9780073373843Author:Frank D. PetruzellaPublisher:McGraw-Hill Education