School Management System is a CLI-based CRUD app that helps in super easy storage, retrieval, updation, and deletion of student data.
Hi, my name is Raktim, and I'm a senior high school student from a Tier 3 town named Pathsala, in the state of Assam, India.
I'm very passionate about Computers and Mathematics, and I enjoy building systems that integrate Math with Computer Programming. Though this program isn’t exactly the kind of project I enjoy working on the most, building it solo was still a lot of fun!
Email: raktimunreal4@gmail.com GitHub: https://github.com/raktimjs
This app is built completely using Python and utilizes almost every Python concept from the 11th and 12th grade CBSE Computer Science syllabus.
NOTE: I’ve never used macOS, so the instructions in this document (and maybe even parts of the code) might be specific to Windows. I’ve tried to keep things as generalized as possible though.
I noticed that exam records of students in my school were being stored in log books. Here are the problems with that approach:
- The whole process resulted in hundreds of log books.
- Log books were easily damageable.
- They were very space-consuming, and maintaining them was tedious.
- For a private school with a decent level of infrastructure, it felt pretty primitive that data was still being stored on paper - and that too in the 2020s.
- This app has been made using Python from start to finish.
- It uses JSON files for structured data storage - one for each grade (grades 1 to 12).
- Data handling is done using Python’s
jsonmodule. Functions likejson.dump()for writing data andjson.load()for retrieving data have been used. - For displaying stored data in a readable, tabular format, the
tabulatemodule is used. - To make the program modular and easier to debug or scale, it’s been broken down into several modules, each doing one (or a couple of) tasks.
- Learnt to use the
jsonandtabulatemodules - these aren’t a part of the standard CBSE CS syllabus. - Understood the importance of software architecture and how that architecture impacts the overall user experience.
- Explored UI enhancements for CLI programs, including error handling and ANSI escape codes to make the experience more intuitive.
- Learned how to deliver a better user experience with clear feedback systems — and how UX is directly impacted by small UI decisions.
NOTE: All JSON files are already populated with placeholder data - used for testing and to help people understand the tool. Feel free to delete them if needed.
- Python must be installed on your system.
- Python's path should be added to your environment variables.
If you're running it for the first time, it will begin with a password creation step. The password is stored in password.json. Yes, it’s not secure at all - but my goal was to learn how to build a password-protected system, not secure authentication (yet).
Once the password is created/entered, the main menu will appear. You’ll see a list of grades; select one by typing its corresponding number.
After selecting a grade, the terminal clears and a new menu shows up — from there, you can choose the operation you want to perform on that grade's data.
When you’re done, type quit to go back to the main menu. From there, you can switch grades or exit by typing quit again.
The UI has been designed to be super self-explanatory. So, the chances of someone getting confused because of the UI or input format are minimal.
I won’t promise “when,” but I can definitely say “what.” Here's what’s planned:
- A proper GUI for a more modern and cleaner user experience.
- Sorting students by marks.
- Searching students by name.
- Searching students by roll number.
These are a few feature updates I’ve already thought about for the future.
Please drop a mail with your feedback. I’d genuinely love it if anyone trying this app could share their thoughts.
Any kind of suggestions - feature updates, CLI enhancements, UX tweaks - are always welcome!
Thanks in advance! 😄