学生管理系统make编译实现

.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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值