C语言结构体实现学生管理系统(含文件导入导出功能)

总体功能:
大体框架与功能都有,其他功能自行删改嘻嘻。
void input(struct student stu[]); //输入
void amend(struct student stu[]); //修改
void remove(struct student stu[]); //删除
void namefind(struct student stu[]);//按名字查询
void numfind(struct student stu[]);//按学号查询
void classfind(struct student stu[]);//按班级查询
void printfsort1(struct student stu[]); //总分排名
void printfsort2(struct student stu[]);//单科排名
void printfsort3(struct student stu[]);//优秀率
void savefile(struct student stu[]);//保存成文件
void readfile(struct student stu[]);//导入文件

C语言结构体实现学生管理系统(含文件导入导出功能)_第1张图片
导入文件的格式为txt 内容排版例子:

17001018 廖 10 高数 91 英语 89
17001019 凌 10 高数 61 英语 59
17001020 刘 10 高数 98 英语 81
17001021 陆 10 高数 99 英语 99
17001022 达 11 高数 81 英语 89
17001118 蒙 11 高数 91 英语 69
17001119 梁 11 高数 71 英语 59
17001120 杜 11 高数 88 英语 93
17001121 黄 11 高数 69 英语 80
17001122 李 11 高数 91 英语 99
17001016 萧 10 高数 71 英语 69
17001027 冰 10 高数 98 英语 89
17001028 炎 10 高数 89 英语 90
17001037 杨 10 高数 28 英语 49
17001038 韩 10 高数 59 英语 60
17001021 飞 10 高数 89 英语 99

代码如下:

#include "stdafx.h"
#include
#include //清屏 system("cls");
#include
#define N 30

void input(struct student stu[]);     //输入
void amend(struct student stu[]);  //修改
void remove(struct student stu[]); //删除
void namefind(struct student stu[]);//按名字查询
void numfind(struct student stu[]);//按学号查询
void classfind(struct student stu[]);//按班级查询
void printfsort1(struct student stu[]); //总分排名
void printfsort2(struct student stu[]);//单科排名
void printfsort3(struct student stu[]);//优秀率
void savefile(struct student stu[]);//保存成文件
void readfile(struct student stu[]);//导入文件

int n = 1;
struct student
{	
	int num;
	char name[20];
	int Class;
	char classname1[20]; 
	int score1;
	char classname2[20]; 
	int score2;
	int score;
	
};

int main()
{
	while(1)
	{
		system("cls");
		int a;
		struct student stu[N],*p=stu;
		printf("----------------------------------------------------\n");
		
		printf("               学生成绩管理系统                     \n");
		
		printf(" 【1】 输入学生信息\n");
		printf(" 【2】 修改学生信息\n");
		printf(" 【3】 删除学生信息\n");
		printf(" 【4】 按姓名查询学生信息\n");
		printf(" 【5】 按学号查询学生信息\n");
		printf(" 【6】 按班级查询学生信息\n");
		printf(" 【7】 查看学生总分排名信息\n");
		printf(" 【8】 查看学生单科排名信息\n");
		printf(" 【9】 查看学生优秀率信息\n");
		printf(" 【10】 导入学生信息文件\n");
		printf(" 【11】 保存学生信息文件\n");
		printf(" 【0】 退出系统\n");
		
		printf("----------------------------------------------------\n");
		
		printf(" 输入0到11选择系统功能\n");
		scanf("%d",&a);
		
		switch(a)
		{
		case 0: printf("		退出系统成功!\n");system("pause");return 0;
		case 1: input(p);
			break;
		case 2: amend(p);
			break;
		case 3: remove(p);
			break;
		case 4: namefind(p);
			break;
		case 5: numfind(p);
			break;
		case 6: classfind(p);
			break;
		case 7: printfsort1(p);
			break;
		case 8: printfsort2(p);
			break;
		case 9: printfsort3(p);
			break;
		case 10: readfile(p);
			break;
		case 11: savefile(p);
			break;
			
		default: 		printf(" 输入错误,请重新输入\n");system("pause");break;
			
		}
	
	}
	return 0;
	
}

void input(struct student stu[])//OK
{
	printf(" 输入添加学生信息的人数\n");
	int b,c=0;
	scanf("%d",&c);
	for(int i=1;i<=c;i++)
	{
		
		printf("  第%d个学生 输入:学号 名字 班级 课程名字1 成绩1 课程名字2 成绩2 \n",i);
		scanf("%d%s%d%s%d%s%d",&stu[n].num,&stu[n].name,&stu[n].Class,&stu[n].classname1,&stu[n].score1,&stu[n].classname2,&stu[n].score2);
		
		stu[n].score=stu[n].score1+stu[n].score2;
		n++;
		
	}
	if(c!=0&&c>0)printf("\n添加成功!\n\n");  
	system("pause");  
	system("cls");
	
	printf(" 输入0结束添加,输入1继续添加。\n");
	scanf("%d",&b);
	switch(b)
	{
	case 0: printf("		结束添加成功!\n");
		system("pause");
		break;
	case 1: input(stu); 
		break;
	default: 		printf(" 输入错误,请重新输入\n");system("pause");
		break;
	}
	
}
void amend(struct student stu[])  //修改
{
	int i,j,o,l,b;  
    char a[20]; 
	printf(" 选择修改方式1.学号 2.姓名\n");
		scanf("%d",&l);
	switch(l)
	{
	case 1:
	printf("输入修改学生的学号:\n");
	scanf("%d",&b); 
	for(i=0;i0)
	{
		printf("学号:%d\n",stu[b].num);  
		printf("姓名:%s\n",stu[b].name);  
		printf("班级:%d\n",stu[b].Class);  
		printf("%s的成绩%d\n",stu[b].classname1,stu[b].score1);  
		printf("%s的成绩%d\n",stu[b].classname1,stu[b].score2);  
		printf("总成绩:%d\n\n",stu[b].score); 
	}
	else printf("输入错误或查询学生不存在\n");
	
	system("pause");  
    system("cls"); 
}
void printfsort1(struct student stu[]) //总分排名OK
{
	struct student t;  
    int i,j;  
    printf("	%d 个学生总分排名:\n",n-1);  
    for(i=1;i=180&&stu[i].Class==j)    
			{  
				printf("\t%d\t%s\t%d\t%d\n",stu[i].num,stu[i].name,stu[i].Class,stu[i].score); 
				count1++;
			}  
			
		} 
		if(count2==0) printf("没有达到优秀的学生\n");
		else
		{
		s=(float)count1/count2;
		printf("%d班优秀率为:%f\n\n",j,s);
		}
		count1=count2=0;
		printf("\t%d班不及格学生名单:\n",j);
		printf("\t学号\t\t名字\t班级\t总分\n"); 
		for(i=1;i=180)    
			{  
				printf("\t%d\t%s\t%d\t%d\n",stu[i].num,stu[i].name,stu[i].Class,stu[i].score); 
				count1++;
			}  
			
		}  
		if(count1==0) printf("没有达到优秀的学生\n");
		s=(float)count1/(n-1);
		printf("年级优秀率为:%f\n\n",s);
		count1=count2=0;
		printf("\t年级不及格学生名单:\n");
		printf("\t学号\t\t名字\t班级\t总分\n"); 
		for(i=1;i

蟹蟹~

你可能感兴趣的:(C语言)