C语言 学生管理系统

#include <stdio.h> 
#include <string.h>
#define NAME_LEN 64   /* 姓名字符数 */ 

typedef struct students {
	long studne_id;       /* 学号 */
	char name[NAME_LEN]; /* 姓名 */
	char sex[3];          /* 性别 */
	int age;              /* 年龄 */
	double height;        /* 身高 */
	long long telephone;  /* 联系电话 */
} Students;

void select_studnet_all(Students std[], int count);   // 查询函数
int add_studnet_info(Students std[], int count);      // 添加函数
int find_Students_id(Students std[], long studne_id, int count);  // 查询学号函数
void update_studnet_info(Students std[], int count);   //  更新函数
int delete_studnet_info(Students std[], int count);  //  删除函数

int main(void) {

	int num;
	int count = 5;
	Students student[] = {
		{202007131, "陈二", "男", 17, 177, 17100005963},
		{202007132, "张三", "男", 18, 175, 17200005912},
		{202007133, "李四", "女", 19, 168, 15100005934},
		{202007134, "王五", "男", 20, 180, 12300005463},
		{202007135, "赵六", "男", 21, 170, 11100002983},
	};

	while (1) {
		puts("----------欢迎进入学生管理系统----------");
		puts("|         1.查询学生信息               |");
		puts("|         2.添加学生信息               |");
		puts("|         3.更新学生信息               |");
		puts("|         4.删除学生信息               |");
		puts("|         5.退出系统                   |");
		puts("----------------------------------------");
		printf("请输入1至5选项:");
		scanf("%d", &num);
		switch (num) {
		case 1:
			select_studnet_all(student, count);
			break;
		case 2:
			count = add_studnet_info(student, count);
			break;
		case 3:
			update_studnet_info(student, count);
			break;
		case 4:
			count = delete_studnet_info(student, count);
			break;
		case 5:
			puts("系统结束运行!!");
			return 0;
		default:
			puts("输入错误,请重新输入!");
			break;
		}

	}

	return 0;
}

void select_studnet_all(Students std[], int count) {
	int i;

	puts("  学号      姓名 性别  年龄   身高      联系电话");
	for (i = 0; i < count; i++) {
		printf("%ld   %-5s %s    %d  %6.1fcm  %lld\n", std[i].studne_id, std[i].name, std[i].sex, std[i].age, std[i].height, std[i].telephone);
	}
	puts("\n");
}

int add_studnet_info(Students std[], int count) {
	long studne_id;       /* 学号 */
	char name[NAME_LEN]; /* 姓名 */
	char sex[3];          /* 性别 */
	int age;              /* 年龄 */
	double height;        /* 身高 */
	long long telephone;  /* 联系电话 */
	int index;

	printf("请输入学号:");
	scanf("%ld", &studne_id);
	index = find_Students_id(std, studne_id, count);

	printf("请输入姓名:");
	scanf("%s", name);

	printf("请输入性别:");
	scanf("%s", sex);

	printf("请输入年龄:");
	scanf("%d", &age);

	printf("请输入身高:");
	scanf("%lf", &height);

	printf("请输入联系电话:");
	scanf("%lld", &telephone);

	if (index == -1) {
		std[count].studne_id = studne_id;
		strcpy(std[count].name, name);
		strcpy(std[count].sex, sex);
		std[count].age = age;
		std[count].height = height;
		std[count].telephone = telephone;

		puts("已成功添加新的学生信息:");
		printf("%ld   %-5s %s    %d  %6.1fcm  %lld\n", studne_id, name, sex, age, height, telephone);

		count++;

	}else {
		puts("学号重复添加失败!");
	}

	return count;
}

int find_Students_id(Students std[], long studne_id, int count) {
	int i;
	int index;

	for (i = 0; i < count; i++) {

		if (std[i].studne_id == studne_id) {
			index = i;
			break;
		}
		else {
			index = -1;
		}

	}

	return index;
}

void update_studnet_info(Students std[], int count) {
	long studne_id;       /* 学号 */
	char name[NAME_LEN]; /* 姓名 */
	char sex[3];          /* 性别 */
	int age;              /* 年龄 */
	double height;        /* 身高 */
	long long telephone;  /* 联系电话 */
	int index;

	printf("请输入要修改的学生的学号:");
	scanf("%ld", &studne_id);

	index = find_Students_id(std, studne_id, count);

	if (index != -1) {

		puts("请进行修改操作!");
		printf("请输入学号:");
		scanf("%ld", &studne_id);

		printf("请输入姓名:");
		scanf("%s", name);

		printf("请输入性别:");
		scanf("%s", sex);

		printf("请输入年龄:");
		scanf("%d", &age);

		printf("请输入身高:");
		scanf("%lf", &height);

		printf("请输入联系电话:");
		scanf("%lld", &telephone);

		puts("已更新的学生信息:");
		printf("%ld   %-5s %s    %d  %6.1fcm  %lld\n", studne_id, name, sex, age, height, telephone);



		std[index].studne_id = studne_id;
		strcpy(std[index].name, name);
		strcpy(std[index].sex, sex);
		std[index].age = age;
		std[index].height = height;
		std[index].telephone = telephone;
		puts("修改成功!");
	}else {
		puts("没有查找到该学生!");
	}

}

int delete_studnet_info(Students std[], int count) {
	long studne_id;       /* 学号 */
	int i;

	printf("请输入要删除的学生的学号:");
	scanf("%ld", &studne_id);

	for (i = 0; i < count; i++) {

		if (std[i].studne_id == studne_id) {
			
			while (1) {
				if (i < count) {
					std[i] = std[i + 1];
					i++;
				}
				else {
					break;
				}
			}

			puts("删除成功!");
			count--;
			break;
		}
	}

	if (count == i) {
		puts("没有查找到该学生!");
	}
	

	return count;
}

运行结果:

  1. 查询功能
    在这里插入图片描述

  2. 添加功能:
    如果学号重复则添加失败:
    在这里插入图片描述
    学号不重复:
    在这里插入图片描述

  3. 更新功能:
    没有找到学号:
    在这里插入图片描述
    找到学号:
    在这里插入图片描述

  4. 删除功能:
    没有找到学号:
    在这里插入图片描述
    找到学号:
    在这里插入图片描述

  5. 退出系统
    在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值