#include<myhead.h>
#define size 128
typedef struct Student
{
char name[10];
int age;
}student;
typedef struct Message
{
student stu[size];
int last;//记录下标
}msg;
msg* create();
int insert(msg *m);
void show(msg *m);
int isempty(msg *m);
int delete(msg *m);
int change(msg *m);
void find_by_index(msg *m);
int main(int argc, const char *argv[])
{
msg *m = create();
while(1)
{
printf("=========================\n");
printf("========选择操作=========\n");
printf("1.录入学生信息===========\n");
printf("2.删除学生信息===========\n");
printf("3.修改学生信息===========\n");
printf("4.查找学生信息===========\n");
printf("0.退出===================\n");
printf("=========================\n");
int num = 0;
scanf("%d",&num);
switch(num)
{
case 1:
if(insert(m)==0)
{
printf("插入成功\n");
}
else printf("插入失败\n");
printf("插入以下学生信息:\n");
show(m);
break;
case 2:
if(delete(m)==0)
{
printf("删除成功,剩余以下学生信息:\n");
show(m);
}else printf("删除失败\n");
break;
case 3:
if(change(m)==0)
{
printf("修改成功,学生信息如下:\n");
show(m);
}else printf("修改失败,学生信息如下\n");
case 4:
find_by_index(m);
break;
case 0:
return 0;
default:
printf("重新选择\n");
}
}
free(m);
m=NULL;
return 0;
}
//创建
msg* create()
{
msg *m = (msg *)malloc(sizeof(msg));
if(m!=NULL)
{
m->last = -1;
}else
{
return NULL;
}
}
//插入
int insert(msg *m)
{
int len = 0;
printf("你要录入几个学生\n");
scanf("%d",&len);
student in_stu[len];
for(int i = 0;i<len;i++)
{
printf("请输入第%d个学生姓名和年龄\n",i+1);
scanf("%s %d",in_stu[i].name,&(in_stu[i].age));
}
if((m->last)>=size-1)
{
printf("数组满了");
return -1;
}
int l = m->last;
for(int i = 0;i<len;i++)
{
(m->stu[l+i+1]) = in_stu[i];
}
m->last+=len;
return 0;
}
//删除
int delete(msg *m)
{
printf("你要删除第几个学生\n");
int num = 0;
scanf("%d",&num);
if(num>((m->last)+1)||num<0)
{
printf("没有该学生\n");
return -1;
}
for(int i = num-1;i<(m->last);i++)
{
m->stu[i] = m->stu[i+1];
}
m->last--;
return 0;
}
//修改学生
int change(msg *m)
{
int num = 0;
printf("你要修改第几个个学生\n");
scanf("%d",&num);
if(num>((m->last)+1)||num<0)
{
printf("没有该学生\n");
return -1;
}
printf("重新输入姓名和年龄\n");
scanf("%s %d",m->stu[num-1].name,&(m->stu[num-1].age));
}
//查找你要查找的第几个学生
void find_by_index(msg *m)
{
printf("当前有%d个学生信息,你要查询第几个\n",m->last+1);
int num = 0;
scanf("%d",&num);
if(num>(m->last+1)||num<0)
{
printf("输入有误\n");
return;
}
printf("姓名:%s 年龄:%d\n",(m->stu[num-1]).name,(m->stu[num-1]).age);
}
//遍历学生信息
void show(msg *m)
{
if(isempty(m)==-1)
{
return;
}
for(int i = 0;i<=m->last;i++)
{
printf("%s %d\n",(m->stu[i]).name,(m->stu[i]).age);
}
}
int isempty(msg *m)
{
if(m->last!=-1)
{
return 0;//返回0代表不为空
}
return -1;//返回-1代表为空
}
7_2作业
最新推荐文章于 2024-08-26 00:02:00 发布