C语言程序设计——学生管理系统

1.学生管理系统的基本功能

本系统为一个基于C语言而设计的学生管理系统,接下来是详细介绍:

1.本系统有三个等级菜单:主菜单,二级菜单,三级菜单

2.本系统的基本功能 主菜单功能:实现显示基本信息、基本信息管理、学生成绩管理、考试成绩统计(每个学生5门课程)、根据条件查询、打印结果。

第一个二级菜单:实现对文件内容中的学生信息显示,对于学生信息文件的后续追加输入、删除、修改;

第二个二级菜单:实现对学生成绩的和,求出学生各科成绩的总和,根据总分进行排名;

第三个二级菜单:实现对各科成绩求出相应的最高分、最低分、平均分;

第四个二级菜单:实现通过学号/姓名/名次来进行查找;

第五个二级菜单:实现对整体学生总的数据的打印。实现读取其他文本文件的内容并进行上述已说明的功能(第五个二级菜单功能较特殊,若要读取其他文件内容,需要将主菜单中创建一个txt文件的Studetfile函数给注释掉,然后将函数Display取消注释,然后将所有菜单中的文件路径(也就大概几个函数)改为要读取的文件路径即可对文件内容进行操作)。 3.本系统的代码文件为根据主菜单中的功能进行函数分装设计,相互之间不受太大影响,通过头文件将各个功能联系起来

2.使用前文件的介绍

1.头文件.h和具体实现文件.c的联系与使用妙处

1.将多个函数分装,便于后续代码的维护与修改

3c431837a619479eb4c1ad1163da5594.png

 

2.在.c文件中写好具体函数是如何实现的,.h文件中声明好在.c文件中写好的函数,可增加变量,仅需添加少量变量即可实现对系统功能的添加。

//Basemessage.h文件

7491827a924c4b699827000120166651.png

 

//Basemessage.c文件

ebe6ec48d3964debbff05b8a4a0dce1d.png

 

2.结构体,全局变量的定义

在Threefile.h文件中定义了结构体类型Student,并创建结构体数组stu[100];

全局变量:结构体数组stu[100]、Number(记录输入的人数)

typedef struct Student
{
	char ID[10];//学号
	char name[10];//姓名
	char sex[10];//性别
	int age;//年龄
	double gaoshu;//高数
	double daying;//大英
	double malie;//马列
	double shumo;//数模
	double jiwang;//计网
	double allgrade;//总分
	
}Student;

extern int Number;//全局变量,具体在Threefile.c文件中
extern Student stu[100];//全局变量,结构体数组,具体在Threefile.c文件中

3.文件信息的写入

在Threefile.c文件中创建函数Studentfile,创建文件并写入信息

#define _CRT_SECURE_NO_WARNINGS

#include "Display.h"
#include "Threefile.h"
#include "Testgraderank.h"
#include "Basemessage.h"
#include "Studentgrademanager.h"
#include "Find.h"

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

int Number = 0;//来存放有几个学生
Student stu[100] = {0}; //创建一个结构体数组来存放学生数据

void Studentfile()//学生信息文件的创建
{
	char str[80] = { 0 };
	char ch = 'y';//判断是否继续输入yes/no
	int i = 0;
	while (ch == 'y')
	{
		system("cls");
		printf("输入学号:");
		gets(stu[i].ID);
		printf("输入姓名:");
		gets(stu[i].name);
		printf("输入性别:");
		gets(stu[i].sex);
		printf("输入年龄:");
		gets(str); stu[i].age = atoi(str);
		printf("输入高数成绩:");
		gets(str); stu[i].gaoshu = atof(str);
		printf("输入大英成绩:");
		gets(str); stu[i].daying = atof(str);
		printf("输入马列成绩:");
		gets(str); stu[i].malie = atof(str);
		printf("输入数模成绩:");
		gets(str); stu[i].shumo = atof(str);
		printf("输入计网成绩:");
		gets(str); stu[i].jiwang = atof(str);
		do {
			printf("是否继续y/n? ");
			gets_s(str, sizeof(str)); ch = str[0];
		} while (!(ch == 'y' || ch == 'n'));
		stu[i].allgrade = stu[i].gaoshu + stu[i].daying + stu[i].malie + stu[i].shumo + stu[i].jiwang;
		i++;
		Number++; //输入的时候加了一遍
	}

	//Ranking();//根据总分排序

	FILE* fp1 = fopen("D:\\学生管理系统存放文件\\学生信息总表.txt", "w");//将结构体数组的内容存放在文本文件中
	if (fp1 == NULL)
	{
		printf("无法创建文件");
		exit(0);
	}
	fprintf(fp1, "学号\t姓名\t性别\t年龄\t高数\t大英\t马列\t数模\t计网\t总分\n");//第一行表头
	for (int j = 0; j < Number; j++)
	{
		fprintf(fp1, "%s\t%s\t%s\t%d\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n", stu[j].ID, stu[j].name, stu[j].sex, stu[j].age, stu[j].gaoshu, stu[j].gaoshu, stu[j].gaoshu, stu[j].gaoshu, stu[j].gaoshu, stu[j].allgrade);
	}
	fclose(fp1);
}

3.菜单的介绍

1.一级菜单

即主菜单,主要使用使用switch——case来指向下一级菜单,主要由五个函数组成,五个函数再指向其下一级菜单

#define _CRT_SECURE_NO_WARNINGS

#include "Threefile.h"
#include "Testgraderank.h"
#include "Basemessage.h"
#include "Studentgrademanager.h"
#include "Find.h"
#include "Display.h"

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

int main(){

Studentfile();//创建txt文件

//Display();

	int i = 0;
	while (1)
	{
		//这里是主菜单
		system("cls");
		printf("学生管理系统\t\t\n");
		printf("____________________\t\t\n");
		printf("0.退出系统\t\t\n");
		printf("1.基本信息管理\t\t\n");
		printf("2.学生成绩管理\t\t\n");
		printf("3.考试成绩统计\t\t\n");
		printf("4.查询学生信息\t\t\n");
		printf("5.打印成绩报表\t\t\n");
		printf("____________________\t\t\n");
	loop:
		printf("请选择菜单功能:请输入(0--5)\t\t\n");
		scanf("%d", &i);
		
		if (i < 0 || i > 5)
		{
			printf("输入错误,重新输入\t\t\n"
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jc导航键

感谢您的认可,这是我更新的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值