⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 evo03.cpp

📁 学籍管理
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    int crcl_num,i,j,crcl_ccl,ef,chg;
    char c,c_stat[3][9]={"未开通","开通","停止选课"}; 
    system("CLS");
    fpcrcl=fopen("data\\crcl.txt","r+");
    if (fpcrcl==NULL)
    {
        fpcrcl=fopen("data\\crcl.txt","w+");
        fprintf(fpcrcl,"0\n");
        rewind(fpcrcl);
    }
    fscanf(fpcrcl,"%d",&crcl_num);
    for (i=0;i<crcl_num;i++)
    fscanf(fpcrcl," $%[^$]$%[^$]$%f$%[^$]$%[^$]$%[^$]$%d$%d$%d$",crcl[i].cnum,crcl[i].cname,&crcl[i].cscore,crcl[i].cteacher
    ,crcl[i].croom,crcl[i].ckkr,&crcl[i].cstat,&crcl[i].ctotal,&crcl[i].ccurrent);
    for (i=0;i<stu_num;i++)
    {
        fscanf(fpcrcl,"%f",&stu_score[i]);
        for (j=0;j<crcl_num;j++)
        fscanf(fpcrcl,"%d",&crcl_stu[i][j]);
    }
    while (1)
    {
        system("CLS"); 
        printf ("%6s%12s%12s%8s%12s%10s%20s\n","序号","班号","科目名","学分数","任课老师","选课状态","当前学生数/学生上限");
        printf ("________________________________________________________________________________\n\n");
        for (i=0;i<crcl_num;i++)
        printf ("%6d%12s%12s%8.1f%12s%10s%10d/%-3d\n",i+1,crcl[i].cnum,crcl[i].cname,crcl[i].cscore,crcl[i].cteacher,
        c_stat[crcl[i].cstat],crcl[i].ccurrent,crcl[i].ctotal);
        printf ("\n________________________________________________________________________________\n");
        while (1)
        {
            cout<<"请输入要查看的班的序号,输入0返回主菜单\n";
            cin>>ef;
            if (ef==0) 
            return 0;
            if (ef<0||ef>crcl_num)
            {
                cout<<"无效的序号,请再次输入\n\n";
            }
            else
            break; 
        }
        ef--;
        {
            crcl_ccl=1;
            while (crcl_ccl)
            {
                chg=0;
                system("CLS");
                printf("班号:%16s12%s\n",crcl[ef].cnum,crcl[ef].cname);
                printf("学分:%16.1f\n",crcl[ef].cscore);
                printf("任课老师:%12s      上课课室:%12s\n",crcl[ef].cteacher,crcl[ef].croom);
                printf("开课人:%14s      开课状态:%12s\n",crcl[ef].ckkr,c_stat[crcl[ef].cstat]);
                printf("\n上课学生(%d)\n",crcl[ef].ccurrent);
                printf("%12s%12s%6s%12s\n","学号","姓名","性别","专业");
                printf("________________________________________________________________________________\n\n");
                for (i=0;i<stu_num;i++)
                {
                    if (crcl_stu[i][ef]==3)
                    printf ("%12s%12s%6s%12s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].pro);
                }
                printf("________________________________________________________________________________\n");
                printf("A=选课\n"); 
                printf("按X键返回课程列表\n");
                fflush(stdin);
                cin.clear();
                while(c=getch(),c!='X'&&c!='x'&&c!='a'&&c!='A')
                ;
                if (c=='x'||c=='X')
                crcl_ccl=0;
                if ((c=='a'||c=='A')&&crcl[ef].cstat==2)
                {
                    system("CLS");
                    cout<<"该课程已经停止选课\n";
                    system("pause");
                }
                if ((c=='a'||c=='A')&&crcl[ef].cstat==0)
                {
                    system("CLS");
                    cout<<"现在不是选课时间\n";
                    system("pause");
                }     
                if ((c=='a'||c=='A')&&crcl[ef].cstat==1)
                {
                    if(crcl_stu[log_stu][ef]==-2)
                    {
                        system("CLS");
                        cout<<"你已经提交过开通该课程的申请!\n";
                        system("pause");
                    }
                    if (crcl_stu[log_stu][ef]==-1||crcl_stu[log_stu][ef]==-4)
                    {
                        if (stu_score[log_stu]+crcl[ef].cscore<=25)
                        {
                            crcl_stu[log_stu][ef]==-3;
                            system("CLS"); 
                            cout<<"成功提交申请!\n";
                            chg=1;
                            system("pause");
                        }
                        else
                        {
                            system("CLS");
                            cout<<"超过25学分上限,申请失败!\n";
                            system("pause"); 
                        }
                    }    
                    if (crcl_stu[log_stu][ef]==-3||crcl_stu[log_stu][ef]>=0)
                    {
                        system("CLS");
                        cout<<"你已是该班学生\n";
                        system("pause");
                    }
                }         
                if (chg==1)
                {
                    fclose(fpcrcl);
                    fpcrcl=fopen("data\\crcl.txt","w");
                    fprintf(fpcrcl,"%d\n",crcl_num);
                    for (i=0;i<crcl_num;i++)
                    fprintf(fpcrcl,"$%s$%s$%f$%s$%s$%s$%d$%d$%d$\n",crcl[i].cnum,crcl[i].cname,&crcl[i].cscore,crcl[i].cteacher
                    ,crcl[i].croom,crcl[i].ckkr,&crcl[i].cstat,&crcl[i].ctotal,&crcl[i].ccurrent);
                    for (i=0;i<stu_num;i++)
                    {
                        fprintf(fpcrcl,"%f ",stu_score[i]);
                        for (j=0;j<crcl_num;j++)
                        fprintf(fpcrcl,"%d ",crcl_stu[i][j]);
                        fprintf(fpcrcl,"\n");
                    }                       
                }//save         
            }    
        }//进入查看    
    }    
}


int amdcrcl()
{
    int crcl_num,i,j,k,crcl_ccl,ef,class_ccl,amd,stulist_ccl,xgjb_ccl,lr_flag=0,adn_flag,typef;
    char c,cadstu,clist,cnb,c_stat[3][9]={"未开通","开通","停止选课"},str[12]; 
    system("CLS");
    crcl_ccl=1;
    while (crcl_ccl)
    {
        amd=0;
        fpcrcl=fopen("data\\crcl.txt","r+");
        if (fpcrcl==NULL)
        {
            fpcrcl=fopen("data\\crcl.txt","w+");
            fprintf(fpcrcl,"0\n");
            rewind(fpcrcl);
        }
        fscanf(fpcrcl,"%d",&crcl_num);
        for (i=0;i<crcl_num;i++)
        fscanf(fpcrcl," $%[^$]$%[^$]$%f$%[^$]$%[^$]$%[^$]$%d$%d$%d$",crcl[i].cnum,crcl[i].cname,&crcl[i].cscore,&crcl[i].cteacher
        ,crcl[i].croom,crcl[i].ckkr,&crcl[i].cstat,&crcl[i].ctotal,&crcl[i].ccurrent);
        for (i=0;i<stu_num;i++)
        {
            fscanf(fpcrcl,"%f",&stu_score[i]);
            for (j=0;j<crcl_num;j++)
            fscanf(fpcrcl,"%d",&crcl_stu[i][j]);
        }//读入       
        system("CLS"); 
        printf ("%6s%12s%12s%8s%12s%10s%20s\n","序号","班号","科目名","学分数","任课老师","选课状态","当前学生数/学生上限");
        printf ("________________________________________________________________________________\n\n");
        for (i=0;i<crcl_num;i++)
        printf ("%6d%12s%12s%8.1f%12s%10s%10d/%-3d\n",i+1,crcl[i].cnum,crcl[i].cname,crcl[i].cscore,crcl[i].cteacher,
        c_stat[crcl[i].cstat],crcl[i].ccurrent,crcl[i].ctotal);
        printf ("\n________________________________________________________________________________\n");
        cout<<"A=新增课程    E=查看课程\n"; 
        cout<<"D=删除课程    X=返回主菜单\n";
        while(c=getch(),c!='a'&&c!='A'&&c!='e'&&c!='E'&&c!='d'&&c!='D'&&c!='x'&&c!='X')
        ;
        if (c=='e'||c=='E') 
        {
            class_ccl=1;
            while (class_ccl)
            {
                cout<<"请输入要查看的班的序号,输入返回上一级菜单\n";
                cin>>ef;
                if (ef==0) 
                return 0;
                if (ef<0||ef>crcl_num)
                {
                    fflush(stdin);
                    cin.clear();
                    cout<<"无效的序号,请再次输入\n\n";
                }
                else
                class_ccl=0;
            }
            ef--;
            {
                stulist_ccl=1;
                while (stulist_ccl)
                {
                    system("CLS");
                    printf("班号:%16s12%s\n",crcl[ef].cnum,crcl[ef].cname);
                    printf("学分:%16.1f\n",crcl[ef].cscore);
                    printf("任课老师:%12s      上课课室:%12s\n",crcl[ef].cteacher,crcl[ef].croom);
                    printf("开课人:%14s      开课状态:%12s\n",crcl[ef].ckkr,c_stat[crcl[ef].cstat]);
                    printf("\n上课学生(%d)\n",crcl[ef].ccurrent);
                    printf("%6s%12s%12s%6s%12s\n","序号","学号","姓名","性别","专业");
                    printf("________________________________________________________________________________\n\n");
                    for (i=0;i<stu_num;i++)
                    {
                        if (crcl_stu[i][ef]==-3)
                        printf ("%6d%12s%12s%6s%12s\n",i,stu[i].num,stu[i].name,stu[i].sex,stu[i].pro);
                        else if (crcl_stu[i][ef]==-2)
                        printf ("%6d%12s%12s%6s%12s%20s\n",i,stu[i].num,stu[i].name,stu[i].sex,stu[i].pro,"(申请选课)");
                    }
                    printf("________________________________________________________________________________\n");
                    printf("A=修改课程基本信息     S=修改课程状态\n"); 
                    printf("T=移出学生             J=加入学生\n"); 
                    printf("X=返回课程列表\n");
                    while(clist=getch(),clist!='a'&&clist!='A'&&clist!='s'&&clist!='S'&&clist!='t'&&clist!='T'&&clist!='j'&&clist!='J'&&clist!='X'&&clist!='x')
                    ;
                    if (clist=='a'||clist=='A')
                    {
                        xgjb_ccl=1;
                        while (xgjb_ccl)
                        {
                            system("CLS");
                            cout<<"\n\n________________________________________________________________________________\n";
                            cout<<"B=修改班号       N=修改班名\n";
                            cout<<"S=修改学分       T=修改任课老师\n"; 
                            cout<<"R=修改上课课室   O=修改学生上限\n";
                            cout<<"X=返回上级菜单\n";
                            while(c=getch(),c!='b'&&c!='B'&&c!='n'&&c!='N'&&c!='s'&&c!='S'&&c!='t'&&c!='T'&&c!='r'&&c!='R'&&
                            c!='o'&&c!='O'&&c!='x'&&c!='X')
                            ;
                            cin.clear();
                            if (c=='b'||c=='B')
                            {
                                cout<<"输入新班号\n";
                                cin>>str;
                                for (i=0;i<crcl_num;i++)
                                {
                                    if (strcmp(crcl[i].cnum,str)==0&&ef!=i)
                                    {
                                        strcpy(crcl[ef].cnum,str);
                                        amd=1;
                                        cout<<"修改成功\n";
                                        system("pause");
                                    }
                                    cout<<"班号已存在\n";
                                    system("pause");
                                }
                            }
                            if (c=='n'||c=='N')
                            {
                                cout<<"\n\n输入新班名\n"; 
                                cin>>crcl[ef].cname;
                                cin.clear();
                                cout<<"修改成功\n"; 
                                system("pause");
                                amd=1;
                            }
                            if (c=='s'||c=='S')
                            {
                                cout<<"输入新学分\n"; 
                                cin>>crcl[ef].cscore;
                                cout<<"修改成功\n"; 
                                system("pause");
                                amd=1;
                            }
                            if (c=='t'||c=='T')
                            {
                                cout<<"输入新任课老师\n"; 
                                cin>>crcl[ef].cteacher;
                                cout<<"修改成功\n"; 
                                system("pause");
                                amd=1;
                            }
                            if (c=='r'||c=='R')
                            {
                                cout<<"输入新上课课室\n"; 
                                cin>>crcl[ef].croom;
                                cout<<"修改成功\n"; 
                                system("pause");
                                amd=1;
                            }
                            if (c=='o'||c=='O')
                            {
                                cout<<"输入新学生上限\n"; 
                                cin>>crcl[ef].ctotal;
                                cout<<"修改成功\n"; 
                                system("pause");
                                amd=1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -