| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1084 人关注过本帖, 3 人收藏
标题:学生管理系统成型代码(仅供参考)
只看楼主 加入收藏
七夜天泪
Rank: 2
等 级:论坛游民
帖 子:23
专家分:16
注 册:2016-8-16
结帖率:100%
收藏(3)
 问题点数:0 回复次数:0 
学生管理系统成型代码(仅供参考)
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
#define km 3
int cout = 0;//学生总数
int menu() {
    printf("+==============================+\n");
    printf("|  学 生 管 理 系 统 主 菜 单  |\n");
    printf("+==============================+\n");
    printf("|   1 重新输入所有学生信息     |\n");
    printf("|   2 补入一个学生信息         |\n");
    printf("|   3 输出所有成绩             |\n");
    printf("|   4 查询子系统               |\n");
    printf("|   5 统计汇总子系统           |\n");
    printf("|   6 排序子系统               |\n");
    printf("|   7 修改子系统               |\n");
    printf("+==============================+\n");
    printf("|   0 退出系统                 |\n");
    printf("+==============================+\n");
    printf("请选择功能(1,2,3.....):");
}
int cx() {
    printf("+==============================+\n");
    printf("|    查 询 子 系 统 主 菜 单   |\n");
    printf("+==============================+\n");
    printf("|       1 全量查询             |\n");
    printf("|       2 按学号查询           |\n");
    printf("|       3 按姓名查询           |\n");
    printf("|       4 按班级查询           |\n");
    printf("+==============================+\n");
    printf("|       0 返还上一级           |\n");
    printf("+==============================+\n");
    printf("请选择功能(1,2,3.....):");
}
int xg() {
    printf("+==============================+\n");
    printf("|    修 改 子 系 统 主 菜 单   |\n");
    printf("+==============================+\n");
    printf("|       1 按学号修改           |\n");
    printf("|       2 按姓名修改           |\n");
    printf("|       3 按班级修改           |\n");
    printf("+==============================+\n");
    printf("|       0 返还上一级           |\n");
    printf("+==============================+\n");
    printf("请选择功能(1,2,3.....):");
}
int px() {
    printf("+==============================+\n");
    printf("|     排 序 子 系 统 主 菜 单  |\n");
    printf("+==============================+\n");
    printf("|       1 按姓名排序           |\n");
    printf("|       2 按学号排序           |\n");
    printf("|       3 按班级排序           |\n");
    printf("+==============================+\n");
    printf("|       0 返还上一级           |\n");
    printf("+==============================+\n");
    printf("请选择功能(1,2,3.....):");
}
int tj() {
    printf("+===================================+\n");
    printf("|     统 计 子 系 统 主 菜 单       |\n");
    printf("+===================================+\n");
    printf("|      1 统计某人所有成绩           |\n");
    printf("|      2 统计平均分                 |\n");
    printf("|      3 统计英语平均分以上的人数   |\n");
    printf("+===================================+\n");
    printf("|      0 返还上一级                 |\n");
    printf("+===================================+\n");
    printf("请选择功能(1,2,3.....):");
}
//=================================学生信息================================
typedef struct Student {
    char num[20];            //学号
    char name[40];         //姓名
    char cla[50];              //班级
    int math;
    int english;
    int cLanguage;
    int sum;
    struct Student* next; //指向下一个
} STU;
//============================重新输入信息=============================
STU * Student_prin(STU *head) {
    system("cls");
    STU *q,*p;
    char numinput[20];
    int sum,cout=0;
    head = ( STU *)malloc(sizeof( STU ));
    if( NULL== head ) //若头结点为空,创建链表失败
        return NULL;
    q = head;  //(2)
    printf("请输入学号,直接回车退出!\n");
    gets(numinput);
    while(strlen(numinput) != 0) {
        p =    ( STU *)malloc(sizeof( STU ));  //(3)
        if( NULL== p ) //若结点为空,申请结点失败,则创建链表结束
            return head;
        strcpy(p->num, numinput);
        printf("请输入姓名:\n");
        scanf("%s",p->name) ;
        printf("请输入班级:\n");
        scanf("%s",p->cla) ;
        printf("请输入高数成绩:\n");
        scanf("%d",&p->math);
        printf("请输入英语成绩:\n");
        scanf("%d",&p->english);
        printf("请输入高C语言成绩:\n");
        scanf("%d",&p->cLanguage);
        q->sum=q->english+q->math+q->cLanguage;
        cout++;
        q->next = p;
        q = p;
        printf("请输入学号,直接回车退出!\n");
        //printf("%s,%d\n",__FUNCTION__,__LINE__);
        fflush(stdin);//滤掉scanf未处理的回车符
        gets(numinput);  //为下一个结点做准备
    }
    system("cls");
    q->next = NULL;
    return head;
}
//=================================插入学生信息=========================
void insert(STU *head) {
    fflush(stdin);
    STU *p, *q, *r;
    q = (STU *)malloc(sizeof(STU));
    if(NULL==q) {
        printf("创建失败\n");
        return ;
    }
    r=head;
    p=head->next;
    while(p!=NULL) {
        r=p;
        p=p->next;
    }
    r->next=q;
    printf("请输入插入学生的姓名\n");
    gets(q->name);
    printf("请输入插入学生的学号\n");
    scanf("%lf",&(q->num));
    printf("请输入插入学生的班级\n");
    scanf("%s",(q->cla));
    printf("请依次输入该学生英语,高数,C语言成绩\n");
    scanf("%d%d%d",&(q->english),&(q->math),
          &(q->cLanguage));
    q->sum=q->english+q->math+q->cLanguage;
    q->next=NULL;
    printf("即将返回菜单\n");
    system("cls");
    return ;
}

//===========================输出所有信息==========================
void print(STU *head) {
    system("cls");
    printf("您所需信息如下:\n");
    printf(" 学号\t 姓名\t 班级\t 高数\t 英语\t C语言\t\n") ;
    STU *q,*p;
    p=head->next;
    if(head!=NULL)
        while(p!=NULL) {
            printf(" %s\t %s\t %s\t %d\t %d\t %d\t\n",p->num,p->name,p->cla,p->math,p->english,p->cLanguage);
            p=p->next;
            //count++;
        }
}
//  ===========================查询=======================
//===========================全量===========================
void Print_inquire_all(STU *head) {
    STU *p;
    p=head->next;
    do {   
    printf(" 学号\t 姓名\t 班级\t 高数\t 英语\t C语言\t\n") ;
        printf(" %s\t %s\t %s\t %d\t %d\t %d\n",
               p->num,p->name,p->cla,p->math,p->english,
               p->cLanguage);
        p = p->next;
    } while(p!=NULL);
    printf("\n\n");
}

//=============================按姓名查询==================================
int Print_inquire_name(STU *head) {
    //void menu_print_out(void);
    STU *p;
    p=head->next;
    char str_name[20];
    printf("请输入您要查询的姓名:");
    scanf("%s", str_name);
    // pt = ReadData();
    //menu_print_out();
    do {
        if(strcmp(p->name,str_name)==0) {
            printf("您要查询的信息如下:\n");
                printf(" 学号\t 姓名\t 班级\t 高数\t 英语\t C语言\t\n") ;
            printf(" %s\t %s\t %s\t %d\t %d\t %d\t\n",
                   p->num,p->name,p->cla,p->math,p->english,
                   p->cLanguage);
            printf("\n\n");
            return 0;
        }
        p = p->next;
    } while(p!=NULL);
    printf("数据库中没有存储您要查询的数据!\n");
    printf("\n\n");
    return 0;
}
//===================================按学号查询==========================
int Print_inquire_num(STU *head) {
    //void menu_print_out(void);
    STU *p;
    p=head->next;
    char str_num[10];
    printf("请输入您要查询的学号:");
    scanf("%s", str_num);
    do {
        if(strcmp(p->num,str_num)==0) {
            printf("您要查询的信息如下:\n");
                printf(" 学号\t 姓名\t 班级\t 高数\t 英语\t C语言\t\n") ;
            printf(" %s\t %s\t %s\t  %d\t %d\t %d \n",
                   p->num,p->name,p->cla,p->math,p->english,
                   p->cLanguage);
            printf("\n\n");
            return 0;
        }
        p = p->next;
    } while(p!=NULL);
    printf("数据库中没有存储您要查询的数据!\n");
    printf("\n\n");
    return 0;
}
//============================按班级查询===================================
int Print_inquire_cla(STU *head) {
    //void menu_print_out(void);
    STU *p;
    p=head->next;
    char str_cla[10];
    printf("请输入您要查询的班级:");
    scanf("%s", str_cla);
    do {
        if(strcmp(p->cla,str_cla)==0) {
            printf("您要查询的信息如下:\n");
                printf(" 学号\t 姓名\t 班级\t 高数\t 英语\t C语言\t\n") ;
            printf(" %s\t %s\t %s\t  %d\t %d\t %d \n",
                   p->num,p->name,p->cla,p->math,p->english,
                   p->cLanguage);
            printf("\n\n");
            return 0;
        }
        p = p->next;
    } while(p!=NULL);
    printf("数据库中没有存储您要查询的数据!\n");
    printf("\n\n");
    return 0;
}
//============================查询总控==============================
void menu_inquire(STU* head) {
    //system("cls");
    //getchar();
    system("cls");
    cx();
    int a = 0;
    scanf ("%d",&a);
    while(a!=1 &&a!=2&&a!=3 &&a!=4 &&a!=0 ) {
        printf("error! please input the right number!\n");
        putchar('\a');
        getchar();
        printf("请选择功能(1,2,3.....):\b\b");
        scanf ("%d",&a);
    }
    switch(a) {
        case 1:
            Print_inquire_all(head);
            system("pause");
            getchar();
            break;
        case 2:
            Print_inquire_num(head);
            system("pause");
            getchar();
            break;
        case 3:
            Print_inquire_name(head);
            system("pause");
            getchar();
            break;
        case 4:
            Print_inquire_cla(head);
            system("pause");
            getchar();
            break;
        case 0:
            system("cls");
            //printf("%s,%d\n",__FUNCTION__,__LINE__);
            menu();
            break;
    }
}
// ======================统计=============================
//==================某人所有成绩===========================
void Print_statistical_zf(STU* head) {
    STU *p;
    p=head->next;
    char str_name[20];
    printf("请输入您要统计总分人的姓名:");
    scanf("%s", str_name);
    do {
        if(strcmp(p->name,str_name)==0) {
            p->sum=p->cLanguage+p->english+p->math;
            printf("您要统计该人的总分为:");
            printf("%d\t\n",p->sum);
            printf("\n\n");
            return 0;
        }
        p = p->next;
    } while(p!=NULL);
    printf("数据库中没有存储您需要的数据!\n");
    printf("\n\n");
    return 0;
}
//======================统计某人平均分========================
void Print_statistical_VGE(STU *head) {
    STU *p;
    p=head->next;
    int  sum=0;
    char str_name[20];
    printf("请输入您要统计总分人的姓名:");
    scanf("%s", str_name);
    if(NULL!=p)
        printf("%d\n",(p->cLanguage +p->english +p->math )/3);

    printf("\n\n");
    return 0;

}
//======================高于英语平均分人数====================
void Print_statistical_gy(STU *head) {
    STU *p;
    p=head->next;
    int  s=0;
    while(NULL!=p)
        if(p->cLanguage>60);
    s++;
    printf("%d\n",s);
}
//==========================统计总控===========================
void menu_statistical(STU* head) {
    system("cls");
    tj();
    int a = 0;
    scanf ("%d",&a);
    while(a!=1 &&a!=2&&a!=3 &&a!=0 ) {
        printf("error! please input the right number!\n");
        putchar('\a');
        getchar();
        printf("请选择功能(1,2,3.....):\b\b");
        scanf ("%d",&a);
    }
    switch(a) {
        case 1:
            Print_statistical_zf(head);
            system("pause");
            getchar();
            break;
        case 2:
            Print_statistical_VGE(head);
            system("pause");
            getchar();
            break;
        case 3:
            Print_statistical_gy(head) ;
            system("pause");
            getchar();
            break;
        case 0:
            system("cls");
            //printf("%s,%d\n",__FUNCTION__,__LINE__);
            menu();
            break;
    }
}
// ===============================排序=========================
//=============================按姓名排序=========================
void Print_sort_name(STU *head) {
    int i,n;
    STU *p,*q,*max,temp,*temp_p;
    if(head==NULL) {
        printf("文件未能打开,请重新输入!\n");
        getchar();
        return;
    }
    for(p=head->next; p->next!=NULL; p=p->next) {
        max=p;
        for(q=p->next; q!=NULL; q=q->next) {
            if(max->name<q->name)
                max=q;
        }
        temp=*p;
        *p=*max;
        *max=temp;
        temp_p=max->next;
        max->next=p->next;
        p->next=temp_p;
    }

    for(p=head->next; p!=NULL; p=p->next) {
        printf(" 学号\t 姓名\t 班级\t 高数\t 英语\t C语言\n ") ;
        printf(" %s\t %s\t %s\t %d\t %d\t %d\n",p->num,p->name,p->cla,p->math,p->english,p->cLanguage);

    }
    getchar();
}
//================================按学号排序===========================
void Print_sort_num(STU *head) {
    int i,n;
    STU *p,*q,*max,temp,*temp_p;
    if(head==NULL) {
        printf("文件未能打开,请重新输入!\n");
        getchar();
        return;
    }
    for(p=head->next; p->next!=NULL; p=p->next) {
        max=p;
        for(q=p->next; q!=NULL; q=q->next) {
            if(max->num<q->num)
                max=q;
        }
        temp=*p;
        *p=*max;
        *max=temp;
        temp_p=max->next;
        max->next=p->next;
        p->next=temp_p;
    }

    for(p=head->next; p!=NULL; p=p->next) {
        printf(" 学号\t 姓名\t 班级\t 高数\t 英语\t C语言\n ") ;
        printf(" %s\t %s\t %s\t %d\t %d\t %d\n",p->num,p->name,p->cla,p->math,p->english,p->cLanguage);

    }
    getchar();
}
//==============================按班级排序============================
void Print_sort_cla(STU *head) {
    int i,n;
    STU *p,*q,*max,temp,*temp_p;
    if(head==NULL) {
        printf("文件未能打开,请重新输入!\n");
        getchar();
        return;
    }
    for(p=head->next; p->next!=NULL; p=p->next) {
        max=p;
        for(q=p->next; q!=NULL; q=q->next) {
            if(max->num<q->num)
                max=q;
        }
        temp=*p;
        *p=*max;
        *max=temp;
        temp_p=max->next;
        max->next=p->next;
        p->next=temp_p;
    }

    for(p=head->next; p!=NULL; p=p->next) {
        printf(" 学号\t 姓名\t 班级\t 高数\t 英语\t C语言\n ") ;
        printf(" %s\t %s\t %s\t %d\t %d\t %d\n",p->num,p->name,p->cla,p->math,p->english,p->cLanguage);

    }

    getchar();
}
//=================================排序总控==============================
void menu_sort(STU* head) {
    system("cls");
    px();
    int a = 0;
    scanf ("%d",&a);
    while(a!=1 &&a!=2&&a!=3 &&a!=0 ) {
        printf("error! please input the right number!\n");
        putchar('\a');
        getchar();
        printf("请选择功能(1,2,3.....):\b\b");
        scanf ("%d",&a);
    }
    switch(a) {
        case 1:
            Print_sort_name(head);
            system("pause");
            getchar();
            break;
        case 2:
            Print_sort_num(head);
            system("pause");
            getchar();
            break;
        case 3:
            Print_sort_cla(head) ;
            system("pause");
            getchar();
            break;
        case 0:
            system("cls");
            //printf("%s,%d\n",__FUNCTION__,__LINE__);
            menu();
            break;
    }
}
//========================================修改====================
//====================================按学号修改===================
int Print_Modify_num(STU *head) {
    STU *p;
    p=head->next;
    char str_num[20];
    printf("请输入您要修改的学号:");
    scanf("%s", str_num);
    do {
        if(strcmp(p->num,str_num)==0) {
            printf("该生原信息如下\n");
                printf(" 学号\t 姓名\t 班级\t 高数\t 英语\t C语言\t\n") ;
            printf(" %s\t %s\t %s\t  %d\t %d\t %d \n",
                   p->num,p->name,p->cla,p->math,p->english,
                   p->cLanguage);
            printf("\n\n");
            printf("请输入修改后的信息\n");
            printf("按照学号姓名班级高数英语C语言成绩输入中间加空格\n");
            scanf("%s %s %s %d %d %d",p->num,p->name,p->cla,&p->math,&p->english,&p->cLanguage);
            printf("修改后信息如下\n");
                printf(" 学号\t 姓名\t 班级\t 高数\t 英语\t C语言\t\n") ;
            printf(" %s\t %s\t %s\t  %d\t %d\t %d\t\n",
                   p->num,p->name,p->cla,p->math,p->english,
                   p->cLanguage);
            return 0;
        }
        p = p->next;
    } while(p!=NULL);
    printf("数据库中没有存储您要查询的数据!\n");
    printf("\n\n");
    return 0;
}
//======================按姓名修改=========================
int Print_Modify_name(STU *head) {
    STU *p;
    p=head->next;
    char str_name[20];
    printf("请输入您要修改的姓名:");
    scanf("%s", str_name);
    do {
        if(strcmp(p->name,str_name)==0) {
            printf("该生原信息如下\n");
                printf(" 学号\t 姓名\t 班级\t 高数\t 英语\t C语言\t\n") ;
            printf(" %s\t %s\t %s\t  %d\t %d\t %d\t\n",
                   p->num,p->name,p->cla,p->math,p->english,
                   p->cLanguage);
            printf("\n\n");
            printf("请输入修改后的信息\n");
            printf("按照学号姓名班级高数英语C语言成绩输入中间加空格\n");
            scanf("%s %s %s %d %d %d",p->num,p->name,p->cla,&p->math,&p->english,&p->cLanguage);
            printf("修改后信息如下\n");
                printf(" 学号\t 姓名\t 班级\t 高数\t 英语\t C语言\t\n") ;
            printf(" %s\t %s\t %s\t  %d\t %d\t %d\t\n",
                   p->num,p->name,p->cla,p->math,p->english,
                   p->cLanguage);
            return 0;
        }
        p = p->next;
    } while(p!=NULL);
    printf("数据库中没有存储您要查询的数据!\n");
    printf("\n\n");
    return 0;
}
//=============================按班级修改=============================
int Print_Modify_cla(STU *head) {
    STU *p;
    p=head->next;
    char str_cla[20];
    printf("请输入您要修改的姓名:");
    scanf("%s", str_cla);
    do {
        if(strcmp(p->cla,str_cla)==0) {
            printf("该生原信息如下\n");
                printf(" 学号\t 姓名\t 班级\t 高数\t 英语\t C语言\t\n") ;
            printf(" %s\t %s\t %s\t  %d\t %d\t %d\t\n",
                   p->num,p->name,p->cla,p->math,p->english,
                   p->cLanguage);
            printf("\n\n");
            printf("请输入修改后的信息\n");
            printf("按照学号姓名班级高数英语C语言成绩输入中间加空格\n");
            scanf(" %s %s %s %d %d %d",p->num,p->name,p->cla,&p->math,&p->english,&p->cLanguage);
            printf("修改后信息如下\n");
                printf(" 学号\t 姓名\t 班级\t 高数\t 英语\t C语言\t\n") ;
            printf(" %s\t %s\t %s\t  %d\t %d\t %d\t\n",
                   p->num,p->name,p->cla,p->math,p->english,
                   p->cLanguage);
            return 0;
        }
        p = p->next;
    } while(p!=NULL);
    printf("数据库中没有存储您要查询的数据!\n");
    printf("\n\n");
    return 0;
}
//===================================修改总控===============================
void menu_Modify(STU* head) {
    system("cls");
    xg();
    int a = 0;
    scanf ("%d",&a);
    while(a!=1 &&a!=2&&a!=3  &&a!=0 ) {
        printf("error! please input the right number!\n");
        putchar('\a');
        getchar();
        printf("请选择功能(1,2,3.....):\b\b");
        scanf ("%d",&a);
    }
    switch(a) {
        case 1:
            Print_Modify_num(head);
            system("pause");
            getchar();
            break;
        case 2:
            Print_Modify_name(head);
            system("pause");
            getchar();
            break;
        case 3:
            Print_Modify_cla(head) ;
            system("pause");
            getchar();
            break;
        case 0:
            system("cls");
            //printf("%s,%d\n",__FUNCTION__,__LINE__);
            menu();
            break;
    }
}
int main() {
    int n;
    STU *head=NULL;
    menu();
    while(1) {
        scanf("%d",&n);
        getchar();
        switch(n) {
            case 1:
                head = Student_prin(head);
                menu();
                break;
            case 2:

                insert(head);
                menu();
                break;
            case 3:
                print(head);
                menu();
                break;
            case 4:
                menu_inquire(head);
                menu();
                break;
            case 5:
                menu_statistical(head)    ;
                break;
            case 6:
                menu_sort(head)    ;
                menu();
                break;
            case 7:
                menu_Modify(head)    ;
                menu();
                break;
            case 0:
                exit(0);
                break;
        }
    }
}
搜索更多相关主题的帖子: 管理系统 include 统计 信息 
2016-09-08 09:48
快速回复:学生管理系统成型代码(仅供参考)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019055 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved