.h头文件中声明结构体和函数及其他头文件
#include<stdio.h>
#include<stdlib.h>
struct student
{
int id;
float yu;
float shu;
float ying;
float avg;
}stu[20];
void Help();
void Type();
void Average();
void Sort();
void Search();
void List();
主函数实现根据相应的输入指令调用对应的函数
#include "stu1.h"
int main(int argc, char const *argv[])
{
int a = 0;
Help();
char z;
for(;;)
{
printf("请输入命令:");
scanf("%c", &z);
if (z =='T')
{
if(a !=0)
{
printf("不能再次录入成绩");
continue;
}
printf("请输入学生人数:");
scanf("%d", &a);
Type(a);
}
else if(z =='L')
{
if (a==0)
{
printf("成绩表为空!请先使用命令T录入学生成绩。\n");
}else
List(a);
}
else if(z=='A')
{
if (a==0)
{
printf("成绩表为空!请先使用命令T录入学生成绩。\n");
}else
Average(a);
}
else if(z =='H')
{
Help();
}
else if(z =='P')
{
if (a==0)
{
printf("成绩表为空!请先使用命令T录入学生成绩。\n");
}else
Sort(a);
}
else if(z=='S')
{
if (a==0)
{
printf("成绩表为空!请先使用命令T录入学生成绩。\n");
}else
Search(a);
}
else if(z=='C')
{
system("clear");
}
if (z =='Q')
{
printf("Press any key to continue\n");
break;
}
getchar();
}
return 0;
}
Help.c实现打印帮助界面需要注意分文件写的多个函数引用同一个.h文件时要用条件编译防止头文件重复包含
#ifndef _STU1_H_
#define _STU1_H_
#include"stu1.h"
void Help()
{
printf("***************************************\n");
printf("* 学生成绩管理系统--帮助菜单 *\n");
printf("***************************************\n");
printf("* H = 显示帮助菜单 *\n");
printf("* T = 成绩录入 *\n");
printf("* A = 计算学生平均分 *\n");
printf("* L = 列出成绩 *\n");
printf("* P = 按平均成绩有高到低排列 *\n");
printf("* S = 按学号查询学生成绩 *\n");
printf("* C = 清屏 *\n");
printf("* Q = 退出系统 *\n");
printf("****************************************\n");
printf("* Copyright <c> 2011.06.12 By 姓名 *\n");
printf("***************************************\n");
}
#endif
Type.c 实现学生成绩输入
#ifndef _STU1_H_
#define _STU1_H_
#include"stu1.h"
void Type(int a)
{
printf("请输入%d名学生的成绩:\n",a);
printf("学号 语文 数学 英语\n");
int i;
for ( i = 0; i < a; i++)
{
stu[i].id=i+1;
printf("%d ",stu[i].id);
scanf("%f %f %f",&stu[i].yu,&stu[i].shu,&stu[i].ying);
}
}
#endif
List.c文件实现列出成绩表
#include"stu1.h"
void List(int a)
{
printf("学生成绩如下:\n");
printf("学号 语文 数学 英语 平均分\n");
int i;
for ( i = 0; i < a; i++)
{
printf("%d %.1f %.1f %.1f %.1f\n",stu[i].id,stu[i].yu,stu[i].shu,stu[i].ying,stu[i].avg );
}
}
Average.c实现求每个学生的平均成绩
#include"stu1.h"
void Average(int a)
{
int i;
for ( i = 0; i < a; i++)
{
stu[i].avg=(stu[i].yu+stu[i].shu+stu[i].ying)/3;
}
printf("平均分已计算。请使用命令L查看。\n");
}
Sort.c实现按照平均分由高到低排序
#include"stu1.h"
void Sort(int a)
{
int i,j,=0;
struct student k
for ( i = 0; i < a-1; i++)
{
for ( j = 0; j < a-1-i; j++)
{
if (stu[j].avg<stu[j+1].avg)
{
k=stu[j];
stu[j]=stu[j+1];
stu[j+1]=k;
}
}
}
printf("完成排序。请使用命令L查看。");
}
Search.c实现按学号查询学生成绩
#include"stu1.h"
void Search(int a)
{
int i,j ;
printf("请输入要查询的学生学号:\n");
scanf("%d",&j);
for ( i = 0; i < a; i++)
{
if (stu[i].id==j)
{
printf ("学号 语文 数学 英语 平均分\n");
printf("%d %.1f %.1f %.1f %.1f\n",stu[i].id,stu[i].yu,stu[i].shu,stu[i].ying,stu[i].avg);
}
}
}
Makefile编写
CC=gcc
CFLAGS=-c -g -O
OBJS=main.o Average.o Help.o List.o Search.o Sort.o Type.o
stu1:$(OBJS)
$(CC) $(OBJS) -o $@
$(OBJS):%.o:%.c
$(CC) $(CFLAGS) $^ -o $@
.PHONY:clean
clean:
rm *.o