C语言实现学生管理系统 增删改查

目录

student.h文件:

function.c:

main.c:


 系统简介

        该系统主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、科学化、规范化和智能化,其主要功能是利用计算机对学生的各种信息,如:姓名、学号、成绩等,进行日常管理,如查询、修改、增加、删除等。

student.h文件:

#ifndef STUDENT_H
#define STUDENT_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//也作为学号输入是否正确的判断条件
#define N 6 //方便以后修改班级人数,

//定义单个学生的结构体
//此时内存没有给分空间
typedef struct Student{
	char name[16];
	int age;    //年龄
	int sex;    //1代表男,0女
	int id;     //学号
	int score;    //成绩
}STU;

//定义这个班级所有学生的结构体
//此时内存没有给分空间
typedef struct Class{
	STU num[N];    //定义一个班级学生结构体数组
	int count;    //记录学生个数
}CLASS;

void Menu();    //打印菜单的函数

void ADD(CLASS *p);    //增加学生信息的函数
    
void SEE(CLASS *p);    //查看所有学生信息的函数

void MOD(CLASS *p);    //根据学号修改学生信息的函数

void DEL(CLASS *p);    //根据学号删除学生信息的函数

void SORT(CLASS *p);    //根据成绩将学生降序排序的函数

#endif

#include "./student.h"

void Menu(){
	printf("----------------------------------\n");
	printf("| *********学生管理系统********* |\n");
	printf("| 1.ADD stu 2.SEE stu 3.MOD stu  |\n");
	printf("| 4.DEL stu 5.SORT score 6.EXIT  |\n");
	printf("----------------------------------\n");
}




function.c:

#include "./student.h"

void ADD(CLASS *p) {
	while(1){
		if(p->count == 6){
			printf("班级已满,无法插入\n");
			return;
		}
		STU temp;
LOOP1:
		printf("请输入学生姓名 年龄 性别 学号 成绩\n");
		scanf("%s",temp.name);
		int i;
		if(*(temp.name) == '#') {
			printf("插入结束\n");
			return;
		}else{
			strcpy(p->num[p->count].name,temp.name);
LOOP0:
			scanf("%d %d %d %d",&p->num[p->count].age,&p->num[p->count].sex,
								&p->num[p->count].id,&p->num[p->count].score);
			for(i = 0;i < p->count;i++) {
				if(p->num[p->count].id == p->num[i].id) {
					printf("学号重复,请重新输入\n");
					goto LOOP0;
				}
			}
			p->count++;
			printf("插入成功\n");
			goto LOOP1;
		}
	}
}

void SEE(CLASS *p) {
	int i = 0;
	printf("当前班级学生信息如下:\n");
	printf("姓名 	年龄 	性别 	学号 	成绩\n");
	for(i = 0;i < p->count;i++) {
		printf("%s 	%d 	%d 	%d 	%d\n",p->num[i].name,p->num[i].age,
								p->num[i].sex,
								p->num[i].id,p->num[i].score);
	}
	return;
}

void MOD(CLASS *p) {
	printf("请输入你想修改的学生学号\n");
	int temp;
	scanf("%d",&temp);
	if(temp > N) {
		printf("学号输入有误,超过班级人数\n");
		return;
	}
	int i,flag = 0;
	for(i = 0;i < p->count;i++) {
		if(temp == p->num[i].id) {
			flag = 1;
			printf("学生当前信息如下:\n");
			printf("姓名 	年龄 	性别 	学号 	成绩\n");
			printf("%s 	%d 	%d 	%d 	%d\n",p->num[i].name,p->num[i].age,
									p->num[i].sex,
									p->num[i].id,p->num[i].score);
			printf("请修改\n");
			scanf("%s %d %d %d %d",p->num[i].name,&p->num[i].age,
								&p->num[i].sex,
								&p->num[i].id,&p->num[i].score);
			return;
		}
	}
	if(flag == 0) {
		printf("学号输入有误,该学生不存在\n");
		return;
	}
}

void DEL(CLASS *p) {
	printf("请输入你想删除的学生学号\n");
	int temp;
	scanf("%d",&temp);
	if(temp > N) {
		printf("学号输入有误,超过班级人数\n");
		return;
	}
	int i,flag = 0,j;
	for(i = 0;i < p->count;i++) {
		if(temp == p->num[i].id) {
			flag = 1;
			printf("学生当前信息如下:\n");
			printf("姓名 	年龄 	性别 	学号 	成绩\n");
			printf("%s 	%d 	%d 	%d 	%d\n",p->num[i].name,p->num[i].age,
									p->num[i].sex,
									p->num[i].id,p->num[i].score);
			break;
		}
	}
	if(flag == 0) {
		printf("学号输入有误,该学生不存在\n");
		return;
	}
	printf("确认删除? 1 : 0\n");
	int or;
	scanf("%d",&or);
	if(or == 1) {
		for(j = i;j < p->count;j++) {
			p->num[i] = p->num[i+1];
		}
		p->count--;
		return;
	}else{
		return;
	}
}

void SORT(CLASS *p) {
	int i, j;
	STU temp;
	for(i = 0;i < p->count-1;i++) {
		for(j = 0;j < p->count-1-i;j++) {
			if(p->num[j].score > p->num[j+1].score) {
				temp = p->num[j];
				p->num[j] = p->num[j+1];
				p->num[j+1] = temp;
			}
		}
	}
	printf("按成绩排序完成\n");
	return;
}




main.c:

#include "./student.h"//在当前路径寻找头文件

int main(int argc, const char *argv[])
{
	CLASS hq51;
	//用结构体申请变量空间,系统分配相应内存
	hq51.count = 0;//初始化学生个数
	int choose = 0;
	while(1) {
		Menu();
		scanf("%d",&choose);
		switch (choose) {
			case 1:
				ADD (&hq51);//传址操作
				break;
			case 2:
				SEE (&hq51);
				break;
			case 3:
				MOD (&hq51);
				break;
			case 4:
				DEL (&hq51);
				break;
			case 5:
				SORT (&hq51);
				break;
			case 6:
				exit(0);
				break;
			default:
				printf("输入有误,程序退出\n");
				exit(-1);
		}
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值