كل المشاريع

برنامج علامات الطلاب

البرمجةمبتدئ ساعتان

الهدف: برنامج Windows Forms بلغة C# يضيف أسماء الطلاب وعلاماتهم، يحسب المعدل، يحذف ويحفظ في ملف ويعيد تحميله.

ستتعلّم: أدوات النموذج والأحداثالتحقق من الإدخال TryParseالقوائم List و ListBoxالحفظ في ملف نصي

جرّب على المنصة: شارح الكود

0 من 9
  1. في Visual Studio: مشروع جديد ← Windows Forms App (.NET Framework) بلغة C#، وسمّه MarksApp.

  2. أضف من صندوق الأدوات وغيّر خاصية Name لكل أداة: TextBox باسم txtName، TextBox باسم txtMark، ثلاثة أزرار btnAdd (إضافة) و btnDelete (حذف) و btnSave (حفظ)، ListBox باسم lstStudents، و Label باسم lblAvg. اجعل خاصية RightToLeft = Yes للنموذج.

  3. داخل الصف Form1 (قبل الدوال) عرّف قائمة تحفظ العلامات بالترتيب نفسه الذي تظهر به الأسماء:

    C#
    List<int> marks = new List<int>();
  4. انقر الزر مرتين ليُنشأ حدث Click واكتب:

    C#
    private void btnAdd_Click(object sender, EventArgs e)
    {
        if (txtName.Text.Trim() == "") { MessageBox.Show("أدخل اسم الطالب"); return; }
        int mark;
        if (!int.TryParse(txtMark.Text, out mark) || mark < 0 || mark > 100)
        { MessageBox.Show("العلامة رقم بين 0 و 100"); return; }
        marks.Add(mark);
        lstStudents.Items.Add(txtName.Text.Trim() + " - " + mark);
        ShowAverage();
        txtName.Clear(); txtMark.Clear(); txtName.Focus();
    }
  5. دالة مساعدة تُستدعى بعد كل تغيير (تحتاج using System.Linq; وهو موجود افتراضياً):

    C#
    private void ShowAverage()
    {
        if (marks.Count == 0) { lblAvg.Text = "المعدل: -"; return; }
        lblAvg.Text = "المعدل: " + marks.Average().ToString("0.0");
    }
  6. يحذف الطالب المحدد من القائمتين معاً:

    C#
    private void btnDelete_Click(object sender, EventArgs e)
    {
        int i = lstStudents.SelectedIndex;
        if (i == -1) { MessageBox.Show("اختر طالباً أولاً"); return; }
        lstStudents.Items.RemoveAt(i);
        marks.RemoveAt(i);
        ShowAverage();
    }
  7. أضف في أعلى الملف using System.IO; ثم:

    C#
    private void btnSave_Click(object sender, EventArgs e)
    {
        List<string> lines = new List<string>();
        foreach (object item in lstStudents.Items) lines.Add(item.ToString());
        File.WriteAllLines("students.txt", lines);
        MessageBox.Show("تم الحفظ");
    }
  8. انقر النموذج نفسه مرتين ليُنشأ حدث Load:

    C#
    private void Form1_Load(object sender, EventArgs e)
    {
        if (!File.Exists("students.txt")) return;
        foreach (string line in File.ReadAllLines("students.txt"))
        {
            lstStudents.Items.Add(line);
            marks.Add(int.Parse(line.Substring(line.LastIndexOf(" - ") + 3)));
        }
        ShowAverage();
    }
  9. شغّل (F5): أضف 3 طلاب، احذف واحداً، احفظ، أغلق البرنامج وافتحه — يجب أن تعود البيانات. جرّب إدخال حروف بدل العلامة للتأكد من رسالة الخطأ.

تحدّيات إضافية

  • أظهر أعلى علامة واسم صاحبها في Label ثانٍ (marks.Max()).
  • لوّن lblAvg بالأحمر إن كان المعدل أقل من 50: lblAvg.ForeColor = Color.Red;
  • رتّب الطلاب حسب العلامة بزر جديد.
هل أفادتك هذه الصفحة؟
تطبيق السلطان

المنصة في جيبك — حتى بدون إنترنت

ثبّت التطبيق على هاتفك ليفتح بلمسة واحدة، وتصلك الإشعارات فور رفع ملف جديد أو صدور إعلان مهم.

  • فتح فوري كتطبيق
  • يعمل دون اتصال
  • إشعارات فورية
تطبيق أندرويد (APK)