用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c代码库

实现一个简单的学生信息管理系统(具有”增删改查“的功能)

2023-11-30 作者: FN举报

[c]代码库

#include <stdio.h>
#include <windows.h> 

#define SYSTEM_English_TITLE "student_manage_system"
#define SYSTEM_Chinese_TITLE "SMS管理系统" 
#define SYSTEM_VERSION "1.0.1"
#define students_data_capacity 150 //存储学生信息的数组容量 

// 函数申明
void Input_Student_Data(); // 实现添加学生信息 
void Print_Student_Data(int *students_code); // 实现显示学生信息 
void Modify_Student_Data(int *students_code);  //修改学生信息 
void Delete_Student_Data(int *students_code, int *students_capacity); //删除学生信息 

// 学生信息结构体 
typedef struct{
	char student_ID[128]; // 学生学号 
	char student_name[64]; // 学生姓名 
	char student_gender[30]; // 学生性别 
	int student_age[10]; // 学生年龄 
	char student_addr[128]; // 学生地址 
	char student_phone_number[128]; // 学生电话号码 
	char student_E_maill[128]; // 学生电子邮箱 
} Student_Data;

// 采用结构体数组的形式存储学生的信息 
Student_Data students_data[students_data_capacity]; 
int Student_Data_Number = 1; // 添加的学生个数存储号码

//添加学生信息函数 
void Input_Student_Data(){
	int return_scanf_new_insert_student_data_student_age;
	Student_Data new_insert_student_data;
	printf("请输入学生的学号:"); scanf("%s",new_insert_student_data.student_ID);
	printf("请输入学生的姓名:"); scanf("%s",new_insert_student_data.student_name);
	printf("请输入学生的性别:"); scanf("%s",new_insert_student_data.student_gender);
	while(1){
		printf("请输入学生的年龄:"); 
		return_scanf_new_insert_student_data_student_age = scanf("%d",&(new_insert_student_data.student_age));
		if (return_scanf_new_insert_student_data_student_age == 0){
			printf("[-]年龄必需为数字!\n");
			while(getchar() != '\n'); //清空上一个缓冲区 
		}else{
			break;
		}
	}
	printf("请输入学生的地址:"); scanf("%s",new_insert_student_data.student_addr);
	printf("请输入学生的电话:"); scanf("%s",new_insert_student_data.student_phone_number);
	printf("请输入学生的邮箱:"); scanf("%s",new_insert_student_data.student_E_maill);
	students_data[Student_Data_Number] = new_insert_student_data;
	printf("[*]数据录入成功!\n\n");
	Student_Data_Number++; // 将数组指向下一个空间存储下一个学生的信息 
	
}

//显示学生信息函数 
void Print_Student_Data(int *students_code){
	printf("*********************\n");
	printf("当前代码:%d\n",*students_code);
	printf("[+]学号:%s\n",students_data[*students_code].student_ID);
	printf("[+]姓名:%s\n",students_data[*students_code].student_name);
	printf("[+]性别:%s\n",students_data[*students_code].student_gender);
	printf("[+]年龄:%d\n",*(students_data[*students_code].student_age));
	printf("[+]地址:%s\n",students_data[*students_code].student_addr);
	printf("[+]电话:%s\n",students_data[*students_code].student_phone_number);
	printf("[+]邮箱:%s\n",students_data[*students_code].student_E_maill); 
	printf("*********************\n");
}

//修改学生信息函数
void  Modify_Student_Data(int *students_code){
	printf("请修改学生的学号:"); scanf("%s",students_data[*students_code].student_ID);
	printf("请修改学生的姓名:"); scanf("%s",students_data[*students_code].student_name);
	printf("请修改学生的性别:"); scanf("%s",students_data[*students_code].student_gender);
	while (1){
		printf("请修改学生的年龄:"); int return_scanf_students_data_students_code_students_age = scanf("%d",students_data[*students_code].student_age);
		if (return_scanf_students_data_students_code_students_age == 0){
			printf("[-]修改的年龄必须要为整数!\n");
			while(getchar() != '\n');
		}
		else{
			break;
		}
	}
	printf("请修改学生的地址:"); scanf("%s",students_data[*students_code].student_addr);
	printf("请修改学生的电话:"); scanf("%s",students_data[*students_code].student_phone_number);
	printf("请修改学生的邮箱:"); scanf("%s",students_data[*students_code].student_E_maill);
	printf("[*]学生数据已修改成功\n!");
}

//删除学生信息函数 【采用独家删除指定元素数组算法】 
void Delete_Student_Data(int *students_code, int *students_capacity){
	printf("删除第%d号学生信息...\n",*students_code);     
	int find_code = 0; // 是否找到该学生的的判断代码
	// 定义搜寻该学生
	for (int i = 0; i <= *(students_code) ; i++){
		if (i == *(students_code) && i <= *(students_capacity)){
			printf("成功找到数组!删除数据如下:\n");
			printf("学号:%s\n",students_data[i].student_ID);
			printf("姓名:%s\n",students_data[i].student_name);
			printf("性别:%s\n",students_data[i].student_gender);
			printf("年龄:%d\n",*(students_data[i].student_age));
			printf("地址:%s\n",students_data[i].student_addr);
			printf("电话:%s\n",students_data[i].student_phone_number);
			printf("邮箱:%s\n",students_data[i].student_E_maill);
			find_code = 1; // 标记已经找到该学生 
			//修改操作 
			for (int j = i; j <= *(students_capacity)-1; j++){
				students_data[j] = students_data[j+1];
			}
			break;
		} 
		else{
			printf("[+]搜索中:%d...\n",i);
			Sleep(50); 
		}
	} 
	if (find_code){  
		Student_Data_Number--;
		printf("[+]删除成功!已将所有的学生班级代号向前移动一个位置\n");
	} 
	else {
		printf("号码越界,未找到该学生!【注意:该系统容量为:%d】\n",students_data_capacity); 
	}
	
}

int main(){
	printf("系统名称:%s\t%s\n",SYSTEM_Chinese_TITLE,SYSTEM_English_TITLE);
	printf("=====================================================\n");
	printf("当前管理系统版本:v%s\n",SYSTEM_VERSION);
	printf("-------------------------------\n");
	printf("系统功能序列:\n");
	printf("1.录入数据\n");
	printf("2.显示数据\n"); 
	printf("3.修改数据\n");
	printf("4.删除数据\n"); 
	printf("5.退出系统\n");
	printf("=====================================================\n");
	
	while (1)
	{  
		int select_code; // 功能选择代码 
		int student_code_1; // 学生查找代码
		int student_code_2; // 学生修改代码 
		int student_code_3; // 学生删除代码 
		int return_scanf_select_code; // 判断用户选择的功能是否为数字所返回的值,只要返回了0则代表用户输入的功能数据类型不正确
		while(1){
			printf("请输入功能序列号:");
			return_scanf_select_code = scanf("%d",&select_code); //scanf 函数的读取输入后,输入缓冲区可能残留字符  
			if (return_scanf_select_code == 0){
				printf("[-]请输入整数的功能序列号!\n");
				while(getchar() != '\n'); //使用getchar()来读取上一个缓冲区的字符直到读取到'\n'为止,目的就是清空缓冲区  
			}
			else{
				break;
			}
		} 
		switch (select_code){
			case 1:
				printf("\n当前选择:【录入数据】\n");
				int capacity_students_data = sizeof(students_data) / sizeof(students_data[0]);  
				printf("------当前系统存储的学生容量:%d个【第0号位置已占用一个空间】实际系统容量:%d个------\n",capacity_students_data+1,capacity_students_data);
				Input_Student_Data();
				break;
			case 2:
				printf("\n当前选择:【显示数据】\n");
				printf("------当前系统存储的学生个数:%d个【包括一个[00]空数据】------\n",Student_Data_Number);
				while (1){
					printf("请输入你要查看的学生班级代号:"); scanf("%d",&student_code_1);
					if  (student_code_1 > students_data_capacity+1){
						printf("[-]系统检测到该数据存储中暂未有该序号的学生信息,请输入%d以内的学生代码,请重新查询!\n",(students_data_capacity+1));
						while(getchar() != '\n');
					}
					else{
						break;
					}
				}
				Print_Student_Data(&student_code_1);
				break; 
			case 3: 
				printf("\n当前选择:【修改数据】\n");
				printf("------当前系统存储的学生个数:%d个【包括一个[00]空数据】------\n",Student_Data_Number);
				while (1){
					printf("请输入你要修改的学生班级代号:"); int return_scanf_student_code_2 = scanf("%d",&student_code_2);
					if (student_code_2 > students_data_capacity+1 || return_scanf_student_code_2 == 0){
						printf("[-]系统检测到该数据存储中暂未有该序号的学生信息,请输入%d以内的学生代码,请重新选择!\n",(students_data_capacity+1));
						while(getchar() != '\n');
					}
					else{
						break;
					}
				}
				Modify_Student_Data(&student_code_2);
				break;
			case 4: // bug修改:对scanf进行检查 
				printf("\n当前选择:【删除数据】\n");
				int student_capacity = sizeof(students_data) / sizeof(students_data[0]);
				printf("------当前系统存储的学生个数:%d个【包括一个[00]空数据】------\n",Student_Data_Number);
				
				/*存在bug*/
				while (1){
					printf("请输入你要删除的学生班级代号:"); int return_scanf_student_code_3 = scanf("%d",&student_code_3);
					if(return_scanf_student_code_3 == 0){
						printf("[-]请输入有效的数字代号!\n");
						while(getchar() != '\n');
					}
					else{
						break;
					}
				}
				Delete_Student_Data(&student_code_3,&student_capacity);			
				break;
			case 5:
				printf("\n\n------系统正在退出,欢迎下次访问SMS管理系统!------\n");
				Sleep(3000);
				exit(0);
			default:
				printf("[-]输入错误!请重新输入!\n");
				break;
		}
	}
	return 0;
}

[代码运行效果截图]


实现一个简单的学生信息管理系统(具有”增删改查“的功能)

[源代码打包下载]




网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...