C语言学生成绩管理系统设计

本文实例为大家分享了C语言学生成绩管理系统的具体代码,供大家参考,具体内容如下

Ps:后加了个链表排序,用冒泡写的。

/*
  Title : Student's score management system
  Author: nyist_xiaod
  Date : 2012.5.8
*/ 

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h> 

#define Print_Head_Num puts("班级    姓名     语文 数学 英语 总成绩")
#define Print_Head_Cla puts("学号    姓名     语文 数学 英语 总成绩")
#define Print_Head_All puts("班级    学号    姓名     语文 数学 英语 总成绩") 

typedef struct Node Node; 

struct Score
{
  int chinese,math,english,sum;
}; 

struct Node
{
  char name[20],classs[20],number[20];
  struct Score score;
  struct Node* next;
}*head,*u,*p,*q; 

int n,C,M,E,Cj,Cy,Mj,My,Ej,Ey;
char num[20]; 

void Welcome()
{
  printf("\t\t    %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c\n",4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4);
  printf("\t\t    %c  欢迎您使用学生成绩管理系统 %c\n",4,4);
  printf("\t\t    %c                %c\n",4,4);
  printf("\t\t    %c     1.读取文件      %c\n",4,4);
  printf("\t\t    %c                %c\n",4,4);
  printf("\t\t    %c     2.保存文件      %c\n",4,4);
  printf("\t\t    %c                %c\n",4,4);
  printf("\t\t    %c     3.添加学生成绩    %c\n",4,4);
  printf("\t\t    %c                %c\n",4,4);
  printf("\t\t    %c     4.修改学生成绩    %c\n",4,4);
  printf("\t\t    %c                %c\n",4,4);
  printf("\t\t    %c     5.删除学生成绩    %c\n",4,4);
  printf("\t\t    %c                %c\n",4,4);
  printf("\t\t    %c     6.查询本人成绩    %c\n",4,4);
  printf("\t\t    %c                %c\n",4,4);
  printf("\t\t    %c     7.查询本班成绩    %c\n",4,4);
  printf("\t\t    %c                %c\n",4,4);
  printf("\t\t    %c     8.查询全校成绩    %c\n",4,4);
  printf("\t\t    %c                %c\n",4,4);
  printf("\t\t    %c     9.退出管理系统    %c\n",4,4);
  printf("\t\t    %c                %c\n",4,4);
  printf("\t\t    %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c\n\n",4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4);
  printf("\t\t    请输入指令:(1-9) ");
}
Node* new_node(Node* uu)
{
  uu = (Node*)malloc(sizeof(Node));
  uu->next = NULL;
  return uu;
}
void Add()
{
  u = new_node(u);
  printf("\n请输入您要加入的学生的信息:\n");
  printf("\n姓名: ");
  scanf("%s",u->name);
  printf("\n班级: ");
  scanf("%s",u->classs);
  printf("\n学号: ");
  scanf("%s",u->number);
  printf("\n语文、数学、英语成绩: ");
  scanf("%d%d%d",&u->score.chinese,&u->score.math,&u->score.english);
  u->score.sum = u->score.chinese + u->score.math + u->score.english;
  u->next = head->next;
  head->next = u;
  printf("\n--->添加成功!\n");
}
void Mod()
{
  n = 0;
  printf("\n请输入您要修改的学号: ");
  scanf("%s",num);
  for(u = head; u != NULL;u = u->next)
  {
    if(strcmp(u->number,num) == 0)
    {
      n = 1;
      printf("\n请输入新的语文、数学、英语成绩: ");
      scanf("%d%d%d",&u->score.chinese,&u->score.math,&u->score.english);
      u->score.sum = u->score.chinese + u->score.math + u->score.english;
      printf("\n--->修改成功!\n");
      break;
    }
  }
  if(!n)
    printf("\n--->没有这个学生的信息!\n");
}
void Del()
{
  n = 0;
  printf("\n请输入您要删除的学生的学号: ");
  scanf("%s",num);
  for(u = head; u != NULL;u = u->next)
  {
    if(strcmp(u->number,num) == 0)
    {
      n = 1;
      p->next = u->next;
      free(u);
      printf("\n--->删除成功!\n");
      break;
    }
    p = u;
  }
  if(!n)
    printf("\n--->没有这个学生的信息!\n");
}
void Sort()
{
  int i,j;
  n = 0;
  for(u = head->next; u != NULL;u = u->next)
    n++;
  for(i=1;i<=n;i++)
  {
    u = head;
    for(j=0;j<n-i;j++)
    {
      p = u->next;
      q = p->next;
      if(strcmp(p->classs,q->classs) > 0 || strcmp(p->classs,q->classs) == 0 && p->score.sum < q->score.sum)
      {
        u->next = q;
        p->next = q->next;
        q->next = p;
      }
      u = u->next;
    }
  }
}
void Que_One()
{
  n = 0;
  printf("\n请输入您要查询的学生的学号: ");
  scanf("%s",num);
  for(u = head->next; u != NULL;u = u->next)
  {
    if(strcmp(u->number,num) == 0)
    {
      n = 1;
      printf("\n");
      Print_Head_Num;
      printf("%-11s%-15s",u->classs,u->name);
      printf("%-6d%-6d%-6d%-6d\n",u->score.chinese,u->score.math,u->score.english,u->score.sum);
      break;
    }
  }
  if(!n)
    printf("\n--->没有这个学生的信息!\n");
}
void Analyze_Sco(Node *uu)
{
  C += uu->score.chinese;
  M += uu->score.math;
  E += uu->score.english;
  if(uu->score.chinese >= 60)
    Cj++;
  if(uu->score.chinese >= 90)
    Cy++;
  if(uu->score.math >= 60)
    Mj++;
  if(uu->score.math >= 90)
    My++;
  if(uu->score.english >= 60)
    Ej++;
  if(uu->score.english >= 90)
    Ey++;
}
void Print_Sco()
{
  printf("语文平均成绩: %-6.2f, 及格率: %%%-6.2f , 优秀率: %%%-6.2f.\n\n",(float)C/n,(float)100*Cj/n,(float)100*Cy/n);
  printf("数学平均成绩: %-6.2f, 及格率: %%%-6.2f , 优秀率: %%%-6.2f.\n\n",(float)M/n,(float)100*Mj/n,(float)100*My/n);
  printf("英语平均成绩: %-6.2f, 及格率: %%%-6.2f , 优秀率: %%%-6.2f.\n\n",(float)E/n,(float)100*Ej/n,(float)100*Ey/n);
}
void Que_Cla()
{
  Sort();
  n = C = M = E = Cj = Cy = Mj = My = Ej = Ey = 0;
  printf("\n请输入您要查询的班级: ");
  scanf("%s",num);
  printf("\n");
  for(u = head->next; u != NULL;u = u->next)
  {
    if(strcmp(u->classs,num))
      continue;
    if(!n)
      Print_Head_Cla;
    n++;
    printf("%-11s%-15s",u->number,u->name);
    printf("%-6d%-6d%-6d%-d\n",u->score.chinese,u->score.math,u->score.english,u->score.sum);
    Analyze_Sco(u);
  }
  if(!n)
  {
    printf("没有这个班级的学生信息!\n");
    return ;
  }
  printf("\n该班共有学生 %d 人.\n\n",n);
  Print_Sco(); 

}
void Que_All()
{
  Sort();
  n = C = M = E = Cj = Cy = Mj = My = Ej = Ey = 0;
  printf("\n");
  if(head->next == NULL)
  {
    printf("--->没有学生信息!\n");
    return ;
  }
  Print_Head_All;
  for(u = head->next; u != NULL;u = u->next)
  {
    n++;
    printf("%-12s%-12s%-15s",u->classs,u->number,u->name);
    printf("%-6d%-6d%-6d%-d\n",u->score.chinese,u->score.math,u->score.english,u->score.sum);
    Analyze_Sco(u);
  }
  printf("\n全校共有学生 %d 人.\n\n",n);
  Print_Sco();
}
void Save()
{
  char c;
  printf("\n确认保存?(Y/N): ");
  scanf("%*c%c",&c);
  if(c == 'N')
    return ;
  FILE *fp;
  if((fp=fopen("C:\\data.txt","w"))==NULL)
  {
    printf("\n--->无法打开文件\n");
    return ;
  }
  fputs("班级    学号    姓名     语文 数学 英语 总成绩",fp);
  if(head->next != NULL)
    fputs("\n",fp);
  for(u = head->next; u != NULL;u = u->next)
  {
    fprintf(fp,"%-11s%-11s%-15s",u->classs,u->number,u->name);
    fprintf(fp,"%-6d%-6d%-6d%-d",u->score.chinese,u->score.math,u->score.english,u->score.sum);
    if(u->next != NULL)
      fprintf(fp,"\n");
  }
  fclose(fp);
  printf("\n--->成绩成功存入C:\\\\data.txt中\n");
}
void Open()
{
  printf("\n请把数据放到目录C:\\\\data.txt中,按任意键确认.\n");
  getch();
  FILE *fp;
  if((fp=fopen("C:\\data.txt","r"))==NULL)
  {
    printf("\n--->没有找到文件!\n");
    return ;
  }
  char tmp[100];
  fgets(tmp,66,fp);
  while(!feof(fp))
  {
    u = new_node(u);
    fscanf(fp,"%s%s%s",u->classs,u->number,u->name);
    fscanf(fp,"%d%d%d%d",&u->score.chinese,&u->score.math,&u->score.english,&u->score.sum);
    u->next = head->next;
    head->next = u;
  }
  printf("\n--->成绩读入成功!\n");
  fclose(fp);
}
void Exi()
{
  char c;
  printf("\n确定退出?(Y/N): ");
  scanf("%*c%c",&c);
  if(c == 'N')
    return ;
  system("cls");
  printf("\n\n");
  printf("\t\t\t   %c %c %c %c %c %c %c %c %c\n",4,4,4,4,4,4,4,4,4);
  printf("\t\t\t   %c Made by Xiaod %c\n",4,4);
  printf("\t\t\t   %c %c %c %c %c %c %c %c %c\n",4,4,4,4,4,4,4,4,4);
  printf("\t\t\t             Thank you!\n\n\n");
  exit(0);
}
int main()
{
  int orz;
  system("color 0B");
  head = new_node(head);
  while(1)
  {
    Welcome();
    scanf("%d",&orz);
    system("cls");
    switch(orz)
    {
      case 1:Open();break;
      case 2:Save();break;
      case 3:Add();break;
      case 4:Mod();break;
      case 5:Del();break;
      case 6:Que_One();break;
      case 7:Que_Cla();break;
      case 8:Que_All();break;
      case 9:Exi();break;
      default :printf("\n--->无效的指令!\n");
    }
    printf("\n");
    system("pause");
    system("cls");
  }
  return 0;
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • C语言学生成绩管理系统小设计
  • C语言学生成绩管理系统课程设计
  • C语言编写学生成绩管理系统
  • C语言实现简单学生管理系统
  • 学生成绩管理系统C语言代码实现
  • C语言实现学生成绩管理系统
  • C语言图书管理系统简洁版
  • C语言图书管理系统课程设计
  • C语言实现图书管理系统
  • C语言利用结构体数组实现学生成绩管理系统
(0)

相关推荐

  • C语言图书管理系统简洁版

    DOS界面的图书管理系统,具体内容如下 程序分为两块:管理员操作(收录图书.删除图书等)和会员操作(注册.借书.还书等): 1.管理员操作界面 2.会员操作界面 global.h头文件:(程序中只使用了一个编写的头文件,在这里存放了所有的接口函数以及需要使用到的头文件,还有结构体的定义) #include "iostream" #include "string" #include "fstream" #include "conio.h&

  • C语言实现图书管理系统

    目前为止跟着学校进度学习C语言大概半年左右,基础学习只学到了指针,学得非常浅.说实话,起初对C语言的印象---只是一个学习计算机语言的敲门砖,对具体C语言如何应用等,非常迷茫.直到大一下半学期的高级语言设计课程之后,试过dos运行的图形化界面的完整小程序,才发现C语言的魅力. ok,废话不多说了,下面是我第二节课的作品----C语言的图书管理系统.一个简单的小程序.并非纯原创,是基于网络搜索到的"学生管理系统"改编而成的.通过直接浏览.修改一个完整的代码,我的收获颇丰.我认为这样比枯燥

  • C语言利用结构体数组实现学生成绩管理系统

    要求: 某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入).定义结构体类型描述学生信息,每个学生信息包括:学号.姓名.多门课的成绩.总成绩和平均成绩.用结构体数组作为函数参数,编程实现如下菜单驱动的学生成绩管理系统. (1) 录入每个学生的学号.姓名和各科考试成绩. (2) 计算每门课程的总分和平均分. (3) 计算每个学生的总分和平均分. (4) 按每个学生的总分由高到低排出名次表. (5) 按学号由小到大排出成绩表. (6) 按姓名的字典顺序排出成

  • C语言学生成绩管理系统小设计

    本文实例为大家分享了C语言学生成绩管理系统的具体代码,供大家参考,具体内容如下 一.本设计涉及的重要C语言知识有: 1.单链表的各种操作 2.文件流的操作 3.单链表的排序 二.本设计主要以下几个模块组成 1.学生成绩添加模块 2.学生成绩删除模块 3.学生成绩修改模块 4.学生成绩检索模块 5.学生成绩显示模块(包括成绩排序) 6.学生成绩保存模块 效果图: 本设计大概5.6百行代码左右,通过这个设计,本人感觉C语言熟练了很多, 希望能对像我一样的C语言菜鸟同学会有点帮助,废话少说,咱们上代码

  • 学生成绩管理系统C语言代码实现

    C语言实现了学生成绩管理系统,可以进行学生成绩的增加,删除,更新,查询,计算和展示. 完整代码如下: #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct person //定义结构体 { char num[10]; //学号 char name[20]; //姓名 float cyuyan; //C语言成绩 float en; //物理学成绩 float ji; //原子物理成绩

  • C语言实现简单学生管理系统

    花了一个月的时间,学习了链表,文件,多文件编程,然后就开始写学生管理系统,比较简单的那种,实现了增,添,改,查,多种排序,输入的时候的限定,成绩分析的功能.遇到的问题很多,也尝试解决了,下面写点写学生管理系统的要注意的地方,希望对别人有帮助. 1.一定要先写好主函数的框架,然后再往上面加东西,这样说有点笼统,我把我的主函数在下面,可以借鉴下哈.我的主函数是一个while(1)的无限循环,里面一个switch选择,利用一个菜单函数,让其返回值当成switch选择的值,然后进入不同的功能主函数,其他

  • C语言图书管理系统课程设计

    这是本人大一第二学期初C语言课程设计的作品,嘿嘿,本来以为已经找不到原稿了,今天无意中竟然在QQ网络硬盘中找到了当初的teta版,发布于此,以作纪念. C 源代码如下: #include<stdio.h> #include<stdlib.h> #include<string.h> struct book{ char book_name[30]; int bianhao; double price; char author[20]; char state[20]; cha

  • C语言学生成绩管理系统课程设计

    学生成绩管理系统是比较适合初学者的.它涵盖了c语言几乎知识.对于学了c语言的人,把这个课程设计搞好(当然自己能设计出来是要有很好的基础).不管自己能不能够完成,最重要的是能弄懂.参考其他资料,试着自己编写是不错的选择.这个课程设计也是我参照资料,自己编写的.自己适当地增加了一些功能.不过,编的不够那么专业吧. #include<stdio.h> #include<string.h> #include<stdlib.h> #define size 100 char* cl

  • C语言实现学生成绩管理系统

    设计一个学生成绩管理系统,实现对学生成绩的动态管理,实现对学生成绩的输入,显示,删除,查找,插入,最佳,保存,计算,排序等主要功能. 功能要求 1.每一条记录包括一个学生的学号.姓名.3门课成绩.平均成绩. 2.输入功能:可以一次完成若干条记录的输入. 3.显示功能:完成全部学生记录的显示. 4.查找功能:完成按姓名查找学生记录,并显示. 5.排序功能:按学生平均成绩进行排序. 6.插入功能:按平均成绩高低插入一条学生记录 7.删除功能:如果输入错误,可以删除学生记录: 8.退出. 代码: #i

  • C语言编写学生成绩管理系统

    用C语言编写学生成绩管理系统代码,供大家参考,具体内容如下 C语言实现学生成绩管理系统实战教学 https://www.jb51.net/article/154767.htm (1)给出所选课程设计题目以及本题目具体所要完成的功能要求说明. 1.课程设计题目:学生成绩管理系统 2.完成的功能要求: (1).主要实现的功能: 1---学生输入 2---学生插入 3---学生查询(按学号) 4---学生删除 5---学生输出 6---计算每名学生的平均分并输出 7---计算每科的平均分并输出 8--

随机推荐