C++设计程序!高手进!
#include
#include
class XueSheng //学生节点,学生表的基本单位
{
public:
XueSheng *start,*current,*precede;
string ID,Name,BJ,XB;
int NL;
float CCJ,JCJ,ICJ,PCJ,ZCJ;
XueSheng *next; //节点的指针,指向下一个节点
XueSheng(string gID,string gName,string gBJ,int gNL,string gXB,float gCCJ,float gJCJ,float gICJ,float gPCJ,float gZ...全部
#include
#include
class XueSheng //学生节点,学生表的基本单位
{
public:
XueSheng *start,*current,*precede;
string ID,Name,BJ,XB;
int NL;
float CCJ,JCJ,ICJ,PCJ,ZCJ;
XueSheng *next; //节点的指针,指向下一个节点
XueSheng(string gID,string gName,string gBJ,int gNL,string gXB,float gCCJ,float gJCJ,float gICJ,float gPCJ,float gZCJ)
{
ID=gID;
Name=gName;
BJ=gBJ;
NL=gNL;
XB=gXB;
CCJ=gCCJ;
JCJ=gJCJ;
ICJ=gICJ;
PCJ=gPCJ;
ZCJ=gZCJ;
next=NULL;
}
void Display()
{
coutDisplay();
cur=cur->next;
}
}
void addXueSheng() //在学生表的开头插入数据
{
string aID,aName,aBJ,aXB;
int aNL;
float aCCJ,aJCJ,aICJ,aPCJ,aZCJ;
cout>aID;
cout>aName;
cout>aBJ;
cout>aNL;
cout>aXB;
cout>aCCJ;
cout>aJCJ;
cout>aICJ;
cout>aPCJ;
cout>aZCJ;
XueSheng *p=new XueSheng(aID,aName,aBJ,aNL,aXB,aCCJ,aJCJ,aICJ,aPCJ,aZCJ);
p->next=head;//指针
head=p;
}
int searchID(string d)//查找数据
{
XueSheng *cur=head;
while(cur!=NULL)
{
if(cur->ID==d)
{
coutIDNameBJNLXBCCJJCJICJPCJZCJnext;
}
return 0;//没找到
}
int searchName(string d)//查找数据
{
XueSheng *cur=head;
while(cur!=NULL)
{
if(cur->Name==d)
{
coutIDNameBJNLXBCCJJCJICJPCJZCJnext;
}
return 0;//没找到
}
void Sort_NO()//按学号排
{
XueSheng *q,*qi,*qj,*pmin,*pminp;
q=head;
head=NULL;
while(q!=NULL)
{
for(pmin=pminp=qi=q;qi!=NULL;qj=qi,qi=qi->next)
if(pmin->IDID)
{
pminp=qj;
pmin=qi;
}
if(pmin==q)
{
q=q->next;
pminp->next=pmin->next;
pmin->next=head;
head=pmin;
}
}
}
void Sort_grade_c()//按C++成绩排开始
{
XueSheng *q,*qi,*qj,*pmin,*pminp;
q=head;
head=NULL;
while(q!=NULL)
{
for(pmin=pminp=qi=q;qi!=NULL;qj=qi,qi=qi->next)
if(pmin->CCJ>qi->CCJ)
{
pminp=qj;
pmin=qi;
}
if(pmin==q)
{
q=q->next;
pminp->next=pmin->next;
pmin->next=head;
head=pmin;
}
}
}
void Sort_grade_java()//按Java成绩排
{
XueSheng *q,*qi,*qj,*pmin,*pminp;
q=head;
head=NULL;
while(q!=NULL)
{
for(pmin=pminp=qi=q;qi!=NULL;qj=qi,qi=qi->next)
if(pmin->JCJ>qi->JCJ)
{
pminp=qj;
pmin=qi;
}
if(pmin==q)
{
q=q->next;
pminp->next=pmin->next;
pmin->next=head;
head=pmin;
}
}
}
void Sort_grade_isas()//按ISAS成绩排
{
XueSheng *q,*qi,*qj,*pmin,*pminp;
q=head;
head=NULL;
while(q!=NULL)
{
for(pmin=pminp=qi=q;qi!=NULL;qj=qi,qi=qi->next)
if(pmin->ICJ>qi->ICJ)
{
pminp=qj;
pmin=qi;
}
if(pmin==q)
{
q=q->next;
pminp->next=pmin->next;
pmin->next=head;
head=pmin;
}
}
}
void Sort_grade_item()//按item成绩排
{
XueSheng *q,*qi,*qj,*pmin,*pminp;
q=head;
head=NULL;
while(q!=NULL)
{
for(pmin=pminp=qi=q;qi!=NULL;qj=qi,qi=qi->next)
if(pmin->PCJ>qi->PCJ)
{
pminp=qj;
pmin=qi;
}
if(pmin==q)
{
q=q->next;
pminp->next=pmin->next;
pmin->next=head;
head=pmin;
}
}
}
void Sort_grade_colligate()//按综合成绩排
{
XueSheng *q,*qi,*qj,*pmin,*pminp;
q=head;
head=NULL;
while(q!=NULL)
{
for(pmin=pminp=qi=q;qi!=NULL;qj=qi,qi=qi->next)
if(pmin->ZCJ>qi->ZCJ)
{
pminp=qj;
pmin=qi;
}
if(pmin==q)
{
q=q->next;
pminp->next=pmin->next;
pmin->next=head;
head=pmin;
}
}
}
void Del_ID() //按学号删开始
{string dID;
cout>dID;
XueSheng *pre,*cur;
pre=NULL;
cur=head;
while(cur!=NULL && pare(cur->ID)!=0)//compare用于string型字符串的比较,也可用==直接比
{pre=cur;cur=cur->next;}
if(cur==NULL) {coutnext;delete cur;coutnext=cur->next;delete cur;cout>dName;
XueSheng *pre,*cur;
pre=NULL;
cur=head;
while(cur!=NULL && pare(cur->Name)!=0)
{pre=cur;cur=cur->next;}
if(cur==NULL) {coutnext;delete cur;coutnext=cur->next;delete cur;cout>mc;
return mc;
}//主菜单结束
int DelMenu()//删除菜单开始
{int dc;
cout>dc;
return dc;
}//删除菜单结束
int AlterMenu()//修改菜单开始
{int ac;
cout>ac;
return ac;
}//修改菜单结束
int SeekMenu()//查找菜单开始
{int sec;
cout>sec;
return sec;
}//查找菜单结束
int SortMenu()//排名菜单开始
{int soc;
cout>soc;
return soc;
}//排名菜单结束
int FileMenu()//文件菜单开始
{int ioc;
cout>ioc;
return ioc;
}//文件菜单结束
};//菜单类结束
main()
{
XueShengBiao XSB;//创建类的一个对象
Menu menu;
int choice;
while(1)
{
choice=menu。
MainMenu();
switch(choice)
{
case 0:exit(0);
case 1: dXueSheng(); owXueShengBiao();break;
case 2:int mc2;
mc2=menu。
DelMenu();
switch(mc2)
{
case 1:XSB。Del_ID();break;//到时候把cout语句换成相应的具体方法
case 2:XSB。
Del_Name();break;//到时候把cout语句换成相应的具体方法
case 3:break;
default:cout>t;
int r= archID(t);
if(r==0)
{
cout>t;
int r= archName(t);
if(r==0)
{
cout<<"链表中无此数据!"< SortMenu();
switch(mc5)
{
case 0:break;
case 1:XSB。Sort_grade_c();break;
case 2:XSB。
Sort_grade_java();break;
case 3:XSB。Sort_grade_isas();break;
case 4:XSB。Sort_grade_item();break;
case 5:XSB。
Sort_grade_colligate();break;
case 6:break;
default:cout<<"请输入0~6!"< FileMenu();
。收起