• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

wchenfeng

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

学生管理系统(数组?结构体?)

题目

选择一种线性表实现方式(顺序表或单链表),实现如下线性表应用:

要求:输入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

 

posted on 2022-04-12 20:02  王陈锋  阅读(24)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3