實驗一是做一個猜單詞的遊戲,bug太多,所以就不貼出來了。。。
實驗二的題目是:
1.完成圖形類及其派生類的定義
(1) 設計一個計算圖形面積的類庫。它的頂層是一個抽象類,並且提供三個純虛函數:顯示數據成員、返回面積和返回體積。
class Shape
{public:
virtual void showData()=0;
virtualdouble reArea()=0;
virtualdouble reVolume()=0;
};
第二層有Shape類派生TwoDimShape(二維圖形)和ThreeShape(三維圖形)類。他們增加了有關的數據成員,但沒有成員函數的實現。
第三層派生具體的圖形類。TwoDimShape類派生Circle(圓)、Elipse(橢圓)、Rectangle(矩形)和Triangle(三角形)等類。ThreeShape類派生Ball(球體)、Cylider(圓柱體)和RectangularParallelepiped(長方體)等類。
(2) 設計一個測試程序,全面測試你的設計,要求使用基類指針引用派生類對象的三個函數。
2.用異質鏈表組織上述各類圖形對象。
(1) 實現單鏈表:將結點數據域定義爲int,鏈表具有插入結點、刪除結點、反轉、遍歷等功能,並測試其正確性。
(2) 將結點數據域定義修改爲Shape *,用鏈表中的每個結點表示一個具體的圖形對象,創建圖形對象鏈表,並測試其正確性。
(3) 將所建單鏈表中的內容寫到一個文本文件中,反轉單鏈表並再次將其內容追加到同一文本文件中,查閱其正確性。
代碼有點累贅,用了許多if,有需要的話可以改成switch。另外可以實現保存鏈表到txt文本,從txt文本導入鏈表。雖然質量不高,bug也很多,大家就多多擔待吧
另外代碼在cfree上編譯通過的,推薦大家用cfree或mingw運行。
#include<iostream>
#include<windows.h>
#include<fstream>
using namespace std;
class Shape
{
public:
virtual void showData()=0;
virtual double reArea()=0;
virtual double reVolume()=0;
virtual void saveData()=0;
virtual int reflag()=0;
Shape *next;
};
class TwoDimShape:public Shape
{
public:
double area;
virtual void showData(){}
virtual void saveData(){}
virtual double reArea(){return 0;}
virtual int reflag(){return 0;}
};
class ThreeShape:public Shape
{
public:
double area;
double volume;
virtual void showData(){}
virtual void saveData(){}
virtual double reArea(){return 0;}
virtual double reVolume(){return 0;}
virtual int reflag(){return 0;}
};
//二維派生
class Circle:public TwoDimShape//圓類
{
private:
double data_1;
double data_2;
double data_3;
int flag;
//area=3.14*radius*radius;
public:
double reVolume(){return 0;}
Circle(double r)
{
data_1=r;
}
void showData()
{
cout<<"圓的半徑是: "<<data_1<<endl;
}
double reArea()
{
area=3.14*data_1*data_1;
cout<<"圓的面積是:"<<area<<endl<<endl;
}
void saveData()
{
fstream save;
save.open("E:\\game\\list.txt",ios::app|ios::out);
save<<"0"<<endl;
save<<"1"<<endl;
save<<data_1<<endl;
save<<area<<endl;
}
int reflag()
{
flag=1;
return flag;
}
};
class Elipse:public TwoDimShape//橢圓類
{
private:
double data_1;
double data_2;
double data_3;
int flag;
public:
double reVolume(){return 0;}
Elipse(double a,double m)
{
data_1=a;
data_2=m;
}
void showData()
{
cout<<"橢圓的長軸是: "<<data_1<<endl;
cout<<"橢圓的短軸是: "<<data_2<<endl;
}
double reArea()
{
area=(3.14*data_1*data_2)/4;
cout<<"橢圓的面積是:"<<area<<endl<<endl;
}
void saveData()
{
fstream save;
save.open("E:\\game\\list.txt",ios::app|ios::out);
save<<"0"<<endl;
save<<"2"<<endl;
save<<data_1<<endl;
save<<data_2<<endl;
save<<area<<endl;
}
int reflag()
{
flag=2;
return flag;
}
};
class Rectangles:public TwoDimShape//長方形類
{
private:
double data_1;
double data_2;
double data_3;
int flag;
public:
double reVolume(){return 0;}
Rectangles(double l,double w)
{
data_1=l;
data_2=w;
}
void showData()
{
cout<<"長方形的長是:"<<data_1<<endl;
cout<<"長方形的寬是:"<<data_2<<endl;
}
double reArea()
{
area=data_1*data_2;
cout<<"長方形的面積是:"<<area<<endl<<endl;
}
void saveData()
{
fstream save;
save.open("E:\\game\\list.txt",ios::app|ios::out);
save<<"0"<<endl;
save<<"3"<<endl;
save<<data_1<<endl;
save<<data_2<<endl;
save<<area<<endl;
}
int reflag()
{
flag=3;
return flag;
}
};
class Triangle:public TwoDimShape//三角形類
{
private:
double data_1;
double data_2;
double data_3;
int flag;
public:
double reVolume(){return 0;}
Triangle(double b,double h)
{
data_1=b;
data_2=h;
}
void showData()
{
cout<<"三角形的底是:"<< data_1<<endl;
cout<<"三角形的高是:"<< data_2<<endl;
}
double reArea()
{
area=(data_1*data_2)/2 ;
cout<<"三角形的面積是:"<<area<<endl<<endl;
}
void saveData()
{
fstream save;
save.open("E:\\game\\list.txt",ios::app|ios::out);
save<<"0"<<endl;
save<<"4"<<endl;
save<<data_1<<endl;
save<<data_2<<endl;
save<<area<<endl;
}
int reflag()
{
flag=4;
return flag;
}
};
//三維派生
class Ball:public ThreeShape//球類
{
private:
double data_1;
double data_2;
double data_3;
int flag;
public:
Ball(double b)
{
data_1=b;
}
void showData()
{
cout<<"球的半徑是:"<< data_1<<endl;
}
double reArea()
{
area=4*data_1*data_1;
cout<<"球的面積是:"<< area<<endl;
}
double reVolume()
{
volume=(4/3)*data_1*data_1*data_1;
cout<<"球的體積是:"<< volume<<endl<<endl;
}
void saveData()
{
fstream save;
save.open("E:\\game\\list.txt",ios::app|ios::out);
save<<"0"<<endl;
save<<"5"<<endl;
save<< data_1<<endl;
save<<area<<endl;
save<<area<<endl;
}
int reflag()
{
flag=5;
return flag;
}
};
class Cylider:public ThreeShape//圓柱類
{
private:
double data_1;
double data_2;
double data_3;
int flag;
public:
Cylider(double r,double h)
{
data_1=r;
data_2=h;
}
void showData()
{
cout<<"圓柱的底面半徑是:"<< data_1<<endl;
cout<<"圓柱的高是:"<< data_2<<endl;
}
double reArea()
{
area=(2*3.14*data_1*data_1)+(2*3.14*data_1*data_2);
cout<<"圓柱的面積是:"<< area <<endl;
}
double reVolume()
{
volume=3.14*data_1*data_1*data_2;
cout<<"圓柱的體積是:"<< volume<<endl<<endl;
}
void saveData()
{
fstream save;
save.open("E:\\game\\list.txt",ios::app|ios::out);
save<<"0"<<endl;
save<<"6"<<endl;
save<<data_1<<endl;
save<<data_2<<endl;
save<<area<<endl;
save<<area<<endl;
}
int reflag()
{
flag=6;
return flag;
}
};
class RectangularParallelepiped:public ThreeShape//長方體類
{
private:
double data_1;
double data_2;
double data_3;
int flag;
public:
RectangularParallelepiped(double l,double w,double h)
{
data_1=l;
data_2=w;
data_3=h;
}
void showData()
{
cout<<"長方體的長是:"<<data_1<<endl;
cout<<"長方體的寬是:"<<data_2<<endl;
cout<<"長方體的高是:"<<data_3<<endl;
}
double reArea()
{
area=2*(data_1*data_2+data_1*data_3+data_2*data_3) ;
cout<<"長方體的面積是:"<<area<<endl;
}
double reVolume()
{
volume=data_1*data_2*data_3;
cout<<"長方體的體積是:"<<volume<<endl<<endl;
}
void saveData()
{
fstream save;
save.open("E:\\game\\list.txt",ios::app|ios::out);
save<<"0"<<endl;
save<<"7"<<endl;
save<<data_1<<endl;
save<<data_2<<endl;
save<<data_3<<endl;
save<<area<<endl;
save<<area<<endl;
}
int reflag()
{
flag=7;
return flag;
}
};
void creatlist(Shape * & head,int n)//創建鏈表
{
int creat_judge=0;
int creat_num=0;//創建節點數量
Shape *move=NULL;
Shape *p=NULL;//用於創建每個鏈表
for(creat_num=1;creat_num<=n;creat_num++)
{
cout<<"1 建立圓形的鏈表"<<endl<<"2 建立橢圓形的鏈表"<<endl<<"3 建立長方形的鏈表"<<endl<<"4 建立三角形的鏈表"<<endl<<"5 建立球體的鏈表"<<endl<<"6 建立圓柱體的鏈表"<<endl<<"7 建立長方體的鏈表"<<endl;
cout<<"當每個圖形輸入數據爲0時退出!"<<endl;
cout<<endl<<"請輸入你的選擇:";
cin>>creat_judge;
if(creat_judge==0)
{
cout<<"輸入錯誤,請從新輸入:";
cin>> creat_judge;
}
if(creat_judge==1)
{
double data;
cout<<"請輸入半徑:";
cin>>data;
if(data==0)
{
return;
}
p=new Circle(data);
p->reArea();
}
else if(creat_judge==2)
{
double data1;
double data2;
cout<<"請輸入長軸:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"請輸入短軸:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Elipse(data1,data2);
p->reArea();
}
else if(creat_judge==3)
{
double data1;
double data2;
cout<<"請輸入長:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"請輸入寬:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Rectangles(data1,data2);
p->reArea();
}
else if(creat_judge==4)
{
double data1;
double data2;
cout<<"請輸入底邊:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"請輸入高:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Triangle(data1,data2);
p->reArea();
}
else if(creat_judge==5)
{
double data1;
cout<<"請輸入半徑:";
cin>>data1;
if(data1==0)
{
return;
}
p=new Ball(data1);
p->reArea();
p->reVolume();
}
else if(creat_judge==6)
{
double data1;
double data2;
cout<<"請輸入底面半徑:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"請輸入高:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Cylider(data1,data2);
p->reArea();
p->reVolume();
}
else if(creat_judge==7)
{
double data1;
double data2;
double data3;
cout<<"請輸入長:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"請輸入寬:";
cin>>data2;
if(data2==0)
{
return;
}
cout<<"請輸入高:";
cin>>data3;
if(data3==0)
{
return;
}
p=new RectangularParallelepiped(data1,data2,data3);
p->reArea();
p->reVolume();
}
p->next=NULL;
if(head==NULL)
{
head=p;
move=p;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN | FOREGROUND_BLUE);
cout<<'\n'<<"第"<<creat_num<<"個鏈表創建成功!"<<'\n'<<endl;
if(creat_num<n)
{
cout<<"您現在正在創建第"<<(creat_num)+1<<"個鏈表"<<'\n'<<endl;
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN);
}
else
{
move->next=p;
move=p;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN | FOREGROUND_BLUE);
cout<<'\n'<<"第"<<creat_num<<"個鏈表創建成功!"<<'\n'<<endl;
if(creat_num<n)
{
cout<<"您現在正在創建第"<<(creat_num)+1<<"個鏈表"<<'\n'<<endl;
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN);
}
}
}
void browselist(Shape *head)//遍歷鏈表
{
if(head==NULL)
{
cout<<endl;
cout<<"您還沒有建立鏈表呦~"<<endl<<endl;
return;
}
Shape *browse=NULL;
browse=head;
while(browse!=NULL)
{
browse->showData();
browse->reArea();
browse->reVolume();
browse=browse->next;
}
delete browse;
}
void insertlist(Shape * & head)//插入 第n個數據後插入數據
{
if(head==NULL)
{
cout<<endl;
cout<<"您還沒有建立鏈表呦~"<<endl<<endl;
return;
}
int insert_num;
int select_num;
int i;
Shape *p=NULL;
Shape *judge=head;//判斷插入的合法性
cout<<"在第__個鏈表後插入?";
cin>>insert_num;
for(i=2;i<=insert_num;i++)//判斷插入的合法性
{
judge=judge->next;
}
if(judge==NULL)
{
cout<<'\n'<<"不合法的插入!"<<endl;
return;
}
cout<<endl;
cout<<"1 插入圓形的鏈表"<<endl<<"2 插入橢圓形的鏈表"<<endl<<"3 插入長方形的鏈表"<<endl<<"4 插入三角形的鏈表"<<endl<<"5 插入球體的鏈表"<<endl<<"6 插入圓柱體的鏈表"<<endl<<"7 插入長方體的鏈表"<<endl<<"當輸入數據爲0時退出!"<<endl;
cout<<endl<<"請輸入你的選擇:";
cin>>select_num;
if(insert_num==0)//如果在頭結點插入
{
if(select_num==1)
{
int data1;
cout<<"請輸入半徑:";
cin>>data1;
if(data1==0)
{
return;
}
p=new Circle(data1);
p->reArea();
p->next=head;
head=p;
cout<<"數據成功插入!"<<endl;
}
else if(select_num==2)
{
int data1;
int data2;
cout<<"請輸入長軸:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"請輸入短軸:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Elipse(data1,data2);
p->reArea();
p->next=head;
head=p;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN | FOREGROUND_BLUE);
cout<<"數據成功插入!"<<endl;
}
else if(select_num==3)
{
int data1;
int data2;
cout<<"請輸入長:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"請輸入短寬:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Rectangles(data1,data2);
p->reArea();
p->next=head;
head=p;
cout<<"數據成功插入!"<<endl;
}
else if(select_num==4)
{
int data1;
int data2;
cout<<"請輸入底:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"請輸入高:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Triangle(data1,data2);
p->reArea();
p->next=head;
head=p;
cout<<"數據成功插入!"<<endl;
}
else if(select_num==5)
{
int data1;
cout<<"請輸入半徑:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"請輸入高:";
p=new Ball(data1);
p->reArea();
p->reVolume();
p->next=head;
head=p;
cout<<"數據成功插入!"<<endl;
}
else if(select_num==6)
{
int data1;
int data2;
cout<<"請輸入底面半徑:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"請輸入高:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Cylider(data1,data2);
p->reArea();
p->reVolume();
p->next=head;
head=p;
cout<<"數據成功插入!"<<endl;
}
else if(select_num==6)
{
int data1;
int data2;
int data3;
cout<<"請輸入長:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"請輸入寬:";
cin>>data2;
if(data2==0)
{
return;
}
cout<<"請輸入高:";
cin>>data3;
if(data3==0)
{
return;
}
p=new RectangularParallelepiped(data1,data2,data3);
p->reArea();
p->reVolume();
p->next=head;
head=p;
cout<<"數據成功插入!"<<endl;
}
}
else//如果不在頭結點插入
{
Shape *m;//用於指向到指定的鏈表位置
int i=0;//用於循環到指定的鏈表位置
m=head;
for(i=1;i<insert_num;i++)
{
m=m->next;
}
if(select_num==1)
{
int data1;
cout<<"請輸入半徑:";
cin>>data1;
if(data1==0)
{
return;
}
p=new Circle(data1);
p->reArea();
p->next=m->next;
m->next=p;
cout<<"數據成功插入!"<<endl;
}
else if(select_num==2)
{
int data1;
int data2;
cout<<"請輸入長軸:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"請輸入短軸:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Elipse(data1,data2);
p->reArea();
p->next=m->next;
m->next=p;
cout<<"數據成功插入!"<<endl;
}
else if(select_num==3)
{
int data1;
int data2;
cout<<"請輸入長:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"請輸入寬:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Rectangles(data1,data2);
p->reArea();
p->next=m->next;
m->next=p;
cout<<"數據成功插入!"<<endl;
}
else if(select_num==4)
{
int data1;
int data2;
cout<<"請輸入底:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"請輸入高:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Triangle(data1,data2);
p->reArea();
p->next=m->next;
m->next=p;
cout<<"數據成功插入!"<<endl;
}
else if(select_num==5)
{
int data1;
cout<<"請輸入半徑:";
cin>>data1;
if(data1==0)
{
return;
}
p=new Ball(data1);
p->reArea();
p->reVolume();
p->next=m->next;
m->next=p;
cout<<"數據成功插入!"<<endl;
}
else if(select_num==6)
{
int data1;
int data2;
cout<<"請輸入底面半徑:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"請輸入高:";
cin>>data2;
if(data2==0)
{
return;
}
p=new Cylider(data1,data2);
p->reArea();
p->reVolume();
p->next=m->next;
m->next=p;
cout<<"數據成功插入!"<<endl;
}
else if(select_num==7)
{
int data1;
int data2;
int data3;
cout<<"請輸入底面長:";
cin>>data1;
if(data1==0)
{
return;
}
cout<<"請輸入寬:";
cin>>data2;
if(data2==0)
{
return;
}cout<<"請輸入高:";
cin>>data3;
if(data3==0)
{
return;
}
p=new RectangularParallelepiped(data1,data2,data3);
p->reArea();
p->reVolume();
p->next=m->next;
m->next=p;
cout<<"數據成功插入!"<<endl;
}
}
}
void deletelist(Shape * & head)
{
if(head==NULL)
{
cout<<endl;
cout<<"您還沒有建立鏈表呦~"<<endl<<endl;
return;
}
int delete_sel; //刪除節點的位置
int delete_num;//選擇刪除指定相同的節點
int j=0;//用於選擇刪除指定相同的節點
Shape *d,*e,*f;//用於指向到指定的鏈表位置的前一位
d=head;
cout<<"1 刪除圓形的節點"<<endl<<"2 刪除橢圓形的節點"<<endl<<"3 刪除長方形的節點"<<endl<<"4 刪除三角形的節點"<<endl<<"5 刪除球體的節點"<<endl<<"6 刪除圓柱體的節點"<<endl<<"7 刪除長方體的節點"<<endl<<"當輸入數據爲0時退出!"<<endl;
cout<<endl<<"請輸入你的選擇:";
cin>>delete_sel;
if(delete_sel>7)
{
cout<<"不合法輸入";
return;
}
cout<<"刪除此圖形的第幾個數據?";
cin>> delete_num;
for(j=0;j<delete_num;j++)
{
f=d;
for(;d->reflag()!=delete_sel;)
{
f=d;
d=d->next;
}
if((j+1)!=delete_num)
{d=d->next;}
}
if(d==head)
{
head=head->next;
delete d;
cout<<'\n'<<"刪除成功!"<<endl;
}
else
{
e=f->next;
f->next=f->next->next;
delete e;
cout<<'\n'<<"刪除成功!"<<endl;
}
/*if(delete_num==0)
{
cout<<"第1個節點纔是頭結點,請從新輸入:";
cin>>delete_num;
}
else if(delete_num==1)
{
head=head->next;
delete d;
cout<<'\n'<<"刪除成功!"<<endl;
}
else if(delete_num>1 && delete_num<999)
{
for(j=2;j<delete_num;j++)
{
d=d->next;
}
e=d->next;
d->next=d->next->next;
delete e;
cout<<'\n'<<"刪除成功!"<<endl;
}*/
}
void turnlist(Shape * & head)//翻轉鏈表
{
if(head==NULL)
{
cout<<endl;
cout<<"您還沒有建立鏈表呦~"<<endl<<endl;
return;
}
Shape *t1=NULL;
Shape *t2=NULL;
Shape *t3=NULL;//三個配合來翻轉
t1=head;
t2=t1->next;
t3=t2->next;
t1->next=NULL;
for(;t3!=NULL;)
{
t2->next=t1;
t1=t2;
t2=t3;
t3=t3->next;
}
if(t3==NULL)
{
t2->next=t1;
delete t3;
head=t2;
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN | FOREGROUND_BLUE);
cout<<'\n'<<"鏈表反轉成功!"<<'\n'<<endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN);
}
void savelist(Shape * & head)
{
if(head==NULL)
{
cout<<endl;
cout<<"您還沒有建立鏈表呦~"<<endl<<endl;
return;
}
Shape *browse=head;
while(browse!=NULL)
{
browse->saveData();
browse=browse->next;
}
delete browse;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN | FOREGROUND_BLUE);
cout<<endl<<"導出到文本成功!"<<endl<<endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN);
}
void readlist(Shape * & head)
{
head=NULL;
fstream read;
read.open("E:\\game\\list.txt",ios::in);
double m[9999];//文本數據存儲
int i,j;
int judge;//只是個判斷,不用定義爲int
Shape *p=NULL;
Shape *move=NULL;
for(i=0;!read.eof();i++)
{
read>>m[i];
//m[i+1]=0;
}
for(j=0;j<i-1;j++)
{
if(m[j]==0)
{
if(m[j+1]==1)
{
double data1;
data1=m[j+2];
p=new Circle(data1);
}
else if(m[j+1]==2)
{
double data1;
double data2;
data1=m[j+2];
data2=m[j+3];
p=new Elipse(data1,data2);
}
else if(m[j+1]==3)
{
double data1;
double data2;
data1=m[j+2];
data2=m[j+3];
p=new Rectangles(data1,data2);
}
else if(m[j+1]==4)
{
double data1;
double data2;
data1=m[j+2];
data2=m[j+3];
p=new Triangle(data1,data2);
}
else if(m[j+1]==5)
{
double data1;
data1=m[j+2];
p=new Ball(data1);
}
else if(m[j+1]==6)
{
double data1;
double data2;
data1=m[j+2];
data2=m[j+3];
p=new Cylider(data1,data2);
}
else if(m[j+1]==7)
{
double data1;
double data2;
double data3;
data1=m[j+2];
data2=m[j+3];
p=new RectangularParallelepiped(data1,data2,data3);
}
}
//p->next=NULL;
if(head==NULL)
{
head=p;
//move=p;
}
else
{
move->next=p;
//move=p;
}
move=p;
p->next=NULL;
}
}
int main()
{
SetConsoleTitle("圖形鏈表錄入系統 CREATED BY 劉麒 2013.8");//設置標題
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN);
int data_num;//鏈表個數
int menu_sel;//菜單選擇
Shape *head=NULL;
void creatlist(Shape * & head,int n);
void browselist(Shape *head);
void insertlist(Shape * & head);
void deletelist(Shape * & head);
void turnlist(Shape * & head);
void savelist(Shape * & head);
void readlist(Shape * & head);
while(1)
{
cout<<"■■■■■■■■■■■■■■" <<endl;
cout<<"■1 創建鏈表 ■"<<endl<<"■2 遍歷鏈表 ■"<<endl<<"■3 插入鏈表 ■"<<endl<<"■4 刪除鏈表 ■"<<endl<<"■5 反轉鏈表 ■"<<endl<<"■6 存儲鏈表到txt文件 ■"<<endl<<"■7 查看鏈表文件 ■"<<endl<<"■8 從txt文本中導入鏈表 ■"<<endl<<"■9 安全退出 ■"<<endl;
cout<<"■ !鏈表只可創建一次! ■"<<endl;
cout<<"■■■■■■■■■■■■■■" <<endl;
cout<<"請輸入你的選擇:";
cin>>menu_sel;
//int showsystime();
//showsystime();
if(menu_sel==9)
{
return 0;
}
else if(menu_sel==1)
{
if(head!=NULL)
{
cout<<endl<<"!鏈表只可創建一次!"<<endl<<"程序已退出!"<<endl;
return 0;
}
cout<<"請輸入需要創建節點個數:";
cin>>data_num;
cout<<endl;
if(data_num==0)
{
cout<<"您沒有創建鏈表,程序退出!"<<endl;
return 0;
}
creatlist(head,data_num);
}
else if(menu_sel==2)
{
browselist(head);
}
else if(menu_sel==3)
{
insertlist(head);
}
else if(menu_sel==4)
{
deletelist(head);
}
else if(menu_sel==5)
{
turnlist(head);
}
else if(menu_sel==6)
{
savelist(head);
}
else if(menu_sel==7)
{
system("E:\\game\\list.txt");
}
else if(menu_sel==8)
{
readlist(head);
}
}
}