Giter Site home page Giter Site logo

togeffet / parking Goto Github PK

View Code? Open in Web Editor NEW

This project forked from alecwaichunas/parking

0.0 0.0 0.0 91 KB

Java & Swing UI program developed using agile methodologies. Manages multiple parking lots with car check-in/check-out, simulated user payments, and keeps logs of transactions. Developed for SIU CS435 - Software Engineering.

Java 69.54% HTML 30.46%

parking's Introduction

Team

Team

Members

Alec Waichunas

Caleb Cassady

Donna St. Amour

Frankie Fanelli

Date

December 3rd, 2019


Table of Contents

1. Abstract 2

2. Introduction 2

2.1 Background 2

2.2 The Project 2

2.3 The Development 2

3. Project Requirements 3

3.1 Functional Requirements 3

3.2 Non-Functional Requirements 5

3.3 Use Case 7

3.4 Class Diagram 8

3.5 Use Sequences 9

3.6 Parking Plus Architecture 12

4. Project Implementation 13

4.1 Sprint 1 13

4.2 Sprint 2 13

4.3 Sprint 3 14

4.4 Test Cases 14

5. Conclusion and Future Enhancements 14

6. References 14

7. Appendix 15


1. Abstract

The goal of this project is to develop a parking application that could be used as a management system for paid parking lots. The application needs to allow for the management of multiple parking lots and sections within the parking lots, as well as manage transactions as customers enter and exit the lot. During development, we aim to carefully design such a program using thorough and concise documentation within the agile design framework.

2. Introduction

2.1 Background

Parking lots can be a crowded and unruly place, especially if there is no system to manage incoming and outgoing cars. Some parking lot owners would like to even charge cars that come through their lot, and can be unnecessary to have a person manage it. A program to create an easy and fast system to assign and pay for parking could solve this problem.

2.2 The Project

We would like to produce an application capable of assigning and paying for a parking spot with ease. As some parking lots are hectic, and dealing with meters can be troublesome and can go unpaid for, a user will pull up to a payment station before entering the parking lot and reserve a spot. The payment will then be processed when they leave the parking lot. The owner of a parking lot can setup the system with ease, adding and removing parking sections to their liking. A transaction log will also be available for the parking lot owner to view who was processed by the program, and how much money they have acquired.

2.3 The Development

In this project using the Agile software development cycle is most beneficial for the team. Starting with weekly meetups we can determine the necessary objectives to get done and dividend the work up. Next the plan for the project is executed with the design and development of the project. Testing and evaluating the project can follow, and report and merge all changes that took place at the following meeting.

3. Project Requirements

3.1 Functional Requirements

Functional requirements for the program are split into two categories: A.) requirements for customers and; B.) requirements for lot owners. All functional requirement IDs begin with FR, followed by A or B for the aforementioned categories, followed lastly by an indentifying number. The functional requirements are detailed here.

FRA1. Check-in system

Goal: Save the time, credit card, and spot # when a vehicle has entered the lot.

When a car enters the lot, we need to take in credit card and license plate numbers and issue a ticket. This system will save the time that they park so that when they leave the lot they get charged for the correct amount of time that they stayed in the lot. The issued ticket will identify which spot the customer should park in.

Origin: Initial brainstorming

Version: 1.0

Date: 9-26-18

Priority: 3

FRA2. Check-out system

Goal: Charge the car-owner's credit card for the time in lot and mark the spot they were in as open.

When the car leaves the lot, capture the ticket number again and see the time that they've been parked in the lot. Charge the card on file for that license plate and open the gate.

Origin: Initial brainstorming

Version: 1.0

Date: 9-26-18

Priority: 6

FRA3. Payment System

Goal: Allow for payment with credit/debit cards

When a car is entering the parking zone, they will have the ability to pay for their parking ticket using a credit or debit card. Their payment options will be for a standard (pay-per-hour) pass or for a monthly pass at a fixed rate.

Origin: Initial brainstorming

Version: 1.0

Date: 9-26-18

Priority: 9

FRB1. Transaction log

Goal: Keep a log of all transactions made by customers parking in the lot.

All transactions made for parking in the lot should be logged to a secure file. The data about a transaction should include the time the transaction was made, the payment method, the spot the customer was issued, the car's license plate number, and the duration of the park.

Origin: Initial brainstorming

Version: 1.0

Date: 9-26-18

Priority: 5

FRB2. Set transaction prices

Goal: Allow lot owners to easily change the price to park/purchase a pass.

Parking lot owners need the ability to set the price that they charge for people to park in the lot. This should at least include an option for the hourly parking rate as well as the flat charge price for the monthly parking pass.

Origin: Initial brainstorming

Version: 1.0

Date: 9-26-18

Priority: 8

FRB3. Saving and Loading Lot Info

Goal: Lot information should be saved to a file.

When the parking lot owner edits parking lot/lot section information, the new information should be saved to a file. The information should also be saved if the user exits the program unexpectedly. Whenever the program runs, it should check for the previously saved data and load it.

Origin: Sprint 2 Feedback

Version: 1.0

Date: 11-21-19

Priority: 3

3.2 Non-Functional Requirements

Non-functional requirements are not split into categories, but follow a similar ID system using the NFR (non-functional requirement) label followed by an identifying number. The non-functional requirements are detailed here.

NFR1. Transaction Data Visibility

Description: Transaction data should not be visible to customers, but rather only to those authorized to view the data (generally the lot owners.)

Metric: How secure transaction data is.

Origin: Initial brainstorming

Version: 1.0

Date: 9-26-18

Priority: 4

NFR2. Credit Card Data

Description: Credit card data should only be stored for the duration of the customer's park and should be discarded after the transaction has been successfully completed upon their leaving of the lot.

Metric: Whether or not the data is deleted when no longer needed

Origin: Initial brainstorming

Version: 1.0

Date: 9-26-18

Priority: 10

NFR3. System Speed/Efficiency

Description: System must be easy enough to process the user efficiently

Metric: The speed of processing the user through the system

Origin: Initial brainstorming

Version: 1.0

Date: 9-26-18

Priority: 6

NFR4. Data Size

Description: The system needs to be able to hold all data of a parking lot

Metric: more storage space will have to be allocated

Origin: Initial brainstorming

Version: 1.0

Date: 9-26-18

Priority: 8

NFR5. Uptime

Description: Down time status notification

Metric: 100% system up time is required to keep it up and running year around

Origin: Initial brainstorming

Version: 1.0

Date: 9-26-18

Priority: 2

NFR6. Card Validity

Description: Only valid cards should be accepted and used for payment.

Metric: Whether or not invalid cards are allowed.

Origin: Team Meeting

Version: 1.0

Date: 11-21-19

Priority: 4


3.3 Use Case

The project has a few actors that interacts with the system. The following use case diagram, shows how an actor should work alongside with the program.


3.4 Class Diagram

The program will require a system of objects to communicate with each other, and be able to fulfill the requirements. The diagram below is what we engineered to accomplish this feat.


3.5 Use Sequences

The use sequences visualize how the actors act on the system and how the system operates in the background. Below are the use cases for when the customers enters or leaves and when the parking lot owner operates the machine.

Customer Entering the Lot

Customer Exiting the Lot

Owner Operating the System

3.6 Parking Plus Architecture

The parking plus architecture is a client-server model. Although it is being simulated using an XML file, this program acts as multiple clients (terminals present at lot entrances) and a server (the ticketmanager loading data on program start and processing transactions in a centralized location).

The diagram below shows these concepts in a more detailed, visual manner:

4. Project Implementation

4.1 Sprint 1

For the first sprint, we completed our initial project brainstorming and developed the first version of backend code. We decided to develop the program in Java as we wanted the resulting product to be deployable to any parking lot system, and the specific hardware used at every parking lot may differ greatly. This was also beneficial for our team, which was comprised of developers on MacOS, Windows, and Linux.

The initial brainstorming for the project included creating UML class diagrams for core components, use case diagrams, and documenting program requirements. We decided that the ideal implementation of our software should be for parking lots where there are gated entry/exit location(s), each with a terminal that allowed for checking in/out of the lot. In addition, the software would need to manage the number of available spots in each lot, calculate and complete transactions, and validate payment info (potentially with a bank or other reliable entity.)

With these details in mind, we programmed the first version of core program classes used to model parking lots and their sections. We also included a simple interface that could be used for terminal hardware such as the gate, card scanner, ticket/receipt printer, etc. During this sprint, we did not aim to produce any code for the functionality of the software; however, we did include within the main method a small amount of test code that ensured proper relationships between the classes we had created.

4.2 Sprint 2

For the second sprint, our goal was to add the core functionality of the program on top of the backend that we had already developed. We began with a terminal-based check in/out system that read card info from the command line. This allowed us to begin testing card validation as well as the transaction system. While working towards the second sprint, we also created JUnit test classes to confirm the functionality of core system components. For information on these test cases, see section 4.4 below.

The next step was to create a user interface that allowed for the management of parking lot. We decided that this interface should also include a pseudo-terminal that mimicked the display that customers would see upon entering/exiting the lot. This user interface was created by using a 3-tab panel containing tabs for editing/managing the parking lots, entering/exiting the lot, and for viewing lot transaction data. Most UI functionality was completed before the second sprint, though data was not persistent (any edits/transactions would be lost upon exiting the program.)

4.3 Sprint 3

For the third and final sprint, we focused on adding remaining functionality and improving on feedback we received when presenting our progress for sprint 2. This included data persistence (the ability to save and load edits to the parking lots; the ability to save/export transaction data.) We also removed the remaining command-line interaction by moving the card information entry and ticket ID entry to a pop-up window that appears whenever the "Enter Lot" and "Exit Lot" buttons are pressed on the pseudo customer terminal.

We used this sprint as an opportunity to refine our design documents and add two new requirements (FRB3 and NFR6.) We also added model of the architecture our program uses.

4.4 Test Cases

The core functionality of this program required that multiple core functionalities worked correctly. These functionalities include: credit card validation and processing, customers being able to enter and exit a lot, admins being able to create and edit parking lots and sections, tickets printing out with correct information, and transactions processing correctly for administrator bookkeeping. Using JUnit test cases we wrote individual tests for all of these functionalities so that the core functionalities were verified. These tests are all included in the GitHub repository (linked to at the bottom of the file).

5. Conclusion and Future Enhancements

Through this project we were able to learn a lot about the requirements that will be required in most tech jobs in the future. This project saw the whole development lifecycle (besides real world deployment, but that’s not quite feasible) and through this we were able to experience what we’ll probably be doing upon employment.

Future enhancements that could be made include:

  • Updating the information storage to use a central database rather than local XML files
  • Updating the UI to fit modern design principles
  • Enhancing the security so that customers can’t access the admin terminal

6. References

Java 8 documentation:

https://docs.oracle.com/javase/8/docs/

Javax swing API documentation:

https://docs.oracle.com/javase/7/docs/api/javax/swing/package-summary.html

Mentor’s personal website:

https://www2.cs.siu.edu/~kahmed/

7. Appendix

Github repository:

https://github.com/psychotix/parking

parking's People

Contributors

alecwaichunas avatar donna-st-amour avatar psychotix avatar togeffet avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.