C#上机实验(三)
源码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
CalOprs co = new CalOprs();
co.GetOpr("3+2");
co.GetOpr("3*2");
co.GetOpr("3-2");
co.GetOpr("3/2");
}
}
interface Icalt
{
double CalResult();
}
class Cal : Icalt
{
private double op1;
private double op2;
public double Op1
{
get {
return op1;
}
set {
op1 = value;
}
}
public double Op2
{
get
{
return op2;
}
set
{
op2 = value;
}
}
public Cal() {
this.op1 = 0;
this.op2 = 0;
}
public Cal(double op1, double op2)
{
this.op1 = op1;
this.op2 = op2;
}
public virtual double CalResult()
{
return 0;
}
}
class CalAdd : Cal {
public CalAdd() : base()
{
}
public CalAdd(double op1, double op2) :base(op1,op2)
{
}
public override double CalResult()
{
return this.Op1 + this.Op2;
}
}
class CalSub : Cal
{
public CalSub()
: base()
{
}
public CalSub(double op1, double op2)
: base(op1, op2)
{
}
public override double CalResult()
{
return this.Op1 - this.Op2;
}
}
class CalMul : Cal
{
public CalMul()
: base()
{
}
public CalMul(double op1, double op2)
: base(op1, op2)
{
}
public override double CalResult()
{
return this.Op1 * this.Op2;
}
}
class CalDiv : Cal
{
public CalDiv()
: base()
{
}
public CalDiv(double op1, double op2)
: base(op1, op2)
{
}
public override double CalResult()
{
return this.Op1 / this.Op2;
}
}
class CalOprs {
public Cal GetOpr(string s) {
int i=0;
char op=' ';
for (; i < s.Length; i++)
{
if (!(s.ElementAt(i) >= '0' && s.ElementAt(i) <= '9'))
op = s.ElementAt(i);
}
Cal ca = new Cal();
ca.Op1 = double.Parse(s.Split(op)[0]);
ca.Op2 = double.Parse(s.Split(op)[1]);
switch (op) {
case '+':
CalAdd caa = new CalAdd(ca.Op1, ca.Op2);
Console.WriteLine("{0}",caa.CalResult());
break;
case '-':
CalSub cas = new CalSub(ca.Op1, ca.Op2);
Console.WriteLine("{0}", cas.CalResult());
break;
case '*':
CalMul cam = new CalMul(ca.Op1, ca.Op2);
Console.WriteLine("{0}", cam.CalResult());
break;
case '/':
CalDiv cad = new CalDiv(ca.Op1, ca.Op2);
Console.WriteLine("{0}", cad.CalResult());
break;
}
return ca;
}
}
}