学生管理系统(数组?结构体?)
题目
选择一种线性表实现方式(顺序表或单链表),实现如下线性表应用:
要求:输入n个学生的信息(姓名,性别,学号,成绩),实现功能:
功能1:查找某个学号为×××的学生;
功能2:添加一名学生的信息(姓名,性别,学号,成绩);
功能3:删除一名学号为×××的学生。
功能4:计算所有学生的平均成绩
功能5:修改学号为×××的学生的成绩。
代码
#include<stdio.h>
#include<stdlib.h>
typedef struct Student
{
char name[20];
char sex[10];
int number;
int score;
}student;
void init(student stu[]);
void show(student stu[]);
int search(student stu[]);
void del(student stu[]);
void modify(student stu[]);
void average(student stu[]);
void add(student stu[]);
void choose();
void order(student stu[]);
int num;
int main()
{
student stu[100];
init(stu);
show(stu);
order(stu);
}
void init(student stu[])
{
int n,i=0;
printf("初始化表格\n");
printf("请问你想添加多少条数据?\n");
scanf("%d",&n);
printf("开始添加数据\n");
printf("姓名,性别,学号,成绩\n");
while(i<n)
{
scanf("%s %s %d %d",stu[i].name,stu[i].sex,&stu[i].number,&stu[i].score);
i++;
}
num=i;
printf("\n信息录入结束\n");
}
void show(student stu[])
{
int i=0;
printf("\n展示表格信息\n");
printf("姓名,性别,学号,成绩\n");
while(i<num)
{
printf("%s %s %d %d\n",stu[i].name,stu[i].sex,stu[i].number,stu[i].score);
i++;
}
printf("\n展示结束\n");
}
int search(student stu[])
{
int temp,i=0,f=0;
printf("\n开始调用查找\n");
printf("输入要操作的学号\n");
scanf("%d",&temp);
while(i<num)
{
if(stu[i].number==temp)
{
f=1;
printf("\n成功找到\n");
printf("%s %s %d %d",stu[i].name,stu[i].sex,stu[i].number,stu[i].score);
break;
}
else i++;
}
if(!f)
{
printf("\n未找到该信息\n");
return -1;//表示出错
}
return i;//返回目标的位置
}
void del(student stu[])
{
int temp,i=0,f=0,j;
printf("\n开始删除\n");
i=search(stu);
for(j=i;j<num;j++)
{
stu[j]=stu[j+1];
}
num--;
printf("\n删除成功\n");
}
void modify(student stu[])
{
int temp,i=0,f=0;
printf("开始修改");
i=search(stu);
printf("\n输入你要修改的成绩\n");
scanf("%d",&temp);
stu[i].score=temp;
}
void average(student stu[])
{
int i=0,sum=0;
for(;i<num;i++)
sum+=stu[i].score;
printf("所有学生的平均成绩为%d",sum/num);
}
void add(student stu[])
{
int i=0,temp=0;
printf("\n开始添加\n");
printf("请输入你的数据\n");
printf("姓名,性别,学号,成绩\n");
scanf("%s %s %d %d",stu[num].name,stu[num].sex,&stu[num].number,&stu[num].score);
num++;
printf("添加完成\n");
}
void choose()
{
printf("\n功能1:查找某个学号为×××的学生\n");
printf("功能2:添加一名学生的信息(姓名,性别,学号,成绩)\n");
printf("功能3:删除一名学号为×××的学生\n");
printf("功能4:计算所有学生的平均成绩\n");
printf("功能5:修改学号为×××的学生的成绩\n");
printf("功能6:展示信息\n");
printf("功能7:正常退出\n");
}
void order(student stu[])
{
int n;
choose();
printf("请问你想选择的功能\n");
scanf("%d",&n);
switch(n)
{
case 1: search(stu);order(stu);break;
case 2: add(stu);order(stu);break;
case 3: del(stu);order(stu);break;
case 4: average(stu);order(stu);break;
case 5: modify(stu);order(stu);break;
case 6: show(stu);order(stu);break;
case 7: exit(0);break;
default:order(stu);
}
}
实现
数据
3
东仔 男 20171041 100
西西 男 20171061 90
谢西 女 20171068 132
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)