一、思维导图
二、创建学生信息管理系统
用结构体数组以及函数完成:
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;
}