大一上c語言學生管理系統


大一上c語言學生管理系統

你好!如果這是你第一次使用 c語言做完整的一個簡單小程序,以下內容包括每個功能函數。如果你想學習c語言不那麼枯燥, 可以仔細閱讀這篇文章,瞭解一下c語言的基本語法知識。
**

ps:個人主頁有完整版代碼

**

主要函數功能

1.打印功能菜單。
2. 錄入學生信息。
3. 計算所以學生總分和平均分。
4. 根據學生分數由高到低輸出學生信息。
5. 根據學生學號由小到大輸出學生信息。
6. 輸入學生學號查找該學生對應的信息。
7. 優秀、合格,不合格等所佔百分比及人數。
8. 輸出所有學生信息。
初始界面

學生信息結構體

學生信息 數據類型
姓名 字符串數組
學號 long
分數 int

##這是我們的主函數##
注:主函數的n是學生總人數,是隨着錄入學生信息函數的修改而變化的。

int main()
{
 int n=0;
 while(1)
    {
        void List();                              //輸出列表
        void Input(STU stu[],int *n);             //輸入學生數據
        void Sumandave(STU stu[],int n);          //和與平均值
        void Hightolow(STU stu[],int n);          //分數由大到小
        void Smalltolarge(STU stu[],int n);       //學號由小到大
        void Search(STU stu[],int n);             //查找某個學生信息
        void Percentage(STU stu[],int n);         //所佔人數和百分比
        void Outputinformation(STU stu[],int n);  //輸出所以學生信息
        system("cls");        //清屏
        List();               //輸出列表
        char c=getch();       //頭文件conio,按下某個字符時,函數自動讀取,無需按回車.
  switch(c)
        {
        case '1':
            Input(&stu1,&n);
            break;
        case '2':
            Sumandave(&stu1,n);
            break;
        case '3':
            Hightolow(&stu1,n);
            break;
        case '4':
            Smalltolarge(stu1,n);
            break;
        case '5':
            Search(stu1,n);
            break;
        case '6':
            Percentage(&stu1,n);
            break;
        case '7':
            Outputinformation(&stu1,n);
            break;
        case '0':
            exit(0);
            break;                     //exit(0)退出程序
        }
    }

1、打印功能菜單函數

//輸出列表
void List()
{
    printf("*****************************************************************\t\t\t\n");
    printf("*\t\t歡迎使用高校學生成績管理系統ws版\t\t*\n");
    printf("*\t\t\t  請選擇功能\t\t\t\t*\n");
    printf("*****************************************************************\t\t\t\n");
    printf("*\t  1.Input record\t\t\t\t\t*\n");
    printf("*\t  2.Caculate total and average socre of course\t\t*\n");
    printf("*\t  3.Sort in descending older by score\t\t\t*\n");
    printf("*\t  4.Sort in ascending older by number\t\t\t*\n");
    printf("*\t  5.Search by number\t\t\t\t\t*\n");
    printf("*\t  6.Statistic analysis\t\t\t\t\t*\n");
    printf("*\t  7.List record\t\t\t\t\t\t*\n");
    printf("*\t  0.Exit\t\t\t\t\t\t*\n");
    printf("*****************************************************************\t\t\t\n");
}

2、錄入學生信息函數

//輸入n個學生信息
void Input(STU stu[],int *n)        //取n地址,及時更新人數數量,以便更新數據
{
    int m;
    static int i=0;
    printf("請輸入要錄入的學生人數:");
    scanf("%d",&m);
    for(; i<m+*n; i++)
    {
        printf("請輸入學生姓名:");
        scanf("%s",stu[i].name);
        printf("請輸入學生學號:");
        scanf("%ld",&stu[i].id);
        printf("請輸入學生分數:");
        scanf("%d",&stu[i].score);
        printf("***********************\n");
    }
    *n+=m;
    printf("學生信息錄入成功!!!\n");
    system("pause");
}

3、計算所以學生總分和平均分函數

//計算總分和平均分
void Sumandave(STU stu[],int n)
{
    int i,sum=0;
    float ave;
    for(i=0; stu[i].score; i++)
    {
        sum+=stu[i].score;
    }
    ave=(float)sum/n;
    printf("%d名同學的sum:%d\n",i,sum);
    printf("%d名同學的ave:%.2f\n",i,ave);
    system("pause");
}

4、 根據學生分數由高到低輸出學生信息函數

//分數由高到低排序
void Hightolow(STU stu[],int n)
{
    char x[100];
    int i,j;
    long int t;
    for(i=0; i<n-1; i++)
    {
        for(j=i; j<n; j++)
        {
            if(stu[i].score<stu[j].score)
            {
                t=stu[i].score;
                stu[i].score=stu[j].score;
                stu[j].score=t;
                t=stu[i].id;
                stu[i].id=stu[j].id;
                stu[j].id=t;
                strcpy(x,stu[i].name);
                strcpy(stu[i].name,stu[j].name);
                strcpy(stu[j].name,x);
            }
        }
    }
    printf("%d名同學分數由高到低:\n",n);
    printf("姓名:");
    for(int p=0; p<n; p++)
    {
        printf("%10s",stu[p].name);
    }
    printf("\n");
    printf("分數:");
    for(int p=0; p<n; p++)
    {
        printf("%10d",stu[p].score);
    }
    printf("\n");
    printf("學號:");
    for(int p=0; p<n; p++)
    {
        printf("%10ld",stu[p].id);
    }
    printf("\n");
    system("pause");
}

5、 根據學生學號由小到大輸出學生信息函數

//學號由小到大排序
void Smalltolarge(STU stu[],int n)
{
    char x[100];
    int i,j;
    long int t;
    for(i=0; i<n-1; i++)
    {
        for(j=i; j<n; j++)
        {
            if(stu[i].id>stu[j].id)
            {
                t=stu[i].score;
                stu[i].score=stu[j].score;
                stu[j].score=t;
                t=stu[i].id;
                stu[i].id=stu[j].id;
                stu[j].id=t;
                strcpy(x,stu[i].name);
                strcpy(stu[i].name,stu[j].name);
                strcpy(stu[j].name,x);
            }
        }
    }
    printf("%d名同學學號由低到高:\n",n);
    printf("姓名:");
    for(int p=0; p<n; p++)
    {
        printf("%10s",stu[p].name);
    }
    printf("\n");
    printf("分數:");
    for(int p=0; p<n; p++)
    {
        printf("%10d",stu[p].score);
    }
    printf("\n");
    printf("學號:");
    for(int p=0; p<n; p++)
    {
        printf("%10ld",stu[p].id);
    }
    printf("\n");
    system("pause");
}

6、 輸入學生學號查找該學生對應的信息函數

//輸入學號查找學生輸出對應信息
void Search(STU stu[],int n)
{
    int i;
    long int p;
    printf("請輸入要查找的學生學號:");
    scanf("%ld",&p);
    for(i=0; i<n; i++)
    {
        if(p==stu[i].id)
        {
            printf("該學生姓名:%s\n",stu[i].name);
            printf("該學生學號:%d\n",stu[i].id);
            printf("該學生成績:%d",stu[i].score);
            break;
        }
    }
    if(i==n)
        printf("Not found!\n");
    printf("\n");
    system("\npause");
}

7、 優秀、合格,不合格等所佔百分比及人數函數

//每級別人數所佔百分比
void Percentage(STU stu[],int n)
{
    int m;
    static int a[5]= {0},i=0;
    float b[i];
    for(; i<n; i++)           //找各級別所佔人數
    {
        m=stu[i].score;
        m/=10;
        switch(m)              //計算各級別人數
        {
        case 10:
        case  9:
            a[4]++;
            break;
        case  8:
            a[3]++;
            break;
        case  7:
            a[2]++;
            break;
        case  6:
            a[1]++;
            break;
        default:
            a[0]++;
            break;
        }
    }
    printf("總人數爲:%d人\n",n);                          //各級別人數百分比
    printf("優秀人數爲%d人。所佔百分比爲:%.2f%%\n",a[4],(float)100*a[4]/n);
    printf("良好人數爲%d人。所佔百分比爲:%.2f%%\n",a[3],(float)100*a[3]/n);
    printf("中等人數爲%d人。所佔百分比爲:%.2f%%\n",a[2],(float)100*a[2]/n);
    printf("及格人數爲%d人。所佔百分比爲:%.2f%%\n",a[1],(float)100*a[1]/n);
    printf("不及格人數爲%d人。所佔百分比爲:%.2f%%\n",a[0],(float)100*a[0]/n);  //%%打出%
    system("pause");
}

8、 輸出所有學生信息函數

//輸出每個學生學號和成績
void Outputinformation(STU stu[],int n)
{
    int i;
    for(i=0; i<n; i++)                 //輸出n個學號和分數
    {
        printf("\n學生姓名:%s\n學號:%ld\n分數:%d\n****************",stu[i].name,stu[i].id,stu[i].score);
    }
    printf("\n");
    system("pause");
}

**********************************************************************

希望可以對您有所幫助!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章