zoukankan      html  css  js  c++  java
  • C语言程序设计#成绩查询系统

    学生成绩管理系统

    【注释】:请点赞,好人一生平[yi]安[wo]。

    #codeblocks程序下编写

    #include<stdio.h>
    #include<stdlib.h>//颜色
    #include<conio.h>//清屏
    #include<string.h>
    #define LEN sizeof(struct student)
    #define SDJ stu[s].ID,stu[s].name,stu[s].sex,stu[s].Class,stu[s].major,stu[s].SX,stu[s].YY,stu[s].CYY,stu[s].sum/**/
    #define DJ stu[k].ID,stu[k].name,stu[k].sex,stu[k].Class,stu[k].major,stu[k].SX,stu[k].YY,stu[k].CYY,stu[k].sum
    #define dj stu[p].ID,stu[p].name,stu[p].sex,stu[p].Class,stu[p].major,stu[p].SX,stu[p].YY,stu[p].CYY,stu[p].sum
    using namespace std;
        int DengLu();          /*登录*/
        int PaiXu();           /*排序*/
        int XiuGai();          /*修改*/
        int XianShi();         /*显示*/
        int LuRu();            /*录入*/
        int ShanChu();         /*删除*/
        int GongNeng();        /*功能选择*/
        int ZhuCe();           /*注册*/
        int ChaXun();          /*查询*/
        int m=0;               /*数据条数*/
        char sr[1];            /*存放输入的判断字母的密码*/
        char PASSWORD[10];     /*存放输入的密码*/
    /******************学生结构体*****************/
        typedef struct student
        {
            char name[20] ;      /*姓名*/
            char sex[20];        /*性别*/
            char Class[20];      /*班级*/
            char ID[20];         /*学号*/
            char major[20];      /*专业*/
            double SX,YY,CYY,sum;/*数学,英语,c语言,总分*/

        } typel;
    typel stu[100];
    /********************主函数*****************/
    int main()
    {
        printf("************************************************************************************************************************ ");
        printf("*                                                                                                                      * ");
        printf("*                                                                                                                      * ");
        printf("*                                             欢迎使用成绩查询系统!                                                       * ");
        printf("*                                                                                                                      * ");
        printf("*                                                                                                                      * ");
        printf("*                 1. 【登录】                                                                                           * ");
        printf("*                 2. 【注册】                                                                                           * ");
        printf("*                 3. 【退出系统】                                                                                        * ");
        printf("*                                                                                                                      * ");
        printf("*                                                                                                                      * ");
        printf("*                                                                                                                      * ");
        printf("************************************************************************************************************************ ");
        system("color 2F");             /*绿色背景*/
        int a;
        printf("请选择服务,并输入对应数字 ");
        scanf("%d",&a);
        if(a!=1&&a!=2&&a!=3)
        {
            printf("输入数字不合法,再给你一次机会,请重新输入 ");
            scanf("%d",&a);

        }
        switch(a)
        {
        case 1:
            system("cls");
            printf("欢迎进入【登录】页面 ");
            DengLu();
            break;
        case 2:
            system("cls");
            printf("欢迎进入【注册】页面 ");
            ZhuCe();
            break;
        case 3:
            system("cls");
            printf("谢谢惠顾,O(∩_∩)O拜拜~ ");
            break;

        }

        return 0;

    }
    /********************注册*********************/
    int ZhuCe()
    {
        FILE *PN;                                          /*定义文件指针*/
        if((PN=fopen("PassWord.txt","ab+"))==NULL)         /*打开存放密码的文件*/
        {
            printf("创建密码文件失败! ");
        }
        if((fread(&PASSWORD,sizeof(PASSWORD),1,PN))==1)    /*判断文件中是否已存有密码*/
        {
            fclose(PN);
            printf("注册已完成,不可重复注册。 【重新注册】请删去密码文件中内容。 ");
            printf("按<Enter>键返回主页面………………");
            getch();                                 /*停顿一下*/
            system("cls");
            main();
        }
        else
        {
            char Name[10];                           /*用户名*/
            char Password1[10];
            char Password2[10];
            printf("请设置初始用户名:");
            scanf("%s",Name);
            printf(" 请设置密码【6位数字】:");      /*输入一次密码*/
            scanf("%s",Password1);
            printf(" 请确认密码【6位数字】:");      /*再次确认*/
            scanf("%s",Password2);
            if((strcmp(Password1,Password2))==0)     /*比较两次输入是否相同密码*/
            {
                printf("确认密码成功! ");
                if((fwrite(&Password1,sizeof(Password1),1,PN))==1)   /*把输入的密码存到文件中去*/
                {
                    printf("恭喜,注册成功! ");
                    printf("按<Enter>键返回主页面………………");
                    fclose(PN);                      /*关闭文件防止信息丢失*/
                    getch();
                    system("cls");                   /*清屏*/
                    main();
                }
                else
                {
                    printf("密码无法保存,注册失败! ");
                    system("color 40");
                    printf("按<Enter>键返回主页面………………");
                    fclose(PN);
                    getch();
                    system("cls");
                    main();
                }


            }

            else
            {
                printf("两次密码输入不同,注册失败! ");
                system("color 40");
                printf("按<Enter>键返回主页面……………… ");
                fclose(PN);
                getch();
                system("cls");
                main();



            }
        }
        fclose(PN);
        return 0;
    }

    /*********************登录********************/
    int DengLu()
    {
        FILE *PN;
        char password[10],name[10];
        PN=fopen("PassWord.txt","a+");
        if(PN==NULL)
        {
            printf("打开密码文件失败! ");
            system("color 40");                          /*红色背景以示警告*/
            printf("按<Enter>键返回主页面……………… ");
            fclose(PN);
            getch();
            system("cls");
            main();
        }
        printf(">>欢迎您的登陆<< ");
        printf("请输入用户名:");
        scanf("%s",name);
        printf(" 请输入密码:");
        scanf("%s",password);
        fscanf(PN,"%s",PASSWORD);                       /*从文件中读一个密码赋给PASSWORD*/
        if((strcmp(password,PASSWORD))==0)              /*验证密码*/
        {
            printf("密码正确,登录成功! ");
            printf("¥五毛钱 的特效送给你 ");
            fclose(PN);
            GongNeng();
            return 0;
        }
        else
        {
            printf("无此用户!!! ");
            printf("再见! ");
            system("color 40");                         /*红色背景以示警告*/
            printf("按<Enter>键返回主页面……………… ");
            fclose(PN);
            getch();
            system("cls");
            main();
        }
        fclose(PN);
        return 0;


    }
    /********************功能选择******************/
    int GongNeng()
    {
        printf("************************************************************************************************************************ ");
        printf("*                                                                                                                      * ");
        printf("*                                                                                                                      * ");
        printf("*                                  尊敬的VIP用户,请选择服务!                                                               * ");
        printf("*                                                                                                                      * ");
        printf("*                                                                                                                      * ");
        printf("*                     1. 【成绩录入】                    4. 【修改成绩】                                                   * ");
        printf("*                     2. 【删除成绩】                    5. 【查看排名】                                                   * ");
        printf("*                     3. 【成绩查询】                    6. 【退出系统】                                                   * ");
        printf("*                                                                                                                      * ");
        printf("*                                                                                                                      * ");
        printf("*                                                                                                                      * ");
        printf("************************************************************************************************************************ ");
        system("color 2F");
        int b;
        printf("请选择服务,并输入对应数字 ");
        long time;
     /*******************************************************************************¥五毛钱 的特效******************************************************************************/
        for (;;)
        {
            system("color a");                      /*第一个16进制数字代表字体颜色(下同)*/
            for (time = 0; time<99999999; time++);  /*循环以控制该颜色存在时间*/
            system("color b");
            for (time = 0; time<99999999; time++);
            system("color c");
            for (time = 0; time<99999999; time++);
            system("color d");
            for (time = 0; time<99999999; time++);
            system("color e");
            for (time = 0; time<99999999; time++);
            system("color f");
            for (time = 0; time<99999999; time++);
            system("color 0");
            for (time = 0; time<99999999; time++);
            system("color 1");
            for (time = 0; time<99999999; time++);
            system("color 2");
            for (time = 0; time<99999999; time++);
            system("color 3");
            for (time = 0; time<99999999; time++);
            system("color 4");
            for (time = 0; time<99999999; time++);
            system("color 5");
            for (time = 0; time<99999999; time++);
            system("color 6");
            for (time = 0; time<99999999; time++);
            system("color 7");
            for (time = 0; time<99999999; time++);
            system("color 8");
            for (time = 0; time<99999999; time++);
            system("color 9");
            break;
        }
    /******************************************************************************************************************************************************************************/
        system("color 2F");    /*恢复主题绿色*/
        scanf("%d",&b);
        getchar();
        switch(b)              /*选择功能*/
        {
        case 1:
            system("cls");
            LuRu();
            break;
        case 2:
            system("cls");
            ShanChu();
            break;
        case 3:
            system("cls");
            ChaXun();
            break;
        case 4:
            system("cls");
            XiuGai();
            break;
        case 5:
            system("cls");
            PaiXu();
            break;
        case 6:
            system("cls");
            return 0;
            break;

        }
        return 0;
    }
    /***************************成绩录入****************************/
    int LuRu()
    {
        m=0;
        FILE *fp;
        if((fp=fopen("student.txt","ab+"))==NULL)  /*以读写方式打开文件*/
        {
            printf("文件打开出错!!! ");
        }
        while(!feof(fp))                           /*文件未指到末尾返回0,以此为判断条件【计数】*/
        {
            if(fread(&stu[m],LEN,1,fp)==1)
            {
                m++;
            }

        }
        if(m==0)
        {
            printf("暂无数据 ");
        }
        else
        {
            system("cls");
            printf(">>当前共有%d条数据 ",m);     /*输出当前数据条数*/
            fclose(fp);
        }
        if((fp=fopen("student.txt","ab+"))==NULL)
        {
            printf("文件打开出错!!!");
            getch();
        }
        printf("请确认是【Y】否【N】录入学生信息:");
        scanf("%s",sr);
        while(strcmp(sr,"Y")==0||strcmp(sr,"y")==0)/*录入学生信息*/
        {
            printf("请输入姓名:");
            scanf("%s",stu[m].name);
            printf("请输入性别:");
            scanf("%s",stu[m].sex);
            printf("请输入班级:");
            scanf("%s",stu[m].Class);
            printf("请输入学号:");
            scanf("%s",stu[m].ID);
            printf("请输入专业:");
            scanf("%s",stu[m].major);
            printf("请输入数学成绩:");
            scanf("%lf",&stu[m].SX);
            printf("请输入英语成绩:");
            scanf("%lf",&stu[m].YY);
            printf("请输入C语言成绩:");
            scanf("%lf",&stu[m].CYY);
            stu[m].sum=stu[m].SX+stu[m].YY+stu[m].CYY;
            if(fwrite(&stu[m],LEN,1,fp)!=1)      /*将新录入的信息写入指定的磁盘文件*/
            {

                printf("对不起,不能保存!");

                getch();

            }

            else

            {

                printf("%s 保存成功! ",stu[m].name);
                printf("还继续输吗?(Y/N):");    /*询问是否继续*/
                scanf("%s",sr);
                if(strcmp(sr,"Y")==0||strcmp(sr,"y")==0)/*为存下一个数据开空间*/
                {
                    m++;
                }

            }
        }
        /*if(strcmp(sr,"Y")!=0&&strcmp(sr,"y")!=0)
        {
            GongNeng();
           // return 0;
        }*/
        fclose(fp);                               /*关闭文件防止信息丢失*/
        printf("恭喜,录入学生成绩成功! ");
        XianShi();getch();
        if(strcmp(sr,"Y")!=0&&strcmp(sr,"y")!=0)
        {
            system("cls");
            GongNeng();
           // return 0;
        }

    }
    /******************成绩的删除*****************/
    int ShanChu()
    {
        FILE *fp;
        int i,j;
        char id[20];
        printf(">>删除成绩<< ");
        if((fp=fopen("student.txt","ab+"))==NULL)
        {
            printf("打开学生成绩文件失败! ");
            getch();
        }
        m=0;                                     /*重新计数,确保能够独立运行。*/
        while(!feof(fp))                         /*文件指针未达到末尾返回0*/

        {
            if(fread(&stu[m],LEN,1,fp)==1)       /*判断读取一个单位字节是否成功*/
            {
                m=m+1;
            }
                                                 /*统计当前记录条数*/

        }
        fclose(fp);
        XianShi();
        if(m==0)
        {
            printf("没有成绩可删,请先录入成绩!");
            getch();
        }
        printf("请输入要删除学生的学号:");
        scanf("%s",&id);
        for(i=0; i<m; i++)                      /*检索学号*/
        {
            if(strcmp(id,stu[i].ID)==0)
            {
                break;
            }
        }
        if(i==m)                                 /*检索结束未找到信息*/
        {
            printf("未找到该学生【%s】成绩 ",id);
            getch();
            return 0;
        }
        printf("已找到%s的成绩,是否删除: ",stu[i].name);
        scanf("%s",sr);
        if(strcmp(sr,"Y")==0||strcmp(sr,"y")==0)
        {
            for(j=i; j<(m-1); j++)
            {
                stu[j]=stu[j+1];//把该学生后的数据向前移动1位
            }
            m=m-1;//数据组总数减一
            printf("删除成功! ");
        }
        else
        {
            return 0;
        }
        if((fp=fopen("student.txt","wb"))==NULL)
        {
            printf("无法打开文件,保存信息失败!");
            getch();
        }
        int u;
        for(u=0; u<m; u++)               /*把改动的文件重新录入文件*/
        {
            fwrite(&stu[u],LEN,1,fp);
        }
        if(u==m)
        {
            printf("恭喜,保存成功! ");
            XianShi();
            getch();
        }
        return 0;
    }
    /******************显示成绩*****************/
    int XianShi()
    {
        printf("【学号】       【姓名】   【性别】   【班级】    【专业】        【数学】    【英语】    【思政】  【总分】 ");

        for(int k=0; k<m; k++)
        {
            printf(" %s           %s       %s     %s      %s     %.1lf      %.1lf    %.1lf       %.1lf ",DJ);
        }
    }
    /******************成绩查询*****************/
    int ChaXun()
    {
        FILE *fp;
        int p;
        char iid[20];
        printf(">>成绩查询<< ");
        if((fp=fopen("student.txt","ab+"))==NULL)
        {
            printf("打开学生成绩文件失败! ");
            getch();
        }
        m=0;//重新计数,
        while(!feof(fp))//文件指针未达到末尾返回0

        {
            if(fread(&stu[m],LEN,1,fp)==1)//判断读取一个单位字节是否成功
            {
                m=m+1;
            }
            /*统计当前记录条数*/

        }
        fclose(fp);
        if(m==0)
        {
            printf("没有成绩可查,请先录入成绩!");
            getch();
        }
        printf("请输入要查询学生的学号:");
        scanf("%s",&iid);
        for(p=0; p<m; p++)
        {
            if(strcmp(iid,stu[p].ID)==0)
            {
                break;
            }
        }
        if(p==m)
        {
            printf("【%s】成绩不存在 ",iid);
            getch();
            return 0;
        }
        printf(">>查询成功! ");
        printf("【学号】       【姓名】   【性别】   【班级】    【专业】        【数学】    【英语】    【思政】    【总分】 ");
        printf(" %s           %s       %s     %s      %s     %.1lf      %.1lf    %.1lf       %.1lf ",dj);
        return 0;
    }
    /*******************成绩修改******************/
    int XiuGai()
    {
        FILE *fp;
        int q;
        char iiid[20];
        printf(">>修改成绩<< ");
        if((fp=fopen("student.txt","ab+"))==NULL)
        {
            printf("打开学生成绩文件失败! ");
            getch();
        }
        m=0;//重新计数,确保能够独立运行。
        while(!feof(fp))//文件指针未达到末尾返回0

        {
            if(fread(&stu[m],LEN,1,fp)==1)//判断读取一个单位字节是否成功
            {
                m=m+1;
            }
            /*统计当前记录条数*/

        }
        fclose(fp);
        XianShi();
        if(m==0)
        {
            printf("没有成绩可修改,请先录入成绩!");
            getch();
            return 0;
        }
        printf("请输入要修改学生的学号:");
        scanf("%s",&iiid);
        for(q=0; q<m; q++)
        {
            if(strcmp(iiid,stu[q].ID)==0)
            {
                break;
            }
        }
        if(q==m)
        {
            printf("未找到该学生【%s】成绩 ",iiid);
            getch();
            return 0;
        }
        printf("已找到%s的成绩,是否修改: ",stu[q].name);
        scanf("%s",sr);
        if(strcmp(sr,"Y")==0||strcmp(sr,"y")==0)
        {
            printf("请输入姓名:");
            scanf("%s",stu[q].name);
            printf("请输入性别:");
            scanf("%s",stu[q].sex);
            printf("请输入班级:");
            scanf("%s",stu[q].Class);
            printf("请输入学号:");
            scanf("%s",stu[q].ID);
            printf("请输入专业:");
            scanf("%s",stu[q].major);
            printf("请输入数学成绩:");
            scanf("%lf",&stu[q].SX);
            printf("请输入英语成绩:");
            scanf("%lf",&stu[q].YY);
            printf("请输入C语言成绩:");
            scanf("%lf",&stu[q].CYY);
            stu[q].sum=stu[q].SX+stu[q].YY+stu[q].CYY;
            printf("修改成功! ");

        }
        else
        {
            return 0;
        }
        if((fp=fopen("student.txt","wb"))==NULL)
        {
            printf("无法打开文件,保存信息失败!");
            getch();
            return 0;
        }
        int o;
        for(o=0;o<m;o++)
        {
            fwrite(&stu[o],LEN,1,fp);        /*把改动的文件重新录入文件*/
        }
        if(o==m)
        {
            printf("恭喜,保存成功!");
        }


        return 0;
    }
    /********************成绩排序******************/
    int PaiXu()
    {
        FILE *fp;
        printf(">>成绩排序<< ");
        if((fp=fopen("student.txt","ab+"))==NULL)
        {
            printf("打开学生成绩文件失败! ");
            getch();
        }
        m=0;//重新计数,不依赖输入函数。
        while(!feof(fp))//文件指针未达到末尾返回0

        {
            if(fread(&stu[m],LEN,1,fp)==1)//判断读取一个单位字节是否成功
            {
                m=m+1;
            }
            /*统计当前记录条数*/

       }
        fclose(fp);
        if(m==0)
        {
            printf("没有成绩可排序,请先录入成绩!");
            getch();
        }
        typel t;
        for(int w=0;w<m;w++)          /*FOR循环排序*/
        {
            for(int c=w;c<m;c++)
            {
              if(stu[w].sum<stu[c].sum)
              {
                  t=stu[w];
                  stu[w]=stu[c];
                  stu[c]=t;
              }
            }
        }
        printf("【学号】       【姓名】   【性别】   【班级】    【专业】        【数学】    【英语】    【思政】  【总分】 ");
        for (int s=0; s<m; s++)
        {
            printf(" %s           %s       %s     %s      %s     %.1lf      %.1lf    %.1lf       %.1lf ",SDJ);
        }

        getch();
        return 0;
    }







    ________________________________________________________

    Every good deed you do will someday come back to you.

    Love you,love word !
  • 相关阅读:
    面向对象概述(课堂笔记)
    final
    static方法
    Ubuntu中Qt5.7.0无法输入中文
    Ubuntu中Qt+opencv图像显示
    Ubuntu中Qt新建窗体提示lGL错误
    Ubuntu中Qt5.7.0的安装及opencv2.4.13配置
    Ubuntu16.04删除客人会话
    ffmpeg的安装--opencv视频处理必备
    CentOS+OpenCV图像的读入、显示
  • 原文地址:https://www.cnblogs.com/hugboy/p/12063649.html
Copyright © 2011-2022 走看看