初出茅庐的小李第14篇博客之嵌入式c语言实现一个简单学生管理系统

#include
#include

typedef struct student
{
	int num;
	char name[100];
	float score;
}stu;
stu s[100];//结构体数组
void menu(void);//功能菜单 
int xuehao_chazhao(int num);//检测学号是否冲突,不冲突返回1,冲突返回0
void add_stu(void);//增加学生信息count++
void dele_stu(void); //删除学生信息count--
void change_stu(void); //改变学生信息
void chazhao_stu(void); //查找学生信息
void look_allstu(void); //查看全部学生信息
int find_stu(int num);//寻找学生是否存在,按学号进行检索
int find_stu_i(int num);//寻找学生是否存在,并返回所在位置
int i;//菜单选择开关
int count=0;//系统人数累计
int main()
{
	menu();
	 while(1)
	 {
		printf("当前系统总学生人数为:%d人 \n",count);
		printf("请输入想操作项目:");
		scanf("%d",&i); 
		 switch(i)
		  {
			 case 0:look_allstu();break;
			 case 1:add_stu() ;break;
			 case 2:dele_stu();break;
			 case 3:change_stu();break;
			 case 4:chazhao_stu(); break;
			 case 5:printf("欢迎您再次使用改系统,再见!\n");return 0;
		  }
    }
	
}

void menu(void)//功能菜单 
{	
	printf("*************************************************\n\n");
	printf("操作号\t对应功能描述    *************************/\n");
	printf("-------------------------------------------------/\n");
	printf("  0\t查看全部信息\t*************************/\n");
	printf("-------------------------------------------------/\n");
	printf("  1\t增加学生信息\t*************************/\n");	
	printf("-------------------------------------------------/\n");
	printf("  2\t删除学生信息\t*************************/\n");
	printf("-------------------------------------------------/\n");
	printf("  3\t修改学生信息\t*************************/\n");
	printf("-------------------------------------------------/\n");  
	printf("  4\t查找学生信息\t*************************/\n");
	printf("-------------------------------------------------/\n");  
	printf("  5\t退出学生系统\t*************************/\n");
	printf("-------------------------------------------------/\n\n");  
} 

void add_stu(void) //增加学生信息
{
p1:printf("请输入需要增加的学生学号:");
	scanf("%d",&s[count].num);
	getchar();
	// printf("输入学号后count当前值是:%d\n",count);
	printf("请输入需要增加的学生姓名:");
	gets(s[count].name); 
	// printf("输入姓名后count当前值是:%d\n",count);
	printf("请输入需要增加的学生成绩:");
	scanf("%f",&s[count].score); 
	getchar();
	printf("输入成绩后count当前值是:%d\n",count);
	printf("该生学号%d\t该生姓名%s\t该生成绩%.2f\n",s[count].num,s[count].name,s[count].score);
	count++;//系统学生人数加1
	// printf("三者都输入完成后count当前值是:%d\n",count);
	// else if(xuehao_jc(s[count].num)==0)
	// {
		// printf("该生学号和系统中学生发生冲突\n");
		// goto p1;
	// }
     printf("是否继续增加学生信息?:('Y'/'N')");
	 if(getchar()=='Y')
	 {
		 goto p1;
	 }
	 else
	 {
		 printf("欢迎下次使用此功能--------------\n");
	 }
} 

void dele_stu(void) //删除学生信息
{
	char KEY;
	int i;
	int num;
	printf("请输入输入要删除的学生学号: \n");
	scanf("%d",&num);
	getchar();
	i=find_stu_i(num);
	if(find_stu(num)==1)
	{
		printf("改学生信息为: \n");
		printf("学号:%d\n",s[i].num);
		printf("姓名:%s\n",s[i].name);
		printf("成绩:%.2f\n",s[i].score);
	}
	printf( "你确认要删除改同学的信息吗?(Y/N):");
	scanf( "%c",&KEY);
	if (KEY=='Y'|| KEY=='y') 
	{
		for (i=i;i<count;i++) 
		{
			s[i].num=s[i+1].num;
			 strcpy(s[i].name,s[i+1].name); //姓名挪动
			s[i].score=s[i+1].score;
		}
		count--;//
	}
} 

void change_stu(void) //改变学生信息
{
	char KEY;
	int i;
	int num;
	int m;
    printf("请输入待修改的学生学号:");
	scanf("%d",&num);
	getchar();
	i=find_stu_i(num);
	if(find_stu(num)==1)
	{
		printf("改学生信息为: \n");
		printf("学号:%d\n",s[i].num);
		printf("姓名:%s\n",s[i].name);
		printf("成绩:%.2f\n",s[i].score);
		printf( "你确认要修改该同学的信息吗?(Y/N):");
		scanf( "%c",&KEY);
		if (KEY=='Y'|| KEY=='y') 
		{
			printf("请选择要修改的内容的编号修改全部0、修改学号1、修改名字2、修改成绩3)");
			scanf("%d",&m);
			switch(m)
			{
				case 0:
				{
					printf("请重新输入该学生全部信息:\n");
					printf("学号:\n");
					scanf("%d",&s[i].num);
					getchar();
					printf("姓名:\n");
					scanf("%s",s[i].name); 
					printf("成绩:\n");
					scanf("%f",&s[i].score); 
				}
				break;
				case 1:
				{
					printf("请输入需要修改的学生学号:");
					scanf("%d",&s[i].num);
					getchar();
				}
				break;
				case 2:
				{
					printf("请输入需要修改的学生姓名:");
					gets(s[i].name); 
				}
				break;
				case 3:
				{
					printf("请输入需要增加的学生成绩:");
					scanf("%f",&s[i].score); 
					getchar();
				}
				break;
			}
		}
	}
    else
        printf("没有该学生信息!\n");
}
 
void chazhao_stu(void) //查找学生信息
{
	int flag;
	int num;
	int i;
p2: printf("请输入要查找同学的学号:\n");
    scanf("%d",&num);
	getchar();
    for(i=0;i<count;i++)
	{
        if(s[i].num==num)
		{
            printf("查找成功!\n");
			printf("改学生的学号为:%d\n",s[i].num);
            printf("该学生的姓名为:%s\n",s[i].name);
            printf("该学生的成绩为:%.2f\n",s[i].score);
			flag=1;
			break;
        }
		else
			flag=0;
	}
		if(flag==0)
			printf("未找到此人此人\n");
		printf("是否继续查找学生信息?:('Y'/'N')");
	    if(getchar()=='Y')
		{
			goto p2;
		}
		else
		{
			printf("欢迎下次使用此功能--------------\n");
		}
}
int find_stu(int num) //查找学生信息
{
	int flag;
	int i;
    for(i=0;i<count;i++)
	{
        if(s[i].num==num)
		{
			flag=1;
			break;
        }
		else
			flag=0;
	}
    return flag;
}
int find_stu_i(int num) //查找某个学生的下标
{
	int i;
    for(i=0;i<count;i++)
        if(s[i].num==num)
			return i;
    return -1;
}
void look_allstu(void) //查看全部学生信息
{    
	for(i=0;i<count;i++)
	{
		printf("学号%6d\t姓名%5s\t成绩%.2f\t\n",s[i].num,s[i].name,s[i].score);	
	}
}

你可能感兴趣的:(笔记)