设计思路:

       因为TabControl可以设置不同页的选项卡。所以我用它来分页,进行出题,答题设置。然后用savefiledialog保存所出题目。设置两个RichTextBox保存所出题目和出好题后做题时显示的题目。用Count计算做题总数,Right计算做正确的数目。点击结束时弹出Form对话框显示做题情况。

具体实现代码:

Form1.cs

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Windows.Forms;
  9 using System.IO;
 10 
 11 namespace sum
 12 {
 13     public partial class Form1 : Form
 14     {
 15         public Form1()
 16         {
 17             InitializeComponent();
 18         }
 19      //   bool bFileName = false;                    //标记文本框内容是否被命名
 20         string fileName;                           //存储当前文件的名字
 21         public static int Count = 0;               //计算所做的题数
 22         public static int Right = 0;               //回答正确的题数
 23         public static double answer;
 24         int i;
 25         public void SaveTofile()                   //保存所出题目的方法
 26         {
 27             sfd.InitialDirectory = "C\\";               //设置保存默认目录
 28             sfd.Filter = "txt files(*.txt)|*.txt|all files(*.*)|*.*";
 29             sfd.FilterIndex = 1;                       //默认保存类型为txt
 30             sfd.RestoreDirectory = true;
 31             if (sfd.ShowDialog() == DialogResult.OK)
 32             {
 33                 richTextBox1.SaveFile(sfd.FileName, RichTextBoxStreamType.PlainText);
 34                fileName = sfd.FileName;
 35              //  bFileName = true;
 36             }
 37         }
 38        
 39         private void button1_Click(object sender, EventArgs e)  //把所出题目保存在txt文档中
 40         {
 41             StreamWriter stw1 = File.AppendText("number1.txt");
 42             stw1.WriteLine(textBox1.Text);
 43             stw1.Close();
 44             StreamWriter stw2 = File.AppendText("number2.txt");
 45             stw2.WriteLine(textBox2.Text);
 46             stw2.Close();
 47             StreamWriter stw3 = File.AppendText("number3.txt");
 48             stw3.WriteLine(textBox3.Text);
 49             stw3.Close();
 50             richTextBox1.Text += textBox1.Text + textBox2.Text + textBox3.Text + textBox4.Text + "" + "\n";
 51             textBox1.Clear();
 52             textBox2.Clear();
 53             textBox3.Clear();
 54         }
 55 
 56         private void save_Click(object sender, EventArgs e) //保存
 57         {
 58             SaveTofile();
 59             MessageBox.Show("保存成功!");
 60            
 61         }
 62 
 63         private void button2_Click(object sender, EventArgs e)  //打开
 64         {
 65 
 66             richTextBox2.Text = richTextBox1.Text;
 67         }
 68 
 69         private void write_Click(object sender, EventArgs e)
 70         {
 71             string[] one = new string[100];
 72             one = File.ReadAllLines("number1.txt");
 73             textBox5.Text = one[0];
 74             string[] two = new string[100];
 75            two = File.ReadAllLines("number2.txt");
 76             textBox6.Text =two[0];
 77             string[] three = new string[100];
 78             three = File.ReadAllLines("number3.txt");
 79             textBox7.Text = three[0];
 80            
 81         }
 82 
 83         private void textBox8_KeyDown(object sender, KeyEventArgs e)
 84         {
 85             Class1 cs = new Class1();
 86             cs.X = double.Parse(textBox5.Text);
 87             cs.Y = double.Parse(textBox7.Text);
 88             cs.result = answer;
 89             string opera = textBox6.Text;
 90             cs.opera = opera;
 91             cs.Add();                         //调用Class1的Add方法;
 92             cs.Min();                        //调用Class1的Min方法;
 93             cs.Mul();                        //调用Class1的Mul方法;             
 94             cs.Div();                        //调用Class1的Div方法;
 95             if (e.KeyCode == Keys.Enter)
 96             {
 97                 if (textBox8.Text == cs.result.ToString())
 98                 {
 99                     MessageBox.Show("回答正确");
100                     Count++;
101                     Right++;
102                 }
103                 else
104                 {
105                     MessageBox.Show("回答错误");
106                     Count++;
107                 }
108                 i++;
109                 textBox8.Clear();
110                 string[] one = new string[100];
111                 one = File.ReadAllLines("number1.txt");
112                 textBox5.Text = one[i];
113                 string[] two = new string[100];
114                 two = File.ReadAllLines("number2.txt");
115                 textBox6.Text = two[i];
116                 string[] three = new string[100];
117                 three = File.ReadAllLines("number3.txt");
118                 textBox7.Text = three[i];
119                 if (one.Count() == i)
120                 {
121                     Form2 frm = new Form2();
122                     frm.ShowDialog();
123                 }
124             }
125         }
126         
127 
128         private void button4_Click(object sender, EventArgs e)
129         {
130             Form2 frm2 = new Form2();
131             frm2.ShowDialog();
132         }
133 
134         private void button3_Click(object sender, EventArgs e)   //退出程序
135         {
136             Application.Exit();
137         }
138 
139             }
140         }
141 
142 
143       

Form2.cs

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Windows.Forms;
 9 
10 namespace sum
11 {
12     public partial class Form2 : Form
13     {
14         public Form2()
15         {
16             InitializeComponent();
17         }
18 
19         private void Form2_Load(object sender, EventArgs e)
20         {
21              textBox1.Text = Form1.Count.ToString();
22             textBox2.Text = Form1.Right.ToString();
23             textBox3.Text = ((Form1.Right / (double)(Form1.Count)) * 100).ToString() + "%";
24         }
25 
26     }
27 }

代码封装:Class1.cs

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace sum
 7 {
 8     class Class1
 9     {
10         private double x;   //定义x变量;
11        
12         public double X  //封装字段
13         {
14             get { return x; } 
15             set { x = value; }
16 
17         }
18         private double y;  //定义y变量
19 
20 
21         public double Y        //封装字段
22         {
23             get { return y; }
24             set { y = value; }
25 
26         }
27         public string opera = "";  //运算符号
28         public double result;      //计算结果
29         public void Add()          //加法
30         {
31             if (opera == "+")
32             {
33                 result = X + Y;
34             }
35         }
36         public void Min()              //减法
37         {
38             if (opera == "-")
39             {
40                 result = X - Y;
41             }
42         }
43         public void Mul()             //乘法
44         {
45             if (opera == "*")
46             {
47                 result = X * Y;
48             }
49         }
50         public void Div()          //除法
51         {
52             if (opera == "/")
53             {
54                 result = X / Y;
55             }
56         }
57        
58     }
59 }

Form1.cs调用封装代码:

 

 1  private void textBox8_KeyDown(object sender, KeyEventArgs e)
 2         {
 3             Class1 cs = new Class1();
 4             cs.X = double.Parse(textBox5.Text);
 5             cs.Y = double.Parse(textBox7.Text);
 6             cs.result = answer;
 7             string opera = textBox6.Text;
 8             cs.opera = opera;
 9             cs.Add();                         //调用Class1的Add方法;
10             cs.Min();                        //调用Class1的Min方法;
11             cs.Mul();                        //调用Class1的Mul方法;             
12             cs.Div();                        //调用Class1的Div方法;
13             if (e.KeyCode == Keys.Enter)
14             {
15                 if (textBox8.Text == cs.result.ToString())
16                 {
17                     MessageBox.Show("回答正确");
18                     Count++;
19                     Right++;
20                 }
21                 else
22                 {
23                     MessageBox.Show("回答错误");
24                     Count++;
25                 }
26                 i++;
27                 textBox8.Clear();
28                 string[] one = new string[100];
29                 one = File.ReadAllLines("number1.txt");
30                 textBox5.Text = one[i];
31                 string[] two = new string[100];
32                 two = File.ReadAllLines("number2.txt");
33                 textBox6.Text = two[i];
34                 string[] three = new string[100];
35                 three = File.ReadAllLines("number3.txt");
36                 textBox7.Text = three[i];
37                 if (one.Count() == i)
38                 {
39                     Form2 frm = new Form2();
40                     frm.ShowDialog();
41                 }
42             }
43         }
44         

 

 

 

运行过程:

保存所出题目

保存成功

运算

结束运算

总结:

       这次做题虽然遇到很多困难,欣慰的是我还是坚持把它做完了。经过这次编程深感自己平时练习太少,知识面不广,所以我以后要多加练习,多多敲代码。

posted on 2015-11-28 15:32  紫色蔷薇ˇ  阅读(261)  评论(1编辑  收藏  举报