学生管理系统
#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;
}