AhmedHosny96 Ответов: 1

Расчет процентного и итогового балла Ан ASP.NET сайт онлайн-экзамена


iam работает над проектом веб-сайта онлайн-экзамена в asp.net мой стек заключается в том, что я хочу отобразить окончательный счет и процент экзамена я сделал достаточно, чтобы отобразить это, но он показывает окончательный счет = 0 и процент = 0 до сих пор вот мой код, Пожалуйста, помогите мне.... спасибо вам

Что я уже пробовал:

    protected void Page_Load(object sender, EventArgs e)
    {
        SqlCommand com = new SqlCommand("Select * from [Biology]", con);
        SqlDataAdapter da = new SqlDataAdapter(com);
        DataTable dt2 = new DataTable();
        da.Fill(dt2);
        grdquestions.DataSource = dt2;
        grdquestions.DataBind();


    }

    protected void examsubmit_Click(object sender, EventArgs e)
    {
        SqlCommand com = new SqlCommand("Select * from [Biology]", con);
        SqlDataAdapter da = new SqlDataAdapter(com);
        DataTable dt = new DataTable();
        da.Fill(dt);

    int correctAnswers = 0, incorrectAnswers = 0,
    totalMarks = 0, totalQuestions = grdquestions.Rows.Count;

  for (int i = 0; i < totalQuestions; i++)
    {
    GridViewRow row = grdquestions.Rows[i];
    string answer = dt.Rows[i]["Answer"].ToString();
    int marks = Convert.ToInt32(dt.Rows[i]["Marks"]);
    var radioButtons = new List<radiobutton>
    {
        (RadioButton)row.FindControl("rdOption1"),
        (RadioButton)row.FindControl("rdOption2"),
        (RadioButton)row.FindControl("rdOption3"),
        (RadioButton)row.FindControl("rdOption4"),
    };

    foreach (var radioButton in radioButtons)
    {
        if (radioButton.Checked)
        {
            if (radioButton.Text == dt.Rows[i]["Answer"].ToString())
            {
                correctAnswers++;
                totalMarks += marks;
            }
            else
            {
                incorrectAnswers++;
                radioButton.Checked = false;
            }
        }
        else if (radioButton.Text == dt.Rows[i]["Answer"].ToString())
        {
            correctAnswers++;
            radioButton.Checked = true;
            
        }
    }
}

Label2.Text = "FinalScore is :" + totalMarks;

string correctAnswerPercentage = (correctAnswers / totalQuestions).ToString("0.00%");
Label2.Text = "Percentage is "+correctAnswerPercentage;
    }
}

Richard Deeming

Репост
Вы уже опубликовали это сообщение:
https://www.codeproject.com/Questions/1271553/Calculating-percentage-and-score-in-ASP-NET-online[^]

Ответ не изменился за последние два дня!

1 Ответов

Рейтинг:
0

OriginalGriff

Потому что correctAnswers и totalQuestions являются целыми числами, correctAnswers / totalQuestions также будет возвращено целочисленное значение. И с тех пор correctAnswers никогда не может быть больше, чем totalQuestions деление может вернуть только 0 или 1!

Вы могли бы попробовать сделать это:

строка correctAnswerPercentage = (correctAnswers * 100 / totalQuestions).ToString("00%");или это: 
string correctAnswerPercentage = ((float)correctAnswers * 100.0 / (float) totalQuestions).Метод toString("00.0%");


Richard Deeming

Действительно - как Я сказал ему об этом в среду[^].

Приготовьтесь к неизбежному - это не работает." комментарий, за которым последовали два дня молчания и еще один репост того же вопроса.

AhmedHosny96

брат я расстроен этой темой я сделал все советы, которые вы дали, но ничего не работает помогите мне, пожалуйста...?

Richard Deeming

У тебя было два варианта:

1) ответьте на мой комментарий с просьбой предоставить дополнительную информацию;
2) проигнорируйте мой комментарий и опубликуйте новую копию вопроса;

На какой из них вы остановились?

Код в этой новой копии вашего вопроса показывает, что вы даже не пробовали решение, которое я опубликовал.

Если вы не понимаете того, что мы с Гриффом сейчас вам рассказали, то попросите нас объяснить. Не говори просто так "не работать" и уйти от разговора.

AhmedHosny96

ладно, извини за это братан <3

Richard Deeming

Без проблем. :)

AhmedHosny96

хорошо, пожалуйста, каково решение после следования вашему и #Griffs решению, которое все еще показывает 0.0%

Richard Deeming

Я только что ответил на предыдущую тему.

AhmedHosny96

@OriginalGriff bro все еще показывает 0.00% ..?

Patrice T

покажите код, который дает неправильный результат !

Richard Deeming

К вашему сведению: я думаю, что нашел проблему. Нет if (!IsPostBack) { ... } проверьте код привязки данных в разделе Page_Load метод, поэтому ни одна из радиокнопок не будет проверена к тому времени, когда сработает обработчик нажатия кнопки. :)