您的位置:首页 > 编程语言

学生信息管理系统代码

2012-04-08 18:16 417 查看
 

#include<iostream>

#include<iomanip>

#include<string>

using namespace std;

const int n=2;

const int m=10;

class student{

private:

    int ID,english,math,computer,total;

    string name;

    string sex;

 int chinese;

public:

    student(){cout<<"构造函数在执行\n";}

    ~student(){cout<<"析构函数在执行\n";}

 student(student &p);

 student &operator=(student&);

 void Getinfo();

 friend ostream&operator<<(ostream&os,const student &a);

 friend istream&operator>>(istream&is,student&a);

 void Print(student st[])const;

    int FindID(student st[])const;

 void FindName(student st[])const;

    void SortName(student st[]);

    void SortID(student st[],int (*fun)(int a,int b));

 //void SortID(student st[]);

    void SortTotal(student st[],int (*fun)(int a,int b));

    void SortChinese(student st[],int (*fun)(int a,int b));

    void SortMath(student st[],int (*fun)(int a,int b));

    void SortEnglish(student st[],int (*fun)(int a,int b));

 void SortComputer(student st[],int (*fun)(int a,int b));

    void swap(student &,student &);

 friend bool checki(string str);

};

#include "student.h"

student::student(student &p)

{

 cout<<"复制构造函数执行\n";

 ID=p.ID;chinese=p.chinese;english=p.english;math=p.math;

 computer=p.computer;total=p.total;

 name=p.name;sex=p.sex;

}

student &student::operator=( student&p)

{

 cout<<"重载赋值运算符函数执行\n";

 ID=p.ID;chinese=p.chinese;english=p.english;math=p.math;

 computer=p.computer;total=p.total;

 name=p.name;sex=p.sex;

 return *this;

}

bool checki(string str)

{

 for(unsigned int i=0;i<str.length();i++)

  if(str[i]<48||str[i]>58)

   return false;

 return true;

}

void student::Getinfo()

{

    cout<<"请输入学生的姓名\n";cin>>name;

 string str;

    cout<<"请输入学生的学号\n";cin>>str;

 if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}

 ID=atoi(str.c_str());

    cout<<"请输入学生的性别\n";cin>>sex;

    cout<<"请输入语文成绩\n";cin>>str;

 if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}

 chinese=atoi(str.c_str());

    cout<<"请输入英语成绩\n";cin>>str;

 if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}

 english=atoi(str.c_str());

    cout<<"请输入数学成绩\n";cin>>str;

 if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}

 math=atoi(str.c_str());

    cout<<"请输入计算机成绩\n";cin>>str;

 if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}

 computer=atoi(str.c_str());

    total=chinese+english+math+computer;

}

istream&operator>>(istream&is,student&a)

{

 cout<<"请输入学生的姓名\n";is>>a.name;

 string str;

    cout<<"请输入学生的学号\n";is>>str;

 if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";is>>str;}

 a.ID=atoi(str.c_str());

    cout<<"请输入学生的性别\n";is>>a.sex;

    cout<<"请输入语文成绩\n";is>>str;

 if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";is>>str;}

 a.chinese=atoi(str.c_str());

    cout<<"请输入英语成绩\n";is>>str;

 if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";is>>str;}

 a.english=atoi(str.c_str());

    cout<<"请输入数学成绩\n";is>>str;

 if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";is>>str;}

 a.math=atoi(str.c_str());

    cout<<"请输入计算机成绩\n";is>>str;

 if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";is>>str;}

 a.computer=atoi(str.c_str());

    a.total=a.chinese+a.english+a.math+a.computer;

 return is;

}

ostream&operator<<(ostream&os,const student &a)

{

  os<<"姓名 "<<setw(6)<<a.name<<" 学号"<<setw(4)<<a.ID <<" 性别"<<setw(4)<<a.sex<<" 语文"<<setw(4)<<a.chinese;

     os<<" 数学"<<setw(4)<<a.math<<" 英语"<<setw(4)<<a.english <<" 计算机"<<setw(4)<<a.computer<<" 总分"<<setw(4)<<a.total<<endl;

  return os;

}

void student::Print(student st
) const

{  

 for(int i=0;i<n;i++)

        {

          cout<<"姓名 "<<setw(6)<<st[i].name<<" 学号"<<setw(4)<<st[i].ID <<" 性别"<<setw(4)<<st[i].sex<<" 语文"<<setw(4)<<st[i].chinese;

          cout<<" 数学"<<setw(4)<<st[i].math<<" 英语"<<setw(4)<<st[i].english <<" 计算机"<<setw(4)<<st[i].computer<<" 总分"<<setw(4)<<st[i].total<<endl;

      }

}

void student::SortTotal(student st
,int (*fun)(int a,int b))

{

 int i,j,k; student s;

 for(i=0;i<n-1;i++)  

   {  k=i;

      for(j=i+1;j<n;j++)

     if(fun(st[k].total,st[j].total)) {k=j;}

              if(k!=i){s.swap(st[i],st[k]);}

    }

 for(i=0;i<n;i++)

  cout<<st[i];

}

void student::SortID(student st
,int (*fun)(int a,int b))

{

 int i,j,k;

 student s;

 for(i=0;i<n-1;i++) 

 { 

  k=i;

  for(j=i+1;j<n;j++)

     if(fun(st[k].ID,st[j].ID)) {k=j;}

           if(k!=i) {s.swap(st[i],st[k]); }

  }

 for(i=0;i<n;i++)

  cout<<st[i];

}

void student::SortName(student st
)

{

  int i,j,k;

  student s;

  for(i=0;i<n-1;i++) 

     {

   k=i;

   for(j=i+1;j<n;j++)

          {

     if(st[k].name.compare(st[j].name)>0) {k=j;}

              if(k!=i){s.swap(st[i],st[k]); }

        }

       }

  for(i=0;i<n;i++)

  cout<<st[i];

}

void student::SortChinese(student st
,int (*fun)(int a,int b))

{

  int i,j,k;

  student s;

  for(i=0;i<n-1;i++) 

  {

   k=i;

   for(j=i+1;j<n;j++)

        {

      if(fun(st[k].chinese,st[j].chinese)) {k=j;}

               if(k!=i){s.swap(st[i],st[k]); }

        }

       }

  for(i=0;i<n;i++)

  cout<<st[i];

}

void student::SortMath(student st
,int (*fun)(int a,int b))

{

   int i,j,k;

   student s;

   for(i=0;i<n-1;i++) 

      {  k=i;

         for(j=i+1;j<n;j++)

          {

     if(fun(st[k].math,st[j].math)) {k=j;}

              if(k!=i){s.swap(st[i],st[k]); }

        }

       }

   for(i=0;i<n;i++)

  cout<<st[i];

}

void student::SortComputer(student st
,int (*fun)(int a,int b))

{

   int i,j,k;

   student s;

   for(i=0;i<n-1;i++) 

      {

    k=i;

    for(j=i+1;j<n;j++)

           {

      if(fun(st[k].computer,st[j].computer)) {k=j;}

               if(k!=i){s.swap(st[i],st[k]); }

        }

   }

   for(i=0;i<n;i++)

  cout<<st[i];

}

void student::SortEnglish(student st
,int (*fun)(int a,int b))

{

  int i,j,k;

  student s;

  for(i=0;i<n-1;i++) 

  {

   k=i;

   for(j=i+1;j<n;j++)

          {

     if(fun(st[k].english,st[j].english)) {k=j;}

              if(k!=i){s.swap(st[i],st[k]);}

        }

       }

       //s.Print(st);

  for(i=0;i<n;i++)

  cout<<st[i];

}

int student::FindID(student st
)const

{

    int i,id;

 ff:cout<<"请输入您要查找的学号\n";

    cin>>id;

    for(i=0;i<n;i++)

     {

      if(st[i].ID ==id)

        {

            cout<<st[i];

   return  0;

      }

   }

    cout<<"您查找的学号不存在\n";goto ff;

}

void student::FindName(student st[])const

{

    string name1;

    int i,j=0;

 nn:cout<<"请输入要查找学生姓名\n";

    cin>>name1;

    for(i=0;i<n;i++)

      if(name1.compare (st[i].name )==0)

   {

       cout<<st[i];return ;

   }

    cout<<"此姓名不存在,请重新输入\n";goto nn;

}

void student::swap(student &a,student &b)

{

 student s=a;

 a=b;b=s;

}

#include<iostream>

#include<iomanip>

#include<string>

#include "student.h"

void print()

{

 cout<<"欢迎使用荣强学生信息管理系统,请根据提示选择操作\n";

    cout<<"温馨提示\n";

    cout<<"输入1,进入输入数据界面\n";

    cout<<"输入2,进入输出数据界面\n";

    cout<<"输入3,进入数据按学号排序界面\n";

    cout<<"输入4,进入数据按学号查找界面\n";

    cout<<"输入5,进入数据按姓名排序界面\n";

    cout<<"输入6,进入数据按姓名查找界面\n";

    cout<<"输入7,进入数据按总分排序界面\n";

 cout<<"输入8,进入数据按语文成绩排序界面\n";

 cout<<"输入9,进入数据按数学成绩排序界面\n";

 cout<<"输入10,进入数据按英语成绩排序界面\n";

 cout<<"输入11,进入数据按计算机成绩排序界面\n";

    cout<<"输入0,退出该系统\n";

}

int ascending(int a,int b){if(a>b)  return 1;else return 0;}

int descending(int a,int b){if(a<b)  return 1;else return 0;}

int  main()

{   student a;

 print();

    student ST
;

    int i,choice=1;

    while(choice!=0)

 {

kk: cout<<"请输入你的选择\n";string str;

    cin>>str;

 if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}

 choice=atoi(str.c_str());

 int scend;

    switch(choice)

     {

  case 0:cout<<"退出系统,欢迎下次使用\n";break;

     case 1:cout<<"进入输入数据界面\n";

            for(i=0;i<n;i++)  cin>>ST[i]; print();break;

     case 2:cout<<"进入输出数据界面\n";for(i=0;i<n;i++) cout<<ST[i];print();

            break;

     case 3:cout<<"进入数据按学号排序界面\n";cout<<"升序请按1,否则降序\n";cin>>str;

         if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}

         scend=atoi(str.c_str());

     if(scend==1) {ST[0].SortID(ST,ascending);}

     else {ST[0].SortID(ST,descending);}

     print(); break;

     case 4:cout<<"进入数据按学号查找界面\n";ST[0].FindID(ST);print();break;

     case 5:cout<<"进入数据按姓名排序界面\n";ST[0].SortName(ST);print(); break;

     case 6:cout<<"进入数据按姓名查找界面\n";ST[0].FindName(ST); print();break;

     case 7:cout<<"进入数据按总分排序界面\n";cout<<"升序请按1,否则降序\n";

     cin>>str;

        if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}

        scend=atoi(str.c_str());

     if(scend==1) {ST[0].SortTotal(ST,ascending);}

     else {ST[0].SortTotal(ST,descending);}

     print(); break;

  case 8:cout<<"进入数据按语文排序界面\n";cout<<"升序请按1,否则降序\n";

      cin>>str;

         if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}

         scend=atoi(str.c_str());

      if(scend==1) {ST[0].SortChinese(ST,ascending);}

      else {ST[0].SortChinese(ST,descending);}

      print(); break;

     case 9:cout<<"进入数据按数学排序界面\n";cout<<"升序请按1,否则降序\n";

      cin>>str;

         if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}

         scend=atoi(str.c_str());

      if(scend==1) {ST[0].SortMath(ST,ascending);}

      else {ST[0].SortMath(ST,descending);}

      print(); break;

  case 10:cout<<"进入数据按英语排序界面\n";cout<<"升序请按1,否则降序\n";

      cin>>str;

         if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}

         scend=atoi(str.c_str());

     if(scend==1) {ST[0].SortEnglish(ST,ascending);}

     else {ST[0].SortEnglish(ST,descending);}

     print(); break;

     case 11:cout<<"进入数据按计算机排序界面\n";cout<<"升序请按1,否则降序\n";

       cin>>str;

         if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}

         scend=atoi(str.c_str());

       if(scend==1) {ST[0].SortComputer(ST,ascending);}

       else {ST[0].SortComputer(ST,descending);}

       print(); break;

     default:cout<<"输入有误,请重新输入\n";goto kk;break;

     }

   }

 return 0;

}

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  fun ini string math os class