Object-Oriented Software Development
Assignment: Development Task
Learning Outcome 1: Explain and use key programming constructs to create correct and efficient programs
Learning Outcome 2: Design, and implement Object-Oriented programs
Learning Outcome 3: Develop applications with graphical user-interfaces
Learning Outcome 4: Develop technical software solutions to complex problems
Problem 1 - The Smart Tic Tac Toe game
This game aims to win the game on a 3 x 3 grid with the victory of three identical symbols (X or O) on horizontal, diagonal, or vertical lines. The players will play alternately. This game has two options: player one against player two or human against computer. When a human plays against the computer, there are two options: (a) Random logic, where the computer randomly selects one of the empty boxes on the grid and places a symbol on that box (X if the computer starts the game first, O if human starts the game first). (b) Smart logic that follows the steps below:
1) If the computer can win the game in one move, it makes a move, and the game ends. So, if there is one line with two symbols given by the computer and an empty box, the computer must place a symbol in the empty box.
2) If the computer can block with one move, it makes a move, and the opponent cannot win the game in the next move. So, if there is a line with two symbols given by a human and an empty box, the computer must place a symbol in the box.
3) If there is no possibility of winning or the computer cannot block the opponent, then the movement is carried out in this order: the middlebox, one of the four corner boxes, or one of the four side squares (the order is important)
The game should display a scoreboard with players' names and scores (e.g., [name of human user] vs computer). The scoreboard should be accessible while playing the game so players can keep track of their score. Every time a user wins (get 3 of their symbols in a row (up, down, diagonally)), 1 point should be added to their total score.
Problem 2 - The Preston Athletic Club
The Preston Athletic Club are organising their first international marathon in the spring of next year. A field comprising world-ranking professionals and amateur runners (some in fancy dress) will compete on the 26.2-mile route around Preston. Each amateur runner fundraises for a charity and has a sponsorship form. A sponsorship form has the number of sponsors, a list of the sponsors, and a list of amounts sponsored. You must design a software system to manage all aspects of the race efficiently, including registration and volunteer management. The functional requirements for the system are the following:
1) The system would allow registering participants (runners and volunteers) for the marathon;
2) The system would maintain each runner's number (e.g., "Runner 10", where ten is their number), result status ("Not finished" or "Finished"), and time finished (recorded in hours, minutes, and seconds);
3) For each professional runner, the system must show the world ranking (e.g., Runner 200 (Ranking 6));
4) For each amateur runner, the system must show a list of sponsors and the associated amounts;
5) The system would allow adding a sponsor and associated amounts for each amateur runner;
6) The system would allow printing a collection list for an amateur runner from their sponsorship form;
7) The system must display an amateur runner with a costume (e.g., "Runner 406 (Snow White)")
8) The system must allow creating and listing of different volunteer types (e.g., drink station, marshalling) and their schedules;
9) The system must allow creating and printing personalised certificates for each participant (runners and volunteers).
Problem 3 - Message management system
Giannis owns a small shop close to the University of Central Lancashire, selling a range of stationery, office supplies, and printing and laminating services.
Giannis plans to acquire an LCD message display board mounted above the shopfront to show scrolling text messages. Giannis intends to use this to advertise his products and offers and provide a message display service for fee-paying clients (e.g., local events, staff required, etc.)
Each client is given a unique ID string (e.g., "Andreas4") and has a name, an address, a phone number and an amount of credit in "credit units". A book of clients is maintained to which clients can be added, and we can look up a client by their ID.
Each message is for a specific client and comprises the text to be displayed, the number of days it should be displayed and the cost of that message in units. No duplicate messages (i.e., the same text for the same client) are permitted.
A set of current messages is to be maintained: new messages can be added, the message set can be displayed on the display board, and at the end of each day, a purge is performed - each message has its days remaining decremented and its client's credit reduced by the cost of the message, and any messages which have expired or whose client has no more credit are deleted from the message set.
The software is to be written before the display board is installed. Therefore, the connection to the board should be via a well-defined interface and a dummy display board implemented in software for testing purposes.
Task details:
You will need to analyse, model and program a solution in .NET C# for your selected problem. Specifically, you must:
Task 1: Create a UML Class diagram based on the requirements of your selected problem. Your diagram should show all the potential classes, their associated methods, properties and relationships between classes. You should create your UML diagram electronically and fully annotate it.
Task 2: Implement your class diagram in .NET C#. You should demonstrate using OOP and programming concepts as your selected problem requires.
Task 3: Create a GUI .NET C# application which implements the functionalities defined in your selected problem. You should design your GUI using Windows Forms or WPF.NET.
Task 4: You can meet one or more requirements of your selected problem using external files or a database (e.g., MySQL for Visual Studio). You should include the file(s) or DB in your project to ensure I can run the application.
Task 5: Test your software using a standard technique (e.g., Blackbox, Unit). You must show evidence that you tested your app during the demonstration to your tutor.
Task 6: Demonstrate your work to your tutor. During the demonstration, you should explain how your work meets the requirements of your selected problem. Demos are strictly limited to 10 minutes and will include questions from your tutor. Students must only present materials which communicate how their work satisfies the marking scheme. A PowerPoint may support this if necessary