. . ISM 3232-001 - Spring 2022 - Individual Assignment #4 DUE DATE: Friday 04/29/22 ASSIGNMENT OBJECTIVES To again meet
Posted: Mon May 02, 2022 11:49 am
. . ISM 3232-001 - Spring 2022 - Individual Assignment #4 DUE DATE: Friday 04/29/22 ASSIGNMENT OBJECTIVES To again meet the Objectives of Individual Assignments #1, #2, and #3: I - Use Visual C# 2017 to create a project. (*** See the last page for the correct project name to use. ***) - Observe professional programming style guidelines (e.g., comments, indentation, whitespace, etc.). - Determine the most appropriate C# controls to use to accomplish the requirements of the program. Declare all necessary constants and variables with appropriate data types and scopes. - Follow appropriate standardized naming conventions for constants, variables, and controls. Write code to accept input from the user, perform calculations, and convey output to the user. Utilize appropriate decision structures to branch code execution as required by the program. - Format output so that it displays appropriately for the situation involved (e.g., as currency). - Create custom message boxes that communicate with the user and respond appropriately. Properly utilize looping structures in your program code where necessary. Write custom methods for appropriate use in your program code - Read data in from an external file. To output data to an external file. To make appropriate use of a menu system to provide program functionality. To create and utilize a class that displays a form in addition to the original project form. BUSINESS SCENARIO Hopkins Film School is a once-a-year, two-week gathering of actors, producers, directors, and other individuals involved in amateur and independent filmmaking. The school is designed around a series of classes that are available for the participants to register to attend. Registrations are either telephoned in to the school office or emailed to the school's email address. Currently, all registrations are written down on paper forms by school personnel. Robert Newman, the school director, wishes to convert this paper-based registration system into a software program that will run on the computer in the school office. The requirements for an initial version of this software are described below. ASSIGNMENT REQUIREMENTS There is to be a picture box at the top of the registration form displaying a graphic file related to theater or film. Beside this picture is to be a bordered label displaying the school name in a font style and size other than the default. Below this picture box and label should be a control that allows the user to enter in the date the registration was recorded. The current date (from the computer's system clock) should be displayed in this control by default. On the form below this date control should be two groups of controls in group boxes labeled Registrant Information and Registration Information Registrant Information - The first name, last name, email address, and date of birth are to be entered for the individ- ual registering for the camp. Also recorded (for market research purposes) for each registrant is what is called the status of the registrant. This will be specified via a combo box containing the following options (listed in this order) . . . . .
. There is to be a picture box at the top of the registration form displaying a graphic file related to theater or film. Beside this picture is to be a bordered label displaying the school name in a font style and size other than the default Below this picture box and label should be a control that allows the user to enter in the date the registration was recorded. The current date (from the computer's system clock) should be displayed in this control by default. On the form below this date control should be two groups of controls in group boxes labeled Registrant Information I and Registration Information. Registrant Information - The first name, last name, email address, and date of birth are to be entered for the individ- ual registering for the camp. Also recorded (for market research purposes) for each registrant is what is called the status of the registrant. This will be specified via a combo box containing the following options (listed in this order): Actor, Producer, Director, Animator, Cinematographer, Drama Teacher, Light Technician, and Sound Technician. The data is to come from an array declared in the form load event that has the data values shown above in an initialization list. (Code in the form load event is to add the values from the array to the combo box list.) Other values not specified here are to be allowed to be entered by the user if desired. When the program begins, the combo box should not display any value until the user selects one from the list or types one in. Registration Information - The type of classes that the registrant wishes to select from is to be specified using two radio buttons, labeled Live Action and Animation. Live Action should be selected by default at program startup. Each of these two class types has its own list of available classes. Any registrant can select either class type, but a registrant can only select classes from one of these two categories (see class lists below). The price per class is $79.95 for Live Action type classes and $99.95 for Animation type classes. A list box is to be used to display the names of the available classes. The label for this list box should include a note that a maximum of four classes is allowed for a registration. (Hint. This limit is subject to change in the future, so a constant should be used to handle this value.) The user selection of the Live Action or Animation class type determines which class names display in the list box. (Changing the cluss typo radio button selection changes the class names that are displayed in the list box.) The names of the Live Action type classes and Animation type classes that are available are to be read in from text files instead of being "hard coded" in the program. (The text files are described in more detail on the last page. These text files can be edited by Mr. Newman with Notepad if a change in the classes offered is desired in the future) No classes should initially be selected in the list box. The classes should be displayed in alphabetical order (even though the options are not listed in that order in the text file). The registration information to display on the form also includes three calculated values: the number of classes selected, the price per class for the type of class selected, and the total price of the registration. These values should display correctly at program startup and automatically update as described below for the Update Totals method Below the above two group boxes, there should be two radio buttons used to specify the payment type for the registration: Cash or Check. These are the only two accepted forms of payment. Cash should be selected as the
The registration information to display on the form also includes three calculated values: the number of classes selected, the price per class for the type of class selected, and the total price of the registration. These values should display correctly at program startup and automatically update as described below for the Update Totals method. · Below the above two group boxes, there should be two radio buttons used to specify the payment type for the registration: Cash or Check. (These are the only two accepted forms of payment.) Cash should be selected as the default at program startup. Below these radio buttons, there is to be a check box labeled Email Receipt Requested. I The user is to check this box if the registrant would like a copy of their registration information emailed to them. The check box should be unchecked by default at program startup. There is to be a menu bar on this order form with two top-level menus: File and Help. The File menu should have three menu items: Save, Clear, and Exit. The Help menu should have one menu item: About. There should be Access Keys for all of these menus and menu items. Shortcut Keys should be included for each of the four menu items. For the four menu items, ToolTips should be included to provide brief descriptions of each item's p purpose. • The Save menu item, when selected, should perform two significant actions: displaying a summary of the registra- tion information in a message box, and writing the registration summary information to Registration Data.txt, a text file to be created by the program in the default bin\Debug subfolder of the project folder. The message box should have appropriate text in its title bar and should include an Information icon. The message box should display the following data, properly labeled with one data item per line: a header line (c.g., Registration Summary); registration date; registrant name (first name, and last name on one line); email address, date of birth; status: classes selected (with each class name on a separate line); number of classes selected; price per class; total registration price, payment type (Cash or Check); email receipt requested (Yes or No). The text file should include the same data as is displayed in the message box, following the format described above. A blank line should be added to the end of each registration's information to separate the registrations in the file. (Note that it is necessary to append all data that is written to the text file to any existing data there.) After the registration data has been written to the text file, the form should be cleared and returned to its original startup state (ready for recording the next registration), However, when the Save menu item is clicked, if the registrant's first name or last name or email address has been left blank, or if the date of birth entry is incomplete, the program should display an error message explaining that this specific information is required, instead of displaying the registration summary. This error message box should have appropriate title bar text and an Error icon. Also, when the Save menu item is clicked, if no classes have been selected or if more than four classes have been selected, the program should display an error message explaining that one to four class selections are required, instead of displaying the registration summary. This error message box should have appropriate title bar text and an Error icon The Clear menu item, when selected, should clear the form and return it to its original startup state (without saving) The Exit menu item, when selected, should close the program. However, before closing the program, the user should be prompted with a confirmation message box asking, "Are you sure you wish to exit the program?" This message box should have Yes and No buttons. It should also have appropriate text in its title bar and should include a Question icon. Only if the user selects Yes should the program end. The About menu item, when selected, should display a form that is an instance of a class that you have created. Name this new class AboutForm. The form should contain a Picture Box control that displays a graphic image related to theater or film (different from the graphic displayed on the original form), a label containing the copyright
program, the user should be prompted with a confirmation message box asking, "Are you sure you wish to exit the program?" This message box should have Yes and No buttons. It should also have appropriate text in its title bar and should include a Question icon. Only if the user selects Yes should the program end. The About menu item, when selected, should display a form that is an instance of a class that you have created. Name this new class AboutForm. The form should contain a Picture Box control that displays a graphic image related to theater or film (different from the graphic displayed on the original form), a label containing the copyright date (2022) for this project and your name as the programmer, and a Close button that, when clicked, closes the form. Include an Access Key and a ToolTip for this button. This form must be closed before the registration form can again be interacted with by the user. Rename the original form from Forml to RegistrationForm. (Hint: See p. 584 in the textbook for instructions.) Three custom methods must be included in your code. One, named PopulateList, should be used to load data from the exte/nal text files into the classes list box (as described above). This method should initially be called from the form load event, and then called each time a class type radio button (Live Action or Animation) is selected (to load the appropriate class names into the list box). The second custom method, named Update Totals, is to handle the task of updating the three controls on the form that display the number of classes selected, the price per class for the type . of class selected, and the total price of the registration. (The total price is simply the price per class multiplied by the number of classes selected. There is no sales tax.) These three values will need to be updated any time the user changes the type of class selected (Live Action or Animation) or changes the classes selected in the list box. The third custom method, named ResetForm, will perform the form clearing and resetting actions required by use of the Save and Clear menu items described above. Appropriate use of the Try-Catch structure should be made to handle any potential input/output exceptions The tab order should be set correctly so that focus flows logically through the controls on the registration form. You are to give meaningful names to all controls used on the forms, and all constants and variables used in your code. Follow standard C# naming conventions, as described in your textbook. Use appropriate labels for your controls to clearly identify them, and use appropriate text in the title bar of both forms in the project The alignment, spacing, and sizing of all screen controls should be neat and professional in appearance, When the program runs, the forms should display in the center of the screen. Data that represents currency values should be displayed with the correct currency format. Data representing numeric values, including currency values, should be displayed right-aligned in controls, while text values (such as names) should be displayed left-aligned in controls Use comments very liberally throughout your code, for each event handler and custom method, and each significant block of code Include an initial four-line comment in your code for both form classes, before all other codo, using the same format specified in the instructions for the previous assignments (Include the name of the form class in the Description . . .
. . the total price of the registration. (The total price is simply the price per class multiplied by the number of classes selected. There is no sales tax.) These three values will need to be updated any time the user changes the type of class selected (Live Action or Animation) or changes the classes selected in the list box. The third custom method, named ResetForm, will perform the form clearing and resetting actions required by use of the Save and Clear menu items described above. Appropriate use of the Try-Catch structure should be made to handle any potential input/output exceptions. The tab order should be set correctly so that focus flows logically through the controls on the registration form. You are to give meaningful names to all controls used on the forms, and all constants and variables used in your code. Follow standard C# naming conventions, as described in your textbook. Use appropriate labels for your controls to clearly identify them, and use appropriate text in the title bar of both forms in the project. The alignment, spacing, and sizing of all screen controls should be neat and professional in appearance. When the program runs, the forms should display in the center of the screen. Data that represents currency values should be displayed with the correct currency format. Data representing numeric values, including currency values, should be displayed right-aligned in controls, while text values (such as names) should be displayed left-aligned in controls. Use comments very liberally throughout your code, for each event handler and custom method, and each significant block of code Include an initial four-line comment in your code for both form classes, before all other code, using the same format specified in the instructions for the previous assignments. (Include the name of the form class in the Description line of this comment.) • Here are the contents of the two input files that you should create using Notepad, with the data shown in the order shown). (Do not write code in your program to create these files.) These two files should be named as shown below, and placed by you in the bin\Debug subfolder of your project folder: The contents of the LiveActionClasses.txt The contents of the Animationclasses.txt file should be, with one item per line: file should be, with one item per line: Screenwriting 2D Animation Cinematography 3D Animation Special Effects Matte Painting Sound Design Digital Editing Lighting Casting Directing Producing Set Construction Character Design Storyboarding Stop Motion Particle Dynamics Textures
. There is to be a picture box at the top of the registration form displaying a graphic file related to theater or film. Beside this picture is to be a bordered label displaying the school name in a font style and size other than the default Below this picture box and label should be a control that allows the user to enter in the date the registration was recorded. The current date (from the computer's system clock) should be displayed in this control by default. On the form below this date control should be two groups of controls in group boxes labeled Registrant Information I and Registration Information. Registrant Information - The first name, last name, email address, and date of birth are to be entered for the individ- ual registering for the camp. Also recorded (for market research purposes) for each registrant is what is called the status of the registrant. This will be specified via a combo box containing the following options (listed in this order): Actor, Producer, Director, Animator, Cinematographer, Drama Teacher, Light Technician, and Sound Technician. The data is to come from an array declared in the form load event that has the data values shown above in an initialization list. (Code in the form load event is to add the values from the array to the combo box list.) Other values not specified here are to be allowed to be entered by the user if desired. When the program begins, the combo box should not display any value until the user selects one from the list or types one in. Registration Information - The type of classes that the registrant wishes to select from is to be specified using two radio buttons, labeled Live Action and Animation. Live Action should be selected by default at program startup. Each of these two class types has its own list of available classes. Any registrant can select either class type, but a registrant can only select classes from one of these two categories (see class lists below). The price per class is $79.95 for Live Action type classes and $99.95 for Animation type classes. A list box is to be used to display the names of the available classes. The label for this list box should include a note that a maximum of four classes is allowed for a registration. (Hint. This limit is subject to change in the future, so a constant should be used to handle this value.) The user selection of the Live Action or Animation class type determines which class names display in the list box. (Changing the cluss typo radio button selection changes the class names that are displayed in the list box.) The names of the Live Action type classes and Animation type classes that are available are to be read in from text files instead of being "hard coded" in the program. (The text files are described in more detail on the last page. These text files can be edited by Mr. Newman with Notepad if a change in the classes offered is desired in the future) No classes should initially be selected in the list box. The classes should be displayed in alphabetical order (even though the options are not listed in that order in the text file). The registration information to display on the form also includes three calculated values: the number of classes selected, the price per class for the type of class selected, and the total price of the registration. These values should display correctly at program startup and automatically update as described below for the Update Totals method Below the above two group boxes, there should be two radio buttons used to specify the payment type for the registration: Cash or Check. These are the only two accepted forms of payment. Cash should be selected as the
The registration information to display on the form also includes three calculated values: the number of classes selected, the price per class for the type of class selected, and the total price of the registration. These values should display correctly at program startup and automatically update as described below for the Update Totals method. · Below the above two group boxes, there should be two radio buttons used to specify the payment type for the registration: Cash or Check. (These are the only two accepted forms of payment.) Cash should be selected as the default at program startup. Below these radio buttons, there is to be a check box labeled Email Receipt Requested. I The user is to check this box if the registrant would like a copy of their registration information emailed to them. The check box should be unchecked by default at program startup. There is to be a menu bar on this order form with two top-level menus: File and Help. The File menu should have three menu items: Save, Clear, and Exit. The Help menu should have one menu item: About. There should be Access Keys for all of these menus and menu items. Shortcut Keys should be included for each of the four menu items. For the four menu items, ToolTips should be included to provide brief descriptions of each item's p purpose. • The Save menu item, when selected, should perform two significant actions: displaying a summary of the registra- tion information in a message box, and writing the registration summary information to Registration Data.txt, a text file to be created by the program in the default bin\Debug subfolder of the project folder. The message box should have appropriate text in its title bar and should include an Information icon. The message box should display the following data, properly labeled with one data item per line: a header line (c.g., Registration Summary); registration date; registrant name (first name, and last name on one line); email address, date of birth; status: classes selected (with each class name on a separate line); number of classes selected; price per class; total registration price, payment type (Cash or Check); email receipt requested (Yes or No). The text file should include the same data as is displayed in the message box, following the format described above. A blank line should be added to the end of each registration's information to separate the registrations in the file. (Note that it is necessary to append all data that is written to the text file to any existing data there.) After the registration data has been written to the text file, the form should be cleared and returned to its original startup state (ready for recording the next registration), However, when the Save menu item is clicked, if the registrant's first name or last name or email address has been left blank, or if the date of birth entry is incomplete, the program should display an error message explaining that this specific information is required, instead of displaying the registration summary. This error message box should have appropriate title bar text and an Error icon. Also, when the Save menu item is clicked, if no classes have been selected or if more than four classes have been selected, the program should display an error message explaining that one to four class selections are required, instead of displaying the registration summary. This error message box should have appropriate title bar text and an Error icon The Clear menu item, when selected, should clear the form and return it to its original startup state (without saving) The Exit menu item, when selected, should close the program. However, before closing the program, the user should be prompted with a confirmation message box asking, "Are you sure you wish to exit the program?" This message box should have Yes and No buttons. It should also have appropriate text in its title bar and should include a Question icon. Only if the user selects Yes should the program end. The About menu item, when selected, should display a form that is an instance of a class that you have created. Name this new class AboutForm. The form should contain a Picture Box control that displays a graphic image related to theater or film (different from the graphic displayed on the original form), a label containing the copyright
program, the user should be prompted with a confirmation message box asking, "Are you sure you wish to exit the program?" This message box should have Yes and No buttons. It should also have appropriate text in its title bar and should include a Question icon. Only if the user selects Yes should the program end. The About menu item, when selected, should display a form that is an instance of a class that you have created. Name this new class AboutForm. The form should contain a Picture Box control that displays a graphic image related to theater or film (different from the graphic displayed on the original form), a label containing the copyright date (2022) for this project and your name as the programmer, and a Close button that, when clicked, closes the form. Include an Access Key and a ToolTip for this button. This form must be closed before the registration form can again be interacted with by the user. Rename the original form from Forml to RegistrationForm. (Hint: See p. 584 in the textbook for instructions.) Three custom methods must be included in your code. One, named PopulateList, should be used to load data from the exte/nal text files into the classes list box (as described above). This method should initially be called from the form load event, and then called each time a class type radio button (Live Action or Animation) is selected (to load the appropriate class names into the list box). The second custom method, named Update Totals, is to handle the task of updating the three controls on the form that display the number of classes selected, the price per class for the type . of class selected, and the total price of the registration. (The total price is simply the price per class multiplied by the number of classes selected. There is no sales tax.) These three values will need to be updated any time the user changes the type of class selected (Live Action or Animation) or changes the classes selected in the list box. The third custom method, named ResetForm, will perform the form clearing and resetting actions required by use of the Save and Clear menu items described above. Appropriate use of the Try-Catch structure should be made to handle any potential input/output exceptions The tab order should be set correctly so that focus flows logically through the controls on the registration form. You are to give meaningful names to all controls used on the forms, and all constants and variables used in your code. Follow standard C# naming conventions, as described in your textbook. Use appropriate labels for your controls to clearly identify them, and use appropriate text in the title bar of both forms in the project The alignment, spacing, and sizing of all screen controls should be neat and professional in appearance, When the program runs, the forms should display in the center of the screen. Data that represents currency values should be displayed with the correct currency format. Data representing numeric values, including currency values, should be displayed right-aligned in controls, while text values (such as names) should be displayed left-aligned in controls Use comments very liberally throughout your code, for each event handler and custom method, and each significant block of code Include an initial four-line comment in your code for both form classes, before all other codo, using the same format specified in the instructions for the previous assignments (Include the name of the form class in the Description . . .
. . the total price of the registration. (The total price is simply the price per class multiplied by the number of classes selected. There is no sales tax.) These three values will need to be updated any time the user changes the type of class selected (Live Action or Animation) or changes the classes selected in the list box. The third custom method, named ResetForm, will perform the form clearing and resetting actions required by use of the Save and Clear menu items described above. Appropriate use of the Try-Catch structure should be made to handle any potential input/output exceptions. The tab order should be set correctly so that focus flows logically through the controls on the registration form. You are to give meaningful names to all controls used on the forms, and all constants and variables used in your code. Follow standard C# naming conventions, as described in your textbook. Use appropriate labels for your controls to clearly identify them, and use appropriate text in the title bar of both forms in the project. The alignment, spacing, and sizing of all screen controls should be neat and professional in appearance. When the program runs, the forms should display in the center of the screen. Data that represents currency values should be displayed with the correct currency format. Data representing numeric values, including currency values, should be displayed right-aligned in controls, while text values (such as names) should be displayed left-aligned in controls. Use comments very liberally throughout your code, for each event handler and custom method, and each significant block of code Include an initial four-line comment in your code for both form classes, before all other code, using the same format specified in the instructions for the previous assignments. (Include the name of the form class in the Description line of this comment.) • Here are the contents of the two input files that you should create using Notepad, with the data shown in the order shown). (Do not write code in your program to create these files.) These two files should be named as shown below, and placed by you in the bin\Debug subfolder of your project folder: The contents of the LiveActionClasses.txt The contents of the Animationclasses.txt file should be, with one item per line: file should be, with one item per line: Screenwriting 2D Animation Cinematography 3D Animation Special Effects Matte Painting Sound Design Digital Editing Lighting Casting Directing Producing Set Construction Character Design Storyboarding Stop Motion Particle Dynamics Textures