C语言学生管理系统

功能:
1.登录
2.注册
3.添加学生
4.统计学生信息
5.打印学生信息
6.查询学生信息
7.修改学生信息
8.删除学生(逻辑删除)
9.退出
注意:里面些许功能只提供了接口没有完善
密码只做了掩码没有做回退
菜单展示图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#ifndef STUDENT_H_
#define STUDENT_H_
#include <stdio.h>


typedef struct tagUser
{
   
	char number[50];
	char pwd[50];
	int power;  //0普通  1超级
}TUser,*PTUser;


typedef struct tagUserMgr
{
   
	PTUser *userArr;
	int userLen;
	int userMaxlen;
}TUserMgr,*PTUserMgr;



//学生  动态数组
typedef struct tagStudent
{
   
	char Id[100];		//学号
	int age;			//年龄
	char name[100];
	char sex[10];
	char place[100];	//籍贯
	char fam[100];		//名族
	int bflag;			//删除索引
	char majorclass[100]; //专业班级
	char grade[100];     //年级
	char college[100];   //学院
}TStudent, * PTStudent;

//专业班级  动态数组
typedef struct tagStudentMgr
{
   
	PTStudent stuArr;
	int len;
	int Maxlen;
}TStuMgr, * PTStuMgr;


#endif

.c文件

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<windows.h>
#include "student.h"

struct tagStudentMgr* stumgr;
static struct tagUserMgr* usermgr;


/********************************用户管理初始化函数************************************/

//初始化用户  动态数组
static void InitUserMgr()
{
   
	usermgr = malloc(sizeof(TUserMgr));
	usermgr->userMaxlen = 100;
	usermgr->userLen = 0;
	usermgr->userArr = malloc(sizeof(PTUser) * 100);
}


/********************************学生管理初始化函数************************************/
//void  不能return  void  需要传参
//初始化学生
static PTStudent InitStudent()
{
   
	PTStudent stu = malloc(sizeof(TStudent));
	stu->age = -1;
	//默认未删除
	stu->bflag = 1;
	memset(stu->Id, 0, sizeof(char) * 100);
	memset(stu->name, 0, sizeof(char) * 100);
	memset(stu->sex, 0, sizeof(char) * 10);
	memset(stu->fam, 0, sizeof(char) * 100);
	memset(stu->place, 0, sizeof(char) * 100);
	memset(stu->majorclass, 0, sizeof(char) * 100);
	memset(stu->grade, 0, sizeof(char) * 100);
	memset(stu->college, 0, sizeof(char) * 100);
	return stu;
}

static void InitStuentMgr()
{
   
	stumgr = malloc(sizeof(TStuMgr));
	stumgr->len = 0;
	stumgr->Maxlen = 100;
	stumgr->stuArr = malloc(sizeof(TStudent)*100);
}


/******************************操作函数********************************************/

//mgr 清屏函数
static void MgrClear()
{
   
	printf("\033[18;20H                                                                                              ");
	printf("\033[19;20H                                                                                              ");
	printf("\033[20;20H                                                                                              ");
	printf("\033[21;20H                                                                                              ");
	printf("\033[22;20H                                                                                              ");
	printf("\033[23;20H                                                                                              ");
	printf("\033[24;20H                                                                                              ");
	printf("\033[25;20H                                                                                              ");
	printf("\033[26;20H                                                                                              ");
	printf("\033[27;20H                                                                                              ");
	printf("\033[28;20H                                                                                              ");
	printf("\033[29;20H                                                                                              ");
	printf("\033[30;20H                                                                                              ");
	printf("\033[31;20H                                                                                              ");
	printf("\033[32;20H                                                                                              ");
	printf("\033[33;20H                                                                                              ");
	printf("\033[34;20H                                                                                              ");
	printf("\033[35;20H                                                                                              ");
	printf("\033[36;20H                                                                                              ");
	printf("\033[37;20H                                                                                              ");

}

/********************************学生管理函数************************************/
//删除就是把索引改为0   统一主键为学号

//直接插入学生
static void AddStudentMgr(char* Id, int  age, char* name, char* sex,
	char* place, char* fam, char* majorclass, char* grade, char* college)
{
   
	InitStudent();

	if (stumgr == NULL)
	{
   
		return;
	}
	//memset(stumgr->stuArr[stumgr->len].Id, 0, sizeof(char) * 100);
	//memset(stumgr->stuArr[stumgr->len].name, 0, sizeof(char) * 100);
	//memset(stumgr->stuArr[stumgr->len].sex, 0, sizeof(char) * 2);
	//memset(stumgr->stuArr[stumgr->len].place, 0, sizeof(char) * 100);
	//memset(stumgr->stuArr[stumgr->len].fam, 0, sizeof(char) * 100);
	//memset(stumgr->stuArr[stumgr->len].majorclass, 0, sizeof(char) * 100);
	//memset(stumgr->stuArr[stumgr->len].grade, 0, sizeof(char) * 100);
	//memset(stumgr->stuArr[stumgr->len].college, 0, sizeof(char) * 100);
	//printf("%x=--=\n", stumgr->stuArr+stumgr->len);

	stumgr->stuArr[stumgr->len].age = age;
	stumgr->stuArr[stumgr->len].bflag = 1;
	strcpy(stumgr->stuArr[stumgr->len].Id, Id);
	strcpy(stumgr->stuArr[stumgr->len].name, name);
	strcpy(stumgr->stuArr[stumgr->len].sex, sex);
	strcpy(stumgr->stuArr[stumgr->len].place, place);
	strcpy(stumgr->stuArr[stumgr->len].fam, fam);
	strcpy(stumgr->stuArr[stumgr->len].majorclass, majorclass);
	strcpy(stumgr->stuArr[stumgr->len].grade, grade);
	strcpy(stumgr->stuArr[stumgr->len].college, college);

	if (stumgr->len == stumgr->Maxlen)
	{
   
		int nlenMax = stumgr->Maxlen * 2;
		PTStudent p = malloc(sizeof(TStudent) * nlenMax);
		for (int i = 0; i < stumgr->Maxlen; i++)
		{
   
			p[i] = stumgr->stuArr[i];
		}
		free(stumgr->stuArr);
		stumgr->stuArr = p;
		stumgr->Maxlen = nlenMax;
	}
	stumgr->len++;
}

//插入学生
static void AddStudent()
{
   
bf:
	;
	while (1)
	{
   
		int bflag = 0;

		InitStudent();

		if (stumgr == NULL)
		{
   
			return;
		}
		printf("\033[18;20H\033[36m=========================================================================\033[0m");
		printf("\033[26;20H\033[36m=========================================================================\033[0m");
		printf("\033[19;20H请输入增加的学生的信息:");
		//memset(stumgr->stuArr[stumgr->len].Id, 0, sizeof(char) * 100);
		//memset(stumgr->stuArr[stumgr->len].name, 0, sizeof(char) * 100);
		//memset(stumgr->stuArr[stumgr->len].sex, 0, sizeof(char) * 2);
		//memset(stumgr->stuArr[stumgr->len].place, 0, sizeof(char) * 100);
		//memset(stumgr->stuArr[stumgr->len].fam, 0, sizeof(char) * 100);
		//memset(stumgr->stuArr[stumgr->len].majorclass, 0, sizeof(char) * 100);
		//memset(stumgr->stuArr[stumgr->len].grade, 0, sizeof(char) * 100);
		//memset(stumgr->stuArr[stumgr->len].college, 0, sizeof(char) * 100);
		char Id[100];		//学号
		int age;			//年龄
		char name[100];
		char sex[10];
		char place[100];	//籍贯
		char fam[100];		//名族
		char majorclass[100]; //专业班级
		char grade[100];     //年级
		char college[100];   //学院

		printf("\033[36m\033[20;20H|学号|\033[0m");
		printf("\033[36m\033[20;44H|年龄|\033[0m");
		printf("\033[36m\033[20;68H|姓名|\033[0m");

		printf("\033[36m\033[21;20H|性别|\033[0m");
		printf("\033[36m\033[21;44H|籍贯|\033[0m");
		printf("\033[36m\033[21;68H|名族|\033[0m");

		printf("\033[36m\033[22;20H|专业班级|\033[0m");
		printf("\033[36m\033[22;44H|年级|\033[0m");
		printf("\033[36m\033[22;68H|学院|\033[0m");

		printf("\033[?25h");

		COORD coord;
		coord.X = 26;
		coord.Y = 19;
		SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
		scanf("%s", 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值