尝试用数组写一个学生信息管理系统

这只是我尝试做的一个简单的程序,顺便复习下C语言,希望以后的自己能更加努力,努力跟随大佬们的脚步。

C语言学生信息管理系统包括以下功能:

1.添加学生信息

2.查询学生信息

3.修改学生信息

4.学生学号排序

5.删除学生信息

6.浏览学生信息

每个模块的实现:

结构体的创建

实现首先要有个结构体包含学生的相关信息(学号 姓名 年龄 性别 身份证号 电话)

struct Student
{
	int Id;           //学号
	char name[15];    //姓名
	int age;          //年龄
	char sex[3];      //性别
	char IDcard[50];  //身份证号
	char phone[15];   //电话
}student[N];

同时定义了两个全局的变量

int Last = 0;//结构体数组下标
struct Student studentName;//创建结构体临时变量

一.首先写一个主菜单:

void makeMenu()//构建主菜单视图
{
	printf("-------------------------------\n");
	printf("    -----------学生信息管理系统\n");
	printf("-------------------------------\n");
	printf("\t0.退出系统\n");
	printf("-------------------------------\n");
	printf("\t1.添加学生信息\n");
	printf("-------------------------------\n");
	printf("\t2.查询学生信息\n");
	printf("-------------------------------\n");
	printf("\t3.修改学生信息\n");
	printf("-------------------------------\n");
	printf("\t4.学生学号排序\n");
	printf("-------------------------------\n");
	printf("\t5.删除学生信息\n");
	printf("-------------------------------\n");
	printf("\t6.浏览学生信息\n");
	printf("-------------------------------\n");
	printf("-------------------------------\n");
	printf("请输入主菜单编号(0~6):");
}

二.添加学生信息操作

void Registration(int last)//添加学生信息
{
	printf("请输入学生信息[学号 姓名 年龄 性别 身份证号 电话]:\n");
	scanf("%d %s %d %s %s %s", &student[last].Id, student[last].name, &student[last].age, student[last].sex, student[last].IDcard, student[last].phone);
	Last++;
}

三.查询学生信息

void searchByName(int last,char* studentName)//按姓名查询
{
	int i;
	for (i = 0; i < last; i++)
	{
		if (strcmp(student[i].name, studentName) == 0)
		{
			printf("学号           姓名       年龄      性别               身份证号                         电话\n");//输出该学生信息
			printf("%d      %s      %d         %s            %s                %s\n", student[i].Id, student[i].name, student[i].age, student[i].sex, student[i].IDcard, student[i].phone);
			break;
		}
	}
	if (i == last)
	{
		printf("没有找到该学生的信息\n");
	}
	else
	{
		printf("查询成功\n");
	}
}

void searchById(int last, int studentID)   //按学号查询
{
	int i;
	for (i = 0; i < last; i++)
	{
		if (student[i].Id==studentID)
		{
			printf("学号           姓名       年龄      性别               身份证号                         电话\n");//输出该学生信息
			printf("%d      %s      %d         %s            %s                %s\n", student[i].Id, student[i].name, student[i].age, student[i].sex, student[i].IDcard, student[i].phone);
			break;
		}
	}
	if (i == last)
	{
		printf("没有找到该学生的信息\n");
	}
	else
	{
		printf("查询成功\n");
	}
}
void searchinformate()//查询信息
{
	printf("--------------------\n");
	printf("1.按姓名查询\n");
	printf("2.按学号查询\n");
	printf("3.退出\n");
	printf("--------------------\n");
	int Userkey;
	while (1)
	{
		printf("请输入子菜单编号(1~3):");
		scanf("%d", &Userkey);
		switch (Userkey)
		{
		case 1:
			printf("请输入要查询的学生姓名:");
			scanf("%s", studentName.name);
			searchByName(Last, studentName.name);
			break;
		case 2:
			printf("请输入要查询的学生学号:");
			scanf("%d", &studentName.Id);
			searchById(Last, studentName.Id);
			break;
		case 3:
			return;
		default:printf("请输入1~3:\n");
			break;
		}
	}
}

四.修改学生信息

void makesonMenu()//构建修改子菜单视图
{
	printf("-------------------------------\n");
	printf("    -----------修改学生信息\n");
	printf("1.修改学号\n");
	printf("2.修改姓名\n");
	printf("3.修改年龄\n");
	printf("4.修改性别\n");
	printf("5.修改身份证号\n");
	printf("6.修改电话\n");
	printf("7.退出\n");
	printf("-------------------------------\n");
}

void amend(int last,int studentID)//修改学生信息
{
	int i;
	for (i = 0; i < last; i++)
	{
		if (student[i].Id == studentID)
			break;
	}
	int Userkey;
	while (1)
	{
		if (i == last)
		{
			printf("没有找到该学生的信息\n");
			break;
		}
		else
		{
			printf("请继续修改相关信息:\n");
		}
		printf("请输入子菜单编号(1~7):");
		scanf("%d", &Userkey);
		switch (Userkey)
		{
		case 1:
			printf("修改学号为:");
			scanf("%d", &student[i].Id);
			break;
		case 2:
			printf("修改姓名为:");
			scanf("%s", student[i].name);
			break;
		case 3:
			printf("修改年龄为:");
			scanf("%d", &student[i].age);
			break;
		case 4:
			printf("修改性别为:");
			scanf("%s", student[i].sex);
			break;
		case 5:
			printf("修改身份证号为:");
			scanf("%s", student[i].IDcard);
			break;
		case 6:
			printf("修改电话为:");
			scanf("%s", student[i].phone);
			break;
		case 7:
			return;
		default:printf("请输入1~7:\n");
			break;
		}
	}
}

五.学生学号排序

void bubbleSort(int last)//按学号进行冒泡排序
{
	int temp = 0;
	for (int i = 1; i < last; i++)
	{
		for (int j = 0; j < last-i; j++)
		{
			if (student[j].Id > student[j + 1].Id)
			{
				temp = student[j].Id;
				student[j].Id = student[j + 1].Id;
				student[j + 1].Id = temp;
			}
		}
	}
	printf("排序完成\n");
}

六.删除学生信息

void deleteNodeByName(int last, char* studentName) //指定删除
{
	int i = 0;
	for (i = 0; i < last; i++)
	{
		if (strcmp(student[i].name, studentName) == 0)
			break;
	}
	for (int j = i; j < last; j++)
	{
		student[j] = student[j + 1];
	}
	Last = Last - 1;
	printf("删除完成\n");
}

七.浏览学生信息

void print(int last)//输出学生信息
{
	printf("学号           姓名       年龄      性别               身份证号                         电话\n");
	for(int i=0;i<last;i++)
	{
		printf("%d      %s      %d         %s            %s                %s\n", student[i].Id, student[i].name, student[i].age, student[i].sex, student[i].IDcard, student[i].phone);
	}
}

  

整个程序代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 200  //最大学生人数
int Last = 0;//结构体数组下标
//20224213 刘圣友 18 男 360428200110202735 13657024700
struct Student
{
	int Id;           //学号
	char name[15];    //姓名
	int age;          //年龄
	char sex[3];      //性别
	char IDcard[50];  //身份证号
	char phone[15];   //电话
}student[N];
struct Student studentName;//创建临时变量
void makeMenu()//构建主菜单视图
{
	printf("-------------------------------\n");
	printf("    -----------学生信息管理系统\n");
	printf("-------------------------------\n");
	printf("\t0.退出系统\n");
	printf("-------------------------------\n");
	printf("\t1.添加学生信息\n");
	printf("-------------------------------\n");
	printf("\t2.查询学生信息\n");
	printf("-------------------------------\n");
	printf("\t3.修改学生信息\n");
	printf("-------------------------------\n");
	printf("\t4.学生学号排序\n");
	printf("-------------------------------\n");
	printf("\t5.删除学生信息\n");
	printf("-------------------------------\n");
	printf("\t6.浏览学生信息\n");
	printf("-------------------------------\n");
	printf("-------------------------------\n");
	printf("请输入主菜单编号(0~6):");
}

void makesonMenu()//构建修改子菜单视图
{
	printf("-------------------------------\n");
	printf("    -----------修改学生信息\n");
	printf("1.修改学号\n");
	printf("2.修改姓名\n");
	printf("3.修改年龄\n");
	printf("4.修改性别\n");
	printf("5.修改身份证号\n");
	printf("6.修改电话\n");
	printf("7.退出\n");
	printf("-------------------------------\n");
}
void Registration(int last)//添加学生信息
{
	printf("请输入学生信息[学号 姓名 年龄 性别 身份证号 电话]:\n");
	scanf("%d %s %d %s %s %s", &student[last].Id, student[last].name, &student[last].age, student[last].sex, student[last].IDcard, student[last].phone);
	Last++;
}
void print(int last)//输出学生信息
{
	printf("学号           姓名       年龄      性别               身份证号                         电话\n");
	for(int i=0;i<last;i++)
	{
		printf("%d      %s      %d         %s            %s                %s\n", student[i].Id, student[i].name, student[i].age, student[i].sex, student[i].IDcard, student[i].phone);
	}
}
void searchByName(int last,char* studentName)//按姓名查询
{
	int i;
	for (i = 0; i < last; i++)
	{
		if (strcmp(student[i].name, studentName) == 0)
		{
			printf("学号           姓名       年龄      性别               身份证号                         电话\n");//输出该学生信息
			printf("%d      %s      %d         %s            %s                %s\n", student[i].Id, student[i].name, student[i].age, student[i].sex, student[i].IDcard, student[i].phone);
			break;
		}
	}
	if (i == last)
	{
		printf("没有找到该学生的信息\n");
	}
	else
	{
		printf("查询成功\n");
	}
}

void searchById(int last, int studentID)   //按学号查询
{
	int i;
	for (i = 0; i < last; i++)
	{
		if (student[i].Id==studentID)
		{
			printf("学号           姓名       年龄      性别               身份证号                         电话\n");//输出该学生信息
			printf("%d      %s      %d         %s            %s                %s\n", student[i].Id, student[i].name, student[i].age, student[i].sex, student[i].IDcard, student[i].phone);
			break;
		}
	}
	if (i == last)
	{
		printf("没有找到该学生的信息\n");
	}
	else
	{
		printf("查询成功\n");
	}
}

void bubbleSort(int last)//按学号进行冒泡排序
{
	int temp = 0;
	for (int i = 1; i < last; i++)
	{
		for (int j = 0; j < last-i; j++)
		{
			if (student[j].Id > student[j + 1].Id)
			{
				temp = student[j].Id;
				student[j].Id = student[j + 1].Id;
				student[j + 1].Id = temp;
			}
		}
	}
	printf("排序完成\n");
}

void deleteNodeByName(int last, char* studentName) //指定删除
{
	int i = 0;
	for (i = 0; i < last; i++)
	{
		if (strcmp(student[i].name, studentName) == 0)
			break;
	}
	for (int j = i; j < last; j++)
	{
		student[j] = student[j + 1];
	}
	Last = Last - 1;
	printf("删除完成\n");
}
void searchinformate()//查询信息
{
	printf("--------------------\n");
	printf("1.按姓名查询\n");
	printf("2.按学号查询\n");
	printf("3.退出\n");
	printf("--------------------\n");
	int Userkey;
	while (1)
	{
		printf("请输入子菜单编号(1~3):");
		scanf("%d", &Userkey);
		switch (Userkey)
		{
		case 1:
			printf("请输入要查询的学生姓名:");
			scanf("%s", studentName.name);
			searchByName(Last, studentName.name);
			break;
		case 2:
			printf("请输入要查询的学生学号:");
			scanf("%d", &studentName.Id);
			searchById(Last, studentName.Id);
			break;
		case 3:
			return;
		default:printf("请输入1~3:\n");
			break;
		}
	}
}
void amend(int last,int studentID)//修改学生信息
{
	int i;
	for (i = 0; i < last; i++)
	{
		if (student[i].Id == studentID)
			break;
	}
	int Userkey;
	while (1)
	{
		if (i == last)
		{
			printf("没有找到该学生的信息\n");
			break;
		}
		else
		{
			printf("请继续修改相关信息:\n");
		}
		printf("请输入子菜单编号(1~7):");
		scanf("%d", &Userkey);
		switch (Userkey)
		{
		case 1:
			printf("修改学号为:");
			scanf("%d", &student[i].Id);
			break;
		case 2:
			printf("修改姓名为:");
			scanf("%s", student[i].name);
			break;
		case 3:
			printf("修改年龄为:");
			scanf("%d", &student[i].age);
			break;
		case 4:
			printf("修改性别为:");
			scanf("%s", student[i].sex);
			break;
		case 5:
			printf("修改身份证号为:");
			scanf("%s", student[i].IDcard);
			break;
		case 6:
			printf("修改电话为:");
			scanf("%s", student[i].phone);
			break;
		case 7:
			return;
		default:printf("请输入1~7:\n");
			break;
		}
	}
}

void newskeyDown()//做交互
{
	int userkey;
	scanf("%d", &userkey);
	switch (userkey)
	{
	case 0:
		printf("【 退出 】\n");
		printf("退出成功\n");
		system("pause");
		exit(0);          //关闭掉整个程序
		break;
	case 1:
		printf("【 添加 】\n");
		Registration(Last);
		//saveInfoToFile("bookinfo.txt");
		break;
	case 2:
		printf("【 查询 】\n");
		searchinformate();
		break;
	case 3:
		printf("【 修改 】\n");
		printf("请输入要修改的学生学号:");
		scanf("%d", &studentName.Id);
	    system("cls");//清屏
		makesonMenu();//构建修改子菜单视图
		amend(Last, studentName.Id);
		break;
	case 4:
		printf("【 排序 】\n");
		bubbleSort(Last);
		break;
	case 5:
		printf("【 删除 】\n");
		printf("请输入要删除的学生姓名:");
		scanf("%s", studentName.name);
		deleteNodeByName(Last, studentName.name);
		break;
	case 6:
		printf("【 浏览 】\n");
		print(Last);
		break;
	default:
		printf("【 error 】\n");
		break;
	}
}

int main()
{
	while (1)
	{
		makeMenu();
		newskeyDown();
		system("pause");
		system("cls");//清屏
	}
	system("pause");
	return 0;
}

运行结果展示

 总结

这代码写的不是很好,只能用数组去写,而且就现在也就只能写得出这些,期待以后的自己,

希望能成为自己想成为的人!

  • 12
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
基于结构体数组学生信息管理系统主要利用结构体和数组的特性来实现对学生信息的管理。这个系统可以实现学生信息的录入、查询、删除、修改等功能。 首先,我们需要定义一个结构体来表示学生的信息。在这个例子中,结构体包含了学生的姓名年龄、地址和联系电话等信息。 接下来,我们可以使用一个结构体数组来存储多个学生的信息。通过这个结构体数组,我们可以方便地对学生信息进行增删改查等操作。 系统的初始化函数可以用来初始化学生信息表,可以将结构体数组中的元素个数设置为0。这样,开始时学生信息表中就没有存储任何学生的信息。 添加函数可以用来向学生信息表中添加新的学生信息。通过接受用户输入的学生信息,将其添加到结构体数组中,并更新学生信息表中的元素个数。 查询函数可以通过输入学生姓名来查找学生信息表中是否存在该学生信息。通过遍历结构体数组,逐一比较学生姓名,可以判断是否存在该学生信息。 删除函数可以通过输入学生姓名来删除学生信息表中对应的学生信息。通过查找函数确定该学生信息的位置,然后将其删除,并更新学生信息表中的元素个数。 排序函数可以对学生信息表中的学生信息按照一定的规则进行排序,比如按照学生姓名的字母顺序进行排序。 修改函数可以通过输入学生姓名来修改学生信息表中对应的学生信息。通过查找函数确定该学生信息的位置,然后对其进行修改。 清空函数可以将学生信息表中的所有学生信息都清空,即将结构体数组中的元素个数设置为0。 综上所述,基于结构体数组学生信息管理系统可以实现学生信息的录入、查询、删除、修改、排序和清空等功能。这个系统可以较为方便地管理学生的信息,适用于小规模的学生信息管理需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

敲代码的阿友

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值