三个数混合运算和三层架构

1,数据访问层

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace SQL1
{
    class DB1//数据访问层!
    { 

        public SqlConnection conn = new SqlConnection();
        public  DataSet ds = new DataSet();
        public DataTable dt = new DataTable();
        public SqlDataAdapter sda = new SqlDataAdapter();
        public void dbcon(string constr)//连接数据库!
        {
            try
            {
                conn = new SqlConnection(constr);
            }
            catch(Exception e)
            {
                MessageBox.Show("数据库连接失败!" +e.ToString());
            }

        }
        public void opens()//打开数据库!
        {
            conn.Open();
        }
        public void closes()//关闭数据库!
        {
            conn.Close();
        }
        public void Inster(string comstr)//插入数据!
        {
            SqlCommand comm = new SqlCommand(comstr,conn);
            try
            {
                int a = comm.ExecuteNonQuery();
                if (a > 0)
                {
                    MessageBox.Show("保存成功!");
                }
                else
                {
                    MessageBox.Show("保存失败!");
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }

        }
        public void Read(string comstr)//读取数据!
        {
            sda = new SqlDataAdapter(comstr, conn);
            sda.Fill(ds);
            dt = ds.Tables[0];

        }
        public void del(string comstr)//删除数据!
        {
            SqlCommand comm = new SqlCommand(comstr,conn);
            int a = comm.ExecuteNonQuery();
            if (a > 0)
            {
                MessageBox.Show("删除失败!");
            }
            else
            {
                MessageBox.Show("删除成功!");
            }
        }
    }
}

2,业务逻辑层

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

namespace SQL1
{

    class DB2//业务逻辑层
    {
        DB1 db1 = new DB1();
        public string number1;
        public string number2;
        public string number3;
        public string operation1;
        public string operation2;
        private int i = 0;
        string constr = "Data Source=.;Initial Catalog=Tiku1;Integrated Security=True";
        public void lianjie()//连接数据库!
        {
            db1.dbcon(constr);
        }
        public void charu(string a, string f1, string b, string f2, string c)//插入数据!
        {
            lianjie();
            string comstr = @"insert into Ti(number1,operation1,number2,operation2,number3) values(‘" + a + "‘,‘" + f1 + "‘,‘" + b + "‘,‘"+f2+"‘,‘"+c+"‘)";
            db1.opens();
            db1.Inster(comstr);
            db1.closes();
        }
        public void duqu(string comstr)//读出题
        {
            lianjie();
            db1.Read(comstr);
            if (i < db1.dt.Rows.Count)
            {
                number1 = db1.dt.Rows[i][0].ToString().Trim();
                operation1 = db1.dt.Rows[i][1].ToString().Trim();
                number2 = db1.dt.Rows[i][2].ToString().Trim();
                operation2 = db1.dt.Rows[i][3].ToString().Trim();
                number3 = db1.dt.Rows[i][4].ToString().Trim();
                if (i == (db1.dt.Rows.Count - 1))
            {
                MessageBox.Show("你的题做完了,去休息吧!一会我们继续!");
            }

            }
            i++;

        }
        public void qingchu(string sltstr)//清除题库
        {
            lianjie();
            db1.opens();
            db1.del(sltstr);
            db1.closes();

        }
        public void jisuan(double a, string operation1,double b, string operation2,double c, string rightanswer)
        {
            bool aa = false;
            if (operation1 == "+" || operation1 == "-")
            {
                if (operation2 == "*" || operation2 == "/")
                {
                    aa = true;
                }
                else
                {
                    aa = false;
                }

            }
            else
            {
                aa = false;
            }
            if (aa == true)
            {
                Factionsss fass = new Factionsss(operation2);
                double answer1 = fass.cal(b, c);
                fass = new Factionsss(operation1);
                double answer = fass.cal(a, answer1);
                if (rightanswer == answer.ToString())
                {
                    MessageBox.Show("回答正确!");
                }
                else
                {
                    MessageBox.Show("回答错误!");
                }

            }
            else
            {
                Factionsss fas = new Factionsss(operation1);
                double ans = fas.cal(a, b);
                fas = new Factionsss(operation2);
                double answer = fas.cal(ans, c);
                if (rightanswer == answer.ToString())
                {
                    MessageBox.Show("回答正确!");
                }
                else
                {
                    MessageBox.Show("回答错误!");
                }

            }

        }

    }
}

3,表现层代码

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 SQL1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        DB2 db2 = new DB2();

        private void button1_Click(object sender, EventArgs e)
        {

            db2.charu(textBox1.Text, comboBox1.Text, textBox2.Text, comboBox2.Text, textBox3.Text);
            textBox1.Clear();
            textBox2.Clear();
            textBox3.Clear();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string sltstr = @"truncate table Ti";//清除表中数据
            db2.qingchu(sltstr);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            Form2 fas = new Form2();
            fas.ShowDialog();
        }
    }
}

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;

namespace SQL1
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        DB2 db = new DB2();
        private void button1_Click(object sender, EventArgs e)
        {
            chuti();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void textBox4_KeyDown(object sender, KeyEventArgs e)
        {
            double a = double.Parse(textBox1.Text);
            double b = double.Parse(textBox2.Text);
            double c = double.Parse(textBox3.Text);
            string operation1 = label1.Text;
            string operation2 = label2.Text;
            if (e.KeyCode == Keys.Enter)
            {
                db.jisuan(a, operation1, b, operation2, c, textBox4.Text);
                textBox4.Clear();
                chuti();
            }

        }

        private void Form2_Load(object sender, EventArgs e)
        {
            chuti();
        }

        private void chuti()
        {
            string comstr = @"select  number1,operation1,number2,operation2,number3  from Ti";
            db.duqu(comstr);
            textBox1.Text = db.number1;
            textBox2.Text = db.number2;
            textBox3.Text = db.number3;
            label1.Text = db.operation1;
            label2.Text = db.operation2;

        }
    }
}

4, 计算类以及策略模式的实现

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

namespace SQL1
{
    interface Iation//定义计算接口
    {
        double Calation(double a, double b);
    }
    class Add : Iation//加法
    {
        public double Calation(double  a, double b)
        {
            return a + b;
        }
    }
    class Sub : Iation//减法
    {
        public double Calation(double a, double b)
        {
            return a - b;
        }
    }
    class Mul : Iation//乘法
    {
        public double Calation(double a, double b)
        {
            return a * b;
        }
    }
    class Div : Iation//除法
    {
        public double Calation(double a, double b)
        {
            if (b == 0)
            {
                throw new Exception("除数不能为零!");
            }
            else
            {
                return a / b;
            }
        }
    }
    class Factionsss//实现策略模式!
    {
        private Iation clation;
        public Factionsss(string operation)
        {
            switch (operation)
            {
                case "+":
                    clation = new Add();
                    break;
                case "-":
                    clation = new Sub();
                    break;
                case "*":
                    clation = new Mul();
                    break;
                case "/":
                    clation = new Div();
                    break;
            }

        }
        public double cal(double a, double b)
        {
            return clation.Calation(a, b);
        }

    }
}

5,测试

6.总结:

不知道这样写属不属于三成架构,我倒目前为止是这样理解的!也请老师指正一下!???

时间: 2024-11-05 09:20:14

三个数混合运算和三层架构的相关文章

四个数混合运算,数据库存题,程序集构建三层建构

1.Model类 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Model { public class TIModel { private string number1; private string number2; private string number3; private string number4; private string ope

三则混合运算下的取模

取模的一个简单性质:加法,减法,乘法,以及三则的混合运算在过程中取模与算出最终结果取模结果一样 这个性质使一些超出long long 的数据便于被记录存储并运算: 首先用string s ; cin >> s;来写入数据,读成字符串之后虽然进行了记录,但并不能很方便地进行运算与使用, 这时使用for()循环,一点点读取字符串,并对每一步的结果都进行取模,则可 顺利将很大的数据转化为一个可以用int 或 long long 存储的数据 如下题代码(红点标记的两行)就是利用了过程与结果取模一致这个

JAVA集锦(三)--Model1、Model2、三层架构的华丽转变

JAVA,对Model1.Model2两个架构的掌握是必不可少的.下面我们一起见证一下从Model1到Model2(MVC)再 到典型三层架构的华丽转变过程. Model1架构 简单来讲,Model1是以JSP为核心实现的.jsp页面独自响应客户端请求并将处理结果返回给客户,在JSP页面 中结合了业务逻辑.服务端处理过程和HTML等,这样就在JSP页面中同时实现了业务逻辑和流程控制从而快速开 发. 优点 架构简单,  开发速度快,适合小型项目开发. 缺点 JSP职责过重,违反了职责单一原则 JS

iOS中的图像处理(三)——混合运算

有时候,单独对一张图像进行处理是很难或者根本达不到我们想要的效果的.一个好的滤镜效果的诞生,往往要经过很多复杂步骤.细致微调.图片应用效果观察以及很多图层叠加. 我在JSWidget上发现了一些常用混合算法,对应着一些常用混合模式,通过这些blend modes,我们可以指定两张图像如何混合. 不过在此之前,我们需要纯颜色图像和渐变图像来做辅助: [cpp] view plaincopy + (UIImage *)imageWithColor:(UIColor *)color size:(CGS

软件的三层架构

全然看不懂 基于软件三层架构的研究报告 引言 三层结构是传统的客户/server结构的发展,代表了企业级应用的未来,典型的有Web下的应用.多层结构和三层结构的含义是一样的,仅仅是细节有所不同.之所以会有双层.三层这些提法,是由于应用程序要解决三个层面的问题. 一.  软件架构和分层 (一)  软件架构(software architecture) 是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计. 软件架构是一个系统的草图.软件架构描写叙述的对象是直接构成系统的抽象组件.各个组件之间

从头开始做一个OA项目(三) 关于三层架构思想

下面就开始一步一步的搭建我们的项目三层架构,自从微软的PetShop推出以来,似乎它就成了三层的代名词.在国内.Net界几乎所有的项目都是根据PetShop来搭建三层架构,甚至我还见过一些项目直接就把它的架构拷贝过来,一丝未改.直接使用.在搭建之前,为了便于还未接触过三层的同学了解.我们先把三层架构的基本概念解释一下.我们先来思考一个场景.我们大家都去过饭店吃饭,那么大家回忆一下我们吃饭的流程是个什么样子呢?如下图所示. 当我们推开饭店的大门,马上就会迎来一个笑容可掬的服务员,她会忙着招待我们,

企业级应用框架(三)三层架构之数据访问层的改进以及测试DOM的发布

在上一篇我们在宏观概要上对DAL层进行了封装与抽象.我们的目的主要有两个:第一,解除BLL层对DAL层的依赖,这一点我们通过定义接口做到了:第二,使我们的DAL层能够支持一切数据访问技术,如Ado.net,EF,linq To Sql,这一点我们实现的不是很完美,仍有很大的改进空间,本文将加以改进. 在此之前我们来看一下我们最新的dom(PS:经过两天的赶工,我们的dom已经相对成熟,其中BLL层已经被我高度抽象化了,并且引进了业务上文文的概念:DAL层除了具体的技术实现尚为完成,其他方面已经相

简单的web三层架构系统【第三版】

今天是第三版,和前几天一样今天还是要对代码进行优化,三层架构是一种思想,具体能不能使得整个系统安全和高性能,还是要看代码编写的是否合理,逻辑性是否严谨. 昨天偶然间看到别人写的三层架构中,竟然没有在方法中传递单个参数,而是直接声明了一个对象整体的当传参.最后上网查,发现原来是在系统里多加了一层,叫做模型层,就是用来在系统的各层之间传递数据的,这样就避免了为一个方法传递多个参数现象. 具体深入的模型层使用还在学习当中,今天就用学到的一点简单的模型层知识,对代码进行再一次优化. 首相先建立一个模型层

第三百零二节,三层架构讲解

第三百零二节,三层架构讲解 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(Presentation layer).业务逻辑层(Business Logic Layer).数据访问层(Data access layer).区分层次的目的即为了"高内聚低耦合"的思想.在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构.微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层.业务逻辑层(又或称为领域层).表示层.