main——测试函数
1 #include "student.h"
2 int main(int argc, const char *argv[])
3 {
4 char order;
5 help();
6 while(1)
7 {
8 printf("请输入命令=");
9 scanf("%c", &order);
10 switch(order)
11 {
12 case 'H':
13 help();
14 break;
15 case 'T':
16 if(n == 0)
17 type();
18 else
19 add();
20 break;
21 case 'A':
22 if(n == 0)
23 puts("成绩表为空!请先使用命令T录入学生成绩。");
24 else
25 average();
26 break;
27 case 'L':
28 if(n == 0)
29 puts("成绩表为空!请先使用命令T录入学生成绩。");
30 else
31 list();
32 break;
33 case 'P':
34 if(n == 0)
35 puts("成绩表为空!请先使用命令T录入学生成绩。");
36 else
37 sort();
38 break;
39 case 'S':
40 if(n == 0)
41 puts("成绩表为空!请先使用命令T录入学生成绩。");
42 else
43 search();
44 break;
45 case 'C':
46 system("clear");
47 break;
48 case 'Q':
49 exit(1);
50 }
51 getchar();//用scanf输入字符时,会同时把回车接受到,放在
52 //缓存区中,执行下次while循环时,会打印两次输出语句,
53 //所以使用getcahr来接收垃圾字符
54 }
55
56 return 0;
57 }
58
59
student.c——功能函数
1 #include "student.h"
2 extern int n;
3 extern int n1;
4 STU st[N];
5
6 //******帮助菜单*******
7 void help()
8 {
9 printf("**************************************\n");
10 printf("* 学生成绩管理系统--帮助菜单 *\n");
11 printf("**************************************\n");
12 printf("* H = 显示帮助菜单 *\n");
13 printf("* T = 成绩录入 *\n");
14 printf("* A = 计算学生平均成绩 *\n");
15 printf("* L = 列出成绩表 *\n");
16 printf("* P = 按平均成绩由高到低排序 *\n");
17 printf("* S = 按学号查询学生成绩 *\n");
18 printf("* C = 清屏 *\n");
19 printf("* Q = 退出系统 *\n");
20 printf("**************************************\n");
21 }
22 //*****成绩录入*******
23 void type()
24 {
25 int i;
26 printf("请输入学生人数:");
27 scanf("%d", &n);
28 printf("请输入%d名学生的三门课成绩:\n", n);
29 printf("学号\t姓名\t语文\t数学\t外语\n");
30
31 for(i = 1; i <= n; i++)
32 {
33 st[i-1].num = i;
34 printf("%d\t",st[i-1].num);
35 scanf("%s\t%f\t%f\t%f",st[i-1].name,&st[i-1].score[0], &st[i-1].score[1], &st[i-1].score[2]);
36 }
37 }
38 //*****列出成绩******
39 void list()
40 {
41 printf("学号\t姓名\t语文\t数学\t外语\n");
42 for(int i=0;i<n;i++)
43 {
44 printf("%d\t%s\t%.2f\t%.2f\t%.2f\n",st[i].num,st[i].name,st[i].score[0],st[i].score[1],st[i].score[2]);
45
46 }
47 }
48 //*****求出平均值******
49 void average()
50 {
51 printf("学号\t姓名\t语文\t数学\t外语\t总分\t平均分\n");
52 for(int i=0;i<n;i++)
53 {
54 st[i].total = st[i].score[0]+st[i].score[1]+st[i].score[2];
55 st[i].ave = st[i].total/3;
56 printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",st[i].num,st[i].name,st[i].score[0],st[i].score[1],st[i].score[2],st[i].total,st[i].ave);
57
58 }
59 }
60 //*****按平均分从高到低排序*****
61 void sort()
62 {
63 STU temp;
64 for(int i=1;i<n;i++)
65 {
66 for(int j=0;j<n-i;j++)
67 {
68 if(st[j].ave<st[j+1].ave)
69 {
70 temp=st[j];
71 st[j]=st[j+1];
72 st[j+1]=temp;
73 }
74
75 }
76 }
77 printf("学号\t姓名\t语文\t数学\t外语\t总分\t平均分\n");
78 for(int i=0;i<n;i++)
79 {
80 st[i].total = st[i].score[0]+st[i].score[1]+st[i].score[2];
81 st[i].ave = st[i].total/3;
82 printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",st[i].num,st[i].name,st[i].score[0],st[i].score[1],st[i].score[2],st[i].total,st[i].ave);
83
84 }
85 }
86 //*****按学号查询******
87 void search()
88 {
89 int num1;
90 printf("请输入要查询的学生学号:");
91 scanf("%d",&num1);
92 for(int i=0;i<n;i++)
93 {
94 if(st[i].num==num1)
95 {
96 printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",st[i].num,st[i].name,st[i].score[0],st[i].score[1],st[i].score[2],st[i].total,st[i].ave);
97
98 }
99 }
100
101
102 }
103 //*****新增学生的成绩录入******
104 void add()
105 {
106
107 int i;
108 printf("请输入要新增的学生人数:");
109 scanf("%d", &n1);
110 printf("请输入%d名学生的三门课成绩:\n", n1);
111 printf("学号\t姓名\t语文\t数学\t外语\n");
112
113 for(i = n+1; i <= n+n1; i++)
114 {
115 st[i-1].num = i;
116 printf("%d\t",st[i-1].num);
117 scanf("%s\t%f\t%f\t%f",st[i-1].name,&st[i-1].score[0], &st[i-1].score[1], &st[i-1].score[2]);
118 }
119 n=n+n1;
120
121
122 }
123
~
student.h——函数声明
1 #include <stdio.h>
2 #include <stdlib.h>
3 #define N 10
4 int n;
5 int n1;
6 typedef struct stu{
7 int num;
8 float score[3];
9 float ave;
10 char name[20];
11 float total;
12 }STU;
13 void help();
14 void type();
15 void list();
16 void average();
17 void sort();
18 void search();
19 void add();
20
~
~
功能测试结果