Create a WPF app, name it as MT_W2021_StudentNumber using C# and .Net
Design and implement an WPF windows app that displays and manages information of High-Speed Internet Service by a local Internet Service Provide i.e. Bell, Rogers, Wind, Fido, Telus etc, you create your own brand (Your own color theme).
Use collections to store your data, you must use a custom class for each Service offered, I Gbps, 150Mbps and 500Mbps.
Use LINQ to query (read or fetch data), insert, update and delete your collections.
The app should come preloaded with 3 pieces of data for each collection.
Provide a Login Screen user name and password.
Upon successful login, load the main window with Groupbox showing three radio buttons (1Gbps, 150Mbps and 500Mbps) and Other input controls - see image Fig 1 (Images are not exact WPF presentation).
Each Internet package in ComboBox populates textfields for input.
On selecting a name from the ComboBox, display the data in the blue shaded textboes.
Add buttons to create, update, delete data for that particular package.
- Show Message box with an error for incorrect login & input.
Note:
- Windows should not be default grey colour as shown Fig 2, change to your choice (using Style themes)
- Use whatever layout panels you want: Grid, StackPanel, or any other layout.
- Use your own creativity to layout the controls (Avoid Academic Integrity issues) and design a great app!
- You must have a message box asking the user to confirm quitting the application. Also use message box for user deleting, or updating the data for all collections.
- Format all the message boxes with appropiate message, caption, buttons and Image icons.
Write code for the wpfRoger app as follows:
- When user clicks on the 'Create' button, save the input from textbox fields into collection, and use List< T> for each radio button options (Need classes using polymorphism for Gigabit, 150u, and 500u from your base class).
- Text fields are for Monthly Usage which will be 'Unlimited' for all packages, Download Speed i.e. '1 Gbps', Service will be decimal i.e. $104.99/mo, Modem Rental will be i.e. $10/mo and Installation will be $49.99 for 150Mbps and 500Mbps, but $0 for 1Gbps packages See Fig 1
- After clicking 'Create' button, add the package Name, to the combo-box. Items selected from the combo-box shall ONLY display the package Name and no other information. Note package names must be unique (Hint validate before inserting). Display in the readonly text-boxes Monthly Usage, Download Speed. Note that the Monthly Total must be calculate by Adding Monthly Rental and Service in class files.
- When user clicks 'Update' button - update collection List< T>
- Clear all textfields when 'Clear' button is clicked. The only exception is the combo-box for Internet Packages.
Exception Handling:
- There should be no unhandled exceptions of any kind at run-time.
- Display all errors resulting from the input validation using MessageBoxes. Validate the input as follows:
- All fields are required (radio buttons, labels, etc).
- The name of the Internet packages should be unique.
- The download speed has to match selected option button text value for Mbps.
- The Modem Rental, Installation, and Service fields have to be a positive decimal number.
- The error messages should be clear and understandable.
Classes:
- Something like, "Name field cannot be left blank".
- You already have class for connecting to a database (Previous Project), use this for your project
- Create an abstract class InternetPackage.
- This class stores package name and package type. Derive required classes using polymorphism. For each radio button selection.
- An abstract readonly property. This property is implemented in each derived class to determine the modem rental of each type of package.
- Property for Installation which calculate the fee $49.99 for 150Mbps and 500Mbps, but $0 for 1Gbps packages
- Add properties as required from text fields - you decide.
Figure 1 WPF - wpfRoger layout, Selection for Unlimited package: see image.
Figure 2 WPF - wpfRoger layout: see image.