【年少的风】C#小学生算式×××2
測試面板對應(yīng)的代碼如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data.SqlClient;
namespace BriansApplication1
{
??? public partial class TestPaper : Form
??? {
??????? int nTest = 0;
??????? int NTEST = 0;
??????? int page = -1;
??????? int count = 0;
??????? string id = null;
??????? Login login = new Login();
??????? int flagcount = 0;
??????? int[] key = new int[1000];
??????? string keys = null;
??????? string question = null;
??????? string answer = null;
??????? Register register = new Register();
???????
??????? public TestPaper()
??????? {
??????????? InitializeComponent();
??????? }
??????? public TestPaper(string id)
??????? {
??????????? InitializeComponent();
??????????? this.id = id;
??????? }
??????? public void TestPaper_Load(object sender, EventArgs e)
??????? {
??????????? #region label處理
??????????? Label[] label = new Label[10];
??????????? label[0] = label1;
??????????? label[1] = label2;
??????????? label[2] = label3;
??????????? label[3] = label4;
??????????? label[4] = label5;
??????????? label[5] = label6;
??????????? label[6] = label7;
??????????? label[7] = label8;
??????????? label[8] = label9;
??????????? label[9] = label10;
??????????? for (int i = 0; i < 10; i++)
??????????? {
??????????????? label[i].Visible = false;
??????????? }
??????????? TextBox[] testbox = new TextBox[10];
??????????? testbox[0] = textBox1;
??????????? testbox[1] = textBox2;
??????????? testbox[2] = textBox3;
??????????? testbox[3] = textBox4;
??????????? testbox[4] = textBox5;
??????????? testbox[5] = textBox6;
??????????? testbox[6] = textBox7;
??????????? testbox[7] = textBox8;
??????????? testbox[8] = textBox9;
??????????? testbox[9] = textBox10;
??????????? for (int i = 0; i < 10; i++)
??????????? {
??????????????? testbox[i].Visible = false;
??????????? }
??????????? #endregion
?????????? // MessageBox.Show("login.tbID.Text:" + id);
??????? }
??????? static int GetRandomSeed()
??????? {
??????????? byte[] bytes = new byte[4];
??????????? System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider();
??????????? rng.GetBytes(bytes);
??????????? return BitConverter.ToInt32(bytes, 0);
??????? }
??????? private void btExit_Click(object sender, EventArgs e)
??????? {
??????????? #region label處理
??????????? Label[] label = new Label[10];
??????????? label[0] = label1;
??????????? label[1] = label2;
??????????? label[2] = label3;
??????????? label[3] = label4;
??????????? label[4] = label5;
??????????? label[5] = label6;
??????????? label[6] = label7;
??????????? label[7] = label8;
??????????? label[8] = label9;
??????????? label[9] = label10;
??????????? TextBox[] testbox = new TextBox[10];
??????????? testbox[0] = textBox1;
??????????? testbox[1] = textBox2;
??????????? testbox[2] = textBox3;
??????????? testbox[3] = textBox4;
??????????? testbox[4] = textBox5;
??????????? testbox[5] = textBox6;
??????????? testbox[6] = textBox7;
??????????? testbox[7] = textBox8;
??????????? testbox[8] = textBox9;
??????????? testbox[9] = textBox10;
??????????? #endregion
??????????? if (page >= 0)
??????????? {
??????????????? for (int i = 0; i < 10 && i < nTest; i++)
??????????????? {
??????????????????? answer += testbox[i].Text + "#";
??????????????? }
??????????????? MessageBox.Show(answer);
??????????? }
??????????? string mysqltest, mystr;
??????????? SqlConnection myconn = new SqlConnection();
??????????? SqlCommand mycmd = new SqlCommand();
??????????? mystr = "Data Source=.\\SQLEXPRESS;Initial Catalog=Student;Integrated Security=True";
??????????? myconn.ConnectionString = mystr;
??????????? myconn.Open();
??????????? mysqltest = string.Format("update student set answer='{0}' where id='{1}'", answer, id);
??????????? mycmd.CommandText = mysqltest;
??????????? mycmd.Connection = myconn;
??????????? try
??????????? {
??????????????? mycmd.ExecuteReader();
??????????? }
??????????? catch
??????????? {
??????????????? MessageBox.Show("插入失敗1");
??????????? }
??????????? myconn.Close();
??????????? this.Dispose();
??????? }
??????? private void btPageDown_Click(object sender, EventArgs e)
??????? {
??????????? #region label處理
??????????? Label[] label = new Label[10];
??????????? label[0] = label1;
??????????? label[1] = label2;
??????????? label[2] = label3;
??????????? label[3] = label4;
??????????? label[4] = label5;
??????????? label[5] = label6;
??????????? label[6] = label7;
??????????? label[7] = label8;
??????????? label[8] = label9;
??????????? label[9] = label10;
??????????? for (int i = 0; i < 10; i++)
??????????? {
??????????????? label[i].Visible = false;
??????????? }
??????????? TextBox[] testbox = new TextBox[10];
??????????? testbox[0] = textBox1;
??????????? testbox[1] = textBox2;
??????????? testbox[2] = textBox3;
??????????? testbox[3] = textBox4;
??????????? testbox[4] = textBox5;
??????????? testbox[5] = textBox6;
??????????? testbox[6] = textBox7;
??????????? testbox[7] = textBox8;
??????????? testbox[8] = textBox9;
??????????? testbox[9] = textBox10;
??????????? for (int i = 0; i < 10; i++)
??????????? {
??????????????? testbox[i].Visible = false;
??????????? }
??????????? #endregion
??????????? flagcount++;
??????????? nTest -= 10;
??????????? if (page >= 0)
??????????? {
??????????????? for (int i = 0; i < 10 && i < nTest; i++)
??????????????? {
??????????????????? answer += testbox[i].Text + "#";
??????????????? }
??????????????? MessageBox.Show(answer);
??????????? }
??????????? page++;
???????????
??????????????? for (int i = 0; i < 10 && i < nTest; i++)
??????????????? {
??????????????????? if (page == 0)
??????????????????? {
??????????????????????? this.btPageUp.Enabled = false;
??????????????????? }
??????????????????? else
??????????????????? {
??????????????????????? this.btPageUp.Enabled = true;
??????????????????? }
??????????????????? label[i].Visible = true;
??????????????????? testbox[i].Visible = true;
??????????????????? if (nTest < 10)
??????????????????? {
??????????????????????? this.btPageDown.Enabled = false;
??????????????????? }
??????????????????? else
??????????????????? {
??????????????????????? this.btPageDown.Enabled = true;
??????????????????? }
??????????????? }
??????????? string testback = null;
??????????? string answerback = null;
??????????? SqlConnection conn = new SqlConnection();
??????????? SqlCommand cmd = new SqlCommand();
??????????? string str = "Data Source=.\\SQLEXPRESS;Initial Catalog=Student;Integrated Security=True";
??????????? conn.ConnectionString = str;
??????????? conn.Open();
??????????? string temp = string.Format("select test from student where id='{0}'", id);
??????????? cmd.CommandText = temp;
??????????? cmd.Connection = conn;
??????????? try
??????????? {
??????????????? SqlDataReader read1 = cmd.ExecuteReader();
?????????????? // SqlDataReader read2 = cmd.ExecuteReader();
??????????????? while (read1.Read())
??????????????? {
??????????????????? try
??????????????????? {
??????????????????????? testback += read1.GetString(0);
?????????????????????? // answerback += read2.GetString(0);
??????????????????? }
??????????????????? catch
??????????????????? {
??????????????????????? MessageBox.Show("CHUCUOWU 1");
??????????????????? }
??????????????? }
??????????? }
??????????? catch (SqlException ea)
??????????? {
??????????????? MessageBox.Show(ea.Message);
??????????? }
??????????? conn.Close();
??????????? MessageBox.Show("testback:" + testback);
??????????? conn.Open();
??????????? temp = string.Format("select answer from student where id='{0}'", id);
??????????? cmd.CommandText = temp;
??????????? cmd.Connection = conn;
??????????? try
??????????? {
??????????????? //SqlDataReader read1 = cmd.ExecuteReader();
???????????????? SqlDataReader read2 = cmd.ExecuteReader();
??????????????? while (read2.Read())
??????????????? {
??????????????????? try
??????????????????? {
??????????????????????? //testback += read1.GetString(0);
???????????????????????? answerback += read2.GetString(0);
??????????????????? }
??????????????????? catch
??????????????????? {
??????????????????????? MessageBox.Show("CHUCUOWU 2");
??????????????????? }
??????????????? }
??????????? }
??????????? catch (SqlException ea)
??????????? {
??????????????? MessageBox.Show(ea.Message);
??????????? }
??????????? conn.Close();
???????????
??????????? try
??????????? {
??????????????? string[] questionback = testback.Split('#');
??????????????? string[] answer1 = answerback.Split('#');
??????????????? for (int i = 1; i <= 10 && i <= nTest; i++)
??????????????? {
??????????????????? count = page * 10 + i;
??????????????????? MessageBox.Show(count.ToString() + nTest.ToString() + i.ToString() + page.ToString());
??????????????????? label[i - 1].Text = count.ToString() + "、" + questionback[count-1];
??????????????????? testbox[i - 1].Text = answer1[count - 1];
??????????????? }
??????????????
??????????? }
??????????? catch
??????????? {
??????????????? MessageBox.Show("answerback:" + answerback);
??????????????? MessageBox.Show(count.ToString() + nTest.ToString() + page.ToString());
??????????? }
???????????
???????????
??????? }
??????? private void btCreate_Click(object sender, EventArgs e)
??????? {
??????????? //this.btCreate.Enabled = false;
??????????????? try
??????????????? {
??????????????????? nTest = Convert.ToInt32(tbCount.Text);
??????????????????? NTEST = nTest;
??????????????????? nTest += 10;
??????????????????? lbAmount.Text = tbCount.Text;
??????????????? }
??????????????? catch
??????????????? {
??????????????????? MessageBox.Show("請正確輸入試題數(shù)量!");
??????????????????? return;
??????????????? }
??????????? #region 生產(chǎn)試題
??????????? string[] str = new string[NTEST];
??????????? int[] countTest = new int[NTEST];
??????????? for (int i = 0; i < NTEST; i++)
??????????? {
??????????????? countTest[i] = new Random(GetRandomSeed()).Next(2, 5);
??????????? }
??????????? for (int k = 0; k < NTEST; k++)
??????????? {
??????????????? int[] num = new int[countTest[k]];
??????????????? char[] ops = new char[countTest[k] - 1];
??????????????? for (int i = 0; i < countTest[k]; i++)
??????????????? {
??????????????????? num[i] = new Random(GetRandomSeed()).Next(1, 100);
??????????????? }
??????????????? for (int i = 0; i < countTest[k] - 1; i++)
??????????????? {
??????????????????? int a = new Random(GetRandomSeed()).Next(1, 100);
??????????????????? switch (a % 4)
??????????????????? {
??????????????????????? case 0: ops[i] = '+'; break;
??????????????????????? case 1: ops[i] = '-'; break;
??????????????????????? case 2: ops[i] = '*'; break;
??????????????????????? case 3: ops[i] = '/';break;
??????????????????????? default: ops[i] = '+'; break;
??????????????????? }
??????????????? }
??????????????? for (int i = 0; i < countTest[k] - 1; i++)
??????????????? {
??????????????????? str[k] += num[i].ToString() + ops[i];
??????????????? }
??????????????? str[k] =str[k] + num[countTest[k] - 1];
??????????????? question += str[k] + "#";
??????????????? key[k] = Calculate(str[k]);
??????????????? keys += key[k] + "#";
??????????? }
??????????? #endregion
??????????? // MessageBox.Show(question);
??????????? #region 存入數(shù)據(jù)庫
??????????? string mysqltest, mystr;
??????????? SqlConnection myconn = new SqlConnection();
??????????? SqlCommand mycmd = new SqlCommand();
??????????? mystr = "Data Source=.\\SQLEXPRESS;Initial Catalog=Student;Integrated Security=True";
??????????? myconn.ConnectionString = mystr;
??????????? myconn.Open();
??????????? mysqltest = string.Format("update student set test='{0}',testcount='{1}',result='{2}' where id='{3}'", question, NTEST ,keys,ToString(), id);
??????????? mycmd.CommandText = mysqltest;
??????????? mycmd.Connection = myconn;
??????????? try
??????????? {
??????????????? mycmd.ExecuteReader();
??????????? }
??????????? catch
??????????? {
??????????????? MessageBox.Show("插入失敗0");
??????????? }
??????????? myconn.Close();
??????????? #endregion
??????????? btPageDown_Click(sender, e);
??????? }
??????? private void btPageUp_Click(object sender, EventArgs e)
??????? {
#region lable處理
??????????? Label[] label = new Label[10];
??????????? label[0] = label1;
??????????? label[1] = label2;
??????????? label[2] = label3;
??????????? label[3] = label4;
??????????? label[4] = label5;
??????????? label[5] = label6;
??????????? label[6] = label7;
??????????? label[7] = label8;
??????????? label[8] = label9;
??????????? label[9] = label10;
??????????? for (int i = 0; i < 10; i++)
??????????? {
??????????????? label[i].Visible = false;
??????????? }
??????????? TextBox[] testbox = new TextBox[10];
??????????? testbox[0] = textBox1;
??????????? testbox[1] = textBox2;
??????????? testbox[2] = textBox3;
??????????? testbox[3] = textBox4;
??????????? testbox[4] = textBox5;
??????????? testbox[5] = textBox6;
??????????? testbox[6] = textBox7;
??????????? testbox[7] = textBox8;
??????????? testbox[8] = textBox9;
??????????? testbox[9] = textBox10;
??????????? for (int i = 0; i < 10; i++)
??????????? {
??????????????? testbox[i].Visible = false;
??????????? }
#endregion
??????????? page--;
??????????? nTest += 10;
??????????? for (int i = 0; i < 10 && i <= nTest; i++)
??????????? {
??????????????? if (page == 0)
??????????????? {
??????????????????? this.btPageUp.Enabled = false;
??????????????? }
??????????????? else
??????????????? {
??????????????????? this.btPageUp.Enabled = true;
??????????????? }
??????????????? label[i].Visible = true;
??????????????? testbox[i].Visible = true;
??????????????? if (nTest < 10)
??????????????? {
??????????????????? this.btPageDown.Enabled = false;
??????????????? }
??????????????? else
??????????????? {
??????????????????? this.btPageDown.Enabled = true;
??????????????? }
??????????? }
???????????
??????????? string testback = null;
??????????? SqlConnection conn = new SqlConnection();
??????????? SqlCommand cmd = new SqlCommand();
??????????? string str = "Data Source=.\\SQLEXPRESS;Initial Catalog=Student;Integrated Security=True";
??????????? conn.ConnectionString = str;
??????????? conn.Open();
??????????? string temp = string.Format("select test from student where id='{0}'", id);
??????????? cmd.CommandText = temp;
??????????? cmd.Connection = conn;
??????????? try
??????????? {
??????????????? SqlDataReader read = cmd.ExecuteReader();
??????????????? while (read.Read())
??????????????? {
??????????????????? testback += read.GetString(0);
??????????????? }
??????????? }
??????????? catch(SqlException ea)
??????????? {
??????????????? MessageBox.Show(ea.Message);
??????????? }
??????????? string[] questionback = testback.Split('#');
??????????? for (int i = 1; i <= 10; i++)
??????????? {
??????????????? count = page * 10 + i;
??????????????? label[i - 1].Text = count.ToString() + "、" + questionback[count-1];
??????????? }
??????? }
??????? private void btCurrent_Click(object sender, EventArgs e)
??????? {
??????? }
??????? private void btContinue_Click(object sender, EventArgs e)
??????? {
??????????? tbCount.Enabled = false;
??????????? SqlConnection myconn = new SqlConnection();
??????????? SqlCommand mycmd = new SqlCommand();
??????????? string mystr = "Data Source=.\\SQLEXPRESS;Initial Catalog=Student;Integrated Security=True";
??????????? myconn.ConnectionString = mystr;
??????????? myconn.Open();
??????????? string mysqltest = string.Format("select testcount from student where id='{0}'",id);
??????????? mycmd.CommandText = mysqltest;
??????????? mycmd.Connection = myconn;
??????????? try
??????????? {
??????????????? SqlDataReader read = mycmd.ExecuteReader();
??????????????? while (read.Read())
??????????????? {
??????????????????? nTest = read.GetInt32(0) + 10;
??????????????????? NTEST = nTest;
??????????????????? lbAmount.Text = (nTest - 10).ToString();
??????????????? }
??????????? }
??????????? catch
??????????? {
??????????????? MessageBox.Show("獲取失敗");
??????????? }
??????????? myconn.Close();
??????????? btPageDown_Click(sender, e);
??????? }
???????
??????? static int Calculate(string Expression)
??????? {
??????????? List<int> numList = new List<int>();//運算數(shù)字列表
??????????? List<char> OperatorList = new List<char>();//運行符列表
??????????? bool numState = true;//true:表示剛遇到符號
??????????? int num = 0;
??????????? char[] expression = Expression.ToCharArray();
??????????? for (int i = 0; i < expression.Length; i++)
??????????? {
??????????????? if (Convert.ToInt16(expression[i]) > 58 || Convert.ToInt16(expression[i]) < 48)
??????????????? {
??????????????????? switch (expression[i])
??????????????????? {
??????????????????????? case '+':
??????????????????????????? numState = true;
??????????????????????????? numList.Add(num);
??????????????????????????? break;
??????????????????????? case '-':
??????????????????????????? numState = true;
??????????????????????????? numList.Add(num);
??????????????????????????? break;
??????????????????????? case '*':
??????????????????????????? numState = true;
??????????????????????????? numList.Add(num);
??????????????????????????? break;
??????????????????????? case '/':
??????????????????????????? numState = true;
??????????????????????????? numList.Add(num);
??????????????????????????? break;
??????????????????????? default: throw new Exception("表達式不正確,含有未知字符!");
??????????????????? }
??????????????????? OperatorList.Add(expression[i]);
??????????????? }
??????????????? else if (numState)
??????????????? {
??????????????????? num = Convert.ToInt16(expression[i].ToString());
??????????????????? if (i == expression.Length - 1)
??????????????????????? numList.Add(num);
??????????????????? numState = false;
??????????????? }
??????????????? else
??????????????? {
??????????????????? num *= 10; num += Convert.ToInt16(expression[i].ToString());
??????????????????? if (i == expression.Length - 1)
??????????????????????? numList.Add(num);
??????????????? }
??????????? }
??????????? return getResults(numList, OperatorList);
??????? }
??????? static int getResults(List<int> numList, List<char> OperatorList)
??????? {
??????????? if (numList.Count == 1)
??????????????? return numList[0];
??????????? List<int> numList1 = new List<int>();
??????????? numList1.Add(numList[0]);
??????????? List<char> OperatorList1 = new List<char>();
??????????? for (int i = 0; i < OperatorList.Count; i++)
??????????? {
??????????????? if (OperatorList[i] == '+' || OperatorList[i] == '-')
??????????????? {
??????????????????? numList1.Add(numList[i + 1]);
??????????????????? OperatorList1.Add(OperatorList[i]);
??????????????? }
??????????????? else if (OperatorList[i] == '*')
??????????????? {
??????????????????? numList1[numList1.Count - 1] *= numList[i + 1];
??????????????? }
??????????????? else if (OperatorList[i] == '/')
??????????????? {
??????????????????? if (numList[i + 1] != 0)
??????????????????? {
??????????????????????? numList1[numList1.Count - 1] /= numList[i + 1];
??????????????????? }
??????????????????? else
??????????????????????? break;
??????????????? }
??????????? }
??????????? int results = numList1[0];
??????????? for (int i = 0; i < OperatorList1.Count; i++)
??????????? {
??????????????? if (OperatorList1[i] == '+')
??????????????????? results += numList1[i + 1];
??????????????? else results -= numList1[i + 1];
??????????? }
??????????? return results;
??????? }
??? }
}
轉(zhuǎn)載于:https://blog.51cto.com/huamm/1049979
總結(jié)
以上是生活随笔為你收集整理的【年少的风】C#小学生算式×××2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到抱着骨灰盒是什么意思
- 下一篇: 【转】【天道酬勤】 腾讯、百度、网易游戏