عالم برمجةوتقنية الحاسوب C. P. W
742 subscribers
496 photos
55 videos
260 files
480 links
عالم الحاسوب برمجه وتقنيه وتطوير شرح كل ما يتطلب في مجال علوم الحاسوب والبرمجة
https://t.me/programming_C_w
قنات الجرافيكس @l_d_gh
#Digitalmarketing
#programming
#AI #CPA
#learn
التواصل معي @Eng_sharaf1
Download Telegram
عالم برمجةوتقنية الحاسوب C. P. W pinned «بالطبع، سأقدم لك مقدمة بسيطة لبرمجة Python للمبتدئين. ### ما هي بايثون؟ Python هي لغة برمجة عالية المستوى وسهلة التعلم والإستخدام. تُستخدم في مجموعة واسعة من التطبيقات، بما في ذلك تطوير الويب، تحليل البيانات، الذكاء الصناعي، وتطبيقات البرمجة العامة. ###…»
عالم برمجةوتقنية الحاسوب C. P. W pinned «بالطبع! قاعدة بيانات Access هي أداة قوية مقدمة من مايكروسوفت لإدارة البيانات بشكل سهل وفعال. إليك شرحًا عامًّا حول قواعد البيانات في Access للمبتدئين: ### ما هي قاعدة البيانات؟ قاعدة البيانات هي مكان لتخزين البيانات بطريقة منظمة تمكّنك من الوصول إليها وإدارتها…»
عالم برمجةوتقنية الحاسوب C. P. W pinned «🔹بسم الله الرحمن الرحيم🔹 اللهم صلِّ وسلم على نبينا محمد🕊 🔺مقررات كلية الحاسبات🔺 ————————▪️▪️▪️———————— ★ فيزياء ١ (كلية الحاسبات) ————————▪️▪️▪️———————— ★ كيمياء (كلية الحاسبات) ————————▪️▪️▪️———————— ★ أحياء (كلية الحاسبات) ————————▪️▪️▪️———————— …»
عالم برمجةوتقنية الحاسوب C. P. W pinned «بالطبع! HTML و CSS هما أساسيات في تطوير الويب، وهما مهمتان لخلق المواقع وصياغة صفحات ويب جذابة وجميلة. هنا مقدمة توضيحية لكيف يمكنك البدء في تعلم HTML و CSS. ### HTML (لغة توصيف النص التشعبي) HTML هي اللغة التي تُستخدم لإنشاء وتصميم محتويات صفحة الويب. تقوم…»
عالم برمجةوتقنية الحاسوب C. P. W pinned «بالطبع، سأكون سعيداً بشرح أساسيات لغة البرمجة C++ للمبتدئين. ### مقدمة عن C++ C++ هي لغة برمجة عالية المستوى، تدعم أساليب البرمجة الشيئية، والتي تُستخدم بشكل واسع في تطوير النظم البرمجية، الألعاب، وتطبيقات سطح المكتب. تتميز بأنها توسع لتضم بعض الميزات الإضافية…»
بعيدا عن البرمجة،

اغبى البشر اللي يظن الثقافة باللهجة وشرب القهوة.

الثقافة لمن تكون موسوعة تعرف بالتاريخ وحقائق وتكون محايد ما تجامل
لمن تكون تفهم بمجال علمي وباحث وتفكر وتسأل اللي اعلى منك،
لمن تكون منفتح وتتقبل الاختلافات ما تورث عاداتك اجدادك المنغلقة والتعصب.
👍1
إذا كنت تواجه مشكلة في ظهور موقعك عند البحث باسم الموقع في محركات البحث، فقد تكون هناك عدة أسباب لذلك. إليك بعض النقاط التي يمكنك مراجعتها وإجراءات تتخذها لتحسين الظهور:

### 1. تحقق من الفهرسة:
- تأكد من أن موقعك مفهرس في محركات البحث. يمكنك التحقق من ذلك عن طريق كتابة site:taslikmajaribialriyad.ahmedtaslik.com في محرك البحث. إذا لم يظهر شيء، فقد تحتاج إلى إضافة الموقع لمحركات البحث.

### 2. تنفيذ تحسين محركات البحث (SEO):
- الكلمات الرئيسية: تأكد من استخدام الكلمات الرئيسية التي تمثل محتوى الموقع في العناوين، والوصف، والمحتوى.
- تحسين العناوين والأوصاف: تأكد من أن لديك عناوين وأوصاف مميزة لكل صفحة على موقعك.
- محتوى ذو جودة: تقديم محتوى مفيد وجذاب يمكن أن يساعد في تحسين ترتيب الموقع.

### 3. التأكد من عدم وجود مشاكل تقنية:
- تحقق من عدم وجود أخطاء في البرمجة أو الروابط المعطلة على موقعك.
- استخدم أدوات مثل Google Search Console للبحث عن أي مشكلات تقنية قد تؤثر على ظهور الموقع.

### 4. استخدام روابط ذات جودة:
- حاول الحصول على روابط من مواقع أخرى تشير إلى موقعك. الروابط الخارجية يمكن أن تعزز من ظهور موقعك في نتائج البحث.

### 5. التحقق من إعدادات الخصوصية:
- تأكد من أن موقعك ليس محجوبًا عن محركات البحث في إعدادات الويب.

### 6. الصبر:
- أحيانًا يستغرق الأمر بعض الوقت لمحركات البحث لتحديث فهارسها، خاصة إذا كان الموقع جديدًا.

### 7. متابعة الأداء:
- استخدم أدوات تحليل الويب مثل Google Analytics لمتابعة أداء الموقع وفهم الزوار.

إذا كنت قد قمت بهذه الخطوات وما زلت تواجه مشاكل، يمكنك النظر في استشارة خبير في تحسين محركات البحث (SEO) للحصول على مشورة متخصصة.
🥰1
كل الي في القناة 👀
2
مابش تفاعل ولا شي ايش رايكم نعزمكم من شان التفاعل
👎2👍1🥰1👏1
نعم، لغة React هي مكتبة شهيرة لبناء واجهات المستخدم في تطبيقات الويب. إذا كنت تبحث عن المساعدة في تعلم React أو حلول لمشاكل معينة، يُمكنني مساعدتك في ذلك. إليك بعض النقاط الأساسية:

### 1. أساسيات React:
- المكونات (Components): React يعتمد على مبدأ تقسيم واجهة المستخدم إلى مكونات مستقلة.
- الخواص (Props): طريقة تمرير المعلومات من مكون إلى آخر.
- الحالة (State): تمثل البيانات التي يمكن أن تتغير داخل المكون.

### 2. بيئة العمل:
- يمكنك البدء بإنشاء مشروع جديد باستخدام create-react-app لتسهيل إعداد البيئة.

### 3. المكتبات المفيدة:
- React Router: لإدارة التنقل بين الصفحات في تطبيقات React.
- Redux أو Context API: لإدارة الحالة بشكل مركزي إذا كان تطبيقك يتطلب ذلك.

### 4. تعلم React:
- هناك الكثير من الموارد عبر الإنترنت، مثل الوثائق الرسمية لـ React، والدورات التعليمية على منصات مثل Udemy وCoursera، بالإضافة إلى مقاطع الفيديو على YouTube.

### 5. المجتمع والدعم:
- يمكنك الانضمام إلى مجتمعات مثل Stack Overflow أو Reddit أو مجموعات على منصات التواصل الاجتماعي للحصول على دعم إضافي.

إذا كان لديك سؤال معين حول React أو كنت بحاجة إلى مساعدة في مشروع محدد،
إليك مثال على برنامج متكامل بلغة C++ يستخدم عدة هياكل بيانات (مركبات بنية) لتنظيم المعلومات حول الطلاب والفصول الدراسية. سنستخدم الهياكل والمصفوفات والقوائم لتكوين هذا البرنامج.

### 1. مخطط البرنامج
#### 1.1. الهياكل المستخدمة
- هيكل Student: يمثل بيانات الطالب.
- هيكل Course: يمثل بيانات الدورة الدراسية.
- هيكل School: ينظم الطلاب والدورات.

### 2. الكود
#include <iostream>
#include <vector>
#include <string>

using namespace std;

// تعريف هيكل الطالب
struct Student {
int id;
string name;
float gpa; // المعدل التراكمي للطالب
};

// تعريف هيكل الدورة
struct Course {
int code;
string title;
vector<Student> enrolledStudents; // الطلاب المسجلون في الدورة
};

// تعريف هيكل المدرسة
struct School {
vector<Course> courses;

void addCourse() {
Course newCourse;
cout << "أدخل رمز الدورة: ";
cin >> newCourse.code;
cout << "أدخل عنوان الدورة: ";
cin.ignore(); // تجاهل أي أحرف متبقية في الدفق
getline(cin, newCourse.title);
courses.push_back(newCourse);
cout << "تم إضافة الدورة بنجاح!\n";
}

void enrollStudent() {
int courseIndex;
Student newStudent;
cout << "أدخل رقم الدورة للتسجيل: ";
cin >> courseIndex;

if (courseIndex < 0 || courseIndex >= courses.size()) {
cout << "رقم الدورة غير صحيح.\n";
return;
}

cout << "أدخل رقم معرف الطالب: ";
cin >> newStudent.id;
cout << "أدخل اسم الطالب: ";
cin.ignore(); // تجاهل أي أحرف متبقية في الدفق
getline(cin, newStudent.name);
cout << "أدخل المعدل التراكمي: ";
cin >> newStudent.gpa;

courses[courseIndex].enrolledStudents.push_back(newStudent);
cout << "تم تسجيل الطالب في الدورة بنجاح!\n";
}

void displayCourses() {
cout << "\nقائمة الدورات:\n";
for (const auto& course : courses) {
cout << "رمز الدورة: " << course.code << ", العنوان: " << course.title << endl;

cout << "الطلاب المسجلون:\n";
for (const auto& student : course.enrolledStudents) {
cout << " معرف: " << student.id << ", الاسم: " << student.name << ", المعدل: " << student.gpa << endl;
}
}
}
};

int main() {
School school;
int choice;

do {
cout << "\n1. إضافة دورة\n2. تسجيل طالب في دورة\n3. عرض الدورات\n4. الخروج\n";
cout << "اختر خيارًا: ";
cin >> choice;

switch (choice) {
case 1:
school.addCourse();
break;
case 2:
school.enrollStudent();
break;
case 3:
school.displayCourses();
break;
case 4:
cout << "الخروج...\n";
break;
default:
cout << "خيار غير صالح. حاول مرة أخرى.\n";
}
} while (choice != 4);

return 0;
}


### 3. شرح الكود
- هيكل Student: يحتوي على معرف الطالب، الاسم، والمعدل التراكمي.
- هيكل Course: يحتوي على رمز الدورة، عنوانها، وقائمة الطلاب المسجلين فيها.
- هيكل School: يحتوي على قائمة الدورات، مع وظائف لإضافة الدورات، تسجيل الطلاب، وعرض المعلومات.

### 4. تجميع البرنامج
يمكنك تجميع البرنامج باستخدام أي مترجم C++ مثل GCC. احفظ الكود في ملف باسم school_management.cpp، ثم استخدم الأوامر التالية من سطر الأوامر:

g++ school_management.cpp -o school_management
./school_management


### 5. الخاتمة
هذا البرنامج يوضح كيفية استخدام المركبات البنائية (الهياكل) في C++ لتنظيم وإدارة بيانات متعددة. يمكنك توسيع البرنامج بإضافة ميزات إضافية مثل حذف الطلاب من الدورات أو تعديل بياناتهم.

إذا كان لديك أي استفسارات أو تحتاج إلى مزيد من المساعدة، فلا تتردد في طرحها!
يمكنك إنشاء برنامج بلغة C++ لإدارة بيانات الطلاب ودرجاتهم، يتضمن ما يلي: طباعة قائمة الطلاب مع درجاتهم، طباعة درجات مادة معينة، تصنيف الطلاب حسب أدائهم (راسب، نجاح، نجاح ممتاز) وحساب المجموع للدرجات. إليك كودًا يحقق ذلك:

### البرنامج
#include <iostream>
#include <vector>
#include <string>

using namespace std;

// تعريف هيكل الطالب
struct Student {
int id;
string name;
float grades[5]; // افتراض وجود خمس مواد
};

// دالة لطباعة جميع الطلاب ودرجاتهم
void printAllStudents(const vector<Student>& students) {
cout << "\nقائمة الطلاب ودرجاتهم:\n";
for (const auto& student : students) {
cout << "معرف الطالب: " << student.id << ", الاسم: " << student.name;
cout << ", الدرجات: ";
for (const auto& grade : student.grades) {
cout << grade << " ";
}
cout << endl;
}
}

// دالة لطباعة درجات مادة معينة (مادة القرآن)
void printQuranGrades(const vector<Student>& students) {
cout << "\nدرجات مادة القرآن:\n";
for (const auto& student : students) {
cout << "معرف الطالب: " << student.id << ", الاسم: " << student.name;
cout << ", درجة القرآن: " << student.grades[0] << endl; // افتراض أن درجة القرآن هي الأولى
}
}

// دالة لتصنيف الطلاب حسب أدائهم
void classifyStudents(const vector<Student>& students) {
cout << "\nتصنيف الطلاب:\n";
for (const auto& student : students) {
float average = 0;
for (const auto& grade : student.grades) {
average += grade;
}
average /= 5; // افتراض أن هناك خمس مواد

if (average < 60) {
cout << "معرف الطالب: " << student.id << ", الاسم: " << student.name << " - راسب\n";
} else if (average >= 60 && average < 75) {
cout << "معرف الطالب: " << student.id << ", الاسم: " << student.name << " - نجاح\n";
} else {
cout << "معرف الطالب: " << student.id << ", الاسم: " << student.name << " - نجاح ممتاز\n";
}
}
}

// دالة لحساب مجموع درجات مادة القرآن
float calculateTotalQuranGrades(const vector<Student>& students) {
float total = 0;
for (const auto& student : students) {
total += student.grades[0]; // افتراض أن درجة القرآن هي الأولى
}
return total;
}

// البرنامج الرئيسي
int main() {
vector<Student> students;
int numberOfStudents;

cout << "أدخل عدد الطلاب: ";
cin >> numberOfStudents;

for (int i = 0; i < numberOfStudents; ++i) {
Student student;
cout << "أدخل معرف الطالب: ";
cin >> student.id;
cout << "أدخل اسم الطالب: ";
cin.ignore(); // تجاهل أي أحرف متبقية في الدفق
getline(cin, student.name);

cout << "أدخل درجات الطالب (5 درجات): ";
for (int j = 0; j < 5; ++j) {
cin >> student.grades[j];
}

students.push_back(student);
}

printAllStudents(students);
printQuranGrades(students);
classifyStudents(students);

float totalQuranGrades = calculateTotalQuranGrades(students);
cout << "مجموع درجات مادة القرآن: " << totalQuranGrades << endl;

return 0;
}

### شرح البرنامج
1. **الهيكل Student**: يحتوي على معرف الطالب، الاسم، ومصفوفة تحتوي على درجات الطالب في 5 مواد.
2. **الدالة printAllStudents**: تقوم بطباعة قائمة بجميع الطلاب ودرجاتهم.
3. **الدالة printQuranGrades**: تقوم بطباعة درجات مادة القرآن (افتراض أن هذه المادة هي الأولى).
4. **الدالة classifyStudents**: تقوم بتصنيف الطلاب إلى راسب، نجاح، ونجاح ممتاز بناءً على المتوسط.
5. **الدالة calculateTotalQuranGrades**: تقوم بحساب مجموع درجات مادة القرالبرنامج الرئيسي**البرنامج الرئيسي**: يستقبل عدد الطلاب وبياناتهم، ثم ينفذ الدوال المذكورة لطباعة المعلومات المطلوبة.

### كيفية التجميع والتنفيذ
يمكنك حفظ الكود في ملف باسم student_management.cpp، ثم استخدم الأوامر التالية من سطر الأوامر:

`bash
g++
This media is not supported in the widget
VIEW IN TELEGRAM
إذا كنت تبحث عن استضافة مجانية، هناك العديد من الخيارات الجيدة المتاحة. إليك بعض خدمات الاستضافة المجانية التي يمكنك النظر فيها:

### 1. InfinityFree
- تقدم استضافة مجانية بدون إعلانات، مع دعم PHP وMySQL.
- مساحة تخزين غير محدودة، وعرض نطاق غير محدود.

### 2. 000webhost
- توفر استضافة مجانية مع قيود مثل 1 جيجابايت من التخزين و10 جيجابايت من عرض النطاق.
- تشمل أيضًا ميزات بناء المواقع.

### 3. Freehostia
- تقدم استضافة مجانية مع 250 ميجابايت من التخزين و6 جيجابايت من عرض النطاق.
- توفر كذلك لوحة تحكم سهلة الاستخدام.

### 4. AwardSpace
- تقدم استضافة مجانية مع 1 جيجابايت من التخزين و5 جيجابايت من عرض النطاق.
- تدعم PHP وMySQL.

### 5. ByetHost
- تقدم استضافة مجانية مع 1 جيجابايت من التخزين غير المحدود وعرض نطاق 50 جيجابايت.
- توفر أيضًا دعم PHP وMySQL.

### 6. GitHub Pages
- إذا كنت تبحث عن استضافة لمشروعات الويب الثابتة، يمكنك استخدام GitHub Pages المجانية.

### نصائح:
- تأكد من قراءة الشروط والأحكام، حيث أن بعض الخدمات قد تحتوي على قيود أو إعلانات.
- يمكن أن تكون الاستضافة المجانية محدودة من حيث الأداء والدعم، لذا إذا كان مشروعك يتطلب موارد أكبر، فكر في خيارات استضافة مدفوعة في المستقبل.

إذا كان لديك أي أسئلة أخرى أو تحتاج إلى مزيد من المساعدة، فلا تتردد في طرحها!
لإنشاء قاعدة بيانات في Oracle، يمكنك استخدام SQL لإنشاء قاعدة البيانات، الجداول، وإدخال البيانات تمامًا كما في أي نظام إدارة قواعد بيانات آخر. إليك الخطوات الأساسية:

### 1. إنشاء مستخدم وتعيين حقوقه
قبل أن يتمكن المستخدم من إنشاء قاعدة بيانات جديدة، يجب أن يكون لديك مستخدم بامتيازات كافية. يمكنك استخدام التعليمات التالية لإنشاء مستخدم جديد:

CREATE USER اسم_المستخدم IDENTIFIED BY كلمة_المرور;
GRANT ALL PRIVILEGES TO اسم_المستخدم;

### 2. إنشاء جداول
سنقوم بإنشاء مثال مشابه للمكتبة كما في الرد السابق:

-- *تأكد من أنك قد قمت بتسجيل الدخول كمستخدم لديه صلاحيات إنشاء الجداول*

-- إنشاء جدول المؤلفين
CREATE TABLE المؤلفين (
ID NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
الاسم VARCHAR2(100) NOT NULL,
الجنسية VARCHAR2(50) NOT NULL
);

-- إنشاء جدول الكتب
CREATE TABLE الكتب (
ID NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
العنوان VARCHAR2(200) NOT NULL,
المؤلف_id NUMBER,
FOREIGN KEY (المؤلف_id) REFERENCES المؤلفين(ID)
);

### 3. إدخال البيانات
بعد إنشاء الجداول، يمكنك إدخال البيانات باستخدام التعليمات التالية:

-- إدخال بيانات في جدول المؤلفين
INSERT INTO المؤلفين (الاسم, الجنسية) VALUES ('أحمد خالد توفيق', 'مصري');
INSERT INTO المؤلفين (الاسم, الجنسية) VALUES ('جي. كيه. رولينغ', 'بريطاني');

-- إدخال بيانات في جدول الكتب
INSERT INTO الكتب (العنوان, المؤلف_id) VALUES ('يوتوبيا', 1);
INSERT INTO الكتب (العنوان, المؤلف_id) VALUES ('هاري بوتر', 2);

### 4. استرجاع البيانات
لاسترجاع البيانات من الجداول التي أنشأتها، يمكنك استخدام التعليمات التالية:

-- استرجاع كل البيانات من جدول الكتب
SELECT * FROM الكتب;

-- استرجاع الكتب مع معلومات المؤلفين
SELECT الكتب.العنوان, المؤلفين.الاسم
FROM الكتب
JOIN المؤلفين ON الكتب.المؤلف_id = المؤلفين.ID;

### ملاحظات:
- تأكد من أنك تستخدم أداة مثل SQL*Plus أو Oracle SQL Developer للاتصال بقاعدة البيانات وتنفيذ الأوامر.
- تأكد من أن لديك جميع الامتيازات المطلوبة لإنشاء المستخدمين، الجداول، وإدخال البيانات.

بهذا الشكل، يمكنك إعداد قاعدة بيانات في Oracle وتكوين الجداول وإدراج البيانات واسترجاعها.
مخطط ERD (مخطط الكيان والعلاقات) هو تمثيل رسومي للهياكل الأساسية لقاعدة البيانات والعلاقات بينها. بناءً على الجداول التي أنشأتها سابقًا (المؤلفين والكتب)، إليك كيفية تصميم مخطط ERD لهذين الجدولين:

### الكيانات (Entities):
1. المؤلفين (Authors)
- ID: مفتاح أساسي (Primary Key)
- الاسم (Name)
- الجنسية (Nationality)

2. الكتب (Books)
- ID: مفتاح أساسي (Primary Key)
- العنوان (Title)
- المؤلفid (AuthorID): مفتاح خارجي (Foreign Key) يشير إلى ID في جدول المؤلفين

### العلاقة (Relationship):
- المؤلفين - الكتب (Authors - Books):
- العلاقة بين الكيانين هي "1 إلى عدة" (One to Many)، حيث يمكن أن يكون للمؤلف الواحد العديد من الكتب، ولكن الكتاب الواحد يرتبط بمؤلف واحد فقط.

### رسم المخطط:
يمكن تصور المخطط ERD بالطريقة التالية:

+----------------+ +----------------+
| المؤلفين | 1 M | الكتب |
+----------------+ +----------------+
| ID (PK) |◄───────────────────| ID (PK) |
| الاسم | | العنوان |
| الجنسية | | المؤلف_id (FK)|
+----------------+ +----------------+


### ملاحظات:
- PK: مفتاح أساسي (Primary Key)
- FK: مفتاح خارجي (Foreign Key)
- الرمز "1" يشير إلى أنه يمكن أن يكون هناك مؤلف واحد، بينما الرمز "M" يشير إلى أنه يمكن أن يكون هناك عدة كتب للمؤلف.

يمكنك استخدام أدوات مثل MySQL Workbench أو Lucidchart لإنشاء ERD بشكل مرئي.
لإنشاء جدول باستخدام SQL، يمكنك استخدام عبارة CREATE TABLE. سأعطيك مثالاً عن كيفية إنشاء جدول للمؤلفين والكتب استنادًا إلى التصميم السابق.

### إنشاء جدول المؤلفين (Authors)
CREATE TABLE Authors (
ID INT PRIMARY KEY AUTO_INCREMENT,
Name VARCHAR(100) NOT NULL,
Nationality VARCHAR(50)
);

### إنشاء جدول الكتب (Books)
CREATE TABLE Books (
ID INT PRIMARY KEY AUTO_INCREMENT,
Title VARCHAR(200) NOT NULL,
Author_ID INT,
FOREIGN KEY (Author_ID) REFERENCES Authors(ID)
);

### توضيحات:
- ID: عمود معرف فريد، يتم توليده تلقائيًا عند إدخال سجل جديد في الجدول.
- Name و Title: يتم تحديد الطول الأقصى للنص بالنمط VARCHAR.
- Author_ID: مفتاح خارجي يشير إلى ID في جدول المؤلفين.

بمجرد تنفيذ هذه التعليمات في قاعدة بيانات SQL الخاصة بك، ستتمكن من إنشاء الجداول المرتبطة بالمؤلفين والكتب. إذا كنت بحاجة إلى المزيد من التفاصيل أو تغييرات معينة، فلا تتردد في السؤال!
لإضافة بيانات إلى جدول في SQL، يمكنك استخدام عبارة INSERT INTO. إليك كيفية استخدام هذه العبارة لإدخال بيانات في الجداول التي أنشأناها مسبقًا (المؤلفين والكتب).

### إضافة مؤلف إلى جدول المؤلفين (Authors)
INSERT INTO Authors (Name, Nationality) 
VALUES ('أحمد خالد توفيق', 'مصر');

### إضافة كتاب إلى جدول الكتب (Books)
INSERT INTO Books (Title, Author_ID) 
VALUES ('نادى الموتى الأحياء', 1);

### توضيحات:
- في عبارة INSERT INTO Authors، يتم إدخال اسم المؤلف وجنسيته.
- في عبارة INSERT INTO Books، يتم إدخال عنوان الكتاب ومعرف المؤلف (Author_ID) الذي يشير إلى المؤلف الذي تم إدخاله سابقًا.

يمكنك إضافة المزيد من البيانات بإجراء المزيد من عمليات الإدخال باستخدام نفس البنية. إذا كان لديك أي استفسارات أخرى أو تحتاج إلى مزيد من الأمثلة، فلا تتردد في طرحها!
لإجراء استعلامات لاسترجاع بيانات من قاعدة بيانات باستخدام SQL، يمكنك استخدام عبارة SELECT. فيما يلي بعض التعليمات الأساسية لاستخدامها:

### 1. استرجاع جميع البيانات من جدول:
SELECT * FROM table_name;

استبدل table_name باسم الجدول الذي تريد استرجاع البيانات منه.

### 2. استرجاع بيانات محددة من أعمدة معينة:
SELECT column1, column2 FROM table_name;

يمكنك استبدال column1 وcolumn2 بأسماء الأعمدة التي ترغب في عرضها.

### 3. استرجاع بيانات مع شرط (WHERE):
SELECT * FROM table_name WHERE condition;

مثال:
SELECT * FROM Authors WHERE Nationality = 'مصر';


### 4. استرجاع بيانات مرتبة (ORDER BY):
SELECT * FROM table_name ORDER BY column_name ASC|DESC;

مثال لترتيب النتائج حسب الاسم بشكل تصاعدي:
SELECT * FROM Authors ORDER BY Name ASC;


### 5. استرجاع بيانات فريدة (DISTINCT):
SELECT DISTINCT column_name FROM table_name;

مثال لاسترجاع الجنسيات المختلفة:
SELECT DISTINCT Nationality FROM Authors;


### 6. استرجاع عدد السجلات (COUNT):
SELECT COUNT(*) FROM table_name;

مثال لحساب عدد المؤلفين:
SELECT COUNT(*) FROM Authors;


### 7. استخدام الدوال التجميعية (GROUP BY):
SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;

مثال لحساب عدد الكتب لكل مؤلف:
SELECT Author_ID, COUNT(*) FROM Books GROUP BY Author_ID;


تلك كانت بعض التعليمات الأساسية لاستخدام SELECT. إذا كان لديك استفسار معين أو تحتاج إلى المزيد من الأمثلة، فلا تتردد في طرحها!
1
🔴 تحذير اذا وصلتك مثل هيك رسالة لا تفتحتها هذا اختراق لحسابك التليكرام
لإنشاء قائمة (Listbox) إضافية في Tkinter تظهر عندما تضغط على عنصر معين في القائمة الأولى، يمكنك استخدام دالة مرتبطة بالحدث الذي يحدث عند تحديد العنصر. إليك كيف يمكنك فعل ذلك خطوة بخطوة:

### 1. إنشاء نافذة وقائمة رئيسية
سنبدأ بإنشاء نافذة وقائمة رئيسية يمكن للمستخدم الاختيار منها.

### 2. إضافة قائمة إضافية
عندما يضغط المستخدم على عنصر في القائمة الأولى، سنقوم بعرض قائمة جديدة.

### 3. الكود الكامل
إليك مثال كامل يوضح كيفية تحقيق ذلك:

import tkinter as tk

def show_sublist(event):
# الحصول على العنصر المحدد من القائمة الأولى
selected_item = listbox.curselection()
if selected_item:
index = selected_item[0]
item = listbox.get(index)

# مسح العناصر في القائمة الثانية
sublistbox.delete(0, tk.END)

# إضافة عناصر فرعية استنادًا إلى العنصر المختار
if item == "عنصر 1":
sublistbox.insert(tk.END, "عنصر 1.1")
sublistbox.insert(tk.END, "عنصر 1.2")
sublistbox.insert(tk.END, "عنصر 1.3")
elif item == "عنصر 2":
sublistbox.insert(tk.END, "عنصر 2.1")
sublistbox.insert(tk.END, "عنصر 2.2")
sublistbox.insert(tk.END, "عنصر 2.3")

# إنشاء نافذة
root = tk.Tk()
root.title("قائمة فرعية في Tkinter")

# إنشاء قائمة رئيسية
listbox = tk.Listbox(root, height=10, width=50)
listbox.pack()

# إضافة عناصر إلى القائمة الرئيسية
listbox.insert(tk.END, "عنصر 1")
listbox.insert(tk.END, "عنصر 2")

# إنشاء قائمة فرعية
sublistbox = tk.Listbox(root, height=10, width=50)
sublistbox.pack()

# ربط حدث النقر على القائمة الأولى
listbox.bind("<<ListboxSelect>>", show_sublist)

# تشغيل الحلقة الرئيسية
root.mainloop()


### 4. شرح الكود
- دالة show_sublist: هذه الدالة يتم استدعاؤها عند تحديد عنصر في القائمة الرئيسية. تتحقق من العنصر المحدد، ثم تضيف العناصر الفرعية المناسبة إلى القائمة الثانية بناءً على الاختيار.
- قائمة رئيسية (listbox): تحتوي على عناصر (عنصر 1، عنصر 2) يمكن للمستخدم اختيار أحدها.
- قائمة فرعية (sublistbox): يتم ملؤها بالعناصر الإضافية بناءً على العنصر المحدد في القائمة الرئيسية.
- الربط بالحدث: يتم استخدام bind لربط حدث تحديد العنصر في listbox بدالة show_sublist.

### 5. تشغيل الكود
عند تشغيل البرنامج، سيتمكن المستخدم من اختيار عنصر من القائمة الرئيسية، وستظهر العناصر الفرعية المناسبة في القائمة الثانية.

إذا كان لديك أي أسئلة أو تحتاج إلى تعديلات إضافية، فلا تتردد في طرحها!

@yahfsh