feral-student

byNandu Katasani

import json import os class StudentManagementSystem: def __init__(self, filename="students.json"): self.filename = filename self.students = self.load_data() def load_data(self): if os.path.exists(self.filename): with open(self.filename, "r") as f: return json.load(f) return {} def save_data(self): with open(self.filename, "w") as f: json.dump(self.students, f, indent=4) def add_student(self): print("\n--- Add Student ---") roll = input("Roll Number: ").strip() if roll in self.students: print("Student already exists!") return name = input("Name: ").strip() age = self.get_int("Age: ") marks = { sub: self.get_float(f"{sub} marks (0-100): ", 0, 100) for sub in ["Math", "Science", "English"] } self.students[roll] = {"name": name, "age": age, "marks": marks} self.save_data() print(f"Student '{name}' added!") def view_all(self): if not self.students: print("No students found!") return print(f"\n{'Roll':<8}{'Name':<15}{'Age':<6}{'Math':<8}{'Sci':<8}{'Eng':<8}{'Avg':<8}") print("-" * 61) for roll, info in self.students.items(): m = info["marks"] avg = sum(m.values()) / len(m) print(f"{roll:<8}{info['name']:<15}{info['age']:<6}" f"{m['Math']:<8}{m['Science']:<8}{m['English']:<8}{avg:<8.2f}") def search_student(self): roll = input("Roll Number: ").strip() if roll in self.students: info = self.students[roll] avg = sum(info["marks"].values()) / len(info["marks"]) print(f"\nName : {info['name']}") print(f"Age : {info['age']}") print(f"Marks : {info['marks']}") print(f"Average: {avg:.2f}") print(f"Grade : {self.get_grade(avg)}") else: print("Student not found!") def delete_student(self): roll = input("Roll Number: ").strip() if roll in self.students: name = self.students[roll]["name"] if input(f"Delete '{name}'? (y/n): ").lower() == "y": del self.students[roll] self.save_data() print(f"'{name}' deleted!") else: print("Student not found!") def show_topper(self): if not self.students: print("No students!") return topper = max(self.students.items(), key=lambda x: sum(x[1]["marks"].values())) roll, info = topper avg = sum(info["marks"].values()) / len(info["marks"]) print(f"Topper: {info['name']} (Roll: {roll}) — Avg: {avg:.2f}") @staticmethod def get_grade(avg): if avg >= 90: return "A+" elif avg >= 80: return "A" elif avg >= 70: return "B" elif avg >= 60: return "C" elif avg >= 50: return "D" else: return "Fail" @staticmethod def get_int(prompt): while True: try: return int(input(prompt)) except: print("Enter valid integer!") @staticmethod def get_float(prompt, mn=None, mx=None): while True: try: v = float(input(prompt)) if (mn is not None and v < mn) or (mx is not None and v > mx): raise ValueError return v except: print(f"Enter valid number ({mn}-{mx})!") def run(self): while True: print("\n=============================") print(" STUDENT MANAGEMENT SYSTEM ") print("=============================") print("1. Add Student") print("2. View All Students") print("3. Search Student") print("4. Delete Student") print("5. Show Topper") print("6. Exit") print("=============================") choice = input("Choice (1-6): ").strip() if choice == "1": self.add_student() elif choice == "2": self.view_all() elif choice == "3": self.search_student() elif choice == "4": self.delete_student() elif choice == "5": self.show_topper() elif choice == "6": print("Goodbye!"); break else: print("Invalid choice!") if __name__ == "__main__": sms = StudentManagementSystem() sms.run() this code is good could pls give if imagine b.tech student version

No preview

Comments (0)

No comments yet. Be the first!

Project Tasks

No tasks yet

Add a task now to track work. System-generated tasks will be added here later.

No completed page designs yet.

Completed design pages will appear here when they are ready to preview.

No user flows yet.

The User Flow Agent will generate per-persona navigation diagrams after SRD updates.

No completed page designs yet.

Completed design pages will appear here when they are ready to preview.

No user flows yet.

The User Flow Agent will generate per-persona navigation diagrams after SRD updates.