数据库实现,以及工厂方法模式实现
计算类的定义
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace SQL
{interface operater1{int calculate(int a, int b);}class Add : operater1{public int calculate(int a, int b){return a + b;}}class Sub : operater1{public int calculate(int a, int b){return a - b;}}class Mul : operater1{public int calculate(int a, int b){return a * b;}}class Div : operater1{public int calculate(int a, int b){if (b == 0){throw new Exception("除数不能为零!");}else{return a / b;}}}
}
工厂方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace SQL
{interface Ifact//建一个工厂接口{operater1 CreatrOper();}class Addfactory : Ifact//加法工厂{public operater1 CreatrOper(){return new Add();}}class Subfactory : Ifact//减法工厂{public operater1 CreatrOper(){return new Sub();}}class Mulfactory : Ifact//乘法工厂{public operater1 CreatrOper(){return new Mul();}}class Divfactory : Ifact//除法工厂{public operater1 CreatrOper(){return new Div();}}
}
具体的调用
using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace SQL {class Factory1{private Ifact fact;private operater1 oper1;public Factory1(string operation){switch (operation){case "+":fact = new Addfactory();oper1 = fact.CreatrOper();break;case "-":fact = new Subfactory();oper1 = fact.CreatrOper();break;case "*":fact = new Mulfactory();oper1 = fact.CreatrOper();break;case "/":fact = new Divfactory();oper1 = fact.CreatrOper();break;}}public int claations(int a, int b){return oper1.calculate(a, b);}} }
数据库的操作的类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Data; using System.Windows.Forms;namespace SQL {class DB{public string strCon = @"Data Source=.;Initial Catalog=Tiku;Integrated Security=True";public SqlConnection sqlcon = new SqlConnection();public SqlDataAdapter sda = new SqlDataAdapter();public DataSet ds = new DataSet();public DataTable dt = new DataTable();public string number1;public string operation;public string number2;public int i;public void dbcon()//链接数据库 {try{sqlcon = new SqlConnection(strCon);}catch (Exception e){MessageBox.Show("数据库连接失败请重新链接:" + e.ToString());}}public void del(string sltstr)//删除所有题 {dbcon();sqlcon.Open();SqlCommand sqlcom = new SqlCommand(sltstr, sqlcon);sqlcom.ExecuteNonQuery();MessageBox.Show("删除成功,请继续编题!");}public void dbinser(string inster)//插入数据存题 {sqlcon = new SqlConnection(strCon);sqlcon.Open();SqlCommand sqlcom=new SqlCommand(inster ,sqlcon);try{int a = sqlcom.ExecuteNonQuery();if (a > 0){MessageBox.Show("保存成功!");}}catch (Exception e){MessageBox.Show("保存失败!" + e.ToString());}}public void Reader(string sltstr)//读题的方法 {sqlcon = new SqlConnection(strCon);sqlcon.Open();SqlCommand sqlcom = new SqlCommand(sltstr, sqlcon);sda = new SqlDataAdapter(sqlcom);sda.Fill(ds);dt=ds.Tables[0];if (i <dt.Rows.Count){number1 = dt.Rows[i][0].ToString().Trim();operation = dt.Rows[i][1].ToString().Trim();number2 = dt.Rows[i][2].ToString().Trim();if (i == (dt.Rows.Count - 1)){MessageBox.Show("你的题做完了,去休息吧!一会我们继续!");}}i++;}} }
数据库的建立
form的设计及代码
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 SQL {public partial class Form1 : Form{public Form1(){InitializeComponent();}DB db = new DB();private void button1_Click(object sender, EventArgs e){string inter = "insert into Ti(number1,operation,number2) values('" + textBox1.Text + "','" + comboBox1.Text + "','" + textBox2.Text + "')";db.dbinser(inter);textBox1.Clear();textBox2.Clear();}private void button2_Click(object sender, EventArgs e){string sltstr = @"truncate table Ti";//清除表中数据 db.del(sltstr);}private void button3_Click(object sender, EventArgs e){Form2 fa = new Form2();fa.ShowDialog();}} }
form的代码及设计
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 SQL {public partial class Form2 : Form{public Form2(){InitializeComponent();}public static int right;public static int count;DB db = new DB();private void button1_Click(object sender, EventArgs e){duti();}private void textBox3_KeyDown(object sender, KeyEventArgs e){if (e.KeyCode == Keys.Enter){int a = int.Parse(textBox1.Text);int b = int.Parse(textBox2.Text);Factory1 factory = new Factory1(label1.Text);int answer = factory.claations(a, b);if (textBox3.Text == answer.ToString()){MessageBox.Show("回答正确!");right++;}else{MessageBox.Show("回答错误!");}count++;textBox3.Clear();duti();} }private void button2_Click(object sender, EventArgs e){Form3 fds = new Form3();fds.ShowDialog();}private void duti(){string sltstr = @"select number1,operation,number2 from Ti";db.Reader(sltstr);textBox1.Text = db.number1;textBox2.Text = db.number2;label1.Text = db.operation;}} }
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;namespace SQL {public partial class Form3 : Form{public Form3(){InitializeComponent();}private void Form3_Load(object sender, EventArgs e){textBox1.Text = Form2.right.ToString();textBox2.Text = (Form2.count - Form2.right).ToString();textBox3.Text = ((Form2.right / (double)(Form2.count)) * 100).ToString() + "%";}private void button1_Click(object sender, EventArgs e){this.Close();}} }
测试
总结:写这程序用了很长时间,建库,进行代码的编写,等等。但是在写工厂方法模式中有些好奇为什么感觉没有策咯模式那么好用!
转载于:https://www.cnblogs.com/lizanqirxx/p/5036752.html
数据库实现,以及工厂方法模式实现相关推荐
- 工厂方法模式和抽象工厂模式
工厂方法模式和抽象工厂模式 工厂方法模式 抽象工厂模式 总结: 工厂方法模式 #include <string> #include <iostream>// Abstract ...
- 设计模式之工厂类模式总结对比、简单工厂模式、工厂方法模式、抽象工厂模式、带反射的工厂模式、例子代码分析、最详细
1. 题目 假设某公司同时用SqlServer.MySql数据库,即会切换两数据库(不同数据库的sql语句有些许差异),同时,两数据库里均有对Users.Departments表的操作(sql代码不一 ...
- 工厂方法模式(Factory Method)
简单工厂(静态工厂方法) 简单工厂实际上不算一种模式,可以把它叫做一种常用写法.例如我们常用的数据库操作,为了适配不同的数据库引擎,可能分别编写了具体的数据库操作类(当然这些类都实现了统一的接口): ...
- 设计模式 | 工厂方法模式及典型应用
工厂方法模式 工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定将哪一个类实例化.工厂方法模式让一个类的实例化延迟到其子类. 工厂方法模式又简称为工厂 ...
- 进阶学习(3.2)Factory Method Pattern 工厂方法模式
1 类的实例化不在工厂接口里面实例化, 而是在工厂子类里面实例化 2 使用者无需关注子类工厂里面的逻辑是怎么写的, 只需要知道我调用的这个方法能实 现什么功能, 我不管具体实现 3 需要添加新功 ...
- 《JAVA与模式》之工厂方法模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述工厂方法模式的: 工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymor ...
- 最简单java设计模式:工厂方法模式
前言 在前一篇文章讲解了一下简单工厂模式,在上篇文章中,我们也讲到了简单工厂模式的缺点,就是不满足开闭原则,这对于软件的设计来说,是不太好的,而下面讲解的工厂方法模式,正是为了弥补简单工厂模式的缺点, ...
- 北风设计模式课程---2、工厂方法模式
北风设计模式课程---2.工厂方法模式 一.总结 一句话总结: 工厂方法模式相对于简单工厂模式只是修改了 [工厂核心类-将它变成接口],具体的创建产品的工作交给[工厂核心类的子类] 满足了开闭原则:不 ...
- Java设计模式 之 工厂方法模式
1. 使用设计模式的好处:可提高代码的重复性,让代码更容易被他人理解,保证代码的可靠性. 2. 工厂模式定义:就是创建一个工厂类来创建你需要的类,工厂模式包括工厂模式和抽象工厂模式,抽象工厂模式是工厂 ...
最新文章
- 原生JS修改html内容不影响绑定的点击事件 请认准insertAdjacentHTML、insertAdjacentText方法
- 如何实现DataGridView实时更新数据【Z】
- 两个数据集,本地可以关联,正式库关联不了
- windows系统改装为linux系统_Linux怎么克隆系统?备份系统跟Windows系统有区别吗?...
- git团队如何提交_如何使您的提交消息很棒并保持团队快乐
- springboot_通过Actuator了解应用程序运行时的内部状况
- TikZ绘图示例——尺规作图: 圆内接正五边形的近似画法
- Ubuntu安装minicom串口工具
- [CodeForces - 276A] Lunch Rush
- AMPL在Matlab上的一个简单Demo
- pytorch 中文手册
- jquery判断select的选中 selected
- RAC 11.2.0.3 LISTENER异常终止
- 阿里云Oss搭建私人图床
- 吴军 阅读与写作50讲 02 如何读懂作者的内心 读后感
- 季冠携“闪星服务”受邀参加2021连锁企业轻资产论坛
- qt中的enter键
- Android 跑马灯的方法
- 数据结构——二叉树总结
- 利用Python实现视频号自动赚钱一条龙
热门文章
- java加载自己写的类_java 自定义类加载器从磁盘或网络加载类
- python类中init_Python类中的__init__() 和 self 的解析
- java没有释放内存_java – G1年轻的GC没有释放内存 – 空间耗尽
- php引用下级目录文件夹,使用PHP遍历文件夹与子目录的函数代码
- php js date 格式化,javascript date格式化示例_javascript技巧
- 冷却水的循环方式有哪几种_关于钣金件常用的连接方式,你知道下列的哪几种...
- python职业发展方向_测试的职业发展方向有哪些?该如何规划?
- php session写入数据库_php session 写入数据库,phpsession
- eclipse maven项目 class类部署不到tomcat下_Spring Boot的两种部署方式:jar包和war包
- vuecli打包后的dist目录无法访问_听说很多人都不会打包,教你Python实现前端自动化打包部署!...