m0_51574391 2021-01-07 14:12 采纳率: 25%
浏览 32

学生管理系统,如何添加求平均值,成绩排序的功能

#include"stu.h"
 typedef struct student
{
	char num[6];
	char name[20];
	int score;
	struct student *next;
}student,*LinkList;
//定义一个单链表,并插入n个学生

void menu()
	{
	 	printf("\n****学生成绩管理系统****\n");
	 	printf("1.学生成绩单链表创建\n");
	 	printf("2.插入学生信息\n");
	 	printf("3.删除学生信息\n");
	 	printf("4.输出学生信息\n");
	 	printf("0.退出\n");
	  } //菜单的页面 
void CreateList_L(LinkList *L,int n)
{
	int i;
	LinkList p,r;
	(*L)=(LinkList)malloc(sizeof(student)); 
	r=(*L);
	for(i=1;i<=n;i++)
	{
		p=(LinkList)malloc(sizeof(student)); 
		printf("请输入第%d位学生的学号 姓名 成绩 (用空格分隔) :",i);
		scanf("%s %s %d",p->num,p->name,&p->score);
		p->next=NULL;
		r->next=p;
		r=p;
	}
}
//创建单链表
void Print_L(LinkList L)
{
	LinkList p;
	int i;
	p=L->next;
	if(!p)
	    printf("该学生成绩为空表!\n");
	else
	{
	    printf("所有学生信息: \n");
	    printf("学号\t姓名\t成绩\n");
	    while(p)
	    {
	      printf("%s\t%s\t%d\n",p->num,p->name,p->score);
	      p=p->next; 
		}
	}
}
//输出链表信息 
int ListInsert_L(LinkList *L,int i,student e)
{
	int j;
	LinkList p,s;
	p=(*L);
	j=0;
	while(p&&j<i-1)
	{
		p=p->next;
		j++;
	}
	if(!p||j>i-1)
	    return ERROR;
	s=(LinkList)malloc(sizeof(student)); 
	*s=e;
	s->next=p->next;
	p->next=s;
	return OK;
}
//L为指向带头结点单链表的头指针的指针,在链表的第i个位置插入新的元素e 
int ListDelete_L(LinkList *L,int i)
 { 
	int j;
	LinkList p,q;
	p=(*L);
	j=0;
	while(p->next&&j<i-1)
	{
		p=p->next;
		j++;
	}
	if(!(p->next)||j>i-1)
	    return ERROR;
	q=p->next;
	p->next=q->next;
	free(q);
	return OK;
 } 
//删除第i个结点 
  int main()
{

	LinkList L; 
  	int choose,i,n,temp;
  	student e;
  	char snum[20];
  	while(1)
  {
  	menu();
  	printf("\n请选择功能:");
  	scanf("%d",&choose);
  	switch(choose)
  	{
  		case 1:
  			printf("学生成绩单链表创建\n");
  			scanf("%d",&n);
			  CreateList_L(&L,n);
			  Print_L(L);
  			break; 
  		case 2:
  			  printf("请输入插入的位置:\n");
  			  scanf("%d",&i);
			  printf("请输入要插入的学生的学号 姓名 成绩(用空格分隔):");
			  scanf("%s %s %d",e.num,e.name,&e.score);
			  temp=ListInsert_L(&L,i,e);
			  if(temp==OK)
			  {
			  	printf("插入成功!\n");
			  	Print_L(L);
			  }
			  else
			  printf("插入失败!\n");
  			break; 
  		case 3:
  			printf("请输入要删除元素的位置:\n");
  			scanf("%d",&i);
  			temp=ListDelete_L(&L,i);
  			if(temp==OK)
  			{
  				printf("删除成功!\n");
  				Print_L(L);
			  }
			  else
			  	printf("删除失败!\n");
  			break; 
  		case 4:
  			Print_L(L);
  			break; 
  		case 0:
  			printf("0.退出\n");
  			return 0;
  		default:
  			printf("输入错误,请重输!\n");
  			break; 
	}
  }
	  return 0;
}
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-07 17:40
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试