学生信息的顺序表分块开发——简化版

目录

数据类型定义

开始界面

初始化

指定学生个数,逐个输入学生信息

逐个输出

根据姓名进行查找

根据指定的位置查找

插入一名学生的信息

删除指定位置的学生的信息

统计表中学生的个数

主函数



数据类型定义

typedef struct
{
	char no[10];
	char name[20];
	char xb;
	int age;
} Student;
typedef struct
{
	Student *elem;
	int length; 
}SeqList;

错误:遗漏 typedef

开始界面

void start()
{
	puts("1.根据指定学生个数,逐个输入学生信息");
	puts("2.逐个显示学生表中所有学生的相关信息");
	puts("3.根据姓名进行查找,返回此学生的学生信息");
	puts("4.根据指定的位置可返回相应的学生信息");
	puts("5.给定一个学生信息,插入到表中指定位置");
	puts("6.删除指定位置的学生记录");
	puts("7.统计表中学生个数"); 
	puts("0.退出");
 }

初始化

void InitList (SeqList &L)
{
   L.element = (Student *)malloc(sizeof(Student) * MAXSIZE);
   L.length = 0;
}

指定学生个数,逐个输入学生信息

void input(SeqList &L)
{
     int n;
     printf("输入要导入学生的个数:");
     scanf("%d", &n);
     int i;
     if(n < 0 || n + L.length > MAXSIZE)
     {
          return;
     }
     else
     {
         for(i = 0; i < n; i++)
         {
            printf("输入学生的学号:");
		    scanf("%s", L.elem[L.length].no);
		    printf("输入学生的姓名:");
		    scanf("%s", L.elem[L.length].name);
		    printf("输入学生的性别:");
		    scanf("%s", &L.elem[L.length].xb);
		    printf("输入学生的年龄:");
		    scanf("%d", &L.elem[L.length].age);
		    L.length++;
          }
      }
      printf("导入成功\n");
}

逐个输出

void output(SeqList &L)
{
     int i;
     if(!L.length)
     {
          printf("学生表为空");
          return;
      }

     for(i = 0; i < L.length; i++)
     {
          printf("学号:%s\t姓名:%s\t性别:%c\t年龄:%d\n",L.elem[i].no,L.elem[i].name,
                 L.elem[i].xb,L.elem[i].age);
     }
}

错误:

  1. 忽略该操作前提条件

根据姓名进行查找

void Search_name(SeqList &L)
{
     printf("请输入要查找的姓名\n");
     char name[20];
     scanf("%s", name);

     for(int i = 0; i < n; i++)
     {
          if(!strcmp(L.elem[i].name, name))
            { 
             
               printf("学号:%s,姓名:%s, 性别:%c, 年龄:%d", L.elem[i].no,
               L.elem[i].name, L.elem[i].xb, L.elem[i].age);
               return;
             }
      }
      printf("未查找到该同学");
}

根据指定的位置查找

void Search_space(SeqList &L)
{
     int m;
     printf("请输入要查找的位置:\n");
     scanf("%d", &m);
     if(m < 1|| m > L.length)
     {
       printf("该位置不存在");
       return;
      }
     printf("学号:%s,姓名:%s,性别:%c,年龄:%d",L.elem[m-1].no, L.elem[m-1].name, 
      L.elem[m-1].xb, L.elem[m-1].age); 
}

     

插入一名学生的信息

void Insert(SeqList &L)
{
   if(L.length == MAXSIZE)
    {
    	printf("学生表已满\n");
    	return;
	}
   int s;
   printf("请输入要插入的位置:\n");
   scanf("%d", &s);
   if(s < 1 || s > L.length + 1)
   {
      printf("插入位置只能介于1至n+1!);
      return;
    }
  int j;
  for(j = L.length - 1; j >= s - 1; j--)
      {L.elem[j + 1] = L.elem[j];}
  L.length++;
  printf("请输入要插入学生的信息:\n");
  scanf("%s %s %s %d", &L.elem[s-1].no, &L.elem[s-1].name, &L.elem[s-1].xb,
  &L.elem[s-1].age);
}

删除指定位置的学生的信息

void Delet (SeqList &L)
{
   if(!L.length)
   {
        printf("学生表为空");
        return;
    }
   else
   {
     int s;
     printf("请输入要删除的位置:");
     scanf("%d", &s);
     if(s < 1|| s > L.length) { printf("该位置不存在");    return;}
     else if(s == L.length)  { L.length--;}
     else
      {
        int j;
        for(j = s - 1; j < L.length; j++)
         { L.elem[j] = L.elem[j + 1];}
        L.length--;
      }
   }
}

统计表中学生的个数

int Length(SeqList &L)
{
    return L.length;
}

主函数

int main()
{
    start();
    SeqList L;
    InitList(L);
    int op;
    while (scanf("%d", &op), op)
	{
		if(op == 1) input(L);
		else if(op == 2) output(L);
		else if(op == 3) search_name(L);
		else if(op == 4) search_space(L);
		else if(op == 5) insert(L);
		else if(op == 6) delet(L);
		else if(op == 7) printf("学生个数:%d\n", length(L));
		else if(op == 0) break;
		else puts("请输入正确的数"); 
	}
	return 0;
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值