要求:学员管理系统可以实现对学员的添加、全部显示、查询、修改、删除功能
完整代码示例:
#include <stdio.h>
// 定义容量
#define NUM 100
//自定义结构体
typedef struct st
{
char name[30];
int age;
char sex[10];
}STU;
//传入四个初始数据
STU s[NUM]={
{"mike",18,"男"},
{"jack",19,"男"},
{"lucy",17,"女"},
{"candice",22,"女"}
};
// 帮助菜单显示函数定义
void help_menu(){
printf("\n");
printf(" 欢迎使用本学生信息管理系统\n");
printf("* ================================ *\n");
printf("* 1. 添加 *\n");
printf("* 2. 显示 *\n");
printf("* 3. 查询 *\n");
printf("* 4. 修改 *\n");
printf("* 5. 删除 *\n");
printf("* 6. 退出 *\n");
printf("* ================================ *\n");
};
// 初始数据条数
int n=4;
//添加操作
void add(){
if(n>NUM){
printf("数据已满,不能进行添加操作!");
};
printf("请输入学生姓名:");
scanf("%s",s[n].name);
printf("请输入学生年龄:");
scanf("%d",&s[n].age);
printf("请输入学生性别:");
scanf("%s",s[n].sex);
printf("添加成功:学生姓名:%s,学生年龄:%d,学生性别:%s",s[n].name,s[n].age,s[n].sex);
n++;
};
// 查询学生所在的下标位置
int find_index(char*p){
for(int i=0;i<n;i++){
if(strcmp(s[i].name,p)==0){
return i;
}
}
return -1;
}
//查找操作
void find(){
printf("请输入学生姓名:");
char sname[30];
scanf("%s",sname);
int i=find_index(sname);
if(i!=-1){
printf("查询成功:学生姓名:%s,学生年龄:%d,学生性别:%s\n",s[i].name,s[i].age,s[i].sex);
}else{
printf("查无此人!");
}
};
//打印所有操作
void show(){
for(int i=0;i<n;i++){
printf("添加成功:学生姓名:%s,学生年龄:%d,学生性别:%s\n",s[i].name,s[i].age,s[i].sex);
}
};
//修改操作
void update(){
printf("请输入学生姓名:");
char sname[30];
scanf("%s",sname);
int i=find_index(sname);
if(i!=-1){
printf("查询成功:学生姓名:%s,学生年龄:%d,学生性别:%s\n",s[i].name,s[i].age,s[i].sex);
printf("请输入新的学生姓名:");
scanf("%s",s[i].name);
printf("请输入新的学生年龄:");
scanf("%d",&s[i].age);
printf("请输入新的学生性别:");
scanf("%s",s[i].sex);
printf("修改成功:学生姓名:%s,学生年龄:%d,学生性别:%s",s[i].name,s[i].age,s[i].sex);
}else{
printf("查无此人!");
}
};
//删除操作
void delete(){
printf("请输入要删除的学生姓名:");
char sname[30];
scanf("%s",sname);
int i=find_index(sname);
if(i!=-1){
// 如果找到的学生不是列表中的最后一个学生,则执行以下操作。
if(i!=n-1){
// 将列表中最后一个学生的信息复制到要删除的学生的位置。这样,要删除的学生就被最后一个学生“覆盖”了,从而实现了删除操作。
s[i]=s[n-1];
}
// 减少学生列表的长度。因为已经删除了一个学生,所以列表的长度应该减1。
n--;
printf("%s 删除成功\n",sname);
}else{
printf("查无此人!");
}
};
int main() {
while(1){
help_menu();
printf("请输入需要操作的对应数字序号:");
int num;
scanf("%d",&num);
switch(num){
case 1:
add();
break;
case 2:
show();
break;
case 3:
find();
break;
case 4:
update();
break;
case 5:
delete();
break;
default:
printf("您已成功退出!");
break;
}
if(num==6){
break;
}
}
return 0;
}