作业
#include"zuoye.h"
int main(int argc, const char *argv[])
{
print_menu();
classptr C = class_CJ();
struct Class*cla = NULL;
while(1)
{
int menu=0;
printf("请选择:");
scanf("%d",&menu);
switch(menu) //选择
{
case 1:
{
class_add(C);
break;
}
case 2:
{
class_show(C);
break;
}
case 3:
{
int pos = 0;
printf("请输入要插入学生的位置:");
scanf("%d",&pos);
class_add_pos(C,pos);
printf("插入后:");
class_show(C);
break;
}
case 4:
{
int pos = 0;
printf("请输入要删除位置的学生:");
scanf("%d",&pos);
class_delete_pos(C,pos);
printf("删除后:");
class_show(C);
break;
}
case 5:
{
int pos = 0;
printf("请输入想要查找的方式:\n");
printf("1:按姓名查找\n");
printf("2:按年龄查找\n");
printf("3:按成绩查找\n");
scanf("%d",&pos);
switch(pos)
{
case 1:
{
char name[MAX];
printf("请输入姓名:");
scanf("%s",name);
int i = class_search_name(C,name);
printf("所查找的学生为:");
printf("%s\t%d\t%d\n", C->stu[i].name, C->stu[i].age, C->stu[i].score);
}
case 2:
{
int age;
printf("请输入年龄:");
scanf("%d",&age);
int i = class_search_age(C,age);
printf("所查找的学生为:");
printf("%s\t%d\t%d\n", C->stu[i].name, C->stu[i].age, C->stu[i].score);
}
case 3:
{
int score;
printf("请输入成绩:");
scanf("%d",&score);
int i = class_search_score(C,score);
printf("所查找的学生为:");
printf("%s\t%d\t%d\n", C->stu[i].name, C->stu[i].age, C->stu[i].score);
}
}
break;
}
case 6:
{
break;
}
case 0:
{
return 0;
}
}
}
return 0;
}
#include"zuoye.h"
void print_menu(void) //菜单
{
printf("\t\t======1、录入======\n");
printf("\t\t======2、学生信息输出======\n");
printf("\t\t======3、任意位置插入学生======\n");
printf("\t\t======4、任意位置删除学生======\n");
printf("\t\t======5、查找学生======\n");
printf("\t\t======6、更改学生信息======\n");
printf("\t\t======0、退出======\n");
}
//声明顺序表的创建函数
classptr class_CJ(void)
{
//在堆区申请空间
classptr C = (classptr) malloc(sizeof(class));
if(NULL == C) //判断是否创建成功
{
printf("创建失败\n");
return NULL;
}
//将数组初始化
memset(C->stu,0,sizeof(C->stu));
C->len = 0;
printf("创建成功\n");
return C;
}
//判空函数
int class_empty(classptr C)
{
return C->len == 0;
}
//判满函数
int class_full(classptr C)
{
return C->len == MAX;
}
//录入
int class_add(classptr C)
{
if(NULL == C || class_full(C))
{
printf("添加失败\n");
return -1;
}
printf("请输入人数:");
scanf("%d",&C->len);
for(int i=0;i<C->len;i++)
{
printf("请输入第%d个学生的姓名:", i+1);
scanf("%s", C->stu[i].name);
printf("请输入第%d个学生的年龄:", i+1);
scanf("%d", &C->stu[i].age);
printf("请输入第%d个学生的成绩:", i+1);
scanf("%d", &C->stu[i].score);
printf("\n");
}
printf("录入成功\n");
return 0;
}
//查看
void class_show(classptr C)
{
if(NULL == C || class_full(C))
{
printf("查看失败\n");
}
printf("班级学生的信息:\n");
for(int i=0;i<C->len;i++)
{
printf("%s\t%d\t%d\n", C->stu[i].name,C->stu[i].age,C->stu[i].score);
}
}
//任意位置插入学生
int class_add_pos(classptr C,int pos)
{
if(NULL == C || class_full(C) || pos < 0 || pos >=C->len)
{
printf("插入失败\n");
return -1;
}
//腾空
for(int i=C->len;i>=pos;i--)
{
C->stu[i+1] = C->stu[i];
}
//插入数据
printf("请输入插入学生的姓名:");
scanf("%s", C->stu[pos].name);
printf("请输入插入学生的年龄:");
scanf("%d", &C->stu[pos].age);
printf("请输入插入学生的成绩:");
scanf("%d", &C->stu[pos].score);
printf("\n");
//人数变化
C->len++;
printf("插入成功\n");
return 0;
}
//任意位置删除学生
int class_delete_pos(classptr C,int pos)
{
//判断
if(NULL == C || class_empty(C) || pos < 0 || pos >=C->len)
{
printf("插入失败\n");
return -1;
}
for(int i=pos;i<C->len;i++)
{
C->stu[i] = C->stu[i+1];
}
C->len--;
printf("删除成功\n");
return 0;
}
//查找并输出
int class_search_name(classptr C,char name[])
{
//判断
if(NULL == C || class_empty(C))
{
printf("查找失败\n");
return -1;
}
for(int i=0;i<C->len;i++)
{
if(strcmp(name,C->stu[i].name)==0)
{
return i;
}
}
return 0;
}
int class_search_age(classptr C,int age)
{
//判断
if(NULL == C || class_empty(C))
{
printf("查找失败\n");
return -1;
}
for(int i=0;i<C->len;i++)
{
if(age == C->stu[i].age)
{
return i;
}
}
return 0;
}
int class_search_score(classptr C,int score)
{
//判断
if(NULL == C || class_empty(C))
{
printf("查找失败\n");
return -1;
}
for(int i=0;i<C->len;i++)
{
if(score == C->stu[i].score)
{
return i;
}
}
return 0;
}
#ifndef ZUOYE_H
#define ZUOYE_H
#include<myhead.h>
#define MAX 100
typedef struct Stu
{
char name[MAX]; //姓名
int age; //年龄
int score; //成绩
}Stu;
typedef struct Class //定义班级结构体类型
{
Stu stu[MAX]; //存放学生信息的数组
int len; //记录班级人数
}class,*classptr;
void print_menu(void); //菜单
//声明创建函数
classptr class_CJ();
//判空函数
int class_empty(classptr C);
//判满
int class_full(classptr C);
//录入
int class_add(classptr C);
//查看
void class_show(classptr C);
//任意位置插入学生
int class_add_pos(classptr C,int pos);
//任意位置删除学生
int class_delete_pos(classptr C,int pos);
//查找
int class_search_name(classptr C,char name[]);
int class_search_age(classptr C,int age);
int class_search_score(classptr C,int score);
#endif
-