数据结构0702作业

一、思维导图

二、创建学生信息管理系统

用结构体数组以及函数完成:
1、录入你要增加的几个学生,之后输出所有的学生信息
2、删除你要删除的第几个学生,并打印所有的学生信息
3、修改你要修改的第几个学生,并打印所有的学生信息
4、查找你要查找的第几个学生,并打印该的学生信息

#include <myhead.h>

struct student
{
	char name[32];
	char sex[32];
	int age;
	int id;
}stu[100] = {{"马嘉祺", "男", 21, 20021212}, {"丁程鑫", "男", 22, 20020224},
			 {"宋亚轩", "男", 20, 20040314}, {"刘耀文", "男", 19, 20050923}, 
			 {"张真源", "男", 21, 20030416}, {"严浩翔", "男", 20, 20040816},
			 {"贺峻霖", "男", 20, 20040615}};

void show_stu(struct student *p)
{
	int len;
	for(len=0; (p+len)->age != '\0'; len++);
	printf("\n全部学生信息:\n");
	for(int i=0; i<len; i++)
	{
		printf("%d、", i+1);
		printf("姓名:%s 性别:%s 年龄:%d 学号:%d\n", (p+i)->name, (p+i)->sex, (p+i)->age, (p+i)->id);
	}
	putchar(10);
}

void add_stu(struct student *p)
{
	int n, len;
	for(len=0; (p+len)->age != '\0'; len++);
	printf("请输入您要添加的学生信息数量: ");
	scanf("%d", &n);
	for(int i=0; i<n; i++)
	{
		printf("请输入第%d个学生的姓名: ", i+1);
		scanf("%s", (p+len+i)->name);
		printf("请输入第%d个学生的性别: ", i+1);
		scanf("%s", (p+len+i)->sex);
		printf("请输入第%d个学生的年龄: ", i+1);
		scanf("%d", &(p+len+i)->age);
		printf("请输入第%d个学生的学号: ", i+1);
		scanf("%d", &(p+len+i)->id);
		putchar(10);
	}
}

void del_stu(struct student *p)
{
	int n, len;
	for(len=0; (p+len)->age != '\0'; len++);
	printf("请输入您要删除第几个学生的信息: ");
	scanf("%d", &n);
	for(int i=n-1; i<len; i++)
	{
		*(p+i) = *(p+i+1);
	}
}

void edit_stu(struct student *p)
{
	int n, len, choice;
	for(len=0; (p+len)->age != '\0'; len++);
	printf("请输入您要修改第几个学生的信息: ");
	scanf("%d", &n);
	printf("您要修改的信息是:\n");
	printf("(1) 姓名\t");
	printf("(2) 性别\n");
	printf("(3) 年龄\t");
	printf("(4) 学号\n");
	printf("(5) 全部\n");
	printf("请选择您要进行的操作:");
	scanf("%d", &choice);
	switch(choice)
	{
		case 1:
		{
			printf("请输入修改后的姓名: ");
			scanf("%s", (p+n-1)->name);
			break;
		}
		case 2:
		{
			printf("请输入修改后的性别: ");
			scanf("%s", (p+n-1)->sex);
			break;
		}
		case 3:
		{
			printf("请输入修改后的年龄: ");
			scanf("%d", &(p+n-1)->age);
			break;
		}
		case 4:
		{
			printf("请输入修改后的学号: ");
			scanf("%d", &(p+n-1)->id);
			break;
		}
		case 5:
		{
			printf("请输入修改后的姓名: ");
			scanf("%s", (p+n-1)->name);
			printf("请输入修改后的性别: ");
			scanf("%s", (p+n-1)->sex);
			printf("请输入修改后的年龄: ");
			scanf("%d", &(p+n-1)->age);
			printf("请输入修改后的学号: ");
			scanf("%d", &(p+n-1)->id);
			break;
		}
		default:printf("\n*****操作有误,请重新输入*****\n\n");break;

	}
}

void find_stu(struct student *p)
{
	int n;
	printf("请输入您要查找的第几个学生信息:");
	scanf("%d", &n);
	printf("\n%d、",n);
	printf("姓名:%s 性别:%s 年龄:%d 学号:%d\n", (p+n-1)->name, (p+n-1)->sex, (p+n-1)->age, (p+n-1)->id);
	putchar(10);
}

void fun()
{
	char x;
	printf("是否继续操作(Y/N) ");
	scanf(" %c", &x);
	if(x == 'Y' || x == 'y');
	else if(x == 'N' || x == 'n')
		exit(0);
	else
	{
		printf("\n*****操作有误,请重新输入*****\n\n");
		fun();
	}
}

int main(int argc, const char *argv[])
{
	int choice;
	while(1)
	{
		putchar(10);
		printf("-----欢迎使用学生信息管理系统-----\n");
		printf("----------------------------------\n");
		printf("---------1、显示学生信息----------\n");
		printf("---------2、增加学生信息----------\n");
		printf("---------3、删除学生信息----------\n");
		printf("---------4、修改学生信息----------\n");
		printf("---------5、查找学生信息----------\n");
		printf("---------6、退出管理系统----------\n");
		printf("----------------------------------\n");
		printf("请选择您要进行的操作:");
		scanf("%d", &choice);
		switch(choice)
		{
			case 1:
			{
				show_stu(stu);
				fun();
				break;	
			}
			case 2:
			{
				add_stu(stu);
				show_stu(stu);
				fun();
				break;	
			}
			case 3:
			{
				del_stu(stu);
				show_stu(stu);
				fun();
				break;	
			}
			case 4:
			{
				edit_stu(stu);
				show_stu(stu);
				fun();
				break;	
			}
			case 5:
			{
				find_stu(stu);
				fun();
				break;	
			}
			case 6:
			{
				return 0;
			}
			default:printf("\n*****操作有误,请重新输入!*****\n\n");break;

		}
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值