结构体数组的增删改查

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace 项目

{

internal class Program

{

public struct Student

{

public string no; //学号

public string name; //姓名

public int age; //年龄

public string sex; //性别

public string tel; //电话

public string address; //住址

}

public static Student[] stu = new Student[100];//声明一个全局结构数组

public static int num;//声明一个全局数量(当前人数)

private static void Main(string[] args)

{

Console.WriteLine("请输入要录入学员的个数:");

num = Convert.ToInt32(Console.ReadLine());

LuRu(num);

//Console.WriteLine("请输入要查找的学员姓名:");

//string name = Console.ReadLine();

//Seach(num, name);

// Insert(ref num);

Del(ref num);

Console.ReadKey();

}

/// <summary>

/// 录入学员信息

/// </summary>

/// <param name="count"></param>

private static void LuRu(int count)

{

for (int i = 0; i < count; i++)

{

Console.WriteLine("请输入第{0}个学员的学号:", i + 1);

stu[i].no = Console.ReadLine();

Console.WriteLine("请输入第{0}个学员的姓名:", i + 1);

stu[i].name = Console.ReadLine();

Console.WriteLine("请输入第{0}个学员的年龄:", i + 1);

stu[i].age = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("请输入第{0}个学员的性别:", i + 1);

stu[i].sex = Console.ReadLine();

Console.WriteLine("请输入第{0}个学员的电话:", i + 1);

stu[i].tel = Console.ReadLine();

Console.WriteLine("请输入第{0}个学员的住址:", i + 1);

stu[i].address = Console.ReadLine();

}

Console.WriteLine("你录入的学员信息如下:");

for (int i = 0; i < count; i++)

{

Console.WriteLine("你录入的第{0}个学员的学号是{1}:", i + 1, stu[i].no);

Console.WriteLine("你录入的第{0}个学员的姓名是{1}:", i + 1, stu[i].name);

Console.WriteLine("你录入的第{0}个学员的年龄是{1}:", i + 1, stu[i].age);

Console.WriteLine("你录入的第{0}个学员的性别是{1}:", i + 1, stu[i].sex);

Console.WriteLine("你录入的第{0}个学员的电话是{1}:", i + 1, stu[i].tel);

Console.WriteLine("你录入的第{0}个学员的住址是{1}:", i + 1, stu[i].address);

}

}

/// <summary>

/// 按姓名查询是否有该学员

/// </summary>

/// <param name="count"></param>

/// <param name="name"></param>

private static void Seach(int count, string name)

{

bool flag = false;

for (int i = 0; i < count; i++)

{

if (stu[i].name == name)

{

Console.WriteLine("学员的学号是{0}", stu[i].no);

Console.WriteLine("学员的姓名是{0}", stu[i].name);

Console.WriteLine("学员的年龄是{0}", stu[i].age);

Console.WriteLine("学员的性别是{0}", stu[i].sex);

Console.WriteLine("学员的电话是{0}", stu[i].tel);

Console.WriteLine("学员的住址是{0}", stu[i].address);

flag = true;

}

}

if (flag == false)

{

Console.WriteLine("没有查到该学员!");

}

}

/// <summary>

/// 添加学员

/// </summary>

/// <param name="count"></param>

private static void Insert(ref int count)

{

for (int i = count; i < count+1; i++)//这里的条件要在之前总人数的基础上在加1

{

Console.WriteLine("请输入要插入的学员学号:");

stu[i].no = Console.ReadLine();

Console.WriteLine("请输入要插入的学员姓名:");

stu[i].name = Console.ReadLine();

Console.WriteLine("请输入要插入的学员年龄:");

stu[i].age = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("请输入要插入的学员性别:");

stu[i].sex = Console.ReadLine();

Console.WriteLine("请输入要插入的学员电话:");

stu[i].tel = Console.ReadLine();

Console.WriteLine("请输入要插入的学员住址:");

stu[i].address = Console.ReadLine();

}

Console.WriteLine("添加学员成功!");

count++;//添加成功够,将总人数加1,因为这里用的是引用传递,所以总人数的个数也发生改变

Console.WriteLine("你录入的学员信息如下:");

for (int i = 0; i < count; i++)

{

Console.WriteLine("你录入的第{0}个学员的学号是{1}:", i + 1, stu[i].no);

Console.WriteLine("你录入的第{0}个学员的姓名是{1}:", i + 1, stu[i].name);

Console.WriteLine("你录入的第{0}个学员的年龄是{1}:", i + 1, stu[i].age);

Console.WriteLine("你录入的第{0}个学员的性别是{1}:", i + 1, stu[i].sex);

Console.WriteLine("你录入的第{0}个学员的电话是{1}:", i + 1, stu[i].tel);

Console.WriteLine("你录入的第{0}个学员的住址是{1}:", i + 1, stu[i].address);

}

}

/// <summary>

/// 查询到有此姓名的同学,修改其电话

/// </summary>

/// <param name="count"></param>

/// <param name="name"></param>

/// <param name="tel"></param>

private static void Update(int count, string name, string tel)

{

for (int i = 0; i < count; i++)

{

if (stu[i].name == name)

{

stu[i].tel = tel;

}

}

}

/// <summary>

/// 删除学员

/// </summary>

/// <param name="count"></param>

private static void Del(ref int count)

{

string str = string.Empty;

do

{

Console.WriteLine("请输入要删除的姓名:");

string name = Console.ReadLine();

for (int i = 0; i < count; i++)

{

if (stu[i].name == name)

{

count--;//将总人数减1

for (int j = i; j < count; j++)

{

stu[j].no = stu[j + 1].no;//找到当前要删除的数据的下标,然后将后面下标的值覆盖当前要删除的数据,就相当删除了

stu[j].name = stu[j + 1].name;

stu[j].age = stu[j + 1].age;

stu[j].sex = stu[j + 1].sex;

stu[j].tel = stu[j + 1].tel;

stu[j].address = stu[j + 1].address;

}

}

}

Console.WriteLine("成功删除一个学员信息!");

Console.WriteLine("现在的学员信息如下:");

for (int i = 0; i < count; i++)

{

Console.WriteLine("你录入的第{0}个学员的学号是{1}:", i + 1, stu[i].no);

Console.WriteLine("你录入的第{0}个学员的姓名是{1}:", i + 1, stu[i].name);

Console.WriteLine("你录入的第{0}个学员的年龄是{1}:", i + 1, stu[i].age);

Console.WriteLine("你录入的第{0}个学员的性别是{1}:", i + 1, stu[i].sex);

Console.WriteLine("你录入的第{0}个学员的电话是{1}:", i + 1, stu[i].tel);

Console.WriteLine("你录入的第{0}个学员的住址是{1}:", i + 1, stu[i].address);

}

if (count == 1)//如果只有一条数据的时候,提示不能在进行删除了,并且退出本循环

{

Console.WriteLine("只剩下一条了,不能在删除了!");

break;

}

Console.WriteLine("是否要继续删除(y/n)?");

str = Console.ReadLine();

} while (str!="n");

}

}

} 总结:录入的时候,只要给定要录入的个数,循环动态录入,跟数组动态接收值是一个道理。 查找的时候,知道总人数,然后挨个遍历查找,如果查找到,输出,如果没有,则提示没有查找到(这里定义一个开关,如果查找到了,将开关开启,如果没有,则不开,然后在循环遍历完成以后,判断开关是开启还是闭合,如果是闭合,说明没有查找到相应数据)  插入数据,是将当前总人数+1,然后从当前总人数的下标位开始,继续往下添加 ,添加完成之后,记得把总人数进行修改,所以这里需要引用传递。 删除时先要查到到是否有当前的数据,如果有,将当前总人数先-1,然后将当前要删除的数据的下标的后一个下标的数据覆盖当前的数据的下标,就完成了删除,记住,这里也需要引用传递,只要这样,总人数才发生了改变!

时间: 2024-08-29 07:28:13

结构体数组的增删改查的相关文章

数组的增删改查操作

做批量数据录入时须要对json内的数组进行增删改查操作,splice还是非常强大的记录一下用法. var lang = ["php","java","javascript"]; //删除 var removed = lang.splice(2,1); console.log(lang); //php,javascript //console.log(removed); //java ,返回删除的项 //插入 var insert = lang.s

(52)指针 (53)数组的增删改查

(52)指针 1. int * p定义一个指针 2. P=&a就能将指针指向变量a 3.定义一个赋值函数不能直接赋值需要用指针 1 #include<stdio.h> 2 void f1(int *b) 3 { 4 *b=10; 5 } 6 int main(void) 7 { 8 int a=1; 9 f1(&a); 10 printf("%d",a); 11 return 0; 12 } (53)数组的增删改查 1 #include<stdio.h

js数组的增删改查

array 数组的增删改: push 从数组后面推入一个元素或多个元素 var arr = [1,2,3]; ? // 返回:修改后数组的长度 arr.push(4,5,6); pop 删除数组最后一个元素 // 数组的pop方法用于将数组的最后一个元素移除 var arr = [1,2,3]; ? // 返回 被删除的元素: arr.pop(); unshift 从数组前面添加一个或多个元素 var arr = [1,2,3]; ? // 返回:修改后数组的长度 arr.unshift(4,5

数组的 增删改查 及常见方法

<script>var arr=[1,2,3,4]// 增 // push() 方法 // 在数组末尾增加元素 返回的是新数组的长度 // arr.push(5,6) // alert(arr.push(5,6))//8 // alert(arr)//1,2,3,4,5,6,5,6 // unshift()方法 // 想数组的最前面添加元素,返回的是新数组的长度 var arr2=[1,2,3,4] arr.unshift(5,6); //alert(arr)//5,6,1,2,3,4 //

数组的增删改查

数组    数组的遍历     (1)通过for循环来实现遍历 /* 数组的遍历   */  public class Array{  public static void main(String[]args)  {  int []score={59,89,85,96,78,23};//静态初始化        for(int i=0;i<score.length;i++)  {  System.out.print(score[i]+"\t");  }  }  } 遍历过程中提到

顺序表的插入和删除、数组的增删改查和二分查找

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "PingFang SC" } span.s1 { font: 24.0px Helvetica } 1.顺序表的表示 为实现顺序表的操作,首先要将其表示出来,用同数据类型的数组和表示数组的长度的整型变量表示. public class LineList{ private int[] data; private int length; public LineList(){ } pu

JavaScript中数组的增删改查

                                           数组的增加 ary.push()   向数组末尾添加元素,返回的是添加后新数组的长度,原有数组改变 ary.unshift()  向数组开头添加元素,返回的是添加后新数组的长度,原有数组改变 var ary=[1,2,3,4]; var res=ary.unshift(6); console.log(res); ---->5 返回的是新数组的长度 ary.splice(n,m,x)从索引n开始删除m个元素,把新

JavaScript数组:增删改查、排序等

直接上代码 // 数组应用 var peoples = ["Jack","Tom","William","Tod","Cart","Jhson"]; console.log('原始:'+'length('+ peoples.length +')==' + peoples); // push(元素),从尾部添加 peoples.push("Smith","Wo

js 数组的增删改查

js数组元素的添加和删除一直比较迷惑,今天终于找到详细说明的资料了,先给个我测试的代码^-^ var arr = new Array(); arr[0] = "aaa"; arr[1] = "bbb"; arr[2] = "ccc"; //alert(arr.length);//3 arr.pop(); //alert(arr.length);//2 //alert(arr[arr.length-1]);//bbb arr.pop(); //al