C
Birleştirme
Kütüphane modüllerini menüyle birleştirirsin.
Menü ile birleştirme
Son adımda tüm modülleri bir menüyle birleştirirsin. menu_run(Library *lib, int choice) fonksiyonu choice değerine göre işlem yapar: 1 ise tüm kitapları listeler, 2 ise ödünç verir, 3 ise arar.
switch (choice) ile dallanma yapılır. Her case ilgili fonksiyonu çağırır. Bu yapı, gerçek bir konsol uygulamasının iskeletidir. main'de menüyü sabit seçimlerle çağırıp çıktıyı test ederiz; gerçek bir uygulamada scanf ile kullanıcıdan seçim alırsın. Bu son derste tüm parçalar birleşir: model, koleksiyon, ödünç ve arama.
menu_run uygulaması
void menu_run(Library *lib, int choice) fonksiyonu switch ile dallanır. case 1: for ile tüm kitapları print_book ile yazdırır. case 2: checkout(&lib->books[0]) çağırır. case 3: find_by_title ile arama yapar.
main'de Library lib; ile başla, kitap ekle, sonra menu_run(&lib, 1); çağır. Bu, menünün listeleme seçeneğini çalıştırır. Tüm modüller burada birleşir: print_book, library_add, checkout ve find_by_title. Beş derslik proje tamamlanır; gerçek bir C konsol uygulamasının iskeletine sahipsin.
Uygulama menu_run ile birleştir
Var olan koda void menu_run(Library *lib, int choice) ekle. switch (choice) ile case 1: for (int i = 0; i < lib->count; i++) print_book(&lib->books[i]); ve break;. main'de bir kitap ekle ve menu_run(&lib, 1); çağır.
Örnek çözümü göster
#include <stdio.h>
#include <string.h>
typedef struct {
char title[64];
int year;
int borrowed;
} Book;
typedef struct {
char name[64];
int id;
} Member;
typedef struct {
Book books[10];
int count;
} Library;
void library_init(Library *lib) {
lib->count = 0;
}
void library_add(Library *lib, Book b) {
lib->books[lib->count++] = b;
}
void print_book(Book *b) {
printf("Book: %s (%d)\n", b->title, b->year);
}
int checkout(Book *b) {
if (b->borrowed) return 0;
b->borrowed = 1;
return 1;
}
int return_book(Book *b) {
if (!b->borrowed) return 0;
b->borrowed = 0;
return 1;
}
Book *find_by_title(Library *lib, const char *title) {
for (int i = 0; i < lib->count; i++) {
if (strcmp(lib->books[i].title, title) == 0) return &lib->books[i];
}
return NULL;
}
void menu_run(Library *lib, int choice) {
switch (choice) {
case 1:
for (int i = 0; i < lib->count; i++) print_book(&lib->books[i]);
break;
}
}
int main(void) {
Library lib;
library_init(&lib);
Book b1 = {"C Tutorial", 2024, 0};
library_add(&lib, b1);
menu_run(&lib, 1);
return 0;
}
Kendini test et
-
Menüde 1 seçeneği ne yapar?
- Ödünç verir
- Çıkış yapar
- Arama yapar
- Kitapları listeler
Cevabı göster
Kitapları listeler — 1 tüm kitapları listeler; print_book ile yazdırır.
-
switch case'i tamamla
switch (choice) {
case 1:
for (int i = 0; i < lib->count; i++) ____(&lib->books[i]);
break;
}
Cevabı göster
switch (choice) {
case 1:
for (int i = 0; i < lib->count; i++) print_book(&lib->books[i]);
break;
}
-
Menü seçeneklerini eşle
- case 1
- Kitapları listeler
- case 2
- Ödünç verir
- case 3
- Arama yapar
- default
- Bilinmeyen seçim
Sıradaki ders: Bağlı liste