1.關於乘法測試程序html
程序隨機生成5道三位數乘法和4個順序隨機打亂的答案(其中1個答案是正確答案),並根據用戶選擇進行計分(每題20分)。dom
第一階段:歡迎-輸入用戶名ide
第二階段:5道三位數乘法題測試
(中間步驟略)spa
最後階段:進行判分code
2.ASP代碼部分orm
body標籤內代碼server
<body> <form id="form1" runat="server"> <asp:Wizard ID="wzdQA" runat="server" ActiveStepIndex="0" Height="200px" Width="460px" OnActiveStepChanged="wzdQA_ActiveStepChanged" OnFinishButtonClick="wzdQA_FinishButtonClick" FinishCompleteButtonText="從新開始"> <SideBarStyle BackColor="#99FF99" BorderColor="#3399FF" Width="100px" BorderWidth="2px" BorderStyle="Solid" HorizontalAlign="Center" VerticalAlign="Middle" /> <WizardSteps> <asp:WizardStep runat ="server" ID="wzdsStep0" Title ="歡迎" StepType="Start"> 輸入一個名字開始征程吧 <asp:TextBox runat="server" ID="txtName" Text="北風其涼Tsybius"> </asp:TextBox> </asp:WizardStep> <asp:WizardStep runat ="server" ID="wzdsStep1" Title ="第一題" StepType="Step"> <asp:Label runat="server" ID="lbQuestion1" Text="Question1" /> <hr /> <asp:RadioButton runat="server" ID="rdbQ1A1" Text="Q1A1" GroupName="Q1" /> <asp:RadioButton runat="server" ID="rdbQ1A2" Text="Q1A2" GroupName="Q1" /> <asp:RadioButton runat="server" ID="rdbQ1A3" Text="Q1A3" GroupName="Q1" /> <asp:RadioButton runat="server" ID="rdbQ1A4" Text="Q1A4" GroupName="Q1" /> </asp:WizardStep> <asp:WizardStep runat ="server" ID="wzdsStep2" Title ="第二題" StepType="Step"> <asp:Label runat="server" ID="lbQuestion2" Text="Question2" /> <hr /> <asp:RadioButton runat="server" ID="rdbQ2A1" Text="Q2A1" GroupName="Q2" /> <asp:RadioButton runat="server" ID="rdbQ2A2" Text="Q2A2" GroupName="Q2" /> <asp:RadioButton runat="server" ID="rdbQ2A3" Text="Q2A3" GroupName="Q2" /> <asp:RadioButton runat="server" ID="rdbQ2A4" Text="Q2A4" GroupName="Q2" /> </asp:WizardStep> <asp:WizardStep runat ="server" ID="wzdsStep3" Title ="第三題" StepType="Step"> <asp:Label runat="server" ID="lbQuestion3" Text="Question3" /> <hr /> <asp:RadioButton runat="server" ID="rdbQ3A1" Text="Q3A1" GroupName="Q3" /> <asp:RadioButton runat="server" ID="rdbQ3A2" Text="Q3A2" GroupName="Q3" /> <asp:RadioButton runat="server" ID="rdbQ3A3" Text="Q3A3" GroupName="Q3" /> <asp:RadioButton runat="server" ID="rdbQ3A4" Text="Q3A4" GroupName="Q3" /> </asp:WizardStep> <asp:WizardStep runat ="server" ID="wzdsStep4" Title ="第四題" StepType="Step"> <asp:Label runat="server" ID="lbQuestion4" Text="Question4" /> <hr /> <asp:RadioButton runat="server" ID="rdbQ4A1" Text="Q4A1" GroupName="Q4" /> <asp:RadioButton runat="server" ID="rdbQ4A2" Text="Q4A2" GroupName="Q4" /> <asp:RadioButton runat="server" ID="rdbQ4A3" Text="Q4A3" GroupName="Q4" /> <asp:RadioButton runat="server" ID="rdbQ4A4" Text="Q4A4" GroupName="Q4" /> </asp:WizardStep> <asp:WizardStep runat ="server" ID="wzdsStep5" Title ="第五題" StepType="Step"> <asp:Label runat="server" ID="lbQuestion5" Text="Question5" /> <hr /> <asp:RadioButton runat="server" ID="rdbQ5A1" Text="Q5A1" GroupName="Q5" /> <asp:RadioButton runat="server" ID="rdbQ5A2" Text="Q5A2" GroupName="Q5" /> <asp:RadioButton runat="server" ID="rdbQ5A3" Text="Q5A3" GroupName="Q5" /> <asp:RadioButton runat="server" ID="rdbQ5A4" Text="Q5A4" GroupName="Q5" /> </asp:WizardStep> <asp:WizardStep runat="server" ID="wzdsStepLast" Title="結束" StepType="Finish"> <b><asp:Label runat="server" ID="lblMark" Text="Label"></asp:Label></b> </asp:WizardStep> </WizardSteps> </asp:Wizard> </form> </body>
3.C#代碼部分htm
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page { //隨機數 static Random rand = new Random(); //問題類 private class QA { //問題、答案1-四、正確答案 public string Question, Answer1, Answer2, Answer3, Answer4, CorrectAnswer; /// <summary> /// 建立一個問題 /// </summary> /// <param name="ques">問題</param> /// <param name="ans">四個備選答案(構造問題時會打亂順序)</param> /// <param name="corrans">正確答案</param> public QA(string ques, string[] ans, string corrans) { if (ans.Length != 4) { throw new Exception("答案設置不合法"); } //問題與正確答案 Question = ques; CorrectAnswer = corrans; //四個備選答案的順序 string[] order = new string[] { "0123", "0132", "0213", "0231", "0312", "0321", "1023", "1032", "1203", "1230", "1302", "1320", "2013", "2031", "2103", "2130", "2301", "2310", "3012", "3021", "3102", "3120", "3201", "3210", }; int iChosenOrder = (int)(rand.Next(0, 24)); Answer1 = ans[int.Parse(order[iChosenOrder][0].ToString())]; Answer2 = ans[int.Parse(order[iChosenOrder][1].ToString())]; Answer3 = ans[int.Parse(order[iChosenOrder][2].ToString())]; Answer4 = ans[int.Parse(order[iChosenOrder][3].ToString())]; } } //必需要聲明static不然Wizard控件翻頁後沒法改變值 private static QA[] qa = new QA[5]; protected void Page_Load(object sender, EventArgs e) { } //Wizard控件變化頁面,在首頁時生成一組題目,在末頁時對答題進行判分 protected void wzdQA_ActiveStepChanged(object sender, EventArgs e) { switch (wzdQA.ActiveStep.ID) { case "wzdsStep0": { #region 生成題目 int a, b; string ans1, ans2, ans3, ans4; #region 第一題 a = rand.Next(100, 1000); b = rand.Next(100, 1000); //答案1 ans1 = (a * b).ToString(); //答案2 do { ans2 = (a * b + 10 * rand.Next(-10, 10)).ToString(); } while (ans2 == ans1); //答案3 do { ans3 = (a * b + 10 * rand.Next(-10, 10)).ToString(); } while (ans3 == ans1 || ans3 == ans2); //答案4 do { ans4 = (a * b + 10 * rand.Next(-10, 10)).ToString(); } while (ans4 == ans1 || ans4 == ans2 || ans4 == ans3); qa[0] = new QA( a.ToString() + "*" + b.ToString() + "=?", //題目表述 new string[] { ans1, ans2, ans3, ans4 }, //答案1-4 (a * b).ToString());//正確答案 lbQuestion1.Text = qa[0].Question; rdbQ1A1.Text = qa[0].Answer1; rdbQ1A2.Text = qa[0].Answer2; rdbQ1A3.Text = qa[0].Answer3; rdbQ1A4.Text = qa[0].Answer4; #endregion #region 第二題 a = rand.Next(100, 1000); b = rand.Next(100, 1000); //答案1 ans1 = (a * b).ToString(); //答案2 do { ans2 = (a * b + 10 * rand.Next(-10, 10)).ToString(); } while (ans2 == ans1); //答案3 do { ans3 = (a * b + 10 * rand.Next(-10, 10)).ToString(); } while (ans3 == ans1 || ans3 == ans2); //答案4 do { ans4 = (a * b + 10 * rand.Next(-10, 10)).ToString(); } while (ans4 == ans1 || ans4 == ans2 || ans4 == ans3); qa[1] = new QA( a.ToString() + "*" + b.ToString() + "=?", //題目表述 new string[] { ans1, ans2, ans3, ans4 }, //答案1-4 (a * b).ToString()); //正確答案 lbQuestion2.Text = qa[1].Question; rdbQ2A1.Text = qa[1].Answer1; rdbQ2A2.Text = qa[1].Answer2; rdbQ2A3.Text = qa[1].Answer3; rdbQ2A4.Text = qa[1].Answer4; #endregion #region 第三題 a = rand.Next(100, 1000); b = rand.Next(100, 1000); //答案1 ans1 = (a * b).ToString(); //答案2 do { ans2 = (a * b + 10 * rand.Next(-10, 10)).ToString(); } while (ans2 == ans1); //答案3 do { ans3 = (a * b + 10 * rand.Next(-10, 10)).ToString(); } while (ans3 == ans1 || ans3 == ans2); //答案4 do { ans4 = (a * b + 10 * rand.Next(-10, 10)).ToString(); } while (ans4 == ans1 || ans4 == ans2 || ans4 == ans3); qa[2] = new QA( a.ToString() + "*" + b.ToString() + "=?", //題目表述 new string[] { ans1, ans2, ans3, ans4 }, //答案1-4 (a * b).ToString()); //正確答案 lbQuestion3.Text = qa[2].Question; rdbQ3A1.Text = qa[2].Answer1; rdbQ3A2.Text = qa[2].Answer2; rdbQ3A3.Text = qa[2].Answer3; rdbQ3A4.Text = qa[2].Answer4; #endregion #region 第四題 a = rand.Next(100, 1000); b = rand.Next(100, 1000); //答案1 ans1 = (a * b).ToString(); //答案2 do { ans2 = (a * b + 10 * rand.Next(-10, 10)).ToString(); } while (ans2 == ans1); //答案3 do { ans3 = (a * b + 10 * rand.Next(-10, 10)).ToString(); } while (ans3 == ans1 || ans3 == ans2); //答案4 do { ans4 = (a * b + 10 * rand.Next(-10, 10)).ToString(); } while (ans4 == ans1 || ans4 == ans2 || ans4 == ans3); qa[3] = new QA( a.ToString() + "*" + b.ToString() + "=?", //題目表述 new string[] { ans1, ans2, ans3, ans4 }, //答案1-4 (a * b).ToString()); //正確答案 lbQuestion4.Text = qa[3].Question; rdbQ4A1.Text = qa[3].Answer1; rdbQ4A2.Text = qa[3].Answer2; rdbQ4A3.Text = qa[3].Answer3; rdbQ4A4.Text = qa[3].Answer4; #endregion #region 第五題 a = rand.Next(100, 1000); b = rand.Next(100, 1000); //答案1 ans1 = (a * b).ToString(); //答案2 do { ans2 = (a * b + 10 * rand.Next(-10, 10)).ToString(); } while (ans2 == ans1); //答案3 do { ans3 = (a * b + 10 * rand.Next(-10, 10)).ToString(); } while (ans3 == ans1 || ans3 == ans2); //答案4 do { ans4 = (a * b + 10 * rand.Next(-10, 10)).ToString(); } while (ans4 == ans1 || ans4 == ans2 || ans4 == ans3); qa[4] = new QA( a.ToString() + "*" + b.ToString() + "=?", //題目表述 new string[] { ans1, ans2, ans3, ans4 }, //答案1-4 (a * b).ToString()); //正確答案 lbQuestion5.Text = qa[4].Question; rdbQ5A1.Text = qa[4].Answer1; rdbQ5A2.Text = qa[4].Answer2; rdbQ5A3.Text = qa[4].Answer3; rdbQ5A4.Text = qa[4].Answer4; #endregion #endregion } break; case "wzdsStepLast": { #region 計算得分 int counter = 0; //第一題 if (rdbQ1A1.Checked && rdbQ1A1.Text == qa[0].CorrectAnswer) counter += 20; if (rdbQ1A2.Checked && rdbQ1A2.Text == qa[0].CorrectAnswer) counter += 20; if (rdbQ1A3.Checked && rdbQ1A3.Text == qa[0].CorrectAnswer) counter += 20; if (rdbQ1A4.Checked && rdbQ1A4.Text == qa[0].CorrectAnswer) counter += 20; //第二題 if (rdbQ2A1.Checked && rdbQ2A1.Text == qa[1].CorrectAnswer) counter += 20; if (rdbQ2A2.Checked && rdbQ2A2.Text == qa[1].CorrectAnswer) counter += 20; if (rdbQ2A3.Checked && rdbQ2A3.Text == qa[1].CorrectAnswer) counter += 20; if (rdbQ2A4.Checked && rdbQ2A4.Text == qa[1].CorrectAnswer) counter += 20; //第三題 if (rdbQ3A1.Checked && rdbQ3A1.Text == qa[2].CorrectAnswer) counter += 20; if (rdbQ3A2.Checked && rdbQ3A2.Text == qa[2].CorrectAnswer) counter += 20; if (rdbQ3A3.Checked && rdbQ3A3.Text == qa[2].CorrectAnswer) counter += 20; if (rdbQ3A4.Checked && rdbQ3A4.Text == qa[2].CorrectAnswer) counter += 20; //第四題 if (rdbQ4A1.Checked && rdbQ4A1.Text == qa[3].CorrectAnswer) counter += 20; if (rdbQ4A2.Checked && rdbQ4A2.Text == qa[3].CorrectAnswer) counter += 20; if (rdbQ4A3.Checked && rdbQ4A3.Text == qa[3].CorrectAnswer) counter += 20; if (rdbQ4A4.Checked && rdbQ4A4.Text == qa[3].CorrectAnswer) counter += 20; //第五題 if (rdbQ5A1.Checked && rdbQ5A1.Text == qa[4].CorrectAnswer) counter += 20; if (rdbQ5A2.Checked && rdbQ5A2.Text == qa[4].CorrectAnswer) counter += 20; if (rdbQ5A3.Checked && rdbQ5A3.Text == qa[4].CorrectAnswer) counter += 20; if (rdbQ5A4.Checked && rdbQ5A4.Text == qa[4].CorrectAnswer) counter += 20; //輸出成績 lblMark.Text = txtName.Text + " 的成績爲:" + counter.ToString() + "(" + ( counter < 60 ? "不及格" : ( counter == 60 ? "及格" : ( counter == 80 ? "良好" : ( counter == 100 ? "優秀" : "" )))) + ")"; #endregion } break; default: break; } } //完成按鈕,回到第一步,至關於從新開始一輪遊戲 protected void wzdQA_FinishButtonClick(object sender, WizardNavigationEventArgs e) { wzdQA.ActiveStepIndex = 0; } }
END遊戲