1) Database: The database needs to be used for persistent storage of cars. For details of what information should be stored in the database, please see the description above. You can use any relational database management system you wish (e.g. SQLServer, MySQL, Oracle, Access, etc.). The database should be normalised and use primary key and foreign key constraints.
2) Windows Forms Application for Employees: Create a secure Windows Forms application using C# that allows an administrator to log in and then add, edit and delete cars. It should also be possible to view cars in a list. The application should use the database outlined in requirement 1.
3) Images of Cars:Extend the application outlined in requirement 2 to allow employees to add one or more images to a car.
4) Price TextBox Component:Implement a component which extends the TextBox control. It should only allow numbers to be entered. Further, it should display the numbers that are entered into it in red if they exceed 10,000 (ten thousand). The price textbox component should be integrated into the application defined in requirement 2
5) Third-Party Database and SOAP Web Service: The car dealership has been given access to an existing third-party database, which also stores details of used cars and which can be used to complement the data that you already have. The owner of the database wants it to remain autonomous, so the current structure has to remain. You have been given permission to implement a Web Service that exposes car search functionality for this database.
You will be provided with an existing database by your tutor and you need to implement a SOAP web service in C# that provides search functionality for cars for this database.
Bear in mind that the clients of this web service could be applications that are not developed using Microsoft technology, so make sure that the return types can easily be processed in another language (e.g. avoid returning an object of type Dataset).
6) Car Search Portal: This is the public-facing user interface of the system. It should allow users to enter search criteria, submit a search and display the matching results. A single search would obtain and display matching results from both your database and the third-party database via the SOAP web service, but this should be transparent to the user (i.e. they just perform one search and the results are presented together). The portal should not be coupled directly to the third-party database, but should obtain search results via the SOAP web services created for requirements 5. The portal should be implemented in ASP.NET using C#.
7) Car Similarity Component: Implement a component which measures the similarity between two given cars. It must further be possible to specify the criteria that should be taken into consideration in the calculation. This should be done via properties (setters/getters) which represent the search criteria.
A simple version of the similarity component could check whether the two values are an exact match and calculate the total based on this. For example, the asking price and the make criteria are set to be used in the calculation. Car A costs £5,000 and is a Peugeot, car B costs £5,500 and is also a Peugeot. The make is an exact match, but the price is not, which means this would be a 50% similarity.
A more complex version of the similarity component would measure similarity for numeric values (e.g. asking price and age). For example, the asking price and the make criteria are set to be used in the calculation. Car A costs £5,000 and is a Peugeot, car B costs £5,500 and is a Peugeot. The make is an exact match (100%) and the price is a 90.90% match which means the overall similarity is 95.45%.
The car similarity component should be integrated in the Car Search Portal, such that it is used when no exact match is found. When search results are displayed, the similarity value should also be shown to the user.
8) Unit Testing: Create automated Unit Tests which test the non-trivial business logic of your application. What and how much you test will contribute to the final mark for this deliverable.