作业6-学生成绩录入

时间:2022-02-20 21:57:34

组长:丁新宇;

本组成员:刘晓明,司明周,方振华,赵资阳;

贡献得分分配:丁新宇20%,刘晓明20%,司明周20%,方振华20%,赵资阳20%;

语言:c++;

编译环境:codeblock;

必做一 : 学生成绩录入系统功能需求:

                 1.添加、修改、删除学生信息;

                 2.按学号查询学生数据;

                 3.录入、修改学生成绩;

                 4.按成绩或学号排序

必做三: WBS图像:

作业6-学生成绩录入

必做四: 任务分配:

              1.丁新宇,设计程序的整体数据结构,各个函数的功能要求;

              2.刘晓明,用户界面设计;

              3.司明周,学生信息的输入,查找;

              4.方振华,学生信息的修改,删除;

              5.赵资阳,对学生以总成绩或学号为基准进行排序 。        

#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <cstring>
#define M 50
/********************************全局变量***************************/
using namespace std;

typedef struct
{   long id;                        /*学号*/
    char name[20];                  /* 姓名 */
    char sex[10];
    int  math;                      /* 数学成绩  */
    int  english;
    int  c_program;
    int  total;
}STUDENTS;
STUDENTS stu[M];                    /* 定义学生结构体变量 */
int num=-1;                         /* num+1:当前学生个数*/
/* ////////////////////////函数声明////////////////////////// */

/* ////////主功能模块///////// */
void page_title();      /* 主菜单  */
void student_new();     /* 录入学生  */
void student_edit();    /* 修改学生信息  */
void student_del();     /* 删除学生信息  */
void score_search();    /* 根据学号查询学生信息  */
void id_sort();         /* 通过学号递增排序输出  */
void score_sort( );     /* 按成绩递减排序输出  */
void show(int s);       /* 显示学生信息  */

/* ////////子功能模块////////// */
int  find(long id);     /* 通过学号查询数组下标  */
void show_one( int n);  /* 显示一个学生信息  */
void input_one(int n);  /* 输入一个学生信息  */
void count(int n);      /* 计算总成绩 */
void into_menu();       /* 从功能模块进入主菜单 */
void left();            /* 保存退出 */
void page_head1();
void page_head2();

/* ////////////////////主函数/////////////////////// */
int main()
{

    while(1)
    {
        page_title();
    }
}

/* ////////////////////主菜单/////////////////////////// */
void page_title()
{
    char c;
    system("cls");       /* 清屏 */
    cout<<"\n\n>>>>>>>>>>>>> 学 生 成 绩 管 理 系 统 <<<<<<<<<<<<<\n\n";
    cout<<"\t1 录入学生成绩记录\n\n";
    cout<<"\t2 显示学生成绩记录\n\n";
    cout<<"\t3 修改学生成绩记录\n\n";
    cout<<"\t4 删除学生成绩记录\n\n";
    cout<<"\t5 按学号查询学生记录\n\n";
    cout<<"\t6 按学号显示学生记录\n\n";
    cout<<"\t7 按总成绩递减输出\n\n";
    cout<<"\t0 退出\n\n";
    cout<<"***************************************************\n";
    cout<<" 请用数字键0-8选择操作\n\n";
    c=getch();
    system("cls");
    switch(c)
    {
        case '1' : student_new();break;     /* 录入学生基本信息 */
        case '2' : show(0);break;           /* 显示所有记录 */
        case '3' : student_edit();break;    /* 修改记录 */
        case '4' : student_del();break;     /* 删除记录 */
        case '5' : score_search();break;    /* 查询记录 */
        case '6' : id_sort();break;         /* 按学号排序显示 */
        case '7' : score_sort();break;      /* 按成绩递减排序显示 */
        case '0' : left();                  /* 退出     */
    }
}
void student_new()
{
    int n=0;
    cout<<"\n请输入学生的个数: ";
    cin>>n;                                /*输入选择项 */
                                         /* 将输入的字符串转化为整型数*/
    while(!(n>0 && n<=M))
    {
        cout<<"\n请重新输入学生个数: ";
        cin>>n;  /*输入选择项*/
              /*将输入的字符串转化为整型数*/
    }
    cout<<endl;
    page_head1();
    while(n--)
    {   num++;
        input_one(num);
        count(num);
}
}
void student_del()
{
    long id;
    char c;
    int n;
    while(1)
    {
        cout<<"请输入你要删除学生的学号:";
        cin>>id;
        cout<<endl;
        n=find(id);
        if(n!=-1)
            break;
        else
            system("cls");
    }
    page_head2();
    show_one(n);
    cout<<"\n 请确认删除吗?请输入Y或者N";
    c=getch();
    if('Y'==c || 'y'==c)
    {
        stu[n].id=stu[num].id;
        stu[n].math=stu[num].math;
        stu[n].english=stu[num].english;
        stu[n].total=stu[num].total;
        strcpy(stu[n].name,stu[num].name);
        strcpy(stu[n].sex,stu[num].sex);
        num--;
    }

}
void student_edit()
{
    long id;
    int n;
    while(1)
    {
        cout<<"请输入你要修改学生的学号:";
        cin>>id;
        cout<<endl;
        n=find(id);
        if(n!=-1)
            break;
        else
            system("cls");
    }
    page_head2();
    show_one(n);
    cout<<"\n请输入新的信息:\n";
    page_head1();
    cin>>stu[n].id>>stu[n].name>>stu[n].sex>>stu[n].math>>stu[n].english>>stu[n].c_program;
    count(n);
}
void score_search()
{
    long id;
    int n;
    cout<<("请输入你要查询学生的学号:");
    cin>>id;
    cout<<endl;
    n=find(id);
    if(n!=-1)
    {   page_head2();
        show_one(n);

    }
else
        cout<<"不存在该学号学生信息!!";
    into_menu();
}
void id_sort( )
{   int i=0;
    int n;
    long min=stu[0].id;
    for(i=1;i<=num;i++)
    {
        if(stu[i].id <min)
            min=stu[i].id;
    }
    page_head2();
    for(i=0;i<=num;)
    {   n=find(min++);
        if(n!=-1)
        {
            i++;
            show_one(n);
        }

    }
    into_menu();            /* 进入主菜单 */
}
void score_sort( )
{
    int i,j,k,max,t;
    int index[M];
    for(j=0;j<num+1;j++)
    {
        index[j]=j;
    }
    for(i=0;i<num;i++)
    {
       max=index[i];k=i;
       for(j=i+1;j<num+1;j++)
       {
        t=index[j];
            if(stu[t].total>stu[max].total)
            {  max=t;
                k=j;
            }
        }
        t=index[k];index[k]=index[i];index[i]=t;
    }
    page_head2();
    for(i=0;i<num+1;i++)
    {
    k=index[i];
        show_one(k);
    }
    into_menu();
}
void show(int s)
{   int i,j;
    page_head2();
    for(i=0;i<num+1;i++)
    {
        if(-1==s)
            j=num-i;
        else
            j=i;
        show_one(j);
    }
    into_menu();          /* 进入主菜单 */

}
int find(long id)
{
    int n;
    for(n=0;n<=num;n++)
    {
        if( stu[n].id==id )
        {
            return n;
        }

    }
    return -1;
}
void input_one(int n)
{
    cin>>stu[n].id>>stu[n].name>>stu[n].sex>>stu[n].math>>stu[n].english>>stu[n].c_program;
    cout<<"--------------------------------------------------------------\n";
}
void show_one(int n)
{
    cout<<stu[n].id<<'\t'<<stu[n].name<<'\t'<<'\t'<<stu[n].sex<<'\t';
    cout<<stu[n].math<<'\t'<<stu[n].english<<'\t'<<stu[n].c_program<<'\t'<<stu[n].total<<endl;
    cout<<"----------------------------------------------------------------------\n";

}
void count(int n)
{
    stu[n].total=stu[n].math+stu[n].english+stu[n].c_program;
}
void left()
{
    exit(0);
}
void into_menu()
{
    cout<<"\n请按任意键进入主菜单";
    getch();
}
void page_head2()
{
        cout<<"**********************************************************************\n";
        cout<<"学号\t\t姓名\t\t性别\t数学\t英语\tC语言\t总成绩\n";
        cout<<"**********************************************************************\n";
}
void page_head1()
{
    cout<<"**************************************************************\n";
    cout<<"学号\t\t姓名\t\t性别\t数学\t英语\tC语言\n";
    cout<<"**************************************************************\n";
}
作业6-学生成绩录入
作业6-学生成绩录入