学生成绩管理系统(生成文件)

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int x;
struct Student
{
    char name[20];
    long long int num;
    float score;
} stu[100];
void shuru()
{
    printf("\t\t\t共有多少名学生:\n");
    scanf("%d",&x);
    for(int i=0; i<x; i++)
    {
        printf("\t\t\t请输入学生姓名:\n");
        scanf("%s",&stu[i].name);
        printf("\t\t\t请输入学生学号;\n");
        scanf("%lld",&stu[i].num);
        printf("\t\t\t请输入学生成绩;\n");
        scanf("%f",&stu[i].score);
    }
}
void shanchu()
{
    long long int n;
    printf("\t\t\t请输入你需要删除的学生学号:\n");
    scanf("%lld",&n);
    int j=0,i;
    for(i=0; i<x; i++)
    {
        if(n!=stu[i].num)
        {

            stu[j]=stu[i];
            j++;
        }
    }
    if(i==j)
    {
        printf("\t\t\t输入错误!!!\n");
    }
    else
        for(i=0; i<j; i++)
        {
            printf("%s %lld %.2f\n",stu[i].name,stu[i].num,stu[i].score);
        }
    x=j;
}
void chaxun()
{
    long long int n;
    printf("\t\t\t请输入你要查询的学生学号:\n");
    scanf("%lld",&n);
    for(int i=0; i<x; i++)
    {
        if(n==stu[i].num)
        {

            printf("%s %lld %.2f",stu[i].name,stu[i].num,stu[i].score);
            break;
        }
    }


}
void paixu()
{
    struct Student stu1;
    int t=0;
    printf("\t\t\t是否按照成绩降序排序:\n\t\t\t1.是  2.否\n");
    scanf("%d",&t);
    if(t==1)
    {
        for(int i=1; i<x; i++)
        {
            for(int j=0; j<x-i; j++)
                if(stu[j].score<stu[j+1].score)
                {
                    stu1=stu[j];
                    stu[j]=stu[j+1];
                    stu[j+1]=stu1;
                }
        }
        for(int i=0; i<x; i++)
        {
            printf("%s %lld %f\n",stu[i].name,stu[i].num,stu[i].score);
        }
    }
    if(t==2)
    {
        for(int i=1; i<x; i++)
        {
            for(int j=0; j<x-i; j++)
                if(stu[j].score>stu[j+1].score)
                {
                    stu1=stu[j];
                    stu[j]=stu[j+1];
                    stu[j+1]=stu1;
                }
        }
        for(int i=0; i<x; i++)
        {
            printf("%s %lld %f\n",stu[i].name,stu[i].num,stu[i].score);
        }
    }
}
void xianshi()
{
    for(int i=0; i<x; i++)
    {

        printf("%s %lld %.2f\n",stu[i].name,stu[i].num,stu[i].score);
    }

}
void baocun()//文件保存
{
    FILE *fpw=fopen("student.txt","w");
    for(int i=0; i<x; i++)
    {
        fprintf(fpw,"%s %lld %f\n",stu[i].name,stu[i].num,stu[i].score);
    }
    printf("\t\t\t已保存\n");
}
int duwenjian()
{
    x=0;
    FILE *fpr=fopen("student.txt","r");
    if(fpr==NULL)
    {
        return 0;
    }

    else
    {
        while(fscanf(fpr,"%s %lld %f",&stu[x].name,&stu[x].num,&stu[x].score)!=EOF)
        {
            x++;
        }
    }
}
int main()
{
    int j;
    duwenjian();
    while(1)
    {
        system("cls");//清屏
        printf("\n\n\n\t\t\t 欢迎使用软工四班学生成绩管理系统\n\n\n");
        printf("\t\t\t***************************\n");
        printf("\t\t\t*          主菜单         *\n");
        printf("\t\t\t***************************\n\n\n");
        printf("\t\t         1 成绩输入   2 成绩删除\n\n");
        printf("\t\t         3 成绩查询   4 成绩排序\n\n");
        printf("\t\t         5 显示成绩   6 成绩保存\n\n");
        printf("\t\t         7 退出系统\n\n");
        printf("\t\t         请选择[1/2/3/4/5/6/7]:\n");
        scanf("%d",&j);
        switch(j)
        {
        case 1:
            printf("\t\t\t成绩输入\n");
            shuru();
            break;
        case 2:
            printf("\t\t\t成绩删除\n");
            shanchu();
            break;
        case 3:
            printf("\t\t\t成绩查询\n");
            chaxun();
            break;
        case 4:
            printf("\t\t\t成绩排序\n");
            paixu();
            break;
        case 5:
            printf("\t\t\t显示成绩\n");
            xianshi();
            break;
        case 6:
            printf("\t\t\t成绩保存\n");
            baocun();
            break;
        case 7:
            printf("\t\t\t退出系统\n");
            exit(0);//正常运行程序并退出程序
        default:
            printf("\t\t\t输入错误,请重新输入\n");
            break;
        }
        getch();//我们一般所使用的 getchar() 函数在读入一个字符时 必须按一下 enter 键,该代码才会继续运行;
//但是 getch() 函数读入一个字符时 不用 enter 代码会继续跑;
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值