三层架构

运行界面:

数据库保存的题:

业务逻辑层:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data.SqlClient;
using System.Data;
namespace WpfApplication1
{
    class Class5
    {
        public string str = @"Data Source=.;Initial Catalog=四则运算;Integrated Security=True;Pooling=False";
        public SqlConnection sqlcon = new SqlConnection();
        public SqlDataAdapter sda = new SqlDataAdapter();
        public DataSet ds = new DataSet();
        public DataTable dt = new DataTable();
        public void dbcon()
        {
            try
            {
                sqlcon = new SqlConnection(str);

            }
            catch (Exception ex)
            {
                MessageBox.Show("数据链接不成功" + ex.Message);
            }
        }
        public void dakai()
        {
            sqlcon.Open();
        }
        public void guanbi()
        {
            sqlcon.Close();
        }
        public void Charu(string comstr)
        {
            SqlCommand comm = new SqlCommand(comstr, sqlcon);
            try
            {
                int a = comm.ExecuteNonQuery();
                if (a > 0)
                {
                    MessageBox.Show("出题成功!");
                }
                else
                {
                    MessageBox.Show("出题失败!");
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }
        }
        public void Shanchu(string comstr)//删除数据!
        {
            SqlCommand comm = new SqlCommand(comstr, sqlcon);
            int a = comm.ExecuteNonQuery();
            if (a > 0)
            {
                MessageBox.Show("删除失败!");
            }
            else
            {
                MessageBox.Show("删除成功!");
            }
        }
        public void Read(string comstr)//读取数据!
        {
            sda = new SqlDataAdapter(comstr, sqlcon);
            sda.Fill(ds);
            dt = ds.Tables[0];

        }
    }
}

  数据访问层:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data.SqlClient;
using System.Data;
namespace WpfApplication1
{
    class Class6
    {
        public string x1;
        public string x2;
        public string x3;
        public string x4;
        public string x5;
        public string x6;
        public string x7;
        public string x8;
        Class5 C5 = new Class5();
        public void ChuTi()
        {
           
            C5.dbcon(); 
            C5.dakai();
            string sqltr = "insert into Table2(第一个数,符号,第二个数) values('" + x1 + "','" + x2 + "','" + x3 + "')";
            C5.Charu(sqltr);
            C5.guanbi();
        }
        public void ShanChu()
        {
           
            C5.dbcon();
            C5.dakai();
            string sqltr = "delete from Table2";
            C5.Shanchu(sqltr);
            C5.guanbi();          
        }
        public void JiSuan()
        {           
            int i = int.Parse(x4);
            C5.dbcon(); 
            C5.dakai();
            string sqltr = "select * from Table2 ";
            C5.Read(sqltr);           
            x5 = C5.dt.Rows[i][0].ToString();
            x6 = C5.dt.Rows[i][1].ToString();
            x7 = C5.dt.Rows[i][2].ToString();
            C5.guanbi();            
        }
        public void DaoRu()
        {
            C5.dbcon();
            C5.dakai();
            string sqltr = "select * from Table2 ";
            C5.Read(sqltr);
            for (int i = 0; i < C5.dt.Rows.Count; i++)
            {
                C5.dt.Rows[i][0].ToString();
                C5.dt.Rows[i][1].ToString();
                C5.dt.Rows[i][2].ToString();
                x8 += C5.dt.Rows[i][0].ToString().Trim() + C5.dt.Rows[i][1].ToString().Trim() + C5.dt.Rows[i][2].ToString().Trim() + "
";
            }
            C5.guanbi();
        }
        public void jisuan(string str,int a,int b,string c)
        {
            Cacule oper = new Cacule();
            oper = OperationFactory.CreateOperate(str);
            oper.NumberA = a;
            oper.NumberB = b;
            double result = oper.Result();
            if (c  == result.ToString())
                {
                    MessageBox.Show("回答正确");
                    
                }
                else
                {
                    MessageBox.Show("回答错误");
                }
                c = "";            
        }
    }    
        
}

  计算类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WpfApplication1
{ 
    public  class Cacule
     {
         public double NumberA{get;set;}
         public double NumberB{get;set;}

         public virtual double Result()
         {
              double result = 0;
              return result;
         }
     }
     class Add:Cacule
     {
        public override double Result()
        {
             double result = 0;
             result= NumberA + NumberB;
             return result;
         }
     }
     class Sub:Cacule
     {
        public override double Result()
         {
             double result = 0;
             result = NumberA - NumberB;
             return result;
         }
     }
     class Multi:Cacule
    {
        public override double Result()
         {
             double result = 0;
             result = NumberA * NumberB;
             return result;
         }
    }
    class Div:Cacule
     {
        public override double Result()
         {
                double result = 0;
                result = NumberA / NumberB;
                return result;
             }
        }
     }
 
 
  工厂类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WpfApplication1
{
    public class OperationFactory
     {
        public static Cacule CreateOperate(string operate)
          {
             Cacule ca = null;
             switch (operate)
              {
                 case "+":
                      ca = new Add();
                     break;
                case "-":
                     ca = new Sub();
                    break;
                case "*":
                    ca = new Multi();
                    break;
                case "/":
                    ca = new Div();
                    break;
                 default:
                    break;
             }
             return ca;
        }
    }
 }

  计算类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WpfApplication1
{ 
    public  class Cacule
     {
         public double NumberA{get;set;}
         public double NumberB{get;set;}

         public virtual double Result()
         {
              double result = 0;
              return result;
         }
     }
     class Add:Cacule
     {
        public override double Result()
        {
             double result = 0;
             result= NumberA + NumberB;
             return result;
         }
     }
     class Sub:Cacule
     {
        public override double Result()
         {
             double result = 0;
             result = NumberA - NumberB;
             return result;
         }
     }
     class Multi:Cacule
    {
        public override double Result()
         {
             double result = 0;
             result = NumberA * NumberB;
             return result;
         }
    }
    class Div:Cacule
     {
        public override double Result()
         {
                double result = 0;
                result = NumberA / NumberB;
                return result;
             }
        }
     }
 

表现层:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data.SqlClient;
using System.Data;

namespace WpfApplication1
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        public static int Count = 0;
        public static int zhengque = 0;
        public static int lefttime;
        public static int sum;
        Class6 sj = new Class6();
        private void button1_Click(object sender, RoutedEventArgs e)
        {

            sj.x1 = left.Text;
            sj.x2 = fuhao.Text;
            sj.x3 = right.Text;
            sj.ChuTi();
            string str = fuhao.Text;
            Cacule oper = new Cacule();
            oper = OperationFactory.CreateOperate(str);
            oper.NumberA = double.Parse(left.Text);
            oper.NumberB = double.Parse(right.Text);
            double result = oper.Result();
            daan1.Text += result + "
";          
            left.Clear();
            fuhao.Clear();
            right.Clear();
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            sj.ShanChu();
          
        }

        private void button4_Click(object sender, RoutedEventArgs e)
        {
             sj.x4=textBox5.Text;
             textBox1.Text= sj.x5;
             textBox2.Text=  sj.x6;
             textBox3.Text=sj.x7 ;
             sj.JiSuan();
           
        }

        private void button5_Click(object sender, RoutedEventArgs e)
        {
            if (daan1.Text == "显示答案")
            {
                daan1.Visibility = Visibility.Visible;
                daan1.Text = "隐藏答案";
            }
            else if (daan1.Text == "隐藏答案")
            {
                daan1.Visibility = Visibility.Hidden;
                daan1.Text = "显示答案";

            }
        }

        private void button3_Click(object sender, RoutedEventArgs e)
        {
            textBox6.Text = sj.x8;
            sj.DaoRu();
        }

        private void textBox4_KeyDown(object sender, KeyEventArgs e)
        {
            
            string st = textBox2.Text;
            int x1 = int.Parse(textBox1.Text);
            int x2 = int.Parse(textBox3.Text);
            string x3 = textBox4.Text;
            if(e.Key==Key.Enter)
            sj.jisuan(st,x1,x2,x3);
                 
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            shujuku sj = new shujuku();
        }       
    }
}

  

原文地址:https://www.cnblogs.com/daidaide/p/5053676.html