1、利用结构体与共用体,做一个学生、教师信息管理系统
(1)1_stu_teacher_func.h
#ifndef __FUNC_H__
#define __FUNC_H__
typedef union
{
float score;
float jixiao;
}Test;
typedef struct school
{
int id;
char name[10];
Test t;
int flage;
}stuAtec;
void insert_stuMsg(stuAtec* pst,int *pnum);
void insert_tecMsg(stuAtec* pte,int *pnum);
void show_stuMsg(stuAtec* pst,int num);
void show_tecMsg(stuAtec* pte,int num);
void select_Msg(stuAtec* pa,int num);
#endif
(2)1_stu_teacher_func.c
#include <stdio.h>
#include "./1_stu_teacher_func.h"
void insert_stuMsg(stuAtec* pst,int *pnum)
{
printf("请输入学生id>>>");
scanf("%d",&((pst+*pnum)->id));
getchar();
printf("请输入学生姓名>>>");
scanf("%s",((pst+*pnum))->name);
getchar();
printf("请输入学生成绩>>>");
scanf("%f",&(pst[*pnum].t.score));
getchar();
printf("请输入学生的标签>>>");
scanf("%d",&((pst+*pnum)->flage));
getchar();
(*pnum)++;
return;
}
void insert_tecMsg(stuAtec* pte,int *pnum)
{
printf("请输入老师id>>>");
scanf("%d",&((pte+*pnum)->id));
getchar();
printf("请输入老师姓名>>>");
scanf("%s",((pte+*pnum))->name);
getchar();
printf("请输入老师绩效>>>");
scanf("%f",&(pte[*pnum].t.jixiao));
getchar();
printf("请输入老师的标签>>>");
scanf("%d",&((pte+*pnum)->flage));
getchar();
(*pnum)++;
return;
}
void show_stuMsg(stuAtec* pst,int num)
{
int i;
int count1=0;
for(i=0;i<num;i++)
{
if(pst[i].flage==0)
{
printf("%d %s %g %d\n",pst[i].id,pst[i].name,pst[i].t.score,pst[i].flage);
++count1;
}
}
printf("总记录数为:%d\n",count1);
}
void show_tecMsg(stuAtec* pte,int num)
{
int i;
int count2=0;
for(i=0;i<num;i++)
{
if(pte[i].flage==1)
{
printf("%d %s %g %d\n",pte[i].id,pte[i].name,pte[i].t.jixiao,pte[i].flage);
++count2;
}
}
printf("总记录数为:%d\n",count2);
}
void select_Msg(stuAtec *pa,int num)
{
int i,flage,id;
printf("请输入要查找的数据标志(老师为1,学生为0)>>>");
scanf("%d",&flage);
getchar();
printf("请输入要查找信息的id>>>>");
scanf("%d",&id);
getchar();
for(i=0;i<num;i++)
{
if(flage==pa[i].flage && id==pa[i].id)
{
if(flage==0)
{
printf("此信息是学生信息\n");
printf("%d %s %g %d\n",pa[i].id,pa[i].name,pa[i].t.score,pa[i].flage);
}
else if(flage==1)
{
printf("此信息是老师信息\n");
printf("%d %s %g %d\n",pa[i].id,pa[i].name,pa[i].t.jixiao,pa[i].flage);
}
else
{
printf("查无此信息\n");
}
}
}
}
(3)schoolmsg.c
#include <stdio.h>
#include "./1_stu_teacher_func.h"
#define N 100
int main(int argc, const char *argv[])
{
stuAtec st[N];
int num=0;//学生和老师信息个数
int choose;
while(1)
{
printf("-------------------1.插入学生信息---------------------\n");
printf("-------------------2.插入教师信息---------------------\n");
printf("-------------------3.遍历学生信息---------------------\n");
printf("-------------------4.遍历学生信息---------------------\n");
printf("-------------------5.查找信息---------------------\n");
printf("-------------------6.修改信息---------------------\n");
printf("-------------------7.退出---------------------\n");
printf("请选择要执行的业务:");
scanf("%d",&choose);
getchar();
switch(choose)
{
case 1:
insert_stuMsg(st,&num);
printf("num=%d__%d__\n",num,__LINE__);
break;
case 2:
insert_tecMsg(st,&num);
break;
case 3:
show_stuMsg(st,num);
break;
case 4:
show_tecMsg(st,num);
break;
case 5:
select_Msg(st,num);
break;
case 6:
update_Msg(st,num);
case 7:
goto END;
defulat:
printf("输入错误!\n");
}
}
END:
return 0;
}
(4)运行结果
ubuntu@ubuntu:1_30_test$ gcc schoolmsg.c 1_stu_teacher_func.c
ubuntu@ubuntu:1_30_test$ ./a.out
-------------------1.插入学生信息---------------------
-------------------2.插入教师信息---------------------
-------------------3.遍历学生信息---------------------
-------------------4.遍历学生信息---------------------
-------------------5.查找信息---------------------
-------------------6.修改信息---------------------
-------------------7.退出---------------------
请选择要执行的业务:1
请输入学生id>>>1
请输入学生姓名>>>dd
请输入学生成绩>>>55
请输入学生的标签>>>0
num=1__27__
-------------------1.插入学生信息---------------------
-------------------2.插入教师信息---------------------
-------------------3.遍历学生信息---------------------
-------------------4.遍历学生信息---------------------
-------------------5.查找信息---------------------
-------------------6.修改信息---------------------
-------------------7.退出---------------------
请选择要执行的业务:5
请输入要查找的数据标志(老师为1,学生为0)>>>0
1