Express management System
Role assignment
- Product Manager: WANG Fangzhou, ZHENG Wanying
- Developer Programmer: QIU Rui, LIU Pengze
- Qulity Assurance Engineer: WANG Ruochen, FAN Yuyang, WANG Yixuan
Get Started
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
Prerequisites
- Java Runtime Environment
Install Guide
We used Make to automate the compilation process.
Requirement
- Unix-like environment (i.e. terminal, iTerm2)
- Java SE 1.8
- JDK for compilation
Installation in short
Type commands sequentially in terminal,
git clone https://github.com/patrickwang96/CS3343.git
cd CS3343/
make new
make build
make jar
Or simply download the JAR
Details
Download the source code from Project page and Unzip or download by git clone,
git clone https://github.com/patrickwang96/CS3343.git
To create structure of the compiled classes, go to CS3343 repo's folder first,
cd CS3343/
and run the commands below in terminal,
make new
To compile the whole project,
make build
To pack all classes into one JAR,
make jar
To delete all compiled classes and JAR,
make clean
To rebuild the whole project,
make rebuild
User Guide
Run the jar file in terminal:
java -jar group1.jar
The prompt EMS$ will be displayed if you successfully entered our system.
Our project is a command-driven system, with a user guide command help
EMS$ help
Cmd:
------------------------------------------Common_Commands------------------------------------------
help: show the available command
checkTime: show the time
searchBranch <x-corodinate> <y-corodinate>: search the Branch by location
help: show the available command
exit: exit the system
------------------------------------------End_of_Common_cmd------------------------------------------
------------------------------------------Basic_UI_Commands------------------------------------------
manager <id>: login as manager with id
customer <id>: login as customer with id
------------------------------------------End_of_Common_cmd------------------------------------------
------------------------------------------Manager_Commands------------------------------------------
addBranch <name> <x-corodinate> <y-corodinate>: add branch with name, and position
addCustomer <name> <password> <priority> <x-corodinate> <y-corodinate>: add customer with infomation
addLink <source_id> <target_id>: add directed linkage from source branch to target branch
searchOrder <id>: trace where the order is
rmBranch <id>: remove branch with id
rmLink <source_id> <target_id>: remove directed linkage from source branch to target branch
logout: logout to basic UI command
[Command only for super maanger]:
addManager <name> <password> <gender> <rank>: add new manager with the information
rmManager <id>: remove manager with id
------------------------------------------End_of_Manager_cmd------------------------------------------
------------------------------------------Customer_Commands------------------------------------------
createOrder <name> <target_id>: create a new order to send
searchOrder <id>: trace where the order is
logout: logout to basic UI command
------------------------------------------End_of_Customer_cmd------------------------------------------
a sample command rundown is provided below.
Sample Command Rundown
help
manager 0
addManager manager1 123456 female 1
addBranch branch1 1 2
searchBranch 1 2
addBranch branch2 15 15
addCustomer sender 654321 1 2 2
addCustomer receiver 567890 1 15 14
addLink 1 2
logout
customer 0
createOrder order 1
searchOrder 1
searchOrder order
logout
manager 0
rmManager 1
rmBranch 1
exit
Version Control System
Git
Person iteractions
- Customer (who receives items)
- Express company's managers
- Courier (the person who deliver the packages)
- Customer (who sends items)
- Branch offices
Project Structure
├── ems
│ ├── Branch.java
│ ├── CmdAddBranch.java
│ ├── CmdAddCustomer.java
│ ├── CmdAddLinkage.java
│ ├── CmdAddManager.java
│ ├── CmdCheckTime.java
│ ├── CmdCreateOrder.java
│ ├── CmdRmBranch.java
│ ├── CmdRmLinkage.java
│ ├── CmdRmManager.java
│ ├── CmdSearchBranch.java
│ ├── CmdSearchOrder.java
│ ├── Command.java
│ ├── Company.java
│ ├── Customer.java
│ ├── Dijkstra.java
│ ├── Edge.java
│ ├── Graph.java
│ ├── Invoker.java
│ ├── Main.java
│ ├── Manager.java
│ ├── Order.java
│ ├── OrderPool.java
│ ├── Position.java
│ ├── Receiver.java
│ └── Sender.java
└── ems_test
├── BranchPosIntegrationTest.java
├── BranchTest.java
├── CompanyTest.java
├── CourierTest.java
├── CustomerCompanyTest.java
├── CustomerTest.java
├── EdgeIntegrationTest.java
├── EdgeTest.java
├── GraphTest.java
├── ManagerTest.java
├── OrderBranchPositionTest.java
├── OrderPoolOrderTest.java
├── OrderPoolTest.java
├── OrderTest.java
├── PositionTest.java
├── ReceiverTest.java
├── SenderTest.java
└── TestBranch.java
Presentation structure
- Objective
- Planning
- Team Organization
- Development process
- Project scheduling
- Software
- Functions
- Demo
- System design
- Design patterns
- Design principles
- Code refactoring
- Bug report
- Functions
- ※Testing
- Hierarchy
- Approach (Bottom-up)
- Number of test cases
- Configuration
- Version control
- Library / Environmment
- Q&A
License
This project is licensed under the MIT License - see the LICENSE file for details