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("************************************************************************************************************************\n");
    printf("*                                                                                                                      *\n");
    printf("*                                                                                                                      *\n");
    printf("*                                             歡迎使用成績查詢系統!                                                       *\n");
    printf("*                                                                                                                      *\n");
    printf("*                                                                                                                      *\n");
    printf("*                 1. 【登錄】                                                                                           *\n");
    printf("*                 2. 【注冊】                                                                                           *\n");
    printf("*                 3. 【退出系統】                                                                                        *\n");
    printf("*                                                                                                                      *\n");
    printf("*                                                                                                                      *\n");
    printf("*                                                                                                                      *\n");
    printf("************************************************************************************************************************\n");
    system("color 2F");             /*綠色背景*/
    int a;
    printf("請選擇服務,並輸入對應數字\n");
    scanf("%d",&a);
    if(a!=1&&a!=2&&a!=3)
    {
        printf("輸入數字不合法,再給你一次機會,請重新輸入\n");
        scanf("%d",&a);

    }
    switch(a)
    {
    case 1:
        system("cls");
        printf("歡迎進入【登錄】頁面\n");
        DengLu();
        break;
    case 2:
        system("cls");
        printf("歡迎進入【注冊】頁面\n");
        ZhuCe();
        break;
    case 3:
        system("cls");
        printf("謝謝惠顧,O(∩_∩)O拜拜~\n");
        break;

    }

    return 0;

}
/********************注冊*********************/
int ZhuCe()
{
    FILE *PN;                                          /*定義文件指針*/
    if((PN=fopen("PassWord.txt","ab+"))==NULL)         /*打開存放密碼的文件*/
    {
        printf("創建密碼文件失敗!\n");
    }
    if((fread(&PASSWORD,sizeof(PASSWORD),1,PN))==1)    /*判斷文件中是否已存有密碼*/
    {
        fclose(PN);
        printf("注冊已完成,不可重復注冊。\n【重新注冊】請刪去密碼文件中內容。\n");
        printf("按<Enter>鍵返回主頁面………………");
        getch();                                 /*停頓一下*/
        system("cls");
        main();
    }
    else
    {
        char Name[10];                           /*用戶名*/
        char Password1[10];
        char Password2[10];
        printf("請設置初始用戶名:");
        scanf("%s",Name);
        printf("\n請設置密碼【6位數字】:");      /*輸入一次密碼*/
        scanf("%s",Password1);
        printf("\n請確認密碼【6位數字】:");      /*再次確認*/
        scanf("%s",Password2);
        if((strcmp(Password1,Password2))==0)     /*比較兩次輸入是否相同密碼*/
        {
            printf("確認密碼成功!\n");
            if((fwrite(&Password1,sizeof(Password1),1,PN))==1)   /*把輸入的密碼存到文件中去*/
            {
                printf("恭喜,注冊成功!\n");
                printf("按<Enter>鍵返回主頁面………………");
                fclose(PN);                      /*關閉文件防止信息丟失*/
                getch();
                system("cls");                   /*清屏*/
                main();
            }
            else
            {
                printf("密碼無法保存,注冊失敗!\n");
                system("color 40");
                printf("按<Enter>鍵返回主頁面………………");
                fclose(PN);
                getch();
                system("cls");
                main();
            }


        }

        else
        {
            printf("兩次密碼輸入不同,注冊失敗!\n");
            system("color 40");
            printf("按<Enter>鍵返回主頁面………………\n");
            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("打開密碼文件失敗!\n");
        system("color 40");                          /*紅色背景以示警告*/
        printf("按<Enter>鍵返回主頁面………………\n");
        fclose(PN);
        getch();
        system("cls");
        main();
    }
    printf(">>歡迎您的登陸<<\n");
    printf("請輸入用戶名:");
    scanf("%s",name);
    printf("\n請輸入密碼:");
    scanf("%s",password);
    fscanf(PN,"%s",PASSWORD);                       /*從文件中讀一個密碼賦給PASSWORD*/
    if((strcmp(password,PASSWORD))==0)              /*驗證密碼*/
    {
        printf("密碼正確,登錄成功!\n");
        printf("¥五毛錢 的特效送給你\n");
        fclose(PN);
        GongNeng();
        return 0;
    }
    else
    {
        printf("無此用戶!!!\n");
        printf("再見!\n");
        system("color 40");                         /*紅色背景以示警告*/
        printf("按<Enter>鍵返回主頁面………………\n");
        fclose(PN);
        getch();
        system("cls");
        main();
    }
    fclose(PN);
    return 0;


}
/********************功能選擇******************/
int GongNeng()
{
    printf("************************************************************************************************************************\n");
    printf("*                                                                                                                      *\n");
    printf("*                                                                                                                      *\n");
    printf("*                                  尊敬的VIP用戶,請選擇服務!                                                               *\n");
    printf("*                                                                                                                      *\n");
    printf("*                                                                                                                      *\n");
    printf("*                     1. 【成績錄入】                    4. 【修改成績】                                                   *\n");
    printf("*                     2. 【刪除成績】                    5. 【查看排名】                                                   *\n");
    printf("*                     3. 【成績查詢】                    6. 【退出系統】                                                   *\n");
    printf("*                                                                                                                      *\n");
    printf("*                                                                                                                      *\n");
    printf("*                                                                                                                      *\n");
    printf("************************************************************************************************************************\n");
    system("color 2F");
    int b;
    printf("請選擇服務,並輸入對應數字\n");
    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("文件打開出錯!!!\n");
    }
    while(!feof(fp))                           /*文件未指到末尾返回0,以此為判斷條件【計數】*/
    {
        if(fread(&stu[m],LEN,1,fp)==1)
        {
            m++;
        }

    }
    if(m==0)
    {
        printf("暫無數據\n");
    }
    else
    {
        system("cls");
        printf(">>當前共有%d條數據\n",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 保存成功!\n",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("恭喜,錄入學生成績成功!\n");
    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(">>刪除成績<<\n");
    if((fp=fopen("student.txt","ab+"))==NULL)
    {
        printf("打開學生成績文件失敗!\n");
        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】成績\n",id);
        getch();
        return 0;
    }
    printf("已找到%s的成績,是否刪除:\n",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("刪除成功!\n");
    }
    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("恭喜,保存成功!\n");
        XianShi();
        getch();
    }
    return 0;
}
/******************顯示成績*****************/
int XianShi()
{
    printf("【學號】       【姓名】   【性別】   【班級】    【專業】        【數學】    【英語】    【思政】  【總分】\n");

    for(int k=0; k<m; k++)
    {
        printf(" %s           %s       %s     %s      %s     %.1lf      %.1lf    %.1lf       %.1lf\n",DJ);
    }
}
/******************成績查詢*****************/
int ChaXun()
{
    FILE *fp;
    int p;
    char iid[20];
    printf(">>成績查詢<<\n");
    if((fp=fopen("student.txt","ab+"))==NULL)
    {
        printf("打開學生成績文件失敗!\n");
        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】成績不存在\n",iid);
        getch();
        return 0;
    }
    printf(">>查詢成功!\n");
    printf("【學號】       【姓名】   【性別】   【班級】    【專業】        【數學】    【英語】    【思政】    【總分】\n");
    printf(" %s           %s       %s     %s      %s     %.1lf      %.1lf    %.1lf       %.1lf\n",dj);
    return 0;
}
/*******************成績修改******************/
int XiuGai()
{
    FILE *fp;
    int q;
    char iiid[20];
    printf(">>修改成績<<\n");
    if((fp=fopen("student.txt","ab+"))==NULL)
    {
        printf("打開學生成績文件失敗!\n");
        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】成績\n",iiid);
        getch();
        return 0;
    }
    printf("已找到%s的成績,是否修改:\n",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("修改成功!\n");

    }
    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(">>成績排序<<\n");
    if((fp=fopen("student.txt","ab+"))==NULL)
    {
        printf("打開學生成績文件失敗!\n");
        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("【學號】       【姓名】   【性別】   【班級】    【專業】        【數學】    【英語】    【思政】  【總分】\n");
    for (int s=0; s<m; s++)
    {
        printf(" %s           %s       %s     %s      %s     %.1lf      %.1lf    %.1lf       %.1lf\n",SDJ);
    }

    getch();
    return 0;
}







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM