{"id":21831128,"url":"https://github.com/siddharthbadal/course-registrar","last_synced_at":"2026-05-10T10:01:38.102Z","repository":{"id":156389116,"uuid":"615308105","full_name":"Siddharthbadal/Course-Registrar","owner":"Siddharthbadal","description":"Command Line Interface In Python, MySQL and Typer","archived":false,"fork":false,"pushed_at":"2023-12-05T16:00:46.000Z","size":159,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-26T09:15:14.906Z","etag":null,"topics":["mysql","python","sql","typer"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Siddharthbadal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-03-17T12:05:17.000Z","updated_at":"2024-04-02T13:57:58.000Z","dependencies_parsed_at":"2023-12-05T17:26:47.351Z","dependency_job_id":"7096dfe4-9921-4f99-aea5-7d14599777b3","html_url":"https://github.com/Siddharthbadal/Course-Registrar","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Siddharthbadal%2FCourse-Registrar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Siddharthbadal%2FCourse-Registrar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Siddharthbadal%2FCourse-Registrar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Siddharthbadal%2FCourse-Registrar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Siddharthbadal","download_url":"https://codeload.github.com/Siddharthbadal/Course-Registrar/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244803390,"owners_count":20512901,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mysql","python","sql","typer"],"created_at":"2024-11-27T19:08:40.502Z","updated_at":"2026-05-10T10:01:35.948Z","avatar_url":"https://github.com/Siddharthbadal.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Course Registrar Command Line Interface\r\n\r\n\r\n**Command line interface for Course Registrar** is an interface built with python and mysql where users can manage \r\ntheir students and courses data. Users can perform operations like create, read, update, and delete on data.\r\nusers start with setting up a database either by  initializing the inbuilt dataset or can add his/her data.\r\n\r\n### Tools\r\nCourse Registrar Command line interface is built with **Python and mysql** and also have used \r\ntyper and rich libraries. \r\nTyper is a library for building CLI applications while rich is used to create highlighted and colored text and tables \r\non the command line.\r\n   \r\n    \r\n### Few Operations to be performed:\r\n\r\n- Add a student\r\n- Add a course and course prerequisite\r\n- Enroll and Un-enroll students\r\n- Set grades to mark completed\r\n- View top students and courses\r\n- Get a student transcript \r\n\r\n    \r\n    \r\nFiles details in the Project: \r\n\r\n    registrar.py: A file for commands. registrar.py has all the function used to create and perform certain commands. \r\n                These commands work on different database functions to perform SQL queries.\r\n    \r\n    database.py: perform the database operation including creating connection with mysql server\r\n                and initializing inbuilt dataset for the registrar and creating all tables and triggers. \r\n    \r\n    ddl.sql: data definition query to create tables inside the database. In mySQL Temp tables are used and Triggers \r\n            are created to meet certain criteria to enroll in the courses.\r\n    \r\n    data.txt: inbuilt dataset.\r\n\r\n\r\n\r\n### Commands\r\nTo see all commnads:\r\n```python\r\n    python registrar.py --help\r\n```\r\n\r\nreset-database command:\r\n```python\r\n    python registrar.py reset-database --verbose --with-data / --no-with-data\r\n```\r\n\r\nadd a course:\r\n```python\r\n        python registrar.py add-courses py50 \"Introduction to Python\" \"Computer Science\"\r\n```\r\n\r\n\r\n### All Commands:\r\n| Command      | Details                                                  |\r\n|--------------|----------------------------------------------------------|\r\n\r\n| `reset-database`      |   Reset the database. and initialize the inbuilt dataset. By default, reset database is \r\n                            performed with inbuilt data. \r\n                            can also use:     \r\n                                    --with-data OR --no-with-data\r\n                                    --verbose (to see the execution process)  |\r\n                                \r\n\r\n| `add-courses`         |   Add a course by giving code, course name, and department |  \r\n\r\n | `add-prereq`         |   Add course prerequisites by giving course name, prereq course name and \r\n                            minimum grade (optional)    |     \r\n\r\n | `add-student`        |   Add a student by giving firstname, lastname, and uniq_id |      \r\n\r\n | `enroll-student`     |   enroll student by entering student id, course code and year |\r\n\r\n | `set-grade`          |   set grade in student_course table by entering student, course, grade.     |\r\n\r\n | `show-courses`       |   Show courses by department. Eg:\"Computer Science\" |                      \r\n\r\n | `show-prereqs`       |   See the prerequisites of a course by entering course code(moniker) eg: cs101 |\r\n\r\n | `show-students`      |   Show student name by last name letters. eg: neg.  | \r\n\r\n | `unenroll-student`   |   Un-enroll a student from a course by entering student id and course code   │\r\n\r\n | `student-transcript` |   get details of a student completed course by giving student name |\r\n\r\n | `top-performers`     |   Find the top performers |\r\n\r\n |  `most-enrolled-courses` |   get the most enrolled courses by giving a number (optional)|\r\n                          \r\n\r\n\r\n\r\n### Applied Constraints on data and operations:\r\n\r\n- For courses with prerequisites would display message if prerequisites aren't met.\r\n- there are two kind of prerequisites. 1. course 2. grades\r\n- both prerequisites must match.\r\n- once grades are assigned, courses don't show up in the student list. as It is completed now.\r\n- course code and student ID are unique key constraint. will display error on repetition. \r\n\r\n\r\n\r\nScreenshots:\r\n![cliOne](https://github.com/Siddharthbadal/Course-Registrar/assets/55015090/352ec659-f77c-449c-9660-7ce4091d0a1d)\r\n\r\n![cliTwo](https://github.com/Siddharthbadal/Course-Registrar/assets/55015090/a4e49e1d-f050-4d5e-bdd8-7a386f8af91e)\r\n\r\n![commands](https://github.com/Siddharthbadal/Course-Registrar/assets/55015090/374d2c86-a792-495e-b03a-3d7322f7306e)\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsiddharthbadal%2Fcourse-registrar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsiddharthbadal%2Fcourse-registrar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsiddharthbadal%2Fcourse-registrar/lists"}