这一系列有用的话记得一键三连!!!!
// 2020.03.24
//2020.03.24
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 30
int count = 0;
int Menu(void);
void Input(long IDscore[N][4],char name[N][10],int n);
void Caculate(long IDscore[N][4],char name[N][10],int cal[2][3],int n);
void Caculate2(long IDscore[N][4],char name[N][10],int cal2[N][2],int n);
void Sorthl(long IDscore[N][4],char name[N][10],int cal2[N][2],int n);
void Sortnumlh(long IDscore[N][4],char name[N][10],int n);
void Sorthl2(long IDscore[N][4],char name[N][10],int cal2[N][2],int n);
void SortName(long IDscore[N][4],char name[N][10],int n);
void Select(long IDscore[N][4],char name[N][10],int cal2[N][2],int n);
void SelectName(long IDscore[N][4],char name[N][10],int cal2[N][2],int n);
void Statistics(long IDscore[N][4],char name[N][10],int n);
void Printf(long IDscore[N][4],char name[N][10],int cal2[N][2],int cal[2][3],int n);
int main()
{
char itemSelected;
char name[N][10];
long IDscore[N][4];
int cal[2][3],cal2[N][2];
int n;
do{
printf("Please input the number of students:");
scanf("%d",&n);
}while(n<0||n>30);
while(1)
{
itemSelected = Menu();
switch(itemSelected)
{
case 1:
Input(IDscore,name,n);
break;
case 2:
Caculate(IDscore,name,cal,n);
break;
case 3:
Caculate2(IDscore,name,cal2,n);
break;
case 4:
Sorthl(IDscore,name,cal2,n);
break;
case 5:
Sortnumlh(IDscore,name,n);
break;
case 6:
SortName(IDscore,name,n);
break;
case 7:
Select(IDscore,name,cal2,n);
break;
case 8:
SelectName(IDscore,name,cal2,n);
break;
case 9:
Statistics(IDscore,name,n);
break;
case 10:
Printf(IDscore,name,cal2,cal,n);
break;
case 0:
printf("Exit procedure................!\n");
return 0;
default:printf("Input error!\n");
}
}
return 0;
}
//1.1菜单
int Menu(void)
{
int k;
printf("------------学生成绩管理系统V4.0---------------\n");
printf("|1.Input record |\n");
printf("|2.Caculate total and average score of course |\n");
printf("|3.Calculate the total and average score |\n");
printf("|4.Sort in descending order by total scores |\n");
printf("|5.Sort in ascending order by number |\n");
printf("|6.Sort by dictionary |\n");
printf("|7.Search by number |\n");
printf("|8.Search by name |\n");
printf("|9.Statistic analysis |\n");
printf("|10.list record |\n");
printf("|0.Exit |\n");
printf("-----------------------------------------------\n");
do{
printf("Please enter your choice:");
scanf("%d",&k);
}while(k<0||k>10);
return k;
}
//2.计算功能
void Caculate(long IDscore[N][4],char name[N][10],int cal[2][3],int n)
{
int sum,i,j;
if(count!=1)Input(IDscore,name,n);
for(j = 1;j < 4;j++)
{
sum = 0;
for(i = 0;i < n;i++)
{
sum = sum + IDscore[i][j];
}
cal[0][j-1] = sum;
cal[1][j-1] = sum/n;
}
}
//3.附属计算功能参照前几个系列
void Caculate2(long IDscore[N][4],char name[N][10],int cal2[N][2],int n)
{
if(count!=1)Input(IDscore,name,n);
int i,j,sum;
for(i = 0;i < n;i++)
{
sum = 0;
for(j = 1;j < 4;j++)
{
sum += IDscore[i][j];
}
cal2[i][0] = sum;
cal2[i][1] = sum/3;
}
}
//4.从高到低排序
void Sorthl(long IDscore[N][4],char name[N][10],int cal2[N][2],int n)
{
Sorthl2(IDscore,name,cal2,n);
printf("Ranking from high to low by total score\n");
for(int i = 0;i < n;i++)
{
printf("Name:%s Score:%d\n",name[i],cal2[i][0]);
}
}
//4.1从高到底排序附属功能
void Sorthl2(long IDscore[N][4],char name[N][10],int cal2[N][2],int n)
{
int i,j,k,temp1;
long temp2;
char temp3[N][10];
Caculate2(IDscore,name,cal2,n);
for(i=0;i<n;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(cal2[j][0]>cal2[k][0]) k=j;
}
temp1=cal2[k][0];
cal2[k][0]=cal2[i][0];
cal2[i][0]=temp1;
strcpy(temp3[k],name[k]);
strcpy(name[k],name[i]);
strcpy(name[i],temp3[k]);
}
}
//4.从低到高排序
void Sortnumlh(long IDscore[N][4],char name[N][10],int n)
{
int i,j,k,m;
long temp2,temp1;
char temp3[N][10];
if(count!=1)Input(IDscore,name,n);
for(i=0;i<n;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(IDscore[j][0]<IDscore[k][0])k=j;
}
if(k!=j)
{
for(m = 0;m < 4; m++)
{
temp1 = IDscore[k][m];
IDscore[k][m] = IDscore[i][m];
IDscore[i][m]= temp1;
}
strcpy(temp3[k],name[k]);
strcpy(name[k],name[i]);
strcpy(name[i],temp3[k]);
//锟斤拷锟斤拷
}
}
printf("Ranking from low to high by num is\n");
for(i=0;i<n;i++)
{
printf("ID:%ld Name:%s project1:%3ld project2:%3ld project3:%3ld",IDscore[i][0],name[i],IDscore[i][1],IDscore[i][2],IDscore[i][3]);
}
}
//5.按照姓名排序
void SortName(long IDscore[N][4],char name[N][10],int n)
{
int i,j,k,m;
long temp2,temp1;
char temp3[N][10];
if(count!=1)Input(IDscore,name,n);
for(i=0;i<n;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(strcmp(name[j],name[k])<0)k=j;
}
if(k!=j)
{
strcpy(temp3[k],name[k]);
strcpy(name[k],name[i]);
strcpy(name[i],temp3[k]);
//简单的交换
for(m = 0;m < 4; m++)
{
temp1 = IDscore[k][m];
IDscore[k][m] = IDscore[i][m];
IDscore[i][m] = temp1;
}
}
}
printf("Ranking from low to high by name\n");
for(i=0;i<n;i++)
{
printf("Name:%s ID:%ld project1:%3ld project2:%3ld project3:%3ld",name[i],IDscore[i][0],IDscore[i][1],IDscore[i][2],IDscore[i][3]);
}
}
//6.查询功能
void Select(long IDscore[N][4],char name[N][10],int cal2[N][2],int n)
{
long num1;
int i;
Sorthl2(IDscore,name,cal2,n);
printf("Please input the student's ID:");
scanf("%ld",&num1);
for(i=0;i<n;i++)
{
if(num1==IDscore[i][0])
printf("ID:%ld Name:%s Ranking:%d TotalScore:%d \n",IDscore[i][0],name[i],i+1,cal2[i][0]);
}
}
//7.按照名字查询
void SelectName(long IDscore[N][4],char name[N][10],int cal2[N][2],int n)
{
char name1[10];
Sorthl2(IDscore,name,cal2,n);
printf("Please input the student's name:");
scanf("%s",name1);
for(int i=0;i<n;i++)
{
if(strcmp(name1,name[i])==0)//锟斤拷锟斤拷锟斤拷址锟斤拷锟斤拷卸锟斤拷锟斤拷锟絪trcmp锟侥凤拷锟斤拷值锟叫讹拷锟角凤拷锟斤拷锟?
printf("ID:%ld Name:%s Ranking:%d TotalScore:%d \n",IDscore[i][0],name[i],i+1,cal2[i][0]);
}
}
//8.统计
void Statistics(long IDscore[N][4],char name[N][10],int n)
{
if(count!=1)Input(IDscore,name,n);
int excellent,good,medium,pass,fail;
int i,j;
for(j = 1;j < 4; j++)
{
excellent = good = medium = pass = fail = 0;
for(i=0;i<n;i++)
{
if(IDscore[i][j]>=90&&IDscore[i][j]<=100)excellent++;
if(IDscore[i][j]>=80&&IDscore[i][j]<=89)good++;
if(IDscore[i][j]>=70&&IDscore[i][j]<=79)medium++;
if(IDscore[i][j]>=60&&IDscore[i][j]<=69)pass++;
if(IDscore[i][j]>=0&& IDscore[i][j]<=59)fail++;
}
printf("Project%d:\n",j);
printf("Excellent %d excellent total %4.1d%% people\n",excellent,(excellent*100)/n);
printf("Good %d good total %4.1d%% people\n",good,(good*100)/n);
printf("Mediun %d medium total %4.1d%% people\n",medium,(medium*100)/n);
printf("Pass %d pass total %4.1d%% people\n",pass,(pass*100)/n);
printf("Fail %d fail total %4.1d%% people\n",fail,(fail*100)/n);
}
}
//9.打印
void Printf(long IDscore[N][4],char name[N][10],int cal2[N][2],int cal[2][3],int n)
{
Caculate(IDscore,name,cal,n);
Caculate2(IDscore,name,cal2,n);
int i;
for(i=0;i<n;i++)
{
printf("Name:%s ID:%ld project1:%3ld project2:%3ld project3:%3ld\n",name[i],IDscore[i][0],IDscore[i][1],IDscore[i][2],IDscore[i][3]);
printf("TotalScore:%d Average:%d\n",cal2[i][0],cal2[i][1]);
}
printf("Total points for each course:\n");
printf("P1:%3ld P2:%3ld P2:%3ld\n",cal[0][0],cal[0][1],cal[0][2]);
printf("Average points for each course:\n");
printf("P1:%3ld P2:%3ld P2:%3ld\n",cal[1][0],cal[1][1],cal[1][2]);
}