C# 数组的增删查改

//数组的增删查改
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;

namespace 数组的增删查改_Person
{

public class Person {
    public string name;
    public int age;
    public Person(string name, int age) {
        this.name = name;
        this.age = age;
    }
}

/// <summary>
/// 单例: 整个项目中这个类只能有一个对象
/// 适用范围是管理类,不能存在多个对象的类
/// </summary>
public class PersonManager{
    private static PersonManager instance;//PersonManager的唯一对象
    public static PersonManager Instance{//静态属性,方便类名调用,因为外界不能进行new对象,不能通过对象进行访问
        get {
            if (instance == null) {//第一次Instance被使用时,instance为null ,需要new那个唯一的对象
                instance = new PersonManager();
            }
            return instance; //返回给调用的地方,可以通过这个对象调用本类中的Public方法和字段、属性
        }
    }
    private Person[] persons;//当前教室的座位
    public int count; //当前教室的人数
    private PersonManager() {//构造函数私有了,外界不能创建PersonManager对象
        persons = new Person[5];//new 了一个数组,数组的元素都为null
    }

    /// <summary>
    /// 增
    /// 将同学添加到班级人员数组
    /// </summary>
    /// <param name="p"></param>
    public void AddPerson(Person p) {
        for (int i = 0; i < persons.Length; i++)
        {
            if (persons[i] == null) {
                persons[i] = p;
                count++;
                return;//找到桌位了,就停止查找座位
            }
        }
        Console.WriteLine("没有空位置了");
        //没有空位置了,需要教室座椅不够了  拓展一倍

        ExtendPerson(p);
    }

    /// <summary>
    /// 拓展座位数量
    /// </summary>
    /// <param name="p"></param>
    private void ExtendPerson(Person p) {
        int num = persons.Length;//记录之前座位数
        Person[] newPersons = new Person[num * 2];//生成一个新的数组  长度是之前的两倍
        //把之前班级的人拷贝到新数组
        for (int i = 0; i < persons.Length; i++)
        {
            newPersons[i] = persons[i];
        }
        persons = newPersons;//新数组引用给persons,就是对persons进行了长度扩展

        AddPerson(p); //重新把最后加进来的人安排座位
    }

    /// <summary>
    /// 删
    /// </summary>
    /// <param name="p"></param>
    public void DeletePerson(Person p) {
        for (int i = 0; i < persons.Length; i++)
        {
            //当查找到我们要删除的对象时
            if (persons[i] == p) {
                persons[i] = null;//将当前数组置为null;
                count--;           //只有到了这个地方才说明真的删除了一个对象,拥有的数量减一
                //让被删除的元素后面的数据向前串一个位置
                for (int j = i; j < persons.Length - 1; j++)//  5   index:2 删  
                {
                    persons[j] = persons[j+1 ];
                    //最后一个位置置为null
                    if (j + 1 == persons.Length- 1) {
                        persons[j + 1] = null;
                    }
                }
            }
        }
    }

    /// <summary>
    /// 查
    /// </summary>
    /// <param name="p"></param>
    /// <returns></returns>
    public Person SearchPerson(Person p) {
        for (int i = 0; i < persons.Length; i++)
        {
            if (persons[i] == p) {
                return persons[i];
            }
        }
        Console.WriteLine("没有找到"+p.name);
        return null;
    }
    /// <summary>
    /// 改
    /// </summary>
    /// <param name="p"></param>
    public void ChangePerson(Person p) {
        for (int i = 0; i < persons.Length; i++)
        {
            if (persons[i] == p) {
                p.name = "英雄";
            }
        }
    }

    /// <summary>
    /// TODO  将一个新人插入到数组中的一个固定位置
    /// </summary>
    /// <param name="p"></param>
    /// <param name="index"></param>
    public void InsertPerson(Person p,int index) {

    }
    /// <summary>
    /// 点名
    /// </summary>
    public void CheckName() {
        for (int i = 0; i < persons.Length; i++)
        {
            if (persons[i] != null) {
                Console.WriteLine("{0},{1}岁了,到",persons[i].name,persons[i].age);
            }
        }
    }
   
}


//对户口的增、删、查、改、插入
class Program
{
    static void Main(string[] args)
    {
        Person p1 = new Person("张三", 17);
        PersonManager.Instance.AddPerson(p1);
        Person p2 = new Person("张三", 17);
        PersonManager.Instance.AddPerson(p2);
        Person p3 = new Person("张三", 17);
        PersonManager.Instance.AddPerson(p3);
        Person p4 = new Person("王五", 17);
        PersonManager.Instance.AddPerson(p4);
        Person p5 = new Person("赵六", 17);
        PersonManager.Instance.AddPerson(p5);

        Person p6 = new Person("李四", 17);
        PersonManager.Instance.AddPerson(p6);
        PersonManager.Instance.CheckName();
        PersonManager.Instance.DeletePerson(p5);
        Console.WriteLine("-----------------------count:"+PersonManager.Instance.count);
        PersonManager.Instance.CheckName();

        PersonManager.Instance.DeletePerson(p4);
        Console.WriteLine("-----------------------count:" + PersonManager.Instance.count);
        PersonManager.Instance.CheckName();

        Person p = PersonManager.Instance.SearchPerson(p5);
        if(p != null)
            Console.WriteLine("name:"+p.name);

        PersonManager.Instance.ChangePerson(p6);
        Console.WriteLine("-----------------------count:" + PersonManager.Instance.count);
        PersonManager.Instance.CheckName();

        ArrayList al = new ArrayList();

        
        Console.ReadKey(true);
    }
}

}

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以回答这个问题。C# 数据库增删查改及自动更新 DataGridView 的步骤如下: 1. 连接数据库:使用 SqlConnection 连接数据库,并打开连接。 ``` SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=database;User ID=username;Password=password"); conn.Open(); ``` 2. 查询数据:使用 SqlCommand 执行 SQL 查询语句,并使用 SqlDataReader 读取查询结果。 ``` string sql = "SELECT * FROM tablename"; SqlCommand cmd = new SqlCommand(sql, conn); SqlDataReader reader = cmd.ExecuteReader(); // 读取查询结果 while (reader.Read()) { // 处理查询结果 } ``` 3. 插入数据:使用 SqlCommand 执行 SQL 插入语句。 ``` string sql = "INSERT INTO tablename (column1, column2) VALUES (@value1, @value2)"; SqlCommand cmd = new SqlCommand(sql, conn); cmd.Parameters.AddWithValue("@value1", value1); cmd.Parameters.AddWithValue("@value2", value2); cmd.ExecuteNonQuery(); ``` 4. 更新数据:使用 SqlCommand 执行 SQL 更新语句。 ``` string sql = "UPDATE tablename SET column1 = @value1 WHERE column2 = @value2"; SqlCommand cmd = new SqlCommand(sql, conn); cmd.Parameters.AddWithValue("@value1", value1); cmd.Parameters.AddWithValue("@value2", value2); cmd.ExecuteNonQuery(); ``` 5. 删除数据:使用 SqlCommand 执行 SQL 删除语句。 ``` string sql = "DELETE FROM tablename WHERE column1 = @value1"; SqlCommand cmd = new SqlCommand(sql, conn); cmd.Parameters.AddWithValue("@value1", value1); cmd.ExecuteNonQuery(); ``` 6. 自动更新 DataGridView:使用 SqlDataAdapter 填充 DataTable,并将 DataTable 绑定到 DataGridView。 ``` string sql = "SELECT * FROM tablename"; SqlDataAdapter adapter = new SqlDataAdapter(sql, conn); DataTable dt = new DataTable(); adapter.Fill(dt); dataGridView1.DataSource = dt; ``` 这些步骤可以根据具体情况进行调整和优化。希望对你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值