【C语言】简单的实现学生管理系统

本篇博客简单的实现了一下学生管理系统:

(其中的各项功能是由链表进行实现)

其中的功能有以下几点:

1.增加学生信息

2.删除指定学生信息

3.查找指定学生信息

扫描二维码关注公众号,回复: 1766216 查看本文章

4.修改指定学生信息

5.显示所有学生信息

6.清空所有学生信息

7.以成绩排序学生信息

0.退出当前通讯系统

如果还需其他功能大家可以在其中添加

以下是代码部分:

Ssystem.h

#define _CRT_SECURE_NO_WARNINGS 1  
#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct People
{
   char name[20];
   int  age[10];
   char sex[5];
   int  num[20];
   float English[20];
   float Chinese[20];
   float Math[20];
  
}People;


typedef struct List
{
  struct People E[1000];
  int count;

}List;
Ssystem.c

#include"Ssysytem.h"

void menu()//打印菜单  
{
	printf("             欢迎使用通讯录             \n");
	printf("***********1.增加学生信息      *************\n");
	printf("***********2.删除指定学生信息*************\n");
	printf("***********3.查找指定学生信息*************\n");
	printf("***********4.修改指定学生信息*************\n");
	printf("***********5.显示所有学生信息*************\n");
	printf("***********6.清空所有学生信息*************\n");
	printf("***********7.以成绩排序学生信息***********\n");
	printf("***********0.退出当前通讯系统***********\n");

}

void menu2()//修改学生时所用到的菜单  
{
	printf("**********************\n");
	printf("****1.姓名**2.性别****\n");
	printf("****3.年龄**4.学号****\n");
	printf("****5.成绩**6.返回****\n");
	printf("**********************\n");
}

void init(List *L)//初始化  
{

	int count = sizeof(L->E);
	L->count = 0;
	memset(L->E, 0, count);
}

int Find(List *L, char* pname)
{
	int j = 0;
	for (; j<L->count; j++)
	{
		if (strcmp(L->E[j].name, pname) == 0)
		{
			return j;
		}
	}
	return -1;
}
void Add_E(List *L)//添加学生信息 
{

	printf("请输入学生姓名:  \n");
	scanf("%s", L->E[L->count].name);
	printf("请输入学生年龄:  \n");
	scanf("%d", L->E[L->count].age);
	printf("请输入学生性别:  \n");
	scanf("%s", L->E[L->count].sex);
	printf("请输入学生学号:  \n");
	scanf("%d", L->E[L->count].num);
	printf("请输入学生英语成绩:  \n");
	scanf("%f", L->E[L->count].English);
	printf("请输入学生语文成绩:  \n");
	scanf("%f", L->E[L->count].Chinese);
	printf("请输入学生数学成绩:  \n");
	scanf("%f", L->E[L->count].Math);
	if (L->count >= 1000)
	{
		printf("系统已满!\n");
		return;
	}
	else
	{
		L->count++;
		printf("学生数据添加成功\n");
		printf("%d", L->count);
	}
}

void Revise_E(List *L)//修改指定学生信息  
{
	int i = 0;
	int ret = 0;
	char name[20] = { 0 };
	printf("请输入要修改的学生:\n");
	scanf("%s", name);
	ret = Find(L, name);
	if (ret != -1)
	{
		printf("  姓名%s ", L->E[ret].name);
		printf("  年龄%d", *(L->E[ret].age));
		printf("  性别%s", L->E[ret].sex);
		printf("  学号%d", *(L->E[ret].num));
		printf("  英语成绩%f", L->E[ret].English);
		printf("  语文成绩%f", L->E[ret].Chinese);
		printf("  数学成绩%f", L->E[ret].Math);
		printf("\n");
		do
		{
			menu2();
			printf("输入你要修改的选项:\n");
			scanf("%d", &i);
			switch (i)
			{
			case 1:
				printf("请把姓名修改成:");
				scanf("%s", L->E[ret].name);
				break;
			case 2:
				printf("请把性别修改成:");
				scanf("%s", L->E[ret].sex);
				break;
			case 3:
				printf("请把年龄修改成:");
				scanf("%d", &(L->E[ret].age));
				break;
			case 4:
				printf("请把学号修改成:");
				scanf("%s", L->E[ret].num);
				break;
			case 5:
				printf("请把英语成绩修改成:");
				scanf("%s", L->E[ret].English);
				break;
			case 6:
				printf("请把语文成绩修改成:");
				scanf("%s", L->E[ret].Chinese);
				break;
			case 7:
				printf("请把数学成绩修改成:");
				scanf("%s", L->E[ret].Math);
				break;
			case 8:
				return;
			default:
				printf("输入错误");
				break;
			}
		} while (i);
	}
	else
	{
		printf("你要修改的学生不存在\n");
	}
}
void Del_E(List *L)//删除指定学生信息  
{
	char name[20] = { 0 };
	int i = 0;
	int n = 0;
	int ret = 0;
	printf("请输入删除学生姓名:\n");
	scanf("%s", name);
	ret = Find(L, name);
	if (ret != -1)
	{
		printf("你是否要删除该学生信息?\n");
		printf("删除请按1 不删除请按0\n");
		scanf("%d", &n);
		if (1 == n)
		{
			for (i = ret; i<(L->count); i++)
			{
				L->E[i] = L->E[i + 1];//联系人信息依次覆盖  
			}
			L->count--;
			printf("删除成功\n");
		}
		else
		{
			printf("删除失败\n");
		}
	}
}

void Show_E(List *L)//显示所有学生
{
	int i = 0;
	if (L->count == 0)
	{
		printf("无该学生!\n");
	}
	for (; i<L->count; i++)
	{
		printf("  第%d个人信息为:  \n", i + 1);
		printf("  姓名%s ", L->E[i].name);
		printf("  年龄%d", *(L->E[i].age));
		printf("  性别%s", L->E[i].sex);
		printf("  学号%d", *(L->E[i].num));
		printf("  英语成绩%f", L->E[i].English);
		printf("  语文成绩%f", L->E[i].Chinese);
		printf("  数学成绩%f", L->E[i].Math);
		printf("\n");
	}
}
void Clear_E(List* L)//清空管理系统
{
	L->count = 0;
	printf("成功清除!\n");
}

void Research_E(List *L)//查找指定学生
{
	int ret = 0;
	char name[20] = { 0 };
	printf("请输入需要查找学生姓名: \n");
	scanf("%s", name);
	ret = Find(L, name);
	if (ret != -1)
	{
		printf("  姓名%s ", L->E[ret].name);
		printf("  年龄%d", *(L->E[ret].age));
		printf("  性别%s", L->E[ret].sex);
		printf("  学号%d", *(L->E[ret].num));
		printf("  英语成绩%f", L->E[ret].English);
		printf("  语文成绩%f", L->E[ret].Chinese);
		printf("  数学成绩%f", L->E[ret].Math);

		printf("\n");

	}
	else
	{
		printf("查找的学生不存在\n");
	}
}


//按英语成绩排序
void Sort_E(List* L)
{
	int i = 0;
	int j = 0;
	for (; i<L->count - 1; i++)
	{
		for (; j<(L->count - 1 - i); j++)
		{
			if ((L->E[j].English - L->E[j + 1].English) >= 0)
			{
				People tmp;
				tmp = L->E[j];
				L->E[j] = L->E[j + 1];
				L->E[j + 1] = tmp;
			}
		}
	}
	printf("排序成功!\n");
}
test.c
#include"Ssysytem.h"

int main()
{
	List L;
	int i = 0;
	int count = 0;
	init(&L);
	menu();

	do
	{
		printf("请选择所要进行的操作:\n");
		scanf("%d", &i);
		switch (i)
		{
		case 1:
			Add_E(&L);
			break;
		case 2:
			Del_E(&L);
			break;
		case 3:
			Research_E(&L);
			break;
		case 4:
			Revise_E(&L);
			break;
		case 5:
			Show_E(&L);
			break;
		case 6:
			Clear_E(&L);
			break;
		case 7:
			Sort_E(&L);
			break;
		case 8:
			printf("成功退出\n");
			return 0;
		default:
			printf("输入参数错误\n");
			break;
		}
	} while (i);
	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/alidada_blog/article/details/80803009