学生管理系统 c语言

源码下载

/*******************************MAIN*******************************/

#include<iostream>
#include<stdio.h>
#include"func.h"
int main() {
    int s = menu();             //学生成绩查询系统
    while(s) {
        switch(s) {
        case 1: {                      //增加学生信息
            system("cls");          //清屏
            int t = menu1();
            while(t) {
                switch(t) {
                case 1: add1(); break;      //手动增加学生信息
                case 2: add2(); break;      //从磁盘读取学生信息
                case 0: break;
                default: system("cls"); printf("输入有误,按回车返回\n"); getchar(); getchar(); break;
                }
                system("cls");
                t = menu1();
            }
            break;
        }
        case 2: {                //修改学生信息
            system("cls");
            int t = menu2();
            while(t) {
                switch(t) {
                case 1: {      //修改已录入学生信息
                    system("cls");
                    int t = menu11();
                    repair1(t);
                    break;
                }
                case 2: repair2(); break;      //修改未录入学生信息
                case 0: break;
                default: system("cls"); printf("输入有误,按回车返回\n"); getchar(); getchar(); break;
                }
                system("cls");
                t = menu2();
            }
            break;
        }
        case 3: {                //删除学生信息
            system("cls");
            int t = menu3();
            while(t) {
                switch(t) {
                case 1: delect(1); break;   //按学号删除学生信息
                case 2: delect(2); break;   //按姓名删除学生信息
                case 0: break;
                default: system("cls"); printf("输入有误,按回车返回\n"); getchar(); getchar(); break;
                }
                system("cls");
                t = menu3();
            }
            break;
        }
        case 4: {                //打印学生信息
            system("cls");
            int t = menu4();
            while(t) {
                switch(t) {
                case 1: {               //打印某位同学成绩单
                    system("cls");
                    int t = menu6();
                    while(t) {
                        switch(t) {
                        case 1: print1(1); break;   //按照学号搜索打印平均成绩单
                        case 2: print1(2); break;   //按照学号搜索打印加权平均成绩单
                        case 3: print1(3); break;   //按姓名搜索打印平均成绩单
                        case 4: print1(4); break;   //按姓名搜索打印加权平均成绩单
                        case 0: break;
                        default: system("cls"); printf("输入有误,按回车返回\n"); getchar(); getchar(); break;
                        }
                        system("cls");
                        t = menu6();
                    }
                    break;
                }
                case 2: {               //打印某班级成绩单
                    system("cls");
                    int t = menu7();
                    print2(t);      //按学号打印某班成绩单
                    break;
                }
                case 3: {               //打印某科目成绩单
                    system("cls");
                    int t = menu8();
                    print3(t);      //利用链表打印单科成绩单
                    break;
                }
                case 4: {           //打印总成绩单
                    system("cls");
                    int t = menu9();
                    print4(t);
                    break;
                }
                case 5: {           //打印某个科目优秀成绩单
                    system("cls");
                    int t = menu10();
                    while(t) {
                        switch(t) {
                        case 1: print5(); break;    //打印单科成绩为优秀的有行政职务的同学成绩单
                        case 0: break;
                        default: system("cls"); printf("输入有误,按回车返回\n"); getchar(); getchar(); break;
                        }
                        system("cls");
                        t = menu10();
                    }
                    break;
                }
                case 0: break;
                default: system("cls"); printf("输入有误,按回车返回\n"); getchar(); getchar(); break;
                }
                system("cls");
                t = menu4();
            }; break;
        }
        case 5: {                //存储学生信息
            system("cls");
            int t = menu5();
            while(t) {
                switch(t) {
                case 1: save(); break;          //将当前信息保存到文件中
                case 0: break;
                default: system("cls"); printf("输入有误,按回车返回\n"); getchar(); getchar(); break;
                }
                system("cls");
                t = menu5();
            }
            break;
        }
        case 0: break;
        default: system("cls"); printf("输入有误,按回车返回\n"); getchar(); getchar(); break;
        }
        system("cls");
        s = menu();
    }
    return 0;
}
/************************************FUNC*****************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
//计算目前的学生数
int number = 0;
extern int menu11();
//读入字符串返回数字
int judge(char* num) {
    if(strlen(num) == 1 && atoi(num) != 0)
        return atoi(num);
    else if(strlen(num) == 3 && atoi(num) == -10)
        return -10;
    else if(strlen(num) == 2 && atoi(num) > 9 && atoi(num) < 100)
        return atoi(num);
    else if(strlen(num) == 3 && atoi(num) > 99 && atoi(num) < 1000)
        return atoi(num);
    else if(strlen(num) == 4 && atoi(num) > 999 && atoi(num) < 10000)
        return atoi(num);
    else if(strlen(num) == 8 && atoi(num) >= 53000000 && atoi(num) <= 53999999)
        return -2;
    else if(strcmp(num, "0") == 0 && strlen(num) == 1)
        return 0;
    return -1;
}
struct Kecheng {
    char name[25];          //高级语言程序设计、高级语言课程设计、面向对象程序设计
    int time;               //高级语言程序设计实验、面向对象程序设计实验
    int xuefen;
    int fenshu;
};
struct Dath {
    int year;
    int month;
    int day;
};
struct Student {
    char xuehao[9];
    char name[8];
    int sex;
    int clas;
    char minzu[8];
    struct Dath birthday ;
    char zhiwu[8];
    struct Kecheng kecheng[5];
    float pingjunfen;
    float jiaquanfen;
    Student *next;
} stu[100];
//按平均分比较
int cmp1(const void *s1, const void *s2) {
    return(int)((Student *)s2)->pingjunfen - ((Student *)s1)->pingjunfen;
}
//按加权平均分比较
int cmp2(const void *s1, const void *s2) {
    return((Student *)s2)->jiaquanfen - ((Student *)s1)->jiaquanfen;
}
//按学号比较
int cmp3(const void *s1, const void *s2) {
    return strcmp(((Student *)s1)->xuehao, ((Student *)s2)->xuehao);
}
//按学号搜索
int search1(char * xuehao) {
    for(int i = 0; i < number; i++) {
        if(strcmp(xuehao, stu[i].xuehao) == 0)
            return i;
    }
    return -1;
}
//按姓名搜索
int search2(char * name) {
    for(int i = 0; i < number; i++) {
        if(strcmp(name, stu[i].name) == 0)
            return i;
    }
    return -1;
}

int in_name(int i) {
    printf("输入姓名:(必填 )\n");
    scanf("%s", stu[i].name);
    return 1;
}
int in_xuehao(int i) {
    char xue[20];
    char n1[20];
    printf("输入学号:(必填)\n");
    scanf("%s", xue);
    while(judge(xue) != -2) {
        printf("输入错误!\n");
        printf("继续输入学号请输入1,返回 输入其他\n");
        scanf("%s", n1);
        if(judge(n1) == 1) {
            printf("输入学号:\n");
            scanf("%s", xue);
        } else
            return 0;
    }
    int x = search1(xue);
    if(x != -1) {
        printf("该学号已存在!\n");
        return 0;
    }
    strcpy(stu[i].xuehao, xue);
    return 1;
}
int in_sex(int i) {
    char n1[20];
    char n2[20];
    printf("输入性别:(男输入1,女输入0,不知道输入-10)\n");
    scanf("%s", n1);
    while(judge(n1) != 0 && judge(n1) != 1 && judge(n1) != -10) {
        printf("输入错误!\n");
        printf("重新输入 请输入1,返回 输入其他.\n");
        scanf("%s", n2);
        if(judge(n2) == 1) {
            printf("输入性别:(男输入1,女输入0)\n");
            scanf("%s", n1);
        } else
            return 0;
    }
    stu[i].sex = judge(n1);
    return 1;
}
int in_clas(int i) {
    char n1[20];
    char n2[20];
    printf("输入班级(不知道输入-10)\n");
    scanf("%s", n1);
    while((judge(n1) < 0 || judge(n1) > 20) && judge(n1) != -10) {
        printf("输入错误!\n");
        printf("继续输入班级请输入1,返回 输入其他.\n");
        scanf("%s", n2);
        if(judge(n2) == 1) {
            printf("输入班级\n");
            scanf("%s", n1);
        } else
            return 0;
    }
    stu[i].clas = judge(n1);
    return 1;
}
int in_minzu(int i) {
    printf("输入民族:(不知道输入-10)\n");
    scanf("%s", stu[i].minzu);
    return 1;
}
int in_birth(int i) {
    char n1[20];
    char n2[20];
    char n3[20];
    int p = 1;
    printf("输入出生日期:\n");
    while(p) {
        for(int j = 0; j < 3; j++) {
            switch(j) {
            case 0: printf("输入年:(不知道输入-10)\n"); break;
            case 1: printf("输入月:(不知道输入-10)\n"); break;
            case 2: printf("输入日:(不知道输入-10)\n"); break;
            default: break;
            }
            scanf("%s", n1);
            switch(judge(n1)) {
            case -2:
            case -1: {
                printf("输入错误!\n");
                switch(j) {
                case 0: printf("继续输入年 请输入1,返回 输入其他.\n"); break;
                case 1: printf("继续输入月 请输入1,返回 输入其他.\n"); break;
                case 2: printf("继续输入日 请输入1,返回 输入其他.\n"); break;
                default: break;
                }
                scanf("%s", n2);
                if(judge(n2) == 1) {
                    switch(j) {
                    case 0: printf("输入年:(不知道输入-10)\n"); break;
                    case 1: printf("输入月:(不知道输入-10)\n"); 
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值