亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2287 | 回復(fù): 7
打印 上一主題 下一主題

幫忙一下!謝了 寫一下類之間的關(guān)系 與編寫該程序是的思路 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-12-09 00:27 |只看該作者 |倒序瀏覽
#include<iostream>
#include<iomanip>
#include<fstream>
#include<string>

using namespace std;

#define max 100;
class student
{
public:
student *next;
public:
string name;//姓名
long num;//學(xué)號
int x,y,z;//數(shù)學(xué),語文,英語
int AA;//總分
void play(){cout<<name<<"學(xué)生的學(xué)號是"<<num<<",數(shù)學(xué):"<<x<<",語文:"<<y<<",英語:"<<z<<",總分:"<<AA<<endl;};
student(string sname,long snum,int sx,int sy,int sz)
{
name=sname;
num=snum;
x=sx;
y=sy;
z=sz;
}
};


class cla
{
public:
cla()//構(gòu)造函數(shù)
{
stu=0;
sload();
}
~cla()//析構(gòu)函數(shù)
{
student *p;
p=stu;
while(p)
{
p=p->next;
delete stu;
stu=p;
}
stu=0;
}
void sadd(); //添加
void sremove(); //刪除
void samend(); //修改
void ssearch(); //查詢
void staxis(); //排序
void ssave(); //保存
void sload(); //讀取

//排序函數(shù)
void pxh();
void psx();
void pyw();
void pyy();
void pAA();
private:
student *stu; //頭接點
};

void cla::sadd()//添加
{
student *q;
string name1;
long num1;
int x1,y1,z1;



system("cls";
cout<<"\n **增加的學(xué)生** \n"<<endl;
cout<<"請輸入學(xué)生的(中間用空格間隔) "<<endl;
cout<<"姓名 學(xué)號 數(shù)學(xué)成績 語文成績 英語成績:"<<endl;
cin>>name1>>num1>>x1>>y1>>z1;

q=new student(name1,num1,x1,y1,z1);
q->next=0;
q->AA=x1+y1+z1;

if(stu)
{
student *t;
t=stu;
if(t->num==num1)
{
cout<<"學(xué)號已存在,請重新輸入"<<endl;
return;
}
while(t->next)
{
if(t->num==num1)
{
cout<<"學(xué)號已存在,請重新輸入"<<endl;
return;
}
t=t->next;
}
t->next=q;
}
else
{
stu=q;
}
cout<<"輸入完畢"<<endl;
}

void cla::sremove()//刪除
{
system("cls";
int num1;
cout<<"\n** 刪除學(xué)生信息 **\n";
cout<<"請輸入想要刪除學(xué)生的學(xué)號:";
cin>>num1;

//查找要刪除的結(jié)點
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1->num==num1)
break;
else
{
p2=p1;
p1=p1->next;
}
}

//刪除結(jié)點
if(p1!=NULL)//若找到結(jié)點,則刪除
{
p1->play();
cout<<"確定刪除嗎?[Y/N]"<<endl;
char c;cin>>c;
if(toupper(c)!='Y') return;

if(p1==stu) //若要刪除的結(jié)點是第一個結(jié)點
{
stu=p1->next;
delete p1;
}
else //若要刪除的結(jié)點是后續(xù)結(jié)點
{
p2->next=p1->next;
delete p1;
}
cout<<"找到學(xué)號為"<<num1<<"的學(xué)生,并刪除\n";
}
else //未找到結(jié)點
cout<<"未找到想要刪除的學(xué)生!\n";
}

void cla::samend()//修改
{
system("cls";
long num1;
cout<<"\n** 修改學(xué)生信息 **\n";
cout<<"輸入要修改學(xué)生的學(xué)號";
cin>>num1;

//查找要修改的結(jié)點
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1->num==num1)
break;
else
{
p2=p1;
p1=p1->next;
}
}
if(p1!=NULL)
{
cout<<"學(xué)號是"<<num1<<"的學(xué)生的信息"<<endl;
cout<<"姓名 "<<p1->name<<"數(shù)學(xué)"<<p1->x<<"語文"<<p1->y<<"英語"<<p1->z<<endl;
cout<<"請輸入修改后的信息:姓名 數(shù)學(xué)成績 語文成績 英語成績"<<endl;
cin>>p1->name>>p1->x>>p1->y>>p1->z;
p1->AA=p1->x+p1->y+p1->z;
cout<<"修改成功"<<endl;
}
else //未找到接點
cout<<"未找到!\n";
}

void cla::ssearch()//查詢
{
system("cls";
cout<<"\n** 查詢學(xué)生信息 **\n"<<endl;
cout<<"請輸入查詢方式:"<<endl;
cout<<"1.按學(xué)號查詢"<<endl;
cout<<"2.按姓名查詢"<<endl;
cout<<"3.返回"<<endl;
char c; cin>>c;
switch (c)
{
case '1':
{
long num1;
cout<<"要查詢的學(xué)號"<<endl;
cin>>num1;
//查找要查詢的結(jié)點
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1->num==num1)
break;
else
{
p2=p1;
p1=p1->next;
}
}

if(p1!=NULL)
{
cout<<"學(xué)號是"<<num1<<"的學(xué)生的信息"<<endl;
cout<<"姓名:"<<p1->name<<" 數(shù)學(xué):"<<p1->x<<" 語文:"<<p1->y<<" 英語:"<<p1->z<<endl;
cout<<"查詢完畢...";
}
else //未找到接點
cout<<"未找到!\n";
break;
}
case '2':
{
string name1;
cout<<"要查詢的學(xué)生姓名"<<endl;
cin>>name1;
//查找要查詢的結(jié)點
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1->name==name1)
break;
else
{
p2=p1;
p1=p1->next;
}
}

if(p1!=NULL)
{
cout<<name1<<"的學(xué)生的信息"<<endl;
cout<<"學(xué)號:"<<p1->num<<" 數(shù)學(xué):"<<p1->x<<" 語文:"<<p1->y<<" 英語:"<<p1->z<<endl;
cout<<"查詢完畢...";
}
else //未找到接點
cout<<"未找到!\n";
break;
}
case '3': return;
}

}

void cla::pxh() //按學(xué)號排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{ n++; p1=p1->next; }
cout<<"共有"<<n<<"條信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{
p1=stu;
if (p1->num>p1->next->num) // 如果頭結(jié)點大于第二個的
{
p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //頭結(jié)點交換
stu=p2;
}
p1=stu;
while(p1->next->next) //中間的交換
{
p2=p1;
p1=p1->next;
if(p1->num>p1->next->num)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交換
}
}
}

p1=stu;
do
{
p1->play();
p1=p1->next;
}while(p1);
}

void cla::psx()//按數(shù)學(xué)成績排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{ n++; p1=p1->next; }
cout<<"共有"<<n<<"條信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{ p1=stu;
if (p1->x>p1->next->x) // 如果頭結(jié)點大于第二個的
{ p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //頭結(jié)點交換
stu=p2;
}
p1=stu;
while(p1->next->next) //中間的交換
{ p2=p1;
p1=p1->next;
if(p1->x>p1->next->x)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交換
}
}
}
p1=stu;
do
{ p1->play();
p1=p1->next;
}while(p1);
}


void cla::pyw()//按語文成績排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{ n++; p1=p1->next; }
cout<<"共有"<<n<<"條信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{ p1=stu;
if (p1->y>p1->next->y) // 如果頭結(jié)點大于第二個的
{ p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //頭結(jié)點交換
stu=p2;
}
p1=stu;
while(p1->next->next) //中間的交換
{ p2=p1;
p1=p1->next;
if(p1->y>p1->next->y)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交換
}
}
}
p1=stu;
do
{ p1->play();
p1=p1->next;
}while(p1);
}

void cla::pyy()//按英語成績排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{ n++; p1=p1->next; }
cout<<"共有"<<n<<"條信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{ p1=stu;
if (p1->z>p1->next->z) // 如果頭結(jié)點大于第二個的
{ p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //頭結(jié)點交換
stu=p2;
}
p1=stu;
while(p1->next->next) //中間的交換
{ p2=p1;
p1=p1->next;
if(p1->z>p1->next->z)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交換
}
}
}
p1=stu;
do
{ p1->play();
p1=p1->next;
}while(p1);
}

void cla::pAA()//按總分排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{ n++; p1=p1->next; }
cout<<"共有"<<n<<"條信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{ p1=stu;
if (p1->AA>p1->next->AA) // 如果頭結(jié)點大于第二個的
{ p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //頭結(jié)點交換
stu=p2;
}
p1=stu;
while(p1->next->next) //中間的交換
{ p2=p1;
p1=p1->next;
if(p1->AA>p1->next->AA)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交換
}
}
}
p1=stu;
do
{ p1->play();
p1=p1->next;
}while(p1);
}

void cla::staxis()//排序
{

system("cls";
char c;
cout<<"請選擇以何種方式排序:"<<endl;
cout<<"1……以學(xué)號排序"<<endl;
cout<<"2……以數(shù)學(xué)成績排序"<<endl;
cout<<"3……以語文成績排序"<<endl;
cout<<"4……以英語成績排序"<<endl;
cout<<"5……以總分排序"<<endl;
cout<<"6……返回"<<endl;
cout<<"請選擇(1-6)"<<endl;
cin>>c;

switch (c)
{
case '1':pxh(); break;
case '2':psx(); break;
case '3':pyw(); break;
case '4':pyy(); break;
case '5':pAA(); break;
case '6':return;
}

}

void cla::ssave() //保存到文件
{
system("cls";
char c;
cout<<"\n保存學(xué)生信息(將覆蓋原文件),是否繼續(xù)?[Y/N]:"; cin>>c;
if(toupper(c)!='Y') return;


ofstream tfile("date.txt",ios_base::binary);
student *p=stu;
while(p)// 寫入文件
{
tfile<<p->name<<"\t"<<p->num<<"\t"<<p->x<<"\t"<<p->y<<"\t"<<p->z;
tfile<<endl;
p=p->next;
}
tfile.close();
cout<<"保存完畢..."<<endl;
}

void cla::sload() //讀取
{
student *p;
p=stu;
while(p)
{
stu=p->next;
delete p;
p=stu;
}


ifstream tfile("date.txt",ios_base::binary);

string name1;
long num1;
int x1,y1,z1;

tfile>>name1>>num1>>x1>>y1>>z1;
while(tfile.good())
{
//創(chuàng)建學(xué)生接點
student *s;
s=stu;
s=new student(name1,num1,x1,y1,z1);
s->next=0;
s->AA=x1+y1+z1;
if(stu) //若已經(jīng)存在結(jié)點
{
student *p2;
p2=stu;
while(p2->next) //查找尾結(jié)點
{
p2=p2->next;
}
p2->next=s; //連接
}
else //若不存在結(jié)點(表空)
{
stu=s; //連接
}
tfile>>name1>>num1>>x1>>y1>>z1;
}
tfile.close();
cout<<"\n學(xué)生信息已經(jīng)裝入...\n";


}


void main()
{
char c;
cla a;
do
{
cout<<"\n 學(xué) 生 成 績 管 理 系 統(tǒng) \n";
cout<<"**************************************\n";
cout<<" 作者:軟件工程06110119:zgjxwl \n";
cout<<" 1……增加學(xué)生 \n";
cout<<" 2……刪除學(xué)生 \n";
cout<<" 3……修改學(xué)生 \n";
cout<<" 4……查詢學(xué)生信息 \n";
cout<<" 5……排序 \n";
cout<<" 6……保存信息 \n";
cout<<" 7……讀取信息 \n";
cout<<" 8……退出 \n";
cout<<"**************************************\n";
cout<<"請選擇(1-:";
cin>>c;
switch(c)
{
case '1': a.sadd();break;
case '2': a.sremove();break;
case '3': a.samend();break;
case '4': a.ssearch();break;
case '5': a.staxis();break;
case '6': a.ssave();break;
case '7': a.sload();break;
}
}while(c!='8');
}

論壇徽章:
0
2 [報告]
發(fā)表于 2010-12-09 11:35 |只看該作者
沒什么關(guān)系。以上代碼涉及到兩個類:一個class 班級 一個student 學(xué)生。
很顯然 每個班級可以有多個學(xué)生,所有在class 類里有一個學(xué)生列表指針。
然后就是針對這個列表,實現(xiàn)的一系列方法,比如增加一個學(xué)生到該班級,刪除一個學(xué)生等等...

論壇徽章:
0
3 [報告]
發(fā)表于 2010-12-09 12:50 |只看該作者
回復(fù) 2# wb112200


    能不能說的詳細點

論壇徽章:
0
4 [報告]
發(fā)表于 2010-12-09 12:54 |只看該作者
回復(fù) 3# 奧斯特洛夫斯基


    你指那方面?

論壇徽章:
0
5 [報告]
發(fā)表于 2010-12-09 13:04 |只看該作者
回復(fù) 4# wb112200


    比如有沒有涉及到繼承等  就是關(guān)于一個具體的解題思路

論壇徽章:
0
6 [報告]
發(fā)表于 2010-12-09 13:16 |只看該作者
回復(fù) 5# 奧斯特洛夫斯基


      首先 從現(xiàn)實生活考慮 一個班級 有班主任 有學(xué)生 有班級名稱等對班級的描述,一個學(xué)生 在學(xué)校有學(xué)號 有名字 有班級編號等描述。
    這些描述抽象到數(shù)據(jù)模型里,就叫屬性了。而抽象出的數(shù)據(jù)模型通常就是類或者結(jié)構(gòu)體等。
   
另外 涉及類時 注意區(qū)分繼承和包含的關(guān)系。
繼承是在原有屬性基礎(chǔ)上擴展,是對基類的近一步描述細化。 比如:基類 人,子類 男人。男人是對人的近一步描述。
包含是合并數(shù)據(jù)模型組建新數(shù)據(jù)模型。比如:電腦 是由主機和顯示器等組成的。
這里所說到的班級和學(xué)生的關(guān)系 也屬于組成 所有不涉及到繼承關(guān)系。

論壇徽章:
0
7 [報告]
發(fā)表于 2010-12-09 13:18 |只看該作者
em06:

論壇徽章:
0
8 [報告]
發(fā)表于 2010-12-09 13:28 |只看該作者
回復(fù) 6# wb112200


    感謝你 真的很感謝
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP