简单学生成绩管理系统

来源:互联网 发布:支付行业在线数据分析 编辑:程序博客网 时间:2024/04/28 20:11

#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
char num[200][80],age[200][80],name[200][80],adder[200][80];
int c[20],j=0,sum=0;
void wellcome();
void loaddat();
void setchose();
void chakan();
void errorchose();
void addfile();
void addname();
void addage();
void addnum();
void addadder();
void addmain();
void addchose();
void serch();
void serchmain();
void serchchose();
void serchname();
void serchage();
void serchnum();
void serchadder();
void print(int a);
void serchmain2();
void serchmain2chose(int e);
void switch1(int x);
void change();
void changename(int d);
void changeage(int d);
void changenum(int d);
void changeadder(int d);
void del();
void delname();
void delage();
void delnum();
void deladder();
void main()
{
loaddat();
wellcome();
setchose();
}
void wellcome ()
{
    printf("学籍管理系统V0.01/npower by yxyy3604/n");
    printf("1.新增学籍/n2.查找学籍/n3.浏览数据/n4.保存退出/n");
}
void loaddat()
{
FILE *namef,*numf,*adderf,*agef;
int i;
char ch[80];
sum=0;
if ((namef=fopen("name.dat","r"))==NULL)
    {namef=fopen("name.dat","w");}
while ((fgets(ch, 80, namef)) != NULL)
    {if((ch[0]>48&&ch[0]<57)||(ch[0]>65&&ch[0]<90)||(ch[0]>97&&ch[0]<127)) sum++;}
namef=fopen("name.dat","r");
for(i=0;i<200;i++)
    {fgets(name[i],80,namef);}
fclose(namef);
if ((agef=fopen("age.dat","r"))==NULL)
    {agef=fopen("age.dat","w");}
for(i=0;i<200;i++)
    {fgets(age[i],80,agef);}
fclose(agef);
if ((numf=fopen("num.dat","r"))==NULL)
    {numf=fopen("num.dat","w");}
for(i=0;i<200;i++)
    {fgets(num[i],80,numf);}
fclose(numf);
if ((adderf=fopen("adder.dat","r"))==NULL)
    {adderf=fopen("adder.dat","w");}
for(i=0;i<200;i++)
    {fgets(adder[i],80,adderf);}
fclose(adderf);
}
void setchose()
{
int a;
printf("输入所选操作的编号/n");
scanf("%d",&a);
switch(a)
    {
        case 1 : addfile();break;
        case 2 : serch();break;
        case 3 : chakan();break;
        case 4 : exit(-1);break;
        default : errorchose();setchose();break;
    }
}
void errorchose()
{printf("error/n请从新选择/n");}
void addfile()
    {
    addname();
    addage();
    addnum();
    addadder();
    addmain();
    addchose();
    }
void serch()
    {
        serchmain();
        serchchose();
    }
void chakan()
    {
        int i;
        loaddat();
        printf("数据库内共%d组数据/n",sum);
        for (i=0;i<sum;i++)
            {
                print(i);
            }
        main();
    }
void addname()
    {
        char a[1][80];
        printf("请输入学生姓名/n");
        scanf("%s",a[0]);
        FILE *namef;
        namef=fopen("name.dat","a");
        fprintf(namef,"%s/n",a[0]);
        fclose(namef);
    }
void addage()
    {
        char a[1][80];
        printf("请输入学生年龄/n");
        scanf("%s",a[0]);
        FILE *agef;
        agef=fopen("age.dat","a");
        fprintf(agef,"%s/n",a[0]);
        fclose(agef);
    }
void addnum()
    {
        char a[1][80];
        printf("请输入学生学号/n");
        scanf("%s",a[0]);
        FILE *numf;
        numf=fopen("num.dat","a");
        fprintf(numf,"%s/n",a[0]);
        fclose(numf);
    }
void addadder()
    {
        char a[1][80];
        printf("请输入学生地址/n");
        scanf("%s",a[0]);
        FILE *adderf;
        adderf=fopen("adder.dat","a");
        fprintf(adderf,"%s/n",a[0]);
        fclose(adderf);
    }
void addmain()
    {
        printf("1.继续添加学生信息/n2.返回上一界面/n3.退出程序/n");
    }
void addchose()
    {
        int a;
        printf("输入所选操作的编号/n");
        scanf("%d",&a);
        switch(a)
            {
                case 1 : addfile();break;
                case 2 : main();break;
                case 3 : exit(-1);break;
                default : errorchose();addchose();break;
            }
    }
void serchmain()
    {
        printf("1.按学生姓名查找/n2.按学生年龄查找/n3.按学生学号查找/n4.按学生地址查找/n5.返回主界面/n");
    }
void serchchose()
    {
        int a;
        printf("输入所选操作的编号/n");
        scanf("%d",&a);
        switch(a)
            {
                case 1 : serchname();break;
                case 2 : serchage();break;
                case 3 : serchnum();break;
                case 4 : serchadder();break;
                case 5 : main();break;
                default : errorchose();addchose();break;
            }
    }
void serchname()
    {
        FILE *namef;
        int i,c[20],e;
        j=0;
        for (i=0;i<20;i++)
            {c[i]=0;}
        char a[1][80],b[1][2]={"/n"},a2[1][80];
        namef=fopen("name.dat","r");
        for(i=0;i<200;i++)
        {fgets(name[i],80,namef);}
        fclose(namef);
        printf("请输入学生姓名/n");
        scanf("%s",&a[0]);
        a2[0]=a[0];
        strcat(a[0],b[0]);
        for (i=0;i<200;i++)
            {
                if(strcmp(name[i],a[0])==0)
                    {
                        c[j]=i;j=j+1;
                    }
                else continue;
            }
        if(j>20){printf("找太多的结果,请从新限定您的搜索条件/n");serchname();}
        if(j==0){printf("没找的任何和%s有关的信息/n",a2[0]);}
        for(i=0;i<j;i++)
            {
                print(c[i]);
            }
        serchmain2();
        scanf("%d",&e);
        if(e==3){serchname();}
     else {serchmain2chose(e);}
    }
void serchage()
    {
        FILE *agef;
        int i,c[20],e;
        j=0;
        for (i=0;i<20;i++)
            {c[i]=0;}
        char a[1][80],b[1][2]={'/n'},a2[1][80];
        agef=fopen("age.dat","r");
        for(i=0;i<200;i++)
        {fgets(age[i],80,agef);}
        fclose(agef);
        printf("请输入学生年龄/n");
        scanf("%s",&a[0]);
        a2[0]=a[0];
        strcat(a[0],b[0]);
        for (i=0;i<200;i++)
            {
                if(strcmp(age[i],a[0])==0)
                    {
                        c[j]=i;j=j+1;
                    }
                else continue;
            }
        if(j>20){printf("找太多的结果,请从新限定您的搜索条件/n");serchage();}
        if(j==0){printf("没找的任何和%s有关的信息/n",a2[0]);}
        for(i=0;i<j;i++)
            {
                print(c[i]);
            }
        serchmain2();
        scanf("%d",&e);
        if(e==3){serchage();}
     else {serchmain2chose(e);}
    }
void serchnum()
    {
        FILE *numf;
        int i,c[20],e;
        j=0;
        for (i=0;i<20;i++)
            {c[i]=0;}
        char a[1][80],b[1][2]={'/n'},a2[1][80];
        numf=fopen("num.dat","r");
        for(i=0;i<200;i++)
        {fgets(num[i],80,numf);}
        fclose(numf);
        printf("请输入学生学号/n");
        scanf("%s",&a[0]);
        a2[0]=a[0];
        strcat(a[0],b[0]);
        for (i=0;i<200;i++)
            {
                if(strcmp(num[i],a[0])==0)
                    {
                        c[j]=i;j=j+1;
                    }
                else continue;
            }
        if(j>20){printf("找太多的结果,请从新限定您的搜索条件/n");serchnum();}
        if(j==0){printf("没找的任何和%s有关的信息/n",a2[0]);}
        for(i=0;i<j;i++)
            {
                print(c[i]);
            }
        serchmain2();
        scanf("%d",&e);
        if(e==3){serchnum();}
     else {serchmain2chose(e);}
    }
void serchadder()
    {
        FILE *adderf;
        int i,c[20],e;
        j=0;
        for (i=0;i<20;i++)
            {c[i]=0;}
        char a[1][80],b[1][2]={'/n'},a2[1][80];
        adderf=fopen("adder.dat","r");
        for(i=0;i<200;i++)
        {fgets(adder[i],80,adderf);}
        fclose(adderf);
        printf("请输入学生地址/n");
        scanf("%s",&a[0]);
        a2[0]=a[0];
        strcat(a[0],b[0]);
        for (i=0;i<200;i++)
            {
                if(strcmp(adder[i],a[0])==0)
                    {
                        c[j]=i;j=j+1;
                    }
                else continue;
            }
        if(j>20){printf("找太多的结果,请从新限定您的搜索条件/n");serchadder();}
        if(j==0){printf("没找的任何和%s有关的信息/n",a2[0]);}
        for(i=0;i<j;i++)
            {
                print(c[i]);
            }
        serchmain2();
        scanf("%d",&e);
        if(e==3){serchadder();}
     else {serchmain2chose(e);}
    }
void print(int a)
    {
     printf("%d/n",a+1);
     printf("学生姓名为%s",name[a]);
     printf("学生年龄为%s",age[a]);
     printf("学生学号为%s",num[a]);
     printf("学生地址为%s",adder[a]);
    }
void serchmain2()
    {
        printf("1.修改这些数据/n2.删除这些数据/n3.以当前方式继续查找/n4.更换方式继续查找/n5.返回主界面/n6.退出程序/n");
    }
void serchmain2chose(int e)
    {
     switch (e)
        {
            case 1 : change();break;
            case 2 : del();break;
            case 4 : serch();break;
            case 5 : main();break;
            case 6 : exit (-1);break;
            default : errorchose();serchmain2chose(e);break;
        }
    }
void change()
    {
        int i;
        for (i=0;i<j;i++)
        {
            changename(i+1);
            changeage(i+1);
            changenum(i+1);
            changeadder(i+1);
        }
    }
void changename(int d)
    {
        char a[1][80],b[1][2]={'/n'};
        int i=d-1;
        FILE *namef;
        namef=fopen("name.dat","w");
        printf("请输入%d号学生的新的姓名/n",d);
        scanf("%s",a[0]);
        strcat(a[0],b[0]);
        name[c[i]]=a[0];
        for (i=0;i<200;i++)
            {
                fprintf(namef,"%s",name);
            }
        fclose(namef);
    }
void changeage(int d)
    {
        char a[1][80],b[1][2]={'/n'};
        int i=d-1;
        FILE *agef;
        agef=fopen("age.dat","w");
        printf("请输入%d号学生的新的年龄/n",d);
        scanf("%s",a[0]);
        strcat(a[0],b[0]);
        age[c[i]]=a[0];
        for (i=0;i<200;i++)
            {
                fprintf(agef,"%s",age);
            }
        fclose(agef);
    }
void changenum(int d)
    {
        char a[1][80],b[1][2]={'/n'};
        int i=d-1;
        FILE *numf;
        numf=fopen("num.dat","w");
        printf("请输入%d号学生的新的学号/n",d);
        scanf("%s",a[0]);
        strcat(a[0],b[0]);
        num[c[i]]=a[0];
        for (i=0;i<200;i++)
            {
                fprintf(numf,"%s",num);
            }
        fclose(numf);
    }
void changeadder(int d)
    {
        char a[1][80],b[1][2]={'/n'};
        int i=d-1;
        FILE *adderf;
        adderf=fopen("adder.dat","w");
        printf("请输入%d号学生的新的地址/n",d);
        scanf("%s",a[0]);
        strcat(a[0],b[0]);
        adder[c[i]]=a[0];
        for (i=0;i<200;i++)
            {
                fprintf(adderf,"%s",adder);
            }
        fclose(adderf);
    }
void del()
    {
        delname();
        delage();
        delnum();
        deladder();
        main();
    }
void delname()
    {
        int i,k,m=0;
        char temp[200][80];
        for (k=0;k<j;k++)
            {
                for (i=0;i<sum;i++)
                    {
                        if(i!=c[k])
                        temp=name;
                        else m=m+1;
                    }
            }
        FILE *namef;
        namef=fopen("name.dat","w");
        for (i=0;i<sum-j;i++)
            {
                fprintf(namef,"%s",temp);
            }
        fclose(namef);
        printf("del  ok !/n");
    }
void delage()
    {
        int i,k,m=0;
        char temp[200][80];
        for (k=0;k<j;k++)
            {
                for (i=0;i<sum;i++)
                    {
                        if(i!=c[k])
                        temp=age;
                        else m=m+1;
                    }
            }
        FILE *agef;
        agef=fopen("age.dat","w");
        for (i=0;i<sum-j;i++)
            {
                fprintf(agef,"%s",temp);
            }
        fclose(agef);
        printf("del  ok !/n");
    }
void delnum()
    {
        int i,k,m=0;
        char temp[200][80];
        for (k=0;k<j;k++)
            {
                for (i=0;i<sum;i++)
                    {
                        if(i!=c[k])
                        temp=num;
                        else m=m+1;
                    }
            }
        FILE *numf;
        numf=fopen("num.dat","w");
        for (i=0;i<sum-j;i++)
            {
                fprintf(numf,"%s",temp);
            }
        fclose(numf);
        printf("del  ok !/n");
    }
void deladder()
    {
        int i,k,m=0;
        char temp[200][80];
        for (k=0;k<j;k++)
            {
                for (i=0;i<sum;i++)
                    {
                        if(i!=c[k])
                        temp=adder;
                        else m=m+1;
                    }
            }
        FILE *adderf;
        adderf=fopen("adder.dat","w");
        for (i=0;i<sum-j;i++)
            {
                fprintf(adderf,"%s",temp);
            }
        fclose(adderf);
        printf("del  ok !/n");
    }

原创粉丝点击