C语言课设---学生成绩系统(仅供参考)

C语言课设—学生成绩系统-程序1(仅供参考)

第一次弄这东西,不足之处还望各位理解、指出。
在此龙无痕谢谢大家(抱拳)
还请大家多多支持(∩_∩)

#主要的功能:
1.学生信息的录入。(逐一录入学生的学号、姓名、语数英成绩)
2.学生信息的查询。(通过学号单查询与全部查询)
3.学生信息的更改。(通过学号查询更改)
4.学生信息的删除。
5.以上的功能的数据存放在文件中。

界面效果过下:其他内容大家可以试试
在这里插入图片描述





/*微信公众号:IT小菜鸟龙无痕/QQ(龙无痕):1365149109
出品,码字不容易,还请多多支持(在此谢过)*/
#include <stdio.h>
#include <stdlib.h>

/*定义学生结构体*/  
typedef struct 
{
	char ID[20];		//学号
	char Name[20];		//姓名
	float Chinese;		//语文成绩	
	float Math;			//数学成绩
	float English;		//英语成绩
}Student;

/*声明函数*/
void InputStudent();	//录入学生信息
void PrintStudent();	//查询学生信息
void Student_DisplaySingle();	//显示单条学生信息
void Student_Display();	//显示全部学生信息
void ChangeStudent();	//更改学生信息
void Student_DisplaySingle_(int index);	//显示单条学生信息2
void DeleteStudent(); 	//删除学生信息
void IO_ReadInfo();		//将学生信息从文件中读出
void IO_WriteInfo();	//将学生信息写入文件
int Student_SearchByIndex(char id[]);	//通过学号返回数组下标

/*声明学生数组及学生数量*/  
Student students[1000];  
int num=0;

/***********主程序*********/ 
int main()  
{ 
    int choose;  

    IO_ReadInfo();          //读取文件

    while(1)  
    {  
		printf("*****学生成绩管理系统*****\n\n");
		printf("1.学生成绩信息录入\n");
		printf("2.学生成绩信息查询\n");
		printf("3.学生成绩信息更改\n");
		printf("4.学生成绩信息删除\n");
		printf("0.退出\n\n");
		printf("**************************\n");
		printf("请选择<0~4>:");
		scanf("%d",&choose);
		getchar();
			
		switch (choose)
		{
			case 1://1.录入学生信息
				system("cls");//清屏
				InputStudent();
				break;
				
			case 2://2.查询学生信息
				system("cls");
				PrintStudent();
				break;
			
			case 3://3.更改学生信息
				system("cls");
				ChangeStudent();
				break;
				
			case 4://4.删除学生信息
				system("cls");
				DeleteStudent();
				break;
				
			case 0://0.退出系统
				exit(0);
				break;
			default://提示输入不符合要求的输入
				printf("输入有误,没有该功能,请重新输入!\n\n");
				system("pause");  //暂停,按任意键返回
				system("cls");    
				break;
		}
		 IO_WriteInfo();	//写入文件
	
	}
}

/*将学生信息从文件(d:\\1.txt)中读出*/  
void IO_ReadInfo()  
{ 
    FILE *fp;  
    int i;  

    if ((fp=fopen("d:\\1.txt","rb"))==NULL)  
    {  
        printf("不能打开文件!\n");  
        return;  
    }

    if (fread(&num,sizeof(int),1,fp)!=1)  
    {  
        num=-1;  
    } 
    else  
    {  
        for(i=0;i<num;i++)  
        {  
            fread(&students[i],sizeof(Student),1,fp);  
        }  
    } 

    fclose(fp);  
}

/****1、录入学生记录*****/  
void InputStudent()  
{  
    while(1)  
    {
        printf("请输入学号:");  
        scanf("%s",&students[num].ID);  
        getchar();  
        printf("请输入姓名:");  
        scanf("%s",&students[num].Name);  
        getchar(); 
        printf("请输入语文成绩:");  
        scanf("%f",&students[num].Chinese);
		getchar();  
		printf("请输入数学成绩:");  
        scanf("%f",&students[num].Math);
		getchar();   
		printf("请输入英语成绩:");  
        scanf("%f",&students[num].English);
		getchar();   
        num++;

        printf("是否继续?,继续请按任意键,否则输入n:"); 
        if (getchar()=='n')  
        {
        	printf("录入成功!\n");
        	system("pause");
			system("cls");  
            break;
        }  
     }  
}

/****2、查询学生信息******/  
void PrintStudent()
{
	while(1)
	{
		char index;
		
		printf("1.单条信息查询\n");
		printf("2.全部信息查询\n");
		printf("0.退出\n");
		printf("请输入查询方式(0~2):");
		scanf("%d",&index);
		getchar();
		if (index==0) 
		{
			system("pause");
			system("cls");
			break;
		}
		else
		{
			switch(index)  
        	{ 
	        case 1:
	        	system("cls"); 
				Student_DisplaySingle();
				system("cls"); 
	            break; 
	
	        case 2: 
	            Student_Display();
	            system("pause");
	            system("cls"); 
	            break;
	            
	        default:
				printf("输入有误,没有该功能,请重新输入!\n\n");
				system("pause");  
				system("cls");
	            
	            
        	}  
		}  

	
		
	}
	
}

/*通过学号返回数组下标*/   
int Student_SearchByIndex(char id[])  
{
    int i;  
    for (i=0;i<num;i++)  
    {
        if (strcmp(students[i].ID,id)==0)  
        {
            return i;  
        }  
    }  
    return -1;   
}

/*显示单条学生记录*/  
void Student_DisplaySingle()   
{
	while(1)
	{
		char id[20];  
		int index;
	
	    printf("请输入要查询的学生的学号:");  
	    scanf("%s",&id); 
	    getchar();  
	    index=Student_SearchByIndex(id);
	    
	    if (index==-1) 
	    {  
	        printf("学生不存在!\n"); 
	    } 
	    else  
	    {  
			printf("你要查询的学生信息为:\n"); 
			printf("     学号      姓名    语文成绩   数学成绩   英语成绩\n");  
			printf("-------------------------------------------------------------\n");  
			printf("%10s%8s  %8.2f    %8.2f    %8.2f\n",students[index].ID,students[index].Name,students[index].Chinese,students[index].Math,students[index].English);  
	     }  
	
	     printf("是否继续?,继续请按任意键,否则输入n:"); 
	     if (getchar()=='n')
	     {
	     	 system("cls");
	     	 break;
	     }
	       
	
	}
}

/*显示全部学生信息*/  
void Student_Display()  
{  
    int i;  
    printf("     学号      姓名    语文成绩   数学成绩   英语成绩\n");   
    printf("-------------------------------------------------------------\n");  

    for (i=0;i<num;i++)  
    {  
        printf("%10s%8s  %8.2f   %8.2f   %8.2f\n",students[i].ID,students[i].Name,students[i].Chinese,students[i].Math,students[i].English);  
    }  

}


/******3、更改学生信息**********/  
void ChangeStudent()  
{  
    while(1) 
    {  
        char id[20]; 
        int index; 
        printf("请输入要修改的学生的学号:"); 
        scanf("%s",&id);  
        getchar();  
        index=Student_SearchByIndex(id);  
        if (index==-1)  
        {  
            printf("该学生不存在!\n"); 
         }
        else  
        {  
            printf("你要修改的学生信息为:\n"); 
            Student_DisplaySingle_(index);  
            printf("-- 请输入新值--\n"); 
            printf("请输入学号:");  
            scanf("%s",&students[index].ID);  
            getchar();  
            printf("请输入姓名:");  
            scanf("%s",&students[index].Name);  
            getchar();  
            printf("请输入语文成绩:");  
            scanf("%f",&students[index].Chinese);
            getchar();  
            printf("请输入数学成绩:");  
            scanf("%f",&students[index].Math);
            getchar();  
            printf("请输入英语成绩:");  
            scanf("%f",&students[index].English);  
            getchar();  

         }  

         printf("是否继续?,继续请按任意键,否则输入n:"); 
         if (getchar()=='n')  
         {  
        	printf("更改成功!\n");
        	system("pause");
			system("cls");
			break; 
         }  

     }  

}

/*显示单条学生记录*/  
void Student_DisplaySingle_(int index)   
{
    printf("     学号      姓名    语文成绩 数学成绩 英语成绩\n");  
    printf("-------------------------------------------------------------\n");  
    printf("%10s%8s  %8.2f   %8.2f%  8.2f\n",students[index].ID,students[index].Name,students[index].Chinese,students[index].Math,students[index].English);  
}

/****4、删除学生信息****/  
void DeleteStudent()  
{ 
    int i;  
    while(1)  
    {  
        char id[20];  
        int index;  
        printf("请输入要删除的学生的学号:");  
        scanf("%s",&id);  
        getchar();  
        index=Student_SearchByIndex(id);  
        if (index==-1)  
        {  
            printf("学生不存在!\n");  
        }  
        else  
        {  
            printf("你要删除的学生信息为:\n"); 
            Student_DisplaySingle_(index);  
            printf("是否真的要删除?删除请按y,否则任意键:");  
            if (getchar()=='y')  
            {  
                for (i=index;i<num-1;i++)  
                {  
                    students[i]=students[i+1];//把后边的对象都向前移动  
                } 
                num--;
                printf("已删除!\n");
                getchar();  
             }  
   			else
   			{
   				getchar();
           		printf("已取消!\n");
   			}
         }  

         printf("是否继续删除?,继续请按任意键,否则输入n:"); 
         if (getchar()=='n')  
         { 
        	printf("已保存!\n");
        	system("pause");
			system("cls");
			break; 
         }  
     }  
}



/*将学生信息写入文件(d:\\1.txt)*/  
void IO_WriteInfo()
{  
    FILE *fp; 
    int i;  
    if ((fp=fopen("d:\\1.txt","wb"))==NULL)  
    {  
        printf("不能打开文件!\n");  
        return;  
    }  
    if (fwrite(&num,sizeof(int),1,fp)!=1)  
    {  
        printf("写入文件错误!\n");  
    }  
    for (i=0;i<num;i++)  
    {  
        if (fwrite(&students[i],sizeof(Student),1,fp)!=1)  
        {  
            printf("写入文件错误!\n");  
        }  
    }  
    fclose(fp);  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值