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

📄 yzss.txt

📁 班级管理系统
💻 TXT
📖 第 1 页 / 共 2 页
字号:

#include <stdio.h>
#include <string.h>
#define MAX 100
typedef struct
{
    int sno;
    char sname[10];
    int age;
    char classno[8];
    int zyno;
    char zyname[20];
}STUDENT;
typedef struct
{
    int cno;
    char cname[20];
    int zyno;
}COURSE;
typedef struct
{
    int sno;
    char sname[10];
    int cno;
    char cname[20];
    int deg;
    int classno;
}DEGREE;
typedef struct
{
    int zyno;
    char zyname[20];
}ZYSTUD;
void student();
extern void course();
extern void degree();
int main()
{
    int sel;
    do
    {
        printf("主选项 1:学生管理 2:课程管理 3:成绩管理 0:退出=>");
        scanf("%d",&sel);
        switch(sel)
        {
        case 1:student();break;
        case 2:course();break;
        case 3:degree();break;
        case 0:break;
        default:printf("**选择错误\n");break;
        }
    }while(sel!=0);
    return 0;
}
void  student()
{
    void instud();
    void upstud();
    void destud();
    void distud();
    void dastud();
    void fistud();
    void zystud();
    int sell;
    do
    {
        printf("学生记录操作:1:添加 2:修改 3:显示 4:查找 5:删除 6:全删 7:设置专业 0:返回=>");
        scanf("%d",&sell);
        switch(sell)
        {
        case 1:instud();break;
        case 2:upstud();break;
        case 3:distud();break;
        case 4:fistud();break;
        case 5:destud();break;
        case 6:dastud();break;
        case 7:zystud();break;
        case 0:break;
        default:printf("\t**选择错误\n");break;
        }
    }while(sell!=0);
}
void instud()
{
    FILE *fp;
    STUDENT stud,stud1;
    if((fp=fopen("student.dat","ab+"))==NULL)
        if((fp=fopen("student.dat","wb+"))==NULL)
        {
            printf("\t>>不能建立student.dat文件\n");
            return;
        }
        printf("  输入格式:学号 姓名 年龄 班号 专业号 专业名\n");
        printf("  学生记录:");
        scanf("%d%s%d%s%d%s",&stud.sno,&stud.sname,&stud.age,&stud.classno,&stud.zyno,&stud.zyname);
        rewind(fp);
        while(!feof(fp))
        {
            fread(&stud1,sizeof(STUDENT),1,fp);
            if(stud1.sno==stud.sno) break;
        }
        if(!feof(fp))
            printf("\t>>学号重复\n");
        else 
            fwrite(&stud,sizeof(STUDENT),1,fp);
        fclose(fp);
}
void upstud()
{
    FILE *fp;
    STUDENT stud,nstud;
    int i,num;
    if((fp=fopen("student.dat","rb+"))==NULL)
    {
        printf("\t>>不能打开student.dat文件\n");
        return;
    }
    fseek(fp,0,2);
    if(ftell(fp)>0)
    {
        rewind(fp);
        printf("   要修改的学号:");
        scanf("%d",&num);
        for(i=0;!feof(fp)&&fread(&stud,sizeof(STUDENT),1,fp)==1;i++)
            if(stud.sno==num) break;
            if(feof(fp))
            {
                printf("\t>>没有%d学号的学生\n",num);
                return;
            }
            printf("   输入格式:姓名 年龄 班号 专业号 专业名:");
            scanf("%s%d%s%d%s",&nstud.sname,&nstud.age,&nstud.classno,&nstud.zyno,&nstud.zyname);
            nstud.sno=stud.sno;
            fseek(fp,-(long)sizeof(STUDENT),SEEK_CUR);
            fwrite(&nstud,sizeof(STUDENT),1,fp);
            fclose(fp);
    }
    else 
    {
        printf("\t无任何记录\n");
        fclose(fp);
    }
}
void destud()
{
    void dastud();
    FILE *fp;
    STUDENT stud[MAX];
    int i,j,n,num;
    if((fp=fopen("student.dat","rb"))==NULL)
    {
        printf("\t>>不能打开student.dat文件\n");
        return;
    }
    fseek(fp,0,2);
    if(ftell(fp)>0)
    {
        rewind(fp);
        for(n=0;!feof(fp)&&fread(&stud[n],sizeof(STUDENT),1,fp);n++)
            printf("   要删除的学号:");
        scanf("%d",&num);
        for(i=0;i<n&&stud[i].sno!=num;i++)
            if(i>=n)
            {
                printf("\t>>没有%d学号的学生\n",num);
                return;
            }
            fclose(fp);
            if(n>1)
            {
                for(j=i;j<n-1;j++)
                    stud[i]=stud[i+1];
                fp=fopen("student.dat","wb");
                for(i=0;i<n-1;i++)
                    fwrite(&stud[i],sizeof(STUDENT),1,fp);
                fclose(fp);
            }
            else dastud();
    }
    else
    {
        printf("\t>>无任何记录\n");
        fclose(fp);
    }
}
void distud()
{
    FILE *fp;
    int i;
    STUDENT stud;
    if((fp=fopen("student.dat","rb"))==NULL)
    {
        printf("\t>>不能打开student.dat文件\n");
        return;
    }
    fseek(fp,0,2);
    if(ftell(fp)>0)
    {
        rewind(fp);
        printf("  记录号   学号    姓名   年龄    班号   专业号    专业名 \n");
        i=0;
        while(1)
        {
            fread(&stud,sizeof(STUDENT),1,fp);
            if(feof(fp)) break;
            printf("%8d%10d%12s%5d%10s%6d%14s\n",i+1,stud.sno,stud.sname,stud.age,stud.classno,stud.zyno,stud.zyname);
            i++;
        }
    }
    else 
        printf("\t>>无任何记录\n");
}
void dastud()
{
    FILE *fp;
    if((fp=fopen("student.dat","wb"))==NULL)
    {
        printf("\t>>不能打开student.dat文件\n");
        return;
    }
    printf("\t>>全部记录已删\n");
    fclose(fp);
}
void fistud()
{
    int i=0,num;
    FILE *fp;
    STUDENT stud;
    if((fp=fopen("student.dat","rb"))==NULL)
    {
        printf("\t>>不能打开student.dat文件\n");
        return;
    }
    fseek(fp,0,2);
    if(ftell(fp)>0)
    {
        printf("  输入学号");
        scanf("%d",&num);
        rewind(fp);
        while(1)
        {
            fread(&stud,sizeof(STUDENT),1,fp);
            if(feof(fp)||stud.sno==num) break;
                i++;
        }
        if(!feof(fp))
        {
            printf("  记录号 学号 姓名 年龄 班号 专业号 专业名\n");
            printf("%6d%10d%12s%5d%10s%5d%12s\n",i+1,stud.sno,stud.sname,stud.age,stud.classno,stud.zyno,stud.zyname);
        }
        else
            printf("\t>>查无此人\n");
    }
    else
        printf("\t>>无任何记录\n");
}

    void zystud()
{
        void inzystud();
        void upzystud();
        void dezystud();
        void dizystud();
        void dazystud();
        void fizystud();
        int zysel;
        do
        {
            printf("专业记录操作:1:添加 2:修改 3:显示 4:查找 5:删除 6:全删 0:返回=>");
            scanf("%d",&zysel);
            switch(zysel)
            {
            case 1:inzystud();break;
            case 2:upzystud();break;
            case 3:dizystud();break;
            case 4:fizystud();break;
            case 5:dezystud();break;
            case 6:dazystud();break;
            case 0:break;
            default:printf("\t**选择错误\n");break;
            }
        }while(zysel!=0);
    }
    void inzystud()
    {
        FILE *fp;
        ZYSTUD zystud,zystud1;
        if ((fp=fopen("zystud.dat","ab+"))==NULL)
        {
            printf("\t>>不能建立zystud.dat文件\n");
            return;
        }
        printf("  输入格式:专业号 专业名\n");
        printf("  专业记录:");
        scanf("%d%s",&zystud.zyno,&zystud.zyname);
        rewind(fp);
        while(!feof(fp))
        {
            fread(&zystud1,sizeof(ZYSTUD),1,fp);
            if(zystud1.zyno==zystud.zyno) break;
        }
        if (!feof(fp))
            printf("\t>>专业号重复\n");
        else 
            fwrite(&zystud,sizeof(ZYSTUD),1,fp);
        fclose(fp);
    }
void upzystud()
{
    FILE *fp;
    ZYSTUD zystud,nzystud;
    int i,num;
    if ((fp=fopen("zystud.dat","rb+"))==NULL)
    {
        printf("\t>>不能打开zystud.dat文件\n");
        return;
    }
    fseek(fp,0,2);
    if (ftell(fp)>0)
    {
        rewind(fp);
        printf("   要修改的专业号:");
        scanf("%d",&num);
        for (i=0;!feof(fp)&&fread(&zystud,sizeof(ZYSTUD),1,fp)==1;i++)
            if (zystud.zyno==num) break;
            if (feof(fp))
            {
                printf("\t>>没有%d专业号的专业\n",num);
                return;
            }
            printf("  输入格式:专业名\n");
            scanf("%s",nzystud.zyname);
            nzystud.zyno=zystud.zyno;
            fseek(fp,-(long)sizeof(ZYSTUD),SEEK_CUR);
            fwrite(&nzystud,sizeof(ZYSTUD),1,fp);
            fclose(fp);
    }
    else
    {
        printf("\t>>无任何记录\n");
        fclose(fp);
    }
}
void dezystud()
{
    void dazystud();
    FILE *fp;
    ZYSTUD zystud[MAX];
    int i,j,n,num;
    if ((fp=fopen("zystud.dat","rb"))==NULL)
    {
        printf("\t>>不能打开zystud.dat文件\n");
        return;
    }
    fseek(fp,0,2);
    if (ftell(fp)>0)
    {
        rewind(fp);
        for (n=0;!feof(fp)&&fread(&zystud[n],sizeof(ZYSTUD),1,fp);n++);
        printf("  要删除的专业号:");
        scanf("%d",&num);
        for(i=0;i<n&&zystud[i].zyno!=num;i++);
        if (i>=n)
        {
            printf("\t>>没有%d专业号的专业\n",num);
            return;
        }
        fclose(fp);
        if (n>1)
        {
            for (j=i;j<n-1;j++)
                zystud[i]=zystud[i+1];
            fp=fopen("zystud.dat","wb");
            for (i=0;i<n-1;i++)
                fwrite(&zystud[i],sizeof(ZYSTUD),1,fp);
            fclose(fp);
        }
        else dazystud();
    }
    else
    {
        printf("\t>>无任何记录\n");
        fclose(fp);
    }
}
void dizystud()
{
    FILE *fp;
    int i;
    ZYSTUD zystud;
    if ((fp=fopen("zystud.dat","rb"))==NULL)
    {
        printf("\t>>不能打开zystud.dat文件\n");
        return;
    }
    fseek(fp,0,2);
    if (ftell(fp)>0)
    {
        rewind(fp);
        printf("   记录号 专业号 专业名\n");
        i=0;
        while(1)
        {
            fread(&zystud,sizeof(ZYSTUD),1,fp);
            if (feof(fp)) break;
            printf(" %6d%10d%20s\n",i+1,zystud.zyno,zystud.zyname);
            i++;
        }
    }
    else
        printf("\t>>无任何记录\n");
}
void dazystud()
{
    FILE *fp;
    if((fp=fopen("zystud.dat","wb"))==NULL)
    {
        printf("\t>>不能打开zystud.dat文件\n");
        return;
    }
    printf("\t>>全部记录已删\n");
    fclose(fp);
}
    void fizystud()
    {
        int i=0,num;
        FILE *fp;
        ZYSTUD zystud;
        if ((fp=fopen("zystud.dat","rb"))==NULL)
        {
            printf(" \t>>不能打开zystud.dat文件\n");
            return;
        }
        fseek(fp,0,2);
        if (ftell(fp)>0)
        {
            printf("  输入专业号:");
            scanf("%d",&num);
                rewind(fp);
            while(1)
            {
                fread(&zystud,sizeof(ZYSTUD),1,fp);
                if (feof(fp)||zystud.zyno==num) break;
                i++;
            }
            if (!feof(fp))
            {
                printf(" 记录号 专业号 专业名\n");
                printf("%6d%10d%20s\n",i+1,zystud.zyno,zystud.zyname);
            }
            else
                printf("\t>>查无此记录\n");
        }
        else 
            printf("\t>>无任何记录\n");
    }
void course()
{
        void incour();
        void upcour();
        void decour();
        void dicour();
        void dacour();
        void ficour();
        int sel1;
        do
        {
            printf("课程记录操作:1:添加 2:修改 3:显示 4:查找 5:删除 6:全删 0:返回=>");
            scanf("%d",&sel1);
            switch(sel1)
            {
            case 1:incour();break;
            case 2:upcour();break;
            case 3:dicour();break;
            case 4:ficour();break;
            case 5:decour();break;
            case 6:dacour();break;
            case 0:break;
            default:printf("\t**选择错误\n");break;
            }
        }while(sel1!=0);
    }
    void incour()
    {
        FILE *fp;
        COURSE cour,cour1;
        if ((fp=fopen("course.dat","ab+"))==NULL)
        {
            printf("\t>>不能建立course.dat文件\n");
            return;
        }
        printf("  输入格式:课程号 课程名 专业号\n");
        printf("  课程记录:");
        scanf("%d%s%d",&cour.cno,&cour.cname,&cour.zyno);
        rewind(fp);
        while(!feof(fp))
        {
            fread(&cour1,sizeof(COURSE),1,fp);
            if(cour1.cno==cour.cno) break;
        }
        if (!feof(fp))
            printf("\t>>课程号重复\n");
        else 
            fwrite(&cour,sizeof(COURSE),1,fp);
        fclose(fp);
    }
void upcour()
{
    FILE *fp;
    COURSE cour,ncour;
    int i,num;
    if ((fp=fopen("course.dat","rb+"))==NULL)
    {
        printf("\t>>不能打开course.dat文件\n");
        return;
    }
    fseek(fp,0,2);
    if (ftell(fp)>0)
    {
        rewind(fp);
        printf("   要修改的课程:");
        scanf("%d",&num);
        for (i=0;!feof(fp)&&fread(&cour,sizeof(COURSE),1,fp)==1;i++)
            if (cour.cno==num) break;
            if (feof(fp))
            {
                printf("\t>>没有%d课程号的课程\n",num);
                return;
            }
            printf("  输入格式: 课程名  专业号:");
            scanf("%s%d",ncour.cname,&ncour.zyno);
            ncour.cno=cour.cno;
            fseek(fp,-(long)sizeof(COURSE),SEEK_CUR);
            fwrite(&ncour,sizeof(COURSE),1,fp);
            fclose(fp);
    }
    else
    {
        printf("\t>>无任何记录\n");
        fclose(fp);
    }
}
void decour()
{
    void dacour();
    FILE *fp;
    COURSE cour[MAX];
    int i,j,n,num;
    if ((fp=fopen("course.dat","rb"))==NULL)
    {
        printf("\t>>不能打开course.dat文件\n");
        return;
    }
    fseek(fp,0,2);
    if (ftell(fp)>0)
    {
        rewind(fp);
        for (n=0;!feof(fp)&&fread(&cour[n],sizeof(COURSE),1,fp);n++);
        printf("  要删除的课程号:");
        scanf("%d",&num);

⌨️ 快捷键说明

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