Skip to content

j-begin/student-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Summary

This is a small school project that I worked on. It is used to manage students, teachers, and classes. It operates by selecting an an option listed from the menu, and pressing enter to get to the next sub-menu.

----- Main Menu -----
1. Manage Teachers
2. Manage Students
3. Manage Classes
4. Exit Program
> 

If the user inputs 2, they should see:

----- Student Options -----
1. Add Student
2. Remove Student
3. Review Student
4. View All
5. Register Class
6. Drop Class
7. Go Back
> 

The entire project was moreso a test of my skill with data structures as the entire project is actually just one large data structure, called menu-choice, which is operated on by the function load-menu. This data structure contains an anonymous function and a string. The string stores the name of the option that will be displayed on the menu, and the anonymous function stores what that option does when it is selected.

The advantage of designing the UI in this way is that it allows for highly modular development, as every menu-choice separates its display logic from its activation logic, allowing the menu to be fully implemented and having features "hook in" to the GUI as they are completed and tested. This data structure driven development also allows you to write a program to easily generate new UI layouts, as it is simply a data structure which has code "hook into" it.

Requirements

  • Steel Bank Common Lisp (SBCL)
  • sqlite3 (Command-Line Utility)

Running

Before running the program, make sure your system's shell has access to the command sqlite3. Once you have verified that you have this program, simply run these bash commands:

# this checks to see if you have sqlite3
which sqlite3
# this checks to see if you have sbcl
which sbcl
# this initializes the database
sqlite3 database.db "$(cat sql/init.sql)"
# this allows you to run the program
chmod +x main.lisp
# this runs the program
./main.lisp

About

Simple CRUD app that manages teachers, students, and their classes.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published