学生信息管理系统(C语言版)

简介: 学生信息管理系统(C语言版)

学生信息管理系统(C语言版)

  • 学生信息管理系统会是学校要求我们做的第一个简单的系统,毫不夸张的说全国超过半数的高校都会使用学生信息管理系统生进行考核,无论是C语言版的,还是Python版本的,我都会为你提供参考。

废话少说,下面直接上需求图。20210712175305956.png20210712175354868.png20210712175538957.png

看到这里,是否发现与学校要求的开发要求没有什么区别。

接着上代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h> 
#include<stdlib.h>
#include<string.h>          
int k = 1;  //循环初始条件
int n = 0;  //初始时学生人数为0
struct student {
  char studentnum[30];
  char studentname[30];
  int studentage;
  char studentsex;
  float score[3];
}stu[50]; //最大学生数为50
//函数声明
void help();
int flush();
void find();
void update();
void insert();
void del();
void display();
void save();
void menu();
//主函数                   
int main()
{
  while (k) menu();
}
//主菜单设计                   
void menu()
{
  int num;
  printf("\n");
  printf("**********************************************************\n\n");
  printf("*****              学生信息管理系统                  *****\n \n");
  printf("**********************************************************\n\n");
  printf("*********************系统功能菜单*************************\n");
  printf("     ----------------------   ----------------------   \n");
  printf("     *********************************************     \n");
  printf("     * 0.系统帮助及说明  * *  1.刷新学生信息   *     \n");
  printf("     *********************************************     \n");
  printf("     * 2.查询学生信息    * *  3.修改学生信息   *     \n");
  printf("     *********************************************     \n");
  printf("     * 4.增加学生信息    * *  5.按学号删除信息 *     \n");
  printf("     *********************************************     \n");
  printf("     * 6.显示当前信息    * *  7.保存当前学生信息*     \n");
  printf("     ********************** **********************     \n");
  printf("     * 8.退出当前系统    *                            \n");
  printf("     **********************                            \n");
  printf("     ----------------------   ----------------------     \n");
  printf("**********************************************************\n");
  printf("\n");
  printf("请选择菜单编号: ");
  scanf("%d", &num);
  printf("\n");
  switch (num)
  {
  case 0:help(); break;   //帮助
  case 1:flush(); break;    //刷新
  case 2:find(); break;   //查找
  case 3:update(); break;   //修改
  case 4:insert(); break;   //增加
  case 5:del(); break;    //删除
  case 6:display(); break;  //显示
  case 7:save(); break;   //保存
  case 8:k = 0; printf("正在退出系统……\n"); break;//退出
  default:printf("请在0——8之间进行选择!");
  }
}
//系统帮助及说明               
void help()
{
  printf("\n");
  printf("      欢迎您进入学生信息管理系统的系统帮助及说明!首次\n");
  printf("  进入该系统,您必须先添加学生信息;然后按照系统的提示输\n");
  printf("  入需要执行的步骤;如果输入有误则会导致系统出现问题;在\n");
  printf("  您添加了学生信息后,需要按照学生的姓名来进行保存;最后\n");
  printf("  感谢您对该系统的信任!\n");
}
//刷新信息                  
int flush() {
  int i = 0;
  char filename[30];
  printf("\n");
  printf("请输入要刷新学生信息的文件名:");
  scanf("%s", filename);
  int j = 0;
  FILE* fp;
  if ((fp = fopen(filename, "r")) == NULL) return 0;
  //文件的读取
  while (fscanf(fp, "%s %s %s %d %d %d %d ", &stu[j].studentnum, &stu[j].studentname, &stu[j].studentage, &stu[j].studentsex, &stu[j].score[0], &stu[j].score[1], &stu[j].score[2]) == 7) {
    j++;
  }
  n = j;
  printf("\n");
  printf("刷新成功!\n");
  return n;
}
//查找信息
void find() 
{
  int i, item, point;
  char s1[30]; 
  printf("----------------------\n");
  printf("-----1.按学号查询-----\n");
  printf("-----2.按姓名查询-----\n");
  printf("-----3.退出本菜单-----\n");
  printf("----------------------\n");
  while (1)
  {
    printf("\n");
    printf("请选择子菜单编号: ");
    scanf("%d", &item);
    printf("\n");
    point = 0;
    switch (item)
    {
    case 1:
      printf("请输入要查询的学生的学号: ");
      scanf("%s", s1);
      printf("\n");
      for (i = 0; i < n; i++)
        if (strcmp(s1, stu[i].studentnum) == 0)
        {
          point = 1;
          printf("学号\t姓名\t年龄\t性别\tC语言\t高数\t英语\n");
          printf("--------------------------------------------------------\n");
          printf("%s\t%s\t%d\t%6\t%.1f\t%.1f\t%.1f\n", stu[i].studentnum, stu[i].studentname, stu[i].studentage, stu[i].studentsex, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
        }
      if (point==0)
        printf("该学号不存在!\n"); break;
    case 2:
      printf("请输入要查询的学生的姓名: ");
      scanf("%s", s1);
      printf("\n");
      for (i = 0; i < n; i++)
        if (strcmp(stu[i].studentname, s1) == 0)
        {
          point = 1;
          printf("学号\t姓名\t年龄\t性别\tC语言\t高数\t英语\n");
          printf("---------------------------------------------------------\n");
          printf("%s\t%s\t%d\t%c\t%.1f\t%.1f\t%.1f\n", stu[i].studentnum, stu[i].studentname, stu[i].studentage, stu[i].studentsex, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
        }
      if (point==0)
        printf("该姓名不存在!\n"); break;
    case 3:return;
    default:printf("请在1-3之间选择\n");
    }
  }
}
//修改信息
void update()
{
  int i, item, num ;
  char sex1, s1[30], s2[30]; 
  float score1;
  printf("请输入要要修改的学生的学号: ");
  scanf("%s", s1);
  for (i = 0; i < n; i++) {
    if (strcmp(stu[i].studentnum, s1) == 0) {
      num = i;
      printf("------------------\n");
      printf("1.修改姓名\n");
      printf("2.修改年龄\n");
      printf("3.修改性别\n");
      printf("4.修改C语言成绩\n");
      printf("5.修改高等数学成绩\n");
      printf("6.修改大学英语成绩\n");
      printf("7.退出本菜单\n");
      printf("------------------\n");
      while (1)
      {
        printf("请选择子菜单编号: ");
        scanf("%d", &item);
        printf("\n");
        switch (item)
        {
        case 1:
          printf("请输入新的姓名: ");
          scanf("%s", s2);
          printf("\n");
          strcpy(stu[num].studentname, s2);
          break;
        case 2:
          printf("请输入新的年龄: ");
          scanf("%d", stu[num].studentage);
          printf("\n");
          break;
        case 3:
          printf("请输入新的性别: ");
          scanf("%s", &sex1);
          printf("\n");
          stu[i].studentsex = sex1;
          break;
        case 4:
          printf("请输入新的C语言成绩: ");
          scanf("%f", &score1);
          printf("\n");
          stu[num].score[0] = score1;
          break;
        case 5:
          printf("请输入新的高等数学成绩: ");
          scanf("%f", &score1);
          printf("\n");
          stu[num].score[1] = score1;
          break;
        case 6:
          printf("请输入新的大学英语成绩: ");
          scanf("%f", &score1);
          printf("\n");
          stu[num].score[2] = score1;
          break;
        case 7: return;
        default:printf("请在1-7之间选择\n");
        }
      }
      printf("修改完毕,请立即保存!\n");
    }
    else {
      printf("未找到该学号!!!");
    }
  }
}
//添加信息                  
void insert() {
  int i = n, j, point = 1;
  printf("\n");
  printf("请输入学生的学号: ");
  scanf("%s", stu[i].studentnum);
  for (j = 0; j < i; j++) {
    if (strcmp(stu[i].studentnum, stu[j].studentnum) == 0) {
      printf("该学号已存在,请重新输入!\n");
      point = 1;
      break;
    }
  }
  printf("\n");
  printf("请输入学生的姓名: ");
  scanf("%s", stu[i].studentname);
  printf("\n");
  printf("请输入学生的年龄: ");
  scanf("%d", &stu[i].studentage);
  printf("\n");
  printf("请输入学生的性别: ");
  scanf(" %c", &stu[i].studentsex);
  printf("\n");
  printf("请输入学生的C语言成绩: ");
  scanf("%f", &stu[i].score[0]);
  printf("\n");
  printf("请输入学生的高等数学成绩: ");
  scanf("%f", &stu[i].score[1]);
  printf("\n");
  printf("请输入学生的大学英语成绩: ");
  scanf("%f", &stu[i].score[2]);
  printf("\n");
  n++;
}
//删除信息                  
void del()
{
  int i, j, point = 0;
  char num[30];
  printf("请输入要删除学生的学号:\n");
  scanf("%s", num);
  for (i = 0; i < n; i++) {
    if (strcmp(stu[i].studentnum, num) == 0) {
      point = 1;
      for (j = i; j < n - 1; j++) {
        stu[j] = stu[j + 1];
      }
    }
  }
  //成功
  if (point==1) {
    printf("删除成功!!!\n");
    n--;
  }
  //失败
  else
    printf("该学号不存在!!!\n");
}             
//显示信息                    
void display()
{
  int i;
  printf("共有%d位学生的信息:\n", n);
  printf("\n");
  if (0 != n)
  {
    printf("学号\t姓名\t年龄\t性别\tC语言\t高数\t英语\n");
    printf("--------------------------------------------------\n");
    for (i = 0; i < n; i++)
    {
      printf("%s\t%s\t%d\t%c\t%.1f\t%.1f\t%.1f\n", stu[i].studentnum, stu[i].studentname, stu[i].studentage, stu[i].studentsex, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
    }
  }
}
//保存信息                  
void save() {
  int i;
  FILE* fp;
  char filename[30];
  printf("要保存的文件名称(以.txt结尾):");
  scanf("%s", filename);
  printf("\n");
  //文件写入
  fp = fopen(filename, "w");
  for (i = 0; i < n; i++) {
    fprintf(fp, "%s%s%d%c%.lf%.lf%.lf\n", stu[i].studentnum, stu[i].studentname, stu[i].studentage, stu[i].studentsex, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
  }
  fclose(fp);
  printf("保存成功!!!\n");
}
————————————————
版权声明:本文为CSDN博主「京茶吉鹿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_52372879/article/details/118680539

第一次发CSDN,若不如意,还望读者多多包含并指出。如需要详细的项目开发需求和项目文档,请留言。相信作者定负读者重望!!!

相关文章
|
7月前
|
存储 C语言
C语言实现简易学生信息管理系统
C语言实现简易学生信息管理系统
230 4
|
6月前
|
存储 C语言
详细解读C语言学生信息管理系统
详细解读C语言学生信息管理系统
49 0
|
7月前
|
存储 人工智能 机器人
【C/C++】C语言 学生信息管理系统(源码)【独一无二】
【C/C++】C语言 学生信息管理系统(源码)【独一无二】
168 2
|
数据库 C语言
C语言加链表实现学生信息管理系统
用C语言加链表的知识实现简单的学生信息管理系统。(可以自己完善添加数据库,文件流等操作)
|
C语言
学生信息管理系统(C语言结构体数组版)
学生信息管理系统(C语言结构体数组版)
|
C语言
C语言实现通讯录(类似学生信息管理系统)
C语言实现通讯录(类似学生信息管理系统)
218 0
C语言实现通讯录(类似学生信息管理系统)
|
存储 算法 搜索推荐
C语言课题设计----学生学籍信息管理系统(附打包下载)
C语言课题设计----学生学籍信息管理系统(附打包下载)
|
C语言
c语言链表文件操作实现学生信息管理系统
c语言链表文件操作实现学生信息管理系统
|
存储 SQL 关系型数据库
C语言实验小项目实例源码大全订票信息管理系统贪吃蛇图书商品管理网络通信等
C语言实验小项目实例源码大全订票信息管理系统贪吃蛇图书商品管理网络通信等
117 0
学生信息管理系统(通讯录)----------通俗易懂、附源码、C语言实现
学生信息管理系统(通讯录)----------通俗易懂、附源码、C语言实现