基于C语言学生成绩管理系统的设计与开发-基于文件、结构体、指针、函数、循环、结构体指针等知识点
一、前言
- 学生成绩管理系统的开发与设计的背景
在各类学校中,学生成绩管理都是一个非常重要的问题,传统的成绩管理记录和保存都非常困难,而
且容易出错,查询也非常不方便。
因此,在当今信息时代,学生成绩管理系统应运而生。它主要提供学生资料的输入、输出、查询、删除以及学生信息的排序等功能。
本文基于C语言来开发和设计出写学生成绩管理系统程序,来达到学习C语言之后的综和的实际应用。
二、学生成绩管理系统的主要功能介绍
- 本系统基于C语言的应用,该系统要实现的功能主要有学生信息的增加、修改、查询、保存和排序等,具体如下。
1、主要功能显示菜单,并有选择提示,可以根据提示输入不同字符以选择相应功能。
2、建立学生信息数据,包括学号,姓名,5门课(语文、数学、英语、物理和计算机)的成绩。
3、能实现学生信息的增加、删除。
4、统计每个学生的平均成绩。
5、按照平均分从大到小排序输出信息。
6、任意输入一个学号,能够查出该学生的相关信息。
7、学生的信息可以保存在txt文件中
三、学生成绩管理系统的主要功能结构图
- 学生成绩管理系统整采用函数封装具体功能的办法。
将学生成绩管理系统的整体功能,划分为几个具体的模块。
各个模块实现相应的功能。
最后将各个的模块功能的函数,在主函数中调用即可实现学生成绩管理系统 的功能。
- 学生成绩管理系统的各个模块如下图所示。
四、学生成绩管理系统的开发工具以及创建项目的过程
4.1、学生成绩管理系统的开发工具
学生成绩管理系统项目使用Visual Studio 2019作为开发工具。
4.2、学生成绩管理系统项目创建的过程
-
打开VS2019,选择语言为C++,所属平台为Windows,项目类型为控制台项目,并选择空项目,如下图所示
-
然后输入项目的名称和选择项目的路径如下图所示
- 创建好项目后,向项目中添加头文件和源文件如下所示
- 编写相关的代码如下
- Student.h头文件代码
#ifndef STUDENT_H
#define STUDENT_H
#include <stdio.h>
#include <stdlib.h>
#endif
- Student.c源文件代码
#include "Student.h"
int main()
{
system("color 3E");
system("pause");
return 0;
}
五、学生成绩管理系统的设计与开发的步骤
5.1、学生成绩管理系统的主要程序流程图
学生成绩管理系统
主要功能如下
- 录入信息
- 输出信息
- 增加信息
- 查询信息
- 修改信息
- 输出信息
- 成绩排序
- 退出系统
所以学生成绩管理系统的主要流程图如下所示
5.2、学生成绩管理系统的主菜单设计模块
- 主菜单功能是起到提供给用户选择相应功能的提示的作用
- 主菜单模块用来实现学生信息管理系统的主界面。
- 主要完成的功能有主菜单显示、主菜单选项的输入选择、不同功能模块的调用,从而达到用户与该系统交互的目的。
学生成绩管理系统的主菜单设计模块的代码如下
// 菜单功能
void stuMenu()
{
printf("********************************************\n");
printf("* *\n");
printf("* 学生信息管理系统 *\n");
printf("* 主菜单 *\n");
printf("* *\n");
printf("* 1:录入信息 *\n");
printf("* *\n");
printf("* 2:输出信息 *\n");
printf("* *\n");
printf("* 3:增加信息 *\n");
printf("* *\n");
printf("* 4:查询信息 *\n");
printf("* *\n");
printf("* 5:修改信息 *\n");
printf("* *\n");
printf("* 6:删除信息 *\n");
printf("* *\n");
printf("* 7:成绩排序 *\n");
printf("* *\n");
printf("* 0:退出系统 *\n");
printf("* *\n");
printf("********************************************\n");
}
在主函数中调用主菜单显示函数
int main()
{
system("color 3E");
while (1)
{
stuMenu(); // 主菜单
break;
}
system("pause");
return 0;
}
调试结果如下所示
5.3、学生成绩管理系统的退出功能模块
- 学生成绩管理系统的退出功能模块主要是实现系统退出
- 当用户更加主菜单的提示选择退出系统时,会退出学生成绩管理系统
学生成绩管理系统的退出功能模块的代码如下
// 退出功能
void stuSystemQiut()
{
printf("***********************************************************************\n");
printf("* *\n");
printf("* 欢迎在一次使用 *\n");
printf("* 退出! *\n");
printf("* *\n");
printf("***********************************************************************\n");
}
- 在主函数中定义一个select变量
- 该变量提供给用户进行选择的存储功能选择。
- 在主函数中使用while循环、Switch选择功能来实现系统的功能
主函数中while循环、Switch选择功能来实现系统的功能的代码如下所示
int main()
{
system("color 3E");
int select = 0;
while (1)
{
stuMenu(); // 主菜单
printf("请输入选择项(0-7):");
scanf("%d", &select);
printf("\n");
if (select > 0 && select < 8)
{
switch (select)
{
case 1: stuInput(); break; // 录入信息
case 2: break; // 输出信息
case 3: break; // 增加信息
case 4: break; // 查询信息
case 5: break; // 修改信息
case 6: break; // 删除信息
case 7: break; // 成绩排序
}
}
else if (select == 0)
{
stuSystemQiut(); // 系统退出功能
break;
}
else
{
printf("输入有误, 请重新输入!!!\n");
system("pause");
system("cls");
}
}
system("pause");
return 0;
}
可以看到,在系统运行的时候,当用户输入0时,就可以退出系统了
调试结果如下所示
5.4、学生成绩管理系统的录入功能模块
- 学生成绩管理系统的录入功能是实现学生信息录入的功能
- 采用文件存储方式
- 将学生数据存储与文件中
- 可以方便使用学生的信息
- 录入的功能是系统运行时,第一步要进行的操作
- 本系统的录入功能是实现系统初始化登入时,将学生的信息录入文件中的功能。
在头文件中定义学生结构体的代码如下
#include <string.h>
#define SIZE 10000
typedef struct tagStudent
{
int n; /*顺序号*/
int sNum; /*学号*/
char sName[10]; /*姓名*/
int sCn; /*语文成绩*/
int sMaths; /*数学成绩*/
int sEn; /*英语成绩*/
int sPhy; /*物理成绩*/
int sCom; /*计算机成绩*/
double sAvage; /*平均成绩*/
} Student, *pStudent;
Student stu[SIZE];
学生成绩管理系统的录入功能模块的代码如下
// 录入信息功能
void stuInput()
{
int i; // 定义变量
FILE* fp; // 定义文件指针
fp = fopen("studentfile.txt", "wb"); // 打开二进制文件
while(1)
{
printf("\n\r请输入序号i(当输入i=-1时,返回), i = ");
scanf("%d", &i); // 输入学生的序号
if