This application will provide service similar to that of Amazon, Flipkart, or Snapdeal. It will have different products that buyers can view and buy. Sellers can sell whatever (legal things) they like. Sellers get to choose the price of the product and the shipping costs. Buyers get to choose from many options.
This application can be used by buyers and sellers to sell products. Instead of going to a shop, and searching through all the aisles, one can simply search and get what they want within minutes. Sellers can sell their product to anyone in the world, and their services won't be limited to a neighbourhood.
I chose this project because most e-commerce applications have different apps for buying and selling (Amazon, for example, has an Amazon shopping app and Amazon Seller Central for buying and selling). I want to create an app which does both buying and selling in a single app.
- MarketPlaceApp was inspired by TellerApp (https://github.students.cs.ubc.ca/CPSC210/TellerApp) and JsonSerializationDemo(https://github.students.cs.ubc.ca/CPSC210/JsonSerializationDemo)
- The GUI was inspired by https://stackoverflow.com/questions/21375255/jpanel-positions-and-sizes-changes-according-to-screensize/21376596#21376596
- The splash screen was inspired by https://stackoverflow.com/questions/16134549/how-to-make-a-splash-screen-for-gui
- The event logging was inspired by https://github.students.cs.ubc.ca/CPSC210/AlarmSystem
For sellers:
- As a user, I want to be able to add my products to marketPlace and specify the price of the product
- As a user, I want to be able to view the list of my products, along with their ratings, their price, and number of buys
- As a user, I want to be able to remove a listing
For buyers:
- As a user, I want to be able to view the list of all the products available
- As a user, I want to be able to buy products
- As a user, I want to be able to view the list of products bought
- As a user, I want to be able to rate the products
For both buyers and sellers:
- As a user, I want to be able to save all the information (name, price, rating) to the marketplace to file (if I so choose)
- As a user, I want to be able to load the marketplace from file (If I so choose)
- You can add product to the marketplace by clicking the button labelled
List a product - You can remove a product by clicking the button labelled
remove a listing - You can buy a product by clicking the button labelled
Buy - You can view your previous orders by clicking the button labelled
Previous orders - You can locate my visual component when you start up the application for the first time
- You can save the state of my application by clicking the
savebutton at the bottom - You can reload the state of my application by pressing the
loadbutton at the button
- When a product is added to the marketplace, the event
{productName} was added to the marketplaceis logged - When a product is bought, the event
{productName} was boughtis logged - When a product is removed, the event
{productName} was removed from marketplaceis logged - When a product is rated, the event
{productName} was ratedis logged - When products are added to the marketplace, or when seller views the listed products,
the event
displaying the products listed by the selleris logged - When the buyer views the bought products (for example, to view the past orders, or to rate
the product), the event
showing buyer productsis logged
If I had more time, I would improve the cohesion in my MarketPlaceGUI class. Right now, all of my buttons are defined
in this same class. I would like to create an abstract class called Button, and all of my buttons, like Buy button,
Sell button, Rate button would extend this class. And each of the buttons will be defined in their own classes,
for example, their should be class named Rate, Buy, Sell etc. Then, all saving functionality will be defined
in the Save button class, and all the loading functionality would be defined in the Load button class
Then, I would improve the cohesion in the MarketPlaceApp class. Instead of defining all the functionality in this
single class, I would create classes, BuyerUi, SellerUi, and SavingUi. BuyerUi will have all the UI related to
the Buyer functionality, SellerUi will have all the UI related to the Seller, and the SavingUi will have all the
console UI related to the saving and the loading functionality
I am using a random number generator to generate unique product IDs, but instead, I would use the Singleton design pattern to provide a unique ID to all the products
Right now, the user needs to type in the productID to buy, rate or remove a product. If I had time, I would make the text clickable, so that user can just click a product to buy/rate/remove a product