c#实现手机号码归属地查询

用C#来实现手机号码的归属地查询,在ASP.NET中很容易实现,可以调用其他网页进行链接,而在WINFORM下面可以采用两种方式来实现,一种是用WEB控件来显示该网页,和天气预报查询实现原理一样,一种就是采用本地数据库的方式来实现,关于本地数据库实现的原理网络上面很多,就是截取号码段与数据库中相应字段值比较,Select 出对应的信息。先发张效果图吧。

全部源代码如下:    需要下载的话点击这里:手机号码归属地查询(C#源码)

 

C#手机号码归属地查询源码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SQLite;
using System.Text.RegularExpressions;
using System.IO;

namespace 手机号码查询
{
    
public partial class Form1 : Form
    
{
        
public Form1()
        
{
            InitializeComponent();
        }


        
string phoneNum = "";//存储完整手机号码
        string tel = "";//存储手机号码的前缀

        
private void tsbtnLocal_Click(object sender, EventArgs e)
        
{
            
if (!File.Exists("data"))//检查数据库是否存在
            {
                MessageBox.Show(
"数据库文件丢失!请找回!""消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                
return;
            }

            phoneNum 
= tstxtTel.Text.Trim();//完整手机号码
            tel = phoneNum.Substring(03);//取手机号码前面三位判断
            if (checkTel())
            
{
                phoneNum 
= phoneNum.Substring(07);//取手机号码前面七位进行查询
                string sql = "select * from '" + tel + "' where numberrange='" + phoneNum + "' limit 0,1";
                SQLiteConnection con 
= null;
                SQLiteCommand cmd 
= null;
                SQLiteDataReader dr 
= null;
                
try
                
{
                    con 
= new SQLiteConnection("Data Source="+Application .StartupPath +"\\data");
                    cmd 
= new SQLiteCommand(sql, con);
                    con.Open();
                    dr 
= cmd.ExecuteReader();
                    
if (dr.HasRows)//如果存在此记录
                    {
                        txtLocaltion.Text 
= dr.GetValue(1).ToString();
                        txtType.Text 
= dr.GetValue(2).ToString();
                        txtZipCode.Text 
= dr.GetValue(3).ToString();
                        txtCityNum.Text 
= dr.GetValue(4).ToString();
                    }

                    
else
                    
{
                        MessageBox.Show(
"暂时未查找到此号码的记录!""消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }

                                     
                }

                
catch (Exception ex)
                
{
                    MessageBox.Show(
"暂时未查找到此号码的记录!"+ex.Message , "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }

                
finally
                
{
                    dr.Close();
                    dr.Dispose();
                    con.Close();
                    con.Dispose();
                    tstxtTel.Focus();
                }

            }

        }

        
//检验输入手机号码的合法性和正确性
        private bool checkTel()
        
{           
            
if (phoneNum == null)//如果号码为空
            {
                MessageBox.Show(
"号码不能为空!""消息", MessageBoxButtons.OK, MessageBoxIcon.Information );
                tstxtTel.Focus();
                
return false;
            }

            Match num 
= Regex.Match(phoneNum , "[0-9]+");
            
if (!num.Success)//如果号码不为数字
            {
                MessageBox.Show(
"手机号码输入错误!""消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                tstxtTel.Focus();
                
return false;
            }

            
if (phoneNum.Length < 7)//如果号码长度小于七位
            {
                MessageBox.Show(
"手机号码必须要大于7位!""消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                tstxtTel.Focus();
                
return false;
            }

            
if (phoneNum.Length > 11)//如果号码长度大于十一位
            {
                MessageBox.Show(
"手机号码必须要小于11位!""消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                tstxtTel.Focus();
                
return false;
            }
            
            
if (tel != "130" && tel != "131" && tel != "132" && tel != "133" && tel != "134" &&
                tel 
!= "135" && tel != "136" && tel != "137" && tel != "138" && tel != "139" &&
                tel 
!= "150" && tel != "151" && tel != "152" && tel != "153" && tel != "156" &&
                tel 
!= "158" && tel != "159")//如果不是手机号码
            {
                MessageBox.Show(
"手机号码输入错误""消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                
return false;
            }

            
return true;
        }


        
private void tstxtTel_KeyPress(object sender, KeyPressEventArgs e)
        
{
            
// 特殊键, 不处理
            if ((int)e.KeyChar <= 31)
            
{
                
return;
            }


            
// 非数字键, 放弃该输入
            if (!char.IsDigit(e.KeyChar))
            
{
                e.Handled 
= true;
                
return;
            }

        }


        
private void tsbtnInternet_Click(object sender, EventArgs e)
        
{
            phoneNum 
= tstxtTel.Text.Trim();
            
string url = @"http://api.showji.com/Locating/query.aspx?m=" + phoneNum ;
            wbMain.Navigate(url);
        }


        
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        
{
            MessageBox.Show(
"作者:刘典武 (游龙工作室)" + "\r\n" + "网址:http://www.liudianwu1988.51.com""呵呵", MessageBoxButtons.OK, MessageBoxIcon.Information);
            Application.ExitThread();
        }


        
private void Form1_Load(object sender, EventArgs e)
        
{
            
//tstxtTel.Focus();//这样初始化焦点不行
        }


        
private void Form1_Shown(object sender, EventArgs e)
        
{
            tstxtTel.Focus();
//这样才正确
        }

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值