学生信息管理系统

代码:

 

#include <iostream>
using namespace std;
#include<stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#define N 1000

typedef struct student

{

    int number;
    char name[20];
    int grade;
    int gaoshu;
    int yingyu;
    int jisuanji;
    int sum;

}STUDENT;

STUDENT student[N];

int shuliang=0;       //用于记录有多少学生
class Student
{
    public:
    void fhzjm();
    void DengJi();
    void ShanChu();
    void LiuLan();
    void ChaZhao();
    void PaiXu();
    void Save();
    void menu();
    void DaoRu();
};

void Student::fhzjm()        //每次操作结束  来提醒是否继续进行操作
{
    char biaozhi[20];
    cout<<endl;
   cout<<"还需要操作么?如果需要操作请输入:yes,否则请输入:no"<<endl;
   cin>>biaozhi;
    if(strcmp(biaozhi,"yes")==0)
    {
        menu();
    }
    else if(strcmp(biaozhi,"no")==0)
    exit(0);               //退出系统    这是一个库函数   用于结束程序

    else
        {
            cout<<"请输入正确的字符,谢谢!"<<endl;
            fhzjm();
        }
}

void Student::DengJi()                       //登记学生信息函数

{

    int rs;      //用于记录要输入多少条学生信息
    int i,k=1;
    system("CLS");
    cout<<"请输入需要输入几个学生信息:"<<endl;
    cin>>rs;
    for(i=shuliang;i<shuliang+rs;i++,k++)
    {
        cout<<"请输入第"<<k<<"个学生的学号:";
       cin>>student[i].number;
        cout<<"请输入学生的姓名:";
       cin>>student[i].name;
        //cout<<"请输入学生3门课的成绩:";
        cout<<"请输入第高数课的成绩:";
        cin>>student[i].gaoshu;
        cout<<"请输入英语课的成绩:";
       cin>>student[i].yingyu;
      cout<<"请输入第计算机课的成绩:";
       cin>>student[i].jisuanji;
    }
    shuliang=shuliang+rs;
    fhzjm();
}

void Student::ShanChu()     //删除学生信息
{
    char shanchuinfo[10];
    system("CLS");       //清屏函数   这是一个库函数    用于清除控制台中的所有信息
  cout<<"删除全部学生信息请输入\"all\",删除指定学号的学生信息请输入\"one\"\n";
  cin>>shanchuinfo;
    if(strcmp(shanchuinfo,"all")==0)
    {
        int j;
     cout<<"你删除的学生信息如下:"<<endl;
      cout<<"-----------学号-------------姓名-------------高数--------------英语--------------计算机\t"<<endl;
        for(j=0;j<shuliang;j++)
       cout<<"----%d-------%s-------%d-------%d-------%d\t\n",student[j].number,student[j].name,student[j].gaoshu,student[j].jisuanji;
        shuliang=0;
       cout<<"删除成功"<<endl;
    }

    else if(strcmp(shanchuinfo,"one")==0)
    {
        struct student *p=NULL;
        int choice;
        int i,j,k=0;
      cout<<"请输入你要删除的人的学号:";
       cin>>choice;
        for(i=0;i<shuliang;i++)
        {
            if(choice==student[i].number)
            {
                k=1;j=i;break;
            }
        }
    if(k)
    {
        if(shuliang==1)
        {
            p=&student[0];
            free(p);
            shuliang=0;
        }

        else
        {
            for(i=j;i<shuliang;i++)
            {
                student[i]=student[i+1];
            }
            shuliang=shuliang-1;
        }

      cout<<"删除成功"<<endl;
    }

    else
    {
       cout<<"输入数据错误!"<<endl;
    }

    }
    fhzjm();
}

void Student::LiuLan()    //浏览操作函数
{
    int i;
    system("CLS");
    if(shuliang==0)
    {
       cout<<"系统里面没有任何学生的信息!"<<endl;
    }

    else
    {
        for(i=0;i<shuliang;i++)
        {

            cout<<"第"<<i+1<<"个学生的学号为:"<<student[i].number<<endl;
         cout<<"第"<<i+1<<"个学生的姓名为:"<<student[i].name<<endl;
           cout<<"第"<<i+1<<"个学生的高数课的成绩为:"<<student[i].gaoshu<<endl;
          cout<<"第"<<i+1<<"个学生的英语课的成绩为:"<<student[i].yingyu<<endl;
           cout<<"第"<<i+1<<"个学生的计算机课的成绩为:"<<student[i].jisuanji<<endl;
            student[i].sum=student[i].gaoshu+student[i].yingyu+student[i].jisuanji;
           cout<<"第"<<i+1<<"个学生的总成绩为:"<<student[i].sum<<endl;
        }

    }
    fhzjm();
}

void Student::ChaZhao()     //查找函数  实现查找功能   分为三种查询 按学号查询   按姓名  按成绩
{
    int xx;
    char choice,yy[20];
    int i,j,k=0;
    system("CLS");
    if(shuliang==0)
    {
        cout<<"系统里面没有任何学生的信息!"<<endl;
        fhzjm();
    }

     cout<<"三种查找方式:学号,姓名,成绩"<<endl;
     cout<<"如果按学号查找请输1,如果按姓名查找请输2,如果按成绩查找请输3"<<endl;
     cout<<"请输入您查找的方式:";
  cin>>choice;
    if(choice=='1')
    {
          cout<<"请输入需要查找学生的学号:";
       cin>>xx;
         cout<<"您所查找的学生的信息为:"<<endl;
        cout<<"----学号----姓名----高数成绩----英语成绩----计算机成绩----\t"<<endl;
        for(i=0;i<shuliang;i++)
        {
            if(xx==student[i].number)
            {
                j=i;k=1;
               cout<<"----%d-------%s-------%d-------%d-------%d----\t\n",student[j].number,student[j].name,student[j].gaoshu,student[j].yingyu,student[i].jisuanji;
            }
        }

        if(k==0)
         cout<<"输入信息有误:"<<endl;
    }

    else if(choice=='2')
    {
         cout<<"请输入需要查找学生的姓名:";
        cin>>yy;
         cout<<"您所查找的学生的信息为:"<<endl;
          cout<<"----学号----姓名----高数成绩----英语成绩----计算机成绩----\t"<<endl;
        for(i=0;i<shuliang;i++)
        {
            if(strcmp(yy,student[i].name)==0)
            {
                j=i;k=1;
                 cout<<"----%d-------%s-------%d-------%d-------%d----\t\n",student[j].number,student[j].name,student[j].gaoshu,student[j].yingyu,student[j].jisuanji;
            }

        }
        if(k==0)
         cout<<"输入信息有误:"<<endl;
    }

    else if(choice=='3')
    {
         cout<<"请输入需要查找学生的成绩:"<<endl;
        cin>>xx;
      cout<<"您所查找的学生的信息为:"<<endl;
          cout<<"----学号----姓名----高数----英语----计算机----\t"<<endl;
        for(i=0;i<shuliang;i++)
        {
            if(xx==student[i].grade)
            {
                j=i;k=1;
                cout<<"----%d-------%s-------%d-------%d-------%d----\t\n",student[j].number,student[j].name,student[j].gaoshu,student[j].yingyu,student[i].jisuanji;
            }
        }
        if(k==0)
         cout<<"输入信息有误:"<<endl;
    }
    fhzjm();
}

void Student::PaiXu()     //排序函数   执行排序操作
{
    struct student *p1[N],**p2,*temp;
    int i,j;
    system("CLS");
    p2=p1;
    for( i=0;i<shuliang;i++)
    {
        p1[i]=student+i;
    }

    for( i=0;i<shuliang;i++)
    {
        for( j=i+1;j<shuliang;j++)
        {
            if((*(p2+i))->sum<(*(p2+j))->sum)
            {
                temp=*(p2+i);*(p2+i)=*(p2+j);*(p2+j)=temp;
            }
        }
    }

    cout<<"按照总成绩排序之后的信息为:"<<endl;

     cout<<"----学号----姓名----总成绩----\t"<<endl;

    for( i=0;i<shuliang;i++)
    {
        student[i].sum=student[i].gaoshu+student[i].yingyu+student[i].jisuanji;
         cout<<"----%d-----%s----%d-----\n",(*(p2+i))->number,(*(p2+i))->name,(*(p2+i))->sum;
    }
    fhzjm();
}

void Student::Save()     //保存数据    把数据写到文件操作
{
    int i;
    FILE *rs;
    if((rs=fopen("student.txt","w"))==NULL)
    {
         cout<<"not open";
        exit(0);
    }

    for(i=0;i<shuliang;i++)
    {
        fwrite(&student[i], sizeof(student[i]), 1, rs);
    }

    if(ferror(rs))
    {
        fclose(rs);
        perror("写文件失败!\n");
        return;
    }

     cout<<"存储文件成功!"<<endl;
    fclose(rs);
    fhzjm();
}

void Student::DaoRu()
{
    struct student t;
    int i=0;
    FILE* fp = fopen("student.txt", "r");
    shuliang=0;
    if(NULL==fp)
    {
        perror("读取文件打开失败!\n");
        return;
    }
    memset(student,0x0,sizeof(student));
    while(1)
    {
        fread(&t,sizeof(t),1,fp);
        if(ferror(fp))
        {
            fclose(fp);
            perror("读文件过程失败!\n");
            return;
        }

        if(feof(fp))
        {
            break;
        }
        student[i]=t;
        i++;
    }
    fclose(fp);
    shuliang=i;
     cout<<"导入文件成功!"<<endl;
    fhzjm();
}
void Student::menu()
{
    int n=0;
    system("CLS");
   cout<<" ==================学生信息管理系统==============="<<endl;
  cout<<" =                1.登记学生信息                 ="<<endl;
  cout<<" =                2.删除学生信息                 ="<<endl;
   cout<<" =                3.浏览学生信息                 ="<<endl;
  cout<<" =                4.查找学生信息                 ="<<endl;
   cout<<" =                5.根据总成绩排序               ="<<endl;
    cout<<" =                6.存储到文件                   ="<<endl;
   cout<<" =                7.从文件导入                   ="<<endl;
  cout<<" =                8.退出系统                     ="<<endl;
  cout<<" ================================================="<<endl;
  cout<<" 请选择:";
  cin>>n;
    switch (n)
    {
        case 1:
            DengJi();break;    //等记信息
        case 2:
            ShanChu();break;   //删除信息
        case 3:
            LiuLan();break;     //浏览信息
        case 4:
            ChaZhao();break;     //查找信息
       case 5:
            PaiXu();break;     //对成绩记性排序
        case 6:
            Save();break;       //保存数据到文件中
        case 7:
            DaoRu();break;       //把文件中的数据导入到程序中
        case 8:
        exit(0);break;      //退出系统
    }
}

int main()
{
    Student student;
    student.menu();
    return 0;
}

 

 

 

 

 

Logo

快速构建 Web 应用程序

更多推荐