البرمجة

تصميم واجهة مستخدم لإدارة الموظفين بحثًا عن أدنى راتب سنوي

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

فيما يلي مقترح لتحسين الكود:

  1. تعديل فئة Employee:

    • قم بإضافة خاصية إضافية في فئة Employee لتخزين الراتب السنوي.
    • قم بتحديث طرق البحث وعرض المعلومات لتأخذ في اعتبارها الراتب السنوي.
    csharp
    // في فئة Employee public double YearlySalary { get { return salary; } set { salary = value; } }
  2. تحسين واجهة المستخدم (GUI):

    • قم بتحديث واجهة المستخدم لتتيح إدخال رواتب العاملين.
    • أضف زرًا لتنشيط البحث عن الراتب الأدنى.
    csharp
    // في الفئة Form1 private void Searchbtn_Click(object sender, EventArgs e) { // ... (الكود الحالي) for (int i = 0; i < 10; i++) { string employeeString = employee[i].employeeInformationToString() + "\r\n"; richTextBox1.AppendText(employeeString); } } private void FindLowestSalarybtn_Click(object sender, EventArgs e) { // تحديد العامل ذو أدنى راتب سنوي وعرض المعلومات Employee[] lowestSalaryEmployees = FindEmployeesWithLowestSalary(employee); DisplayEmployeeInformation(lowestSalaryEmployees); } private Employee[] FindEmployeesWithLowestSalary(Employee[] employees) { double minSalary = double.MaxValue; List lowestSalaryEmployees = new List(); foreach (Employee emp in employees) { if (emp.YearlySalary < minSalary) { minSalary = emp.YearlySalary; lowestSalaryEmployees.Clear(); lowestSalaryEmployees.Add(emp); } else if (emp.YearlySalary == minSalary) { lowestSalaryEmployees.Add(emp); } } return lowestSalaryEmployees.ToArray(); } private void DisplayEmployeeInformation(Employee[] employees) { if (employees.Length > 0) { StringBuilder infoBuilder = new StringBuilder(); infoBuilder.AppendLine("Employees with Lowest Yearly Salary:"); foreach (Employee emp in employees) { infoBuilder.AppendLine(emp.employeeInformationToString()); } MessageBox.Show(infoBuilder.ToString(), "Lowest Yearly Salary", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("No employees found.", "Lowest Yearly Salary", MessageBoxButtons.OK, MessageBoxIcon.Information); } }

    قم بإضافة زر جديد في واجهة المستخدم يقوم بتنشيط البحث عن العامل ذو أدنى راتب سنوي، وتم توجيهه إلى الطريقة FindLowestSalarybtn_Click.

  3. تعديل استخدام الفئة Employee:

    • قم بتحديث كود الاستخدام لتضمين الراتب السنوي.
    csharp
    private void Searchbtn_Click(object sender, EventArgs e) { // ... (الكود الحالي) employee[1].YearlySalary = 8000.00; // تكرار العملية لبقية الموظفين for (int i = 0; i < 10; i++) { string employeeString = employee[i].employeeInformationToString() + "\r\n"; richTextBox1.AppendText(employeeString); } }

    ضمن هذا النهج، ستكون لديك واجهة مستخدم تسمح لإدخال بيانات الموظفين والبحث عن العامل ذو أدنى راتب سنوي، مع إظهار جميع الموظفين الذين يحققون هذا الراتب في نافذة رسالة.

المزيد من المعلومات

في محاولة لتوسيع المعلومات وتحسين النظام الحالي، يمكنك اتباع الخطوات التالية:

  1. إدارة الاستثناءات:

    • يفضل أن تقوم بتحسين التعامل مع الاستثناءات لضمان استقرار البرنامج.
    • يمكنك إضافة تحقق من صحة البيانات المدخلة للتأكد من أن الراتب السنوي هو رقم صحيح وغير سلبي.
    csharp
    // في فئة Employee public double YearlySalary { get { return salary; } set { if (value >= 0) salary = value; else throw new ArgumentException("Yearly salary must be a non-negative value."); } }
  2. تحسين الكفاءة:

    • يمكنك تحسين كفاءة البحث عن أدنى راتب سنوي بترتيب المصفوفة قبل البحث، وذلك لتقليل الوقت المستغرق في البحث.
    csharp
    private Employee[] FindEmployeesWithLowestSalary(Employee[] employees) { employees = employees.OrderBy(emp => emp.YearlySalary).ToArray(); double minSalary = employees[0].YearlySalary; List lowestSalaryEmployees = employees.TakeWhile(emp => emp.YearlySalary == minSalary).ToList(); return lowestSalaryEmployees.ToArray(); }
  3. تحسين واجهة المستخدم:

    • قم بإضافة ميزة إضافية لعرض الموظف الذي يحقق الراتب الأدنى عند النقر على اسمه في نافذة رسالة.
    csharp
    private void DisplayEmployeeInformation(Employee[] employees) { // ... (الكود الحالي) DialogResult result = MessageBox.Show(infoBuilder.ToString(), "Lowest Yearly Salary", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if (result == DialogResult.OK) { // عرض معلومات الموظف المحدد عند النقر على زر "موافق" ShowSelectedEmployeeDetails(employees[0]); } } private void ShowSelectedEmployeeDetails(Employee employee) { MessageBox.Show($"Employee ID: {employee.EmployeeIDNum}\nFull Name: {employee.FullName}\nLast Name: {employee.LastName}\nYearly Salary: {employee.YearlySalary}", "Employee Details", MessageBoxButtons.OK, MessageBoxIcon.Information); }

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

مقالات ذات صلة

زر الذهاب إلى الأعلى

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!