首頁 > 軟體

C語言實現學生成績管理系統課程設計

2022-07-22 14:01:41

本文範例為大家分享了C語言實現學生成績管理系統的具體程式碼,供大家參考,具體內容如下

設計要求

設計學生成績管理系統

要求如下:

1.輸入學生資訊
2.統計學生成績
3.查詢並顯示學生成績
4.按姓名查詢,修改學生資料
5.顯示所有學生名單
6.查詢並刪除學生資訊
7.輸出個科目成績最高的學生

完整程式碼

#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<string.h>
struct Student
{
    int cls;
    char namee[10];
    char number[10];
    int chinese;
    int english;
    int computer;
    int math;
}stud1[100];
int menu()
{
    char a;
    while(a>'8'||a<'0')
    {
        system("cls");
        printf("*****    學生成績管理系統    *******n");
        printf("              1.輸入學生資訊n");
        printf("              2.統計學生成績n");
        printf("              3.查詢並顯示學生成績n");
        printf("              4.按姓名查詢,修改學生資料n");
        printf("              5.顯示所有學生名單n");
        printf("              6.查詢並刪除學生資訊n");
        printf("              7.輸出個科目成績最高的學生n");
        printf("               0.退出系統n");
        printf("************************************n");
        printf("請選擇(0-8)n");
        a=getchar();//鍵盤敲的字元賦給a 
    }
    return(a-'0');
}
/******************************************/
int Input(Student stud[],int n)      //輸入資料   定義輸入資料函數
{
    int i=0;
    char sign,x[10];
    for(;sign !='n'&&sign !='N';)
    {
        printf("               姓名:");
        scanf("%s",stud[n+i].namee);
        printf("               班級:");
        scanf("%d",&stud[n+i].cls);
        printf("               學號:");
        scanf("%s",stud[n+i].number);
        printf("               語文:");
        scanf("%d",&stud[n+i].chinese);

        printf("               數學:");
        scanf("%d",&stud[n+i].math);
        printf("               英語:");
        scanf("%d",&stud[n+i].english);
        printf("               計算機:");
        scanf("%d",&stud[n+i].computer);
        gets(x);
        printf("還有要輸入的資訊嗎?(y/n)");
        scanf("%c",&sign);
        i++;
    }
    return(n+i);
}
void Sort(Student stud[], int n)//根據平均分排序(冒泡法)
{
     int i,j;
     struct Student tmp;
     for (i=0;i<n;i++)
     {
         for (j=1;j<n-i;j++)
         {
              if ((stud[j-1].chinese+stud[j-1].english+stud[j-1].computer+stud[j-1].math)<(stud[j].chinese+stud[j].english+stud[j].computer+stud[j].math))
              {
                   tmp=stud[j-1];
                   stud[j-1]=stud[j];
                   stud[j]=tmp;
            }
         }
     }
} 
/***************統計資料*******/
void Display(Student stud[], int n)
{
    Sort(stud,n);
    int i;
    printf("     班級    學號    姓名   語文     數學    英語   計算機   總分   平均分n");
    for(i=1;i<n+1;i++)
    {   
        int s=stud[i-1].chinese+stud[i-1].math+stud[i-1].english+stud[i-1].computer;
        printf("%7d,%7s,%7s,%7d,%7d,%7d,%7d,%7d,%7dn",stud[i-1].cls,stud[i-1].number,stud[i-1].namee,stud[i-1].chinese,stud[i-1].math,stud[i-1].english,stud[i-1].computer,s,s/4);
        if(i>1 && i%10==0)
        {
            system("pause");
        }
    }
    system("pause");
        int a;
    printf("語文不及格的有:班級    姓名   學號    成績n"); 
    for(a=0;a<n;a++)
    { 
        if(stud[a].chinese<60)
        printf("           %7d %7s %7s% 7dn",stud[a].cls,stud[a].namee,stud[a].number,stud[a].chinese);
     } 
    printf("數學不及格的有:班級    姓名   學號    成績n"); 
    for(a=0;a<n;a++)
    { 
        if(stud[a].math<60)
    printf("   %7d %7s %7s %7dn",stud[a].cls,stud[a].namee,stud[a].number,stud[a].math);
     } 
    printf("英語不及格的有:班級    姓名   學號    成績n");
    for(a=0;a<n;a++)
    { 
        if(stud[a].english<60)
    printf("           %7d %7s %7s %7dn",stud[a].cls,stud[a].namee,stud[a].number,stud[a].english);
     } 
    printf("計算機不及格的有:班級    姓名   學號    成績n"); 
    for(a=0;a<n;a++)
    { 
        if(stud[a].computer<60)
    printf("            %7d %7s %7s %7dn",stud[a].cls,stud[a].namee,stud[a].number,stud[a].computer);
     } 
     system("pause");
}
/************查詢學生顯示其資訊*******************/
void Query(Student stud[],int n)
{
    char namee[20];
    printf("          輸入其姓名:n");
    scanf("%s",namee);
    int i=0;
    while(strcmp(stud[i].namee,namee)!=0&&i<n)
        i++;
    if(i==n)
    {
        printf("ttt沒有發現該學生的資料!n");
        return;
    }
    printf("          學號:%sn",stud[i].number);
    printf("          班級:%dn",stud[i].cls);
    printf("          語文:%dn",stud[i].chinese);
    printf("          英語:%dn",stud[i].english);
    printf("          數學:%dn",stud[i].math);
    printf("          計算機:%dn",stud[i].computer);
}
/************刪除學生資訊*********/
int Delete(Student stud[],int n)
{
    char s[20];
    int i=0,j;
    printf("       請輸入要刪除的學生的姓名:n");
    scanf("%s",s);
    while(strcmp(stud[i].namee,s)!=0&&i<n) i++; 
    if(i==n) 
    {
        printf("ttt沒有發現該學生資料!n");
        return(n); 
    } 
    for(j=i;j<n-1;j++) 
    { 
        strcpy(stud[j].number,stud[j+1].number);
        strcpy(stud[j].namee,stud[j+1].namee); 
        stud[j].cls=stud[j+1].cls;
        stud[j].chinese=stud[j+1].chinese;
        stud[j].math=stud[j+1].math;
        stud[j].english=stud[j+1].english; 
        stud[j].computer=stud[j+1].computer;
    } 
    printf("          當前資訊已刪除成功!"); 
    return(n-1); 
}
/****************修改資訊**********************/
int Revise(Student stud[],int n)
{
    int i=0;
    char na[10];
    scanf("%s",na);
    while(strcmp(stud[i].namee,na)!=0&&i<n)
        i++;
    if(i==n)
    {
        printf("ttt沒有發現該學生的資料!n");
    }
    printf("修改班級:n");
    scanf("%d",&stud[i].cls);
    printf("修改學號:n");
    scanf("%s",stud[i].number);
    printf("修改語文成績:n");
    scanf("%d",&stud[i].chinese);
    printf("修改英語成績:n");
    scanf("%d",&stud[i].english);
    printf("修改數學成績:n");
    scanf("%d",&stud[i].math);
    printf("修改計算機成績:n");
    scanf("%d",&stud[i].computer);
    printf("修改成功n");
    return(n);
}

/***************************************顯示學生名單**************************************/
void show(Student stud[],int n)
{
    for(int i=0;i<n;i++)
    {
        printf("    %sn",stud[i].namee);
    }
    system("pause");
}
//
void SercherH(Student stud[],int n)//搜尋成績最高者輸出 
{
    int a;
    int max ;
    printf("語文成績最高為:班級    姓名   學號    成績n"); 
    max=stud[0].chinese;
    for(a=1;a<n;a++)
    { 
        if(stud[a].chinese>max)
        max=stud[a].chinese;
    }
    for(a=0;a<n;a++)
    { 
        if(max==stud[a].chinese)
        printf("           %7d %7s %7s% 7dn",stud[a].cls,stud[a].namee,stud[a].number,stud[a].chinese);
    }
    printf("數學成績最高為:班級    姓名   學號    成績n"); 
    max=stud[0].math;
    for(a=1;a<n;a++)
    { 
        if(stud[a].math>max)
        max=stud[a].math;
    }
    for(a=0;a<n;a++)
    { 
        if(max==stud[a].math)
        printf("           %7d %7s %7s% 7dn",stud[a].cls,stud[a].namee,stud[a].number,stud[a].math);
    }
    printf("英語成績最高為:班級    姓名   學號    成績n"); 
    max=stud[0].english; 
    for(a=1;a<n;a++)
    { 
        if(stud[a].english>max)
        max=stud[a].english;
    }
    for(a=0;a<n;a++)
    { 
        if(max==stud[a].english)
        printf("           %7d %7s %7s% 7dn",stud[a].cls,stud[a].namee,stud[a].number,stud[a].english);
    }
    printf("計算機成績最高為:班級    姓名   學號    成績n"); 
    max=stud[0].computer;
    for(a=1;a<n;a++){ 
        if(stud[a].computer>max)
        max=stud[a].computer;}
    for(a=0;a<n;a++)    { 
        if(max==stud[a].computer)
        printf("           %7d %7s %7s% 7dn",stud[a].cls,stud[a].namee,stud[a].number,stud[a].computer);}
     system("pause");}
/*****************主函數呼叫*****************/
int main()
{
    int n1=0;
    for(;;)
    {
        switch(menu()){
        case 1:
            printf("               輸入學生資料n");
            n1=Input(stud1,n1);break;
        case 2:
            printf("                  輸出所有學生資料n");
                Display(stud1,n1);break;
        case 3:
            int r;printf("               查詢學生n");
            Query(stud1,n1);
system("pause");break;
        case 4:
            int p;printf("               修改學生資料n");
printf("               輸入你要修改的學生的姓名:");
                n1=Revise(stud1,n1);
            system("pause");break;
        case 5:
            printf("               顯示所有學生名單:n");
                show(stud1,n1);
            system("pause");break;
        case 6:
            printf("               查詢並刪除學生資訊n");
            int o;
n1=Delete(stud1,n1);
system("pause");break;
        case 7:
            int l;SercherH(stud1,n1);break;    
        case 0:                
            system("pause");break;
        }
    }
}

執行結果

後面的需要執行哪項功能,就輸入對應數位就可以!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com