利用结构体实现学生管理系统(五大功能:1,查询学生信息  按学号或姓名查询 2,添加学生信息 3,修改学生信息 4,删除学生信息 5,对学生按照学号排序并输出其信息 )

这是一个使用C语言编写的改进版学生管理系统,具备按学号或姓名查询学生信息、添加新学生、修改已有信息、删除学生以及按学号排序并显示所有信息的五大功能。此版本修复了之前的bug,系统稳定性得到提升。
摘要由CSDN通过智能技术生成

学生管理系统 学生信息包括:学号、姓名、性别、年龄
1.功能概述:
1)查询学生信息  按学号或姓名查询
2)添加学生信息
3)修改学生信息
4)删除学生信息
5)对学生按照学号排序并输出其信息

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 30

typedef struct Student node; //利用链表结构存储学生信息 
struct Student
{
   /*数据域*/ 
	int num;//学号
	char name[20];//姓名
	char sex[10];//性别 
	int age;//年龄 
 /*指针域*/	
    node* next;//指向下一个学生 	
};

void Show()
{
   
	    printf("================================主菜单================================\n");
		printf("1,添加学生信息 \n");
	    printf("2,查询学生信息 (按学号或姓名查询) \n");
	    printf("3,修改学生信息\n");
	    printf("4,删除学生信息\n");
        printf("5,对学生按照学号排序并输出其信息 \n");
		printf("======================================================================\n");	
}

/*输入n个学生信息*/ 
node* Input(int n)
{
   
	
	node* p = NULL;
	node* head =NULL; 
	int i = 1; 

    while(i <= n)
	{
    
	    printf("------------------------------------\n");
	    if(!head){
   
  		    head = p =(node *)malloc(sizeof(struct Student)); 
            
			/*输入学生基本信息*/
			printf("输入学生学号:\t");
            scanf("%d",&p->num); 
			printf("输入学生姓名:\t");
			scanf("%s", p->name);
			printf("输入学生性别:\t");
			scanf("%s", p->sex);
			printf("输入学生年龄:\t");
			scanf("%d", &p->age);
			 
			p->next = NULL; 
    	}else{
   	
            p->next = (node*)malloc(sizeof(struct Student));
            
            /*输入学生基本信息*/
			printf("输入学生学号:\t");
            scanf("%d",&p->next->num); 
			printf("输入学生姓名:\t");
			scanf("%s", p->next->name);
			printf("输入学生性别:\t");
			scanf("%s", p->next->sex);
			printf("输入学生年龄:\t");
			scanf("%d", &p->next->age);
            
            p->next->next = NULL;
            p = p->next;
	    }
    	++i;
	} 
    return head; 
}

/*添加学生信息*/ 
node* Add(node* p)
{
    
    system("cls");
    show(); 
    int n;
	
   
	printf("\n请输入添加几个学生的信息:\t"); 
	scanf("%d",&n);
	
    if(p==NULL){
   
       node* p = Input(n);
	   return p;	
    }
    
    node* head = p;
	while(n>0){
   
		if(p->next==NULL){
   
			printf("\n");
			p->next = (node*)malloc(sizeof(struct Student));
            
            /*输入学生基本信息*/
			printf("输入学生学号:\t");
            scanf("%d",&p->next->num); 
			printf("输入学生姓名:\t");
			scanf("%s", p->next->name);
			printf("输入学生性别:\t");
			scanf("%s", p->next->sex);
			printf("输入学生年龄:\t");
			scanf("%d", &p->next->age);
            
            p->next->next = NULL;
			n--;//次数减一 
		}
		p = p->next; 
	}
	return head; 
	
}

/*寻找学生信息*/ 
node* Search(node* p)
{
   
	system("cls");
	show();
	if(!p){
   
		printf("\n无 法 查 询!\n");
		return NULL;
	}
    
    int k;//n下岗了 
	node* p1 = p;

		printf("\n请输入您需要查找的学生学号:\t");
		scanf("%d", &k); 
		while(p1){
   
			if(p1->num==k){
   
		           printf("\n------------------------------------\n");
			       printf("学生学号:%5d\n学生姓名:%5s\n学生性别:%5s\n学生年龄:%5d\n\n",p1->num,p1->name,p1->sex,p1->age);
			       printf("\n查 询 成 功 !\n"); 
				   return p;
			} 
			p1 = p1->next
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值