从我的class.cs调用方法

时间:2012-10-20 15:20:56

标签: c# visual-studio-2010 class button methods

我需要在我的学生班中编写2个方法来执行以下操作

hasPassed()如果学生的年份标记> = 40或者,则应返回True 如果标记<40

,则为false

toString()应返回包含摘要的单个字符串 课堂上的学生详情 例如 “12345 Basil Fawlty,19/08/1946”

这里是我对上述方法的代码,我对它的要求是什么正确的?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CourseWork
{
    public class Student
    {
        private static string firstname;
        private string secondname;
        private string dateofbirth;
        private string course;
        private int matricnumber;
        private double yearmark;

      public bool hasPassed()
        {
            if (yearmark >= 40)
                return true;
            else
                return false;
        }

      public void toString()
      {
          firstname = "Basil";
          secondname = "Fawlty";
          dateofbirth = "23/08/1946";
          course = "MA Hotel Management";
          matricnumber = 12345;
          yearmark = 55;
      }

        public Student()
        {
        }

        public string FirstName
        {
            get { return firstname; }
            set { firstname = value; }
        }

        public string SecondName
        {
            get { return secondname; }
            set { secondname = value; }
        }
        public string DateOfBirth
        {
            get { return dateofbirth; }
            set { dateofbirth = value; }
        }

        public string Course
        {
            get { return course; }
            set { course = value; }
        }
        public int MatricNumber
        {
            get { return matricnumber; }
            set
            {
                if (value <= 99999 && value >= 10000)
                {
                    matricnumber = value;
                }
                else
                {
                    Console.WriteLine("Invalid Matric Number: {0}", value);
                }

              matricnumber = value;
            }
        }
        public double YearMark
        {
            set
            {
                if (value <= 100 && value >= 0)
                {
                    yearmark = value;
                }
                else
                {
                    Console.WriteLine("Invalid Year Mark: {0}", value);
                }
              yearmark = value;
            }

        }
    }

然后我需要将上述方法用于执行以下操作的获取按钮

获取:使用Student类方法的值更新文本框。该 应使用Student.hasPassed()方法更新通过/失败标签。该 应使用Student.toString()更新学生详细信息摘要。

但是我在编写代码时遇到了麻烦,我无法从我的学生班调用hasPassed()方法或toString()方法

所以我做错了什么但是看不出它是什么 任何想法如何解决这个问题?

我有一个设置按钮,基本上可以让我保存学生课程中的更新vaules,虽然我不认为这保存他们正确,但不知道,直到我得到Get按钮工作我已经使用Student student = new student()in获取按钮中的设置按钮我需要使用toString方法在txt框和标签中显示例如12345 Basil Fawlty,23/08/194,然后我需要在Get按钮中使用hasPassed()方法当年标是> = 40时,另一个标签表示通过或失败,如果&lt; 40

3 个答案:

答案 0 :(得分:1)

我没有完全阅读你的问题,因为有很多错误。

例如

public void toString()
      {
          firstname = "Basil";
          secondname = "Fawlty";
          dateofbirth = "23/08/1946";
          course = "MA Hotel Management";
          matricnumber = 12345;
          yearmark = 55;
      }

你的对象在哪里?

你应该像这样创建一个对象: 学生stu =新学生();

小心并且让你的问题更容易理解!

看看: https://stackoverflow.com/questions/902994/how-to-ask-programming-questions-correctly

答案 1 :(得分:1)

  1. firstName变量是静态的。这将使Student的所有实例共享相同的名字,这是不正确的。每个Student对象都应该有自己的名字。

  2. 该类的实例变量是私有的,无法设置。您可能想要创建一个将这些变量作为参数的构造函数。

    public Student(string firstName, string secondName, ...) 
    {
        this.firstName = firstName;
        this.secondName = secondName;
        ...
    }
    
  3. hasPassed()方法是正确的。您可以通过实例化Student类的实例并在实例化对象上调用hasPassed()来验证行为是否正常。

    double goodYearMark = 85;
    Student goodStudent = new Student("Basil", "Fawlty", ..., goodYearMark);
    Console.WriteLine("Good Student Passed? " + goodStudent.hasPassed());
    
    double badYearMark = 35;
    Student badStudent = new Student("Bad", "Student", ..., badYearMark);
    Console.WriteLine("Bad Student Passed? " + badStudent.hasPassed());
    
  4. ToString()方法应该返回一个字符串值。 .NET中的每个对象都有一个ToString()方法,您可以使用override关键字覆盖默认行为。 请参阅MSDN documentation for the Object.ToString Method

    public override string ToString() 
    {
        return string.format("{0} {1}, {2}", firstName, secondName, dateOfBirth);
    }
    
  5. 上面的代码示例可能无法编译,因为我将它们直接输入到响应窗口中,但希望它们可以作为指导。希望这有帮助!

答案 2 :(得分:0)

再次阅读toString要求,你做错了。现在在代码中调用toString会对现有值产生什么影响?

另外,检查最后两个属性设置器。目前,您并未阻止用户设置无效值。

您还需要创建一个类的实例,并在其上设置可以从toString返回的初始值。

祝你好运,你几乎就在那里: - )