#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
class student{
private:
string sno;
string name;
string age;
string sex;
string math;
string english;
string computer;
string score;
public:
student()
{
//cout<<"构造一个学生类"<<endl;
}
student(int sn,string na,int ag,string se,double ma,double co,double en)
{
cout<<"构造一个学生类"<<endl;
sno=sn;name=na;age=ag;sex=se;math=ma;computer=co;english=en;score=math+english+computer;
}
~student()
{
//cout<<"析构一个学生类"<<endl;
}
string GetSno()
{
return sno;
}
string GetName()
{
return name;
}
string GetAge()
{
return age;
}
string GetSex()
{
return sex;
}
string GetMath()
{
return math;
}
string GetEnglish()
{
return english;
}
string GetComputer()
{
return computer;
}
string GetScore()
{
return score;
}
void SetSno(string s)
{
sno=s;
}
void SetName(string n)
{
name=n;
}
void SetAge(string a)
{
age=a;
}
void SetSex(string x)
{
sex=x;
}
void SetMath(string m)
{
math=m;
}
void SetEnglish(string e)
{
english=e;
}
void SetComputer(string c)
{
computer=c;
}
void SetScore()
{
score=math+english+computer;
}
void display()
{
cout<<setw(10)<<sno<<setw(10)<<name<<setw(10)<<age<<setw(10)<<sex<<setw(10)<<math<<setw(10)<<english<<setw(10)<<computer<<setw(10)<<score<<endl;
}
};
class db
{
student stu[120];
static int n;
public:
void input();
void display_db();
void sort_db();
int search(string s);
int deleat(string d);
};
int db::n=0;
int db::deleat(string d)
{
int i=0;
int t=0;
int r,l,m;
sort_db();
l=0;
r=n;
m=(r+l)/2;
while(l<=r)
{
m=(r+l)/2;
if(stu[m].GetSno()>d)
{
r=m;
if(stu[m].GetSno()==d)
{
t=1;
i=m;
break;
}
r=r-1;
}
else
{
l=m;
if(stu[m].GetSno()==d)
{
t=1;
i=m;
break;
}
l=l+1;
}
}
if(t==1)
{
--n;
for(i=m;i<n;++i)
{
stu[i]=stu[i+1];
}
}
else
{
cout<<"没有这个学号!"<<endl;
}
}
int db::search(string s)
{
int r,l,m;
sort_db();
l=0;
r=n;
m=(r+l)/2;
while(l<=r)
{
m=(r+l)/2;
if(stu[m].GetSno()>s)
{
r=m;
if(stu[m].GetSno()==s)
{
cout<<"查找到"<<s<<endl;
stu[m].display();
break;
}
r=r-1;
}
else
{
l=m;
if(stu[m].GetSno()==s)
{
cout<<"查找到"<<s<<endl;
stu[m].display();
break;
}
l=l+1;
}
}
if(l>r)cout<<"没查找到"<<s<<endl;
}
void db::input()
{
char tname[20];
string stu_age;
string stu_num;
string stu_sex;
string stu_math,stu_english,stu_computer;
do
{
cout<<"请输入学生的学号:(键入0表示输入结束!)";
cin>>stu_num;
stu[n].SetSno(stu_num);
if(stu[n].GetSno()=="0")
break;
cout<<"请输入学生的姓名:";
getchar();
gets(tname);
stu[n].SetName(tname);
cout<<"请输入学生的年龄:";
cin>>stu_age;
stu[n].SetAge(stu_age);
cout<<"请输入学生的性别:";
cin>>stu_sex;
stu[n].SetSex(stu_sex);
cout<<"请输入学生的数学成绩:";
cin>>stu_math;
stu[n].SetMath(stu_math);
cout<<"请输入学生的英语成绩:";
cin>>stu_english;
stu[n].SetEnglish(stu_english);
cout<<"请输入学生的计算机成绩:";
cin>>stu_computer;
stu[n].SetComputer(stu_computer);
stu[n].SetScore();
n++;
}while(1);
}
void db::display_db()
{
cout<<setiosflags(ios::left)<<endl;
cout<<setw(10)<<"学号"<<setw(10)<<"姓名"<<setw(10)<<"年龄"<<setw(10)<<"性别"<<setw(10)<<"数学"<<setw(10)<<"英语"<<setw(10)<<"计算机"<<setw(10)<<"总成绩"<<endl;
int i;
for(i=0;i<n;i++)
stu[i].display();
}
void db::sort_db()
{
int i,j;
student t;
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(stu[j].GetSno ()>stu[j+1].GetSno ())
{
t=stu[j];
stu[j]=stu[j+1];
stu[j+1]=t;
}
}
void menu()
{
system("cls");
cout<<"欢迎使用学生信息管理系统"<<endl;
cout<<"1.创建模块"<<endl;
cout<<"2.显示模块"<<endl;
cout<<"3.排序模块"<<endl;
cout<<"4.查找模块"<<endl;
cout<<"5.删除模块"<<endl;
cout<<"0.退出"<<endl;
cout<<"请输入你的选择:";
}
int main()
{
db jike;
string s;
int x;
string d;
while (1)
{
menu();
cin>>x;
switch(x)
{
case 1:jike.input();break;
case 2:jike.display_db();system("pause");break;
case 3:jike.sort_db();system("pause");break;
case 4:cout<<"输入查找的学号:";cin>>s;jike.search(s);system("pause");break;
case 5:cout<<"输入要删除的学号:";cin>>d;jike.deleat(d);system("pause");break;
case 0:cout<<"谢谢使用!"<<endl;return 0;
}
}
return 0;
}