学生信息管理系统

#include <iostream>
#include <stdio.h>
#include<stdlib.h>
#include<windows.h>

using namespace std;
struct xs
{
    int xh;char xb,xm[20];
    double cj1,cj2,zong,jun;
    xs*next;int  mc;
};


xs *h=NULL;
void cc(xs * h,const char * filename)
{
    FILE *fp=fopen(filename,"w");
    xs*p=h;
    if(h==NULL)
    {
        printf("\n         您还未输入数据呢!请到1中输入!正在跳转……");
        Sleep(2000);system("cls");return;
    }
    while(p!=NULL)
    {
        fprintf(fp,"%d %s %c %.2f %.2f\n",p->xh,p->xm,p->xb,p->cj1,p->cj2);
        p=p->next;
    }
     fclose(fp);
    system("cls");
    printf("\n         已成功存储!正在返回……");Sleep(1000);system("cls");
}
void change(xs*a1,xs*a2)
{
    int xh,mc;char xm[20],xb;
    double cj1,cj2,zong,jun;
    xh=a1->xh;strcpy(xm,a1->xm);
    xb=a1->xb;cj1=a1->cj1;cj2=a1->cj2;zong=a1->zong;jun=a1->jun;mc=a1->mc;
    a1->xh=a2->xh;strcpy(a1->xm,a2->xm);
    a1->xb=a2->xb;a1->cj1=a2->cj1;a1->cj2=a2->cj2;a1->zong=a2->zong;a1->jun=a2->jun;a1->mc=a2->mc;
    a2->xh=xh;strcpy(a2->xm,xm);
    a2->xb=xb;a2->cj1=cj1;a2->cj2=cj2;a2->zong=zong;a2->jun=jun;a2->mc=mc;
}
xs*dq(xs*h)
{
    FILE *fp=fopen("amazing.txt","r");
    if(!fp || feof(fp))
    {
        system("cls");
        printf("\n         文件里未存储文件!请在1中输入!正在返回……");
        Sleep(1000);system("cls");
    }
    int xh;
    while(fscanf(fp,"%d",&xh)!=EOF)
    {
        xs*p=(xs*)malloc(sizeof(xs));
        p->xh=xh;
        fscanf(fp," %s %c %lf %lf\n",&p->xm,&p->xb,&p->cj1,&p->cj2);
        p->zong=p->cj1+p->cj2;p->jun=(p->zong)/2.0;


        if(h==NULL)
    {
        h=p;h->next=NULL;
    }
    else
        {
    xs *pp=h;
    while(pp->next!=NULL)
    {
        pp=pp->next;
    }
    pp->next=p;
    p->next=NULL;
    }
    }
                xs*p0=h,*p=h->next;
            while(p0!=NULL)
            {
                while(p!=NULL)
                {
                    if(p0->zong<p->zong)
                    {
                        change(p0,p);
                    }
                    p=p->next;
                }
                p0=p0->next;
                if(p0!=NULL)
                p=p0->next;
            }
    int ppp=1;xs*p3=h;
    while(p3!=NULL)
    {
        p3->mc=ppp++;
        p3=p3->next;
    }

    system("cls");
    printf("\n         已成功读取!正在返回……");Sleep(1000);system("cls");
    return h;
}
xs * dele(xs*h)
{
    system("cls");
    printf("\n         请输入您想删除的学生学号\n         ");long long xh;
    cin>>xh;
    xs *p,*pp;p=h;pp=p->next;int flag=0;
    if(p==NULL)
    {
        printf("         目前还未输入呢!请在1中输入!跳转中……");Sleep(2000);system("cls");
        return h;
    }
    if(h->xh==xh)
    {
        printf("         你确定想删除吗?1:确定   2:取消\n         ");
        int gg;cin>>gg;
        if(gg==2)
         {
                    system("cls");
                    return h;
                }
        xs*x=h->next;
        free(h);
        h=x;
        xs*p0=h,*p1=h->next;
            while(p0!=NULL)
            {
                while(p1!=NULL)
                {
                    if(p0->zong<p1->zong)
                    {
                        change(p0,p1);
                    }
                    p1=p1->next;
                }
                p0=p0->next;
                if(p0!=NULL)
                p1=p0->next;
            }
    int ppp=1;xs*p3=h;
    while(p3!=NULL)
    {
        p3->mc=ppp++;
        p3=p3->next;
    }
        printf("         已成功删除!正在返回……");
        Sleep(1000);system("cls");
        return h;
    }
    while(pp!=NULL)
    {
            if(pp->xh==xh)
             {
                printf("         你确定想删除吗?1:确定   2:取消\n         ");
                int gg;cin>>gg;
                if(gg==2)
                {
                    system("cls");
                    return h;
                }
              p->next=pp->next;
              free(pp);
              xs*p0=h,*p1=h->next;
            while(p0!=NULL)
            {
                while(p1!=NULL)
                {
                    if(p0->zong<p1->zong)
                    {
                        change(p0,p1);
                    }
                    p1=p1->next;
                }
                p0=p0->next;
                if(p0!=NULL)
                p1=p0->next;
            }
    int ppp=1;xs*p3=h;
    while(p3!=NULL)
    {
        p3->mc=ppp++;
        p3=p3->next;
    }
              flag=1;
              break;
              }
            p=pp; pp=p->next;
    }
    if(flag==0)
    {
        printf("         未找到有该学号的学生!无需删除或重新输入,正在跳转……");Sleep(2000);system("cls");
        return h;
    }else
    {
        printf("         已成功删除!正在返回……");
        Sleep(1000);system("cls");
        return h;
    }
}

xs*px(xs*h)
{
    if(h==NULL)
    {
        printf("         目前还未输入呢!请在1中输入!跳转中……");
        Sleep(1000);system("cls");
    }
    printf("\n         请对应输入您要排序的内容:\n         1:高数成绩  2:程序与设计成绩  3:总成绩\n         ");
    long long x;cin>>x;
    while(x!=1&&x!=2&&x!=3)
    {
        printf("         请重新正确对应数字输入1或2或3!");
        cin>>x;
    }
    if(x==1)
    {
        printf("         您想从小到大还是从大到小排序呢?1.从小到大  2.从大到小\n         ");
        long long t;cin>>t;
        if(t==1)
        {
            xs*p0=h,*p=h->next;
            while(p0!=NULL)
            {
                while(p!=NULL)
                {
                    if(p0->cj1>p->cj1)
                    {
                        change(p0,p);
                    }
                    p=p->next;
                }
                p0=p0->next;
                if(p0!=NULL)
                p=p0->next;
            }
        printf("         您已成功从小到大以高数成绩排序!正在跳转……");
        Sleep(1000);system("cls");return h;
        }
        else
        {
            xs*p0=h,*p=h->next;
            while(p0!=NULL)
            {
                while(p!=NULL)
                {
                    if(p0->cj1<p->cj1)
                    {
                        change(p0,p);
                    }
                    p=p->next;
                }
                p0=p0->next;
                if(p0!=NULL)
                p=p0->next;
            }
        printf("         您已成功从大到小以高数成绩排序!正在跳转……");
        Sleep(1000);system("cls");return h;
        }
    }
    else if(x==2)
    {
        printf("         您想从小到大还是从大到小排序呢?1.从小到大  2.从大到小\n         ");
        long long t;cin>>t;
        if(t==1)
        {
            xs*p0=h,*p=h->next;
            while(p0!=NULL)
            {
                while(p!=NULL)
                {
                    if(p0->cj2>p->cj2)
                    {
                        change(p0,p);
                    }
                    p=p->next;
                }
                p0=p0->next;
                if(p0!=NULL)
                p=p0->next;
            }
        printf("         您已成功从小到大以程序设计成绩排序!正在跳转……");
        Sleep(1000);system("cls");return h;
        }
        else
        {
            xs*p0=h,*p=h->next;
            while(p0!=NULL)
            {
                while(p!=NULL)
                {
                    if(p0->cj2<p->cj2)
                    {
                        change(p0,p);
                    }
                    p=p->next;
                }
                p0=p0->next;
                if(p0!=NULL)
                p=p0->next;
            }
        printf("         您已成功从大到小以程序设计成绩排序!正在跳转……");
        Sleep(1000);system("cls");return h;
        }
    }else if(x==3)
    {
        printf("         您想从小到大还是从大到小排序呢?1.从小到大  2.从大到小\n         ");
        long long t;cin>>t;
        if(t==1)
        {
            xs*p0=h,*p=h->next;
            while(p0!=NULL)
            {
                while(p!=NULL)
                {
                    if(p0->zong>p->zong)
                    {
                        change(p0,p);
                    }
                    p=p->next;
                }
                p0=p0->next;
                if(p0!=NULL)
                p=p0->next;
            }
        printf("         您已成功从小到大以总成绩排序!正在跳转……");
        Sleep(1000);system("cls");return h;
        }
        else
        {
            xs*p0=h,*p=h->next;
            while(p0!=NULL)
            {
                while(p!=NULL)
                {
                    if(p0->zong<p->zong)
                    {
                        change(p0,p);
                    }
                    p=p->next;
                }
                p0=p0->next;
                if(p0!=NULL)
                p=p0->next;
            }
        printf("         您已成功从大到小以总成绩排序!正在跳转……");
        Sleep(1000);system("cls");return h;
        }
    }
    return h;
}
void shuchu(xs*pp)
{
    printf("%4d %10s",pp->xh,pp->xm);
    if(pp->xb=='f')printf("    女 ");
    else printf("    男 ");
    printf("   %4.2f          %4.2f       %4.2f   %4.2f  %d\n",pp->cj1,pp->cj2,pp->zong,pp->jun,pp->mc);
}
void shuru(xs*p)
{
    printf("         请输入学号:\n         ");
    cin>>p->xh;
    printf("         请输入姓名:\n         ");
    cin>>p->xm;
    printf("         请输入姓别(m或f):\n         ");
    cin>>p->xb;
    while(p->xb!='m'&&p->xb!='f')
    {
        printf("         请正确输入性别!男生请输入m,女生请输入f\n         ");
        cin>>p->xb;
    }
    printf("         请输入高数成绩:\n         ");
    cin>>p->cj1;
    printf("         请输入程序与设计成绩:\n         ");
    cin>>p->cj2;
    p->zong=p->cj1+p->cj2;
    p->jun=p->zong/2.0;
}
void cx(xs*h)
{
    printf("\n         请输入您想查询的学生学号\n         ");
    long long xh;
    cin>>xh;
    xs*p=h;
    if(h==NULL)
    {
        printf("         目前还未输入呢!请在1中输入!跳转中……");Sleep(2000);system("cls");
        return;
    }
    while(p!=NULL)
    {
        if(p->xh==xh)
            {
                shuchu(p);
                printf("         返回请输入1:\n         ");
                bool m;cin>>m;
                while(m!=1)
                {
                    system("cls");
                    printf("         请重新输入1!\n         ");
                    cin>>m;
                }
                system("cls");
                return;
            }
        p=p->next;
    }
    printf("         未找到该学号的学生!正在返回……");Sleep(1000);system("cls");
}
xs*xg(xs*h)
{
    system("cls");
    printf("\n         请输入您想更改的学生学号\n         ");long long xh;
    cin>>xh;
    xs *p;p=h;
    if(p==NULL)
    {
        printf("         目前还未输入呢!请在1中输入!跳转中……");Sleep(2000);system("cls");
        return h;
    }
    while(p!=NULL)
    {
            if(p->xh==xh)
             {
        printf("         请输入你想改的学生信息\n");
        Sleep(1000);system("cls");
        shuru(p);
        xs*p0=h,*p1=h->next;
            while(p0!=NULL)
            {
                while(p1!=NULL)
                {
                    if(p0->zong<p1->zong)
                    {
                        change(p0,p1);
                    }
                    p1=p1->next;
                }
                p0=p0->next;
                if(p0!=NULL)
                p1=p0->next;
            }
    int ppp=1;xs*p3=h;
    while(p3!=NULL)
    {
        p3->mc=ppp++;
        p3=p3->next;
    }
        printf("         修改成功!正在返回……");
        Sleep(1000);system("cls");
             return h;
              }
        p=p->next;
    }
        printf("         未找到有该学号的学生!正在返回……");
        Sleep(1000);system("cls");
        return h;

}

void sc(xs * h)
{
    if(h==NULL)
    {
        printf("\n         目前还未输入呢!请在1中输入!跳转中……");Sleep(2000);system("cls");
    }
    else
    {
        printf("\n  学号       姓名  性别  高数成绩  程序与设计成绩    总分  平均分  名次\n");
        xs*pp=h;
        while(pp!=NULL)
        {
            shuchu(pp);
            pp=pp->next;
        }
    }
}

xs *zj(xs *h)
{
    printf("         您要增加多少人的信息?\n         ");
    long long x;
    cin>>x;
    printf("         好的,正在跳转……");
    Sleep(1000);
    long long o=1;
    while(x--)
    {
    system("cls");
     printf("\n         第%I64d人:\n",o++);
    xs *p=(xs*)malloc(sizeof(xs));
    shuru(p);
    if(h==NULL)
    {
        h=p;h->next=NULL;
    }
    else
        {
    xs *pp=h;
    while(pp->next!=NULL)
    {
        pp=pp->next;
    }
    pp->next=p;
    p->next=NULL;
    }
            xs*p0=h,*p1=h->next;
            while(p0!=NULL)
            {
                while(p1!=NULL)
                {
                    if(p0->zong<p1->zong)
                    {
                        change(p0,p1);
                    }
                    p1=p1->next;
                }
                p0=p0->next;
                if(p0!=NULL)
                p1=p0->next;
            }
    int ppp=1;xs*p3=h;
    while(p3!=NULL)
    {
        p3->mc=ppp++;
        p3=p3->next;
    }
    }
    printf("         增加成功!跳转中……");
    Sleep(1000);
    system("cls");
    return h;
}

int main()
{

    printf("\n         1:增加学生信息         5:删除学生信息\n");
    printf("         2:修改学生信息         6:对学生信息进行排序\n");
    printf("         3:显示学生信息         7:保存学生信息至纪录文件\n");
    printf("         4:查询学生信息         8:从纪录文件读取学生信息\n");
    printf("         0:运行结束\n         ");
    long long u;
    cin>>u;
    while(u!=0)
    {
        system("cls");
        switch(u)
        {
            case 1:h=zj(h);break;
            case 2:h=xg(h);break;
            case 3:sc(h);break;
            case 4:cx(h);break;
            case 5:h=dele(h);break;
            case 6:h=px(h);break;
            case 7:cc(h,"amazing.txt");break;
            case 8:h=dq(h);break;
            default:system("cls");printf("         请重新对应输入0~8的数字,跳转中……\n");Sleep(1000);system("cls");
        }
        if(u!=3)
    {
    printf("\n         1:增加学生信息         5:删除学生信息\n");
    printf("         2:修改学生信息         6:对学生信息进行排序\n");
    printf("         3:显示学生信息         7:保存学生信息至纪录文件\n");
    printf("         4:查询学生信息         8:从纪录文件读取学生信息\n");
    printf("         0:运行结束\n         ");
    }else
    {
        printf("\n         返回请输入1:\n         ");bool c;
        cin>>c;system("cls");
    printf("\n         1:增加学生信息         5:删除学生信息\n");
    printf("         2:修改学生信息         6:对学生信息进行排序\n");
    printf("         3:显示学生信息         7:保存学生信息至纪录文件\n");
    printf("         4:查询学生信息         8:从纪录文件读取学生信息\n");
    printf("         0:运行结束\n         ");
    }
     cin>>u;
    }
    return 0;
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值