C语言课程设计(1)-学生成绩管理系统

源码、经验交流QQ群:613879714,有问题QQ群提问,这里不能及时回复

1. 主要功能
  • 输入学生数据
  • 显示学生数据
  • 计算成绩
  • 成绩排序
  • 成绩查找
  • 成绩修改
  • 添加学生数据
  • 删除学生成绩
2.演示

B站演示视频链接

C语言-学生成绩管理系统

3.源码
#include<stdio.h>
#include<stdlib.h>
#include <conio.h>
#include<string.h>
#define N 30
struct student
    { long num;
      char name[10];
      unsigned int score[3];
   float sum;
      float ave;
    };
int n;
//进入系统界面
void in()
{
  printf("\t\t┌───────────────┐\n"); 
  printf("\t\t│                              │\n");
  printf("\t\t│      学生成绩管理系统        │\n");
  printf("\t\t│                              │\n"); 
  printf("\t\t│           欢迎使用           │\n");
  printf("\t\t│                              │\n"); 
  printf("\t\t│     按任意键进入系统……     │\n"); 
  printf("\t\t└───────────────┘\n");
  getch();
}
//1.这是输入函数
void input(struct student stu[])
 { 
    int i,j;
 system("cls");  //清屏函数
    printf("\t\t\t┌──────┐\n");
 printf("\t\t\t│输入学生数据│\n");
 printf("\t\t\t└──────┘\n");
 printf("请输入学生人数(1-30):\n");
 scanf("%d",&n);
    for(i=0;i<n;i++)
 {
  printf("请输入第%d个学生的学号:",i+1);
  scanf("%ld",&stu[i].num);
  printf("请输入第%d个学生的姓名:",i+1);
  scanf("%s",stu[i].name);
  printf("请输入第%d个学生的3门课程成绩(0-100):\n",i+1);
  for(j=0;j<3;j++)
   scanf("%d",&stu[i].score[j]);
  
 }
 printf("按任意键返回主菜单:\n");
 getch();
}// 2.这是显示函数
void display(struct student stu[N])
{  
 int i;
 system("cls");
 printf("\t\t\t┌──────┐\n");
 printf("\t\t\t│显示学生数据│\n");
 printf("\t\t\t└──────┘\n");
 printf("%d 个学生数据为:\n",n);
    printf("学号\t姓名\tC语言\t高数\t英语\n");
    for(i=0;i<n;i++)
  printf("%ld\t%s\t%d\t%d\t%d\n",stu[i].num,stu[i].name,
  stu[i].score[0],stu[i].score[1],stu[i].score[2]);
 printf("按任意键返回主菜单:\n");
 getch();
} 
//3.这是计算成绩
void aver(struct student stu[N])
{ 
 int i,j;
 system("cls");  //清屏函数
 printf("\t\t\t┌──────┐\n");
 printf("\t\t\t│  计算成绩  │\n");
 printf("\t\t\t└──────┘\n");
 for(i=0;i<n;i++)
 {
  stu[i].ave=0;
  stu[i].sum=0;
  for(j=0;j<3;j++)
   stu[i].sum+=stu[i].score[j];
  stu[i].ave=stu[i].sum/3;
 }
 printf("%d个学生的数据:\n",n);
 printf("学号\t姓名\tC语言\t高数\t英语\t总成绩\t平均成绩\n");
 for(i=0;i<n;i++)
  printf("%ld\t%s\t%d\t%d\t%d\t%.2f\t%.2f\n",stu[i].num,stu[i].name,
  stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].ave);
 printf("按任意键返回主菜单:\n");
 getch();
}
//4.这是排序函数
void sort(struct student stu[N])
{
 int i,k,j;
 system("cls");  //清屏函数
 struct student temp;
 printf("\t\t\t┌──────┐\n");
 printf("\t\t\t│  成绩排序  │\n");
 printf("\t\t\t└──────┘\n");
 for(i=0;i<n-1;i++)
 {
  k=i;
  for(j=i+1;j<n;j++)
   if(stu[k].ave<stu[j].ave) k=j;
   if(k!=i) 
   { temp=stu[i];stu[i]=stu[k];stu[k]=temp;}
 }
 printf("学生成绩按从高到低排序后:\n");
 printf("学号\t姓名\tC语言\t高数\t英语\t总成绩\t平均成绩\n");
 for(i=0;i<n;i++)
  printf("%ld\t%s\t%d\t%d\t%d\t%.2f\t%.2f\n\n",stu[i].num,stu[i].name,
  stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].ave);
 printf("按任意键返回主菜单:\n");
 getch();
}
//5(1).学号查找
void order(struct student stu[N])
{
 int i,m;
 system("cls");  //清屏函数
    printf("\t\t\t┌──────┐\n");
 printf("\t\t\t│ 按学号查找 │\n");
 printf("\t\t\t└──────┘\n");
 printf("请输入要查找的学号:");
 scanf("%d",&m);
 for(i=0;i<N;i++)
 {
  if(m==stu[i].num)
  {
   printf("学号\t姓名\tC语言\t高数\t英语\t总成绩\t平均成绩\n");
   printf("%ld\t%s\t%d\t%d\t%d\t%.2f\t%.2f\n\n",stu[i].num,stu[i].name,
    stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].ave);
   break;
  }
 }
 if(i>=N)
  printf("找不到该学号!\n");
 printf("按任意键返回上一级:\n");
 getch();
}
//5(2).姓名查找
void binary(struct student stu[N])
{ 
 system("cls");  //清屏函数
 int i;
 char ch[10];
    printf("\t\t\t┌──────┐\n");
 printf("\t\t\t│ 按姓名查找 │\n");
 printf("\t\t\t└──────┘\n");
    printf("请输入要查找的姓名:");
 scanf("%s",ch);
 for(i=0;i<N;i++)
 {if(strcmp(ch,stu[i].name)==0)
 {
  printf("学号\t姓名\tC语言\t高数\t英语\t总成绩\t平均成绩\n");
  printf("%ld\t%s\t%d\t%d\t%d\t%.2f\t%.2f\n\n",stu[i].num,stu[i].name,
   stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].ave);
  break;
 }
 }
    if(i>=N)
  printf("找不到该姓名!\n");
 printf("按任意键返回上一级:\n");
 getch();
}
//5(3).这是求最高成绩
void highENDlow(struct student stu[])
{ 
 int i;
 system("cls");  //清屏函数
    printf("\t\t\t┌─────────┐\n");
 printf("\t\t\t│最高成绩和最低成绩│\n");
 printf("\t\t\t└─────────┘\n");
 struct student max,min;
 max=stu[0];
 min=stu[0];
 for(i=1;i<n;i++)
 {
  if(stu[i].ave>max.ave) max=stu[i];
  {
   printf("最高分的学生数据是:\n");
   printf("学号\t姓名\tC语言\t高数\t英语\t总成绩\t平均成绩\n");
   printf("%ld\t%s\t%d\t%d\t%d\t%.2f\t%.2f\n\n",stu[i].num,stu[i].name,
    stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].ave);
   printf("\n");
  }
  if(stu[i].ave<max.ave) max=stu[i];
  {
   printf("最低分的学生数据是:\n");
   printf("学号\t姓名\tC语言\t高数\t英语\t总成绩\t平均成绩\n");
   
   printf("%ld\t%s\t%d\t%d\t%d\t%.2f\t%.2f\n\n",stu[i].num,stu[i].name,
    stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].ave);
   printf("\n");
  }
 }
 printf("按任意键返回主菜单:\n");
 getch();
}
//5.查找
void find(struct student stu[])
{ 
 struct student *p;
 p=stu;
 int n;
 
 while(1)
 {  
  system("cls");
        printf("\t\t┌───────────────┐\n");
     printf("\t\t│          成绩查找            │\n");
  printf("\t\t├───────────────┤\n");
  printf("\t\t│     1. 按学号查找            │\n");
  printf("\t\t│     2. 按姓名查找            │\n");
        printf("\t\t│     3. 查找最高/低成绩       │\n");
        printf("\t\t│     4. 返回主菜单            │\n");
  printf("\t\t└───────────────┘\n");
  printf("请选择(1-3):");
  scanf("%d",&n);
  switch(n)
  {   
     case 1: order(p); break;
     case 2: binary(p);break;
     case 3: highENDlow(p);break;
     case 4: return;   
  }
 }
}
//6.修改
void modi(struct student stu[])
{ 
 system("cls");  //清屏函数
 int i,m,j,score;
 char ch,y='Y',n='N';
    printf("\t\t\t┌──────┐\n");
 printf("\t\t\t│  修改成绩  │\n");
 printf("\t\t\t└──────┘\n");
    printf("请输入要修改学生的学号:");
 scanf("%d",&m);
    for(i=0;i<N;i++)
       if(m==stu[i].num)
  {
      printf("找到要该学生,信息如下:\n");
   printf("学号\t姓名\tC语言\t高数\t英语\t总成绩\t平均成绩\n");
         printf("%ld\t%s\t%d\t%d\t%d\t%.2f\t%.2f\n\n",stu[i].num,stu[i].name,
         stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].ave);
            printf("修改C语言成绩输入0,高数输入1,英语输入2:");
   scanf("%d",&j);
   printf("要修改为:");
   scanf("%d",&score);
            printf("╔════════╗\n");
   printf("║确认是否修改?Y/N║\n");
            printf("╚════════╝\n");
   scanf("%s",&ch);
   if(ch==y)
    printf("修改成功!\n");
   if(ch==n)
   {
    printf("否!");
    goto end;
   }
   switch(j)
   {
   case 0: stu[i].score[0]=score;break;
      case 1: stu[i].score[1]=score;break;
      case 2: stu[i].score[2]=score;break;
   }
            printf("修改后该学生,信息如下:\n");
   printf("学号\t姓名\tC语言\t高数\t英语\n");
         printf("%ld\t%s\t%d\t%d\t%d\n\n",stu[i].num,stu[i].name,
         stu[i].score[0],stu[i].score[1],stu[i].score[2]);   
   break;
  }
    if(i>=N)
         printf("找不到该学生信息!\n");
    end:printf("按任意键返回主菜单:\n");
 getch();
}
//7.添加学生数据
void add(struct student stu[])
{
 int i,j,m;
 system("cls");  //清屏函数 
    printf("\t\t\t┌──────┐\n");
 printf("\t\t\t│添加学生数据│\n");
 printf("\t\t\t└──────┘\n");
    printf("请输入添加学生人数(30以内):\n");
 scanf("%d",&m);
    for(i=0;i<m;i++)
 {
  printf("请输入第%d个学生的学号:",n+i+1);
  scanf("%ld",&stu[n+i].num);
  printf("请输入第%d个学生的姓名:",n+i+1);
  scanf("%s",stu[n+i].name);
  printf("请输入第%d个学生的3门课程成绩:\n",n+i+1);
  for(j=0;j<3;j++)
   scanf("%d",&stu[n+i].score[j]);
 }
    printf("添加成功!\n");
    printf("按任意键返回主菜单:\n");
    n+=m;
 getch();
}
//8.删除学生数据
void del(struct student stu[])
{
 system("cls");  //清屏函数
 int i,a;
 int flag=0;
    printf("\t\t\t┌──────┐\n");
 printf("\t\t\t│删除学生数据│\n");
 printf("\t\t\t└──────┘\n");
 printf("请输入要删除学生数据的学号:");
 scanf("%d",&a);
 for(i=0;i<n;i++)
 {
  if(a==stu[i].num)
  {
   flag=1; 
   printf("学号\t姓名\tC语言\t高数\t英语\t总成绩\t平均成绩\n");
   printf("%ld\t%s\t%d\t%d\t%d\t%.2f\t%.2f\n\n",stu[i].num,stu[i].name,
    stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].ave);
      printf("╔════════╗\n");
   printf("║确认是否删除?Y/N║\n");
            printf("╚════════╝\n");
   if (getchar()=='N')
   {
    break;
   } 
   if(getchar()=='Y')
   {
    for(i;i<n;i++)
    {
     stu[i].num=stu[i+1].num;
     strcpy(stu[i].name,stu[i+1].name);
     stu[i].score[0]=stu[i+1].score[0];
     stu[i].score[1]=stu[i+1].score[1];
     stu[i].score[2]=stu[i+1].score[2];
    }
    n--;
    printf("删除成功!\n");
   }
  } 
  if(flag==0) 
   printf("找不到该学号!\n");
 }
 printf("按任意键返回主菜单:\n");
 getch();
}
//这是主函数 
int main()
{
 int n;
 struct student *p,stu[N];
 p=stu;
 system("cls");  //清屏函数
    in();
 while(1)
 {    
  system("cls");  
  printf("\t\t┌───────────────┐\n");
  printf("\t\t│        学生成绩管理系统      │\n");
  printf("\t\t├───────────────┤\n");
  printf("\t\t│      1. 输入学生数据         │\n");
  printf("\t\t│      2. 显示学生数据         │\n");
  printf("\t\t│      3. 计算成绩             │\n");
  printf("\t\t│      4. 成绩排序             │\n");
  printf("\t\t│      5. 成绩查找             │\n");
  printf("\t\t│      6. 成绩修改             │\n");
  printf("\t\t│      7. 添加学生数据         │\n"); 
  printf("\t\t│      8. 删除学生成绩         │\n");
  printf("\t\t│      0. 退出                 │\n");
  printf("\t\t└───────────────┘\n\n");
  printf("请选择(0-8):");
  scanf("%d",&n);
  switch(n)
  {   
  case 1: input(p); break;
  case 2: display(p);break;
  case 3: aver(p); break;
  case 4: sort(p);break;
  case 5: find(p);break;
  case 6: modi(p);break;
  case 7: add(p);break;
  case 8: del(p);break;
  case 0:exit(1);
  }
 }
 return 0;
}
  • 20
    点赞
  • 110
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值