本系统有增加学生记录、修改学生记录、删除学生记录、按姓名查询学生记录、按C语言成绩对学生进行排序、退出系统6大功能。
能够对学生的姓名,学号,c语言成绩做相应的操作。
在检测到输入成绩大于55时,会自动加上5。

该管理系统设计功能模块图:

下面是源代码:

#include "stdio.h"
#include "string.h"/*定义学生结构体*/
struct Student
{char ID[20];       //学号char Name[20];      //姓名float C_Mark;       //C语言成绩
};/*声明学生数组及学生数量*/
struct Student students[1000];
int num=0;  /*通过学号返回数组下标*/
int Student_SearchByIndex(char id[])
{int i;  for (i=0;i<num;i++)  {if (strcmp(students[i].ID,id)==0)  {return i;  }  }  return -1;
}/*通过姓名返回数组下标*/
int Student_SearchByName(char name[])
{int i;  for (i=0;i<num;i++)  { if (strcmp(students[i].Name,name)==0){ return i;}  }  return -1;
}  /*显示单条学生记录*/
void Student_DisplaySingle(int index)
{printf("%10s%10s%8s\n","学号","姓名","C语言成绩");  printf("-------------------------------------------------------------\n");  printf("%10s%10s%8.2f\n",students[index].ID,students[index].Name,students[index].C_Mark);
}  /****1、增加学生记录*****/
void Student_Insert()
{  while(1)  {printf("请输入学号:");  scanf("%s",&students[num].ID);  getchar();  printf("请输入姓名:");  scanf("%s",&students[num].Name);  getchar(); printf("请输入C语言成绩:");  scanf("%f",&students[num].C_Mark);  getchar(); if (54<students[num].C_Mark && students[num].C_Mark< 60)    //把55~59分之间的成绩都加上5分{students[num].C_Mark += 5;        }num++;printf("是否继续?(Y/N),继续请按任意键,否则输入N:"); if (getchar()=='N')  {  break;}  }
}     /******2、修改学生信息**********/
void Student_Modify()
{  while(1) {  char id[20]; int index; printf("请输入要修改的学生的学号:"); scanf("%s",&id);  getchar();  index=Student_SearchByIndex(id);  if (index==-1)  {  printf("该学生不存在!\n"); }else  {  printf("你要修改的学生信息为:\n"); Student_DisplaySingle(index);  printf("-- 请输入新值--\n"); printf("请输入学号:");  scanf("%s",&students[index].ID);  getchar();  printf("请输入姓名:");  scanf("%s",&students[index].Name);  getchar();  printf("请输入C语言成绩:");  scanf("%f",&students[index].C_Mark);  getchar();  }  printf("是否继续?(Y/N),继续请按任意键,否则输入N:"); if (getchar()=='N')  {  break;}  }  } /****3、删除学生信息****/
void Student_Delete()
{ int i;  while(1)  {  char id[20];  int index;  printf("请输入要删除的学生的学号:");  scanf("%s",&id);  getchar();  index=Student_SearchByIndex(id);  if (index==-1)  {  printf("学生不存在!\n");  }  else  {  printf("你要删除的学生信息为:\n"); Student_DisplaySingle(index);  printf("是否真的要删除?(Y/N)");  if (getchar()=='Y')  {  for (i=index;i<num-1;i++)  {  students[i]=students[i+1];//把后边的对象都向前移动  } num--;  }  getchar();  printf("已删除\n");}  printf("是否继续删除?(Y/N),继续请按任意键,否则输入N:"); if (getchar()=='N')  {  break;}  }
}  /****4、按姓名查询******/
void Student_Select()
{  while(1)  {  char name[20];  int index;  printf("请输入要查询的学生的姓名:");  scanf("%s",&name); getchar();  index=Student_SearchByName(name);  if (index==-1) {  printf("学生不存在!\n"); } else  {  printf("你要查询的学生信息为:\n"); Student_DisplaySingle(index);  }  printf("是否继续?(Y/N),继续请按任意键,否则输入N:"); if (getchar()=='N')  {  break;} }
}  /******5、按C语言成绩排序*******/
void Student_SortByAverage()
{  int i,j;  struct Student tmp;  for (i=0;i<num;i++)  {  for (j=1;j<num-i;j++) {  if (students[j-1].C_Mark<students[j].C_Mark) {  tmp=students[j-1]; students[j-1]=students[j];  students[j]=tmp;  }  }  }
}  /*显示学生信息*/
void Student_Display()
{  int i;  printf("%10s%10s%8s\n","学号","姓名","成绩");  printf("-------------------------------------------------------------\n");  for (i=0;i<num;i++)  {  printf("%10s%10s%8.2f\n",students[i].ID,students[i].Name,students[i].C_Mark);  }  }  /*将学生信息从文件(Database.txt)中读出*/
void IO_ReadInfo()
{ FILE *fp;  int i;  if ((fp=fopen("Database.txt","rb"))==NULL)  {  printf("不能打开文件!\n");  return;  }if (fread(&num,sizeof(int),1,fp)!=1)  {  num=-1;  } else  {  for(i=0;i<num;i++)  {  fread(&students[i],sizeof(struct Student),1,fp);  }  } fclose(fp);
} /*将学生信息写入文件(Database.txt)*/
void IO_WriteInfo()
{  FILE *fp; int i;  if ((fp=fopen("Database.txt","wb"))==NULL)  {  printf("不能打开文件!\n");  return;  }  if (fwrite(&num,sizeof(int),1,fp)!=1)  {  printf("写入文件错误!\n");  }  for (i=0;i<num;i++)  {  if (fwrite(&students[i],sizeof(struct Student),1,fp)!=1)  {  printf("写入文件错误!\n");  }  }  fclose(fp);
} /***********主程序*********/
void main()
{ int choice;  IO_ReadInfo();           //读取文件while(1)  {  /*主菜单*/  printf("\n------ 学生成绩管理系统------\n");  printf("1. 增加学生记录\n");  printf("2. 修改学生记录\n");  printf("3. 删除学生记录\n");  printf("4. 按姓名查询学生记录\n");  printf("5. 按C语言成绩排序\n");  printf("6. 退出\n");  printf("请选择(1-6):");  scanf("%d",&choice);  getchar();  switch(choice)  { case 1:  Student_Insert();  break; case 2: Student_Modify(); break;  case 3:  Student_Delete(); break;  case 4:  Student_Select();break;  case 5:  Student_SortByAverage();Student_Display();break;  case 6: exit(0);  break;  } IO_WriteInfo();  }
}  

运行结果:
测试第一个功能,输入四个学生的成绩:

测试第二个功能,修改学生记录:

测试第三个功能,删除学生记录:

测试第四个功能,按姓名查询学生记录:

测试第五个功能,显示所有学生的成绩,按照C语言成绩由高到底排序:

我们可以看到,各项功能的实现,在第2个步骤中,将赵的成绩改为80,而第3个步骤删除了李的成绩。从第5个步骤中可以看出,我们输入的张是56分,输出按照事先设定好的加上5变成了61分。系统的稳定正在测试中,按照原计划实现了功能。

本系统的整个开发过程和功能实现,能够进行学生C语言成绩信息录入、修改、删除、查询、浏览操作,本系统的应用,将会使学生和教务管理人员在第一时间内获得理想的信息。

C语言实现学生成绩管理系统设计相关推荐

  1. c语言学生成绩设计思路,C语言学生成绩管理系统设计.docx

    沈阳航空航天大学 课程设计报 大作业名称:C语言课程设计 大作业题目:学生成绩管理系统设计 院(系):计算机学院 专业:计算机科学与技术 班 级: 学 号: 姓 名: 指导教师: 完成日期:2016年 ...

  2. c语言学生成绩管理系统设计分析,参阅:C语言学生成绩管理系统设计

    <C语言学生成绩管理系统设计.doc>由会员分享,可免费在线阅读全文,更多与<C语言学生成绩管理系统设计>相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜 ...

  3. C#毕业设计——基于C#+asp.net+sqlserver的学生成绩管理系统设计与实现(毕业论文+程序源码)——成绩管理系统

    基于C#+asp.net+sqlserver的学生成绩管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于C#+asp.net+sqlserver的学生成绩管理系统设计与实现,文章末尾 ...

  4. 题目:学生成绩管理系统设计(C语言程序设计期末作业)

    1.题目要求: 设计一个学生成绩管理系统,主要用来管理学生基本信息和成绩,涉及知识点:函数:循环:选择:结构体等. 2. 2.系统功能要求: 输入功能:可建立学生信息(包括学号.姓名.成绩等),每个学 ...

  5. c语言else if设计一个成绩表,c语言 学生成绩管理系统设计学生成绩信息包括:学号,姓名,三门课程成绩(数学、英语和计算机)等。主要功能:(1) 计算各...

    共回答了9个问题采纳率:88.9% 希望对你有所帮助. #include"stdio.h" #include"stdlib.h" #include"s ...

  6. 基于PHP+MySQL的学生成绩管理系统设计与实现 报告+项目源码及数据库文件+演示视频

    目录 [PHP]学生成绩管理系统 1 前言 2 功能模块 2.1学生模块 2.2 教师模块 2.3 主要的文件结构 3 界面设计 3.1 登录界面 3.2 学生主页(我的成绩) 3.3 各科成绩 3. ...

  7. 基于JavaWeb的学生成绩管理系统设计与实现

    目 录 摘 要 Abstract 第一章 绪 论 1.1研究的背景及意义 1.1.1选题的背景 1.2系统目标 1.3组员分工 第二章 需求分析 2.1功能需求分析 2.2 技术应用 2.2.1 My ...

  8. 学生成绩管理系统设计报告python_python实现简易版学生成绩管理系统

    300来行python代码实现简易版学生成绩管理系统,供大家参考,具体内容如下 使用链表来实现 class Node(object): def __init__(self, data, pointer ...

  9. 学生成绩管理系统实验报告_学生成绩管理系统设计

    1.题目与要求 1.1问题提出 设计学生成绩管理系统,有N个学生,每个学生的数据包含学号(不重复).姓名.三门课的成绩及平均成绩,试设计一学生成绩管理系统 1.2本系统涉及的知识点 结构体数组.结构体 ...

  10. 学生成绩管理系统设计

    实现功能: [问题描述] 请设计一个学生成绩管理系统.学生信息包括学号.姓名.性别.英语.数学.程序设 计.数据结构.总分.名次等内容.请实现如下功能: (1) 学生信息的录入(并能够检查学号重复者. ...

最新文章

  1. C. Number of Ways(前缀和)
  2. java垃圾回收机制串行_Java垃圾回收机制
  3. java的多线程实现方式_java 多线程实现方式
  4. 肺功能曲线图怎么看_如何看肺功能结果报告单
  5. yii2 migrate 数据库迁移的简单分享
  6. 北京林业大学计算机复试难度,北京林业大学考研难吗?一般要什么水平才可以进入?...
  7. 阿里云安装mysql5.7_同一服务器上二进制安装mysql5.7和mysql5.6
  8. golang.org/x/lint安装失败
  9. MyBatis Generator(MBG)从Abator迁移
  10. [BUAA软工]团队贡献分博客
  11. \Process(sqlservr)\% Processor Time 计数器飙高
  12. 【禁忌搜索算法】基于禁忌搜索算法求解函数极值问题含Matlab源码
  13. 用python画星空源代码
  14. 神经网络利用哪种算法将损失函数的值降到最低
  15. 从码农到艺术家——读《禅与摩托车维修艺术》有感
  16. 半小时学会LevelDB原理及应用
  17. matlab中如何打出心,如何在MATLAB中再现这个心形网格?
  18. 成都网站优化之企业网站内部优化
  19. 【不一样的面经】阿里面试,我挂在了第四轮……
  20. 多线程下调用ShowDialog时异常原因及解决办法

热门文章

  1. 锐捷linux网卡,突破锐捷客户端检测多网卡,可实现多网卡同时上网
  2. 利用GPU加速的软件
  3. qq android qav,33 BK.QQAVManager 音视频管理
  4. [推荐电子图书]-[jquery视频教程 初级+高级][25课程]
  5. java 报表 存储过程_快逸报表数据集类型采用存储过程介绍
  6. 谁手握账本?趣讲 ZK 的内存模型
  7. 【控制】《自动控制原理》胡寿松老师-第8章-非线性控制系统分析
  8. win10计算机管理字体糊,完美解决:Win10系统字体模糊解决教程
  9. 激光点云数据编辑处理(一)——CloudCompare
  10. 洛谷OJ_P1009涉及的高精度算法