-5

生徒のクラスで次の2つのメソッドを作成する必要がありました

hasPassed()生徒の年のマークが40以上の場合はTrueを返し、マークが40未満の場合はfalseを返す必要があります

toString()は、クラス内で保持されている生徒の詳細の要約を含む単一の文字列を返す必要があります(例:「12345Basil Fawlty、23/08/1946」</ p>)。

これが私が上記のメソッドに対して持っているコードです、それが上記を求めているものに対して私が正しいものは何ですか?

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;
            }

        }
    }

次に、次のことを行う取得ボタンで上記のメソッドを使用する必要があります

Get:Studentクラスメソッドの値を使用してテキストボックスを更新します。Student.hasPassed()メソッドを使用して、合格/不合格のラベルを更新する必要があります。学生の詳細の概要は、Student.toString()を使用して更新する必要があります。

しかし、コーディングに問題があり、生徒のクラスからhasPassed()メソッドまたはtoString()メソッドを呼び出すことができません。

だから私は何か間違ったことをしましたが、これを修正する方法についてのアイデアが何であるかわかりませんか?

基本的に生徒のクラスに更新値を保存できる設定ボタンがありますが、正しく保存されているとは思いませんが、[取得]ボタンが機能するまでわかりません。設定ボタンでStudent student = new student()を使用しました。取得ボタンでtoStringメソッドを使用して、たとえば12345 Basil Fawlty、23/08/194をtxtボックスとラベルに表示する必要があります。次に、取得ボタンでhasPassed()メソッドを使用する必要があります。年マークは>=40です別のラベルは<40の場合は合格または不合格を示します

4

3 に答える 3

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キーワードを使用してデフォルトの動作をオーバーライドできます。Object.ToStringメソッドのMSDNドキュメントを参照してください。

    public override string ToString() 
    {
        return string.format("{0} {1}, {2}", firstName, secondName, dateOfBirth);
    }
    

上記のコード例は、応答ウィンドウに直接入力したためコンパイルされない場合がありますが、ガイダンスとして役立つことを願っています。お役に立てれば!

于 2012-10-20T15:45:46.553 に答える
0

toString 要件をもう一度読んでください。これは間違っています。コードで toString を呼び出すと、既存の値はどうなりますか?

また、最後の 2 つのプロパティ セッターを確認します。現在、ユーザーが無効な値を設定するのを防いでいません。

また、クラスのインスタンスを作成し、toString から返すことができる初期値を設定する必要があります。

頑張ってください、あなたはもうすぐそこにいます:-)

于 2012-10-20T15:35:48.843 に答える