C#——设计一个窗体程序,定义一个Student类,包含学号和姓名两个字段,并定义一个班级类ClassList,该类包括一个Student集合,使用索引器访问该集合,实现添加查询功能
设计界面:
编写代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections; //引入命名空间
namespace 库存
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
label6.Text = "";
}
ClassList s = new ClassList(3); // 创建一个容量为3的仓库
//添加产品
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text != "" && textBox2.Text != "" && textBox6.Text != "")
{
Student p = new Student(Convert .ToInt32( textBox1.Text), textBox2.Text);
int i = Convert.ToInt32(textBox6.Text);
s[i] = p; //向仓库中添加产品
label6.Text = "添加学生成功!!";
textBox1.Text = "";
textBox2.Text = "";
textBox6.Text = "";
}
else
{
MessageBox.Show("请输入完整的学生信息及存放位置!!!");
}
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
}
//根据索引值查询学生
private void button2_Click(object sender, EventArgs e)
{
if (textBox6.Text != "")
{
int i = Convert.ToInt32(textBox6.Text);
Student p = s[i];
if (p != null)
{
label6.Text = string.Format("索引值为{0}的学生信息如下\n学号:{1} \n姓名:{2} ", i, p.Sno, p.Name);
}
else
{
label6.Text = string.Format("没有索引值为{0}的学生!", i);
}
textBox6.Text = "";
}
else
{
MessageBox.Show("请输入您要查询的学生索引值!!");
}
}
//查找学生——根据学生姓名
private void button3_Click(object sender, EventArgs e)
{
if (textBox2.Text != "")
{
Student p = s[textBox2.Text];
if (p != null)
{
label6.Text = string.Format("找到姓名为{0}的学生信息如下\n学号:{1} \n姓名:{2}", textBox2.Text, p.Sno, p.Name);
}
else
{
label6.Text = string.Format("没有找到姓名为{0}的学生", p.Name);
}
textBox2.Text = "";
}
else
{
MessageBox.Show("请输入您要查询的学生姓名!!!");
}
}
}
//定义一个班级类(保存所有的学生信息)
class ClassList
{
private Student[] students; //该数组用于存放学生
public ClassList(int n)
{
students =new Student[n];
}
//定义索引器
public Student this[int index]
{
get
{
if(index <0||index>=students .Length )
{
return null;
}
return students [index]; //对于有限索引,返回请求的信息
}
set
{
if(index <0||index >=students .Length )
{
return;
}
students[index] = value;
}
}
//重载索引器
public Student this[string name]
{
get
{
foreach (Student p in students )//遍历数组中的所有学生姓名
{
if(p.Name.IndexOf(name)!=-1)//返回符合条件的第一个学生
{
return p;
}
}
return null;
}
}
}
//定义一个Student类
class Student
{
private int sno;
private string name;
public Student(int sno, string name)
{
this.sno = sno;
this.name = name;
}
public int Sno
{
get
{
return sno;
}
}
public string Name
{
get
{
return name;
}
}
}
}
运行结果: