louiecerv commited on
Commit
9c3ca76
·
1 Parent(s): c545386

First Save

Browse files
app.py ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ # Initialize session state
4
+ if "page_access" not in st.session_state:
5
+ st.session_state.page_access = {"About": True, "Load Exam": True, "Take Exam": False, "View Results": False}
6
+
7
+
8
+ def main():
9
+
10
+ # Set app title
11
+ st.title("Exam Kiosk")
12
+
13
+ # Logic to control page access
14
+ if "exam_loaded" not in st.session_state:
15
+ st.session_state.exam_loaded = False
16
+
17
+ if "exam_completed" not in st.session_state:
18
+ st.session_state.exam_completed = False
19
+
20
+ # Provide instructions
21
+ instructions = """
22
+ ### Welcome to the Exam Kiosk version 1.0!
23
+
24
+ This application allows you to manage your exam process seamlessly, from loading exams to taking and reviewing results. Follow the steps below to use the app effectively.
25
+
26
+ ---
27
+
28
+ ## **How to Use the Application**
29
+
30
+ ### **Step 1: Explore the About Page**
31
+ - Navigate to the **About** page to learn more about the system.
32
+
33
+ ---
34
+
35
+ ### **Step 2: Load an Exam**
36
+ 1. Go to the **Load Exam** page.
37
+ 2. Click the **Load Exam** button to load an exam.
38
+ 3. Once an exam is loaded, you will be redirected to the **Take Exam** page.
39
+
40
+ ---
41
+
42
+ ### **Step 3: Take the Exam**
43
+ - On the **Take Exam** page, you can:
44
+ 1. Start answering the exam questions.
45
+ 2. **Finish Exam**: Complete the exam and proceed to the results.
46
+ 3. **End Exam Early**: End the exam without completing all questions and proceed to the results.
47
+
48
+ ---
49
+
50
+ ### **Step 4: View Results**
51
+ - Navigate to the **View Results** page to see your exam performance.
52
+ - After reviewing your results, you can:
53
+ - **Retake Exam**: Restart the same exam.
54
+ - **Load Another Exam**: Start a new exam by returning to the **Load Exam** page.
55
+
56
+ ---
57
+
58
+ ## **Navigation Tips**
59
+ - The sidebar displays the pages you can currently access.
60
+ - Some pages will only become accessible as you progress through the workflow.
61
+
62
+ ---
63
+
64
+ ## **Important Notes**
65
+ - Make sure to follow the sequence: Load Exam → Take Exam → View Results.
66
+ - If you wish to restart or load another exam, use the options available on the **View Results** page.
67
+
68
+ Enjoy using the Exam Kiosk v1.0!
69
+ """
70
+ st.markdown(instructions)
71
+
72
+ if __name__ == "__main__":
73
+ main()
pages/1_About.py ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ def main():
4
+ app_description = """
5
+ # About Exam Kiosk
6
+
7
+ **Exam Kiosk** is an innovative platform designed to deliver exams generated using the powerful **Nvidia Nemotron AI Model**, providing a seamless and interactive experience for students to take these exams. While the kiosk primarily supports Nemotron-generated exams, it can also handle manually prepared exams. However, manual exam support is an **unsupported feature**.
8
+
9
+ ---
10
+
11
+ ## **How It Works**
12
+
13
+ The **Nemotron Exam Creator** produces exams in a standardized JSON format that includes the exam's structure and content. The Exam Kiosk processes this JSON data and transforms it into a user-friendly interface where students can take their tests efficiently.
14
+
15
+ ---
16
+
17
+ ## **Key Features**
18
+
19
+ - **Accurate Tracking**:
20
+ - Monitors correct answers.
21
+ - Records the time taken to answer each question and complete the test.
22
+
23
+ - **Data-Driven Insights**:
24
+ - Collects detailed performance data for analysis.
25
+ - Enables the foundation for adaptive learning strategies.
26
+
27
+ - **Comprehensive Reporting**:
28
+ - Generates item analyses to evaluate the quality of questions.
29
+ - Measures both individual and class performance.
30
+ - Provides actionable recommendations for fostering adaptive learning environments.
31
+
32
+ ---
33
+
34
+ ## **Why Use Exam Kiosk?**
35
+
36
+ The Exam Kiosk bridges the gap between cutting-edge AI-driven exam creation and robust, data-driven assessment delivery. By leveraging the advanced capabilities of the **Nvidia Nemotron AI Model**, the platform empowers educators with insights and tools to enhance student learning outcomes effectively.
37
+
38
+ Discover the future of exams with **Exam Kiosk**!
39
+
40
+ App Version: 1.0
41
+ Created by: Louie F. Cervantes, M.Eng. (Information Engineering)
42
+ Computer Science Department
43
+ College of Information and Communications Technology
44
+ West Visayas State University (C) 2025 """
45
+
46
+ st.markdown(app_description)
47
+
48
+ if __name__ == "__main__":
49
+ main()
pages/2_Load_Exam.py ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ def main():
4
+ st.title("Load Exam")
5
+
6
+ # Mock exam loading functionality
7
+ if st.button("Load Exam"):
8
+ st.session_state.exam_loaded = True
9
+ st.session_state.page_access["Take Exam"] = True
10
+ st.session_state.page_access["Load Exam"] = False
11
+ st.success("Exam loaded successfully!")
12
+
13
+ if __name__ == "__main__":
14
+ main()
pages/3_Take_Exam.py ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+
4
+ def main():
5
+ st.title("Take Exam")
6
+
7
+ if not st.session_state.exam_loaded:
8
+ st.error("Please load an exam first!")
9
+ else:
10
+ st.write("Start taking the exam.")
11
+
12
+ if st.button("Finish Exam"):
13
+ st.session_state.exam_completed = True
14
+ st.session_state.page_access["View Results"] = True
15
+ st.session_state.page_access["Take Exam"] = False
16
+ st.success("Exam completed successfully!")
17
+ elif st.button("End Exam Early"):
18
+ st.session_state.page_access["View Results"] = True
19
+ st.session_state.page_access["Take Exam"] = False
20
+ st.warning("Exam ended early.")
21
+
22
+ if __name__ == "__main__":
23
+ main()
pages/4_View_Result.py ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ def main():
4
+ st.title("View Results")
5
+
6
+ if not st.session_state.exam_completed:
7
+ st.error("No completed exam results available.")
8
+ else:
9
+ st.write("Displaying results...")
10
+
11
+ if st.button("Retake Exam"):
12
+ st.session_state.exam_completed = False
13
+ st.session_state.exam_loaded = True
14
+ st.session_state.page_access["Take Exam"] = True
15
+ st.session_state.page_access["View Results"] = False
16
+ st.success("You can retake the exam.")
17
+ elif st.button("Load Another Exam"):
18
+ st.session_state.exam_loaded = False
19
+ st.session_state.exam_completed = False
20
+ st.session_state.page_access = {"About": True, "Load Exam": True, "Take Exam": False, "View Results": False}
21
+ st.success("Ready to load another exam.")
22
+
23
+ if __name__ == "__main__":
24
+ main()
requirements.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ streamlit