目标
? ?
使用Hashtable集合对象存储电脑信息 员工数据输入
指导教师讲解阶段目标
第一部分 指导(60分钟)
练习1:使用Hashtable对象存储数据项
问题
编写一个电脑信息类:包括电脑的型号、价格和出厂日期。程序应根据用户输入的型号来显示相应的电脑信息。
要求使用Hashtable对象存储电脑信息,并且按照型号排列输出,可以输入一个型号,程序检查判断集合中是否存在该型号的电脑,如果存在则显示具体信息。 分析
指导教师分析解题思路
可以创建一个包含电脑型号、价格和出厂日期的类Computer,电脑的详细信息再作为一个元素存在Hashtable集合中
//创建Hashtable对象 Hashtable objComputers = new Hashtable(); //添加值 objComputers.Add(\ 2007, 12, 3))); objComputers.Add(\ 13))); objComputers.Add(\ 23))); objComputers.Add(\ 30))); objComputers.Add(\ 2))); objComputers.Add(\ 1, 10)));
排列输出可以通过下面这种方式输出:
ArrayList akeys = new ArrayList(objComputers.Keys); akeys.Sort(); foreach (string key in akeys) { Computer objComputer = (Computer)objComputers[key]; Console.WriteLine(\型号:\;价格:\ objComputer.Price.ToString() + \¥;\出厂日期:\ objComputer.CDate.ToLongDateString()); } 推荐步骤:
(1)创建一个基于控制台的C#应用程序,命名为“HashtableExm”。 (2)创建Computer类。 (3)完整的代码如下:
using System; using System.Collections.Generic; using System.Text; using System.Collections; namespace HashtableExm { //创建电脑类 public class Computer { private string _cModel; private float _price; private DateTime _cDate; //获取电脑的型号 public string Model { get { return _cModel; } } //获取电脑的价格 public float Price { get { return _price; } } //获取电脑的出厂日期 public DateTime CDate { get { return _cDate; } } //构造函数 public Computer(string cModel,float cPrice,DateTime cDate) { this._cModel = cModel; this._price = cPrice; this._cDate = CDate; } } class Program { static void Main(string[] args) { //创建Hashtable对象 Hashtable objComputers = new Hashtable(); //添加值 objComputers.Add(\ (2007, 12, 3))); objComputers.Add(\ 13))); objComputers.Add(\ 23))); objComputers.Add(\ 30))); objComputers.Add(\ 2))); objComputers.Add(\ (2008, 1, 10))); ArrayList akeys = new ArrayList(objComputers.Keys); akeys.Sort(); foreach (string key in akeys) { Computer objComputer = (Computer)objComputers[key]; Console.WriteLine(\型号:\;价格:\ objComputer.Price.ToString() + \¥;\出厂日期:\ objComputer.CDate.ToLongDateString()); } Console.Write(\输入电脑的型号:\ string model = Console.ReadLine(); //检查是否存在该值 if (objComputers.ContainsKey(model)) { //搜索型号并从列表中获取对象 Computer objComputer = (Computer)objComputers[model]; Console.WriteLine(\该型号的价格:\¥;\ \出厂日期:\ } else { Console.WriteLine(\该型号未找到!\ } Console.ReadLine(); } } } (4)通过从菜单中选择“生成”→“生成解决方案”,来生成该解决方案。
(5)通过从菜单中选择“调试” →“开始执行(不调试)”选项来执行此应用程序。
程序运行效果图
指导教师检查学生进度
练习2:员工数据输入
问题
在一个公司的员工管理系统中,通常会通过窗体输入员工的信息,包括员工的编号,姓名,部门,工资等情况。现不使用数据库技术,使用SortedList来存储不同员工的信息,并且,录入的员工都显示在一个列表框中,还可以删除列表框中的员工,但是同时要删除SortedList对象中的员工,因此SortedList对象中的数据要与类表框的数据同步。 界面要求如图:
员工信息输入
在左边的文本框中输入数据以后,单击“添加”按钮可以把数据添加到SortedList对象中,同时姓名添加到右边列表框中;在右边的列表框中选择一个姓名信息,单击下方的“删除”按钮,可以把该员工删除,同时,SortedList对象中的员工信息也被删除。 推荐步骤:
(1)先创建一个员工类Employee来保存员工属性。 (2)创建一个窗体,对照界面,添加相应的控件及其事件。 (3)窗体类完整的代码如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Collections; namespace EmployeeList { public partial class Form1 : Form { SortedList employeeList; public Form1() { InitializeComponent(); } private void btn_add_Click(object sender, EventArgs e) { if(tbx_ID.Text!=\