Summary :
Provided code for different options / menu mentioned .
Notes :
Included validation for name , phone numbe using regular expression , same can be extended if required for other fields or refined if required .
Delete - For this menu the matched contact is deleted . as it was not clear from the mentioned in above quesiton.
Python Code :
import re
class Contact :
"""
define initialization
function with default parameters - blank and zero for first name ,
last name & phone number respectively.
"""
def __init__(self,fName="" ,
lName="",pNumber=0):
self.firstName =
fName
self.lastName =
lName
self.phoneNumber =
pNumber
def getFirstName(self) :
return
self.firstName
def getLastName(self):
return self.lastName
def getPhone(self):
return
self.phoneNumber
def setFirstName(self,name):
self.firstName =
name
def setLastName(self,name):
self.lastName = name
def setPhone(self,phone):
self.phoneNumber =
phone
def __str__(self) :
rstr = "Name : " +
self.firstName + ", " + self.lastName + " ; Phone : " +
str(self.phoneNumber )
return rstr
def readFirstName(self ) :
""" This function reads
input from User and validates using regular express whether input
word only has alphabets
then sets the values to First name and exits
otherwise repeatedly prompts user for valid input
"""
flag = True
while ( flag ) :
name = input("Enter First Name : ")
if ( re.match("^[a-zA-Z]*$", name) ) :
self.setFirstName(name)
flag = False
else :
print("Enter Valid input ")
def readLastName(self ) :
flag = True
while ( flag ) :
name = input("Enter Last Name : ")
if ( re.match("^[a-zA-Z]*$", name) ) :
self.setLastName(name)
flag = False
else :
print("Enter Valid input ")
def readPhone(self) :
flag = True
while ( flag ) :
name = input("Enter Phone Number : ")
if ( re.match("^[0-9- ]*$", name) ) :
self.setPhone(name)
flag = False
else :
print("Enter Valid input ")
class Family(Contact) :
def
__init__(self,fName="",lName="",phone=0,relationship=""):
super().__init__(fName,lName,phone)
self.relationship =
relationship
def getRelation(self) :
return
self.relationship
def setRelation(self,relation_str):
self.relationship =
relation_str
def __str__(self) :
return super().__str__()
+ " ; Relation : " + self.relationship
class Friend(Contact) :
def
__init__(self,fName="",lName="",phone=0,dateMet=0):
super().__init__(fName,lName,phone)
self.dateMet =
dateMet
def getDateMet(self) :
return self.dateMet
def setDateMet(self,dateM):
self.dateMet = dateM
def __str__(self) :
return super().__str__()
+ " ; DateMet : " + self.dateMet
def readFamilyContacts(filename , contactType):
fContacts = []
if contactType == "family" :
flname =
"family.txt"
elif contactType == "friend":
flname =
"friend.txt"
else :
print(" Invalid contact
Type ")
return []
try :
with open(flname, 'r')
as file1:
lines = file1.readlines()
for line0 in lines :
#print("Line ", line)
line = line0.strip()
fields = line.split(";")
if ( len(fields) == 3 ) :
#print("Fields ", fields[0] , fields[1], fields[2])
name = fields[0].split(":")
names = name[1].split(",")
phoneNum = fields[1].split(":")
lastfield = fields[2].split(":")
#print("Names : ", names )
#print("Phone nUm " , phoneNum )
#print("Last field " , lastfield)
if contactType == "family" :
#relationShip = lastfield.split(":")
contact = Family(names[0],names[1],phoneNum[1],lastfield[1])
fContacts.append(contact)
if contactType == "friend" :
#dateMet = lastfield.split(":")
contact = Friend(names[0],names[1],phoneNum[1],lastfield[1])
fContacts.append(contact)
return fContacts
except(FileNotFoundError) :
print("Input file not
found ")
return []
def showMenu(itype) :
if ( itype == 1 ) :
print("Choose from
following :")
print("
1.Add Contact")
print("
2.Edit Contact")
print("
3.Delete Contact")
print("
4.View Contact")
print("
5.Exit")
else :
print("Choose from
following : ")
print(" 1.
Family")
print(" 2.
Friend")
def getChoice(itype) :
flag = True
ichoice = 0
while(flag ) :
try :
input_str = input("Enter your Choice : ")
ichoice = int(input_str)
if ( itype == 1 ) :
upper_limit = 5
else :
upper_limit = 2
if ( ichoice < 1 ) or ( ichoice > upper_limit ):
print(" Enter valid input , for eg 1 or " + str(upper_limit)
)
else :
flag = False
break
except ValueError as e
:
print(" Enter valid input , for eg 1 or " + str(upper_limit) )
return ichoice
def addContact() :
""" This function doesn't take any
parameters
It prompts user for
which type of contact to be created and then
prompts for name ,
phonenum and other input
creates a contact object
and returns
"""
showMenu(2)
input_str = getChoice(2)
contact_obj = None
if ( input_str == 1 ) :
contact_obj =
Family()
contact_obj.readFirstName()
contact_obj.readLastName()
contact_obj.readPhone()
relation_str =
input("Enter relationship : ")
contact_obj.setRelation(relation_str)
else :
contact_obj =
Friend()
contact_obj.readFirstName()
contact_obj.readLastName()
contact_obj.readPhone()
date_met = input("Enter
Date Met : ")
contact_obj.setDateMet(date_met)
return contact_obj
def editContact(contacts) :
""" This function takes contacts list as the
input and prompts user to input the name of the contact
and modify the
contact
"""
name = input("Enter the name of the Contact to be modified : ")
modify_item = None
for item in contacts :
if ( name in
item.getFirstName() or name in item.getLastName() ) :
phone_num = input("Enter updated phone number : ")
if ( len(phone_num) > 0 ) :
item.setPhone(phone_num)
# Check if the object
type is Family or Friend and decide to udpate respectively
if isinstance(item, Family ) :
relation_str = input("Enter updated relationship : ")
if ( len(relation_str) > 0 ) :
item.setRelation(relation_str)
if isinstance(item, Friend ) :
date_met = input("Enter updated date met : ")
if ( len(date_met) > 0 ) :
item.setDateMet(date_met)
break
def deleteContact(contacts) :
""" This function takes contacts list as the
input and prompts user to input the name of the contact
and deletes the
matched
"""
name = input("Enter the name of the Contact to be Deleted : ")
modify_item = None
for item in contacts :
if ( name in
item.getFirstName() or name in item.getLastName() ) :
contacts.remove(item)
break
def storeContacts(contacts) :
try :
file1 =
open("family.txt", 'w')
file2 =
open("friend.txt", 'w')
for item in contacts
:
# Check if the object
type is Family or Friend and decide to write respective files
if ( isinstance(item,Family)):
file1.write(item.__str__() + "\n")
if (
isinstance(item,Friend)):
file2.write(item.__str__() + "\n")
except(FileNotFoundError) :
print("Input file not
found ")
return []
if __name__ == '__main__':
#b1 = Family("X1","x2",123456789,"Bro")
#print( b1)
#f1 =
Friend("xk","kd",3432983928,"24/01/3993")
#print(f1)
family_list =
readFamilyContacts("family.txt","family")
friend_list =
readFamilyContacts("friend.txt","friend")
contacts_list = family_list + friend_list
ip = 1
while ( ip != 5 ) :
showMenu(1)
ip = getChoice(1)
if ( ip == 1 ) :
c_obj
= addContact()
contacts_list.append(c_obj)
if ( ip == 2 )
:
editContact(contacts_list)
if ( ip == 3 )
:
deleteContact(contacts_list)
if ( ip == 4 ) :
for cnt in contacts_list :
print( cnt )
if ( ip == 5 ) :
storeContacts(contacts_list)
Output :



language:python VELYIEW Design a program that you can use to keep information on your family or...
Please help!!
(C++ PROGRAM)
You will design an online contact list to keep track of names
and phone numbers.
·
a. Define a class contactList that can store a name and up to 3
phone numbers (use an array for the phone numbers). Use
constructors to automatically initialize the member variables.
b.Add the following operations to your program:
i. Add a new contact. Ask the user to enter the name and up to 3
phone numbers.
ii. Delete a contact...
Problem: Contact Information Sometimes we need a program that have all the contact information like name, last name, telephone, direction and something we need to know about that person (notes). Write a program in java language with GUI, classes, arrays, files and inheritance that make this possible. In the first layer, the user should see all the contacts and three buttons (add, delete, edit). *Add button: If the user click the button add, a new layer should appear and should...
a. Define the struct node that can store a name and up to 3 phone numbers (use an array for the phone numbers). The node struct will also store the address to the next node. b. Define a class contactList that will define a variable to keep track of the number of contacts in the list, a pointer to the first and last node of the list. c. Add the following methods to the class: i. Add a new contact....
This program is used to create a phonebook for storing contact information into a text file. The program begins by asking the user to provide a name for the file that will contain their phone book information. It will then ask the user to provide the names and numbers of their contacts. It should keep asking the user for contact information until they type in Done (case-sensitive). After the user types Done, store all contact information into the file name...
DESCRIPTION Create a C++ program to manage phone contacts. The program will allow the user to add new phone contacts, display a list of all contacts, search for a specific contact by name, delete a specific contact. The program should provide the user with a console or command line choice menu about possible actions that they can perform. The choices should be the following: 1. Display list of all contacts. 2. Add a new contact. 3. Search for a contact...
Phonebook This program is used to create a phonebook for storing contact information into a text file. The program begins by asking the user to provide a name for the file that will contain their phone book information. It will then ask the user to provide the names and numbers of their contacts. It should keep asking the user for contact information until they type in Done (case-sensitive). After the user types Done, store all contact information into the file...
(JAVA)Using classes and inheritance, design an online address book to
keep track of the names, addresses, phone numbers and birthdays of
family members, friends and business associates. Your program
should be able to handle a maximum of 500 entries.Define the following classes: Class Address to store a street name, city, state and zip
code. Class Date to store the day, month and year. Class Person to store a person's last name and first name. Class ExtPerson that extends the class...
Design and implement a simple phone book application that stores and manipulates contacts and their phone numbers using Phyton. Requirements specification: The system to be designed and implemented is a phone book that deals with contacts data and their phone numbers, similar in functionality to contacts apps found on smartphones. The system should be able to record and manipulate (add, update, delete, and search) data about contacts and their phone numbers. The data need to be stored in a text...
Requirements Create an Address Book class in Java for general use with the following behaviors: 1. Constructor: public Address Book Construct a new address book object. • A contact has four fields: first name, last name, email and phone. (There could be more information for a real contact. But these are sufficient for the assignment.) . The constructor reads from the disk to retrieve previously entered contacts. If previous contacts exist, the address book will be populated with those contacts...
C++ In this assignment, you will write a class that implements a contact book entry. For example, my iPhone (and pretty much any smartphone) has a contacts list app that allows you to store information about your friends, colleagues, and businesses. In later assignments, you will have to implement this type of app (as a command line program, of course.) For now, you will just have to implement the building blocks for this app, namely, the Contact class. Your Contact...