1123 项目1

学生管理系统

#include <myhead.h>
void max_min(char arr[][20],int brr[],int *n)
{
	int max,maxi=0;
	int min,mini=0;
		int sum = 0;
			int sum1 = 0;
			int sum2 = 0;
	max = min = brr[0];
	for(int i=0;i<*n;i++)
	{
		sum = sum + brr[i];
		if(max<brr[i])
		{
			max = brr[i];
			maxi = i;
		}
		if(min>brr[i])
		{
			min = brr[i];
			mini = i;
		}
		if(brr[i]>=60);
		}

		{
			sum1++;
		}
		if(brr[i]>=90)
		{
			sum2++;
		}
	}
		printf("班级最高分为:%d,是%s同学\n班级最低分为:%d,是%s同学\n",max,arr[maxi],min,arr[mini]);
		printf("班级平均分为:%.2f\n",1.0*sum/(*n));
		printf("班级及格率为:%.2f%%\n",1.0*sum1/(*n)*100);
		printf("班级优秀率为:%.2f%%\n",1.0*sum2/(*n)*100);
}
void sort(char arr[][20],int brr[],int *n)
{
	int ch = 0;
	printf("1.升序排序\n");
	printf("2.降序排序\n");
	printf("请选择排序方式:\n");
	scanf("%d",&ch);
	if(ch!=1 && ch!=2)
	{
		printf("输入错误\n");
	}
	for(int i=1;i<*n;i++)
	{
		for(int j=0;j<(*n)-i;j++)
		{
			if(ch==1)
			{
				if(brr[j]>brr[j+1])
				{
					int temp = brr[j];
					brr[j] = brr[j+1];
					brr[j+1] = temp;
					char temp1[20] = {};
					strcpy(temp1,arr[j]);
					strcpy(arr[j],arr[j+1]);
					strcpy(arr[j+1],temp1);
				}
			}
			else if(ch==2)
			{
				if(brr[j]<brr[j+1])
				{
					int temp = brr[j];
					brr[j] = brr[j+1];
					brr[j+1] = temp;
					char temp1[20] = {};
					strcpy(temp1,arr[j]);
					strcpy(arr[j],arr[j+1]);
					strcpy(arr[j+1],temp1);
				}
			}
		}
	}
	printf("排序成功\n");
}
void name_find(char arr[][20],int brr[],int *n)
{
	int pos = -1;
	char find_name[20] = {};
	printf("请输入想要查找的学生姓名:");
	scanf("%s",find_name);
	for(int i=0;i<*n;i++)
	{
		if(strcmp(arr[i],find_name)==0)
		{
			printf("查找成功\n");
			pos = i;
			break;
		}
	}
	if(pos==-1)
	{
		printf("查找失败\n");
	}
	else
	{
		printf("该同学的信息如下:\n");
		printf("%s\t%d\n",arr[pos],brr[pos]);
	}
}

void change(char arr[][20],int brr[],int *n)
{
	int pos = -1;
	char changename[20] = {};
	int newscore = 0;
	printf("请输入想要修改成绩的学生姓名:");
	scanf("%s",changename);
	for(int i=0;i<*n;i++)
	{
		if(strcmp(arr[i],changename)==0)
		{
			printf("查找成功\n");
			pos = i;
			break;
		}
	}
	if(pos==-1)
	{
		printf("查找失败\n");
	}
	else
	{
		printf("请输入该同学的新成绩:\n");
		scanf("%d",&newscore);
		brr[pos] = newscore;
	}

}

void dele(char arr[][20],int brr[],int *n)
{
	int pos = -1;
	char delename[20] = {};
	printf("请输入想要删除的学生的姓名:");
	scanf("%s",delename);
	for(int i=0;i<*n;i++)
	{
		if(strcmp(arr[i],delename)==0)//判断学生姓名是否存在
		{
			printf("查找成功\n");
			pos = i;//记录学生位置
		}
	}
	if(pos==-1)
	{
		printf("查找失败\n");
	}
	else
	{
		for(int i=pos;i<*n;i++)//在所记录的位置,将后一位元素覆盖前以为元素
		{
			strcpy(arr[i],arr[i+1]);
			brr[i] = brr[i+1];
		}
		(*n)--;
		printf("删除成功\n");
	}

}

void add(char arr[][20],int brr[],int *n)
{
	char newname[20] = {};
	int newscore = 0;
	printf("请输入要添加的学生的姓名:");
	scanf("%s",newname);
	printf("请输入要添加的学生的成绩:");
	scanf("%d",&newscore);
	strcpy(arr[*n],newname);//在二维数组后添加新的姓名
	brr[*n] = newscore;//在一维数组后添加新的成绩
	(*n)++;//学生数量加一
	printf("添加成功\n");
}

void enter(char arr[][20],int brr[],int n)
{
	for(int i=0;i<n;i++)
	{
		printf("请输入第%d个学生的姓名:",i+1);//存储姓名和成绩到二维数组和一维数组
		scanf("%s",arr[i]);
		printf("请输入第%d个学生的成绩:",i+1);
		scanf("%d",&brr[i]);
	}
	printf("录入成功\n");
;
		}

}

void show(char arr[][20],int brr[],int n)
{
	printf("学生的成绩如下:\n");//循环展示二维数组和一维数组
	for(int i=0;i<n;i++)
	{
		printf("%s\t%d\n",arr[i],brr[i]);
	}

}

void regis(char arr[][20],char brr[][20],char crr[],char drr[],int *num)
{
	printf("请输入您的用户名:");
	scanf("%s",crr);
	printf("请输入您的密码:");
	scanf("%s",drr);

	if(*num<128)   //存储用户名和密码到两个二维数组
	{
		strcpy(arr[*num],crr);
		strcpy(brr[*num],drr);
		(*num)++;  //用户数量加一
	}
	else
	{
		printf("用户已满\n");
	}

	printf("注册成功\n");
}

void land(char arr[][20],char brr[][20],char crr[],char drr[])
{
	int flag = 0;
	printf("用户名:");
	scanf("%s",crr);
	printf("密码:");
	scanf("%s",drr);

	for(int i=0;i<128;i++)
	{
		if(strcmp(arr[i],crr)==0 && strcmp(brr[i],drr)==0)//判断输入的用户名和密码是否与注册的一致
		{
			flag=1;//防止重复输出
			break;
		}
		else
		{
			flag=0;
		}
	}
	if(flag==1)
	{
		printf("登陆成功\n");
	}
	else
	{
		printf("用户名或者密码错误,登录失败\n");
	}
}
/****************主程序*******************/
int main(int argc, const char *argv[])
{
	char uer[128][20] = {};
	char pow[128][20] = {};
	char myuer[20] = {};
	char mypow[20] = {};
	int num = 0;

	char name[128][20] = {};
	int score[128] = {};

	while(1)
	{
		printf("\t\t     >>>>>>用户名:      <<<<<<\t\n");
		printf("\t\t     >>>>>>  密码:      <<<<<<\t\n");
		printf("\t\t>>>>>>已有账号,登录请输入1<<<<<<\t\n");
		printf("\t\t>>>>>>没有账号?注册请输入2<<<<<<\t\n");

		int value = 0;
		printf("请输入:");
		scanf("%d",&value);
		if(value!=1 && value!=2)
		{
			printf("您输入的选项有问题,请重新输入\n");
		}
		switch(value)
		{
		case 1:
			{
				land(uer,pow,myuer,mypow);     //登录界面
				while(1)
				{
					printf("\t\t>>>>>>管理系统欢迎您<<<<<<\t\n");
					printf("\t\t>>>>>>1.学生信息录入<<<<<<\t\n");
					printf("\t\t>>>>>>2.学生信息展示<<<<<<\t\n");
					printf("\t\t>>>>>>3.添加学生信息<<<<<<\t\n");
					printf("\t\t>>>>>>4.删除学生信息<<<<<<\t\n");
					printf("\t\t>>>>>>5.修改学生成绩<<<<<<\t\n");
					printf("\t\t>>>>>>6.查找学生信息<<<<<<\t\n");
					printf("\t\t>>>>>>7.学生信息排序<<<<<<\t\n");
					printf("\t\t>>>>>>8.学生成绩分析<<<<<<\t\n");
					printf("\t\t>>>>>>9.退出管理系统<<<<<<\t\n");

					int value1 = 0;
					printf("请输入:");
					scanf("%d",&value1);
					if(value1<1 && value>9)
					{
						printf("您输入的选项有问题,请重新输入\n");
					}

					switch(value1)
					{
					case 1:
						{
							printf("请输入想要录入的学生的人数:");
							scanf("%d",&num);
							enter(name,score,num);     //录入学生信息函数

						}
						break;
					case 2:
						{
							show(name,score,num);      //展示学生信息函数
						}
						break;
					case 3:
						{
							add(name,score,&num);      //添加学生信息函数
						}
						break;
					case 4:
						{
							dele(name,score,&num);     //删除学生信息函数
						}
						break;
					case 5:
						{
							change(name,score,&num);    
						}
						break;
					case 6:
						{
							name_find(name,score,&num);
						}
						break;
					case 7:
						{
							sort(name,score,&num);
						}
						break;
					case 8:
						{
							max_min(name,score,&num);
						}
						break;
					case 9:exit(0);
					}
				}
			}
			break;
		case 2:
			{
				regis(uer,pow,myuer,mypow,&num);
			}
			break;
		}
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值