首頁 > 軟體

基於C語言實現簡單學生成績管理系統

2022-08-31 14:02:10

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

一、系統主要功能

1、密碼登入
2、輸入資料
3、查詢成績
4、修改成績
5、輸出所有學生成績
6、退出系統

二、程式碼實現

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 10
struct student
{
    char num[10];
    char name[20];
    int old;
    char add[30];
    char xb[5];
    char mc[5];
    int ds;
    int eng;
    int math;
    int lan;
};
struct student stu[N];
int count=0;
void insert(int i) //輸入學生的具體資訊
{
    printf("第%d個學生的姓名:",i);
    scanf("%s",stu[i].name);
    printf("第%d個學生的年齡:",i);
    scanf("%d",&stu[i].old);
    printf("第%d個學生的住址:",i);
    scanf("%s",stu[i].add);
    printf("第%d個學生的性別:",i);
    scanf("%s",stu[i].xb);
    printf("第%d個學生的民簇:",i);
    scanf("%s",stu[i].mc);
    printf("第%d個學生的線性代數分數:",i);
    scanf("%d",&stu[i].ds);
    printf("第%d個學生的英語分數:",i);
    scanf("%d",&stu[i].eng);
    printf("第%d個學生的高等數學分數:",i);
    scanf("%d",&stu[i].math);
    printf("第%d個學生的C語言分數:",i);
    scanf("%d",&stu[i].lan);
    count++;
    sprintf(stu[i].num,"%d",count);
}
void input() //輸入資料
{
    system("color 3e");
    void menu();
    void insert(int i);
    int i,k,l,u;
    printf("請設定輸入的學生人數:");
    scanf("%d",&u);
    while(u<1||u>10)
    {
        printf("超出資料範圍請重輸:");
        scanf("%d",&u);
    }
    for(i=1;i<u+1;i++)
    {
        printf("n請輸入第%d個學生的資訊!n",i);
        insert(i);
    }
    do
    {
        printf("請按0返回選單:");
        scanf("%d",&k);
        if (k==0)
        {
            system("cls");
            menu();
        }
        else
            l=0;
    }while(l==0);
}
void search() //查詢成績
{
    system("color 3f");
    void menu();
    void printf_one(int k);
    struct student s;
    int i,k,w0,w1,w2;
    do
    {
        printf("1.姓名  2.學號 n請選擇查詢的類別:");
        scanf("%d",&w1);
        if (w1<1||w1>2)
        {
            printf("輸入錯誤!請重輸:n");
            w2 = 1;
        }
        else
            w2 = 0;
    }while(w2 == 1);
    if(w1==1) //按姓名查詢
    {
        do
        {
            k=-1;
            do
            {
                printf("請輸入您想查詢的學生的姓名:");
                scanf("%s",s.name);
                for(i= 1;i<N;i++)
                    if(strcmp(s.name,stu[i].name)==0)
                    {
                        k=i;
                        s=stu[i];
                    }
                if(k==-1) //沒有找到
                {
                    int o;
                    printf("n沒有這個學生的資訊!n");
                    printf("n 1.繼續  2.返回選單 n請選擇進行下一個操作;");
                    scanf("%d",&o);
                    if (o==1)
                    {
                        system("cls");
                        search(); //繼續查詢
                    }
                    if(o==2)
                    {
                        system("cls");
                        menu(); //返回選單
                    }
                }
            }while(k==-1);
            system("cls");
            printf_one(k); //查詢到以後輸出這個學生的資訊
            printf("n 1.繼續  2.返回選單 n請選擇進行下一個操作:");
            scanf("%d",&w0);
        }while(w0==1);
        system("cls");
        menu(); //不再查詢時返回選單
    }
    else //按學號查詢
    {
        do
        {
            k=-1;
            do
            {
                printf("請輸入您想查詢的學生的學號:");
                scanf("%s",s.num);
                for(i=0;i<N;i++)
                    if(strcmp(s.num,stu[i].num)==0) //找到了
                    {
                        k=i;
                        s=stu[i];
                    }
                if(k==-1)    //沒有找到
                {
                    int o;
                    printf("n沒有這個學生的資訊!n");
                    printf("n 1.繼續  2.返回選單 n請選擇進行下一個操作:");
                    scanf("%d",&o);
                    if(o==1)
                    {
                        system("cls");
                        search();
                    }
                    if(o==2)
                    {
                        system("cls");
                        menu(); //返回選單
                    }
                }
            }while(k==-1);
            system("cls");
            printf_one(k); //找到後輸出這個學生的資訊
            printf("n 1.繼續  2.返回選單 n請選擇進行下一個操作:");
            scanf("%d",&w0);
        }while(w0==1);
        system("cls");
        menu(); //不再查詢時返回選單
    }
}
void xiugai() //修改學生資訊的函數
{
    system("color 1a");
    void menu();
    void printf_one(int k);
    void xiugai_2();
    struct student s;
    int i,n,k,w0=1,w1,w2=0,o;
    do
    {
        k=-1;
        do
        {
            printf("請輸入您想要修改的學生的姓名:");
            scanf("%s",s.name);
            for(i=0;i<N;i++)
            if(strcmp(s.name,stu[i].name)==0) //與其中一個學生匹配
            {
                k=i;
                s=stu[i];
            }
            if(k==-1) //沒有找到輸入的學生
            {                
                printf("沒有這個學生的資訊!n");
                printf("n 1.繼續  2.返回選單 n請選擇進行下一個操作:");
                scanf("%d",&o);
                if(o==1)
                {
                    system("cls");
                    xiugai();
                }
                if(o==2)
                {
                    system("cls");
                    menu(); //返回選單
                }
            }
        }while(k==-1);
        system("cls");
        printf("請輸入修改後的線性代數分數:");
        scanf("%d",&stu[k].ds);
        printf("請輸入修改後的英語分數:");
        scanf("%d",&stu[k].eng);
        printf("請輸入修改後的高等數學分數:");
        scanf("%d",&stu[k].math);
        printf("請輸入修改後的C語言分數:");
        scanf("%d",&stu[k].lan);
        printf("n");
        printf("n該生修改後的資訊如下:n");
        printf_one(k); //輸出這個學生的資訊
        printf("n請按0返回選單:");
        scanf("%d",&o);
        if(o==0)
        {
            system("cls");
            menu(); //返回選單
        }
    }while(1);
}
void printf_all() //輸出所有學生成績的函數
{
    void menu();
    system("color 9e");
    int i,j,k;
    for (i=1;i<3;i++)
    {
        printf("n學號:%s n姓名:%s n性別:%s n民簇:%s n年齡:%d n地址:%s n線性代數分數:%d n英語分數:%d n高等數學分數:%d nC語言分數:%d n",stu[i].num,stu[i].name,stu[i].xb,stu[i].mc,stu[i].old,stu[i].add,stu[i].ds,stu[i].eng,stu[i].math,stu[i].lan);
    }
    do
    {
        printf("請按0返回選單:");
        scanf("%d",&j);
        if(j==0)
        {
            system("cls");
            menu();
        }
        else
        {
            k = 0;
        }
    } while (k == 0);
}
void printf_one(int k)  //輸出某一個學生的資訊的函數
{
    printf("n學號:%s n姓名:%s n性別:%s n民簇:%s n年齡:%d n地址:%s n線性代數分數:%d n英語分數:%d n高等數學分數:%d nC語言分數:%d n",stu[k].num,stu[k].name,stu[k].xb,stu[k].mc,stu[k].old,stu[k].add,stu[k].ds,stu[k].eng,stu[k].math,stu[k].lan);
}
void Exit() //退出系統的函數
{
    system("cls");
    system("color 2e");
    printf("n祝您生活愉快!n");
    exit(0);
}
void menu() //選單函數
{
    system("color 1e");
    printf("nttt歡迎使用學生學籍管理系統!n");
    printf("n");
    int n,m;
    do
    {
        puts("tt********************選單*********************");
        puts("tt**************學生學籍管理系統***************");
        puts("tt*********************************************");
        puts("tt*******        1--輸入資料               ****");
        puts("tt*******        2--查詢成績               ****");
        puts("tt*******        3--修改成績               ****");
        puts("tt*******        4--輸出所有學生成績       ****");
        puts("tt*******        5--退出系統               ****");
        puts("tt*********************************************");
        printf("tt*************請選擇服務種類(1~5):");
        scanf("%d",&n);
        if(n<1||n>5)
        {
            system("cls");
            printf("ntt*************選擇錯誤! 請重新選擇!n");
            m=1;
        }
        else
        {
            m = 0;
        }
    }while(m==1);
    switch(n)
    {
        case 1:system("cls");input();break;
        case 2:system("cls");search();break;
        case 3:system("cls");xiugai();break;
        case 4:system("cls");printf_all();break;
        case 5:Exit();break;
    }
}
int main()
{
    int c;
    printf("請輸入密碼:");
    scanf("%d",&c);
    while(c!=12345)
    {
        printf("密碼錯誤,請重輸:");
        scanf("%d",&c);
    }
    system("cls");
    menu();
    return 0;
}

三、效果演示

輸入登入密碼:

輸入資料:

查詢成績:

修改成績:

輸出所有學生成績:

退出系統:

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


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