# BMIS 209 Programming Assignment 3 Instructions

Adapted from: Deitel & Deitel (2011). Visual C# 2010 How to Program (4th ed.). Pearson Education, Inc.

Write a recursive method called Power(base, exponent) that, when called, returns base exponent .

For example, Power ( 3, 4 ) = 3 * 3 * 3 * 3.

Assume that exponent is an integer greater than or equal to 1. The recursion step should use the relationship:

base exponent = base * base exponent – 1

The terminating condition occurs when exponent is equal to 1 because

base 1 = base

Incorporate this method into an application that enables the user to enter the base and exponent.

Requirements:

In the Main() method, declare three arrays of long data types: baseNumbers, exponents, and results. Each array should be created to hold exactly 5 members.

Using a FOR loop, populate the baseNumbers array with random integers between 1 and 50 and populate the exponents array with random integers between 1 and 10. Use a random number generator to create these random numbers.

Using another FOR loop, call the Power method, passing it a member of the baseNumbers array and a member of the exponents array for each iteration of the loop. Store the returned values in the results array.

The Power method should use the algorithm described above and MUST be recursive, taking two longs as arguments and returning a long data type.

Create another method called PrintArrays that takes as arguments the three arrays you created above and returns void. The method should print a header as “Base”, “Exponent”, and “Result” with each word separated with a single tab character. Using a FOR loop, iterate over each array using the GetUpperBound method to determine the condition for which the loop terminates. For each iteration of the loop, print out the base, exponent, and result from each array under the appropriate column headings. (Hint: You may need to use one or more tabs to separate the data values to make them line up with the headers above.)

The Main() method should call the PrintArrays method, passing in the three arrays as arguments.

Your output should resemble the example below:

Programming Assignment 4 Instructions

Adapted from: Deitel & Deitel (2011). Visual C# 2010 How to Program (4th ed.). Pearson Education, Inc.

Create a class called SavingsAccount. Use a static variable called annualInterestRate to store the annual interest rate for all account holders. Each object of the class contains a private instance variable savingsBalance, indicating the amount the saver currently has on deposit. Provide method CalculateMonthlyInterest to calculate the monthly interest by multiplying the savingsBalance by annualInterestRate divided by 12 – this interest should be added to savingsBalance. Provide static method setAnnualInterestRate to set the annualInterestRate to a new value. Write an application to test class SavingsAccount. Create three savingsAccount objects, saver1, saver2, and saver3 with balances of \$2,000.00, \$3,000.00, and 0.00, respectively. Set annualInterestRate to 4%, then calculate the monthly interest and display the new balances for both savers. Then set the annualInterestRate to 5%, calculate the next month’s interest and display the new balances for both savers.

Technical Requirements:

Create SavingsAccount class with static variable annualInterestRate and private instance variables savingsBalance (double) and savingsAccountName (string).

Create a mutator method to set the savingsAccountName. Call this method setSavingsAccountName. The method should take a string argument and return void.

Create an accessor method to retrieve the savingsAccountName. Call this method getSavingsAccountName. The method should take no arguments and return a string (i.e. the savingsAccountName).

Create a mutator method to set the savingsBalance. Call this method setSavingsBalance. The method should take a double argument and return void.

Create an accessor method to retrieve the savingsBalance. Call this method getSavingsBalance. The method should take no arguments and return a double (i.e. the savingsBalance).

Include two constructors. The first takes no arguments and sets the savingsBalance variables to zero and sets the savingsAccountName to an empty string by calling the second (i.e. two argument) constructor with 0 and an empty string. The second constructor takes one double argument (the savingsBalance) and one string argument (the savingsAccountName), and sets the savingsBalance by calling the setSavingsBalance method and setsavingsAccountName method, respectively.

Create CalculateMonthlyInterest method with formula. The method should return void.

Create setAnnualInterestRate method to take a double argument representing the annualInterestRate and return void.

Create PrintSavingsAccount method to display the savingsBalance, savingsAccountName, and annualInterestRate for an object. Use the output shown below as a guideline for the display.

Create a separate class called SavingsAccountTest, which contains the Main() method.

In the Main() method, create three savingsAccount objects called saver1, saver2, and saver3. Initialize saver1 and saver2 with the balances listed above and the names “Saver_One” and “Saver_Two”, respectively. Do not initialize saver3 with anything. Instead, create the object by invoking its zero-argument constructor, which will initialize its balance to 0 and its name to an empty string.

In the Main() method, call setAnnualInterestRate to set the interest rate to 4%.

Next, call the setSavingsAccountName for saver3 to set its name to “Saver_Three”. Then, call the setSavingsAccountBalance for saver3 to set its balance to \$50,000.

Print the results by calling PrintSavingsAccount for each object.

Next, call the CalculateAnnualInterestRate method for all three saver objects.

Print the results again by calling PrintSavingsAccount for each object.

Next, change the annualInterestRate to 5% by calling the setAnnualInterestRate method.

Print the results again by calling PrintSavingsAccount for each object.

BMIS 209

Programming Assignment 5 Instructions

Adapted from: Deitel & Deitel (2011). Visual C# 2010 How to Program (4th ed.). Pearson Education, Inc.

Create an inheritance hierarchy that a bank might use to represent customers’ bank accounts. All customers at this back can deposit (i.e. credit) money into their accounts and withdraw (i.e. debit) money from their accounts. More specific types of accounts also exist. Savings accounts, for instance, earn interest on the money they hold. Checking accounts, on the other hand, charge a fee per transaction.

Create base class Account and derived classes SavingsAccount and CheckingAccount that inherit from class Account. Base class Account should include the following private instance variables: Balance, which is of type decimal to represent the account balance; AccountName, which is of type string and represents the account holder’s last name; and AccountNumber, which is an integer type that represents the account’s number. The class should provide a constructor that receives an account’s name, account number, and an initial balance. It should use initialize these instance variables using the appropriate mutator methods (i.e. setAccountName, setAccountNumber, and setBalance). The setBalance method should validate the initial balance to ensure that it’s greater than or equal to 0.0; if not, set the balance to 0. You should also include the appropriate accessor (i.e. “get”) methods. Also, the class should provide two other public methods: Method Credit should add an amount to the current balance. Method Debit should withdraw money from the Account and ensure that the debit amount does not exceed the Account’s balance. If it does, the balance should be left unchanged, and the method should print the message “Insufficient Funds.” Base class Account should also have a method called PrintAccount that prints the account’s name, number, and balance.

Derived class SavingsAccount should inherit the functionality of an Account, but also include a decimal instance variable indicating the interest rate (double) assigned to the Account. Call this variable InterestRate. SavingsAccount’s constructor should receive the account’s name, account number, initial balance, and an initial value for the interest rate. The constructor should call the base class constructor to initialize the account’s name, number, and balance. It should also call a method in its own class, setInterestRate, which should set the InterestRate variable and validate that the rate is a positive number. If the interest rate passed in is negative, set the interest rate to zero. SavingsAccount should provide public method CalculateInterest that takes no arguments and returns a decimal indicating the amount of interest earned by an account. Method CalculateInterest should determine this amount by multiplying the interest rate by the account balance. [Note: SavingsAccount should inherit methods Credit and Debit without modifying them.] Finally, create a method in this derived class that overrides the PrintAccount method in the base class. In it, call the base class method to print out the account’s name, number, and balance, and include code in the derived class’s method to print out the information specific to the derived class (i.e. InterestRate).

Derived class CheckingAccount should inherit from base class Account and include a decimal instance variable that represents the fee charged per transaction. Call this variable FeeCharged. CheckingAccount’s constructor should receive the account’s name, account number, initial balance, as well as a parameter indicating a fee amount. Create a mutator method, setFeeAmount, and call it from the constructor. If the fee amount is negative, the setFeeAmount should set it to zero. Class CheckingAccount should redefine methods Credit and Debit so that they subtract the fee from the account balance whenever either transaction is performed successfully. CheckingAccount’s versions of these methods should invoke the base-class Account to perform the updates to an account balance. CheckingAccount’s Debit method should charge a fee only if money is actually withdrawn (i.e. the debit amount does not exceed the account balance.) [Hint: Define Account’s Debit method so that it returns a bool indicating whether money was withdrawn. Then use the return value to determine whether a fee should be charged.] Finally, create a method in this derived class that overrides the PrintAccount method in the base class. In it, call the base class method to print out the account’s name, number, and balance, and include code in the derived class’s method to print out the information specific to the derived class (i.e. FeeCharged).

After defining the classes in this hierarchy, write an application that creates one object of each derived class and tests their methods. Add interest to the SavingsAccount object by first invoking its CalculateInterest method, then passing the returned interest amount to the object’s Credit method. The order of events should be performed as follows:

1. Create a new checking account object. Assign it an initial balance of \$1,000. The account name should be your last name concatenated with the word “Checking”, and the account number should be 1. The fee charged should be 3.00. Print a description of this transaction (i.e. “Created checking account with \$1,000 balance.”)

2. Create a new savings account object. Assign it an initial balance of \$2,000. The account name should be your last name concatenated with the work “Savings”, and the account number should be 2. The interest rate should be 5%. Print a description of this transaction (i.e. “Created savings account with \$2,000 balance.”)

3. Print the checking account object’s information.

4. Print the savings account object’s information

5. Deposit \$100 in the checking account and print a description of this transaction (i.e. “Deposit \$100 into checking.”) (this should generate a fee charged as well)

6. Print the checking account object’s information

7. Withdraw \$50 from the checking account and print a description of this transaction (i.e. “Withdraw \$50 from checking.”) (this should generate a fee charged as well)

8. Print the checking account object’s information

9. Try to withdraw \$6,000 from the checking account and print a description of this transaction (i.e. “Withdraw \$6,000 from checking.”) (This should not generate a fee but instead produce an error message that the user has Insufficient Funds. The balance should remain unchanged.)

10. Print the savings account object’s information

11. Deposit \$3,000 in the savings account and print a description of this transaction (i.e. “Deposit \$3,000 into savings.”)

12. Print the savings account object’s information

13. Withdraw \$200 from the savings account and print a description of this transaction (i.e. “Withdraw \$200 from savings.”)

14. Print the savings account object’s information

15. Calculate the interest on the savings account and print a description of this transaction (i.e. “Calculate Interest on savings.”)

16. Print the savings account object’s information

17. Try to withdraw \$10,000 from the savings account (This should produce the Insufficient Funds error message and leave the balance unchanged.) Print a description of this transaction (i.e. “Withdraw \$10,000 from savings.”)

18. Print the savings account object’s information

Programming Assignment 6 Instructions

Adapted from: Deitel & Deitel (2011). Visual C# 2010 How to Program (4th ed.). Pearson Education, Inc.

Develop a polymorphic banking application using the Account hierarchy you created in Assignment #5. Create the following two SavingsAccount objects and two CheckingAccount objects and store them in an array called “arrays” of Account references to the objects:

Account Name Account Number Initial Balance Fee Charged Interest Rate

[your name]- Checking -2 4 4,000 4.00

Using a “foreach” loop, iterate over each account in the array. For each Account in the array, first print the account. Next, allow the user to specify an amount of money to withdraw from the Account using method Debit and an amount of money to deposit into the Account using method Credit. Specifically, for each account, prompt the user to enter an amount to deposit in the account and call the Credit method. Print the object. Next, prompt the user to enter an amount to withdraw and call the Debit method. Print the object. After the user has made a deposit and a withdrawal from an account, calculate interest if the account is a SavingsAccount and print the object. To perform this step, you must first determine the object’s type. If the Account is a SavingsAccount, calculate the amount of interest owed to the Account using method CalculateInterest and print the account a final time. If the account is a CheckingAccount, you do not need to CalculateInterest nor print the account a final time.

Hint: To determine if an account is a savings or checking account, use the .getType method which returns a string representing the Name or FullName property. Then use the “.Equals” method to determine if the returned string is equal to the name of the class. For example, acct.getType().Name returns the string “SavingsAccount” or “CheckingAccount”. Once you have determined that an account is a SavingsAccount object, you must “cast” the account object into a SavingsAccount object in order to access its CalculateInterest method. I like to perform this in two steps: declare a different variable to hold the reference to the object that has been cast from an Account object into a SavingsAccount object. Then, using this new variable, invoke its CalculateInterest method. For example, at the beginning of the Main() method, I declare a variable of type SavingsAccount as follows:

SavingsAccount temp_account;

In my foreach loop, I have a variable called “acct” that is defined as an Account object. To downcast this Account object into a SavingsAccount object, I use the syntax:

temp_account = (SavingsAccount) acct;

At this point, because temp_account is a SavingsAccount object, I can invoke its CalculateInterest method:

temp_account.CalculateInterest();

Below is an example of the output. Try to make your output as similar as possible to that shown below.

Page 4 of 8

BMIS 209

Programming Assignment 3 Instructions

Adapted from: Deitel & Deitel (2011). Visual C# 2010 How to Program (4th ed.). Pearson Education, Inc.

Write a recursive method called Power(base, exponent) that, when called, returns base exponent .

For example, Power ( 3, 4 ) = 3 * 3 * 3 * 3.

Assume that exponent is an integer greater than or equal to 1. The recursion step should use the relationship:

base exponent = base * base exponent – 1

The terminating condition occurs when exponent is equal to 1 because

base 1 = base

Incorporate this method into an application that enables the user to enter the base and exponent.

Requirements:

In the Main() method, declare three arrays of long data types: baseNumbers, exponents, and results. Each array should be created to hold exactly 5 members.

Using a FOR loop, populate the baseNumbers array with random integers between 1 and 50 and populate the exponents array with random integers between 1 and 10. Use a random number generator to create these random numbers.

Using another FOR loop, call the Power method, passing it a member of the baseNumbers array and a member of the exponents array for each iteration of the loop. Store the returned values in the results array.

The Power method should use the algorithm described above and MUST be recursive, taking two longs as arguments and returning a long data type.

Create another method called PrintArrays that takes as arguments the three arrays you created above and returns void. The method should print a header as “Base”, “Exponent”, and “Result” with each word separated with a single tab character. Using a FOR loop, iterate over each array using the GetUpperBound method to determine the condition for which the loop terminates. For each iteration of the loop, print out the base, exponent, and result from each array under the appropriate column headings. (Hint: You may need to use one or more tabs to separate the data values to make them line up with the headers above.)

The Main() method should call the PrintArrays method, passing in the three arrays as arguments.

Your output should resemble the example below:

Programming Assignment 4 Instructions

Adapted from: Deitel & Deitel (2011). Visual C# 2010 How to Program (4th ed.). Pearson Education, Inc.

Create a class called SavingsAccount. Use a static variable called annualInterestRate to store the annual interest rate for all account holders. Each object of the class contains a private instance variable savingsBalance, indicating the amount the saver currently has on deposit. Provide method CalculateMonthlyInterest to calculate the monthly interest by multiplying the savingsBalance by annualInterestRate divided by 12 – this interest should be added to savingsBalance. Provide static method setAnnualInterestRate to set the annualInterestRate to a new value. Write an application to test class SavingsAccount. Create three savingsAccount objects, saver1, saver2, and saver3 with balances of \$2,000.00, \$3,000.00, and 0.00, respectively. Set annualInterestRate to 4%, then calculate the monthly interest and display the new balances for both savers. Then set the annualInterestRate to 5%, calculate the next month’s interest and display the new balances for both savers.

Technical Requirements:

Create SavingsAccount class with static variable annualInterestRate and private instance variables savingsBalance (double) and savingsAccountName (string).

Create a mutator method to set the savingsAccountName. Call this method setSavingsAccountName. The method should take a string argument and return void.

Create an accessor method to retrieve the savingsAccountName. Call this method getSavingsAccountName. The method should take no arguments and return a string (i.e. the savingsAccountName).

Create a mutator method to set the savingsBalance. Call this method setSavingsBalance. The method should take a double argument and return void.

Create an accessor method to retrieve the savingsBalance. Call this method getSavingsBalance. The method should take no arguments and return a double (i.e. the savingsBalance).

Include two constructors. The first takes no arguments and sets the savingsBalance variables to zero and sets the savingsAccountName to an empty string by calling the second (i.e. two argument) constructor with 0 and an empty string. The second constructor takes one double argument (the savingsBalance) and one string argument (the savingsAccountName), and sets the savingsBalance by calling the setSavingsBalance method and setsavingsAccountName method, respectively.

Create CalculateMonthlyInterest method with formula. The method should return void.

Create setAnnualInterestRate method to take a double argument representing the annualInterestRate and return void.

Create PrintSavingsAccount method to display the savingsBalance, savingsAccountName, and annualInterestRate for an object. Use the output shown below as a guideline for the display.

Create a separate class called SavingsAccountTest, which contains the Main() method.

In the Main() method, create three savingsAccount objects called saver1, saver2, and saver3. Initialize saver1 and saver2 with the balances listed above and the names “Saver_One” and “Saver_Two”, respectively. Do not initialize saver3 with anything. Instead, create the object by invoking its zero-argument constructor, which will initialize its balance to 0 and its name to an empty string.

In the Main() method, call setAnnualInterestRate to set the interest rate to 4%.

Next, call the setSavingsAccountName for saver3 to set its name to “Saver_Three”. Then, call the setSavingsAccountBalance for saver3 to set its balance to \$50,000.

Print the results by calling PrintSavingsAccount for each object.

Next, call the CalculateAnnualInterestRate method for all three saver objects.

Print the results again by calling PrintSavingsAccount for each object.

Next, change the annualInterestRate to 5% by calling the setAnnualInterestRate method.

Print the results again by calling PrintSavingsAccount for each object.

Page 1 of 4

Page 1 of 4

CSIS 209 Programming Assignment 4 Instructions Adapted from: Deitel & Deitel (2017). Visual C# 2015 How to Program (6th ed.). Pearson Education, Inc. Write a recursive method called Power(base, exponent) that, when called, returns base exponent . For example, Power ( 3, 4 ) = 3 * 3 * 3 * 3. Assume that exponent is an integer greater than or equal to 1. The recursion step should use the relationship: base exponent = base * base exponent – 1 The terminating condition occurs when exponent is equal to 1 because base 1 = base Incorporate this method into an application that enables the user to enter the base and exponent. Requirements: In the Main() method, declare three arrays of long data types: baseNumbers, exponents, and results. Each array should be created to hold exactly 5 members. Using a FOR loop, populate the baseNumbers array with random integers between 1 and 50 and populate the exponents array with random integers between 1 and 10. Use a random number generator to create these random numbers. Using another FOR loop, call the Power method, passing it a member of the baseNumbers array and a member of the exponents array for each iteration of the loop. Store the returned values in the results array. The Power method should use the algorithm described above and MUST be recursive, taking two longs as arguments and returning a long data type. Create another method called PrintArrays that takes as arguments the three arrays you created above and returns void. The method should print a header as “Base”, “Exponent”, and “Result” with each word separated with a single tab character. Using a FOR loop, iterate over each array using the GetUpperBound method to determine the condition for which the loop terminates. For each iteration of the loop, print out the base, exponent, and result from each array under the appropriate column headings. (Hint: You may need to use one or more tabs to separate the data values to make them line up with the headers above.) The Main() method should call the PrintArrays method, passing in the three arrays as arguments. Your output should resemble the example below: Page 2 of 2

BMIS 209

Programming Assignment 1 Instructions

Adapted from: Deitel & Deitel (2011). Visual C# 2010 How to Program (4th ed.). Pearson Education, Inc.

Write an application that asks the user to enter two integers and displays “The two numbers you entered are: “, followed by the two numbers on the screen.

Next , determine the sum, difference (result of first number minus the second number), product, and quotient (result of first number divided by the second number), and modulus (remainder of the first number divided by the second number) and print these values to the screen.

Finally, determine the larger of the two integers, and print to the screen “The larger of the two numbers is: “, followed by the larger integer. If the two numbers are equal, print “The two numbers are equal.”

Use the example below to format your output.

Programming Assignment 2 Instructions

Adapted from: Deitel & Deitel (2011). Visual C# 2010 How to Program (4th ed.). Pearson Education, Inc.

A large company pays its salespeople on a commission basis. The salespeople receive \$200 per week plus 9% of their gross sales for that week. For example, a salesperson who sells \$5,000 worth of merchandise in a week receives \$200 plus 9% of \$5,000, or a total of \$650. You’ve been supplied with a list of the items sold by each salesperson. The values of these items are as follows:

Item Value

1 239.99

2 129.75

3 99.95

4 350.89

Develop a C# application that inputs one salesperson’s items sold for the last week, then calculates and displays that salesperson’s earnings. There’s no limit to the number of items that can be sold by a salesperson. You do not have to implement this with classes and objects.

Technical Requirements:

Prompt the user to enter the salesperson’s name, and store this name in a variable.

Prompt the user to enter an item number and a quantity sold of that item. Store these two entries in two separate variables called “intItem” and “intQuantity”.

Using a DO-WHILE control structure, loop until the user enters -1 for the item number.

Calculate the amount of sales for an item and store the result in a variable called dblItemSales.

After the user enters an item number and a quantity, print to the screen: the salesperson’s name “has sold “ [intQuantity] “of item # [intItem].

Accumulate the total sales in a variable called dblTotalSales by using a SWITCH statement to select the correct value to be multiplied by the quantity sold and adding this result to a running total, which is stored in the variable dblTotalSales.

If the user enters a number other than 1, 2, 3, or 4, display the message “Invalid Entry” and re-prompt the user to enter an Item Number. Make sure you do not perform any calculations or prompt the user to enter a quantity if the item number is incorrect.

After accumulating the total sales for an employee (that is, after the user has entered a -1 to quit), print to the screen [Salesperson’s name] sold [number of items] of item # [ item number].

See below for examples of the required output.

Programming: Creating a User Interface Assignment Instructions

Overview

CMS Systems, Inc. is a company that provides information systems consulting services to companies in the telecom industry in the United States and the United Kingdom. Due to its success, CMS is hoping to expand its operations into other parts of Europe. Despite its large size, CMS currently uses a manual/spreadsheet-based process for maintaining employee and client data. Management has now decided to implement a company-wide application that will keep track of all its employees’ hours, calculate employee payroll, and produce invoices for clients based on hours worked by employees.

CMS currently employs 1,500 individuals (900 in the US and 600 in the UK) who serve as systems analysts, developers, managers, testers, maintenance engineers, accountants, lawyers, and sales representatives.

The company also has more than 200 clients in the US and UK. Clients can have one or more contracts with CMS to provide a variety of consulting services. For example, a single client might have one contract for maintenance of an existing system and have another contract (sometimes called a work order by the sales force) for the development of a new system.

Some clients are billed based upon negotiated contracts, which stipulate a pre-determined amount for charges –regardless of the number of hours that employees work on the contracts. Such contracts are called “fixed price” contracts. Other clients are billed based on the total number of hours provided by CMS employees multiplied by a rate per employee type per employee hour. These arrangements are called “T&M – Time and Materials” contracts. T&M contracts specify a maximum of forty hours per week for which the client is willing to pay. Any amounts over 40 hours per week are not billable but are considered discounted hours.

For T&M contracts, the rate per hour for each consultant is determined by the employee’s level of expertise. For example, a client pays \$100/hour for an employee who is at the level of Systems Analyst I. That same client pays \$250/hour for an employee designated as a Manager II.

T&M and Fixed Price contracts are the only two types of contracts currently used by CMS.

All CMS employees must keep a record of the time they spend working for each client on a weekly basis. Because employees can work for more than one client and perform different functions for each client, CMS utilizes “project management” to keep track of employee assignments to client contracts. Employees can be assigned to work on more than one project at a given time. In fact, it is not unusual for an employee to spend time on two or more different projects within the same day.

Just as a client can have more than one contract with CMS, a contract can consist of more than one project. For example, a contract for the development of a new system could be fulfilled in multiple phases. Phase I could include implementation at one client site using a group of consultants near that site. Phase II could include implementation at a different site with a potentially different set of consultants. Both phases are considered separate projects, even though they are governed by the same contract.

The number of hours worked for each employee on each project must be recorded on a weekly basis. Employees currently log their time using an Excel worksheet. An example of this worksheet is presented below. Notice that the employee’s supervisor is listed on the worksheet. A supervisor is currently required to approve his employees’ timesheets by placing his initials beside his name.

Instructions

For this assignment, you are required to create the GUI for a timekeeping/payroll system for CMS.

The system should first allow an employee to enter his name and record the time he worked on each project for a given week. Using the spreadsheet above as a guideline, the system must allow the user to enter his name and the name of his supervisor. Next, the user must enter the number of the week for which he is entering time. Assume a maximum of 52 weeks in a year. Make sure the employee enters only a valid week number.

To record an employee’s hours, the user must enter the name of a client, a client’s contract, and a project. For each of the seven days in a week, the user must enter hours worked or check a box that indicates the day is a weekend, a holiday, or a vacation day. If the employee fails to enter any hours for a day and fails to check the weekend/holiday/vacation box for that day, the system should warn the user that the given day is missing information. The system should also ensure that if any work hours are entered for a day, the checkbox for that day should NOT be checked. Finally, the system should ensure that a user cannot enter more than 24 hours in a single day. Once the hours are entered, the user should be able to “Submit” his hours by clicking a button that will calculate his payroll information for the week and display it on the same screen.

Payroll information is calculated as follows:

All employees are paid for hours worked at a rate of \$15 US dollars per hour. If the number of hours worked in the week exceeds 40, the employee is paid time and a half for his overtime hours. For example, assume an employee works 50 hours during a week, he will receive (40 X \$15) + (10 overtime hours X (1.5 X \$15)) = \$825.00. If an employee works less than 40 hours in a week, the system should make note of this fact in a label beside the supervisor’s name. An example payroll calculation is shown below:

 Payroll information for John Doe for the week ending Week 1: Total Hours Worked: 42.00 Regular Hours Worked: 40.00 Rate per regular work hour: \$ 15.00 Regular Hourly Pay: \$ 600.00 OverTime Hours Worked: 2.00 Rate per overtime work hour: \$ 22.50 Overtime Hourly Pay: \$ 45.00 Gross Pay: \$ 645.00 Number of Weekend/Holiday/Vacation days claimed: 2

Page 2 of 2

BMIS 209

Programming Assignment 1 Instructions

Adapted from: Deitel & Deitel (2011). Visual C# 2010 How to Program (4th ed.). Pearson Education, Inc.

Write an application that asks the user to enter two integers and displays “The two numbers you entered are: “, followed by the two numbers on the screen.

Next , determine the sum, difference (result of first number minus the second number), product, and quotient (result of first number divided by the second number), and modulus (remainder of the first number divided by the second number) and print these values to the screen.

Finally, determine the larger of the two integers, and print to the screen “The larger of the two numbers is: “, followed by the larger integer. If the two numbers are equal, print “The two numbers are equal.”

Use the example below to format your output.

Programming Assignment 2 Instructions

Adapted from: Deitel & Deitel (2011). Visual C# 2010 How to Program (4th ed.). Pearson Education, Inc.

A large company pays its salespeople on a commission basis. The salespeople receive \$200 per week plus 9% of their gross sales for that week. For example, a salesperson who sells \$5,000 worth of merchandise in a week receives \$200 plus 9% of \$5,000, or a total of \$650. You’ve been supplied with a list of the items sold by each salesperson. The values of these items are as follows:

Item Value

1 239.99

2 129.75

3 99.95

4 350.89

Develop a C# application that inputs one salesperson’s items sold for the last week, then calculates and displays that salesperson’s earnings. There’s no limit to the number of items that can be sold by a salesperson. You do not have to implement this with classes and objects.

Technical Requirements:

Prompt the user to enter the salesperson’s name, and store this name in a variable.

Prompt the user to enter an item number and a quantity sold of that item. Store these two entries in two separate variables called “intItem” and “intQuantity”.

Using a DO-WHILE control structure, loop until the user enters -1 for the item number.

Calculate the amount of sales for an item and store the result in a variable called dblItemSales.

After the user enters an item number and a quantity, print to the screen: the salesperson’s name “has sold “ [intQuantity] “of item # [intItem].

Accumulate the total sales in a variable called dblTotalSales by using a SWITCH statement to select the correct value to be multiplied by the quantity sold and adding this result to a running total, which is stored in the variable dblTotalSales.

If the user enters a number other than 1, 2, 3, or 4, display the message “Invalid Entry” and re-prompt the user to enter an Item Number. Make sure you do not perform any calculations or prompt the user to enter a quantity if the item number is incorrect.

After accumulating the total sales for an employee (that is, after the user has entered a -1 to quit), print to the screen [Salesperson’s name] sold [number of items] of item # [ item number].

See below for examples of the required output.

PROGRAMMING ASSIGNMENT 6 INSTRUCTIONS
Develop a polymorphic banking application using the Account hierarchy you created in Assignment #5. Create the following two SavingsAccount objects and two CheckingAccount objects and store them in an array called “arrays” of Account references to the objects:
Account Name Account Number Initial Balance Fee Charged Interest Rate
[your name]- Checking -2 4 4,000 4.00

Using a “foreach” loop, iterate over each account in the array. For each Account in the array, first print the account. Next, allow the user to specify an amount of money to withdraw from the Account using method Debit and an amount of money to deposit into the Account using method Credit. Specifically, for each account, prompt the user to enter an amount to deposit in the account and call the Credit method. Print the object. Next, prompt the user to enter an amount to withdraw and call the Debit method. Print the object. After the user has made a deposit and a withdrawal from an account, calculate interest if the account is a SavingsAccount and print the object. To perform this step, you must first determine the object’s type. If the Account is a SavingsAccount, calculate the amount of interest owed to the Account using method CalculateInterest and print the account a final time. If the account is a CheckingAccount, you do not need to CalculateInterest nor print the account a final time.
Hint: To determine if an account is a savings or checking account, use the .getType method which returns a string representing the Name or FullName property. Then use the “.Equals” method to determine if the returned string is equal to the name of the class. For example, acct.getType().Name returns the string “SavingsAccount” or “CheckingAccount”. Once you have determined that an account is a SavingsAccount object, you must “cast” the account object into a SavingsAccount object in order to access its CalculateInterest method. I like to perform this in two steps: declare a different variable to hold the reference to the object that has been cast from an Account object into a SavingsAccount object. Then, using this new variable, invoke its CalculateInterest method. For example, at the beginning of the Main() method, I declare a variable of type SavingsAccount as follows:
SavingsAccount temp_account;
In my foreach loop, I have a variable called “acct” that is defined as an Account object. To downcast this Account object into a SavingsAccount object, I use the syntax:
temp_account = (SavingsAccount) acct;
At this point, because temp_account is a SavingsAccount object, I can invoke its CalculateInterest method:
temp_account.CalculateInterest();

Below is an example of the output. Try to make your output as similar as possible to that shown below.

BMIS 209

Programming Assignment 8 Instructions

General Background Information:

CMS Systems, Inc. is a company that provides information systems consulting services to companies in the telecom industry in the United States and the United Kingdom. Due to its success, CMS is hoping to expand its operations into other parts of Europe. Despite its large size, CMS currently uses a manual/spreadsheet-based process for maintaining employee and client data. Management has now decided to implement a company-wide application that will keep track of all of its employees’ hours, calculate employee payroll, and produce invoices for clients based on hours worked by employees.

CMS currently employs 1,500 individuals (900 in the US and 600 in the UK) who serve as systems analysts, developers, managers, testers, maintenance engineers, accountants, lawyers, and sales representatives.

The company also has more than 200 clients in the US and UKx. Clients can have one or more contracts with CMS to provide a variety of consulting services. For example, a single client might have one contract for maintenance of an existing system and also have another contract (sometimes called a work order by the sales force) for the development of a new system.

Some clients are billed based upon negotiated contracts, which stipulate a pre-determined amount for charges –regardless of the number of hours that employees actually work on the contracts. Such contracts are called “fixed price” contracts. Other clients are billed based on the total number of hours provided by CMS employees multiplied by a rate per employee type per employee hour. These arrangements are called “T&M – Time and Materials” contracts. T&M contracts specify a maximum of forty hours per week for which the client is willing to pay. Any amounts over 40 hours per week are not billable, but are considered discounted hours.

For T&M contracts, the rate per hour for each consultant is determined by the employee’s level of expertise. For example, a client pays \$100/hour for an employee who is at the level of Systems Analyst I. That same client pay \$250/hour for an employee designated as a Manager II.

T&M and Fixed Price contracts are the only two types of contracts currently used by CMS.

All CMS employees must keep a record of the time they spend working for each client on a weekly basis. Because employees can work for more than one client and perform different functions for each client, CMS utilizes “project management” to keep track of employee assignments to client contracts. Employees can be assigned to work on more than one project at a given time. In fact, it is not unusual for an employee to spend time on two or more different projects within the same day.

Just as a client can have more than one contract with CMS, a contract can consist of more than one project. For example, a contract for the development of a new system could be fulfilled in multiple phases. Phase I could include implementation at one client site using a group of consultants in close proximity to that site. Phase II could include implementation at a different site with a potentially different set of consultants. Both of these phases are considered separate projects, even though they are governed by the same contract.

The number of hours worked for each employee on each project must be recorded on a weekly basis. Employees currently log their time using an Excel worksheet. An example of this worksheet is presented below. Notice that the employee’s supervisor is listed on the worksheet. A supervisor is currently required to approve his employees’ timesheets by placing his initials beside his name.

Deliverable:

For this assignment, you are required to create the GUI for a timekeeping/payroll system for CMS.

The system should first allow an employee to enter his name and record the time he worked on each project for a given week. Using the spreadsheet above as a guideline, the system must allow the user to enter his name and the name of his supervisor. Next, the user must enter the number of the week for which he is entering time. Assume a maximum of 52 weeks in a year. Make sure the employee enters only a valid week number.

To record an employee’s hours, the user must enter the name of a client, a client’s contract and a project. For each of the seven days in a week, the user must enter hours worked or check a box that indicates the day is a weekend, a holiday, or a vacation day. If the employee fails to enter any hours for a day and fails to check the weekend/holiday/vacation box for that day, the system should warn the user that the given day is missing information. The system should also ensure that if any work hours are entered for a day, the checkbox for that day should NOT be checked. Finally, the system should ensure that a user cannot enter more than 24 hours in a single day. Once the hours are entered, the user should be able to “Submit” his hours by clicking a button that will calculate his payroll information for the week and display it on the same screen.

Payroll information is calculated as follows:

All employees are paid for hours worked at a rate of \$15 US dollars per hour. If the number of hours worked in the week exceeds 40, the employee is paid time and a half for his overtime hours. For example, assume an employee works 50 hours during a week, he will receive (40 X \$15) + (10 overtime hours X (1.5 X \$15)) = \$825.00. If an employee works less than 40 hours in a week, the system should make note of this fact in a label beside the supervisor’s name. An example payroll calculation is shown below:

 Payroll information for John Doe for the week ending Week 1: Total Hours Worked: 42.00 Regular Hours Worked: 40.00 Rate per regular work hour: \$ 15.00 Regular Hourly Pay: \$ 600.00 OverTime Hours Worked: 2.00 Rate per overtime work hour: \$ 22.50 Overtime Hourly Pay: \$ 45.00 Gross Pay: \$ 645.00 Number of Weekend/Holiday/Vacation days claimed: 2

Page 3 of 3

Programming Assignment 7 Instructions

Based on the program you created for Assignment 5, modify your code to perform the following steps.

In Assignment 5, you created an Account hierarchy with a base class (Account) and two derived classes (SavingsAccount and CheckingAccount).  Three of the mutator methods in this assignment validated user input:  setBalance, setInterestRate, and setFeeCharged.  In all of these methods, you were instructed to set the respective variables equal to zero if the user passed in a negative amount.  In this assignment, you will modify your code such that if the user passes in a negative amount, an exception will be thrown that alerts the user that a negative amount has been entered.  The program should catch the exception and display the error message to the user.  Once an error (negative amount) has occurred, the program should inform the user that negative numbers are not permitted.  It should then redisplay the menu.   If an exception has not occurred, and a checking or savings object has been successfully created, the program should print the information for that object.

[Hint:  You will need to create an exception class – call it NegativeNumberException – that takes a string as an argument to its constructor that represents the error.  The string should be “Invalid Entry – Negative numbers are not permitted.”]

Modify your Main() method such that instead of hardcoding the SavingsAccount and CheckingAccount information, you prompt the user to enter the needed information.  Generate a menu like the one below and loop until the user enters “Q” to quit the application.

Based on the 18 steps required for Assignment 5, you only need to implement steps 1 and 2 and instantiate their creation based on the user’s menu selections.  You may remove steps 3 through 18.  This assignment is only intended to demonstrate your ability to handle exceptions.

Programming Assignment 8 Instructions

General Background Information:

CMS Systems, Inc. is a company that provides information systems consulting services to companies in the telecom industry in the United States and the United Kingdom.  Due to its success, CMS is hoping to expand its operations into other parts of Europe.  Despite its large size, CMS currently uses a manual/spreadsheet-based process for maintaining employee and client data.  Management has now decided to implement a company-wide application that will keep track of all of its employees’ hours, calculate employee payroll, and produce invoices for clients based on hours worked by employees.

CMS currently employs 1,500 individuals (900 in the US and 600 in the UK) who serve as systems analysts, developers, managers, testers, maintenance engineers, accountants, lawyers, and sales representatives.

The company also has more than 200 clients in the US and UKx.   Clients can have one or more contracts with CMS to provide a variety of consulting services.  For example, a single client might have one contract for maintenance of an existing system and also have another contract (sometimes called a work order by the sales force) for the development of a new system.

Some clients are billed based upon negotiated contracts, which stipulate a pre-determined amount for charges –regardless of the number of hours that employees actually work on the contracts.    Such contracts are called “fixed price” contracts.  Other clients are billed based on the total number of hours provided by CMS employees multiplied by a rate per employee type per employee hour.  These arrangements are called “T&M – Time and Materials” contracts.  T&M contracts specify a maximum of forty hours per week for which the client is willing to pay.  Any amounts over 40 hours per week are not billable, but are considered discounted hours.

For T&M contracts, the rate per hour for each consultant is determined by the employee’s level of expertise.  For example, a client pays \$100/hour for an employee who is at the level of Systems Analyst I.  That same client pay \$250/hour for an employee designated as a Manager II.

T&M and Fixed Price contracts are the only two types of contracts currently used by CMS.

All CMS employees must keep a record of the time they spend working for each client on a weekly basis.   Because employees can work for more than one client and perform different functions for each client, CMS utilizes “project management” to keep track of employee assignments to client contracts.  Employees can be assigned to work on more than one project at a given time.  In fact, it is not unusual for an employee to spend time on two or more different projects within the same day.

Just as a client can have more than one contract with CMS, a contract can consist of more than one project.  For example, a contract for the development of a new system could be fulfilled in multiple phases.  Phase I could include implementation at one client site using a group of consultants in close proximity to that site.  Phase II could include implementation at a different site with a potentially different set of consultants.  Both of these phases are considered separate projects, even though they are governed by the same contract.

The number of hours worked for each employee on each project must be recorded on a weekly basis.  Employees currently log their time using an Excel worksheet.  An example of this worksheet is presented below.  Notice that the employee’s supervisor is listed on the worksheet.  A supervisor is currently required to approve his employees’ timesheets by placing his initials beside his name.

Deliverable:

For this assignment, you are required to create the GUI for a timekeeping/payroll system for CMS.

The system should first allow an employee to enter his name and record the time he worked on each project for a given week.  Using the spreadsheet above as a guideline, the system must allow the user to enter his name and the name of his supervisor.   Next, the user must enter the number of the week for which he is entering time.  Assume a maximum of 52 weeks in a year.  Make sure the employee enters only a valid week number.

To record an employee’s hours, the user must enter the name of a client, a client’s contract and a project.  For each of the seven days in a week, the user must enter hours worked or check a box that indicates the day is a weekend, a holiday, or a vacation day.  If the employee fails to enter any hours for a day and fails to check the weekend/holiday/vacation box for that day, the system should warn the user that the given day is missing information.  The system should also ensure that if any work hours are entered for a day, the checkbox for that day should NOT be checked.  Finally, the system should ensure that a user cannot enter more than 24 hours in a single day.  Once the hours are entered, the user should be able to “Submit” his hours by clicking a button that will calculate his payroll information for the week and display it on the same screen.

Payroll information is calculated as follows:

All employees are paid for hours worked at a rate of \$15 US dollars per hour.  If the number of hours worked in the week exceeds 40, the employee is paid time and a half for his overtime hours.  For example, assume an employee works 50 hours during a week, he will receive (40 X \$15) + (10 overtime hours X (1.5 X \$15)) = \$825.00.  If an employee works less than 40 hours in a week, the system should make note of this fact in a label beside the supervisor’s name.  An example payroll calculation is shown below:

 Payroll information for John Doe for the week ending Week 1: Total Hours Worked: 42.00 Regular Hours Worked: 40.00 Rate per regular work hour: \$                 15.00 Regular Hourly Pay: \$               600.00 OverTime Hours Worked: 2.00 Rate per overtime work hour: \$                 22.50 Overtime Hourly Pay: \$                 45.00 Gross Pay: \$               645.00 Number of Weekend/Holiday/Vacation days claimed: 2

BMIS 530
Systems Analysis and Redesign Project: Phase 3
Assignment Instructions
Overview
Recall the three stages of the project:
Phase 1: Introduction, problem statement, feasibility study, and project plan
Phase 2: Methodology to compare the old and new systems and the systems analysis
Phase 3: Results of comparison of the old and new systems and the systems design
In Phase 3 you will use the methodology developed in Phase 2 to compare the old information system analysis and design to the new information system that is cloud-capable, highly available, scalable, and secure. You will use the scholarly supported computing framework and standards (e.g. ANSI, COBIT, ISO, ITU, NIST, HIPAA, PCI) to benchmark the systems analysis and design of the old and new system. Once you perform this comparison, you will detail the results.
Instructions
This report must contain the following elements:
ic for all minimums.
II. Cover page
IV. Every section must be well supported with scholarly information systems journal articles.
V. Introduction and conclusion sections
. A succinct, high quality, and well supported introduction and conclusion should be written
c. It is necessary to highlight the objectives and conclusions of the project
d. Introduce the primary goals of this particular phase, the coinciding objectives, and the outcomes
e. The conclusion should be the last heading and conclude the cu
ent phase and state the upcoming objectives and deliverables in the next phase.
VI. Systems analysis and design results
a. Follows a well-supported methodology including at least one framework and appropriate standards from scholarly journal articles
. Uses objective standards accurately to benchmark the old system and the new system
c. Minimal comparison elements should include system:
i. Cloud/distributed computing capabilities
ii. High availability
iii. Scalability
iv. Security
v. Note, these are projected based upon the comparative benchmarked standards
d. A final updated financial analysis that projects associated costs of both systems once the final design is completed
e. Discuss the managerial implications of the results
f. Uses excel spreadsheets, graphs, figures, and tables to show the objective comparisons of the systems
VII. Systems design diagrams
a. A minimum of two diagrams (2) are necessary for each required type, one diagram represents the existing system and one diagram represents the new re-designed and improved system
. The following systems design diagrams are required that compare the old and new systems:
i. Entity relationship data model diagrams
ii. Class diagrams
iii. User interface forms
iv. Distributed computing network and system architecture diagrams
1. Design the complete information system architecture environment for the old and new environments
c. Screenshots are required for each diagram with a visible operating system date/time and unique desktop element showing that indicates it is your compute
i. No credit will be given for diagrams without screenshots
ii. Include the screenshots in appendices in the project report
d. Describe the systems analysis as you complete it in a na
ative form and link in each associated diagram referenced in the na
ative using an appendix
e. Each diagram will be assessed according to UML standards and a level of detail that excels beyond textbook examples
i. Note, textbook examples are simpler versions meant to learn and not as complex as industry diagrams often
ii. Our textbook is a graduate version of systems analysis and design. If you need more undergraduate textbook support we encourage you to use Safari e-books from the Liberty Li
ary. Our undergraduate textbook develops the more foundational SAD learning using the textbook:
1. Dennis, A., Wixom, B. H., & Tegarden, D XXXXXXXXXXSystems analysis & design: An object-oriented approach with UML (5th ed.). Hoboken, NJ: Wiley and Sons.
Note: Your assignment will be checked for originality via the Turnitin plagiarism tool.
Page 2 of 2

School of , Liberty University
Author Note
I have no known conflict of interest to disclose.
Co
Email:
Abstract
In this report we will discuss the organization which needs to have its system analyzed and redesigned. For this task I have selected the Relief International organization. It has offices in 16 different countries. The mission of the organization is to help the people who are living in fragile and vulnerable settings. This organization is known for helping the people by educating them on the word of the God and they help them to live in a righteous manner or we can say in an ethical manner. The ethics are very important in education because they can help the user to make system run very smoothly. this organization is still struggling to get all the necessary IT infrastructure in some of the countries so that it can provide adequate access of the applications to the company, especially since the paradigm shifted to work from home during the Covid 19 pandemic. The system analysis and redesign can be used to handle the service gap in some of the offices located in different countries.
2
1
Keywords: SD-WAN, MLPS, Ethics, Network, switch, router
Introduction
In this report we will discuss the organization which needs to have its system analyzed and redesigned. For this task I have selected the Relief International organization. It has offices in 16 different countries. The mission of the organization is to help the people who are living in fragile and vulnerable settings. In these fragile settings which are sometimes present in the remote areas, this organization is still struggling to get all the necessary IT infrastructure in some of the countries so that it can provide adequate access of the applications to the company, especially since the paradigm shifted to work from home during the Covid 19 pandemic. For example, in Iran some of the applications and document content tools are not accessible because of the sanctions. The system analysis and redesign can be used to handle the service gap in some of the offices located in different countries. With this report we will study about the methodology and the framework analysis we’re implementing the solution. With this report we can easily understand the overall flow of the operations in the system and compare the old and new system on different aspects.
Literature Review
For this solution we are using software defined wide area network and it is known as the wide area network which uses software components for controlling the network operations. As per the definition there are some management software which utilizes the networking hardware in the same manner as done by the hypervisors and other components which are virtualizing the data center operations. It it is important to have a complete information and knowledge about the wide area network before understanding the working of software defined by data network. The wider network can be defined as the local area network which tries to be much more isolated so that it can confine themselves into the smaller networks in business offices or the homes. The wide area network is used to connect different smaller networks like the metro area network or local area network. With this connection we can allow the users and computers from one location to communicate with the users and computers present at different locations.
The software of the software defined wide and it work is able to control all the mechanics which can help the organization to manage all the different geographical pieces of the wide area network and it is done to improve the efficiency and performance of the system. There are some specific protocols which are implemented by the software defined wide area network and they are known for providing user intuitive interface and it also helps the wider network to handle overall network traffic. With the help of software defined wide area network we can easily support the gateways, firewalls, tools of the virtual private network and other features which can enhance the privacy, security and cyber resilience.
The software defined wide area network is known for offering the businesses and optimized experience of the application. This experience of the application includes different benefits like the more availability of critical applications in the organization, several hy
id active-active configuration and coupled with the predictable service. the software defined wide area network also allow the organization to have dynamic directing of the application traffic with the help of application aware routing and it provides the streamlined delivery and experience to the user.
The software defined wide area network is able to solve different types of the cross industry problems with the help of following capabilities for creating a new solution.
· The cloud based and central management controls allow the IT teams to set up configuration of the wider network across different locations and the virtual circuits. The software defined wide area network controller is also known for aggregating the data which includes e
or conditions and performance metrics which can be summarized in the format of reports, and they can be used for triggering alerts and sharing the trouble ticketing system.
· The end-to-end encryption can be achieved so that we can have boosted security with the help of Internet security protocol or some same encrypted tunnels which can create a automatic shield over the virtual private wide area network which is stretched across the public and shared networks.
· The multilink and multipath support along with the dynamic path selection can help to have bonding of multiple physical circuits into a single logical channel so that it can boost the aggregate reliability and the capacity.
· The local
eakout for the cloud services will allow direct routing and local inspection of all the traffic which is destined to the trusted cloud services. It is able to remove the requirement to stop all the traffic at the centralized location to perform the inspection and it will save the bandwidth utilization and also increase the usage of cheaper local direct Internet access. It does not compromise the cyber security.
Framework Analysis
In the initial stage of software defined by dahlia network there were some engineers who developed the flexible SD-WAN architecture son the basis of cloud management and the controllers. They also used the virtualized network function as routers. Their version of the network followed same architecture of the software defined as done by the digital network architecture of the Cisco which separate the data, management plans and the control to have maximum flexibility. This new architecture was created to make a natural extension of the intent-based networking vision of the Cisco.
Design Methodology
System Design Analysis
Use Case Diagram Old
Use Case Description
Precondition
The user needs to be a member of the system
Post Condition
The user can access all the operations
Normal Flow
The user should be a registered member of the system. Only the registered members will be able to log in with their verified credentials. The user will enter the username and password and system will verify whether they are authorized or not.

BMIS 208

Programming Assignment 2 Instructions

Adapted from Introduction to Programming Using Visual Basic 2012, 9/E, David I. Schneider.

Create a Visual Basic program that creates a bill for an automobile repair shop. The shop bills customers at the rate of \$35 per hour for labor. Parts and supplies are subject to a 5% sales tax. The customer’s name, the number of hours of labor, and the cost of parts and supplies should be entered into the program via textboxes. When the Display Bill button is clicked, the customer’s name and the 3 costs should be displayed in a list box as shown below.

2. Name the form frmAssignment_2. The title should be as depicted below.

3. Name the labels lblCustomer, lblPhone, lblHours, and lblParts.

4. Name the textboxes txtCustomer, txtHours, and txtParts.

5. Name the listbox lstBill.

6. The Customer phone textbox should be a MaskedTextBox and should allow inputs only in the form of ___-____ (3 characters, followed by a dash, followed by 4 characters). Name this MaskedTextBox mtbPhone. Show the underlines and dash in the mask.

7. Add the access keys as displayed in the diagram below.

8. If the user leaves the Customer, Hours, or Parts textboxes blank, produce an error message (using a MessageBox) that informs the user to enter the appropriate information and do not display the information in the listbox.

9. Create variables to hold the customer, phone, hours, and parts information. Name the variables customer, phone, hours, and parts. Their data types should be string, string, double, and double, respectively.

10. When the user clicks the Display Bill button, prompt the user to enter in the date of the services. Store this information in a variable called service_date. Display this date and the date the invoice is due (30 days from the date entered) in the listbox as shown below. [Hint: use the AddDays function]. Store the due date in a variable called due_date.

11. Convert the customer name variable to upper case before displaying it in the listbox.

12. Whenever the user clicks the Display Bill button, the listbox should be cleared before displaying the new results.

13. To calculate the amounts, create three variables (labor_cost, parts_cost, and total_cost), and display these amounts in the listbox as shown below.

14. Be sure to use currency format where appropriate.

15. Be sure that the columns line up appropriately. [Hint: you can use the built-in Visual Basic constant “vbTab” to create neat columns in your listbox.]

# Programming Assignment 3 Instructions

Adapted from Introduction to Programming Using Visual Basic 2012, 9/E, David I. Schneider.

Create a Visual Basic program to analyze a mortgage. The user should enter the amount of the loan, the annual percentage rate of interest, and the duration of the loan in months. When the user clicks on the button, the information that was entered should be checked to make sure it is reasonable. If bad data have been supplied, the user should be so advised. Otherwise, the monthly payment and the total amount of interest paid should be displayed. The formula for the monthly payment is:

Payment = p * r / (1 – (1 + r) ^ (-n)),

Where p is the amount of the loan, r is the monthly interest rate (annual rate divided by 12) given as a number between 0 (for 0 percent) and 1 (for 100 percent), and n is the duration of the loan in months. The formula for the total interest paid is:

total interest = n * payment – p.

1. Design your screen to look like the one below.

2. Store the amounts entered by the user in variables and use these variables in the formula.

3. Use appropriate naming conventions for controls and variables.

4. Include internal documentation to describe the logic in your program (i.e. put comments in your code)

5. Make sure your error messages are meaningful.

6. Ensure that the user cannot enter anything into controls that display your totals.