思维导图
代码如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct student
{
char name[128];//姓名
char sex[10];//性别
int age;//年龄
int id;//学号
};
int student_num=0;//定义一个全局变量来接收输入进去的学生个数
void show_student(struct student *p,int n);
void add_student(struct student *p,int n);
void del_student(struct student *p);
void mod_student(struct student *p);
void seek_student(struct student *p);
int main(int argc, const char *argv[])
{
struct student stu[100];
int choice,n;
while(1)
{
printf("----------学生信息管理系统----------\n");
printf("(1)输入学生信息并打印所有的学生信息\n");
printf("(2)根据学号删除学生信息并打印所有的学生信息\n");
printf("(3)根据学号修改学生信息并打印所有的学生信息\n");
printf("(4)根据学号查找学生信息并打印该学生的信息\n");
printf("(0)退出程序\n");
printf("请输入你的选择:");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("please enter student number:");
scanf("%d",&n);
add_student(stu,n);
show_student(stu,n);
break;
case 2:
del_student(stu);
show_student(stu,n);
break;
case 3:
mod_student(stu);
show_student(stu,n);
break;
case 4:
seek_student(stu);
break;
case 0:
printf("程序退出\n");
exit(0);
break;
default:
printf("您输入的选项有误!\n");
}
}
return 0;
}
void show_student(struct student *p,int n)
{
if(student_num == 0)
{
printf("当前没有学生信息\n");
return;
}
putchar(10);
for(int i=0;i<student_num;i++)
{
printf("姓名:%s 性别:%s 年龄:%d 学号:%d\n",(p+i)->name,(p+i)->sex,(p+i)->age,(p+i)->id);
putchar(10);
}
putchar(10);
}
void add_student(struct student *p,int n)
{
for(int i=student_num;i<(student_num+n);i++)
{
printf("请输入要添加的学生姓名:");
scanf("%s",(p+i)->name);
getchar();
printf("请输入要添加的学生性别:");
scanf("%s",(p+i)->sex);
printf("请输入要添加的学生年龄:");
scanf("%d",&(p+i)->age);
printf("请输入要添加的学生学号:");
scanf("%d",&(p+i)->id);
printf("添加成功\n");
}
student_num+=n;
putchar(10);
if(student_num == 100)
{
printf("添加学生数量已达最大值,无法添加\n");
return;
}
}
void del_student(struct student *p)
{
int del_id,index=-1;
printf("请输入要删除学生信息的学号:");
scanf("%d",&del_id);
int i,j;
for(i=0;i<student_num;i++)
{
if(del_id == (p+i)->id)
{
index=i;
break;
}
}
if(index == -1)
{
printf("没有该学号的学生信息!\n");
}
else
{
for(j=index;j<student_num-1;j++)
{
strcpy((p+j)->name,(p+j+1)->name);
strcpy((p+j)->sex,(p+j+1)->sex);
(p+j)->age=(p+j+1)->age;
(p+j)->id=(p+j+1)->id;
}
student_num--;
printf("删除成功!\n");
}
putchar(10);
}
void mod_student(struct student *p)
{
int mod_id,index=-1;
printf("请输入要修改学生信息的学号:");
scanf("%d",&mod_id);
int i;
for(i=0;i<student_num;i++)
{
if(mod_id == (p+i)->id)
{
index=i;
break;
}
}
if(index == -1)
{
printf("没有该学号的学生信息!\n");
}
else
{
printf("请输入修改后的学生姓名:");
scanf("%s",(p+index)->name);
printf("请输入修改后的学生性别:");
scanf("%s",(p+index)->sex);
printf("请输入修改后的学生年龄:");
scanf("%d",&(p+index)->age);
printf("请输入修改后的学生学号:");
scanf("%d",&(p+index)->id);
printf(" 学生信息修改成功!\n");
}
}
void seek_student(struct student *p)
{
int seek_id,index=-1;
printf("请输入要查找学生信息的学号:");
scanf("%d",&seek_id);
putchar(10);
int i;
for(i=0;i<student_num;i++)
{
if(seek_id == (p+i)->id)
{
index=i;
break;
}
}
if(index == -1)
{
printf("没有该学号的学生信息!\n");
}
else
{
printf("姓名:%s 性别:%s 年龄:%d 学号:%d\n",(p+index)->name,(p+index)->sex,(p+index)->age,(p+index)->id);
}
putchar(10);
}
运行界面显示: