zoukankan      html  css  js  c++  java
  • 计算器

    刚开始对封装还是不熟悉,自己在电脑搞了可长时间还是不太好,又请教的别人,让人家帮忙做出来的,虽然过程很艰辛,不过自己也在进步,计算器做的还不算完美,自己在下面完善吧,加油!
    一、封装:

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

    namespace jisuanqi
    {
    public abstract class Calculator //抽象类 Calculator
    {
    public abstract double Cal(double a, double b); //抽象方法Cal
    }
    public class Add : Calculator //派生类Add继承抽象类Calculator
    {
    public override double Cal(double a, double b)//并重写了抽象方法Cal
    {
    double result = 0;
    result = a + b;
    return result;
    }
    }
    }
    public class Sub : Calculator
    {
    public override double Cal(double a, double b)
    {
    double result = 0;
    result = a - b;
    return result;
    }
    }
    public class Mul : Calculator
    {
    public override double Cal(double a, double b)
    {
    double result = 0;
    result = a * b;
    return result;
    }
    }
    public class Div : Calculator
    {
    public override double Cal(double a, double b)
    {
    double result = 0;
    result = a / b;
    return result;
    }
    }
    public class Every
    {
    private Calculator calculate = null;//实例化一个基类的引用对象
    public Every(Calculator _cal)//_cal为派生类的一个对象
    {
    this.calculate = _cal; //把派生类的对象赋给基类的引用对象
    }
    public double Cal(double a, double b, String C)
    {
    return this.calculate.Cal(a, b);//返回计算结果
    }
    }


    二、代码编写

    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;

    namespace jisuanqi
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    string path = "E: tf";
    public static int Count = 0;
    public static int zq = 0;
    public static int lt;
    public static int time;
    public static int sum;
    int i = 1;

    public static String AddC = "+";
    public static String SubC = "-";
    public static String MulC = "*";
    public static String DivC = "/";


    private void Form1_Load(object sender, EventArgs e)
    {
    if (File.Exists(path))
    {
    this.richTextBox1.LoadFile(path, RichTextBoxStreamType.RichText);
    open.Enabled = false;
    }
    save.Enabled = false;
    }
    private void open_Click(object sender, EventArgs e)    //打开文件的方法
    {
    OpenFileDialog TxTOpenDialog = new OpenFileDialog();
    TxTOpenDialog.Filter = "(*.txt)|*.txt";
    if (TxTOpenDialog.ShowDialog() == DialogResult.OK)
    {
    path = TxTOpenDialog.FileName;
    this.richTextBox1.LoadFile(TxTOpenDialog.FileName, RichTextBoxStreamType.RichText);
    save.Enabled = false;
    open.Enabled = false;
    MessageBox.Show("读取成功", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
    }
    }

    private void save_Click(object sender, EventArgs e)     //保存文件的方法
    {
    SaveFileDialog TxtSaveDialog = new SaveFileDialog();
    TxtSaveDialog.Filter = "(*.txt)|*.txt";
    if (File.Exists(path))
    {

    this.richTextBox1.LoadFile(path, RichTextBoxStreamType.RichText);
    MessageBox.Show("保存成功", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
    richTextBox1.Clear();
    save.Enabled = false;
    }
    else
    {
    if (TxtSaveDialog.ShowDialog() == DialogResult.OK)
    {

    this.richTextBox1.SaveFile(TxtSaveDialog.FileName, RichTextBoxStreamType.RichText);
    MessageBox.Show("保存成功", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
    richTextBox1.Clear();
    save.Enabled = false;
    }

    }

    }
    private void richTextBox1_TextChanged(object sender, EventArgs e)
    {

    save.Enabled = true;
    if (this.richTextBox1.Text == "" || this.richTextBox1.Text == null)
    {
    open.Enabled = true;
    }
    }
    public void bianxie()   //编写试题的方法
    {
    left.Text = "";
    fuhao.Text = "";
    right.Text = "";
    }
    private void open2_Click(object sender, EventArgs e)    //打开试题的方法
    {
    OpenFileDialog TxTOpenDialog = new OpenFileDialog();
    TxTOpenDialog.Filter = "(*.txt)|*.txt";
    if (TxTOpenDialog.ShowDialog() == DialogResult.OK)
    {
    path = TxTOpenDialog.FileName;
    this.richTextBox2.LoadFile(TxTOpenDialog.FileName, RichTextBoxStreamType.RichText);
    save.Enabled = false;
    open.Enabled = false;
    MessageBox.Show("导入成功", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
    }
    }


    private void daan1_Click(object sender, EventArgs e)
    {
    if (daan1.Text == "显示答案")
    {
    daan.PasswordChar = Convert.ToChar(0);
    daan1.Text = "隐藏答案";
    }
    else if (daan1.Text == "隐藏答案")
    {
    daan.PasswordChar = '.';
    daan1.Text = "显示答案";

    }
    }

    private void kaishi_Click(object sender, EventArgs e)
    {

    string[] ll = new string[100];
    ll = File.ReadAllLines("writer.txt");
    textBox1.Text = ll[0];

    string[] lli = new string[100];
    lli = File.ReadAllLines("writer1.txt");
    textBox2.Text = lli[0];

    string[] llp = new string[100];
    llp = File.ReadAllLines("writer2.txt");
    textBox3.Text = llp[0];


    int minute;
    try
    {
    minute = int.Parse(this.shijian.Text);
    }
    catch (System.Exception ex)
    {
    this.shijian1.Text = "输入错误";
    return;
    }
    lt = minute;
    this.timer1.Interval = 1000;
    this.timer1.Enabled = true;
    this.timer1.Start();

    }

    private void timer1_Tick(object sender, EventArgs e)
    {
    if (lt <= 0)
    {
    timer1.Enabled = false;
    MessageBox.Show("答题时间到!");

    }
    this.shijian1.Text = "剩余时间" + lt.ToString() + "秒";
    lt--;
    }


    private void button1_Click(object sender, EventArgs e) //请编辑下道题的事件
    {
    Count++;
    ti.Text = Count.ToString();
    StreamWriter writer = File.AppendText("writer.txt");
    writer.WriteLine(left.Text);
    writer.Close();
    StreamWriter writer1 = File.AppendText("writer1.txt");
    writer1.WriteLine(fuhao.Text);
    writer1.Close();
    StreamWriter writer2 = File.AppendText("writer2.txt");
    writer2.WriteLine(right.Text);
    writer2.Close();
    richTextBox1.Text += left.Text + fuhao.Text + right.Text + label2.Text + "" + " ";


    //string f = fuhao.Text;
    //switch (f)
    //{
    //case "+":
    //sum = int.Parse(left.Text) + int.Parse(right.Text);
    //bianxie();

    //break;
    //case "-":
    //sum = int.Parse(left.Text) - int.Parse(right.Text);
    //bianxie();
    //break;
    //case "×":
    //sum = int.Parse(left.Text) * int.Parse(right.Text);
    //bianxie();
    //break;
    //case "÷":
    //sum = int.Parse(left.Text) / int.Parse(right.Text);
    //bianxie();
    //break;
    //default:
    //break;
    //}

    left.Clear();
    right.Clear();
    }

    private void textBox4_KeyDown(object sender, KeyEventArgs e)
    {
    double a = double.Parse(left.Text);
    string C = fuhao.Text;
    double b = double.Parse(right.Text);
    Every every = null;
    if (C.Equals(AddC))
    {
    every = new Every(new Add());
    }
    else if (C.Equals(SubC))
    {
    every = new Every(new Sub());
    }
    else if (C.Equals(MulC))
    {
    every = new Every(new Mul());
    }
    else if (C.Equals(DivC))
    {
    every = new Every(new Div());
    }
    string answer = every.Cal(a, b, C).ToString();

    if (e.KeyCode == Keys.Enter)
    {
    string result = left.Text + fuhao.Text + right.Text;
    Count++;
    if (TextBox4.Text == answer)
    zhengque++;
    MessageBox.Show("回答正确");

    }
    else
    {
    zhengque++;
    MessageBox.Show("回答错误");


    }
    }

    private void button2_Click(object sender, EventArgs e)
    {
    File.WriteAllText("writer.txt", string.Empty);
    File.WriteAllText("writer1.txt", string.Empty);
    File.WriteAllText("writer2.t

    三、窗体显示



  • 相关阅读:
    多线程
    IO
    Collections工具类
    File类
    Map
    List与Set接口
    如何把数学作为一种工具
    包装类
    异常
    内部类
  • 原文地址:https://www.cnblogs.com/caixiufang/p/5004861.html
Copyright © 2011-2022 走看看