📄 11.cpp
字号:
cin>>num;
for(p=ps;p!=0;p=p->next) if(strcmp(num,p->num)==0) return p;
break;
case 1: string name;
cout<<endl<<"\t\t 请输入姓名:";
cin>>name;
for(p=ps;p!=0;p=p->next) if(strcmp(name,p->name)==0) return p;
break;
}
system("cls");
cout<<endl<<endl<<endl<<endl;
cout<<"\t\t╔═════════════════════╗"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ 无该学生信息! ║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t╚═════════════════════╝"<<endl;
cout<<endl<<endl<<endl<<endl;
getch();
return p;
}
}
}
//查找学生信息
void School::Find()
{
p=Search();
if(p==0) return;
system("cls");
cout<<endl<<endl<<endl<<endl;
cout<<"\t\t╔════════ 查询结果 ════════╗"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ 学 号:"<<setw(28)<<p->num<<"║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ 姓 名:"<<setw(11)<<p->name<<"性 别:"<<setw(9)<<p->sex<<"║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ 数 学:"<<setw(11)<<p->sx<<"英 语:"<<setw(9)<<p->yy<<"║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ 物 理:"<<setw(11)<<p->wl<<"C ++:"<<setw(9)<<p->cpp<<"║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ 课 设:"<<setw(11)<<p->ks<<"总 分:"<<setw(9)<<p->sum<<"║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ 均 分:"<<setw(11)<<p->ave<<"名 次:"<<setw(9)<<p->rank<<"║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t╚═════════════════════╝"<<endl;
cout<<endl<<endl<<endl<<endl<<endl;
getch();
}
//修改学生信息
void School::Edit()
{
p=Search();
if(p==0) return;
int m=0;
string l[12];
while(1)
{
for(int i=0;i<12;i++) strcpy(l[i]," ");
strcpy(l[m],"→ ");
system("cls");
cout<<endl<<endl<<endl<<endl;
cout<<"\t\t╔═══════ 修改学生信息 ═══════╗"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ "<<l[0]<<"学 号:"<<setw(28)<<p->num<<"║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ "<<l[2]<<"姓 名:"<<setw(8)<<p->name<<l[3]<<"性 别:"<<setw(9)<<p->sex<<"║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ "<<l[4]<<"数 学:"<<setw(8)<<p->sx<<l[5]<<"英 语:"<<setw(9)<<p->yy<<"║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ "<<l[6]<<"物 理:"<<setw(8)<<p->wl<<l[7]<<"C ++:"<<setw(9)<<p->cpp<<"║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ "<<l[8]<<"课 设:"<<setw(8)<<p->ks<<l[9]<<"总 分:"<<setw(9)<<p->sum<<"║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ "<<l[10]<<"均 分:"<<setw(8)<<p->ave<<l[11]<<"返 回 ║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t╚═════════════════════╝"<<endl;
cout<<endl<<endl<<endl;
switch(getch())
{
case '1':m--; if(m==-1) m=11; if(m==1) m--; break;
case '2':m+=2; if(m==12) m=1; if(m==13) m=0; if(m==1) m+=2; break;
case '3':
case 32:m++; if(m==12) m=0; if(m==1) m++; break; //空格键等同于右方向键
case '5':m-=2; if(m==-2) m=11; if(m==-1) m=10; if(m==1) m+=9; break;
case 27:Sumsort(); return; //按[ESC]键返回
case '\r':
switch(m)
{
case 0:
case 1: cout<<"\t\t 请输入新学号:"; cin>>p->num; break;
case 2: cout<<"\t\t 请输入新姓名:"; cin>>p->name; break;
case 3: cout<<"\t\t 请输入新性别:"; cin>>p->sex; break;
case 4: cout<<"\t\t 请输入新数学成绩:"; cin>>p->sx; break;
case 5: cout<<"\t\t 请输入新英语成绩:"; cin>>p->yy; break;
case 6: cout<<"\t\t 请输入新物理成绩:"; cin>>p->wl; break;
case 7: cout<<"\t\t 请输入新C++成绩:"; cin>>p->cpp; break;
case 8: cout<<"\t\t 请输入新课设成绩:"; cin>>p->ks; break;
case 9:
case 10: break;
case 11: Sumsort(); return ;
}
p->sum=p->sx+p->yy+p->wl+p->cpp+p->ks;
p->ave=p->sum/5;
}
}
}
//删除学生信息
void School::Delete()
{
p=Search();
if(p==0) return;
if(p!=ps)
{
Student *pt=ps;
while(pt->next!=p)
pt=pt->next;
pt->next=p->next;
}
else
ps=ps->next;
delete p;
system("cls");
cout<<endl<<endl<<endl<<endl;
cout<<"\t\t╔═════════════════════╗"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ 删除学生信息成功! ║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t╚═════════════════════╝"<<endl;
cout<<endl<<endl<<endl<<endl;
Sumsort();
getch();
}
//按照学号排序
void School::Numsort()
{
if(ps==0) return;
Student *pi,*pj,*pt=new Student;
for(pi=ps;pi->next!=0;pi=pi->next)
for(pj=pi->next;pj!=0;pj=pj->next)
if(strcmp(pi->num,pj->num)>0)
{
pt->Set(pi);
pi->Set(pj);
pj->Set(pt);
}
delete pt;
}
//按照总分排序
void School::Sumsort()
{
if(ps==0) return;
int i=1;
Student *pi,*pj,*pt=new Student;
for(pi=ps;pi->next!=0;pi->rank=i++,pi=pi->next)
for(pj=pi->next;pj!=0;pj=pj->next)
if(pi->sum < pj->sum)
{
pt->Set(pi);
pi->Set(pj);
pj->Set(pt);
}
delete pt;
pi->rank=i;
for(pi=ps;pi->next!=0;pi=pi->next)
if(pi->sum == pi->next->sum)
pi->next->rank=pi->rank; //修正总分相同时的排名
}
//90分以上的
void School::Jsys()
{
int m=0;
string l[6];
while(1)
{
for(int i=0;i<6;i++) strcpy(l[i]," ");
strcpy(l[m]," → ");
system("cls");
cout<<endl<<endl<<endl<<endl;
cout<<"\t\t╔═══════ 统计学生信息 ═══════╗"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ "<<l[0]<<"数学90分以上的 ║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ "<<l[1]<<"英语90分以上的 ║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ "<<l[2]<<"物理90分以上的 ║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ "<<l[3]<<"C++90分以上的 ║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ "<<l[4]<<"课设90分以上的 ║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ "<<l[5]<<"返回至主菜单 ║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t╚═════════════════════╝"<<endl;
cout<<endl<<endl<<endl<<endl<<endl;
switch(getch())
{
case '1':m--; if(m==-1) m=5; break;
case '2':m++; if(m==6) m=0; break;
case '3':
case 32:m++; if(m==6) m=0; break; //空格键等同于右方向键
case '5':m--; if(m==-1) m=5; break;
case 27:return; //按[ESC]键返回
case '\r':
switch(m)
{
case 0:OutputT("数 学 9 0 分 以 上 的");
for(p=ps;p!=0;p=p->next) if(p->sx >= 90) p->Print();
break;
case 1:OutputT("英 语 9 0 分 以 上 的");
for(p=ps;p!=0;p=p->next) if(p->yy >= 90) p->Print();
break;
case 2:OutputT("物 理 9 0 分 以 上 的");
for(p=ps;p!=0;p=p->next) if(p->wl >= 90) p->Print();
break;
case 3:OutputT("C ++ 9 0 分 以 上 的");
for(p=ps;p!=0;p=p->next) if(p->cpp >= 90) p->Print();
break;
case 4:OutputT("课 设 9 0 分 以 上 的");
for(p=ps;p!=0;p=p->next) if(p->ks >= 90) p->Print();
break;
case 5:return;
}
OutputL();
getch();
}
}
}
//平均分以下的
void School::Jfyx()
{
float s(0),y(0),w(0),c(0),k(0);
int n=0;
for(p=ps;p!=0;p=p->next,n++)
s+=p->sx, y+=p->yy, w+=p->wl, c+=p->cpp, k+=p->ks;
if(n!=0) s/=n, y/=n, w/=n, c/=n, k/=n;
int m=0;
string l[6];
while(1)
{
for(int i=0;i<6;i++) strcpy(l[i]," ");
strcpy(l[m]," → ");
system("cls");
cout<<endl<<endl<<endl<<endl;
cout<<"\t\t╔═══════ 统计学生信息 ═══════╗"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ "<<l[0]<<"数学平均分以下的 ║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ "<<l[1]<<"英语平均分以下的 ║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ "<<l[2]<<"物理平均分以下的 ║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ "<<l[3]<<"C++平均分以下的 ║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ "<<l[4]<<"课设平均分以下的 ║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t║ "<<l[5]<<"返回至主菜单 ║"<<endl;
cout<<"\t\t║ ║"<<endl;
cout<<"\t\t╚═════════════════════╝"<<endl;
cout<<endl<<endl<<endl<<endl<<endl;
switch(getch())
{
case '1':m--; if(m==-1) m=5; break;
case '2':m++; if(m==6) m=0; break;
case '3':
case 32:m++; if(m==6) m=0; break; //空格键等同于右方向键
case '5':m--; if(m==-1) m=5; break;
case 27:return; //按[ESC]键返回
case '\r':
string t1,t2;
switch(m)
{
case 0:OutputT(strcat(strcat(strcpy(t1,"数学平均分 "),gcvt(s,4,t2))," 分以下"));
for(p=ps;p!=0;p=p->next) if(p->sx < s) p->Print();
break;
case 1:OutputT(strcat(strcat(strcpy(t1,"英语平均分 "),gcvt(y,4,t2))," 分以下"));
for(p=ps;p!=0;p=p->next) if(p->yy < y) p->Print();
break;
case 2:OutputT(strcat(strcat(strcpy(t1,"物理平均分 "),gcvt(w,4,t2))," 分以下"));
for(p=ps;p!=0;p=p->next) if(p->wl < w) p->Print();
break;
case 3:OutputT(strcat(strcat(strcpy(t1,"C++平均分 "),gcvt(c,4,t2))," 分以下"));
for(p=ps;p!=0;p=p->next) if(p->cpp < c) p->Print();
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -