小草最近上课学C++,在图书馆纠结了好久,决定做这个小东西,没想到遇到了好多困难,好吧,功夫不负有心人,小草也在敲代码中提高了不少。

小草硬是学了好几天,才搞完这个东西,也算是了结了小草的一个心结。

小草的Trouble学生信息管理系统写得不咋样,就是一个学习C++的笔记吧。

1、类。

2、继承与派生。

#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <algorithm>
#include <list> using namespace std; class tagScore
{
public:
tagScore();
tagScore(int ch,int ma,int en):chinese(ch),math(ma),english(en) {}
protected:
int chinese;
int math;
int english;
}; tagScore::tagScore()
{
chinese=-;
math=-;
english=-;
} class tagStudent:protected tagScore
{
public:
tagStudent(int ch,int ma,int en,string na,int i,char s):tagScore(ch,ma,en)
{
name=na;
id=i;
sex=s;
score=ch+ma+en;
}
void setdata();
void display()
{
//score=chinese+math+english;
printf("%d ",id);
cout<<name;
score=chinese+math+english;
printf(" %c %6d %6d %6d %6d\n",sex,score,chinese,math,english);
}
int getDataScore()
{
return score;
}
int getDataChinese()
{
return chinese;
}
int getDataMath()
{
return math;
}
int getDataEnglish()
{
return english;
}
int getDataId()
{
return id;
}
string getDataName()
{
return name;
}
private:
string name;
int id;
int score;
char sex;
}; void tagStudent::setdata()
{
cin>>id>>name>>sex>>chinese>>math>>english;
} typedef tagScore Score;
typedef tagStudent Student; Student a[]
{
tagStudent(,,,"xiaoming",,'M'),
tagStudent(,,,"liyang",,'W'),
tagStudent(,,,"kjdfi",,'M')
}; void print()///显示学生数据
{
cout << " 学生成绩信息 " << endl;
cout << "================================================================================" << endl;
cout <<"ID\tName\tSex Scores chinese math english"<<endl;
} /*HomePage A*/ void screenA()
{
cout << " 学生成绩管理系统 " << endl;
cout << "================================================================================" << endl;
cout << " 1----------按姓名查询 2----------按ID查询" << endl;
cout << " 3----------按学号排序并输出 4----------按成绩排序并输出" << endl;
cout << " 0----------退出程序"<<endl;
cout << "================================================================================" << endl;
} ///按姓名查询
void FindByName()
{
bool flag=false;
system("cls");
cout<<"请输入姓名"<<endl;
string n;
cin>>n;
int i;
for(i=; i<; i++)
{
if(a[i].getDataName()==n)
{
flag=true;
break;
}
}
if(flag==true)
{
print();
a[i].display();
}
else
printf("It is nonexistent!\n");
} ///按ID查询
void FindById()
{
bool flag=false;
system("cls");
printf("请输入学的ID\n");
int i;
int pos;
cin>>pos;
for(i=; i<; i++)
{
if(a[i].getDataId()==pos)
{
flag=true;
break;
}
}
if(flag==true)
{
print();
a[i].display();
}
else printf("It is nonexistent!\n");
} int CmpById(const void *a,const void *b)
{
Student p1=*((Student *)a);
Student p2=*((Student *)b);
if(p1.getDataId()!=p2.getDataId())
return p1.getDataId()-p2.getDataId();
}
///按学号排序输出
void SortById()
{
system("cls");
print();
qsort(a,,sizeof(a[]),CmpById);
int i;
for(i=; i<; i++)
{
a[i].display();
}
} int CmpByScore(const void *a,const void *b)
{
Student p1=*((Student *)a);
Student p2=*((Student *)b);
if(p1.getDataScore()!=p2.getDataScore())///成绩按降序排列
return p2.getDataScore()-p1.getDataScore();
else if(p1.getDataChinese()!=p2.getDataChinese())
return p2.getDataChinese()-p1.getDataChinese();
else if(p1.getDataMath()!=p2.getDataMath())
return p2.getDataMath()-p1.getDataMath();
else if(p1.getDataEnglish()!=p2.getDataEnglish())
return p2.getDataEnglish()-p1.getDataEnglish();
else return p1.getDataId()-p2.getDataId();
} ///按成绩排序并输出
void SortByScore()
{
system("cls");
print();
qsort(a,,sizeof(a[]),CmpByScore);
for(int i=; i<; i++)
{
a[i].display();
}
} /*void DelStudent()
{
system("cls");
printf("请输入要删除学生的ID\n");
int pos;
bool flag=false;
cin>>pos;
for(int i=0; i<3; i++)
{
if(pos==i)
{
flag=true;
for(int j=i; j<3; j++)
a[j]=a[j+1];
}
}
if(flag==false)
{
cout<<"It is nonexistent!\n";
}
}*/
int main()
{
screenA();
int order; scanf("%d",&order);
switch(order)
{
case :
FindByName();
system("pause");
break;
case :
FindById();
system("pause");
break;
case :
SortById();
break;
case :
SortByScore();
system("pause");
break;
case :
system("pause");
break;
default:
cout<<"错误命令\n"<<endl;
}
return ;
}
05-11 15:01