diff --git a/App.css b/App.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/App.js b/App.js
new file mode 100644
index 0000000000..756b9c88c3
--- /dev/null
+++ b/App.js
@@ -0,0 +1,60 @@
+
+import LandingPage from './pages/Landingpage';
+//import Home from './Home';
+import Navbar from './navbar';
+//import Home from './Home';
+
+import { BrowserRouter as Router , Route, Switch } from 'react-router-dom/cjs/react-router-dom.min';
+import LoginPage from './pages/LoginPage';
+import Dashbaoard from './pages/dasboard';
+import GradeReport from './pages/GradeReport';
+import MissingGradeform from './pages/MissingGrade form';
+import InstructorContact from './pages/InstructorContact';
+import Help from './pages/Help'
+import './index.css';
+
+
+
+
+
+
+
+function App() {
+
+ const pageStyle = {
+ //backgroundColor:'#2ecc71',
+ minHeight: '100vh',
+
+
+ } ;
+ return(
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
+
+export default App;
diff --git a/App.test.js b/App.test.js
new file mode 100644
index 0000000000..1f03afeece
--- /dev/null
+++ b/App.test.js
@@ -0,0 +1,8 @@
+import { render, screen } from '@testing-library/react';
+import App from './App';
+
+test('renders learn react link', () => {
+ render( );
+ const linkElement = screen.getByText(/learn react/i);
+ expect(linkElement).toBeInTheDocument();
+});
diff --git a/GradeReport.css b/GradeReport.css
new file mode 100644
index 0000000000..81f7f3a921
--- /dev/null
+++ b/GradeReport.css
@@ -0,0 +1,15 @@
+
+
+.grade-report-container {
+ display: flex;
+ justify-content: space-around;
+ margin: 20px;
+ }
+
+ .filter-container,
+ .grade-list-container {
+ width: 45%;
+ }
+
+
+
\ No newline at end of file
diff --git a/Help.js b/Help.js
new file mode 100644
index 0000000000..711ab73f1a
--- /dev/null
+++ b/Help.js
@@ -0,0 +1,11 @@
+import React from 'react'
+import { Link } from 'react-router-dom'
+function Help() {
+ return (
+
+ Help page
+
+ )
+}
+
+export default Help
\ No newline at end of file
diff --git a/InstructorContact.js b/InstructorContact.js
new file mode 100644
index 0000000000..d44cd3316e
--- /dev/null
+++ b/InstructorContact.js
@@ -0,0 +1,101 @@
+
+import { Link } from 'react-router-dom';
+import React, { useState } from 'react';
+import './InstructorContactPage.css';
+import 'tailwindcss/tailwind.css';
+
+function InstructorContact() {
+ const [selectedInstructor, setSelectedInstructor] = useState(null);
+ const [emailSubject, setEmailSubject] = useState('');
+ const [emailBody, setEmailBody] = useState('');
+ const [confirmationMessage, setConfirmationMessage] = useState('');
+
+ const instructors = [
+ { id: 1, name: 'John Doe', email: 'john.doe@example.com' },
+ { id: 2, name: 'Jane Smith', email: 'jane.smith@example.com' },
+ { id: 3, name: 'Bob Johnson', email: 'bob.johnson@example.com' },
+ // Add more instructors as needed
+ ];
+
+ const handleInstructorSelect = (instructor) => {
+ setSelectedInstructor(instructor);
+ };
+
+ const handleEmailChange = (e) => {
+ setEmailSubject(e.target.value);
+ };
+
+ const handleBodyChange = (e) => {
+ setEmailBody(e.target.value);
+ };
+
+ const handleSendEmail = () => {
+ // Perform any email sending logic (mock-up)
+ setConfirmationMessage(`Email sent to ${selectedInstructor.name} successfully!`);
+ };
+
+ return (
+
+
+
Instructor Contact List
+
+ {instructors.map((instructor) => (
+ handleInstructorSelect(instructor)}
+ >
+ {instructor.name}
+
+ ))}
+
+
+ {selectedInstructor && (
+
+
{`Contact ${selectedInstructor.name}`}
+
+ {confirmationMessage &&
{confirmationMessage}
}
+
+ )}
+
+ );
+}
+
+export default InstructorContact;
\ No newline at end of file
diff --git a/Landingpage.js b/Landingpage.js
new file mode 100644
index 0000000000..c441c5b46c
--- /dev/null
+++ b/Landingpage.js
@@ -0,0 +1,35 @@
+// LandingPage.js
+
+import React from 'react';
+import "tailwindcss/tailwind.css";
+import './home.css'
+
+const LandingPage = () => {
+ return (
+
+
+
Missing Grade System
+
+ Welcome to the Missing Grade System, a platform designed to track and manage missing grades efficiently.
+
+
Overview
+
+ The Missing Grade System aims to streamline the process of identifying and addressing missing grades in educational institutions. It provides a centralized platform for teachers, students, and administrators to collaborate and resolve missing grade issues.
+
+
Reason for Creation
+
+ The primary goal behind creating this system is to enhance communication and transparency regarding missing grades. By offering a user-friendly interface, it simplifies the tracking of missing grades, reducing administrative burden and ensuring timely resolution.
+
+
Features
+
+ Efficient tracking of missing grades.
+ Real-time notifications for teachers and students.
+ Collaborative tools for communication between stakeholders.
+ Automated reminders for pending grade submissions.
+
+
+
+ );
+};
+
+export default LandingPage;
diff --git a/LoginPage.js b/LoginPage.js
new file mode 100644
index 0000000000..4d1c1e056f
--- /dev/null
+++ b/LoginPage.js
@@ -0,0 +1,62 @@
+
+
+import { Link } from 'react-router-dom';
+import React, { useState, createContext, useContext} from 'react';
+
+import './login.css';
+
+const LoginPage = () => {
+
+ const [studentId, setStudentId] = useState('');
+ const [pin, setPin] = useState('');
+ const [error, setError] = useState('');
+
+ const handleLogin = () => {
+
+ if (studentId === '12345' && pin === '1234') {
+
+ } else {
+ setError('Invalid Student ID or PIN');
+ }
+ };
+
+ return (
+
+
+
Student Login
+ {error &&
{error}
}
+
+
+ Student ID
+ setStudentId(e.target.value)}
+ />
+
+
+ PIN
+ setPin(e.target.value)}
+ />
+
+
+ Login
+
+
+
+
+ );
+};
+
+export default LoginPage;
diff --git a/Mark.jpeg b/Mark.jpeg
new file mode 100644
index 0000000000..685af981f2
Binary files /dev/null and b/Mark.jpeg differ
diff --git a/MissingGrade form.js b/MissingGrade form.js
new file mode 100644
index 0000000000..5e2b079c62
--- /dev/null
+++ b/MissingGrade form.js
@@ -0,0 +1,107 @@
+
+import { Link } from 'react-router-dom';
+import React, { useState } from 'react';
+import './MissingGradeForm.css';
+import 'tailwindcss/tailwind.css';
+
+function MissingGradeform() {
+ const [formData, setFormData] = useState({
+ courseName: '',
+ instructorName: '',
+ expectedGrade: '',
+ explanation: '',
+ });
+
+ const [confirmationMessage, setConfirmationMessage] = useState('');
+
+ const handleChange = (e) => {
+ const { name, value } = e.target;
+ setFormData((prevFormData) => ({
+ ...prevFormData,
+ [name]: value,
+ }));
+ };
+
+ const handleSubmit = (e) => {
+ e.preventDefault();
+
+ // Perform any validation or data processing here
+
+ // Display a confirmation message
+ setConfirmationMessage('Grade report submitted successfully!');
+ };
+
+ return (
+
+
Missing Grade Report Form
+ {confirmationMessage ? (
+
{confirmationMessage}
+ ) : (
+
+
+
+ Course Name:
+
+
+
+
+
+ Instructor Name:
+
+
+
+
+
+ Expected Grade:
+
+
+
+
+
+ Explanation:
+
+
+
+
+ Submit
+
+
+ )}
+
+ );
+};
+export default MissingGradeform;
\ No newline at end of file
diff --git a/MissingGradeForm.css b/MissingGradeForm.css
new file mode 100644
index 0000000000..27cd08942b
--- /dev/null
+++ b/MissingGradeForm.css
@@ -0,0 +1,9 @@
+/* MissingGradeForm.css */
+
+.missing-grade-form-container {
+ max-width: 500px;
+ margin: 20px auto;
+ }
+
+ /* Add more styles as needed */
+
\ No newline at end of file
diff --git a/README.md b/README.md
index cce66cb7d4..12ed023b06 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,7 @@
# Student Grade Reporting System Frontend
+# Author
+## Name : Edward Sefah Koranteng
+## ID : 11137631
## Project Overview
@@ -37,7 +40,71 @@ This will start the application on `localhost` at the default port.
## Usage
-Describe how to use the application, highlighting key functionalities such as logging in, viewing grades, reporting missing grades, and contacting instructors.
+
+
+User Flow:
+Landing Page:
+
+Upon visiting the site, users are greeted with an overview of the system.
+Navigation links are provided to guide users to different sections.
+Login Page:
+
+Users access the system by entering their Student ID and PIN.
+The secure login form validates user credentials.
+Dashboard:
+
+After successful login, users land on the dashboard.
+The dashboard provides an overview of the student's current grades.
+Alerts or notifications highlight any missing grades.
+Grade Report Page:
+
+Users can navigate to the Grade Report page to view detailed information on all courses and respective grades.
+Options to filter grades by semester/academic year are available.
+Missing Grade Form Page:
+
+If a student identifies a missing grade, they can visit the Missing Grade Form page.
+The form includes fields for Course name, Instructor name, Expected grade, and an Explanation field.
+Users submit the form to report the missing grade.
+Instructor Contact Page:
+
+The system provides a list of instructors with contact details.
+Users have the option to send a simulated email to the instructor (mock-up).
+Help and Support Page:
+
+An FAQ section provides guidance on grade reporting.
+A contact form for technical support (mock-up) is available.
+Navigation:
+A navbar/sidebar is present for easy navigation.
+A footer provides additional information and copyright details.
+Key Functionalities:
+Responsive Design:
+
+The website is designed to be responsive, ensuring a seamless experience on various devices.
+Secure Login:
+
+Users access the system with a secure login form using Student ID and PIN.
+Dashboard:
+
+Users can view an overview of their current grades on the dashboard.
+Alerts notify users of any missing grades.
+Grade Report:
+
+Detailed information on all courses and respective grades is available.
+Filtering options provide flexibility to view grades based on semester/academic year.
+Missing Grade Reporting:
+
+Users can report missing grades using a form with necessary details.
+A confirmation message assures users of successful submission.
+Instructor Contact:
+
+Users can find a list of instructors with contact details.
+Simulated email functionality allows users to communicate with instructors.
+Help and Support:
+
+An FAQ section guides users on grade reporting.
+A contact form (mock-up) is available for technical support.
+This user flow and key functionalities ensure a comprehensive and user-friendly experience for students interacting with the Missing Grade Reporting System.
+
## Contribution
diff --git a/dasboard.js b/dasboard.js
new file mode 100644
index 0000000000..0f1ad738f5
--- /dev/null
+++ b/dasboard.js
@@ -0,0 +1,46 @@
+import React from "react";
+import { Link } from "react-router-dom";
+import './Dashboard.css';
+import 'tailwindcss/tailwind.css';
+
+
+const Dashbaoard = () => {
+ const studentGrades = [
+ { subject: 'Math', grade: 'A' },
+ { subject: 'Science', grade: 'B' },
+ { subject: 'English', grade: 'C' },
+ // Add more subjects and grades as needed
+ ];
+
+ const missingGrades = [
+ { subject: 'History' },
+ // Add more missing subjects as needed
+ ];
+
+ return (
+
+
+
Student's Current Grades
+
+ {studentGrades.map((grade, index) => (
+ {`${grade.subject}: ${grade.grade}`}
+ ))}
+
+
+
+
Missing Grades Alerts
+ {missingGrades.length === 0 ? (
+
No missing grades. Great job!
+ ) : (
+
+ {missingGrades.map((missingGrade, index) => (
+ {`${missingGrade.subject} - Missing Grade`}
+ ))}
+
+ )}
+
+
+ );
+}
+
+export default Dashbaoard;
\ No newline at end of file
diff --git a/hback.jpg b/hback.jpg
new file mode 100644
index 0000000000..2c615e0799
Binary files /dev/null and b/hback.jpg differ
diff --git a/home.css b/home.css
new file mode 100644
index 0000000000..0698bc6285
--- /dev/null
+++ b/home.css
@@ -0,0 +1,44 @@
+/* App.css */
+
+body {
+ margin: 0;
+ padding: 0;
+ font-family: 'Arial', sans-serif;
+ background-color: #f0f4f7;
+ color: tomato;
+ }
+
+ .container {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 100vh;
+ }
+
+ .landingPage-box{
+ width: 500px;
+ padding: 20px;
+ background: #fff;
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
+ border-radius: 8px;
+ }
+
+ h1 {
+ text-align: center;
+ color: #333;
+ }
+
+ p {
+ color:#555;
+ }
+
+ ul {
+ list-style: none;
+ padding: 0;
+ }
+
+ li {
+ margin-bottom: 10px;
+ }
+
+
\ No newline at end of file
diff --git a/index.css b/index.css
new file mode 100644
index 0000000000..ed74f8a28c
--- /dev/null
+++ b/index.css
@@ -0,0 +1,57 @@
+font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
+'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
+sans-serif;
+ /*base styles*/
+ {
+ margin: 0;
+
+
+ }
+ .navbar{
+ padding: 20px;
+ display: flex;
+ align-items: center;
+ max-width: 5000px;
+ margin:0 auto;
+ border-bottom: 1px solid #401e1e;
+ background-color: #331e15 ;
+ position: fixed;
+ margin-top: -50px;
+ height: 50px;
+ margin-left: -20px;
+ width: 5000px;
+ background-image: url("data:image/jpeg;base64,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");
+
+ color: rgb(34, 6, 52)
+
+
+ }
+ .navbar h1{
+ color:rgb(57, 42, 11)));
+ margin-left:20px;
+ }
+ .navbar.links {
+ margin-left: auto;
+
+ }
+ .navbar a{
+ margin-left: 20px;
+ text-decoration: none;
+ padding: 18px;
+ text-decoration: none;
+ padding: 16px;
+ }
+ .navbar a:hover{
+ color:rgb(26, 39, 56)
+
+ }.content{
+ max-width: 600px;
+ margin: 40px auto;
+ padding: 26px;
+ color:rgb(33, 5, 5);
+ }
+
+
+
+
+
\ No newline at end of file
diff --git a/index.js b/index.js
new file mode 100644
index 0000000000..d563c0fb10
--- /dev/null
+++ b/index.js
@@ -0,0 +1,17 @@
+import React from 'react';
+import ReactDOM from 'react-dom/client';
+import './index.css';
+import App from './App';
+import reportWebVitals from './reportWebVitals';
+
+const root = ReactDOM.createRoot(document.getElementById('root'));
+root.render(
+
+
+
+);
+
+// If you want to start measuring performance in your app, pass a function
+// to log results (for example: reportWebVitals(console.log))
+// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
+reportWebVitals();
diff --git a/login.css b/login.css
new file mode 100644
index 0000000000..5582f9248a
--- /dev/null
+++ b/login.css
@@ -0,0 +1,59 @@
+/* App.css */
+
+body {
+ margin: 0;
+ padding: 0;
+ font-family: 'Arial', sans-serif;
+ background-color: #f0f4f7;
+ }
+
+ container {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 100vh;
+ }
+
+ login-box {
+ width: 300px;
+ padding: 20px;
+ background: #fff;
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
+ border-radius: 8px;
+ }
+
+ h1 {
+ text-align: center;
+ color: #333;
+ }
+
+ form {
+ display: flex;
+ flex-direction: column;
+ }
+
+ label {
+ margin: 10px 0 5px;
+ color: #555;
+ }
+
+ input {
+ padding: 10px;
+ margin-bottom: 10px;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ }
+
+ button {
+ background-color: #3498db;
+ color: #fff;
+ padding: 10px;
+ border: none;
+ border-radius: 4px;
+ cursor: pointer;
+ }
+
+ button:hover {
+ background-color: #2980b9;
+ }
+
\ No newline at end of file
diff --git a/logo.svg b/logo.svg
new file mode 100644
index 0000000000..9dfc1c058c
--- /dev/null
+++ b/logo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/navbar.js b/navbar.js
new file mode 100644
index 0000000000..314e379dd4
--- /dev/null
+++ b/navbar.js
@@ -0,0 +1,37 @@
+
+import {Link } from 'react-router-dom';
+//import backgroundImage from './hback.jpg';
+
+const Navbar = () => {
+
+ const styles = {
+
+ color: 'blue',
+ borderRadius:'8px',
+ fontSize :"16px",
+
+
+
+ };
+ return (
+
+
+
+ Missing grade system
+
+ Home
+
+ Login
+ Dash board
+ Grade Report
+ Missing Grade Form
+ Instructors
+ Help & FAQ
+
+
+
+
+ );
+}
+
+export default Navbar;
\ No newline at end of file
diff --git a/reportWebVitals.js b/reportWebVitals.js
new file mode 100644
index 0000000000..5253d3ad9e
--- /dev/null
+++ b/reportWebVitals.js
@@ -0,0 +1,13 @@
+const reportWebVitals = onPerfEntry => {
+ if (onPerfEntry && onPerfEntry instanceof Function) {
+ import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
+ getCLS(onPerfEntry);
+ getFID(onPerfEntry);
+ getFCP(onPerfEntry);
+ getLCP(onPerfEntry);
+ getTTFB(onPerfEntry);
+ });
+ }
+};
+
+export default reportWebVitals;
diff --git a/setupTests.js b/setupTests.js
new file mode 100644
index 0000000000..8f2609b7b3
--- /dev/null
+++ b/setupTests.js
@@ -0,0 +1,5 @@
+// jest-dom adds custom jest matchers for asserting on DOM nodes.
+// allows you to do things like:
+// expect(element).toHaveTextContent(/react/i)
+// learn more: https://github.com/testing-library/jest-dom
+import '@testing-library/jest-dom';
diff --git a/tailwind.config.js b/tailwind.config.js
new file mode 100644
index 0000000000..a78b3a8d38
--- /dev/null
+++ b/tailwind.config.js
@@ -0,0 +1,9 @@
+/** @type {import('tailwindcss').Config} */
+module.exports = {
+ content: [],
+ theme: {
+ extend: {},
+ },
+ plugins: [],
+}
+