C#非泛型集合类-HashTable使用实例电话本

本例创建一个电话本,使用HashTable存储电话信息,每个人的姓名和电话作为一个整体存储,使用姓名作为键值,可以根据姓名查询电话号码。
1、创建控制台应用程序。
2、建立一个电话本类TelNote,此类只包括电话本中的姓名,电话号字段和属性。
3、建立一个编辑电话本类TelNoteEdit,此类中完成电话本的操作,包括存在电话本信息,根据姓名查找电话号码等功能。
4、在主函数中调用上面类和方法,实现电话本编辑功能。

using System;
using System.Collections;


//创建电话本类,属性有姓名和电话
public class TelNote
{
private string name; //姓名

public string Name
{
    get
    {
      return name;
    }
    set
    {
      name = value;
    }
}
private string number; //电话

public string Number
{
    get
    {
      return number;
    }
    set
    {
      number = value;
    }
}

}

public class TelNoteEdit
{
//创建哈希表
public Hashtable httels = new Hashtable();
//添加电话信息
public void Add(TelNote tel)
{
    //如果电话本为空则存储电话
    if (httels.Count == 0)
    {
      // Hashtable ht = new Hashtable();
      httels.Add(tel.Name, tel);
    }
    else
    {
      //如果电话本不为空,检查是否存在该姓名
      if (httels.Contains(tel.Name))
      {
        //如果存在则修改其电话
        httels[tel.Name] = tel.Number;

      }
      else
      {
        //如果不存在,则新建电话信息
        httels.Add(tel.Name, tel);

      }
    }

}
//根据姓名返回电话信息
public TelNote GetByName(string name)
{
    foreach (Object tel in httels.Values)
    {
      TelNote mytel = (TelNote)tel;
      if (name == mytel.Name)
      {
        return mytel;
      }
    }
    return null;

}

}

class Program
{
static void Main(string[]args)
{
    //创建两个TelNote对象
    TelNote mytel1 = new TelNote();
    mytel1.Name = "范跑跑";
    mytel1.Number = "81161234";
    TelNote mytel2 = new TelNote();
    mytel2.Name = "郭跳跳";
    mytel2.Number = "62337878";
    //将信息添加到哈希表中
    TelNoteEdit teledit = new TelNoteEdit();
    teledit.Add(mytel1);
    teledit.Add(mytel2);
    Console.WriteLine("哈希表中元素的个数为{0}", teledit.httels.Count);
    foreach (DictionaryEntry myde in teledit.httels)
    {
      Console.WriteLine("\t{0}\t{1}", myde.Key, myde.Value);
    }

//显示电话本的姓名和电话

foreach (object obj in teledit.httels.Values)
            {
                TelNote tn = (TelNote)obj;
                Console.WriteLine("\t{0}\t{1}", tn.Name, tn.Number);
            }
    //查询范跑跑的电话
    TelNote mytel = teledit.GetByName("范跑跑");
    Console.WriteLine("{0}的电话是{1}", mytel.Name, mytel.Number);
    Console.ReadKey();

}
}

posted on 2012-06-29 09:43  流星落  阅读(530)  评论(0编辑  收藏  举报

导航