Teacher: Creating an Online Exam
graph TD
Start([Teacher Starts]) --> Navigate[Navigate to
Exams → Online Exams] Navigate --> Create[Click Create
Online Exam] Create --> Form[Fill Exam Details:
• Title
• Class & Section
• Subject
• Start/End Date
• Duration
• Exam Key] Form --> Submit[Submit Exam] Submit --> ExamCreated{Exam Created
Successfully?} ExamCreated -->|No| Error1[Fix Validation
Errors] Error1 --> Form ExamCreated -->|Yes| AddQ[Add Questions] AddQ --> QMethod{Question
Method?} QMethod -->|From Bank| SelectQ[Select Existing
Questions] QMethod -->|Create New| NewQ[Create New
Questions] QMethod -->|Random| RandomQ[Configure Random
Selection] SelectQ --> AssignMarks[Assign Marks to
Each Question] NewQ --> AssignMarks RandomQ --> AutoMarks[Marks Auto-
Distributed] AssignMarks --> Review[Review Exam
Configuration] AutoMarks --> Review Review --> Publish{Ready to
Publish?} Publish -->|No| Edit[Edit Questions
or Details] Edit --> Review Publish -->|Yes| Announce[Announce to
Students] Announce --> Monitor[Monitor Student
Participation] Monitor --> Results[View Results After
Exam Ends] Results --> End([Complete]) style Start fill:#e8f5e9 style End fill:#e8f5e9 style ExamCreated fill:#fff3e0 style Publish fill:#fff3e0 style QMethod fill:#e3f2fd style Results fill:#f3e5f5
Exams → Online Exams] Navigate --> Create[Click Create
Online Exam] Create --> Form[Fill Exam Details:
• Title
• Class & Section
• Subject
• Start/End Date
• Duration
• Exam Key] Form --> Submit[Submit Exam] Submit --> ExamCreated{Exam Created
Successfully?} ExamCreated -->|No| Error1[Fix Validation
Errors] Error1 --> Form ExamCreated -->|Yes| AddQ[Add Questions] AddQ --> QMethod{Question
Method?} QMethod -->|From Bank| SelectQ[Select Existing
Questions] QMethod -->|Create New| NewQ[Create New
Questions] QMethod -->|Random| RandomQ[Configure Random
Selection] SelectQ --> AssignMarks[Assign Marks to
Each Question] NewQ --> AssignMarks RandomQ --> AutoMarks[Marks Auto-
Distributed] AssignMarks --> Review[Review Exam
Configuration] AutoMarks --> Review Review --> Publish{Ready to
Publish?} Publish -->|No| Edit[Edit Questions
or Details] Edit --> Review Publish -->|Yes| Announce[Announce to
Students] Announce --> Monitor[Monitor Student
Participation] Monitor --> Results[View Results After
Exam Ends] Results --> End([Complete]) style Start fill:#e8f5e9 style End fill:#e8f5e9 style ExamCreated fill:#fff3e0 style Publish fill:#fff3e0 style QMethod fill:#e3f2fd style Results fill:#f3e5f5
💡 Key Points for Teachers:
- Questions cannot be edited after students start attempting
- Random selection creates unique exams automatically
- Share exam key only when exam time arrives
- Monitor participation in real-time
Student: Taking an Online Exam
graph TD
Start([Student Starts]) --> Access[Access 4SCH App/Web]
Access --> Navigate[Go to Exams →
Online Exams] Navigate --> ViewList[View Available
Exams] ViewList --> CheckStatus{Exam
Status?} CheckStatus -->|Upcoming| Wait[Wait Until
Start Time] CheckStatus -->|Completed| ViewResult[View Results] CheckStatus -->|Ongoing| Select[Select Exam to
Attempt] Select --> ReadInfo[Read Exam Info:
• Duration
• Total Questions
• Total Marks] ReadInfo --> Ready{Ready to
Start?} Ready -->|No| Wait Ready -->|Yes| ClickStart[Click Start Exam] ClickStart --> EnterKey[Enter 6-Digit
Exam Key] EnterKey --> ValidateKey{Key
Valid?} ValidateKey -->|No| InvalidKey[Show Error:
Invalid Exam Key] InvalidKey --> EnterKey ValidateKey -->|Yes| CheckAttempt{Already
Attempted?} CheckAttempt -->|Yes| AlreadyDone[Error: Already
Submitted] CheckAttempt -->|No| StartTimer[Timer Starts
Status: In Progress] StartTimer --> LoadQ[Load First
Question] LoadQ --> AnswerQ[Answer Question:
• Single Choice
• Multiple Choice] AnswerQ --> Navigate2{Navigation?} Navigate2 -->|Next| NextQ[Go to Next
Question] Navigate2 -->|Previous| PrevQ[Go to Previous
Question] Navigate2 -->|Submit| ReviewAns[Review All
Answers] NextQ --> MoreQ{More
Questions?} PrevQ --> AnswerQ MoreQ -->|Yes| AnswerQ MoreQ -->|No| ReviewAns ReviewAns --> SubmitDecision{Submit
Exam?} SubmitDecision -->|No| AnswerQ SubmitDecision -->|Yes| ConfirmSubmit[Confirm
Submission] ConfirmSubmit --> SaveAnswers[Save All Answers
to Database] SaveAnswers --> UpdateStatus[Update Status:
Completed] UpdateStatus --> CalcMarks[Auto-Calculate
Marks] CalcMarks --> ShowResult[Display Result:
• Marks Obtained
• Total Marks
• Percentage] ShowResult --> End([Complete]) Wait --> TimeCheck{Start Time
Reached?} TimeCheck -->|No| Wait TimeCheck -->|Yes| Select StartTimer --> TimeMonitor{Time
Expired?} TimeMonitor -->|Yes| AutoSubmit[Auto-Submit
with Current Answers] AutoSubmit --> SaveAnswers TimeMonitor -->|No| AnswerQ style Start fill:#e8f5e9 style End fill:#e8f5e9 style ValidateKey fill:#fff3e0 style CheckAttempt fill:#fff3e0 style SubmitDecision fill:#fff3e0 style ShowResult fill:#f3e5f5 style InvalidKey fill:#ffebee style AlreadyDone fill:#ffebee
Online Exams] Navigate --> ViewList[View Available
Exams] ViewList --> CheckStatus{Exam
Status?} CheckStatus -->|Upcoming| Wait[Wait Until
Start Time] CheckStatus -->|Completed| ViewResult[View Results] CheckStatus -->|Ongoing| Select[Select Exam to
Attempt] Select --> ReadInfo[Read Exam Info:
• Duration
• Total Questions
• Total Marks] ReadInfo --> Ready{Ready to
Start?} Ready -->|No| Wait Ready -->|Yes| ClickStart[Click Start Exam] ClickStart --> EnterKey[Enter 6-Digit
Exam Key] EnterKey --> ValidateKey{Key
Valid?} ValidateKey -->|No| InvalidKey[Show Error:
Invalid Exam Key] InvalidKey --> EnterKey ValidateKey -->|Yes| CheckAttempt{Already
Attempted?} CheckAttempt -->|Yes| AlreadyDone[Error: Already
Submitted] CheckAttempt -->|No| StartTimer[Timer Starts
Status: In Progress] StartTimer --> LoadQ[Load First
Question] LoadQ --> AnswerQ[Answer Question:
• Single Choice
• Multiple Choice] AnswerQ --> Navigate2{Navigation?} Navigate2 -->|Next| NextQ[Go to Next
Question] Navigate2 -->|Previous| PrevQ[Go to Previous
Question] Navigate2 -->|Submit| ReviewAns[Review All
Answers] NextQ --> MoreQ{More
Questions?} PrevQ --> AnswerQ MoreQ -->|Yes| AnswerQ MoreQ -->|No| ReviewAns ReviewAns --> SubmitDecision{Submit
Exam?} SubmitDecision -->|No| AnswerQ SubmitDecision -->|Yes| ConfirmSubmit[Confirm
Submission] ConfirmSubmit --> SaveAnswers[Save All Answers
to Database] SaveAnswers --> UpdateStatus[Update Status:
Completed] UpdateStatus --> CalcMarks[Auto-Calculate
Marks] CalcMarks --> ShowResult[Display Result:
• Marks Obtained
• Total Marks
• Percentage] ShowResult --> End([Complete]) Wait --> TimeCheck{Start Time
Reached?} TimeCheck -->|No| Wait TimeCheck -->|Yes| Select StartTimer --> TimeMonitor{Time
Expired?} TimeMonitor -->|Yes| AutoSubmit[Auto-Submit
with Current Answers] AutoSubmit --> SaveAnswers TimeMonitor -->|No| AnswerQ style Start fill:#e8f5e9 style End fill:#e8f5e9 style ValidateKey fill:#fff3e0 style CheckAttempt fill:#fff3e0 style SubmitDecision fill:#fff3e0 style ShowResult fill:#f3e5f5 style InvalidKey fill:#ffebee style AlreadyDone fill:#ffebee
⚠️ Important for Students:
- Only ONE attempt allowed per exam
- Timer continues even if you lose connection
- Auto-submit happens when time expires
- All correct answers must be selected for multiple-choice questions
- Results are displayed immediately after submission
Administrator: Managing Online Exam System
graph TD
Start([Admin Starts]) --> Setup[Initial Setup:
• Classes
• Subjects
• Teachers
• Students] Setup --> QBank[Build Question Bank] QBank --> QMethod{Question
Entry Method?} QMethod -->|Manual| CreateQ[Create Questions
One by One] QMethod -->|Bulk Import| ImportQ[Import from
Excel Template] CreateQ --> Organize[Organize by:
• Class
• Subject
• Difficulty] ImportQ --> Organize Organize --> CreateExam{Create
Exam?} CreateExam -->|Teacher Creates| Monitor[Monitor Teacher
Activities] CreateExam -->|Admin Creates| AdminCreate[Create Exam
as Admin] AdminCreate --> ConfigExam[Configure Exam:
• Multiple Classes
• Multiple Sections
• Link Questions] ConfigExam --> Monitor Monitor --> Track[Track System:
• Exam Schedules
• Participation Rates
• Technical Issues] Track --> During[During Exam:
Monitor Real-time] During --> CheckIssues{Issues
Reported?} CheckIssues -->|Yes| Resolve[Resolve:
• Extend Time
• Fix Access
• Support Students] CheckIssues -->|No| Continue[Continue
Monitoring] Resolve --> Continue Continue --> ExamEnds{Exam
Ended?} ExamEnds -->|No| During ExamEnds -->|Yes| Analytics[View Analytics:
• Completion Rates
• Score Distribution
• Performance Trends] Analytics --> Reports[Generate Reports:
• Class-wise
• Subject-wise
• Individual Students] Reports --> Review[Review System
Performance] Review --> Improve[Implement
Improvements] Improve --> End([Complete]) style Start fill:#e8f5e9 style End fill:#e8f5e9 style QMethod fill:#e3f2fd style CheckIssues fill:#fff3e0 style Analytics fill:#f3e5f5
• Classes
• Subjects
• Teachers
• Students] Setup --> QBank[Build Question Bank] QBank --> QMethod{Question
Entry Method?} QMethod -->|Manual| CreateQ[Create Questions
One by One] QMethod -->|Bulk Import| ImportQ[Import from
Excel Template] CreateQ --> Organize[Organize by:
• Class
• Subject
• Difficulty] ImportQ --> Organize Organize --> CreateExam{Create
Exam?} CreateExam -->|Teacher Creates| Monitor[Monitor Teacher
Activities] CreateExam -->|Admin Creates| AdminCreate[Create Exam
as Admin] AdminCreate --> ConfigExam[Configure Exam:
• Multiple Classes
• Multiple Sections
• Link Questions] ConfigExam --> Monitor Monitor --> Track[Track System:
• Exam Schedules
• Participation Rates
• Technical Issues] Track --> During[During Exam:
Monitor Real-time] During --> CheckIssues{Issues
Reported?} CheckIssues -->|Yes| Resolve[Resolve:
• Extend Time
• Fix Access
• Support Students] CheckIssues -->|No| Continue[Continue
Monitoring] Resolve --> Continue Continue --> ExamEnds{Exam
Ended?} ExamEnds -->|No| During ExamEnds -->|Yes| Analytics[View Analytics:
• Completion Rates
• Score Distribution
• Performance Trends] Analytics --> Reports[Generate Reports:
• Class-wise
• Subject-wise
• Individual Students] Reports --> Review[Review System
Performance] Review --> Improve[Implement
Improvements] Improve --> End([Complete]) style Start fill:#e8f5e9 style End fill:#e8f5e9 style QMethod fill:#e3f2fd style CheckIssues fill:#fff3e0 style Analytics fill:#f3e5f5
🎯 Admin Responsibilities:
- Ensure question bank is well-organized and quality-checked
- Monitor system during high-traffic exam periods
- Provide technical support to teachers and students
- Analyze exam data for insights and improvements
- Maintain backup of question banks and exam results
Auto-Grading Logic
graph TD
Start([Student Submits
Exam]) --> Retrieve[Retrieve All
Student Answers] Retrieve --> GroupQ[Group Answers
by Question ID] GroupQ --> Loop[For Each Question] Loop --> QType{Question
Type?} QType -->|Single Answer| GetCorrect1[Get Correct
Option ID] QType -->|Multiple Answer| GetCorrectM[Get All Correct
Option IDs] GetCorrect1 --> CheckS[Check Student's
Selected Option] GetCorrectM --> CheckM[Check Student's
Selected Options] CheckS --> MatchS{Student Option
== Correct?} CheckM --> MatchM{All Correct Options
Selected AND
No Wrong Options?} MatchS -->|Yes| AddMarks1[Add Question
Marks to Total] MatchS -->|No| AddZero1[Add 0 to Total] MatchM -->|Yes| AddMarksM[Add Question
Marks to Total] MatchM -->|No| AddZeroM[Add 0 to Total] AddMarks1 --> NextQ{More
Questions?} AddZero1 --> NextQ AddMarksM --> NextQ AddZeroM --> NextQ NextQ -->|Yes| Loop NextQ -->|No| CalcTotal[Calculate Total:
Sum All Marks] CalcTotal --> CalcPercent[Calculate Percentage:
Obtained/Total × 100] CalcPercent --> DetermineGrade{Grading
Enabled?} DetermineGrade -->|Yes| AssignGrade[Assign Grade:
Based on Percentage] DetermineGrade -->|No| SaveResult[Save Result to
Database] AssignGrade --> SaveResult SaveResult --> DisplayResult[Display to Student:
• Marks Obtained
• Total Marks
• Percentage
• Grade optional] DisplayResult --> End([Complete]) style Start fill:#e8f5e9 style End fill:#e8f5e9 style MatchS fill:#fff3e0 style MatchM fill:#fff3e0 style AddMarks1 fill:#c8e6c9 style AddMarksM fill:#c8e6c9 style AddZero1 fill:#ffcdd2 style AddZeroM fill:#ffcdd2
Exam]) --> Retrieve[Retrieve All
Student Answers] Retrieve --> GroupQ[Group Answers
by Question ID] GroupQ --> Loop[For Each Question] Loop --> QType{Question
Type?} QType -->|Single Answer| GetCorrect1[Get Correct
Option ID] QType -->|Multiple Answer| GetCorrectM[Get All Correct
Option IDs] GetCorrect1 --> CheckS[Check Student's
Selected Option] GetCorrectM --> CheckM[Check Student's
Selected Options] CheckS --> MatchS{Student Option
== Correct?} CheckM --> MatchM{All Correct Options
Selected AND
No Wrong Options?} MatchS -->|Yes| AddMarks1[Add Question
Marks to Total] MatchS -->|No| AddZero1[Add 0 to Total] MatchM -->|Yes| AddMarksM[Add Question
Marks to Total] MatchM -->|No| AddZeroM[Add 0 to Total] AddMarks1 --> NextQ{More
Questions?} AddZero1 --> NextQ AddMarksM --> NextQ AddZeroM --> NextQ NextQ -->|Yes| Loop NextQ -->|No| CalcTotal[Calculate Total:
Sum All Marks] CalcTotal --> CalcPercent[Calculate Percentage:
Obtained/Total × 100] CalcPercent --> DetermineGrade{Grading
Enabled?} DetermineGrade -->|Yes| AssignGrade[Assign Grade:
Based on Percentage] DetermineGrade -->|No| SaveResult[Save Result to
Database] AssignGrade --> SaveResult SaveResult --> DisplayResult[Display to Student:
• Marks Obtained
• Total Marks
• Percentage
• Grade optional] DisplayResult --> End([Complete]) style Start fill:#e8f5e9 style End fill:#e8f5e9 style MatchS fill:#fff3e0 style MatchM fill:#fff3e0 style AddMarks1 fill:#c8e6c9 style AddMarksM fill:#c8e6c9 style AddZero1 fill:#ffcdd2 style AddZeroM fill:#ffcdd2
Grading Examples
graph LR
subgraph "Example 1: Single Answer Question"
Q1[Question: What is 2+2?
Marks: 5] --> O1[Options:
A: 3
B: 4 ✓
C: 5
D: 6] O1 --> S1A[Student selects: B] O1 --> S1B[Student selects: A] S1A --> R1A[Result: 5 marks ✓] S1B --> R1B[Result: 0 marks ✗] end subgraph "Example 2: Multiple Answer Question" Q2[Question: Select prime numbers
Marks: 10] --> O2[Options:
A: 2 ✓
B: 4
C: 5 ✓
D: 6] O2 --> S2A[Student selects: A, C] O2 --> S2B[Student selects: A only] O2 --> S2C[Student selects: A, C, D] S2A --> R2A[Result: 10 marks ✓
All correct, no wrong] S2B --> R2B[Result: 0 marks ✗
Missing correct answer C] S2C --> R2C[Result: 0 marks ✗
Included wrong answer D] end style Q1 fill:#e3f2fd style Q2 fill:#e3f2fd style R1A fill:#c8e6c9 style R1B fill:#ffcdd2 style R2A fill:#c8e6c9 style R2B fill:#ffcdd2 style R2C fill:#ffcdd2
Marks: 5] --> O1[Options:
A: 3
B: 4 ✓
C: 5
D: 6] O1 --> S1A[Student selects: B] O1 --> S1B[Student selects: A] S1A --> R1A[Result: 5 marks ✓] S1B --> R1B[Result: 0 marks ✗] end subgraph "Example 2: Multiple Answer Question" Q2[Question: Select prime numbers
Marks: 10] --> O2[Options:
A: 2 ✓
B: 4
C: 5 ✓
D: 6] O2 --> S2A[Student selects: A, C] O2 --> S2B[Student selects: A only] O2 --> S2C[Student selects: A, C, D] S2A --> R2A[Result: 10 marks ✓
All correct, no wrong] S2B --> R2B[Result: 0 marks ✗
Missing correct answer C] S2C --> R2C[Result: 0 marks ✗
Included wrong answer D] end style Q1 fill:#e3f2fd style Q2 fill:#e3f2fd style R1A fill:#c8e6c9 style R1B fill:#ffcdd2 style R2A fill:#c8e6c9 style R2B fill:#ffcdd2 style R2C fill:#ffcdd2
📐 Grading Rules:
- Single Answer: Must select the ONE correct option to get marks
- Multiple Answer: Must select ALL correct options AND no wrong options
- Partial Credit: NOT awarded - it's all or nothing per question
- Unanswered: Questions not answered receive 0 marks
- Instant Calculation: Results are available immediately after submission