c/c++学生成绩管理系统

来源:互联网 发布:淘宝促销管理在哪里 编辑:程序博客网 时间:2024/06/12 00:27
**感觉自己将来要做程序员了,所以来CSDN把自己在学习过程中编的东西记录下来。第一个程序是C语言实训的程序----学生成绩管理系统。**
Copyright ©Rushierer#include<stdio.h>#include<string.h>#include<stdlib.h>#define N 60typedef struct student{    char num[10];       /*学号*/    char name[15];      /*姓名*/    int cgrade;         /*C语言成绩*/    int mgrade;         /*数学成绩*/    int egrade;         /*英语成绩*/    int total;          /*总分*/    float ave;          /*平均分*/    int mingci;         /*名次*/}STUDENT;typedef struct date{    int n;              /*统计数据个数*/}DATE;void showMenu();                                      /*仅显示菜单*/void Menu(STUDENT stu[],int n,DATE date[]);           /*显示主菜单*/void showdate(STUDENT stu[],int n,DATE date[]);       /*只显示数据*/void inputRecorde(STUDENT stu[],int n,DATE date[]);   /*从键盘输入数据*/void displayRecord(STUDENT stu[],int n,DATE date[]);  /*显示所有数据*/void deleteRecorde(STUDENT stu[],int n,DATE date[]);  /*删除数据*/void searchRecorde(STUDENT stu[],int n,DATE date[]);  /*查找数据*/void numsearch(STUDENT stu[],int n,DATE date[]);      /*按学号查找*/void namesearch(STUDENT stu[],int n,DATE date[]);     /*按姓名查找*/void modifyRecorde(STUDENT stu[],int n,DATE date[]);  /*修改数据*/void insertRecorde(STUDENT stu[],int n,DATE date[]);  /*插入数据*/void sortRecorde(STUDENT stu[],int n,DATE date[]);    /*排列数据*/int main(){    int choice;    STUDENT stu[N];    DATE date[1];    showMenu();    stu[0].total=0;    stu[0].ave=0;    printf("请输入选项(0~7):");    scanf("%d",&choice);    printf("\n");    if(choice==1)    {    printf("请输入要记录的学生人数:");    scanf("%d",&date[0].n);    }    else if(choice==0)        choice=0;    else    {        printf("当前没有记录的数据,请录入数据!\n");        printf("\n");        printf("请输入要录入的学生人数:");        scanf("%d",&date[0].n);        choice=1;    }    switch(choice)    {        case 1:            system("cls");            inputRecorde(stu,date[0].n,date);break;        case 0:            exit(0);break;    }    return 0;}/*显示主菜单Menu*/void showMenu(){    printf("       The Students'Grade Management System     \n");    printf("  *********************Menu*********************\n");    printf("  *                                            *\n");    printf("  *   1 input  record       2 display record   *\n");    printf("  *   3 delete record       4 search  record   *\n");    printf("  *   5 modify record       6 insert  record   *\n");    printf("  *   7 sort   record       0 quit    system   *\n");    printf("  *                                            *\n");    printf("  **********************************************\n");}/*显示菜单2*/void Menu(STUDENT stu[],int n,DATE date[]){    int choice;    showMenu();    printf("请输入选项(0~7):");    scanf("%d",&choice);    switch(choice)    {        case 1:            system("cls");            inputRecorde(stu,n,date);break;        case 2:            system("cls");            displayRecord(stu,n,date);break;        case 3:            system("cls");            deleteRecorde(stu,n,date);break;        case 4:            system("cls");            searchRecorde(stu,n,date);break;        case 5:            system("cls");            modifyRecorde(stu,n,date);break;        case 6:            system("cls");            insertRecorde(stu,n,date);break;        case 7:            system("cls");            sortRecorde(stu,n,date);break;        case 0:            exit(0);break;    }}/*从键盘输入成绩input*/void inputRecorde(STUDENT stu[],int n,DATE date[]){    int i=0,j;    system("cls");    printf("                   Input record                      \n");    printf("*****************************************************\n");    printf("\n");    printf("数据录入格式提示:\n");    printf("1.数据内容:学号、姓名、c语言成绩、数学成绩、英语成绩\n");    printf("2.数据间以空格做间隔,最后回车录入数据结束\n");    printf("\n");    for(i=0;i<n;i++)    {        printf("请输入第%d个学生的数据:",i+1);        scanf("%s",stu[i].num);        scanf("%s",stu[i].name);        scanf("%d",&stu[i].cgrade);        scanf("%d",&stu[i].mgrade);        scanf("%d",&stu[i].egrade);    }    printf("\n");    printf("数据录入完成!\n");    printf("\n");    printf("1查看录入的信息  2返回主菜单  0退出:");    scanf("%d",&j);    switch(j)    {       case 1:            printf("\n");            displayRecord(stu,n,date);break;        case 2:            system("cls");            Menu(stu,n,date);break;        case 0:            exit(0);break;    }}/*显示所有数据display*/void displayRecord(STUDENT stu[],int n,DATE date[]){    int i,j;    printf("                   Display record                    \n");    printf("*****************************************************\n");    printf("所有数据:\n");    printf("\n");    printf("      学号          姓名    c语言  数学   英语\n");    for(i=0;i<n;i++)    {    printf("%10s%15s%6d%7d%7d\n",stu[i].num,                                stu[i].name,                                stu[i].cgrade,                                stu[i].mgrade,                                stu[i].egrade);    }    printf("\n");    printf("1返回主菜单  0退出:");    scanf("%d",&j);    if(j==1)    {        system("cls");        Menu(stu,n,date);    }    else        exit(0);}/*只显示数据show*/void showdate(STUDENT stu[],int n,DATE date[]){    int i;    printf("已录入的数据:\n");    printf("\n");    printf("      学号          姓名    c语言  数学   英语\n");    for(i=0;i<n;i++)    {        printf("%10s%15s%6d%7d%7d\n",stu[i].num,                                    stu[i].name,                                    stu[i].cgrade,                                    stu[i].mgrade,                                    stu[i].egrade);    }}/*删除记录delete*/void deleteRecorde(STUDENT stu[],int n,DATE date[]){    int i,k,j;    printf("                   Delete record                     \n");    printf("*****************************************************\n");    printf("\n");    showdate(stu,n,date);    printf("已经录入%d个学生的信息,你想删除第几个的记录:",n);    scanf("%d",&k);    i=k-1;    for(;i<=n-2;i++)    {        strcpy(stu[i].num,stu[i+1].num);        strcpy(stu[i].name,stu[i+1].name);        stu[i].cgrade=stu[i+1].cgrade;        stu[i].mgrade=stu[i+1].mgrade;        stu[i].egrade=stu[i+1].egrade;    }    printf("\n");    printf("已成功删除!\n");    date[0].n=date[0].n-1;    n=n-1;    printf("\n");    printf("1显示修改后的信息  2返回主菜单  0退出:");    scanf("%d",&j);    switch(j)    {       case 1:            printf("\n");            displayRecord(stu,n,date);break;        case 2:            system("cls");            Menu(stu,n,date);break;        case 0:            exit(0);break;    }}/*查找功能search*/void searchRecorde(STUDENT stu[],int n,DATE date[]){    int k;    printf("                   Search record                     \n");    printf("*****************************************************\n");    printf("\n");    printf("查找方式:1.按学号查找 2.按姓名查找\n");    printf("请选着查找方式(1/2):");    scanf("%d",&k);    printf("\n");    if(k==1)    {        numsearch(stu,n,date);    }    else    {        namesearch(stu,n,date);    }}/*按学号查找*/void numsearch(STUDENT stu[],int n,DATE date[]){    int i,j,k=0;    char num1[10];    printf("请输入想查找的学号:");    scanf("%s",num1);    printf("\n");    printf("查找结果:");    printf("\n");    for(i=0;i<n;i++)    {        if(strcmp(stu[i].num,num1)==0)        {            printf("%10s%15s%4d%4d%4d\n",stu[i].num,                                        stu[i].name,                                        stu[i].cgrade,                                        stu[i].mgrade,                                        stu[i].egrade);            k+=1;        }    }    if(k==0)        printf("输入的学号不存在或格式不对!\n");    printf("\n");    printf("1重新查询  2返回主菜单  0退出:");    scanf("%d",&j);    switch(j)    {        case 1:            system("cls");            searchRecorde(stu,n,date);break;        case 2:            system("cls");            Menu(stu,n,date);break;        case 0:            exit(0);break;    }}/*按姓名查找*/void namesearch(STUDENT stu[],int n,DATE date[]){    int i,j,k=0;    char name1[15];    printf("请输入想查找的姓名:");    scanf("%s",name1);    printf("\n");    printf("查找结果:");    printf("\n");    for(i=0;i<n;i++)    {        if(strcmp(stu[i].name,name1)==0)        {            printf("%10s%15s%6d%7d%7d\n",stu[i].num,                                        stu[i].name,                                        stu[i].cgrade,                                        stu[i].mgrade,                                        stu[i].egrade);            k+=1;        }    }    if(k==0)        printf("输入的学号不存在或格式不对!\n");    printf("\n");    printf("1重新查询  2返回主菜单  0退出:");    scanf("%d",&j);    switch(j)    {       case 1:            system("cls");            searchRecorde(stu,n,date);break;        case 2:            system("cls");            Menu(stu,n,date);break;        case 0:            exit(0);break;    }}/*修改记录modify*/void modifyRecorde(STUDENT stu[],int n,DATE date[]){    int i,k,j;    char num[10];       /*学号*/    char name[15];      /*姓名*/    int cgrade;         /*C语言成绩*/    int mgrade;         /*数学成绩*/    int egrade;         /*英语成绩*/    printf("                   Modify record                     \n");    printf("*****************************************************\n");    printf("\n");    showdate(stu,n,date);    printf("\n");    printf("已经录入%d个学生的信息,你想修改第几个学生的记录:",n);    scanf("%d",&k);    if(k>n||k<=0)    {        printf("\n");        printf("输入错误,无这条记录!\n");        printf("请重新输入你想修改第几个学生的记录:");        scanf("%d",&i);        k=i;    }    printf("\n");    printf("请输入修改后的信息:");    scanf("%s",num);    scanf("%s",name);    scanf("%d",&cgrade);    scanf("%d",&mgrade);    scanf("%d",&egrade);    strcpy(stu[k-1].num,num);    strcpy(stu[k-1].name,name);    stu[k-1].cgrade=cgrade;    stu[k-1].mgrade=mgrade;    stu[k-1].egrade=egrade;    printf("\n");    printf("修改完成!\n");    printf("\n");    printf("1显示修改后的信息  2返回主菜单  0退出:");    scanf("%d",&j);    switch(j)    {       case 1:            printf("\n");            displayRecord(stu,n,date);break;        case 2:            system("cls");            Menu(stu,n,date);break;        case 0:            exit(0);break;    }}/*插入数据insert*/void insertRecorde(STUDENT stu[],int n,DATE date[]){    int i,k,j;    char num[10];       /*学号*/    char name[15];      /*姓名*/    int cgrade;         /*C语言成绩*/    int mgrade;         /*数学成绩*/    int egrade;         /*英语成绩*/    printf("                   Insert record                     \n");    printf("*****************************************************\n");    printf("\n");    showdate(stu,n,date);    printf("\n");    printf("你想在第几个数据之后插入数据:");    scanf("%d",&k);    if(k>n||k<=0)    {        printf("\n");        printf("输入错误!\n");        printf("请重新输入你想在第几个数据之后插入数据:");        scanf("%d",&i);        k=i;    }    printf("\n");    printf("请输入插入的信息:");    scanf("%s",num);    scanf("%s",name);    scanf("%d",&cgrade);    scanf("%d",&mgrade);    scanf("%d",&egrade);    for(i=n;k+1<=i;i--);    {        strcpy(stu[i].num,stu[i-1].num);        strcpy(stu[i].name,stu[i-1].name);        stu[i].cgrade=stu[i-1].cgrade;        stu[i].mgrade=stu[i-1].mgrade;        stu[i].egrade=stu[i-1].egrade;    }    strcpy(stu[k].num,num);    strcpy(stu[k].name,name);    stu[k].cgrade=cgrade;    stu[k].mgrade=mgrade;    stu[k].egrade=egrade;    date[0].n=date[0].n+1;    n=n+1;    printf("\n");    printf("插入完成!\n");    printf("\n");    printf("1显示修改后的信息  2返回主菜单  0退出:");    scanf("%d",&j);    switch(j)    {       case 1:            printf("\n");            displayRecord(stu,n,date);break;        case 2:            system("cls");            Menu(stu,n,date);break;        case 0:            exit(0);break;    }}/*对数据排序sort*/void sortRecorde(STUDENT stu[],int n,DATE date[]){    int i,j;    STUDENT temp;    printf("                    Sort record                      \n");    printf("*****************************************************\n");    printf("\n");    showdate(stu,n,date);    printf("\n");    printf("排序后的数据:\n");    for(i=0;i<n;i++)    {        stu[i].total=stu[i].cgrade+stu[i].mgrade+stu[i].egrade;        stu[i].ave=(float)stu[i].total/3;    }    for(j=1;j<n;j++)        for(i=0;i<n-j;i++)        if(stu[i].total>stu[i+1].total)        {            temp=stu[i];            stu[i]=stu[i+1];            stu[i+1]=temp;        }    printf("\n");    printf("      学号          姓名    c语言  数学   英语  平均分   总分   名次\n");    j=0;    for(i=n-1;i>-1;i--)    {        j++;        printf("%10s%15s%6d%7d%7d%8.2f%7d%7d\n",stu[i].num,                                            stu[i].name,                                            stu[i].cgrade,                                            stu[i].mgrade,                                            stu[i].egrade,                                            stu[i].ave,                                            stu[i].total,                                            j);    }    printf("\n");    printf("1返回主菜单  0退出:");    scanf("%d",&j);    if(j==1)    {        system("cls");        Menu(stu,n,date);    }    else        exit(0);}   

转载请咨询作者本人。

0 0
原创粉丝点击