C语言制作一个学生信息管理系统【附代码】

1.1 系统开发思路(需求分析)

使用C语言,在VC环境下,设计实现一个简单实用的学生成绩管理系统,本系统功能设计要求如下:

  1. 简单的操作界面,登陆系统,首先需要验证身份信息,验证成功后进入系统,若不成功,则提示错误信息。成功进入系统后,根据不同身份进入不同的操作界面。管理员可对各科成绩和成绩排序进行增删改查等相关功能,学生可查看成绩和成绩排序。
  2. 录入操作:首次进入系统,可以进行数据录入操作。
  3. 添加操作:用户输入要添加的学生姓名、学号、语文成绩、数学成绩、英语成绩等。
  4. 删除操作:对某一个学生的信息(姓名、学号、成绩等等)从系统里删除。
  5. 显示操作:将结构体中的学生信息输出到屏幕上。
  6. 查询操作

(1) 可以分别按学号和学生姓名查询;

(2) 查到则显示该学生的全部信息。

  1. 修改操作:修改学生信息并保存。
  2. 统计操作:分别统计所有员工的总工资;
  3. 排序操作:

(1) 对所有学生按三门课程总成绩进行降序排序;

(2) 对所有学生按某一门课程的成绩进行降序排序;

  1. 文件操作:

(7)系统退出时,把数据保存到文件中;

(8)再次进入系统,数据从文件中导入进去。。

数据输入用两种方式来实现:一是从键盘上手动录入数据;二是从文件中导入数据。

1.2系统功能设计

根据需求分析的结果,本系统至少要分为以下几个模块:(1)身份验证模块、菜单选择模块和文件模块。身份验证模块主要用于验证后台管理员身份,将文件中存储的用户名及密码与后台管理员输入的信息比较,若一致,成功进入系统,若不一致,提示错误信息。(2)菜单选择模块主要提供服务选项,在管理员或者学生选择服务命令后进行相应操作。菜单操作模块的功能为本系统的核心模块,提供给管理员录入、更新、查询、添加、删除、排序学生成绩等操作;提供给学生查询成绩等操作。(3)文件操作模块主要建立了两个文件,分别用于存储后台管理员登陆信息,以及学生卡的账号、用户名、密码、余额、状态等信息。当学生进行相应操作后,系统将更新后的信息存于文件夹中。

本系统的功能模块图如1-1示。
在这里插入图片描述

1-1 学生成绩管理系统功能结构图

1.3 系统详细设计

1.3.1数据结构设计

本系统的核心数据对象是学生的学号、姓名及其对应的各科成绩

学生信息:(学生姓名、学生学号、学生的语文成绩、学生的数学成绩、学生的英语成绩、学生的总成绩)

登陆账号(验证身份)

intpassword(int num_Input)

{

  int passwork = 2333; passwork 为设定的密码;

  /*printf("输入密码的次数:%d\n", num_Input);*/

  if (num_Input == 0)

  {

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

  intpasswork_Input = 0;

  scanf_s("%d",&passwork_Input);

  if(passwork_Input == passwork)

  {

  num_Input = num_Input + 1;

  /*printf("输入密码的次数:%d\n", num_Input);*/

  return 1;        //1表示密码正确;

  }

  else

  {

  printf("密码错误\n");

  main();

  }

  }

  else

  {

  return1;

  }

}

1.3.2数据文件

本系统是基于文件操作的,数据都以文件的形式存储在硬盘上。系统涉及到的文件主要有两类,一是存储管理员登录信息的文件“password.txt”;另外是存储每个用户的用户信息的文件“file.dat”。

图1-2文件

(1) 把数据从文件读入到内存函数代码如下:

void Input2(student Information[]) //对管理员的文件导入

{

  FILE* fp;

  fp =fopen("z:\\xuexiaoshixi\\wenjian.txt", "r+");

  if (fp)

  {

  int i = 0;

  while (!feof(fp))

  {

  fscanf(fp,"%s %s %d %d %d %d %d", Information[i].num, Information[i].name,&Information[i].score[0], &Information[i].score[1],&Information[i].score[2], &Information[i].score[3],  &Information[i].score[4]);

  printf("%s%s %d %d %d %d %d\n", Information[i].num, Information[i].name,Information[i].score[0], Information[i].score[1], Information[i].score[2],Information[i].score[3], Information[i].score[4]);

  Information[i].n= 1;

  i++;

  }

  }

  else

  printf("此文件为空\n");

  fclose(fp);

}

void Input3(student Information[]) //对普通用户的文件导入

{

  FILE* fp;

  fp =fopen("z:\\xuexiaoshixi\\baocun.txt", "r+");

  if (fp)

  {

  int i = 0;

  while (!feof(fp))

  {

  fscanf(fp,"%s %s %d %d %d %d %d", Information[i].num, Information[i].name,&Information[i].score[0], &Information[i].score[1],&Information[i].score[2], &Information[i].score[3],&Information[i].score[4]);

  printf("%s%s %d %d %d %d %d\n", Information[i].num, Information[i].name,Information[i].score[0], Information[i].score[1], Information[i].score[2],Information[i].score[3], Information[i].score[4]);

  Information[i].n= 1;

  i++;

  printf("i=%d\n",i);

  }

  }

  else

  printf("当前无数据\n");

  fclose(fp);

}

(2)将学生信息写入到文件“file.dat”文件中,代码如下:

该文件中包含申请学生学号、姓名、各科成绩等信息,运用users数组将信息存入文件中,并将每次修改后更新的信息存入文件。

1.3.3系统实现的各个函数及接口说明

void show02();

void show01();

void show03();

int Bianli(student Information[]); //根据学生的姓名或者学号返回其存于数组的下表;

int sumnumber(student Information[]); // 记录现有的学生数据的数量,返回最后一个数据存储的下标;

void Sort_Data(int j, int i, student Information[]); //对数据按科目进行排序;

void Data_addition( student Information[]); //添加数据,只能向后添加,从最后开始;

void Delete_Data(int j, student Information[]); //删除数据,j为删除的学生的下标;

void Search_Num(char number[8], student Information[]);//按学号查询

void Search_Name(char number[10], student Information[]); //按姓名查询

void Input1(student Information[]); //管理员手动输入;

void Input2(student Information[]); //管理员文件输入;

void Input3(student Information[]);//普通用的数据库;

void Save_Data(student Information[]); //保存;

void Modify_Data(int j, student Information[]); //修改学生信息;j为学生所在数组的下标;

void manager(student Information[]);//管理员功能菜单;

void ordinary(student Information[]);//学生功能菜单;

int password(int num_Input);

1.4 系统实现

1.4.1系统功能模块详细设计

(1) 添加学生信息

void Data_addition(studentInformation[])

{

  intj;

  for(j = 0; Information[j].n == 1; j++);

  if(j == 0)

  printf("当前数据为空,请先录入数据\n");

  else

  {

  printf("请输入要添加的学生人数:\n");

  int num = 0;

  scanf_s("%d", &num);

  for (int i = 0; i < num; i++)

  {

  printf_s("请输入学生学号:\n");

  getchar();

  gets_s(Information[j+ i].num);

  /*printf("输入时,学号输入位置计数 %d\n", j + i);*/

  printf("输入时,学号的输入%s\n", Information[j+ i].num);

  printf_s("请输入学生姓名:\n");

  gets_s(Information[j+ i].name);

  printf("请输入学生语文成绩:\n");

  scanf_s("%d",&Information[j + i].score[0]);

  printf("请输入学生数学成绩:\n");

  scanf_s("%d",&Information[j + i].score[1]);

  printf("请输入学生英语成绩:\n");

  scanf_s("%d",&Information[j + i].score[2]);

  Information[j+ i].score[3] = Information[j + i].score[0] + Information[j + i].score[1] +Information[j + i].score[2];

  Information[j+ i].score[4] = (Information[j + i].score[0] + Information[j + i].score[1] +Information[j + i].score[2]) / 3;

  Information[j+ i].n = 1;

  }

  printf("已添加\n");

  }

(2)删除学生信息


voidDelete_Data(int j, student Information[]) //j为删除的学生的下标;

{
   

  /*printf("Delete函数要删除的下标j:%d\n", j);*/

  int numberofstudents = 0;

  numberofstudents =sumnumber(Information); //当前最后一位学生的下标

  /*printf("numberofstudents:%d\n", numberofstudents);*/

  int L;

  if (j != numberofstudents )

  {
   

  for(L = j; L < numberofstudents; L++)

  {
   

  Information[L] = Information[L + 1];

  }

  if(L == numberofstudents )

  Information[numberofstudents].n = 0;

  }

  else

  {
   

  strcpy(Information[j].num,"\0");

  strcpy(Information[j].name,"\0");

  Information[j].n= 0;

  }

  printf("已删除\n");

}

(3) 给学生成绩排序

voidSort_Data(int j, int i, student Information[]) //j为科目的选择的排序,i为最后一名学生的下标,程序内会自动+1变为人数;

{
   

  int mingci = 0;

  printf("最后一名学生的下标:%d\n", i);

  int p, q;

  student temp;

  if (j > 5 || j < 1)

  printf("操作有误\n");

  else

  {
   

  for(p = 0; p < i + 1; p++)

  {
   

  for (q = p + 1; q < i + 1; q++)

  {
   

  if(Information[p].score[j - 1] > Information[q].scor
  • 5
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 好的,制作学生信息管理系统可以用C语言来实现。学生信息管理系统一个比较典型的小型管理系统,需要用到基本的C语言知识和文件操作等技术。 首先,需要定义一个学生信息结构体,包括学生姓名、学号、性别、年龄等信息,也可以加入其它相关信息。然后,可以通过输入和输出流来实现数据的读取和写入,将学生信息保存在一个文件中。 接着,可以定义一些操作函数,如添加学生信息、删除学生信息、修改学生信息、查询学生信息等。在实现这些函数的过程中,需要运用到C语言的条件语句、循环语句、函数等基本语法。 最后,将这些函数组合起来,形成一个完整的学生信息管理系统。用户可以通过命令行界面来操作该系统,实现对学生信息的管理和查询。 当然,学生信息管理系统的实现可以有不同的方式和思路,以上只是一种简单的实现方式。需要注意的是,在开发过程中,要注重代码的可读性和可维护性,避免出现不必要的错误和BUG。 ### 回答2: 学生信息管理系统一个可以方便地管理学生的基本信息和成绩信息的软件。使用C语言编写学生信息管理系统的主要步骤如下: 1. 确定程序的主要功能:首先,我们需要确定学生信息管理系统所需实现的功能,如新增学生、删除学生、修改学生信息、查询学生信息等。 2. 设计数据结构:然后,我们需要设计适当的数据结构来表示学生信息。可以使用结构体来定义包含学生基本信息的数据类型,如姓名、学号、性别、年龄等。 3. 实现基本功能:根据之前设计的功能,我们可以在主函数中编写对应的代码来实现新增学生、删除学生、修改学生信息和查询学生信息等功能。例如,当需要添加新的学生时,可以通过用户输入来获取学生的信息,然后将这些信息存储到数组或链表中。 4. 文件存储:为了保证学生信息的持久保存,我们可以将学生信息存储到文件中。可以使用文件操作函数来实现信息的写入和读取。 5. 菜单设计:为了方便用户使用,可以使用菜单来展示系统的功能选项。可以使用循环和分支结构来实现菜单的设计,并根据用户输入调用对应的功能函数。 6. 异常处理:在程序编写过程中,考虑到用户可能会输入错误的数据或产生其他异常情况,我们可以通过添加适当的异常处理代码来避免程序崩溃或出现错误结果。 最后,经过以上步骤,我们就可以完成使用C语言制作学生信息管理系统了。这个系统可以方便地进行学生信息的管理和查询,并且可以持久保存学生信息,提高信息管理的效率和准确性。 ### 回答3: 学生信息管理系统一个用来存储和管理学生信息的软件应用程序。利用C语言可以方便地实现该系统。 首先,在设计学生信息管理系统之前,需要确定学生信息的数据结构。可以使用结构体来表示学生的相关信息,如学号、姓名、性别、年龄、班级等。结构体的定义可以放在头文件中。 其次,需要实现以下基本功能: 1. 添加学生信息:通过键盘输入学生的相关信息,例如学号、姓名、性别、年龄、班级等,然后将信息存储到文件或内存中。 2. 查询学生信息:提供学号或姓名作为查询条件,通过遍历学生信息列表或使用查找算法在数据中找到对应的学生信息并打印出来。 3. 修改学生信息:根据学号或姓名查询到学生信息后,可以选择修改某个字段,如年龄、班级等,然后更新到数据中。 4. 删除学生信息:根据学号或姓名查询到学生信息后,可以选择删除该学生的记录,从数据中将其移除。 5. 显示所有学生信息:遍历学生信息列表并逐个打印。 最后,需要一个用户界面,用户可以通过命令行界面输入指令来实现上述功能。例如,用户可以选择添加学生信息、查询学生信息、修改学生信息、删除学生信息或显示所有学生信息。根据用户输入,系统将调用相应的函数来实现功能。 总之,使用C语言可以实现一个简单的学生信息管理系统。通过定义合适的数据结构和实现基本功能,可以方便地存储、查询、修改和删除学生信息。同时,提供一个友好的用户界面,使用户能够方便地使用该系统。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值