c语言学生成绩管理系统-c语言坐标问题-c语言弹出窗口显示

学生成绩管理系统

简介
此学生成绩管理系统是用工具codeblock开发的,语言类型c语言,实现功能:1、创建学生成绩库 2、学生信息显示 3、学生学号排序 4、学生成绩排序 5、添加学生信息 6、根据学号删除学生信息 7、查找学生信息 、8退出程序。
本次实验实现了c语言坐标显示和window窗体显示
先上一下试验界面图
在这里插入图片描述

欢迎关注博主,博主会不定时更新学习的知识和大家共享

想要源代码的可以关注微信公众号回复:c学生成绩管理系统
在这里插入图片描述

实验代码解析

运行程序
出现窗体程序,点击是进入成绩管理系统,点击否退出
在这里插入图片描述

窗体代码


SetConsoleTitle("学生英语成绩管理系统");//窗口名称
IDYES== MessageBox(NULL,"欢迎进入学生管理系统","半熟的瓜",MB_YESNO)

显示界面的代码

int showlist(student *head,int x,int y)
{
    int i;
    int out;
    char str[10][40]={
        "**************************************",
        "***********1.创建学生成绩库***********",
        "***********2.学生学号排序*************",
        "***********3.学生成绩排序*************",
        "***********4.添加学生信息*************",
        "***********5.根据学号删除学生信息*****",
        "***********6.修改学生信息*************",
        "***********7.查找学生信息*************",
        "***********8.退出程序*****************",
        "**************************************"
    };
    system("cls");//清屏函数

    for(i=0;i<10;i++)
    {
        gotoxy(30,i);
        printf("%s\n",str[i]);
    }
    Dayinlist(head,x,y);//每个选择执行完输出新的学生信息
    printf("\n请输入你的选择(1-8):");
    scanf("%d",&out);
    return out;
}

坐标的代码

void gotoxy(int x,int y)
{
    COORD pos;
    pos.X=x;
    pos.Y=y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}

创建学生链表的代码

void Createlist(int n,student *head)
{
    student *p,*pre,*q;
    pre=head;
    q=head;
    int i;
    for(i=0;i<n;i++)
    {
        p=(student *)malloc(sizeof(student));
        printf("学号  成绩:");
        scanf("%lf%lf",&p->sno,&p->Escore);
        q=head->next;
        while(q)
        {
            if(q->sno==p->sno)
            {
                printf("添加错误,已经有此学生的信息!!\n请重新输入!\n");
                i--;
                free(p);//释放空间
                break;
            }
            else
                q=q->next;

        }
        if(q==NULL)
        {
            pre->next=p;//插入链表
            p->number=pre->number+1;
            pre=p;
            pre->next=NULL;
        }
    }
    printf("创建成功!");
    system("pause");
}

输出学生信息

void Dayinlist(student *h,int x,int y)
{
    student *p;
    p=h->next;
    if(p==NULL)
    {
        gotoxy(x,y);
        printf("没有学生信息!!\n");
    }
    else
    {
        gotoxy(x-1,y);
        printf("-------------------");
        gotoxy(x,++y);
        printf("序号");
        gotoxy(x+5,y);
        printf("|");
        gotoxy(x+6,y);
        printf("学号");
        gotoxy(x+11,y);
        printf("|");
        gotoxy(x+12,y);
        printf("英语成绩");
        while(p)
        {
            gotoxy(x,++y);
            printf("%d",p->number);
            gotoxy(x+5,y);
            printf("|");
            gotoxy(x+6,y);
            printf("%.lf",p->sno);
            gotoxy(x+11,y);
            printf("|");
            gotoxy(x+12,y);
            printf("%.2lf",p->Escore);
            //printf("%d\t%.2lf\n",p->sno,p->Escore);
            p=p->next;
        }
        gotoxy(x-1,++y);
        printf("-------------------\n");
    }
    //system("pause");//光标等待
}

学生学号选择排序

//学生学号,选择排序
void Sno_paixu(student *h,int n)
{
    int i,j;
    double temp;
    student *p,*q;
    p=h->next;
    if(p==NULL)
        printf("没有学生信息!!\n");
    else
    {
        for(i=0;i<n-1;i++)
        {
            q=p->next;
            for(j=i+1;j<n;j++)
            {
                if(q->sno<p->sno)
                {
                    temp=p->sno;
                    p->sno=q->sno;
                    q->sno=temp;
                    temp=p->Escore;
                    p->Escore=q->Escore;
                    q->Escore=temp;
                }
                q=q->next;
            }
            p=p->next;
        }
        printf("排序成功!\n");
    }
    system("pause");

}

学生成绩冒泡排序

//学生成绩排序,冒泡排序
void Escore_list(student *h,int n)
{
    int i,j;
    double temp;
    student *p,*q;
    p=h->next;
    if(p==NULL)
        printf("没有学生信息!!\n");
    else
    {
        for(i=0;i<n-1;i++)
        {
            p=h->next;
            for(j=0;j<n-i-1;j++)
            {
                q=p->next;
                if(q->Escore<p->Escore)
                {
                    temp=p->sno;
                    p->sno=q->sno;
                    q->sno=temp;
                    temp=p->Escore;
                    p->Escore=q->Escore;
                    q->Escore=temp;
                }
                p=p->next;
            }
        }
        printf("排序成功!\n");
    }
    system("pause");
}

添加学生的信息

//添加学生的信息
void add_list(student *h,int *n)
{
    int a,i;
    student *en,*p,*pre;
    pre=h;
    printf("请输入添加学生的个数:");
    scanf("%d",&a);
    *n+=a;//学生人数添加
    for(i=0;i<a;i++)
    {
        printf("学号  英语成绩:");
        en=(student *)malloc(sizeof(student));
        scanf("%lf%lf",&en->sno,&en->Escore);
        p=h->next;
        //判断添加的是否已存在
        while(p)
        {
            if(p->sno==en->sno)
            {
                printf("添加错误,已经有此学生的信息!!\n请重新输入!\n");
                i--;
                free(en);//释放空间
                break;
            }
            pre=p;
            p=p->next;
        }
        //当p==NULL说明没有此学生的信息
        if(p==NULL)
        {
            pre->next=en;
            en->number=pre->number+1;
            pre=en;
            pre->next=NULL;
        }
    }
    printf("添加完毕!!!\n");
    system("pause");
}

根据学号删除学生的信息

//根据学号删除学生的信息
void delete_list(student *h)
{
    double s;
    student *p,*pre;
    pre=h;
    p=pre->next;
    printf("请输入所要删除的学生的学号:");
    scanf("%lf",&s);
    while(p)
    {
        //找到删除学生的学号
        if(p->sno==s)
        {
            pre->next=p->next;
            free(p);
            pre=pre->next;
            while(pre)
            {
                pre->number--;
                pre=pre->next;
            }
            break;
        }
        pre=p;
        p=p->next;

    }
    //没有找到所删除学生的信息
    if(p==NULL)
        printf("没有找到该学生的学号!\n");
    else
        printf("删除成功!\n");
    system("pause");
}

修改学生的信息

//修改学生的信息
void revise_list(student *h)
{
    student *p;
    p=h->next;
    int a;
    double s;
    printf("请输入所要修改信息的学生的学号:");
    scanf("%lf",&s);
    while(p)
    {
        //找所要修改的学生信息
        if(p->sno==s)
        {
            printf("1、修改学号的信息\n");
            printf("2、修改成绩的信息\n请输入做要修改的属性序号:");
            while(1)
            {
                scanf("%d",&a);
                if(a==1)
                {
                    printf("学号修改为:");
                    scanf("%lf",&p->sno);
                    break;
                }
                else if(a==2)
                {
                    printf("成绩修改为:");
                    scanf("%lf",&p->Escore);
                    break;
                }
                else
                    printf("没有该属性的序号,请再输入一次:");
            }
            break;
        }
        p=p->next;
    }
    if(p==NULL)
        printf("没有该学号!\n");
    else
        printf("修改成功!\n");
    system("pause");
}

查找学生信息

//查找学生信息
void Select_list(student *h)
{
    double s;
    int t,c=0;//c是标志位
    student *p;
    p=h->next;

    printf("1.学号查找\n");
    printf("2.成绩查找\n请输入你们所要查找的序号:");
    while(1)
    {
        scanf("%d",&t);
        if(t==1||t==2)
            break;
        else
            printf("选择错误,请再输入一次:");
    }

    if(t==1)
    {
        printf("请输入学号:");
        scanf("%lf",&s);
        while(p)
        {
            if(p->sno==s)
            {
                printf("学号:%.lf成绩:%.2lf\n",p->sno,p->Escore);
                c=1;
            }
            p=p->next;
        }
    }
    else
    {
        printf("请输入成绩:");
        scanf("%lf",&s);
        while(p)
        {
            if(p->Escore==s)
            {
                printf("学号:%.lf成绩:%.2lf\n",p->sno,p->Escore);
                c=1;
            }
            p=p->next;
        }
    }
    if(c==0)
        printf("没有此学生信息!!");
    system("pause");
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值