成績資訊系統c語言
#include<stdio.h>
#define N 100
int Count=0;
struct stu
{
int num;
char name[20];
int computer;
int math;
int english;
float average;
};
void input(struct stu s[N]);
void output(struct stu s[N]);
void modify(struct stu s[N]);
void average(struct stu s[N]);
void sort(struct stu s[N]);
void search(struct stu s[N],int num);
void average(struct stu s[N])
{
int i;
for(i=0;i<Count;i++)
s[i].average=(s[i].computer+s[i].math+s[i].english)/3.0;
}
void sort(struct stu s[N])
{
int i,j,index;
struct stu temp;
for(i=0;i<Count-1;i++)
{
index=i;
for(j=i+1;j<Count;j++)
if(s[j].average>s[index].average)
index=j;
temp=s[index];
s[index]=s[i];
s[i]=temp;
}
output(s);
}
void input(struct stu s[N])
{
int i,n;
printf("學生數量n(<=%d):",N);
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("1.學號:");
scanf("%d",&s[i].num);
printf("2.姓名:");
scanf("%s",&s[i].name);
printf("3.計算機成績:");
scanf("%d",&s[i].computer);
printf("4.數學成績:");
scanf("%d",&s[i].math);
printf("5.英語成績:");
scanf("%d",&s[i].english);
Count++;
}
}
void output(struct stu s[N])
{
int i;
printf("成績如下:\n");
printf("num\tname\tcomputer math\tenglish\taverage\t\n");
for(i=0;i<Count;i++)
{
printf("%d\t",s[i].num);
printf("%s\t",s[i].name);
printf("%d\t",s[i].computer);
printf("%d\t",s[i].math);
printf("%d\t",s[i].english);
printf("%.2f\n",s[i].average);
}
}
void modify(struct stu s[N])
{
int num,course,score,i;
printf("1.學號:\n");
scanf("%d",&num);
printf("2.課程(1:計算機,2:數學,3:英語):\n");
scanf("%d",&course);
printf("3.新的分數:\n");
scanf("%d",&score);
for(i=0;i<Count;i++)
if(s[i].num==num)
break;
switch(course)
{
case 1:s[i].computer=score;break;
case 2:s[i].math=score;break;
case 3:s[i].english=score;break;
}
s[i].average=(s[i].computer+s[i].math+s[i].english)/3.0;
printf("更改後該學生的成績如下:\n");
printf("num\tname\tcomputer math\tenglish\taverage\t\n");
printf("%d\t",s[i].num);
printf("%s\t",s[i].name);
printf("%d ",s[i].computer);
printf("%d\t",s[i].math);
printf("%d\t",s[i].english);
printf("%.2f\n",s[i].average);
}
void search(struct stu s[N],int num)
{
int i,flag=0;
if(Count==0)
{
printf("學生數量不能為零!\n");
return 0;
}
for(i=0;i<Count;i++)
if(s[i].num==num)
{
flag=1;
break;
}
if(flag)
{
printf("您所查詢的學生成績如下:\n");
printf("num\tname\tcomputer math\tenglish\taverage\t\n");
printf("%d\t",s[i].num);
printf("%s\t",s[i].name);
printf("%d\t",s[i].computer);
printf("%d\t",s[i].math);
printf("%d\t",s[i].english);
printf("%.2f\n",s[i].average);
}
else printf("學號錯誤!\n");
}
int main()
{
struct stu stu[N];
int num;
int n;
printf("您好,歡迎使用成績資訊系統!\n");
printf("請輸入學生資訊:\n");
input(stu);average(stu);
printf("成績查詢請輸1,成績更改請輸2\n成績排序請輸3,退出系統請輸0.\n");
scanf("%d",&n);
for(;;)
{
if(n==0)
{
printf("謝謝您的使用!");
return 0;
}
switch(n)
{
case 1:
{
printf("請輸入您要查詢的學生學號:\n");
scanf("%d",&num);
search(stu,num);
break;
}
case 2:modify(stu);break;
case 3:sort(stu);break;
default :printf("輸入錯誤!\n");break;
}
printf("成績查詢請輸1,成績更改請輸2\n成績排序請輸3,退出系統請輸0.\n");
scanf("%d",&n);
}
return 0;
}