标签:
1、已经无语,我添加了正则表达式分割从txt文件 读取到的字符串。借我朋友的书《大话设计模式 》,感觉作者真乃神人也。第一章就简单明了的介绍了工厂模式,刚好遇到老师这个作业,幸运哈。
2、代码如下
业务逻辑---
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace jisuan
{
public class Operation
{
private double numberA = 0;
private double numberB = 0;
public double NumberA
{
get{return numberA;}
set { numberA = value; }
}
public double NumberB
{
get { return numberB; }
set { numberB = value; }
}
public virtual double GetResult()
{
double result = 0;
return result;
}
}
class OperationAdd : Operation
{
public override double GetResult()
{
double result = 0;
result = NumberA + NumberB;
return result;
}
}
class OperationSub : Operation
{
public override double GetResult()
{
double result = 0;
result = NumberA - NumberB;
return result;
}
}
class OperationMul : Operation
{
public override double GetResult()
{
double result = 0;
result = NumberA * NumberB;
return result;
}
}
class OperationDiv : Operation
{
public override double GetResult()
{
double result = 0;
if(NumberB==0)
{
throw new Exception("除数不能为0");
}
result = NumberA / NumberB;
return result;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace jisuan
{
public class OperationFactory
{
public static Operation createOperate(string operate)
{
Operation oper = null;
switch (operate)
{
case "+":
oper = new OperationAdd();
break;
case "-":
oper = new OperationSub();
break;
case "*":
oper = new OperationMul();
break;
case "/":
oper = new OperationDiv();
break;
}
return oper;
}
}
}
界面逻辑
form1
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace jisuan
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form3 ff = new Form3();
ff.Show();
}
private void button2_Click(object sender, EventArgs e)
{
Form2 ff = new Form2();
ff.Show();
}
}
}
form2
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Text.RegularExpressions;
namespace jisuan
{
public partial class Form2 : Form
{
public int i;
public static int shijian = 0;
public static int count;
public static int right;
public Form2()
{
InitializeComponent();
}
string path = @"D:\\计算存储.txt";
OperationFactory oo = new OperationFactory();
private void Form2_Load(object sender, EventArgs e)
{
StreamReader sr = new StreamReader(path,Encoding.Default);
richTextBox1.Text = sr.ReadToEnd();
sr.Close();
}
private void button1_Click(object sender, EventArgs e)
{
duqu();
textBox3.Text = shijian.ToString();
timer1.Enabled = true;
timer1.Interval = 1000;
timer1.Start();
}
private void textBox2_KeyDown(object sender, KeyEventArgs e)
{
string xx = textBox1.Text;
string ss = @"(\d+)(\S+)+(\d+)";
Match mast = Regex.Match(xx, ss);
///这正则表达式无解了
int strNumberA = int.Parse(mast.Groups[1].Value);
string strNumberC = mast.Groups[2].Value;
int strNumberB = int.Parse(mast.Groups[3].Value);
Operation oper;
oper = OperationFactory.createOperate(strNumberC);
oper.NumberA = Convert.ToDouble(strNumberA);
oper.NumberB = Convert.ToDouble(strNumberB);
double result = oper.GetResult();
Console.Write("你的结果为" + result);
if(e.KeyCode==Keys.Enter)
{
if (textBox2.Text == result.ToString())
{
MessageBox.Show("正确");
right++;
}
else
{
MessageBox.Show("错误");
}
duqu();
}
}
public void duqu()
{
string[] line = File.ReadAllLines(path);
if (i < line.Length)
{
textBox1.Text = line[i];
textBox2.Text = "";
}
else
{
MessageBox.Show("已经做完");
this.Close();
}
i++;
count++;
}
private void timer1_Tick(object sender, EventArgs e)
{
shijian = shijian + 1;
textBox3.Text = shijian.ToString();
}
private void button2_Click(object sender, EventArgs e)
{
timer1.Enabled=false;
textBox2.Enabled = false;
this.Close();
Form4 ff = new Form4();
ff.Show();
}
}
}
form3
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Text.RegularExpressions;
namespace jisuan
{
public partial class Form2 : Form
{
public int i;
public static int shijian = 0;
public static int count;
public static int right;
public Form2()
{
InitializeComponent();
}
string path = @"D:\\计算存储.txt";
OperationFactory oo = new OperationFactory();
private void Form2_Load(object sender, EventArgs e)
{
StreamReader sr = new StreamReader(path,Encoding.Default);
richTextBox1.Text = sr.ReadToEnd();
sr.Close();
}
private void button1_Click(object sender, EventArgs e)
{
duqu();
textBox3.Text = shijian.ToString();
timer1.Enabled = true;
timer1.Interval = 1000;
timer1.Start();
}
private void textBox2_KeyDown(object sender, KeyEventArgs e)
{
string xx = textBox1.Text;
string ss = @"(\d+)(\S+)+(\d+)";
Match mast = Regex.Match(xx, ss);
///这正则表达式无解了
int strNumberA = int.Parse(mast.Groups[1].Value);
string strNumberC = mast.Groups[2].Value;
int strNumberB = int.Parse(mast.Groups[3].Value);
Operation oper;
oper = OperationFactory.createOperate(strNumberC);
oper.NumberA = Convert.ToDouble(strNumberA);
oper.NumberB = Convert.ToDouble(strNumberB);
double result = oper.GetResult();
Console.Write("你的结果为" + result);
if(e.KeyCode==Keys.Enter)
{
if (textBox2.Text == result.ToString())
{
MessageBox.Show("正确");
right++;
}
else
{
MessageBox.Show("错误");
}
duqu();
}
}
public void duqu()
{
string[] line = File.ReadAllLines(path);
if (i < line.Length)
{
textBox1.Text = line[i];
textBox2.Text = "";
}
else
{
MessageBox.Show("已经做完");
this.Close();
}
i++;
count++;
}
private void timer1_Tick(object sender, EventArgs e)
{
shijian = shijian + 1;
textBox3.Text = shijian.ToString();
}
private void button2_Click(object sender, EventArgs e)
{
timer1.Enabled=false;
textBox2.Enabled = false;
this.Close();
Form4 ff = new Form4();
ff.Show();
}
}
}
form4---
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace jisuan
{
public partial class Form4 : Form
{
public Form4()
{
InitializeComponent();
}
private void Form4_Load(object sender, EventArgs e)
{
textBox1.Text = Form2.shijian.ToString();
textBox2.Text = Form2.right.ToString();
textBox3.Text = Form2.count.ToString();
textBox4.Text =((Form2.right/(double)(Form2.count))*100).ToString()+"%";
textBox5.Text = ((Form2.right / (double)(Form2.shijian)) * 100).ToString() + "%";
}
}
}
运行效果如下-----






好了,结束哈
标签:
原文地址:http://www.cnblogs.com/mctianyou/p/4993158.html