黑马程序员 - C语言 -学生信息管理系统

本文介绍了使用C语言编写的学生成绩管理系统,涵盖了数据结构、文件操作等核心知识点,旨在提升程序设计能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

/*
编写一个学生管理系统程序,用来记录学生的信息(包括姓名、年龄、性别、学号、分数),提供增加、删除、查询学生信息的入口。(C语言)
 */



#include <stdio.h>
#include <string.h>

//声明函数
void zengJia();
void shanChu();
void chaXun();
void shanChuXueHao();
void shanChuXingMing();
void xuanZeCaoZuo();
void chaXunFenShu();
void chaXunXingMing();
void chaXunXueHao();

//定义性别信息
char women[] ="女人";
char man[]="男人";
char yao[]="人妖";

//定义结构体别名学生类
typedef struct a{
    char Name[10];
    int Age;
    char Sex[10];
    int Nunber;
    float Score;
    
}xueShengXingXi;

xueShengXingXi xx[100];
xueShengXingXi kong;

//    定义学生每个人的信息,上限为100;
static int n = 0;

int main() {
    @autoreleasepool {
    
//    提示信息
        printf("\t\t\t****欢迎打开学生管理系统程序****\n");
        printf("\t\t\t****   请输入要操作的内容  ****\n");
        printf("\t\t\t****    按1增加学生信息   ****\n");
        printf("\t\t\t****    按2删除学生信息   ****\n");
        printf("\t\t\t****    按3查询学生信息   ****\n");
            
//        定义保存用户输入的信息
        int n;
        
//        接受用户信息
        scanf("%d",&n);
        
//        避免死循环暂停一下
        getchar();
        
//        判断用户输入的信息是否正确 n>0 && n<4
         if(n>0 && n<4) {
             switch (n) {
//        判断为1时,调用增加学生信息函数
                 case 1:
                     zengJia();
                     break;

//        判断为2时,调用删除学生信息函数
                 case 2:
                     shanChu();
                     break;

//        判断为3时,调用查询学生信息函数
                 case 3:
                     chaXun();
                     break;
                     
                 default:
                     break;
             }
//        输入错误,返回并从新输入并提醒
         }else{
             printf("输入错误请输入1~3,按回车结束");
             main();
    }
    }
    return 0;
}


//增加学生函数
void zengJia(){

    if (n<100) {
        
    //    提示用户增加姓名
    printf("请输入学生名字%d\n",n);
//       
    
    scanf("%s",xx[n].Name);
    
    //    提示用户增加性别
    printf("请输入性别:1.女人  2.男人  3.人妖\n");
//        定义保存选择变量;
        int i;
//        保持用户选择变了;
        scanf("%d",&i);
        
//        判断用户选择性别;
        while (i>3 ||i<=0) {
            
//        提示用户输入错误;
        printf("你输入选择性别有误,请重新输入性别:1.女人  2.男人  3.人妖");
//        重新接受用户选择性别
        scanf("%d",&i);
//        避免死循环
        getchar();
            
        }
//        判断用户选择的性别;
        switch (i) {
            case 1:
//        1:女人
                strcpy(xx[n].Sex,women);
                
                break;
                
            case 2:
//        2:男人
                strcpy(xx[n].Sex,man);
                
                break;
                
            case 3:
//        3:妖
                strcpy(xx[n].Sex,yao);
                
                break;
                
            default:
                break;
        }
    
    //    提示用户增加年龄
    printf("请输入学生年龄:10~40\n");
        
//        接受用户输入的年龄;
        scanf("%d",&i);
        
//        判断用户输入年龄是否有误
        while (i<10 || i>30) {
//        提示用户输入年龄有误
            printf("对不是你输入的年龄有误,请输入学生年龄:10~40\n");
//        重新接受用户输入的年龄;
            scanf("%d",&i);
//        避免死循环
            getchar();
        }
//        保存用户输入年龄信息
        xx[n].Age=i;
        
    
    //    提示用户增加分数
    printf("请输入学生分数\n");
        
//        接受用户输入的分数
        scanf("%f",&xx[n].Score);
        
//        判断用户输入的分数是否0~100之间
        while (xx[n].Score>100 || xx[n].Score<0) {
        
//        提示用户输入有误
            printf("输入有误,请重新输入学生0~100之间的分数\n");
//        重新接受用户输入的分数
            scanf("%f",&xx[n].Score);
//        避免死循环
            getchar();
            
        }
        
    
    //    提示用户增加学号
    printf("请输入学生学号:1~100之间\n");

//        接受学生学号
        scanf("%d",&xx[n].Nunber);
//        判断学生学号是否输入有误 1~100之间
        
        
        while (xx[n].Nunber < 1 ||xx[n].Nunber > 100) {
            
//        提示用户输入有误
            printf("输入有误,请重新输入学生学号:1~100之间\n");
//        重新接受用户输入的学号
            scanf("%d",&xx[n].Nunber);
//        避免死循环
            getchar();
            
        }
//        遍历学号
        for (int i =0; i < n; i++) {
//        判断学生学号是否重复
            while (xx[i].Nunber == xx[n].Nunber) {
//        提示输入有误
                printf("你输入的学生号与其他学生号重复,请输入正确的学生号");
//      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值