2
2
2. **Dissertation Management:**
- Users can add, update, and view dissertation details (e.g., title, author, supervisor,
abstract, research topic, etc.).
4. **Status Tracking:**
- The system can track the status of a dissertation (e.g., under review, completed, in-
progress).
5. **Database Integration:**
- All dissertation data will be stored in a relational database (e.g., MySQL, PostgreSQL,
SQLite).
---
#### Tables:
1. **Users**: Stores information about students, faculty, and administrators.
- `user_id` (INT, Primary Key)
- `username` (VARCHAR)
- `password` (VARCHAR)
- `role` (VARCHAR) [student, faculty, admin]
1. **Create a Database**:
```sql
CREATE DATABASE dissertation_management;
USE dissertation_management;
```
2. **Create Tables**:
```sql
CREATE TABLE Users (
user_id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
role VARCHAR(20) NOT NULL
);
1. **User.java**:
```java
public class User {
private int userId;
private String username;
private String password;
private String role;
2. **Dissertation.java**:
```java
public class Dissertation {
private int dissertationId;
private String title;
private String abstractText;
private User author;
private User supervisor;
private String researchTopic;
private String status;
3. **Review.java**:
```java
public class Review {
private int reviewId;
private Dissertation dissertation;
private User reviewer;
private String reviewText;
private int rating;
4. **DissertationStatusHistory.java**:
```java
public class DissertationStatusHistory {
private int statusId;
private Dissertation dissertation;
private String status;
private Date updatedOn;
For interacting with the database, create DAO classes for each entity:
2. **DissertationDAO.java**:
```java
import java.sql.*;
You can use Swing or JavaFX to create a basic graphical interface to interact with the
system. For simplicity, let's assume you're using Swing.
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public MainGUI() {
frame = new JFrame("Dissertation Management System");
frame.setSize(400, 400);
frame.setDefaultClose