⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 自动化0605姜楠200682091.c

📁 这是一个完整的c语言做的学生成绩管理平台
💻 C
📖 第 1 页 / 共 3 页
字号:
#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<string.h>
#include<math.h>
#define teacher_key	"111111"  //教师学生系统登入密码
#define student_key	"000000" 
#define ML	350
#define	N	100
#define GOOD 80//设置优秀分数
#define BAD 60//设置不及格分数
typedef struct student_information//学生信息结构体变量
{
	char number[20];
	char name[20];
	double score[3];
	double sum;
	double average;
}XX;
XX xx[N];
XX infor;
FILE *fp,*fp1;
int g,flag;
int kk;
char fname[N],fname1[N];//定义用来接收文件名的字符型数组
void welcome();
void menu(void);
void wait(void);
void delay(void);
void teacher_yz(void);
void student_yz(void);
void teacher_menu();
void student_menu();
int check_number1(char check[N]);
int check_number2(char check[N],int x);
int check_number3(char check[N]);
double check_number4(char check[N]);
void input(void);
void save_one();
void read();
void search();
void search_doc();
void search_1();
void search_2();
void add();
void drop(void);
void hgrade();
void hgrade_1();
void hgrade_2();
void hgrade_2_1();
void hgrade_2_2();
void hgrade_2_3();
void lgrade();
void lgrade_1();
void lgrade_2();
void lgrade_3();
void average();
void order();
void order_1();
void order_2();
void order_2_1();
void order_2_2();
void order_2_3();
void read_1();
void end();
void main()//主函数
{
	menu();
}
void menu(void)//登入人员属性分类函数
{
	char kind[N];
	int	r;
	while(1)
	{
		welcome();
		printf("\t\t请输入所属类别(输入数字1或2,以回车结束)\n");
		printf("\t\t\t<1>********教师********\n");
		printf("\t\t\t<2>********学生********\n");
		printf("\t\t\t您选:");
		scanf("%s",kind);
		r=check_number1(kind);//输入屏蔽
		if(r==1)
			break;
		else if(r==2)
			break;
		else
		{
			printf("\t\t输入有误请重新输入!\n");
			wait();
			system("cls");
		}
	}
	if(r==1)
	{
		wait();
		teacher_yz();
	}
	else
	{
		wait();
		student_yz();
	}
}
void wait(void) //输出等待函数
{
	int i;
	printf("\t\tPlease wait");
	for(i=1;i<7;i++)
	{
		delay();
		printf(".");
	}
	printf("\n");
}
void delay(void)//延时函数
{
	int i,j,k;
	for(i=0;i<ML;i++)
		for(j=0;j<ML;j++)
			for(k=0;k<ML;)
				k++;
}
int check_number1(char check[N])//对输入数字进行验证
{
	if(check[0]=='1')
	{
		if(check[1]=='\0')
			return(1);
		else
			return(0);
	}
	else if(check[0]=='2')
	{
		if(check[1]=='\0')
			return(2);
		else
			return(0);
	}
	else
		return(0);
}
void teacher_yz(void)//教师登入密码验证
{
	char key[N];
	int k;
	while(1)
	{
		system("cls");
		printf("\n\n\n");
		printf("\t\t***********************************************\n");
		printf("\t\t******************教师系统*********************\n");
		printf("\t\t***********************************************\n");
		printf("\t\t请输入密码:");	
		scanf("%s",key);
		k=strcmp(key,teacher_key);
		if(k!=0)
		{
			printf("\t\t输入有误,请重新输入!\n");
			wait();
		}
		else
			break;
	}
	teacher_menu();
}
void student_yz(void)//登入密码验证
{
	char key[N];
	int k;
	while(1)
	{
		system("cls");
		printf("\n\n\n");
		printf("\t\t***********************************************\n");
		printf("\t\t******************学生系统*********************\n");
		printf("\t\t***********************************************\n");
		printf("\t\t请输入密码:");	
		scanf("%s",key);
		k=strcmp(key,student_key);
		if(k!=0)
		{
			printf("\t\t输入有误,请重新输入!\n");
			wait();
		}
		else
			break;
	}
	student_menu();
}
void teacher_menu()//教师主选单
{
	char a[N],c[N];
	int b,r;
	int x1=1;
	flag=1;
	while(1)
	{
		while(1)
		{
			system("cls");
			printf("\t\t***********************************************\n");
			printf("\t\t*****************教师主选单********************\n");
			printf("\t\t***********************************************\n");			
			printf("	  \t\t(1)输入学生信息并新建文件\n");
			printf("	  \t\t(2)读取文件库中已有文件\n");
			printf("	  \t\t(3)查询学生信息\n");
			printf("	  \t\t(4)插入学生信息\n");
			printf("	  \t\t(5)删除学生信息\n");
			printf("	  \t\t(6)优秀统计及输出(成绩>80)\n");
			printf("	  \t\t(7)不及个统计及输出(成绩<60)\n");
			printf("	  \t\t(8)平均成绩并输出\n");
			printf("	  \t\t(9)排序并输出\n");
			printf("	  \t\t(0)退出\n");
			printf("\t\t***********************************************\n");
			printf("\t\t***********************************************\n");
			printf("\t\t请输入您的选择项,并按回车键结束!\n");
			printf("\t\t您选择的是:");
			scanf("%s",a);
			b=check_number2(a,x1);
			if(b==0)
			{
				printf("\t\t输入有误!\n\t\t请重新输入!\n");
				wait();
			}
			else
				break;
		}	
		switch(a[0])
		{
			case '1':input();break;
			case '2':read();break;
			case '3':search();break;
			case '4':add();break;
			case '5':drop();break;
			case '6':hgrade();break;
			case '7':lgrade();break;
			case '8':average();break;
			case '9':order();break;
			case '0':end();break;
		}
		while(1)
		{
			printf("\t\t您想继续其他功能吗?\n\t\tYES---(1)\t\tNO---(2)\n");
			printf("\t\t您选:");
			scanf("%s",c);
			r=check_number1(c);
			if(r==1)
			{
				wait();
				break;
			}
			else if(r==2)
				break;
			else
				printf("\t\t输入有误请重新输入!\n");
		}
		if(r==2)
			break;
	}
	end();	
}
void student_menu()//学生主选单
{
	char a[N],c[N];
	int b,r;
	int x2=2;
	flag=2;
	while(1)
	{
		while(1)
		{
			system("cls");
			printf("\t\t***********************************************\n");
			printf("\t\t*****************学生主选单********************\n");
			printf("\t\t***********************************************\n");			
			printf("	  \t\t(1)读取全体学生信息\n");
			printf("	  \t\t(2)查询学生信息\n");
			printf("	  \t\t(3)优秀统计及输出(成绩>80)\n");
			printf("	  \t\t(4)不及个统计及输出(成绩<60)\n");
			printf("	  \t\t(5)平均成绩并输出\n");
			printf("	  \t\t(6)排序并输出\n");
			printf("	  \t\t(0)退出\n");
			printf("\t\t***********************************************\n");
			printf("\t\t***********************************************\n");
			printf("\t\t请输入您的选择项,并按回车键结束!\n");
			printf("\t\t您选择的是:");
			scanf("%s",a);
			b=check_number2(a,x2);
			if(b==0)
			{
				printf("\t\t输入有误!\n\t\t请重新输入!\n");
				wait();
			}
			else
				break;
		}
		switch(a[0])
		{
			case '1':read();break;
			case '2':search();break;
			case '3':hgrade();break;
			case '4':lgrade();break;
			case '5':average();break;
			case '6':order();break;
			case '0':end();break;
		}
		while(1)
		{
			printf("\t\t您想继续其他功能吗?\n\t\tYES---(1)\t\tNO---(2)\n");
			printf("\t\t您选:");
			scanf("%s",c);
			r=check_number1(c);
			if(r==1)
			{
				wait();
				break;
			}
			else if(r==2)
				break;
			else
				printf("\t\t输入有误请重新输入!\n");
		}
		if(r==2)
			break;
	}
	end();	
}
int check_number2(char check[N],int x)//输入数字验证
{
	if(x=1)
	{
		if(check[0]>='0'&&check[0]<='9')
		{
			if(check[1]=='\0')
				return(1);
			else
				return(0);
		}
		else 
			return(0);
	}
	else
	{
		if(check[0]>='0'&&check[0]<='6')
		{
			if(check[1]=='\0')
				return(1);
			else
				return(0);
		}
		else 
			return(0);
	}
}
void input(void)//数据输入函数,将数据先读入结构体中,然后进行保存写入文件
{	
	int n,i,k,ss;
	char grade[10];
	wait();
	system("cls");
	printf("\t\t*****************请输入下列信息*******************\n");
	printf("\t\t请输入您要输入学生的个数:");
	scanf("%d",&g);
	wait();
	system("cls");
	printf("\t\t**************************************************\n");
	printf("\t\t*****************INFORMATION**********************\n");
	printf("\t\t**************************************************\n");
	//学生成绩输入
	for(i=0;i<g;i++)
	{
		printf("\n\t\t请输入第%d个学生的学号(<8位):",i+1);
		scanf("%s",xx[i].number);
		n=check_number3(xx[i].number);
		if(n==0)
		{
			printf("\t\t请认真核对您的输入!\n");
			i=i-1;
			wait();
			system("cls");
			continue;
		}
		printf("\n\t\t请输入第%d个学生的姓名(汉字小于4个字):",i+1);
		scanf("%s",xx[i].name);
		printf("\n\t\t请输入第%d个学生的数学成绩:",i+1);
		scanf("%s",grade);
		xx[i].score[0]=check_number4(grade);
		if(xx[i].score[0]==-1)
		{
			printf("\t\t请认真核对您的输入!\n");
			i=i-1;
			wait();
			system("cls");
			continue;
		}
		printf("\n");
		printf("\t\t请输入第%d个学生的语文成绩:",i+1);
		scanf("%s",grade);
		xx[i].score[1]=check_number4(grade);
		if(xx[i].score[1]==-1)
		{
			printf("\t\t请认真核对您的输入!\n");
			i=i-1;
			wait();
			system("cls");
			continue;
		}
		printf("\n");
		printf("\t\t请输入第%d个学生的英语成绩:",i+1);
		scanf("%s",grade);
		xx[i].score[2]=check_number4(grade);
		if(xx[i].score[2]==-1)
		{
			printf("\t\t请认真核对您的输入!\n");
			i=i-1;
			wait();
			system("cls");
			continue;
		}
		xx[i].sum=0;
		for(k=0;k<3;k++)
			xx[i].sum+=xx[i].score[k];
		xx[i].average=xx[i].sum/3.0;
	}
	while(1)
	{
        printf("\t\t您确定要保存上述信息吗(请输入数字)? \n\t\t保存请选:1  不保存请选:0\n\t\t您选:");
		printf("\t\t");
        scanf("%d",&ss);
		if(ss==1)
		{
			save_one();
		    break;
		}
		else if(ss==0)
			break;
		else
		{
			printf("\n\t\t选择错误!\n");
			printf("\t\t请重新选择!\n");
			wait();
			system("cls");
		}
	}
}
int check_number3(char check[N])//输入数字验证
{
	int i;
	for(i=0;i<N;i++)
	{
		if((check[i]<'0'||check[i]>'9')&&check[i]!='\0')
			return(0);
		if(check[i]=='\0')
			break;
	}
	return(1);
}
double check_number4(char check[N])//成绩输入数字验证
{
	int i,k;
	double score=0.0;
	for(i=0;i<N;i++)
	{
		if((check[i]<'0'||check[i]>'9')&&check[i]!='\0')
			return(-1);
		if(check[i]=='\0')
			break;
	}
	for(k=0;k<i;k++)
		score+=(((int)check[k])-48)*pow(10,i-k-1);//将字符型改成double型并返回调用函数
	return(score);
}
void save_one()//将数据写入文件中
{
	int i;
	printf("\t\t请输入您想保存的文件名:");
	scanf("%s",fname);
	if((fp=fopen(fname,"wb"))==NULL)
	{
		printf("\t\tCannot open the file!\n");
		return;
	}
	for(i=0;i<g;i++)
	{
		if(fwrite(&xx[i],sizeof(XX),1,fp)!=1)
			printf("\nfile write error!\n");
	}
	fclose(fp);
	printf("\t\t您写入了%d个人信息!\n",g);
}
void read()//读文件中的内容
{
	int j,r;
	char c[N];
	system("cls");
	printf("\t\t*****************Read_File*******************\n");
	printf("\t\t请输入已有的文件名:");
	scanf("%s",fname1);
	if((fp1=fopen(fname1,"rb"))==NULL)
	{
		printf("\t\t该文件不存在!\n");
		while(1)
		{
			printf("\t\t您想继续吗?\n\t\tYES---(1)\t\tNO---(2)\n");
			scanf("%s",c);
			r=check_number1(c);
			if(r==1)
				break;
			else if(r==2)
				break;
			else
				printf("\t\t输入有误请重新输入!\n");
		}
		if(flag==1&&r==1)
			teacher_menu();
		else if(flag==2&&r==1)
			student_menu();
		else
		{
			fclose(fp1);
			exit(0); 
		}
	}
	while(1)
	{
	    fread(&infor,sizeof(XX),1,fp1);
		if(feof(fp1))
			break;
		printf("\t\t学号\t姓名\t数学\t语文\t英语\t总分\t平均分\n");
		printf("\t\t%s",infor.number);
		printf("\t%s",infor.name);
		for(j=0;j<3;j++)
			printf("\t%.1f",infor.score[j]);
		printf("\t%.1f\t",infor.sum);
		printf("%.1f",infor.average);
		printf("\n");
	}
	fclose(fp1);
}
void search()//查找函数
{
	char search[N];
	while(1)
	{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -