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

wchenfeng

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

公告

View Post

学生管理系统(顺序表)

题目

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

要求:输入n个学生的信息(姓名,性别,学号,成绩),实现功能:

      功能1:查找某个学号为×××的学生;

      功能2:添加一名学生的信息(姓名,性别,学号,成绩);

      功能3:删除一名学号为×××的学生。

      功能4:计算所有学生的平均成绩

      功能5:修改学号为×××的学生的成绩。

代码

#include<stdio.h>
#include<stdlib.h>
#define pr printf("%s %s %d %d\n",L->p[i].name,L->p[i].sex,L->p[i].number,L->p[i].score)
#define sc scanf("%s %s %d %d",L->p[i].name,L->p[i].sex,&L->p[i].number,&L->p[i].score)
typedef struct Student
{
	char name[20];
	char sex[10];
	int number;
	int score;
}student;

typedef struct SqList
{
  student  *p;     
  int  length;       
}Node,*LinkList;

LinkList init();
void show(LinkList L);
int search(LinkList L);
void del(LinkList L);
void modify(LinkList L);
void average(LinkList L);
void add(LinkList L);
void choose();
void order(LinkList L);

int main()
{
	LinkList L;
	L=init();
	show(L);
	order(L);
}
LinkList init()
{
	LinkList L;
	int n,i=0;
	L=(LinkList)malloc(sizeof(Node));
	L->p=(student *)malloc(sizeof(student));
	L->length=0;//长度为0
	printf("初始化表格\n");
	printf("请问你想添加多少条数据?\n");
	scanf("%d",&n);
	printf("开始添加数据\n");
	printf("姓名,性别,学号,成绩\n");
	while(i<n)
	{
		sc;
		i++;
	}
	L->length=i;
	printf("\n信息录入结束\n");
	return L;
}
void show(LinkList L)
{
	int i=0;
	printf("\n展示表格信息\n");
	printf("姓名,性别,学号,成绩\n");
	while(i<L->length)
	{
		pr;
		i++;
	}
	printf("\n展示结束\n");
}
int search(LinkList L)
{
	int temp,i=0,f=0;
	printf("\n开始调用查找\n");
	printf("输入要操作的学号\n");
	scanf("%d",&temp);
	while(i<L->length)
	{
		if(L->p[i].number==temp)
			{
				f=1;
				printf("\n成功找到\n");
				pr;
				break;
		}
		else i++;
	}
	if(!f)
		{
			printf("\n未找到该信息\n");
			return -1;//表示出错
	}
	return i;//返回目标的位置
}
void del(LinkList L)
{
	int temp,i=0,f=0,j;
	printf("\n开始删除\n");
	i=search(L);
	for(j=i;j<L->length;j++)
	{
		L->p[j]=L->p[j+1];
	}
	L->length--;
	printf("\n删除成功\n");
}
void modify(LinkList L)
{
	int temp,i=0,f=0;
	printf("开始修改");
	i=search(L);
	printf("\n输入你要修改的成绩\n");
	scanf("%d",&temp);
	L->p[i].score=temp;
}
void average(LinkList L)
{
	int i=0,sum=0;
	for(;i<L->length;i++)
		sum+=L->p[i].score;
	printf("所有学生的平均成绩为%d",sum/L->length);
}
void add(LinkList L)
{
	int i=L->length,temp=0;
	printf("\n开始添加\n");
	printf("请输入你的数据\n");
	printf("姓名,性别,学号,成绩\n");
	sc;;
	L->length++;
	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(LinkList L)
{
	int n;
	choose();
	printf("请问你想选择的功能\n");
	scanf("%d",&n);
	switch(n)
	{
	case 1: search(L);order(L);break;
	case 2: add(L);order(L);break;
	case 3: del(L);order(L);break;
	case 4: average(L);order(L);break;
	case 5: modify(L);order(L);break;
	case 6: show(L);order(L);break;
	case 7: exit(0);break;
	default:order(L);
	}
}

实现

 

数据

3
东仔 男 20171041 100
西西 男 20171061 90
谢西 女 20171068 132
小西 男 20171051 321

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

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