順序表設計一個學生成績系統
阿新 • • 發佈:2018-12-02
#include<iostream.h>
class Student
{
int number[20];
char* name[20];
char* Class[20];
float math_grade[20];
int length;
public:
Student(){length=0;}
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();
};
Student::Student(char*n[],char*c[],int num[],float m[],int l)
{
for(int i=0;i<4;i++)
{
name[i]=n[i];
Class[i]=c[i];
number[i]=num[i];
math_grade[i]=m[i];
}
length=l;
}
void Student::Insert(char*n,char*c,int num,float m,int l)
{
length++;
if(length>=20) cout<<"資料已滿."<<endl;
if(l<1||l>length+1) cout<<"位置非法"<<endl;
for(int i=length;i>l;i--)
{
name[i-1]=name[i-2];
Class[i-1]=Class[i-2];
number[i-1]=number[i-2];
math_grade[i-1]=math_grade[i-2];
}
name[i-1]=n;
Class[i-1]=c;
number[i-1]=num;
math_grade[i-1]=m;
cout<<" 列入成功."<<endl;
}
void Student::Delete(int l)
{
if(length==0) cout<<"無資料."<<endl;
else if(l<1||l>length) cout<<"位置錯誤."<<endl;
else
{
cout<<name[l-1]<<"的資料已被刪除."<<endl;
for(int i=l;i<length;i++)
{
name[i-1]=name[i];
Class[i-1]=Class[i];
number[i-1]=number[i];
math_grade[i-1]=math_grade[i];
}
length--;
}
}
void Student::Locate(int l)
{
if(length==0) cout<<"無資料"<<endl;
else if(l<1||l>length) cout<<"位置錯誤"<<endl;
else
{
cout<<"第"<<l<<"位的資料為:"<<endl;
cout<<"姓名:"<<name[l-1]<<endl;
cout<<"班級"<<Class[l-1]<<endl;
cout<<"學號"<<number[l-1]<<endl;
cout<<"數學成績"<<math_grade[l-1]<<endl;
cout<<endl;
}
}
void Student::Print()
{
int i;
if(length==0) cout<<"無資料."<<endl;
else
{
cout<<"姓名 班級 學號 數學成績"<<endl;
for(i=0;i<length;i++)
{
cout<<name[i]<<" ";
cout<<Class[i]<<" ";
cout<<number[i]<<" ";
cout<<math_grade[i]<<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;
}
執行結果:
class Student
{
int number[20];
char* name[20];
char* Class[20];
float math_grade[20];
int length;
public:
Student(){length=0;}
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 Print();
};
Student::Student(char*n[],char*c[],int num[],float m[],int l)
{
for(int i=0;i<4;i++)
{
name[i]=n[i];
Class[i]=c[i];
number[i]=num[i];
math_grade[i]=m[i];
length=l;
}
void Student::Insert(char*n,char*c,int num,float m,int l)
{
length++;
if(length>=20) cout<<"資料已滿."<<endl;
if(l<1||l>length+1) cout<<"位置非法"<<endl;
for(int i=length;i>l;i--)
{
name[i-1]=name[i-2];
Class[i-1]=Class[i-2];
number[i-1]=number[i-2];
math_grade[i-1]=math_grade[i-2];
name[i-1]=n;
Class[i-1]=c;
number[i-1]=num;
math_grade[i-1]=m;
cout<<" 列入成功."<<endl;
}
void Student::Delete(int l)
{
if(length==0) cout<<"無資料."<<endl;
else if(l<1||l>length) cout<<"位置錯誤."<<endl;
else
{
cout<<name[l-1]<<"的資料已被刪除."<<endl;
for(int i=l;i<length;i++)
{
name[i-1]=name[i];
Class[i-1]=Class[i];
number[i-1]=number[i];
math_grade[i-1]=math_grade[i];
}
length--;
}
}
void Student::Locate(int l)
{
if(length==0) cout<<"無資料"<<endl;
else if(l<1||l>length) cout<<"位置錯誤"<<endl;
else
{
cout<<"第"<<l<<"位的資料為:"<<endl;
cout<<"姓名:"<<name[l-1]<<endl;
cout<<"班級"<<Class[l-1]<<endl;
cout<<"學號"<<number[l-1]<<endl;
cout<<"數學成績"<<math_grade[l-1]<<endl;
cout<<endl;
}
}
void Student::Print()
{
int i;
if(length==0) cout<<"無資料."<<endl;
else
{
cout<<"姓名 班級 學號 數學成績"<<endl;
for(i=0;i<length;i++)
{
cout<<name[i]<<" ";
cout<<Class[i]<<" ";
cout<<number[i]<<" ";
cout<<math_grade[i]<<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;
}
執行結果: