Design and write a program to calculate the numerology number, zodiac start sign, or Chinese horoscope sign of a person, given a string containing their name and date of birth.
The program should provide at least the following functions:
1. Presents the user with a menu allowing them to choose either to enter a name and date of birth, perform calculations on a previously entered name and date of birth. Or exit the system. A second menu should be given, asking the user to choose to calculate the numerological number, zodiac, or Chinese horoscope sign from the data given or stored by the system. The user should be able to choose to perform one or all of these calculations on either the new record, one of the records stored, or all of the stored records.
2. Allow the user to have multiple selections for the one name / date of birth combination.
3. Each name and date of birth combination should be entered in one string, and stored in a structure. The program should store up to 20 such structures in an array, but should not insist that the user enters all 20 at the same time.
4. Your program should allow for leap years in the number of days in February. The formula for calculating a leap year is as follows.
A leap year may be determined by the following rule:
§ Any year which is a multiple of 4 is a leap year
§ UNLESS it is also a multiple of 100 in which case it is NOT a leap year
§ UNLESS it is also a multiple of 400 in which case it IS a leap year
§ Eg 2100 is NOT a leap year, 2000 was.
5. Graceful exit, giving a termination message to let the user know that the program has ended.
6. It is expected that you will make use of functions, passing by reference and value, and any other constructs or strategies covered in the unit, as you feel is required by the specifications.
7. Your program should NOT use global variables.
Your program should verify all data entered to ensure that only correct data types with in the expected ranges are entered. Your program may reject strings that have numbers entered first, but should accept any separator with in the date. You should validate the date so that the month is within the range of 1 to 12, and days are within the range for each month.