C语言版----学生信息管理系统(分析+代码)

这篇具有很好参考价值的文章主要介绍了C语言版----学生信息管理系统(分析+代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、分析系统功能设计

1.初始化学生列表、教师列表

·typedef struct student

  • 先对学生结构体进行重定义,便于对相关数组取名
  • 再初始化一个教室class,便于在后面的函数中调用学生信息

·typedef struct teacher

  • 先对教师结构体进行重定义,便于对相关数组取名

·void inputtStu()

  • 初始化三个学生的姓名、学号、性别、年龄、语文成绩与数学成绩
  • 再通过计算,算出每个学生的总分、平均分

·void inputtTea()

  • 初始化一位教师的用户账户(工号)、密码

2.登录功能

·void login()

  • 设置登录,登录成功教师才可以使用学生管理系统
  • 首先设置提示语:请输入账户.......;
  • 其次利用循环语句和判断语句,如果输入的账号、密码与预期相符,即输出提示语:登录成功
  • 否则输出:重新登录

3.菜单函数

·void menu()

  • 存放添加函数、修改函数、删除函数、查询函数、排序函数、查看函数等功能函数
  • 利用while循环、switch循环、case语句、break语句、default语句等,再调用功能函数写出相应的代码

4.添加函数 

·void addStu()

  • 添加学生信息
  • 采用3个while循环,第一个包括一些提示语句,比如:请输入添加学生的学号等
  • 第二个while循环包括判断学号是否与初始化的重复
  • 第三个包括判断成绩输入是否在0~100之间,最后利用判断语句,询问是否继续添加

5.修改函数 

·void updateStu()

  • 修改原有的学生信息
  • 先设置while循环,通过for循环,遍历学生信息的数组,通过if语句中的strcmp对比函数,寻找与输入的学号相符的学生
  • 找到之后可修改学生姓名、性别、学号、成绩,分别在两个while循环里利用if语句判断修改的学号是否与现有的重复、判断修改的分数是否在0~100之间
  • 全部符合规定,判断修改成功

6.删除函数

·void deleteStu()

  • 删除原有的学生信息
  • 先设置while循环,通过for循环,遍历学生信息的数组,通过if语句中的strcmp对比函数,寻找与输入的学号相符的学生,找到即删除成功

7.查询函数 

·void Student_SearchByIndex()

  • 查询所有学生信息
  • 遍历学生数组,通过if判断语句中strcmp函数对比学生的学号ID,找到就返回位置

8.排序函数 

·void sortByScoreSum()

  • 通过冒泡排序,利用两个for循环,对学生的总成绩进行排序
  • 在第一个for循环中输出排名

9.查看函数 

·void printScore()

  • 通过调用结构体元素打印出全部学生的信息

10.主函数 

·int main()

  • 调用登录、初始化学生信息、初始化教师信息、菜单函数

一、实现代码

1.初始化学生列表、教师列表

//重定义结构体

//学生结构体

typedef struct student{

//学号、姓名、性别、年龄

char ID[20];

char name[20];

char sex[20];

float age;

//每个学生每科成绩、总成绩、平均成绩

float chinese;

float math;

float sum;

float av;

}STU;

//初始化一个教室--数组 、三个学生

    STU class[20];

    int count=3;

//初始化3个学生信息

void inputtStu()

{

  strcpy(class[0].name,"a");

  strcpy(class[0].sex,"男");

  strcpy(class[0].ID,"101");

  class[0].age=18;

  class[0].chinese=78;

  class[0].math=95;

  class[0].sum=class[0].chinese+class[0].math;

  class[0].av=(class[0].chinese+class[0].math)/2;

  strcpy(class[1].name,"b");

  strcpy(class[1].sex,"男");

  strcpy(class[1].ID,"102");

  class[1].age=19;

  class[1].chinese=98;

  class[1].math=86;

  class[1].sum=class[1].chinese+class[1].math;

  class[1].av=(class[1].chinese+class[1].math)/2;

  strcpy(class[2].name,"c");

  strcpy(class[2].sex,"女");

  strcpy(class[2].ID,"103");

  class[2].age=20;

  class[2].chinese=75;

  class[2].math=79;

  class[2].sum=class[2].chinese+class[2].math;

  class[2].av=(class[2].chinese+class[2].math)/2;

}

//教师结构体

typedef struct teacher

{

//姓名

char name[20];

//每个登录账号(工号)和密码

char username[20];

char password[20];

}TEA;

TEA tea[20];

//初始化1个教师用户

void inputtTea()

{

strcpy(tea[0].name,"李老师");

strcpy(tea[0].username,"10001");

strcpy(tea[0].password,"10010");

}

2.登录功能

void login()

{

//判断逻辑

  char username[20];

  char password[20];

  char pd[20];

  int i;

  printf("\n\t\t\t\t********学生管理系统********\n");

  while(1){

  printf("\t\t\t\t**********请 登 录**********\n");

  printf("\t\t\t\t\t请输入用户账号\n");

  scanf("%s",username);

  printf("\t\t\t\t\t请输入用户密码\n");

  scanf("%s",password);

  //判断用户账户与用户密码是否匹配

    for(i=0;i<3;i++){

    if(strcmp(tea[i].username,username)==0&&strcmp(tea[i].password,password)==0)

{

   printf("\t\t\t\t登录成功!\n");

   return;

    }

     printf("\t\t\t\t\t账号或密码错误!!!\n");

    printf("\t\t\t\t\t是否继续?(y or n)");

    scanf("%s",pd);

    if (strcmp(pd,"n")==0)

    {

    printf("\t\t\t\t\t欢迎下次使用!");

    exit(0); //结束操作

    }

    else{

     break;

}

  }

}

}

3.菜单函数

void menu()

{

  while(1){

    printf("\t\t\t\t\t********学生管理系统********\n");

    printf("\t\t\t\t\t\t0.退出系统\n");

    printf("\t\t\t\t\t\t1.添加学生信息\n");

    printf("\t\t\t\t\t\t2.修改学生信息\n");

    printf("\t\t\t\t\t\t3.删除学生信息\n");

    printf("\t\t\t\t\t\t4.查询学生信息\n");

    printf("\t\t\t\t\t\t5.根据总分进行排序\n");

    printf("\t\t\t\t\t\t6.查看所有学生信息\n");

    printf("\t\t\t\t\t\t\t请选择0-6\n");

    int i;

    scanf("%d",&i);

    switch(i)

    {

   case 1: addStu(); break;//添

      case 2:updateStu(); break;//改

     case 3:deleteStu(); break;//删

     case 4:Student_SearchByIndex(); break;//查

     case 5:sortByScoreSum(); break;//排

     case 6:printScore(); break;//看

     case 0:printf("\t\t\t\t\t\t\t欢迎下次使用!");exit(0);//退出系统

    default:printf("\t\t\t\t\t输入错误,请重新输入!!!");

}

}

}

4.添加函数

void addStu()

{

  int i=0;

  //第一个while循环体包括两个while,第一个作用是作为判断学号输入是否合格的判断语句的循环体

  //第二个是作为判断分数是否合格的判断语句的循环体

  while(1){

   printf("请输入新增学生的姓名:");

   scanf("%s",class[count].name);

   printf("请输入新增学生的学号:");

   scanf("%s",class[count].ID);

   printf("请输入新增学生的性别:");

   scanf("%s",class[count].sex);

   printf("请输入新增学生的年龄:");

   scanf("%f",&class[count].age);

   char *pd;

   /*1.遍历所有学生

    2.把每个学生的学号与刚才输入的学号进行对比,是否重复

3.如果重复就重新输入,否则向后执行*/

   while(1)

 {

   for(i=0;i<count;i++)

   {

   if(strcmp(class[count].ID,class[i].ID)==0)

  {

   printf("学号有误,请重新输入!!!");

   printf("请输入新增学生的学号:");

          scanf("%s",class[count].ID);

          break;

  }

  }

  //所有条件不满足就跳出for循环,证明输入的学号符合规范

  if(i==count){

   break;

  }

  }

  

printf("请输入新增学生的语文成绩:");

scanf("%f",&class[count].chinese);

printf("请输入新增学生的数学成绩:");

scanf("%f",&class[count].math);

class[count].sum=class[count].chinese+class[count].math;

class[count].av=(class[count].chinese+class[count].math)/2;

  

while(1){

   if(class[count].chinese<0||class[count].chinese>M||class[count].math<0||class[count].math>M){

   printf("请输入0-100之间的数字!!!");

   printf("请输入新增学生的语文成绩:");

scanf("%f",&class[count].chinese);

printf("请输入新增学生的数学成绩:");

scanf("%f",&class[count].math);

class[count].sum=class[count].chinese+class[count].math;

class[count].av=(class[count].chinese+class[count].math)/2;

}

else{

break;

}

  }

  count++; //为了可以继续添加人数

  printf("添加成功!");

  printf("是否继续添加?y or n");

  scanf("%s",pd);

  if(*pd=='n')

  {

   printf("欢迎下次使用!");

   //退出系统是因为,这不是文件,没办法储存新增的学生信息

   exit(0);

  }

  }

}

5.修改函数

void updateStu()

{

  int i=0;

  //遍历学生信息的数组

  while(1)

  {

   printf("\t\t\t\t请输入需要修改的学生信息的学号:\n");

    scanf("%s",class[count].ID);

    char *pd;

    printf("\t\t\t\t--------请输入学生的信息--------\n");

while(1)

{

  for(i=0;i<count;i++)

  {

  

   //如果学号相符,进行修改操作

  if(strcmp(class[count].ID,class[i].ID)==0)

  {

   printf("\t\t\t\t\n请输入修改后的姓名:");

  scanf("%s",class[count].name);

printf("\t\t\t\t\n请输入修改后的年龄:");

  scanf("%f",&class[count].age);

    printf("\t\t\t\t\n请输入修改后的性别:");

  scanf("%s",class[count].sex);

}

if(i==count)

         {

    printf("\t\t\t\t请重新输入学号 !!!\n");

    printf("\t\t\t\t请输入需要修改的学生信息的学号:\n");

        scanf("%s",class[count].ID);

        break;

         }

      

}

   

 printf("\t\t\t\t\n请输入修改后的语文成绩:");

 scanf("%f",&class[count].chinese);

 printf("\t\t\t\t\n请输入修改后的数学成绩:");

 scanf("%f",&class[count].math);

while(1){

if(class[count].chinese<0||class[count].chinese>M||class[count].math<0||class[count].math>M)

      {

      printf("请重新输入0-100间的分数!");

      printf("\t\t\t\t\n请输入修改后的语文成绩:");

       scanf("%f",&class[count].chinese);

   printf("\t\t\t\t\n请输入修改后的数学成绩:");

        scanf("%f",&class[count].math);

    }

    else{

     break;

}

    }

    printf("\t\t\t\t修改成功!!!\n");

    printf("是否继续?(y or n)");

    scanf("%s",pd);

    if (*pd=='n')

    {

      printf("\t\t\t\t\t欢迎下次使用!");

      exit(0);

    }

}

}

}

6.删除函数

void deleteStu()

{

    printf("\t\t\t\t请输入需要删除的学生信息的学号:");

    char number[20];

    char pd[20];

    scanf("%s",number);

  //遍历学生信息的数组

    int i;

    for(i=0;i<count;i++)

    {

   //根据当前用户所输入的学号进行一一对比

  if(strcmp(number,class[i].ID)==0){

   //如果学号相符,进行删除操作

  //把当前需要删除的学生开始遍历,后一个覆盖前一个,直到找到为止

  int j=i;

  for(j;j<count-1;j++){

   class[j]=class[j+1];

  }

  printf("\t\t\t\t删除成功!!!\n");

  count--;

  return;

    }

    printf("\t\t\t\t当前用户不存在,请重新输入!");

        printf("是否继续?(y or n)");

        scanf("%s",pd);

     if (strcmp(pd,"n")==0)

    {

    printf("\t\t\t\t\t欢迎下次使用!");

    break;

    }  

    }

}

7.查询函数

void Student_SearchByIndex()

{

  printf("\t\t\t\t请输入需要查询的学生信息的学号:\n");

  char *id;

  scanf("%s",id);

  char pd[20];

  //遍历学生信息的数组

  printf("\t\t\t\t--------查询的学生信息如下--------\n");

  int i;

  for(i=0;i<count;i++)

  {

  //通过strcmp函数对比学生的学号ID,找到就返回位置

  if(strcmp(class[i].ID,id)==0){

  printf("\t\t\t姓名:%s 学号:%s 性别:%s 年龄:%.2f 语文成绩:%.2f 数学  成   绩:%.2f\n",class[i].name,class[i].ID,class[i].sex,class[i].age,class[i].chinese,class[i].math);

          printf("\t\t\t\t该学生的总成绩为:%.2f\n",class[i].sum);

          printf("\t\t\t\t该学生的平均成绩为:%.2f\n",class[i].av);

  printf("\t\t\t\t--------------------!!!\n");

 return;

  }

printf("\t\t\t当前用户不存在,请重新输入!!!\n");

 printf("\t\t\t\t是否继续?(y or n)");

 scanf("%s",pd);

     if (strcmp(pd,"n")==0)

    {

    printf("\t\t\t\t\t欢迎下次使用!");

    exit(0);

    }

   }

}

8.排序函数

void sortByScoreSum()

{

  printf("\t\t\t\t\t--------学生总成绩排名如下--------\n");

  int i,j,temp;

  for(i=0;i<count;i++)

  {

   for(j=0;j<count-i-1;j++)

   {

   if(class[j].sum<class[j+1].sum)

    {

   temp=class[j].sum;

   class[j].sum=class[j+1].sum;

   class[j+1].sum=temp;

       }

        printf("\t\t\t\t学生的总成绩的排名:%.2f\n",class[j].sum);

}

  }

}

9.查看函数

void printScore()

{

  //STU *stu=class;

  int i;

  printf("\t\t\t--------所有学生的信息--------\n");

  for(i=0;i<count;i++)

  {

  printf("\t\t\t姓名:%s 学号:%s 性别:%s 年龄:%.2f 语文成绩:%.2f 数学成绩:%.2f\n",class[i].name,class[i].ID,class[i].sex,class[i].age,class[i].chinese,class[i].math);

  printf("\t\t\t\t该学生的总成绩为:%.2f\n",class[i].sum);

  printf("\t\t\t\t该学生的平均成绩为:%.2f\n",class[i].av);

}   

  printf("\t\t\t-----------------------");

}

10.主函数  

//注意调用函数的顺序

int main()
{
  system("color E");  //改变控制台中文字的颜色
  inputtTea();
  inputtStu();
  login();   
  menu();

11.库函数

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 10
#define M 100 

三、运行结果图

1.登录系统

 C语言版----学生信息管理系统(分析+代码)

 

2.菜单函数 

C语言版----学生信息管理系统(分析+代码) 

3.添加函数

C语言版----学生信息管理系统(分析+代码) 

 

4.修改函数

C语言版----学生信息管理系统(分析+代码) 

 

5.查看函数

 C语言版----学生信息管理系统(分析+代码) 

6.删除函数

C语言版----学生信息管理系统(分析+代码) 

7.查询函数

C语言版----学生信息管理系统(分析+代码) 

8.排序函数

C语言版----学生信息管理系统(分析+代码)

最后,我也是一名新手小菜鸟,希望和大家一起进步~

希望大家可以自己把代码敲出来,并且弄懂,只有把知识点弄懂弄透,才能把其变成自己的东西~加油吧! 文章来源地址https://www.toymoban.com/news/detail-493328.html

到了这里,关于C语言版----学生信息管理系统(分析+代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言实现学生信息管理系统(附原码)

    本人的C语言学习完后,用所学的知识自己实现了一个学生管理系统,新手一个,代码还有待完善,欢迎大家在评论区指出错误! 一、流程图 二、函数的目录  三、程序介绍  1.主要功能: 添加学生信息、打印学生信息、查找学生信息、添加学生信息、修改学生信息、计算学

    2024年02月12日
    浏览(45)
  • C语言学生成绩信息管理系统(超详细版)

    主题:一个简易成绩管理系统 功能介绍: 1.以文本形式存储学生信息 2.对以存信息进行   1. 插入 2. 修改3. 删除  4.查询  5.成绩数字特征 目录 一:分析 二:查询  三:菜单 四:初始化函数 五:插入函数 六:修改函数 七:删除函数 八:数字特征 九:显示函数 要进行 插入

    2024年02月12日
    浏览(45)
  • 【C语言基础】学生信息管理系统-纯结构体实现

    ps.一定要先确实掌握结构体,结构体数组,函数中的传参,全局变量作用域等知识 一.设计构思和简单的准备工作 首先,要确定一个什么样的结构体,就需要看我需要什么功能。 于是,我写下来一个 我想要的 , 能做xxx功能的 ,可能还 很美观的 学生信息管理系统的目录,既

    2024年02月03日
    浏览(48)
  • 学生信息管理系统——JAVA 语言版(主页面+增+删+改+查+退)

    学生管理系统要能够实现添加学生信息,删除,修改以及查看学生信息的功能。 你是否尝试过使用JAVA语言编写一个代码程序,使用该代码实现学生信息管理呢? 如果你还没有任何头绪,接下来推荐你看一下我的做法,我使用的编程工具是IDEA,以下给出了学生信息管理系统的程

    2024年02月03日
    浏览(44)
  • 赶紧进来看看---C语言实现学生信息管理系统(3.0文件存储版)

    本文主要介绍了将学生信息管理系统改造为文件存储版本… 主要涉及文件操作函数–将学生信息导入文件和从文件读取学生信息到程序中,从而达到数据持久化的效果 文章最后有源码展示 学生信息管理系统1.0静态版-学生信息管理系统2.0动态内存增长版-学生信息管理系统3.0文

    2024年01月20日
    浏览(44)
  • C语言程序设计期末大作业(学生信息管理系统)(可自取源码)

    高校学生信息管理系统 (一)在高校学生管理系统中包含九个主要操作: 退出系统; 学生信息的录入; 学生信息的打印; 学生信息的保存; 学生信息的读取; 学生人数的统计; 学生信息的查找; 学生信息的修改; 学生信息的删除。 (二)设计流程 首先确认用switch ca

    2024年02月10日
    浏览(54)
  • C语言课程设计:学生成绩信息管理系统(排序、平均分、总分)详解

    1、需求分析 利用C语言编写一个可以对学生成绩信息进行管理的系统 0、退出系统 1、录入学生信息和成绩 2、打印学生信息 3、统计学生人数 4、查找学生信息 5、修改学生信息 6、删除学生信息 7、排序学生成绩 8、生成学生信息文件 9、读取文件学生信息 10、输出各科成绩不

    2024年02月11日
    浏览(53)
  • 学生信息管理系统(录入、查找、删除、修改、排序、统计等功能实现)超详细完整代码,建议保存。

    许多老师都会布置Python期末大作业,作业题目很多就是学生信息管理系统,以前都是练习小题目,几十行代码就能搞定,而完整的写完这个系统我用了差不多400行代码。完整写完这个系统,是对一个学期所学知识的进一步深入了解于学习,还能扩充一些课外知识。篇幅很长,

    2024年02月12日
    浏览(46)
  • JSP+SQL基于JSP的学生信息管理系统(源代码+论文+答辩PPT)

    随着学校规模的不断扩大,学生数量急剧增加,有关学生的各种信息也成倍增长。面对如此庞大的信息量,开发学生信息管理系统来提高学生管理工作的效率就成为必然。通过该系统,可以做到信息的规范管理、科学统计和快速查询,从而减少管理方面的工作量。 本文主要介

    2024年02月03日
    浏览(60)
  • 学生信息管理系统springboot学校学籍专业数据java jsp源代码mysql

    本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 学生信息管理系统springboot 系统3权限:超级管理员,学生,老师。 管理员登录主要包括:用户管理,专业管

    2024年02月14日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包