首页 > 其他 > 详细

计算器

时间:2015-11-29 16:22:07      阅读:293      评论:0      收藏:0      [点我收藏+]
刚开始对封装还是不熟悉,自己在电脑搞了可长时间还是不太好,又请教的别人,让人家帮忙做出来的,虽然过程很艰辛,不过自己也在进步,计算器做的还不算完美,自己在下面完善吧,加油!
一、封装:

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 Context
{
private Calculator calculate = null;//实例化一个基类的引用对象
public Context(Calculator _cal)//_cal为派生类的一个对象
{
this.calculate = _cal; //把派生类的对象赋给基类的引用对象
}
public double Cal(double a, double b, String symbol)
{
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:\rtf";
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;
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 + "" + "\n";


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)
{

string m = textBox2.Text;
int result;
switch (m)
{
case "+":
sum = int.Parse(textBox1.Text) + int.Parse(textBox3.Text);

break;
case "-":
sum = int.Parse(textBox1.Text) - int.Parse(textBox3.Text);
break;
case "*":
sum = int.Parse(textBox1.Text) * int.Parse(textBox3.Text);
break;
case "/":
sum = int.Parse(textBox1.Text) / int.Parse(textBox3.Text);
break;
default:
break;
}
if (e.KeyCode == Keys.Enter)
{

 

MessageBox.Show("回答正确");
zq++;

}
else
{

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.txt", string.Empty);
}

}
}

三、窗体显示

技术分享

技术分享

技术分享

技术分享



计算器

原文:http://www.cnblogs.com/caixiufang/p/5004861.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!