wisemonkeys logo
FeedNotificationProfileManage Forms
FeedNotificationSearchSign in
wisemonkeys logo

Blogs

Building a Simple Doctor Appointment System in Common Lisp

profile
Shubham Giri
Jul 16, 2025
0 Likes
0 Discussions
0 Reads

🧠 Introduction

When learning a new language, building real-world applications—no matter how simple—is a powerful way to understand its core features. In this post, we will implement a console-based doctor appointment scheduling system in Common Lisp. It will allow users to book, cancel, and view appointments using a clean menu-driven interface.


🛠️ Features Overview

View Available Time Slots


Book an Appointment


Cancel an Appointment


View All Booked Appointments


Exit the System


📦 The Core Components

Let’s walk through how each part of the code contributes to the functionality:


1. 📅 Defining Time Slots


(defparameter *time-slots*

'("9:00 AM" "10:00 AM" "11:00 AM" "12:00 PM"

"2:00 PM" "3:00 PM" "4:00 PM" "5:00 PM"))

These are our fixed time slots. The user can choose from these to book an appointment.


2. 📂 Creating the Appointments Table


(defparameter *appointments* (make-hash-table :test 'equal))

A hash table is used to store appointments, mapping each slot to a user's name.


3. 🔍 Viewing Available Slots


(defun view-available-slots ()

(format t "~%Available Slots:~%")

(dolist (slot *time-slots*)

(unless (gethash slot *appointments*)

(format t "~A~%" slot))))

This function filters out already booked slots and shows only the available ones.


4. 📥 Booking an Appointment


(defun book-appointment ()

;; code continues...

)

The user enters their name and picks a slot. The function validates the input and checks availability before booking.


5. ❌ Cancelling an Appointment


(defun cancel-appointment ()

;; code continues...

)

Users can cancel their appointments by providing their name. It searches the hash table and removes matching entries.


6. 📋 Viewing All Appointments


(defun view-appointments ()

;; code continues...

)

Prints a list of all booked slots along with the names of users who booked them.


7. 📱 User Interface - The Main Menu

(defun main-menu ()

;; loop with case options

)

A looping text interface that allows the user to interact with the system repeatedly until they choose to exit.




Comments ()


Sign in

Read Next

Skills An Ethical Hacker Must Have

Blog banner

Fault tolerance

Blog banner

GUIDE TO GIS

Blog banner

Real time scheduling

Blog banner

Evolution of Operating Systems

Blog banner

PERSONALITY DEVELOPMENT

Blog banner

Data Security and Data Privacy in Data Science

Blog banner

Major achievement

Blog banner

Python as a tool for data analysis

Blog banner

10 Problems you face if you are an Otaku

Blog banner

Capacity management in ITSM

Blog banner

Big Data Architecture

Blog banner

Smartsheet

Blog banner

Deadlocks

Blog banner

Threads

Blog banner

Importance of internet

Blog banner

The Khan mehtab transforming the modular switches

Blog banner

MYNTRA

Blog banner

Interrupts in operating system.

Blog banner

Privacy LAWs in IT

Blog banner

Quality check in IT services

Blog banner

How to write a cover letter

Blog banner

PPT methodology

Blog banner

Malicious softwares

Blog banner

Street foods

Blog banner

KPMG (Klynveld Peat Marwick Goerdeler)

Blog banner

Multiprocessor

Blog banner

Nature’s Brush on Silk: The Secret Behind Patola Colours

Blog banner

Virtual Machine

Blog banner

Ethical Hacking

Blog banner

Supervised and unsupervised learning

Blog banner

Operating Systems

Blog banner

The Role of Teachers in Building a Child’s Confidence

Blog banner

Key to success in Sports

Blog banner

GIS Mapping

Blog banner

E-Cash (Electronic Cash)

Blog banner

RAID

Blog banner

Vulnerability Assessment (Vulnerability Analysis)

Blog banner

A-B-C of Networking: Part-2 (Components)

Blog banner

Memory Management

Blog banner

INTERNET

Blog banner

GIS in Mapping and landslide alert in Bangladesh

Blog banner