File size: 16,298 Bytes
53bb02b
309cc67
e89aa82
53bb02b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f4e86ad
 
 
 
309cc67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237

import streamlit as st
import fpdf
import time
from datetime import datetime, timedelta

# Set test duration (120 minutes)
TEST_DURATION = 120  

# Initialize session state for the timer
if "start_time" not in st.session_state:
    st.session_state.start_time = datetime.now()

# Calculate end time
end_time = st.session_state.start_time + timedelta(minutes=TEST_DURATION)

# Timer display
timer_placeholder = st.sidebar.empty()  # Place the timer in the sidebar

def update_timer():
    """Updates the countdown timer in real-time."""
    while True:
        remaining_time = end_time - datetime.now()
        
        if remaining_time.total_seconds() <= 0:
            timer_placeholder.warning("Time's up! Submitting the test now...")
            st.session_state.test_completed = True
            st.rerun()
            break

        minutes, seconds = divmod(int(remaining_time.total_seconds()), 60)
        timer_placeholder.info(f"🕒 Time Remaining: {minutes:02d}:{seconds:02d}")

        time.sleep(1)  # Refresh every second
        st.rerun()

# Run the timer in the sidebar
update_timer()
#import streamlit as st
#from fpdf import FPDF
#import datetime

# Function to Generate PDF
def generate_pdf(name, roll_no, nic_number, father_name, form_number, scores):
    pdf = FPDF()
    pdf.set_auto_page_break(auto=True, margin=15)
    pdf.add_page()

    # Title
    pdf.set_font("Arial", style='B', size=16)
    pdf.cell(200, 10, "NFC Institute of Engineering & Technology, Multan (Admission Test)", ln=True, align='C')
    pdf.ln(10)

    # Student Details
    pdf.set_font("Arial", size=12)
    pdf.cell(200, 10, f"Name: {name}", ln=True)
    pdf.cell(200, 10, f"Roll Number: {roll_no}", ln=True)
    pdf.cell(200, 10, f"NIC Number: {nic_number}", ln=True)
    pdf.cell(200, 10, f"Father's Name: {father_name}", ln=True)
    pdf.cell(200, 10, f"Form Number: {form_number}", ln=True)
    pdf.cell(200, 10, f"Test Date: {datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}", ln=True)
    
    pdf.ln(10)

    # Test Scores
    pdf.set_font("Arial", style='B', size=14)
    for subject, score in scores.items():
        pdf.cell(200, 10, f"{subject} Section Score: {score} out of 100", ln=True)

    total_score = sum(scores.values())
    pdf.cell(200, 10, f"Total Score: {total_score} out of 400", ln=True)

    # Save PDF
    pdf_path = "test_result.pdf"
    pdf.output(pdf_path)
    return pdf_path

# Streamlit UI
st.title("NFC Institute of Engineering & Technology (Admission Test)")
st.subheader("Student Information")

name = st.text_input("Full Name")
roll_no = st.text_input("Roll Number")
nic_number = st.text_input("NIC Number")
father_name = st.text_input("Father's Name")
form_number = st.text_input("Form Number")

# Function to Display Questions
def display_questions(section_name, questions):
    st.subheader(f"{section_name} Section (25 Questions)")
    answers = {}
    for q_no, (question, options, correct_answer) in enumerate(questions, start=1):
        answers[q_no] = st.radio(question, options, index=None, key=f"{section_name}_{q_no}")
    return answers

# Sample Questions (Only 5 per section shown, add more)
english_questions = [
    
    ("1. Choose the correct synonym of 'Benevolent':", ["Kind", "Cruel", "Harsh", "Weak"], "Kind"),
    ("2. Identify the correct antonym of 'Fragile':", ["Weak", "Strong", "Delicate", "Feeble"], "Strong"),
    ("3. Choose the correct article: 'I saw ___ elephant at the zoo.'", ["a", "an", "the", "no article"], "an"),
    ("4. Select the correct spelling:", ["Recieve", "Receive", "Recive", "Receve"], "Receive"),
    ("5. Fill in the blank: 'She is interested ____ learning new languages.'", ["on", "in", "at", "with"], "in"),
    ("6. Which word is a noun?", ["Run", "Beautiful", "Happiness", "Quickly"], "Happiness"),
    ("7. Identify the verb: 'She sings beautifully.'", ["She", "Sings", "Beautifully", "The"], "Sings"),
    ("8. What is the plural of 'Child'?", ["Childs", "Children", "Childes", "Childer"], "Children"),
    ("9. Choose the correct sentence:", ["He go to school.", "He goes to school.", "He gone to school.", "He going to school."], "He goes to school."),
    ("10. What is the past tense of 'Eat'?", ["Eated", "Ate", "Eating", "Eats"], "Ate"),
    ("11. Choose the correct synonym of 'Meticulous':", ["Careless", "Precise", "Lazy", "Hasty"], "Precise"),
    ("12. Identify the correct synonym of 'Adversity':", ["Comfort", "Hardship", "Happiness", "Success"], "Hardship"),
    ("13. Choose the antonym of 'Arrogant':", ["Humble", "Proud", "Confident", "Bold"], "Humble"),
    ("14. Identify the correct verb: 'He ____ his homework every evening.'", ["do", "does", "doing", "done"], "does"),
    ("15. Choose the correct preposition: 'The book is lying ____ the table.'", ["on", "in", "at", "by"], "on"),
    ("16. What is the superlative form of 'Good'?", ["Goodest", "Better", "Best", "More good"], "Best"),
    ("17. Choose the correct conjunction: 'I was tired, ____ I kept working.'", ["and", "but", "so", "or"], "but"),
    ("18. What is the correct order of adjectives: 'She bought a ____ car.'", ["red big", "big red", "red and big", "big and red"], "big red"),
    ("19. Choose the correct passive form: 'They are painting the house.'", ["The house is painted.", "The house is being painted.", "The house was painted.", "The house has been painted."], "The house is being painted."),
    ("20. What is the plural of 'Mouse'?", ["Mouses", "Mices", "Mice", "Mouse"], "Mice"),
    ("21. Choose the correct relative pronoun: 'This is the book ____ I borrowed.'", ["who", "whom", "which", "that"], "that"),
    ("22. What is the meaning of the idiom 'Break the ice'?", ["To start a conversation", "To break something", "To go skating", "To feel cold"], "To start a conversation"),
    ("23. Identify the indirect speech: She said, 'I am happy.'", ["She said that she was happy.", "She said she is happy.", "She said that I was happy.", "She said that I am happy."], "She said that she was happy."),
    ("24. Fill in the blank: 'He is the ____ of all the students in the class.'", ["smarter", "smart", "smartest", "more smart"], "smartest"),
    ("25. Choose the correct modal verb: 'You ____ wear a seatbelt while driving.'", ["can", "may", "should", "must"], "must"),
]
chemistry_questions = [
    
    ("1. What is the chemical formula of water?", ["H2O", "O2", "CO2", "H2"], "H2O"),
    ("2. What is the pH value of pure water?", ["7", "5", "9", "11"], "7"),
    ("3. Which gas is released when acids react with metals?", ["Oxygen", "Hydrogen", "Nitrogen", "Carbon dioxide"], "Hydrogen"),
    ("4. What is the common name for sodium chloride?", ["Baking Soda", "Table Salt", "Lime", "Vinegar"], "Table Salt"),
    ("5. What is the atomic number of carbon?", ["6", "8", "12", "14"], "6"),
    ("6. What is the most abundant gas in Earth’s atmosphere?", ["Oxygen", "Nitrogen", "Carbon Dioxide", "Argon"], "Nitrogen"),
    ("7. What is the chemical symbol for gold?", ["Ag", "Au", "Pb", "Fe"], "Au"),
    ("8. What type of bond is formed between two non-metal atoms?", ["Ionic", "Covalent", "Metallic", "Hydrogen"], "Covalent"),
    ("9. What is the SI unit of atomic mass?", ["Gram", "Kilogram", "Atomic Mass Unit (AMU)", "Mole"], "Atomic Mass Unit (AMU)"),
    ("10. What is the chemical formula of methane?", ["CH4", "C2H6", "CO2", "H2O"], "CH4"),
    ("11. What is the charge on a proton?", ["+1", "-1", "0", "+2"], "+1"),
    ("12. Which element is liquid at room temperature?", ["Oxygen", "Mercury", "Sodium", "Sulfur"], "Mercury"),
    ("13. What is the primary component of natural gas?", ["Propane", "Methane", "Butane", "Ethane"], "Methane"),
    ("14. What type of reaction occurs when an acid and a base react together?", ["Decomposition", "Neutralization", "Combustion", "Oxidation"], "Neutralization"),
    ("15. Which element is known as the building block of life?", ["Oxygen", "Carbon", "Hydrogen", "Nitrogen"], "Carbon"),
    ("16. What is the chemical formula of sulfuric acid?", ["H2SO3", "H2SO4", "HCl", "HNO3"], "H2SO4"),
    ("17. What is the process of converting a solid directly into a gas?", ["Condensation", "Evaporation", "Sublimation", "Freezing"], "Sublimation"),
    ("18. What is the chemical formula for table sugar (sucrose)?", ["C6H12O6", "C12H22O11", "C2H5OH", "CH3OH"], "C12H22O11"),
    ("19. What is the name of the reaction where oxygen is gained or hydrogen is lost?", ["Reduction", "Oxidation", "Hydrolysis", "Neutralization"], "Oxidation"),
    ("20. What is Avogadro’s number?", ["6.022 × 10²²", "6.022 × 10²³", "3.14 × 10²³", "1.67 × 10²⁴"], "6.022 × 10²³"),
    ("21. Which gas is commonly used in balloons because it is lighter than air?", ["Oxygen", "Carbon Dioxide", "Helium", "Nitrogen"], "Helium"),
    ("22. What is the function of a catalyst in a chemical reaction?", ["Speeds up the reaction", "Slows down the reaction", "Stops the reaction", "Changes the reactants"], "Speeds up the reaction"),
    ("23. Which of the following is an alkaline earth metal?", ["Sodium", "Magnesium", "Iron", "Gold"], "Magnesium"),
    ("24. What is the term for a substance that speeds up a reaction without being consumed?", ["Reactant", "Catalyst", "Inhibitor", "Solvent"], "Catalyst"),
    ("25. What type of organic compounds are enzymes?", ["Lipids", "Proteins", "Carbohydrates", "Nucleic Acids"], "Proteins"),
]
math_questions = [
    ("1. What is 7 + 8?", ["15", "16", "14", "17"], "15"),
    ("2. What is the square root of 64?", ["6", "8", "10", "12"], "8"),
    ("3. Solve: 5 × 6", ["25", "30", "35", "40"], "30"),
    ("4. What is 12 ÷ 4?", ["2", "3", "4", "6"], "3"),
    ("5. If x = 5, what is x²?", ["10", "15", "25", "30"], "25"),
    ("6. What is the value of sin(30°)?", ["1", "1/2", "√3/2", "0"], "1/2"),
    ("7. Solve for x: 2x + 3 = 11", ["3", "4", "5", "6"], "4"),
    ("8. What is the derivative of x²?", ["x", "2x", "x^2", "1"], "2x"),
    ("9. Solve: log10(1000)", ["1", "2", "3", "4"], "3"),
    ("10. What is the sum of interior angles of a pentagon?", ["360°", "540°", "720°", "900°"], "540°"),
    ("11. What is the area of a circle with radius 7?", ["49π", "14π", "7π", "21π"], "49π"),
    ("12. Solve: 2³ + 3²", ["8", "9", "17", "14"], "17"),
    ("13. If f(x) = 3x + 2, find f(4).", ["10", "12", "14", "8"], "14"),
    ("14. Find the determinant of the matrix [[1,2],[3,4]].", ["-2", "2", "0", "4"], "-2"),
    ("15. What is the value of cos(90°)?", ["1", "0", "-1", "√2/2"], "0"),
    ("16. Solve for x: 3x - 4 = 11", ["3", "5", "6", "7"], "5"),
    ("17. What is the sum of the first 10 natural numbers?", ["55", "50", "45", "60"], "55"),
    ("18. Find the equation of a line with slope 2 and passing through (3,4).", ["y = 2x + 4", "y = 2x - 2", "y = 2x + 1", "y = 2x - 3"], "y = 2x - 2"),
    ("19. If a triangle has sides 3, 4, and 5, what type of triangle is it?", ["Scalene", "Isosceles", "Right-angled", "Equilateral"], "Right-angled"),
    ("20. Solve: ∫(2x)dx", ["x²", "2x²", "x² + C", "2x² + C"], "x² + C"),
    ("21. Convert 60° to radians.", ["π/2", "π/3", "π/6", "π/4"], "π/3"),
    ("22. Solve for x: x² - 4x + 4 = 0", ["0, 4", "2, 2", "1, 3", "None"], "2, 2"),
    ("23. What is the probability of getting a head in a single toss of a fair coin?", ["1", "0.5", "0.25", "2"], "0.5"),
    ("24. If A = {1,2,3,4} and B = {3,4,5,6}, find A ∩ B.", ["{1,2}", "{3,4}", "{5,6}", "{}"], "{3,4}"),
    ("25. Find the slope of the line passing through (2,3) and (6,7).", ["1", "2", "3", "4"], "1"),
]
physics_questions = [
    
    ("1. What is the speed of light?", ["300,000 km/s", "150,000 km/s", "500,000 km/s", "100,000 km/s"], "300,000 km/s"),
    ("2. Newton’s first law is also called?", ["Law of Gravity", "Law of Inertia", "Law of Motion", "Law of Force"], "Law of Inertia"),
    ("3. Which of these is not a unit of energy?", ["Joule", "Watt", "Calorie", "Electronvolt"], "Watt"),
    ("4. What is the SI unit of force?", ["Newton", "Joule", "Watt", "Pascal"], "Newton"),
    ("5. What is the acceleration due to gravity on Earth?", ["9.8 m/s²", "10 m/s²", "8.5 m/s²", "12 m/s²"], "9.8 m/s²"),
    ("6. Which force keeps planets in orbit around the Sun?", ["Magnetic Force", "Electrostatic Force", "Gravitational Force", "Nuclear Force"], "Gravitational Force"),
    ("7. What is the SI unit of work?", ["Joule", "Newton", "Watt", "Pascal"], "Joule"),
    ("8. What type of lens is used in a magnifying glass?", ["Concave", "Convex", "Plano-concave", "Biconcave"], "Convex"),
    ("9. The resistance of a wire depends on?", ["Length & cross-sectional area", "Only length", "Only cross-sectional area", "Neither length nor area"], "Length & cross-sectional area"),
    ("10. What is the function of a fuse in an electric circuit?", ["Increase voltage", "Prevent overcurrent", "Store charge", "Convert AC to DC"], "Prevent overcurrent"),
    ("11. What is the unit of electric current?", ["Volt", "Ohm", "Ampere", "Watt"], "Ampere"),
    ("12. What happens to the pressure when the volume of a gas decreases (at constant temperature)?", ["Increases", "Decreases", "Remains the same", "Becomes zero"], "Increases"),
    ("13. Which wave type does not require a medium to travel?", ["Sound waves", "Water waves", "Seismic waves", "Electromagnetic waves"], "Electromagnetic waves"),
    ("14. What is the primary energy source for the Earth?", ["Wind", "Sun", "Nuclear", "Geothermal"], "Sun"),
    ("15. Which law states that the current in a circuit is directly proportional to voltage?", ["Ohm’s Law", "Newton’s Law", "Boyle’s Law", "Faraday’s Law"], "Ohm’s Law"),
    ("16. What is the charge of a neutron?", ["Positive", "Negative", "Neutral", "Depends on the element"], "Neutral"),
    ("17. The energy stored in an object due to its position is called?", ["Kinetic energy", "Potential energy", "Thermal energy", "Chemical energy"], "Potential energy"),
    ("18. What device is used to measure electric current?", ["Voltmeter", "Ammeter", "Ohmmeter", "Galvanometer"], "Ammeter"),
    ("19. What is the frequency of a wave if its time period is 0.02 seconds?", ["20 Hz", "50 Hz", "100 Hz", "200 Hz"], "50 Hz"),
    ("20. What type of mirror is used in car rear-view mirrors?", ["Convex", "Concave", "Plane", "Cylindrical"], "Convex"),
    ("21. Which phenomenon causes a pencil to appear bent in water?", ["Diffraction", "Interference", "Refraction", "Reflection"], "Refraction"),
    ("22. What is the minimum number of resistors needed to form a circuit?", ["1", "2", "3", "4"], "1"),
    ("23. Which subatomic particle is responsible for electricity?", ["Proton", "Neutron", "Electron", "Nucleus"], "Electron"),
    ("24. What is the main function of a transformer?", ["Increase/decrease voltage", "Store energy", "Measure resistance", "Convert AC to DC"], "Increase/decrease voltage"),
    ("25. What is the standard unit of power?", ["Joule", "Newton", "Watt", "Ampere"], "Watt"),
]

# Collect Answers
english_answers = display_questions("English", english_questions)
chemistry_answers = display_questions("Chemistry", chemistry_questions)
math_answers = display_questions("Math", math_questions)
physics_answers = display_questions("Physics", physics_questions)

# Submit Button
if st.button("Submit Test"):
    scores = {"English": 0, "Chemistry": 0, "Math": 0, "Physics": 0}

    # Calculate Scores
    for section, answers, questions in [
        ("English", english_answers, english_questions),
        ("Chemistry", chemistry_answers, chemistry_questions),
        ("Math", math_answers, math_questions),
        ("Physics", physics_answers, physics_questions),
    ]:
        for q_no, (question, options, correct_answer) in enumerate(questions, start=1):
            if q_no > 25:  # Ensure only 25 questions are counted
                break
            if answers.get(q_no) == correct_answer:
                scores[section] += 4  # Correct answer
            elif answers.get(q_no) is not None:
                scores[section] -= 1  # Incorrect answer

    pdf_path = generate_pdf(name, roll_no, nic_number, father_name, form_number, scores)

    with open(pdf_path, "rb") as pdf_file:
        st.download_button(label="Download Result PDF", data=pdf_file, file_name="test_result.pdf", mime="application/pdf")