0

我是使用 C# 编程的初学者,我的讲师给了我们一个棘手的项目。我已经设法完成了所有这一切,除了......数组!

长话短说,我有 5 个文本框,它们都接受用户的输入。此信息将存储到一个数组中,然后按顺序(出生日期顺序)显示在富文本框中,我在下面列出了我设法执行的代码:

private void button2_Click(object sender, EventArgs e)
{
   {
      bc[0] = new Student();
      bc[1] = new Student(Convert.ToInt32(textBox1.Text), "Mary", "Ford");
      bc[2] = new Student(1254, "Andrew", "White");
      bc[3] = new Student(1256, "Liam", "Sharp", " ");
      bc[4] = new Student(1266, "Michael", "Brown", " ");

      for (int i = 0; i < 5; i++)
      {
         string bcString = bc[i].studentToString() + "\r\n"; 
         richTextBox1.AppendText(bcString);
      }
   }
}    

CLASS "Student":
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Assignment_2
{
    class Student
    {
        private int accountNum;
        private string firstName;
        private string lastName;
        private string balance;

        // first constructor
        public Student()
        {
            accountNum = 0;
            firstName = "";
            lastName = "";
            balance = "";
        }

        // second constructor
        public Student(int accValue, string firstNameVal, string lastNameVal)
        {
            accountNum = accValue;
            firstName = firstNameVal;
            lastName = lastNameVal;
            balance = "";
        }

        // third constructor
        public Student(int accValue, string firstNameVal,
                             string lastNameVal, string balanceValue)
        {
            accountNum = accValue;
            firstName = firstNameVal;
            lastName = lastNameVal;
            balance = balanceValue;
        }

        public int AccountNum
        {
            get
            {
                return accountNum;
            }

            set
            {
                accountNum = value;
            }
        }

        public string FirstName
        {
            get
            {
                return firstName;
            }

            set
            {
                firstName = value;
            }
        }

        public string studentToString()
        {
            return (Convert.ToString(accountNum) + " " + firstName +
                    " " + lastName + " " + balance);
        }
    }

}
4

1 回答 1

1

让您的学生类实现 IComparable 接口,然后对字段 DateOfBirth(如果存在)进行排序。此示例适用于 AccountNum,但使用 DateOfBirth 进行更改应该很简单

Student[] bc = new Student[5];

bc[0] = new Student();
bc[1] = new Student(9999, "Mary", "Ford");
bc[2] = new Student(1254, "Andrew", "White");
bc[3] = new Student(1256, "Liam", "Sharp", " ");
bc[4] = new Student(1266, "Michael", "Brown", " ");

// Here the sort on the AccountNum
Array.Sort(bc);

// A StringBuilder instead of the RichTextBox for testing....    
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 5; i++)
{
    string bcString = bc[i].studentToString() + "\r\n"; 
    sb.Append(bcString);
}
Console.WriteLine(sb.ToString());

学生:(只是 IComparable 的部分)

class Student : IComparable
{
    .....


    public int CompareTo(object obj) 
    {
        if (obj == null) return 1;

        Student otherStudent = obj as Student;
        if (otherStudent != null) 
            return this.accountNum.CompareTo(otherStudent.AccountNum);
        else 
        throw new ArgumentException("Object is not a Student");
    }
    ....

}
于 2013-03-20T19:52:24.190 回答