c高级小项目——学生管理系统

 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 
~                                                                                                                                                                                   
~                

 功能测试结果

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值