学生管理系统(分布式编译)

学生管理系统

建立三个文件 ,mymain.c  list.c    list .h

mymain.c

#include "list.h"

int main(){

    student stu[MAX];
    student *s = stu;
    int choice;
    while (1) {
        printf("------学生管理系统------\n");
        printf("1. 添加学生信息\n");
        printf("2. 删除学生信息\n");
        printf("3. 修改学生信息\n");
        printf("4. 查询学生信息\n");
        printf("5. 最高成绩学生\n");
        printf("6. 学生平均成绩\n");
        printf("7. 学生成绩排序\n");
        printf("8. 显示学生信息\n");
        printf("9. 退出\n");
        printf("请输入你的选择: ");
        scanf("%d", &choice);

        switch (choice){
            case 1:addstu(s);break;
            case 2:deletestu(s);break;
            case 3:updatestu(s);break;
            case 4:querystu(s);break;
            case 5:Maxstu(s);break;
            case 6:Avgstu(s);break;
            case 7:Sortstu(s);break;
            case 8:showAll(s);break;
            case 9: return 0;
            default : printf("输入错误!");break;                                    
        }
    }
        return 0;
}

list.c

#include "list.h"
int stu_count = 0;
int addstu(student *s){
	
	printf("请输入学生ID:");
	scanf("%d",&(s+stu_count)->id);
	printf("请输入学生姓名:");
	scanf("%s",(s+stu_count)->name);
	printf("请输入学生年龄:");
	scanf("%d",&(s+stu_count)->age);
	printf("请输入学生性别:");
	scanf("%s",(s+stu_count)->sex);
	printf("请输入学生成绩:");
	scanf("%f",&(s+stu_count)->grade);
	if(stu_count!=0){
		for(int i=0;i<stu_count;i++){
			if((s+i)->id == (s+stu_count)->id){
				printf("ID重复,请重新选择");
				return -1;
			}
		}
	}
	stu_count++;
	return 0;
}
int deletestu(student *s){
	int found = 0;
	int id;
	printf("请输入需要删除的学生ID:");
	scanf("%d",&id);
	for(int i=0;i<stu_count;i++){
		if((s+i)->id == id){
			found = 1;
			for(int j=i;j<stu_count;j++){
				*(s+j)=*(s+j+1);
			}
			stu_count--;
			printf("学生信息删除成功!\n");
			break;
		} 
	}
	if(found != 1){
		printf("未找到id为%d的学生!\n",id);
	}
}
int updatestu(student *s){
	int found = 0,id,age;
	char name[20];
	char sex[10];
	float grade;
	printf("请输入需要修改信息的学生ID:");
	scanf("%d",&id);
	for(int i=0;i<stu_count;i++){
		if((s+i)->id == id){
			found = 1;
			printf("请输入学生姓名:");
			scanf("%s",name);
			strcpy((s+i)->name,name);
			printf("请输入学生年龄:");
			scanf("%d",&age);
			(s+i)->age = age;
			printf("请输入学生性别:");
			scanf("%s",sex);
			strcpy((s+i)->sex,sex);
			printf("请输入学生成绩:");
			scanf("%f",&grade);
			(s+i)->grade = grade;
			printf("学生信息修改成功!\n");
			break;
		}
	}
	if(found != 1){
		printf("未找到id为%d的学生!\n",id);
	}
}
int querystu(student *s){
	int found = 0;
	char name[20];
	printf("请输入查询学生姓名:");
	scanf("%s",name);
	for(int i=0;i<stu_count;i++){
		if( (strcmp((s+i)->name,name)) == 0){
			found = 1;
			printf("%s的学生信息:\n",(s+i)->name);
			printf("--------------\n");
			printf("|ID   :%d    |\n",(s+i)->id);
			printf("|姓名 :%s |\n",(s+i)->name);
			printf("|年龄 :%d   |\n",(s+i)->age);
			printf("|性别 :%s   |\n",(s+i)->sex);
			printf("|总分 :%.2f|\n",(s+i)->grade);
			printf("--------------\n");
			break;
		}
	}
	if(found != 1){
		printf("未找到%s学生!\n",name);
	}
}
int Maxstu(student *s){
	int max = 0;
	for(int i=0;i<stu_count;i++){
		if((s+i)->grade > (s+max)->grade){
			max = i;
		}
	}
	printf("最高成绩学生信息:\n");
	printf("--------------\n");
	printf("|ID   :%d    |\n",(s+max)->id);
	printf("|姓名 :%s |\n",(s+max)->name);
	printf("|年龄 :%d   |\n",(s+max)->age);
	printf("|性别 :%s   |\n",(s+max)->sex);
	printf("|总分 :%.2f|\n",(s+max)->grade);
	printf("--------------\n");
}
int Avgstu(student *s){
	float sum = 0;
	for(int i=0;i<stu_count;i++){
		sum += (s+i)->grade;
	}
	printf("学生平均成绩为:%.2f\n",sum/stu_count);
}
int Sortstu(student *s){
	int i,j;
	student t;
	for(i=0;i<stu_count-1;i++){
		for(j=0;j<stu_count-i-1;j++){
			if((s+j)->grade < (s+j+1)->grade ){
				t = *(s+j);
				*(s+j) = *(s+j+1);
				*(s+j+1) = t;
			}
		}
	}
	printf("排序完成!\n");
	showAll(s);
}
int showAll(student *s){
	if (stu_count == 0) {
		printf("没有学生信息!\n");
	} else {
		for (int i = 0; i < stu_count; i++) {
			printf("--------------\n");
			printf("|ID   :%d    |\n",(s+i)->id);
			printf("|姓名 :%s |\n",(s+i)->name);
			printf("|年龄 :%d   |\n",(s+i)->age);
			printf("|性别 :%s   |\n",(s+i)->sex);
			printf("|总分 :%.2f|\n",(s+i)->grade);
			printf("--------------\n");
		}
	}

}

list.h

#ifndef _LIST_H_
#define _LIST_H_
#include <myhead.h>
#define MAX 100
typedef struct student{
    int id;
    char name[20];
    int age;
    char sex[10];
    float grade;

}student; 
int addstu(student *);
int showAll(student *);
int deletestu(student *);
int updatestu(student *);
int querystu(student *);
int Maxstu(student *);
int Avgstu(student *);
int Sortstu(student *);
#endif 

运行结果

添加学生信息

在这里插入图片描述

删除学生信息

在这里插入图片描述

修改学生信息

在这里插入图片描述

查询学生信息

在这里插入图片描述

学生最高成绩

在这里插入图片描述

学生成绩平均值

在这里插入图片描述

按学生成绩降序排列

降序排列

查询全部学生信息

在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值