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");
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章