CST1510 Final Coursework
1. Brief CW Description
Design and implement a simplified “Investment Trading Platform” like an ISA managing app, allowing the user to create an account, invest money into different cryptocurrencies or precious metals, view a portfolio, pay in/withdraw money out or sell the investment.
You will build a Client/ Server desktop application in Python, interacting with the user on the client side and adding or updating data on the server side. The client-side part of the program should have an intuitive user interface for all user-related interactions, while the server part should store all the data.
2.Submission
The submission contains two parts:
First, online submission of the code and pdf file with design in week 23; second will be a in class presentation of the code in week 24. The deadline for code submission is Friday week 23 5:30pm. You must submit a single zip file containing a folder holding the following:
- Python code (client and server file plus any other python files)
- Data (text, csv, spreadsheet or DB file)
- Images (if the GUI contain any images, you can include them in this folder)
- Report (.pdf file containing: your credential, UML diagram, short implementation plan, running instructions)
Note: For the presentation, you will receive an email with your time slot after you submit the code in week 23. In extenuating circumstances where physical attendance may not be possible contact your lecturer in advance, provide reasonable evidence of your absent and see point 8 (page 4) for alternative submission. Please note that if you don’t present your project, you will get zero for the assignment. Code must be build using python3, and it must be able to compile from the terminal or CMD.
3. Scenario
John is a new investor who wants to invest in cryptocurrency and precious metals. He visits the Investment /Trading Platform and creates an account, adding £500 as his initial investment cash. The system provides him with a client ID and a welcome window detailing his total investment value, total money to invest, and available options of: "Invest Now", "Portfolio Viewing" and "Money In/Out". John decides to invest and clicks the "Invest Now" option. The system shows him a list of investments and their prices. He chooses one and enters the quantity or cost. John then selects either buy or sell and clicks "Confirm and Pay". The system processes the transaction and updates his portfolio information accordingly.
John can now view his portfolio by clicking the "Portfolio Viewing" option. This shows list of all his transactions. He can also add or withdraw money from his account by choosing the "Money In/Out" option.
4. Scope
The “Investment Trading Platform” contains the following: Client:
a) Open an account. b) Invest c) Portfolio Viewing d) Money in /out
Server: a) user account information b) user portfolio information c) price information (Web scaped current prices of: Crypto: https://coinranking.com/, gold: https://finance.yahoo.com/quote/GC%3DF?p=GC%3DF, and silver: https://finance.yahoo.com/quote/SI%3DF?p=SI%3DF)
Description of each client functionalities: a) The ‘Open account’ option should allow the user to: Create simple log in system with username and password. Add ‘cash to invest’ option where user can enter the initial value of money they will add into the account. Return client ID number (store the user account details) Then welcome window/message specifying client ID, total investment value, total cash to invest, total gain/loss and three options to choose from: a. Investment now. b. Portfolio Viewing c. Pay in /withdraw. b) The ‘Invest now’ option allow the user to:
- view list of Investment types (names and prices information)
- choose one, based on amount of money to invest or quantity of the specific investment.
a. Enter the value and calculate accordingly.
Choose between buy or sell.
b. When buying check for sufficient amount of money and if the total cash will allow
proceed in creating the buy transaction:
c. When selling the system should check the current investment for availability and if
allow proceed in creating the sell transaction
d. Both options will generate transaction:
i. The transaction should allow the user to cancel, edit or confirm and pay.
- cancel – will ask for confirmation and return into the welcome window
- edit – will allow editing the transaction
- confirm and pay – will display the:
- Name of the cryptocurrencies, Date, Buy/sell option, Quantity, Cost.
Transaction should be update in portfolio accordingly (store user portfolio information). c) The ‘Portfolio Viewing’ option will display list of all transaction. Where each transaction will contain: a. Name of the cryptocurrencies, b. Date of purchasing: c. Buy/sell option: d. Quantity: e. Cost: d) The Money in /out In this option user will be able to add or withdraw money to increase or decrease the ‘cash to invest’ option accordingly. Description of server data storage: a) user account information will be updated after user will be created. b) user portfolio information will be update after each transaction as well as all trades will be retrieved and display on ‘Portfolio Viewing’ option. c) price information will be retrieving each time user open invest now option. Advanced functions/features may include:
- Price Simulation in Server side and automatically updated on client side GUI regularly (every 15 seconds)
- Price Trend Graph in client side using Matplotlib
- Use of MySQL, OO, or Multiple clients
Software Description
Start by designing the “Investment Trading Platform” using a UML diagram. The UML diagram does not have to be using precise UML notations; however, it should have a graphical illustration of the whole system.
Server
Design and implement a (command line) server program that connects to the previously implemented database (in text or CSV or MySQL). The Server should have methods to add, remove, or update the data described above and communicate with the client accordingly.
Client
Design and implement Python file to be used as the client. The client should contain the Investment Trading Platform” user Interface (UI), in GUI or text-based.
This GUI or text-based program should allow the user to implement all four functionalities described above in the scope (point 4) and consequently communicate with the server.
5. Marking
The code and pdf file will be marked according to the marking scheme attached below.
Item
- .pdf report illustrating design and planning behind the development.
- .txt or .csv files data storage
- Client and server files
- Sending and receiving the data between client and server
- Server reading the data from the data storage.
- Displaying the data on the client-side
- Text-based design
- The ‘open account’ and ‘invest now’ options developed
- pdf report illustrating design and planning behind the development.
- .txt or .csv files data storage
- Client and server files
- Sending and receiving the data between client and server
- Server reading the data from the data storage.
- Displaying the data on the client-side
- Text-based design or GUI
- All option developed
- pdf report illustrating design and planning behind the development.
- SQL files data storage
- Client and server files
- Sending and receiving the data between client and server
- Server reading the data from the data storage.
- Displaying the data on the client-side
- Tkinter-GUI
- All option developed.
- Price Trend Graph in client side using Matplotlib In addition, there is:
- Price Simulation in Server side and automatically updated on client-side.
- The software includes multithreading.
- Code is well documented.
8. Alternative submission
In situation where physical attendance may not be possible submit MP4 video recording of a screenshot presentation. The video should be about your work, not general comment about programming in general. The recording should be no longer than 6 minute. The presentation should include: • introduction, including:
- your student number
- a brief description of your project (not the coursework task but what you choose to develop)
- brief overview of the presentation • design:
- clearly show your design UML/diagram and problem design • implementation, including:
- your approach, i.e. how you translated the design into working software
- explain how did you start the programming process and the stages you went through • software demonstration
- Show your understanding of the implementation, not just that you can run the program (This is important part where you are demonstrating that you are the author of the work) • conclusion, including:
- a summary of the work
- limitations of your work (don’t list features which aren’t required)
- how you would approach a similar project in the future