1、输入学生和老师的信息;
2、遍历信息
3、修改信息
4、删除信息
5、退出输入程序
头文件
#ifndef __FUNC_H__
#define __FUNC_H__
#include
union msg
{
int score;
short jixiao;
};
typedef struct
{
int id;
char name[20];
int age;
char flag; // s 学生 t:老师
union msg t;
} Stu;
void insert_stu(Stu *pinfo, int index); // Stu* pinfo = info
void show_msg(Stu *pinfo, int index); // Stu* pinfo = info
void insert_tec(Stu *pinfo, int index);
void del_msg(Stu *pinfo,int index);
void res_msg(Stu *pinfo,int index);
#endif
主函数
#include
#include "./08_func.h" //在预处理步骤展开
int main(int argc, const char *argv[])
{
union msg t;
Stu info[10]; // 定义结构体数组,存储学生和老师的信息
int index = 0; // 目前有效数据是0个
int choose = 0;
while (1)
{
printf("1. 录入学生\n");
printf("2. 录入老师\n");
printf("3. 遍历\n");
printf("4. 修改信息\n");
printf("5. 删除\n");
printf("6. 退出\n");
printf("请输入>>> ");
scanf("%d", &choose);
switch (choose)
{
case 1:
// 录入学生
insert_stu(info, index);
index++;
break;
case 2:
// 录入老师
insert_tec(info, index);
index++;
break;
case 3:
// 遍历数组
show_msg(info, index);
break;
case 4:
res_msg(info,index);
break;
case 5:
del_msg(info,index);
index--;
break;
case 6:
// 退出
goto END;
default:
printf("输入错误\n");
}
}
END:
return 0;
}
功能函数:输入学生信息
#include "./08_func.h"
#include
// 输入学生
void insert_stu(Stu *pinfo, int index) // Stu* pinfo = info
{
// 从终端获取一个学生的姓名,年龄,成绩
printf("请输入学生姓名>>> ");
char name[20];
scanf("%s", name);
printf("请输入学生年龄>>> ");
int age;
scanf("%d", &age);
printf("请输入学生成绩>>> ");
int score;
scanf("%d", &score);
// 存储到main函数定义好的info数组中
strcpy((pinfo + index)->name, name);
(pinfo + index)->age = age;
(pinfo + index)->t.score = score;
(pinfo+index)->id=index;
(pinfo + index)->flag = 's'; // 代表是个学生
return;
}
功能函数:输入老师信息
void insert_tec(Stu *pinfo, int index)
{
printf("请输入老师姓名>>>");
char name[20];
scanf("%s", name);
printf("请输入老师年龄>>>");
int age;
scanf("%d", &age);
printf("请输入老师绩效>>>");
int jixiao;
scanf("%d", &jixiao);
(pinfo+index)->id=index;
strcpy((pinfo + index)->name, name);
(pinfo + index)->age = age;
(pinfo + index)->t.jixiao = jixiao;
(pinfo + index)->flag = 't';
return;
}
功能函数:遍历信息
void show_msg(Stu *pinfo, int index) // Stu* pinfo = info
{
for (int i = 0; i < index; i++)
{
printf("id=%d\tname=%s\tage=%d\t",(pinfo+i)->id, (pinfo + i)->name, (pinfo + i)->age);
if ('s' == (pinfo + i)->flag){
printf("score=%d\n", (pinfo + i)->t.score);
}else{
printf("jixiao=%d\n", (pinfo + i)->t.jixiao);
}
}
return;
}
功能函数:修改信息
void res_msg(Stu *pinfo,int index){
int n;
char name[20]={0};
int age;
int score;
int jixiao;
printf("请输入要修改学员或老师的编号\n");
scanf("%d",&n);
for(int i=0;i>>");
scanf("%s",name);
memset(pinfo[i].name,0,strlen(pinfo[i].name));
strcpy(pinfo[i].name,name);
printf("请输入要修改的年龄>>>");
scanf("%d",&age);
pinfo[i].age=age;
if(pinfo[i].flag=='s'){
printf("请输入要修改的成绩>>>");
scanf("%d",&score);
pinfo[i].t.score=score;
}else{
printf("请输入要修改的绩效>>>");
scanf("%d",&jixiao);
pinfo[i].t.jixiao=jixiao;
}
printf("修改成功!\n");
}
}
return;
}
功能函数:删除信息
void del_msg(Stu *pinfo,int index){
int n;
printf("请输入需要删除的信息编号:\n");
scanf("%d",&n);
for(int i=0,j=0;i
运行结果
Target:=a.out
obj:=06_union.o 07_func.o
can:=-c -o
cc:=gcc
-include ./makefile.cfg
$(Target):$(obj)
$(cc) $^ -o $@
%.o:%.c
$(cc) $< $(can) $@
.PHONY:clean:
rm $(obj) $(Target)