间接寻址设计一个学生成绩系统
#include<iostream.h>
struct STU
{
int number;
char* name;
char* Class;
float math_grade;
int next;
}Stu[5];
class Student
{
public:
Student();
Student(char*n[],char*c[],int num[],float m[],int l);
~Student(){}
void Insert(char*n,char*c,int num,float m,int l);//姓名,班级,学号,成绩
void Delete(int l);
void Locate(int l);
void Print();
private:
STU *s[5];
int length;
};
Student::Student(char*n[],char*c[],int num[],float m[],int l)
{
for(int i=0;i<5;i++)
{
s[i]=&Stu[i];
}
for(i=0;i<4;i++)
{
Stu[i].name=n[i];
Stu[i].Class=c[i];
Stu[i].number=num[i];
Stu[i].math_grade=m[i];
}
length=l;
}
void Student::Insert(char*n,char*c,int num,float m,int l)
{
if(length>=5) cout<<"数据已满."<<endl;
else
{
length++;
Stu[length-1].name=n;
Stu[length-1].Class=c;
Stu[length-1].number=num;
Stu[length-1].math_grade=m;
for(int i=length;i>l;i--)
{
s[i-1]=s[i-2];
}
cout<<" 列入成功."<<endl;
s[l-1]=&Stu[length-1];
}
}
void Student::Delete(int l)
{
if(length==0) cout<<"无数据."<<endl;
else if(l<1||l>length) cout<<"位置错误."<<endl;
else
{
cout<<s[l-1]->name<<"的数据已被删除."<<endl;
for(int i=l;i<length;i++)
{
s[i-1]=s[i];
}
length--;s[length]=NULL;
}
}
void Student::Locate(int l)
{
if(length==0) cout<<"无数据"<<endl;
else if(l<1||l>length) cout<<"位置错误"<<endl;
else
{
cout<<"第"<<l<<"位的数据为:"<<endl;
cout<<"姓名:"<<s[l-1]->name<<endl;
cout<<"班级"<<s[l-1]->Class<<endl;
cout<<"学号"<<s[l-1]->number<<endl;
cout<<"数学成绩"<<s[l-1]->math_grade<<endl;
cout<<endl;
}
}
void Student::Print()
{
int i;
if(length==0) cout<<"无数据."<<endl;
else
{
cout<<"姓名 班级 学号 数学成绩"<<endl;
for(i=0;i<length;i++)
{
cout<<s[i]->name<<" ";
cout<<s[i]->Class<<" ";
cout<<s[i]->number<<" ";
cout<<s[i]->math_grade<<endl;
}
}
}
int main()
{
int p;
int y;
float z;
char x[5];
char r[10];
char*n[4]={"小明","小红","小花","小青"};
char*c[4]={"信管1171","信管1172","计科1171","信管1161"};
int num[4]={2011,2012,2014,2017};
float m[4]={80,90,100,89.5};
Student a(n,c,num,m,4);
cout<<"录入的数据为:"<<endl;
a.Print();
cout<<endl;
cout<<"插入数据"<<endl;
cout<<endl;
cout<<"输入你要列入的姓名:";
cin>>x;
cout<<"输入你要列入的班级:";
cin>>r;
cout<<"输入你要列入的学号:";
cin>>y;
cout<<"输入你要列入的数学成绩:";
cin>>z;
cout<<"输入你要列入的位置:";
cin>>p;
cout<<endl;
a.Insert(x,r,y,z,p);
a.Print();
cout<<endl;
cout<<"要删除的位置:";
cin>>p;
a.Delete(p);
cout<<endl;
cout<<"要查找的数据的位置:";
cin>>p;
a.Locate(p);
cout<<endl;
cout<<"各成员数据如下:"<<endl;
a.Print();
return 0;
struct STU
{
int number;
char* name;
char* Class;
float math_grade;
int next;
}Stu[5];
class Student
{
public:
Student();
Student(char*n[],char*c[],int num[],float m[],int l);
~Student(){}
void Insert(char*n,char*c,int num,float m,int l);//姓名,班级,学号,成绩
void Delete(int l);
void Locate(int l);
void Print();
private:
STU *s[5];
int length;
};
Student::Student(char*n[],char*c[],int num[],float m[],int l)
{
for(int i=0;i<5;i++)
{
s[i]=&Stu[i];
}
for(i=0;i<4;i++)
{
Stu[i].name=n[i];
Stu[i].Class=c[i];
Stu[i].number=num[i];
Stu[i].math_grade=m[i];
}
length=l;
}
void Student::Insert(char*n,char*c,int num,float m,int l)
{
if(length>=5) cout<<"数据已满."<<endl;
else
{
length++;
Stu[length-1].name=n;
Stu[length-1].Class=c;
Stu[length-1].number=num;
Stu[length-1].math_grade=m;
for(int i=length;i>l;i--)
{
s[i-1]=s[i-2];
}
cout<<" 列入成功."<<endl;
s[l-1]=&Stu[length-1];
}
}
void Student::Delete(int l)
{
if(length==0) cout<<"无数据."<<endl;
else if(l<1||l>length) cout<<"位置错误."<<endl;
else
{
cout<<s[l-1]->name<<"的数据已被删除."<<endl;
for(int i=l;i<length;i++)
{
s[i-1]=s[i];
}
length--;s[length]=NULL;
}
}
void Student::Locate(int l)
{
if(length==0) cout<<"无数据"<<endl;
else if(l<1||l>length) cout<<"位置错误"<<endl;
else
{
cout<<"第"<<l<<"位的数据为:"<<endl;
cout<<"姓名:"<<s[l-1]->name<<endl;
cout<<"班级"<<s[l-1]->Class<<endl;
cout<<"学号"<<s[l-1]->number<<endl;
cout<<"数学成绩"<<s[l-1]->math_grade<<endl;
cout<<endl;
}
}
void Student::Print()
{
int i;
if(length==0) cout<<"无数据."<<endl;
else
{
cout<<"姓名 班级 学号 数学成绩"<<endl;
for(i=0;i<length;i++)
{
cout<<s[i]->name<<" ";
cout<<s[i]->Class<<" ";
cout<<s[i]->number<<" ";
cout<<s[i]->math_grade<<endl;
}
}
}
int main()
{
int p;
int y;
float z;
char x[5];
char r[10];
char*n[4]={"小明","小红","小花","小青"};
char*c[4]={"信管1171","信管1172","计科1171","信管1161"};
int num[4]={2011,2012,2014,2017};
float m[4]={80,90,100,89.5};
Student a(n,c,num,m,4);
cout<<"录入的数据为:"<<endl;
a.Print();
cout<<endl;
cout<<"插入数据"<<endl;
cout<<endl;
cout<<"输入你要列入的姓名:";
cin>>x;
cout<<"输入你要列入的班级:";
cin>>r;
cout<<"输入你要列入的学号:";
cin>>y;
cout<<"输入你要列入的数学成绩:";
cin>>z;
cout<<"输入你要列入的位置:";
cin>>p;
cout<<endl;
a.Insert(x,r,y,z,p);
a.Print();
cout<<endl;
cout<<"要删除的位置:";
cin>>p;
a.Delete(p);
cout<<endl;
cout<<"要查找的数据的位置:";
cin>>p;
a.Locate(p);
cout<<endl;
cout<<"各成员数据如下:"<<endl;
a.Print();
return 0;
}
运行结果: