; Telefon regiszter ; ebben a változóban lesznek az adatok (setq lista ()) (defun menu () (let ( (filename "adat.txt") (char (progn (format t "~%Telefon regiszter~%") (format t "1. betöltés~%") (format t "2. kimentés~%") (format t "3. listázás~%") (format t "4. hozzáadás~%") (format t "5. törlés~%") (format t "0. kilépés~%") (format t "Válassz:") (read))) ) (cond ((equal char '1) (setq lista (betoltes filename))(menu)) ((equal char '2) (kimentes lista filename)(menu)) ((equal char '3) (listazas lista)(menu)) ((equal char '4) (setq lista (hozzaadas lista))(menu)) ((equal char '5) (setq lista (torles lista))(menu)) ((equal char '0) (format t "Vége~%")) (t (format t "érvénytelen~%")(menu)) ) ) ) (defun betoltes (f) (let* ( (handle (open f :direction :input)) (lista (read handle)) ) (close handle) lista ) ) (defun kimentes (l f) (let ( (handle (open f :direction :output)) ) (print l handle) (close handle) ) ) (defun listazas (l) (format t "Név Tel~%") (mapcar (lambda (sor) (format t "~S ~S~%" (car sor) (cadr sor))) l) ) (defun hozzaadas (l) (let ( (nev (progn (format t "Név:")(read-line))) (tel (progn (format t "Tel:")(read-line))) ) (cons (list nev tel) l) ) ) (defun torles (l) (let ( (nev (progn (format t "Név:")(read-line))) ) (torolve l nev) ) ) (defun torolve (l n) (cond ((null l) ()) ((equal (caar l) n) (format t "Törölve ~S ~S ~%" (caar l) (cadar l))(torolve (cdr l) n)) (t (cons (car l) (torolve (cdr l) n))) ) ) (menu)