This project is an online school management system that allows administrators, teachers and students to manage and access information related to the school. The project includes modules for managing grades, classes, teachers, students, and personal information. It also includes a login and authentication system for controlling access to the different modules.
- Student information management
- Teacher information management
- Class schedule management
- Assignment management
- Attendance tracking
- Grade management
- Parent and student portals
- Communication tools for teachers, parents, and students
- Reporting and analytics
- Functionality requirement analysis
- Database design
- Login control
- Grade module
- Class module
- Teacher module
- Student module
- Administrator module
- Personal information management module
- Access control
- The DML and database informations could be found in
myeschool/src/main/resources/sql/Script.sql
file.
- I created jar file and H2 databse db file for the project in
ExecutableJarFileAndH2DatabseFiles
folder. - Download the files in
ExecutableJarFileAndH2DatabseFiles
- Execute the command below in CMD in the
ExecutableJarFileAndH2DatabseFiles
folder
java -jar myeschool-0.0.1-SNAPSHOT.jar
localhost:9001
to open the projectlocalhost:9001/swagger-ui.html
to open the swagger documentationhttp://localhost:9001/h2-console
to open the H2 database console- Driver Class : org.h2.Driver
- JDBC URL : jdbc:h2:file:./sql
- User Name : sa
- Password : password
-
Challenge 1
: Issues with interface documentation and testing during front-end and back-end separation.Solution
: Utilizing swagger2 for interface documentation and testing.
-
Challenge 2
: Issues with maintaining the validity of login verification using cookie and session.Solution
: Implementing token-based authentication for login verification.
-
Challenge 3
: Different permissions for administrators, teachers, and students after login.Solution
: Querying different tables based on user type and displaying different pages based on user type.
-
Challenge 4
: Data security issues.Solution
: Implementing MD5 encryption for passwords and performing password verification in ciphertext form.
- Spring Boot - The web framework used
- Mybatis Plus - ORM framework
- Vue.js - JavaScript framework
- Maven - Dependency Management
- HTML, CSS, and JavaScript for front-end development
- Vue.js as the JavaScript framework
- JSON for data transfer
- Java for back-end development
- Spring for back-end application
- JWT for Security Authentication
- MD5 for Encryption
- MySQL as the database management system
- JDBC for database connectivity
- Swagger for API documentation
- Mybatis Plus for database access
- Maven for project management and dependency management
- Git for version control
- Tomcat as the application server
- IntelliJ IDEA as the development environment
- Postman for API testing
- Chrome as the web browser
The project is structured as follows:
Show more
myeschool
βββ config
βββ controller
βββ mapper
βββ pojo
βββ service
β βββ impl
βββ util
- The
config
directory contains the configuration files for the project. - The
controller
directory contains the controllers that handle the incoming requests and provide the appropriate responses. - The
mapper
directory contains the mappers that interact with the database. - The
pojo
directory contains the plain old Java objects (POJOs) that represent the entities in the system. - The
service
directory contains the services that handle the business logic of the system. Theimpl
subdirectory contains the implementation of these services. - The
util
directory contains utility classes used throughout the project.
Show more
βββmyeschool
β MyeschoolApplication.java
β
ββββconfig
β MyConfig.java
β Swagger2Config.java
β
ββββcontroller
β AdminController.java
β ClazzController.java
β GradeController.java
β StudentController.java
β SystemController.java
β TeacherController.java
β
ββββmapper
β AdminMapper.java
β ClazzMapper.java
β GradeMapper.java
β StudentMapper.java
β TeacherMapper.java
β
ββββpojo
β Admin.java
β Clazz.java
β Grade.java
β LoginForm.java
β Student.java
β Teacher.java
β
ββββservice
β β AdminService.java
β β ClazzService.java
β β GradeService.java
β β StudentService.java
β β TeacherService.java
β β
β ββββimpl
β AdminServiceImpl.java
β ClazzServiceImpl.java
β GradeServiceImpl.java
β StudentServiceImpl.java
β TeacherServiceImpl.java
β
ββββutil
AuthContextHolder.java
CreateVerifiCodeImage.java
JwtHelper.java
MD5.java
Result.java
ResultCodeEnum.java
UploadFile.java
spring-boot-starter
: This is a basic dependency for Spring Boot application development. It includes a set of commonly used libraries for building web applications.spring-boot-starter-web
: This dependency includes libraries for building web applications, such as Spring MVC, tomcat, and spring web.spring-boot-starter-test
: This dependency includes libraries for testing Spring Boot applications, such as JUnit, Hamcrest, and Mockito.spring-boot-starter-thymeleaf
: This dependency includes the Thymeleaf template engine for building web pages in a Spring Boot application.mybatis-plus-boot-starter
: This dependency includes the Mybatis Plus library for working with databases in a Spring Boot application.lombok
: This dependency includes the Lombok library, which provides additional functionality for writing Java code, such as automatic getters and setters.mysql-connector-java
: This dependency includes the MySQL Connector/J library, which allows a Spring Boot application to connect to a MySQL database.mybatis-plus-generator
: This dependency includes the Mybatis Plus Generator library, which can automatically generate code for working with databases in a Spring Boot application.freemarker
: This dependency includes the FreeMarker template engine, which can be used to build web pages in a Spring Boot application.springfox-swagger2
: This dependency includes the Springfox library for generating API documentation in Swagger format.springfox-swagger-ui
: This dependency includes the Springfox library for displaying API documentation in a web UI.knife4j-spring-boot-starter
: This dependency includes a set of libraries for building web applications with knife4jspring-boot-devtools
: This dependency includes libraries that improve the development experience, such as automatic reloading of changes.fastjson
: This dependency includes the Fastjson library, which is a JSON processing library that can be used in a Spring Boot application.jjwt
: This dependency includes the JJWT library, which provides functionality for creating and validating JSON Web Tokens.commons-fileupload
: This dependency includes the Apache Commons FileUpload library, which can be used to handle file uploads in a Spring Boot application.postgresql
: This dependency includes the PostgreSQL JDBC driver, which allows a Spring Boot application to connect to a PostgreSQL database.
Show more
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- thymeleaf -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1</version>
</dependency>
<!-- POJO -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.31</version>
</dependency>
<!--swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<!--swagger ui-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
<!--swagger2 -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.29</version>
</dependency>
<!-- JWT Token-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.7.0</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.lucee</groupId>
<artifactId>postgresql</artifactId>
<version>8.3-606.jdbc4</version>
</dependency>
</dependencies>
- Clone the repository
- Configure the database connection in the config package
- Build and run the application with the command mvn spring-boot:run
- Access the application in your browser at http://localhost:9001
- Use the API documentation provided by Swagger to test the different endpoints
- Use Postman to test the different endpoints
- Use chrome to test the application
- Clone the project from the repository
- Import the project in intellij idea and run the maven command "mvn clean install"
- Run the project as Spring Boot Application
API documentation can be accessed through swagger-ui by running the project on localhost and visiting the endpoint: http://localhost:9001/swagger-ui.html
- Clone the repository to your local machine
git clone https://github.com/UyCoder/myeschool.git
- Import the project to your preferred IDE as a Maven project
- Update the application.properties file with your MySQL credentials
- Build the project using Maven
mvn clean install
- Deploy the project to Tomcat
Please read CONTRIBUTING.md
for details on our code of conduct, and the process for submitting pull requests to us.
Author: Ahmed Bughra
You can find me there: