📄 menu3.cpp
字号:
#include "menu.h"
/*包含find、findmore、display、transport四个函数*/
/*-----------------------------------------------------------------*
*函数: find() *
*参数: 整型,字符串,表结构指针 *
*作用: 精确查找记录 *
*返回: 表结构 *
*-----------------------------------------------------------------*/
sys find(int choice[3],char ch1[50],char ch2[50],sys *all)
{
sys reply;
int table=choice[1];
int column=choice[2];//默认是查找第一列
switch(table)
{
//从学生表中查找
case 1:
{
STUDENT *p;
p=all->studenthead->next;
if(column==10)
{
while(p!=NULL&&strcmp(ch1,p->SP_NO)!=0)
{
p=p->next;
}
reply.studenthead=p;
break;
}
if(column==11)
{
while(p!=NULL&&strcmp(ch1,p->CNO)!=0)
{
p=p->next;
}
reply.studenthead=p;
break;
}
if(column==12)
{
while(p!=NULL&&strcmp(ch1,p->CH_NO)!=0)
{
p=p->next;
}
reply.studenthead=p;
break;
}
while(p!=NULL&&strcmp(ch1,p->SNO)!=0)
{
p=p->next;
}
reply.studenthead=p;
break;
}
//从教师表中查找
case 2:
{
TEACHER *p;
p=all->teacherhead->next;
if(column==8)
{
while(p!=NULL&&strcmp(ch1,p->DNO)!=0)
{
p=p->next;
}
reply.teacherhead=p;
break;
}
while(p!=NULL&&strcmp(ch1,p->TNO)!=0)
{
p=p->next;
}
reply.teacherhead=p;
break;
}
//从课程表中查找
case 3:
{
COURSE *p;
p=all->coursehead->next;
if(column==7)
{
while(p!=NULL&&strcmp(ch1,p->DNO)!=0)
{
p=p->next;
}
reply.coursehead=p;
break;
}
while(p!=NULL&&strcmp(ch1,p->CO_NO)!=0)
{
p=p->next;
}
reply.coursehead=p;
break;
}
//从专业表中查找
case 4:
{
SPECIALITY *p;
p=all->specialityhead->next;
if(column==5)
{
while(p!=NULL&&strcmp(ch1,p->DNO)!=0)
{
p=p->next;
}
reply.specialityhead=p;
break;
}
while(p!=NULL&&strcmp(ch1,p->SP_NO)!=0)
{
p=p->next;
}
reply.specialityhead=p;
break;
}
//从院系表中查找
case 5:
{
DEPARTMENT *p;
p=all->departmenthead->next;
while(p!=NULL&&strcmp(ch1,p->DNO)!=0)
{
p=p->next;
}
reply.departmenthead=p;
}
//从班级表中查找
case 6:
{
CLASS *p;
p=all->classhead->next;
if(column==6)
{
while(p!=NULL&&strcmp(ch1,p->TNO)!=0)
{
p=p->next;
}
reply.classhead=p;
break;
}
if(column==7)
{
while(p!=NULL&&strcmp(ch1,p->DNO)!=0)
{
p=p->next;
}
reply.classhead=p;
break;
}
while(p!=NULL&&strcmp(ch1,p->CNO)!=0)
{
p=p->next;
}
reply.classhead=p;
break;
}
//从教学计划表中查找
case 7:
{
PROJECT *p;
p=all->projecthead->next;
if(column==1)
{
while(p!=NULL&&strcmp(ch1,p->SP_NO)!=0)
{
p=p->next;
}
reply.projecthead=p;
break;
}
if(column==2)
{
while(p!=NULL&&strcmp(ch1,p->CO_NO)!=0)
{
p=p->next;
}
reply.projecthead=p;
break;
}
while(p!=NULL&&!(strcmp(ch1,p->SP_NO)==0&&strcmp(ch2,p->CO_NO)==0))
{
p=p->next;
}
reply.projecthead=p;
break;
}
//从入校报到表中查找
case 8:
{
REGISTER *p;
p=all->registerhead->next;
if(column==2)
{
while(p!=NULL&&strcmp(ch1,p->DNO)!=0)
{
p=p->next;
}
reply.registerhead=p;
break;
}
while(p!=NULL&&strcmp(ch1,p->RNO)!=0)
{
p=p->next;
}
reply.registerhead=p;
break;
}
//从选修表中查找
case 9:
{
SC *p;
p=all->schead->next;
if(column==1)
{
while(p!=NULL&&!(strcmp(ch1,p->SNO)==0))
{
p=p->next;
}
reply.schead=p;
break;
}
if(column==2)
{
while(p!=NULL&&!(strcmp(ch1,p->CO_NO)==0))
{
p=p->next;
}
reply.schead=p;
break;
}
if(column==5)
{
while(p!=NULL&&!(strcmp(ch1,p->TNO)==0))
{
p=p->next;
}
reply.schead=p;
break;
}
while(p!=NULL&&!(strcmp(ch1,p->SNO)==0&&strcmp(ch2,p->CO_NO)==0))
{
p=p->next;
}
reply.schead=p;
break;
}
//从讲授表中查找
case 10:
{
TC *p;
p=all->tchead->next;
if(column==1)
{
while(p!=NULL&&!(strcmp(ch1,p->TNO)==0))
{
p=p->next;
}
reply.tchead=p;
break;
}
if(column==2)
{
while(p!=NULL&&!(strcmp(ch1,p->CO_NO)==0))
{
p=p->next;
}
reply.tchead=p;
break;
}
while(p!=NULL&&!(strcmp(ch1,p->TNO)==0&&strcmp(ch2,p->CO_NO)==0))
{
p=p->next;
}
reply.tchead=p;
break;
}
//从参加活动表中查找
case 11:
{
JOINACTIVITY *p;
p=all->joinactivityhead->next;
if(column==1)
{
while(p!=NULL&&!(strcmp(ch1,p->ANO)==0))
{
p=p->next;
}
reply.joinactivityhead=p;
break;
}
if(column==4)
{
while(p!=NULL&&!(strcmp(ch1,p->SNO)==0))
{
p=p->next;
}
reply.joinactivityhead=p;
break;
}
while(p!=NULL&&!(strcmp(ch1,p->ANO)==0&&strcmp(ch2,p->SNO)==0))
{
p=p->next;
}
reply.joinactivityhead=p;
break;
}
//从登记表中查找
case 12:
{
LOGON *p;
p=all->logonhead->next;
if(column==1)
{
while(p!=NULL&&!(strcmp(ch1,p->RNO)==0))
{
p=p->next;
}
reply.logonhead=p;
break;
}
if(column==2)
{
while(p!=NULL&&!(strcmp(ch1,p->SNO)==0))
{
p=p->next;
}
reply.logonhead=p;
break;
}
while(p!=NULL&&!(strcmp(ch1,p->RNO)==0&&strcmp(ch2,p->SNO)==0))
{
p=p->next;
}
reply.logonhead=p;
break;
}
//从学校活动表中查找
case 13:
{
ACTIVITY *p;
p=all->activityhead->next;
while(p!=NULL&&strcmp(ch1,p->ANO)!=0)
{
p=p->next;
}
reply.activityhead=p;
break;
}
//从寝室表中查找
case 14:
{
CHAMBER *p;
p=all->chamberhead->next;
while(p!=NULL&&strcmp(ch1,p->CH_NO)!=0)
{
p=p->next;
}
reply.chamberhead=p;
break;
}
default:break;
}
return reply;
}
/*-----------------------------------------------------------------*
*函数: findmore() *
*参数: 整型,字符串,表结构指针、数组 *
*作用: 模糊查找记录 *
*返回: 无 *
*-----------------------------------------------------------------*/
void findmore(int choice[3],char ch[50],sys *all,sys reply[100])
{
int table=choice[1];
int column=choice[2];
int num=0;
int step=0;
char word[3];
unsigned int i,j,length;
switch(table)
{
//从学生表中查找
case 1:
{
STUDENT *p;
reply[0].studenthead=NULL;
p=all->studenthead->next;
if(column==11)
{
while(p!=NULL)
{
if(strcmp(ch,p->CNO)==0)
{
reply[num++].studenthead=p;
reply[num].studenthead=NULL;
}
p=p->next;
}
break;
}
while(p!=NULL)
{
length=strlen(p->SN);
step=0;
for(i=0;i<length;i++)
{
for(j=0;j<strlen(ch);j++)
{
word[j]=p->SN[step+j];
}
word[j]='\0';
if(strcmp(ch,word)==0)
{
reply[num++].studenthead=p;
reply[num].studenthead=NULL;
break;
}
step+=strlen(ch);
}
p=p->next;
}
break;
}
case 2:
{
TEACHER *p;
reply[0].teacherhead=NULL;
p=all->teacherhead->next;
if(column==8)
{
while(p!=NULL)
{
if(strcmp(ch,p->DNO)==0)
{
reply[num++].teacherhead=p;
reply[num].teacherhead=NULL;
}
p=p->next;
}
break;
}
while(p!=NULL)
{
length=strlen(p->TN);
step=0;
for(i=0;i<length;i++)
{
for(j=0;j<strlen(ch);j++)
{
word[j]=p->TN[step+j];
}
word[j]='\0';
if(strcmp(ch,word)==0)
{
reply[num++].teacherhead=p;
reply[num].teacherhead=NULL;
break;
}
step+=strlen(ch);
}
p=p->next;
}
break;
}
case 4:
{
SPECIALITY *p;
reply[0].specialityhead=NULL;
p=all->specialityhead->next;
if(column==5)
{
while(p!=NULL)
{
if(strcmp(ch,p->DNO)==0)
{
reply[num++].specialityhead=p;
reply[num].specialityhead=NULL;
}
p=p->next;
}
}
break;
}
case 6:
{
CLASS *p;
reply[0].classhead=NULL;
p=all->classhead->next;
if(column==7)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -