لقد قمت بتطوير برنامج يستخدم اللغة C لإدخال معلومات عن العمال إلى ملف نصي والتحقق من تكرار الرقم الوظيفي (ID) الخاص بهم. فيما يلي شرح لكيفية عمل البرنامج:
- يتم تعريف هيكل
struktura
الذي يحتوي على البيانات الأساسية للموظفين، مثل ID والاسم والراتب وسنة البدء في العمل. - تتوفر وظيفة
clear_input_buffer
لتنظيف البيانات المتبقية في الذاكرة بعد استخدام دالةscanf
. - تتوفر وظيفة
provjera
للتحقق مما إذا كان هناك ID مكرر في ملف النص. - في الدالة الرئيسية
main
، يتم فتح ملف النص “datoteka.txt” للكتابة. - يُطلب من المستخدم إدخال عدد العمال M.
- يتم استخدام حلقتين متداخلتين لإدخال ID فريد لكل عامل.
- يتم استخدام دالة
provjera
للتحقق من عدم تكرار ال ID. - تُطلب من المستخدم إدخال اسم وراتب وسنة البدء في العمل لكل عامل.
- تُكتب بيانات كل عامل إلى ملف النص “datoteka.txt”.
- يتم إغلاق ملف النص بعد الانتهاء من الكتابة.
تأكد من أن ملف “datoteka.txt” موجود في نفس المجلد الذي يحتوي على برنامجك. استمر في تعديل البرنامج وتحسينه حسب احتياجاتك، ولا تتردد في طرح أسئلتك إذا كنت بحاجة إلى مساعدة إضافية.
المزيد من المعلومات
بالطبع، إليك المزيد من المعلومات حول البرنامج الذي قمت بتطويره:
-
تم استخدام وظيفة
gets
لقراءة سلسلة الأحرف (الاسم واللقب)، ولكن يُفضل استخدامfgets
بدلاً منgets
لتجنب مشاكل الأمان. يُمكن استخدامfgets
على النحو التالي:cfgets(radnik.imeprezime, sizeof(radnik.imeprezime), stdin);
-
قد يكون من الأفضل استخدام
fprintf
لكتابة رسائل الخطأ إلىstderr
بدلاً منprintf
، حيث أنstderr
يستخدم لرسائل الخطأ والتنبيهات. على سبيل المثال:cfprintf(stderr, "Nema datoteke!\n");
-
يمكنك تحسين كفاءة البرنامج عن طريق استخدام الحلقات المناسبة للتحقق من صحة الإدخالات وتكرار العمليات. على سبيل المثال، يمكنك استخدام حلقة
do-while
للتحقق من أن ال ID يتكون من 3 أرقام:cdo { printf("Unesi ID\n"); scanf("%d", &radnik.ID); clear_input_buffer(); } while (radnik.ID < 100 || radnik.ID > 999);
-
يمكنك أيضًا إضافة دالة لطباعة محتويات الملف “datoteka.txt” للتحقق من البيانات المخزنة.
هذه بعض النصائح التي يمكن أن تساعد في تحسين وتطوير برنامجك، ولكن يرجى ملاحظة أنه يجب عليك دائمًا التحقق من الإدخالات وضمان سلامة البرنامج قبل استخدامه في بيئة إنتاجية.