实现效果图-简陋的计算器功能,如下
程序分2部分,
1. websever服务
2. Android客户端
---------------------------------------
1. websever服务
(在服务类只用到了,ICalculator.cs、Calculator.cs,其他接口类和实现这个接口方法,本程序不用)
1-1 ICalculator接口类
/********************************************
** 类编 号:
*
** 作 用:实现计算器类接口
*
** 作 者:lcb
*
** 编写日期:2013-7-4
*********************************************/
using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
namespace CeService
{
[ServiceContract]
public interface ICalculator
{
/// <summary>
/// 加法
/// </summary>
/// <param name="num1">第一个数</param>
/// <param name="num2">第二个数</param>
/// <param name="num">结果</param>
/// <returns></returns>
[OperationContract]
string Add(double num1, double num2,ref double num);
/// <summary>
/// 减法
/// </summary>
/// <param name="num1">第一个数</param>
/// <param name="num2">第二个数</param>
/// <param name="num">结果</param>
/// <returns></returns>
[OperationContract]
string Reduce(double num1, double num2, ref double num);
/// <summary>
/// 乘法
/// </summary>
/// <param name="num1">第一个数</param>
/// <param name="num2">第二个数</param>
/// <param name="num">结果</param>
/// <returns></returns>
[OperationContract]
string Division(double num1, double num2, ref double num);
/// <summary>
/// 除法
/// </summary>
/// <param name="num1">第一个数</param>
/// <param name="num2">第二个数</param>
/// <param name="num">结果</param>
/// <returns></returns>
[OperationContract]
string Multiplication(double num1, double num2, ref double num);
}
}
1-2 实现接口类 Calculator
/********************************************
** 类编 号:
*
** 作 用:实现计算器类
*
** 作 者:lcb
*
** 编写日期:2013-7-4
*********************************************/
using System;
using System.Collections.Generic;
using System.Text;
namespace CeService
{
public class Calculator:ICalculator
{
/// <summary>
/// 加法
/// </summary>
/// <param name="num1">第一个数</param>
/// <param name="num2">第二个数</param>
/// <param name="num">结果</param>
/// <returns></returns>
///
public string Add(double num1, double num2, ref double num)
{
try
{
num = num1 + num2;
return "1";
}
catch (Exception ex)
{
return ex.ToString();
}
}
/// <summary>
/// 减法
/// </summary>
/// <param name="num1">第一个数</param>
/// <param name="num2">第二个数</param>
/// <param name="num">结果</param>
/// <returns></returns>
public string Reduce(double num1, double num2, ref double num)
{
try
{
num = num1 - num2;
return "1";
}
catch (Exception ex)
{
return ex.ToString();
}
}
/// <summary>
/// 乘法
/// </summary>
/// <param name="num1">第一个数</param>
/// <param name="num2">第二个数</param>
/// <param name="num">结果</param>
/// <returns></returns>
public string Division(double num1, double num2, ref double num)
{
try
{
num = num1 * num2;
return "1";
}
catch (Exception ex)
{
return ex.ToString();
}
}
/// <summary>
/// 除法
/// </summary>
/// <param name="num1">第一个数</param>
/// <param name="num2">第二个数</param>
/// <param name="num">结果</param>
/// <returns></returns>
public string Multiplication(double num1, double num2, ref double num)
{
try
{
num = num1 / num2;
return "1";
}
catch (Exception ex)
{
return ex.ToString();
}
}
}
}
1-3 App.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!--<appSettings>
<add key="ConnectionString" value="Data Source=.;Initial Catalog=yanshi2010;uid=sa;pwd=sa" />
<add key="SMSPort" value="3" />
<add key="SMSBaudRate" value="19200" />
<add key="SMSState" value="false" />
</appSettings>-->
<system.serviceModel>
<services>
<!--平台服务---------------Start-->
<!-- 服务接口实现类 -->
<service name="CeService.Calculator" behaviorConfiguration="ServiceBehavior">
<!-- 服务接口 -->
<endpoint address="" binding="basicHttpBinding" contract="CeService.ICalculator" />
<host>
<baseAddresses>
<add baseAddress="http://192.168.0.220:5818/CeService" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled ="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
开启服务(代码大家都知道怎么写吧,省略 。重点是讲解android方面)
————————————————————————————————————————————————————————————————
————————————————————————————————————————————————————————————————
项目整体:
2-1 添加web引用(地址是你配置文件设置好的,如上图)
2-2 Main.axml
代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:id="@+id/txtPhoneNo"
android:layout_width="304.0dp"
android:phoneNumber="true"
android:hint="请输入第一个数"
android:layout_height="wrap_content"
android:layout_marginTop="5px"
android:layout_marginLeft="5px" />
<EditText
android:id="@+id/txtSMS"
android:layout_width="313.3dp"
android:layout_height="40.0dp"
android:phoneNumber="true"
android:gravity="top"
android:hint="请输入第二个数"
android:layout_below="@id/txtPhoneNo" />
<Button
android:id="@+id/btnadd"
android:text="加"
android:layout_width="69dp"
android:layout_height="wrap_content"
android:layout_below="@id/txtSMS" />
<Button
android:id="@+id/btnjian"
android:text="减"
android:layout_width="69dp"
android:layout_height="wrap_content"
android:layout_below="@id/txtSMS"
android:layout_toRightOf="@id/btnadd" />
<Button
android:id="@+id/btncheng"
android:text="乘"
android:layout_width="69dp"
android:layout_height="wrap_content"
android:layout_below="@id/txtSMS"
android:layout_toRightOf="@id/btnjian" />
<Button
android:id="@+id/btnchu"
android:text="除"
android:layout_width="69dp"
android:layout_height="wrap_content"
android:layout_below="@id/txtSMS"
android:layout_toRightOf="@id/btncheng" />
<EditText
android:id="@+id/txtjieguo"
android:layout_width="fill_parent"
android:layout_height="40.7dp"
android:gravity="top"
android:hint=""
android:layout_below="@id/btnchu" />
</RelativeLayout>
2-3 Activity1.cs
using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
namespace Databasedemo
{
[Activity(Label = "Databasedemo", MainLauncher = true, Icon = "@drawable/icon")]
public class Activity1 : Activity
{
EditText tvjg;
EditText num1;
EditText num2;
double num = 0;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
//加
Button btnadd = FindViewById<Button>(Resource.Id.btnadd);
//减
Button btnjian = FindViewById<Button>(Resource.Id.btnjian);
//乘
Button btncheng = FindViewById<Button>(Resource.Id.btncheng);
//除
Button btnchu = FindViewById<Button>(Resource.Id.btnchu);
//第一个数
num1 = FindViewById<EditText>(Resource.Id.txtPhoneNo);
//第二个数
num2 = FindViewById<EditText>(Resource.Id.txtSMS);
//结果
tvjg = FindViewById<EditText>(Resource.Id.txtjieguo);
WebReference.Calculator ca = new WebReference.Calculator();
btnadd.Click += delegate
{
double num1s = Convert.ToDouble(num1.Text.ToString());
double num2s = Convert.ToDouble(num2.Text.ToString());
string flag = ca.Add(num1s, num2s, ref num);
tvjg.Text = num1s.ToString() + "+" + num2s.ToString() + "=" + num.ToString();
};
btnjian.Click += delegate
{
double num1s = Convert.ToDouble(num1.Text.ToString());
double num2s = Convert.ToDouble(num2.Text.ToString());
string flag = ca.Reduce(num1s, num2s, ref num);
tvjg.Text = num1s.ToString() + "-" + num2s.ToString() + "=" + num.ToString();
};
btncheng.Click += delegate
{
double num1s = Convert.ToDouble(num1.Text.ToString());
double num2s = Convert.ToDouble(num2.Text.ToString());
string flag = ca.Division(num1s, num2s, ref num);
tvjg.Text = num1s.ToString() + "*" + num2s.ToString() + "=" + num.ToString();
};
btnchu.Click += delegate
{
double num1s = Convert.ToDouble(num1.Text.ToString());
double num2s = Convert.ToDouble(num2.Text.ToString());
string flag = ca.Multiplication(num1s, num2s, ref num);
tvjg.Text = num1s.ToString() + "/" + num2s.ToString() + "=" + num.ToString();
};
}
}
}
代码,到此已完成!