C高级第7天

 写出一个信息录入功能:

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

运行结果

C高级第7天_第1张图片

 

 使用Makefile管理多文件

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)

你可能感兴趣的:(c语言学习,c语言,算法,开发语言)