初出茅廬的小李第14篇博客之嵌入式c語言實現一個簡單學生管理系統

#include<stdio.h>
#include<string.h>

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);	
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章