2014-12-09 3 views
0

학생 이름, ID 및 GPA를 입력 할 수있는 등록 앱을 만들고 있는데 모두 컬렉션 목록에 저장됩니다. 학생 등록시에도 라벨이 0으로 표시됩니다. 다음은 관련 코드입니다. 어떤 도움을 주셔서 감사합니다.C# 레이블이 올바르게 표시되지 않습니다.

namespace Lab09 
{ 
class Student 
{ 
    string name; 
    int id; 
    int intNumber; 
    decimal gpa; 

    public Student(string Name, int Id, decimal Gpa) 
    { 
     name = Name; 
     id = Id; 
     gpa = Gpa; 
    } 
    public string Name 
    { 
     set { name = value; } 
     get 
     { 
      return name; 
     } 
    } 
    public int Id 
    { 

     get 
     { 
      return id; 
     } 
    } 
    public decimal Gpa 
    { 

     get 
     { 
      return gpa; 
     } 
    } 
    public int Number 
    { 
     get 
     { 
      return intNumber; 
     } 
    } 
} 
} 


namespace Lab09 
{ 
public partial class Form1 : Form 
{ 
    List<Student> listofStudents; 
    int intCurrentStudent = 0; 

    public Form1() 
    { 
     InitializeComponent(); 
     listofStudents = new List<Student>(); 
    } 

private void btnRegister_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      if (Decimal.Parse(txtGPA.Text) > 0 && Decimal.Parse(txtGPA.Text) <= 4) 
      { 
       if (txtName.Text != "") 
       { 
        listofStudents.Add(new Student(txtName.Text, Int32.Parse(txtID.Text), Decimal.Parse(txtGPA.Text))); 
        intCurrentStudent = listofStudents.Count - 1; 
        txtName.Enabled = false; 
        txtID.Enabled = false; 
        txtGPA.Enabled = false; 
        btnRegister.Enabled = false; 
        if (listofStudents.Count > 1) 
        { 
         btnPrevious.Enabled = true; 
        } 
        displayNumStudents(); 
       } 
      } 
      else 
      { 
       MessageBox.Show("You must enter a name and GPA must be above 0 and less than or equal to 4"); 
      } 
     } 
     catch 
     { 
      MessageBox.Show("ID and GPA need to be numbers"); 
     } 
    } 

    private void displayNumStudents() 
    { 
     int NumOfStudents = 0; 
     foreach (Student aStudent in listofStudents) 
     { 
      NumOfStudents += aStudent.Number; 
     } 
     lblNum.Text = NumOfStudents.ToString(); 
    } 
+1

'Student.Number'는 설정되지 않고 기본값이 0입니다. –

답변

1

당신은 필드 당신의 Number 속성이 반환 int intNumber을 가지고 있지만 혹시으로 설정되지 않습니다. 그리고 나서 학생 수를 세는 데 그 숫자를 사용하고 있습니다. 이는 의미가 없습니다.

은 당신이 등록 된 학생이 계산한다고 가정 :

private void displayNumStudents() 
{ 
    int NumOfStudents = listOfStudents.Count(); 
    lblNum.Text = NumOfStudents.ToString(); 
} 
0

학생 클래스에서 변수 intNumber; 가 지정되어 있지 않고 만 Student 클래스의 Number 속성을 통해 반환 않습니다.

public int Number 
{ 
    get 
    { 
     return intNumber; 
    } 
} 

새 학생을 컬렉션에 추가 할 때이 속성을 업데이트해야합니다.

public Student(string Name, int Id, decimal Gpa, int studentNumber) 
{ 
     name = Name; 
     id = Id; 
     gpa = Gpa; 
     intNumber = studentNumber; 
} 

그런 다음 당신이 그것을 만들 때 새 Student 객체에이를 통과 한 다음 목록에 추가해야합니다 :

이 인수에 걸릴 거기를 할당하기 위해 Student 생성자를 수정할 수 있습니다 예 :

string name = txtName.Text; 
int id = Int32.Parse(txtID.Text); 
decimal gpa = decimal.Parse(txtGPA.Text); 
int studentNumber = listofStudents.Count() + 1; 

Student student = new Student(name, id, gpa, studentNumber); 

listofStudents.Add(student); 
관련 문제