سورس سیستم مدیریت کتابخانه به زبان C
در این بخش سورس سیستم مدیریت کتابخانه را برای شما آماده کرده ایم که با استفاده از زبان برنامه نویسی C نوشته شده است. در ادامه می توانید توضیجات، بخشی از سورس کد و تصاویری از خروجی پروژه را مشاهده کنید.
توضیحات پروژه
این سیستم در محیط نرم افزار Code Blocks و به صورت Console App ایجاد شده است. در زیر گزینه های موجود در منوی اصلی این برنامه را مشاهده می کنید:
- افزودن عضو جدید (Add new member)
- افزودن کتاب جدید (Add new book)
- امانت گرفتن یک کتاب (Borrow a book)
- نمایش کتاب های امانت گرفته شده (Display borrowed books)
- باز گرداندن کتاب امانت گرفته شده (Give back a book)
- نمایش لیست اعضای کتابخانه (Display all members)
- نمایش لیست کتاب های موجود در کتابخانه (Display all books)
افزودن عضو جدید
در این بخش کاربر می تواند با وارد کردن اطلاعات مورد نیاز برای هر عضو (نام، نام خانوادگی، تاریخ تولد) یک عضو جدید به کتابخانه اضافه کند. شناسه (id) هر عضو به صورت random تولید می شود.
افزودن کتاب جدید
در این بخش کاربر می تواند با وارد کردن اطلاعات مورد نیاز برای هر کتاب (شماره شابک، نام و نویسنده) یک کتاب جدید به کتابخانه اضافه کند.
امانت گرفتن یک کتاب
در این بخش هر عضو می تواند با وارد کردن شناسه خود لیست کتاب های موجود را مشاهده کند و هر کدام از آن ها را که بخواهد با استفاده از ISBN هر کتاب امانت بگیرد.
نمایش کتاب های امانت گرفته شده
در این بخش هر عضو با وارد کردن شناسه خود می تواند لیست کتاب هایی که امانت گرفته است را مشاهده کند.
باز گرداندن کتاب امانت گرفته شده
در این بخش هر عضو می تواند با وارد کردن شناسه خود و شماره شابک کتابی که امانت گرفته است، آن را به کتابخانه باز گرداند.
نمایش لیست اعضای کتابخانه
در این بخش لیست کل اعضای موجود در کتابخانه نمایش داده می شود. لیست اعضای بر اساس شناسه هر کدام به صورت صعودی مرتب می شود.
نمایش لیست کتاب های موجود در کتابخانه
در این بخش لیست کل کتاب های ثبت شده در کتابخانه نمایش داده می شود. در هر بخش از برنامه تاریخ فعلی، تعداد اعضای ثبت شده و تعداد کتاب های امانت گرفته شده در بالای صفحه نمایش داده می شود.
قسمت های از سورس پروژه
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 | #define MEMBERS_INFO_FILE "members_info.db" // آدرس فایل مربوط به اطلاعات اعضا #define BOOKS_INFO_FILE "books_info.db" // آدرس فایل مربوط به اطلاعات کتاب ها #define BORROWED_BOOKS_INFO_FILE "borrowed_books_info.db" // آدرس فایل مربوط به اطلاعات کتاب های امانت گرفته شده #define TEMP_FILE "temp.db" // آدرس فایل موقتی برای ایجاد تغییر در فایل های اصلی #define APPEND_MODE "ab" // حالت نوشتن در فایل #define READ_MODE "rb" // حالت خواندن از فایل #define IO_ERR_MESSAGE "Cannot open file!" // پیام خطای مربوط به فایل ها #include <stdio.h> #include <stdlib.h> #include <time.h> /******************************************************* ساختار مربوط به هر عضر *******************************************************/ typedef struct { int id; char first_name[21]; char last_name[21]; char birth_day[21]; int borrowed_books_count; } Member; /******************************************************* ساختار مربوط به هر کتاب *******************************************************/ typedef struct { long isbn; char name[50]; char author[50]; int amount; } Book; /******************************************************* ساختار مربوط به کتاب امانت گرفته شده *******************************************************/ typedef struct { int member_id; int book_id; char borrowing_date[21]; char give_back_date[21]; } BorrowedBook; /******************************************************* الگوی توابع *******************************************************/ void clear_screen(); void pause(); void handle_error(const char *, int); void set_current_date(); void print_main_menu(); void handle_user_selection(int); void print_details(); void add_new_member(); void add_new_book(); void borrow_book(); void give_back_book(); void print_members(); void print_books(); void print_borrowed_books(); int get_members_count(); int get_books_count(); int get_borrowed_books_count(); Book get_book_info(int); int generate_random(int, int); void sort_members(Member *, int); int is_member_exist(int); int is_book_exist(int); /******************************************************* متغیر سراسری برای نگهداری تایخ فعلی سیستم *******************************************************/ char g_current_date[21]; /******************************************************* تابع اصلی و نقطه شروع برنامه *******************************************************/ int main() { int user_selection; set_current_date(); while (1) { clear_screen(); print_details(); print_main_menu(); printf("Your selection >>> "); scanf("%d", &user_selection); handle_user_selection(user_selection); } return 0; } /******************************************************* این تابع با استفاده از دستور CMD صفحه کنسول را پاک می کند *******************************************************/ void clear_screen() { system("CLS"); } /******************************************************* این تابع برای مدیریت خطا های برنامه استفاده می شود *******************************************************/ void handle_error(const char *errorMessages, int closeApp) { printf("%s", errorMessages); pause(); if (closeApp) exit(EXIT_FAILURE); } /******************************************************* این تابع منو اصلی برنامه را نمایش می دهد *******************************************************/ void print_main_menu() { printf("App Menu\n\n"); printf("1) Add new member\n"); printf("2) Add new book\n"); printf("3) Borrow a book\n"); printf("4) Display borrowed books\n"); printf("5) Give back a book\n"); printf("6) Display all members\n"); printf("7) Display all books\n"); printf("8) Quit\n\n"); } /******************************************************* این تابع گزینه انتخاب شده از منو را اجرا می کند *******************************************************/ void handle_user_selection(int user_selection) { switch(user_selection) { case 1: clear_screen(); print_details(); add_new_member(); break; case 2: clear_screen(); print_details(); add_new_book(); break; case 3: clear_screen(); print_details(); borrow_book(); break; case 4: clear_screen(); print_details(); print_borrowed_books(); pause(); break; case 5: clear_screen(); print_details(); give_back_book(); break; case 6: clear_screen(); print_details(); print_members(); pause(); break; case 7: clear_screen(); print_details(); print_books(); pause(); break; case 8: exit(EXIT_SUCCESS); default: handle_error("Your selection out of range!\n", 0); break; } } /******************************************************* این تابع جزئیات کتاب خانه (تاریخ فعلی، تعداد اعضا و تعداد کتاب های امانت گرفته شده) را در بالای هر بخش نمایش می دهد *******************************************************/ void print_details() { printf("Current Date >>> %s\n", g_current_date); printf("Total Members >>> %d\n", get_members_count()); printf("Total borrowed books >>> %d\n", get_borrowed_books_count()); printf("----------------------------------------------\n\n"); } /******************************************************* این تابع یک عضو جدید به کتاب خانه اضافه می کند *******************************************************/ void add_new_member() { int unique_id; while (1) { Member member; FILE *file = fopen(MEMBERS_INFO_FILE, APPEND_MODE); if (!file) handle_error(IO_ERR_MESSAGE, 1); getchar(); printf("Enter member first name >>> "); fgets(member.first_name, 21, stdin); printf("Enter member last name >>> "); fgets(member.last_name, 21, stdin); printf("Enter member birth day >>> "); fgets(member.birth_day, 21, stdin); while (1) { unique_id = generate_random(1000, 9999); if (!is_member_exist(unique_id)) break; } member.id = unique_id; member.borrowed_books_count = 0; fwrite(&member, sizeof(Member), 1, file); fclose(file); printf("Do you want to add another member?(y/n) >>> "); if (getche() == 'n') break; clear_screen(); print_details(); } } |
هیچ نظری ثبت نشده است