برنامج علامات الطلاب
الهدف: برنامج Windows Forms بلغة C# يضيف أسماء الطلاب وعلاماتهم، يحسب المعدل، يحذف ويحفظ في ملف ويعيد تحميله.
ستتعلّم: أدوات النموذج والأحداثالتحقق من الإدخال TryParseالقوائم List و ListBoxالحفظ في ملف نصي
-
في Visual Studio: مشروع جديد ← Windows Forms App (.NET Framework) بلغة C#، وسمّه MarksApp.
-
أضف من صندوق الأدوات وغيّر خاصية Name لكل أداة: TextBox باسم txtName، TextBox باسم txtMark، ثلاثة أزرار btnAdd (إضافة) و btnDelete (حذف) و btnSave (حفظ)، ListBox باسم lstStudents، و Label باسم lblAvg. اجعل خاصية RightToLeft = Yes للنموذج.
-
داخل الصف Form1 (قبل الدوال) عرّف قائمة تحفظ العلامات بالترتيب نفسه الذي تظهر به الأسماء:
C#List<int> marks = new List<int>(); -
انقر الزر مرتين ليُنشأ حدث 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(); } -
دالة مساعدة تُستدعى بعد كل تغيير (تحتاج using System.Linq; وهو موجود افتراضياً):
C#private void ShowAverage() { if (marks.Count == 0) { lblAvg.Text = "المعدل: -"; return; } lblAvg.Text = "المعدل: " + marks.Average().ToString("0.0"); } -
يحذف الطالب المحدد من القائمتين معاً:
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(); } -
أضف في أعلى الملف 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("تم الحفظ"); } -
انقر النموذج نفسه مرتين ليُنشأ حدث 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(); } -
شغّل (F5): أضف 3 طلاب، احذف واحداً، احفظ، أغلق البرنامج وافتحه — يجب أن تعود البيانات. جرّب إدخال حروف بدل العلامة للتأكد من رسالة الخطأ.
تحدّيات إضافية
- أظهر أعلى علامة واسم صاحبها في Label ثانٍ (marks.Max()).
- لوّن lblAvg بالأحمر إن كان المعدل أقل من 50: lblAvg.ForeColor = Color.Red;
- رتّب الطلاب حسب العلامة بزر جديد.
أنجزت مشروع «برنامج علامات الطلاب»!
أضفه إلى ملفك الشخصي، وجرّب التحدّيات لتطوّره أكثر.