?? 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 + -