C#——设计一个窗体程序,定义一个Student类,包含学号和姓名两个字段,并定义一个班级类ClassList,该类包括一个Student集合,使用索引器访问该集合,实现添加查询功能

C#+VS2010+VS2017 专栏收录该内容
113 篇文章 3 订阅

 

设计界面:

 

编写代码:

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;
            }
        }
    }
}

 

运行结果:

 

 

  • 4
    点赞
  • 1
    评论
  • 39
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值