Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/2004seraph/trainstorekioskapp
A university software project I contributed to
https://github.com/2004seraph/trainstorekioskapp
client-server group-project kiosk-software university-assignment
Last synced: about 1 month ago
JSON representation
A university software project I contributed to
- Host: GitHub
- URL: https://github.com/2004seraph/trainstorekioskapp
- Owner: 2004seraph
- License: other
- Created: 2023-11-27T17:46:40.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-20T22:42:18.000Z (about 2 months ago)
- Last Synced: 2024-11-28T04:09:59.292Z (about 1 month ago)
- Topics: client-server, group-project, kiosk-software, university-assignment
- Language: Java
- Homepage:
- Size: 2.75 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# My university systems design group project
In this project we had to gather requirements and design a retail store kiosk application which interfaces with a database. Staff would use the system to manage store stock and perform business management operations, and customers would use it for browsing products and placing orders.
This app will not function without a MySQL database with a correct schema to interface with, we were required to configure this on university servers and to develop the app connected to our VPN.
## Project Info
- Java version: 17
- Gradle version: 8.2## Building
This project uses gradle-wrapper, so nothing need be installed.
Just run `./gradlew jar` to output a standalone JAR file which can be run.
## Our Database DDL - An assessment requirement
### Person
```mysql
CREATE TABLE `Person` (
`PersonId` int NOT NULL AUTO_INCREMENT,
`forename` varchar(45) NOT NULL,
`surname` varchar(45) NOT NULL,
`email` varchar(60) NOT NULL,
`password` varchar(255) NOT NULL,
`houseName` varchar(20) NOT NULL,
`postCode` varchar(45) NOT NULL,
`paymentId` int DEFAULT NULL,PRIMARY KEY (`PersonId`),
KEY `paymentId_idx` (`paymentId`),
KEY `houseName_idx` (`houseName`),
KEY `postCode_idx` (`postCode`),
KEY `address` (`houseName`,`postCode`),
CONSTRAINT `address` FOREIGN KEY (`houseName`, `postCode`) REFERENCES `Address` (`houseNumber`, `postCode`),
CONSTRAINT `paymentId` FOREIGN KEY (`paymentId`) REFERENCES `BankDetails` (`paymentId`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB
```### Address
```mysql
CREATE TABLE `Address` (
`houseNumber` varchar(20) NOT NULL,
`streetName` varchar(45) NOT NULL,
`cityName` varchar(45) NOT NULL,
`postCode` varchar(45) NOT NULL,
PRIMARY KEY (`houseNumber`,`postCode`)
) ENGINE=InnoDB
```### BankDetails
```mysql
CREATE TABLE `BankDetails` (
`paymentId` int NOT NULL AUTO_INCREMENT,
`cardName` varchar(45) NOT NULL,
`cardNumber` text NOT NULL,
`expiryDate` date NOT NULL,
`securityCode` text NOT NULL,
`cardHolderName` varchar(45) NOT NULL,
PRIMARY KEY (`paymentId`)
) ENGINE=InnoDB
```### Role
```mysql
CREATE TABLE `Role` (
`personId` int NOT NULL,
`role` varchar(15) NOT NULL,
PRIMARY KEY (`personId`,`role`),
CONSTRAINT `person` FOREIGN KEY (`personId`) REFERENCES `Person` (`PersonId`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB
```### Order
```mysql
CREATE TABLE `Order` (
`orderId` int NOT NULL AUTO_INCREMENT,
`personId` int NOT NULL,
`date` datetime NOT NULL,
`status` varchar(20) NOT NULL,
PRIMARY KEY (`orderId`),
KEY `personId_idx` (`personId`),
CONSTRAINT `personId` FOREIGN KEY (`personId`) REFERENCES `Person` (`PersonId`)
) ENGINE=InnoDB
```### OrderLine
```mysql
CREATE TABLE `OrderLine` (
`orderId` int NOT NULL,
`productCode` varchar(20) NOT NULL,
`quantity` int NOT NULL,
PRIMARY KEY (`orderId`,`productCode`),
KEY `productId_idx` (`productCode`),
CONSTRAINT `orderId` FOREIGN KEY (`orderId`) REFERENCES `Order` (`orderId`) ON DELETE CASCADE,
CONSTRAINT `productCode` FOREIGN KEY (`productCode`) REFERENCES `Product` (`productCode`) ON DELETE CASCADE
) ENGINE=InnoDB
```### Product
```mysql
CREATE TABLE `Product` (
`productCode` varchar(20) NOT NULL,
`name` varchar(45) NOT NULL,
`stockLevel` int NOT NULL,
`price` decimal(10,2) NOT NULL,
PRIMARY KEY (`productCode`)
) ENGINE=InnoDB
```### BoxedSetContent
```mysql
CREATE TABLE `BoxedSetContent` (
`boxSetProductCode` varchar(20) NOT NULL,
`contentProductCode` varchar(20) NOT NULL,
`quantity` int NOT NULL DEFAULT '0',
PRIMARY KEY (`boxSetProductCode`,`contentProductCode`),
KEY `componentProductCode_idx` (`contentProductCode`),
CONSTRAINT `boxedProductCode` FOREIGN KEY (`boxSetProductCode`) REFERENCES `Product` (`productCode`) ON DELETE CASCADE,
CONSTRAINT `componentProductCode` FOREIGN KEY (`contentProductCode`) REFERENCES `Product` (`productCode`) ON DELETE CASCADE
) ENGINE=InnoDB
```### Component
```mysql
CREATE TABLE `Component` (
`productCode` varchar(20) NOT NULL,
`brand` varchar(45) NOT NULL,
`era` varchar(8) NOT NULL,
`gauge` varchar(45) NOT NULL,
PRIMARY KEY (`productCode`),
CONSTRAINT `product` FOREIGN KEY (`productCode`) REFERENCES `Product` (`productCode`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB
```### Locomotive
```mysql
CREATE TABLE `Locomotive` (
`productCode` varchar(20) NOT NULL,
`priceBracket` varchar(30) NOT NULL,
PRIMARY KEY (`productCode`),
CONSTRAINT `component` FOREIGN KEY (`productCode`) REFERENCES `Component` (`productCode`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB
```### Track
```mysql
CREATE TABLE `Track` (
`productCode` varchar(20) NOT NULL,
`curvature` varchar(45) NOT NULL,
PRIMARY KEY (`productCode`),
CONSTRAINT `component3` FOREIGN KEY (`productCode`) REFERENCES `Component` (`productCode`) ON DELETE CASCADE
) ENGINE=InnoDB
```### Controller
```mysql
CREATE TABLE `Controller` (
`productCode` varchar(20) NOT NULL,
`controlType` varchar(45) NOT NULL,
PRIMARY KEY (`productCode`),
CONSTRAINT `component2` FOREIGN KEY (`productCode`) REFERENCES `Component` (`productCode`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB
```