C语言创建简单学生成绩管理系统(数组)

C语言创建简单成绩管理系统

数组实现

头文件及宏定义

#define SIZE 10
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct student
{
	char Name[8];
	char ID_number[10];
	int math;
	int english;
	student()
	{
		int i;
		for(i=0;i<8;i++){
			Name[i]='\0';
			ID_number[i]='\0';
		}
	}
}Student;

排序函数

void swap_students(Student &a,Student &b)
{
	Student temp;
	temp=a;
	a=b;
	b=temp;
}
void bubble_sort(Student *S)
{
	int i,j;
	for(i=0;i<SIZE;i++){
		for(j=i+1;j<SIZE;j++){
			if(strcmp(S[i].ID_number,S[j].ID_number)>0){
				swap_students(S[i],S[j]);
			}
		}
	}
}

输入函数

void input_data(Student &S)
{
	printf("请输入学生姓名:");
	scanf("%s",S.Name);
	printf("请输入学生学号:");
	scanf("%s",S.ID_number);
	start_m:printf("请输入高数成绩:");
	scanf("%d",&S.math);
	if(S.math<0||S.math>100){
		printf("请输入0-100的值\n");
		goto start_m;
	}
	start_e:printf("请输入英语成绩:");
	scanf("%d",&S.english);
	if(S.english<0||S.english>100){
		printf("请输入0-100的值\n");
		goto start_e;
	}
}
void Input_Students(Student *S)
{
	int i,num;
	printf("请输入学生数量:");
	scanf("%d",&num);
	for(i=0;i<num;i++){
		input_data(S[i]);
	}
	bubble_sort(S);
}

删除函数

void Del_Student(Student *S,char del[])
{
	int i,flag=0;
	for(i=0;i<SIZE;i++){
		if(strcmp(del,S[i].ID_number)==0){
			S[i].math=-1;
			S[i].english=-1;
			strcpy(S[i].Name,"00000000");
			strcpy(S[i].ID_number,"0000000000");
			flag=1;
		}
	}
	if(flag==0){
		printf("未找到\n");
	}
}

查询函数

void Inquire_Student(Student Stu[],char inq[])
{
	int i,flag=0;
	for(i=0;i<SIZE;i++){
		if(strcmp(inq,Stu[i].ID_number)==0){
			printf("姓名:%s 学号:%s 高数:%d 英语:%d",Stu[i].Name,Stu[i].ID_number,Stu[i].math,Stu[i].english);
			flag=1;
			break;
		}
	}
	if(flag==0){
		printf("未找到\n");
	}
}

打印函数

void Print_Students(Student Stu[])
{
	int i;
	for(i=0;i<SIZE;i++){
		if(Stu[i].english<0||Stu[i].english>100){
			continue;
		}
		printf("姓名:%s 学号:%s 高数:%d 英语:%d\n",Stu[i].Name,Stu[i].ID_number,Stu[i].math,Stu[i].english);
	}
}

储存函数

void Save_Students(Student *S)
{
	int i;
	char str[16]={'\0'};
	printf("请输入文件名:");
	scanf("%s",str);
	char Enter='\n';
	FILE *fp;
	if((fp = fopen(str,"w"))==NULL){
		printf("打开文件出错!\n");
		return ;
	}
	for(i=0;i<SIZE;i++)
	{
		if(S[i].english<0||S[i].english>100){
			continue;
		}
		fprintf(fp,"姓名:%s 学号:%s 高数:%d 英语:%d%c",S[i].Name,S[i].ID_number,S[i].math,S[i].english,Enter);
	}
	fclose(fp);
	printf("保存完成\n");
}

main函数菜单

int main()
{
	int sl;
	char del[10]={'\0'};
	char inq[10]={'\0'};
	Student Stu[SIZE];
	do
	{
		start:printf("菜单\n输入学生成绩...1\n删除学生成绩...2\n查询学生成绩...3\n打印全部学生信息...4\n退出并存入文件...0\n");
		scanf("%d",&sl);
		switch(sl){
		case 0:Save_Students(Stu);exit(0);
		case 1:Input_Students(Stu);system("pause");system("cls");break;
		case 2:printf("请输入要删除的学生学号:");scanf("%s",del);Del_Student(Stu,del);system("pause");system("cls");break;
		case 3:printf("请输入要查询的学生学号:");scanf("%s",inq);Inquire_Student(Stu,inq);system("pause");system("cls");break;
		case 4:Print_Students(Stu);system("pause");system("cls");break;
		default:goto start;
		}
	}while(1);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值