📄 mis_sms(finish).c
字号:
break;
}
}
}
ClearDisplay(1,1);
GoToXY(26,10);
if(head==NULL || subgrade==1)
{
if(var==1)
printf(" Record sort fail !!! ");
else
printf("Statistic grade fail !!!");
}
else
{
if(var==1)
printf(" Record sort successful!!");
else
printf(" Statistic grade successful !!!");
}
GoToXY(24,12);
printf(" [1]. Show result!");
GoToXY(24,13);
printf(" [0]. Back to Menu");
GoToXY(24,15);
printf("please make a choise[0-1]");
WhereXY(&s_x,&s_y);
while(1)
{
GoToXY(s_x,s_y);
key=GetchKey();
if (key == _1 || key == _0 || key == _ESC)
break;
else
{
PrintAlert(1);
continue;
}
}
if(key==_1)
{
if(subgrade==1 && key != _ESC)
{
PrintInfo(0);
PrintTopBorder();
return 0;
}
PrintInfo(sign);
statflag=0;
PrintTopBorder();
return 0;
}
else
return 0;
}
/*
*************************************************************
* 函数描述:学生信息打印函数
* 输入参数:sign 显示分隔符的位置
* 返回值 :无
*************************************************************
*/
int PrintInfo(int sign)
{
int pflag,k=0,count_i,i,j,key,count=0,page,y,r,xx,yy,tail_x,tail_y,flag=0,row=0,p_x,p_y;
char **txt,pagecode[20];
char str_avg[5],str_total[5],str_age[3];
int exitflag,datacheck,k_x,k_y,data,t_x,t_y;
Stu_Lnode *q,**pagecount,*printhead,*printtail;
ClearDisplay(1,1);
if (searchflag == 1 || statflag == 1)
{
printhead=temphead;
printtail=temptail;
}
else
{
printhead=head;
printtail=tail;
}
PrintRecordFrame(sign);
if (printhead == NULL)
{
GoToXY(1,19);
printf("not record,press any key to back");
GetchKey();
Clear(1,19);
return -1;
}
q=printhead; // q 指向第一个数据
while(q!=printtail)
{
count++; //count 所有记录数
q=q->next;
}
txt=(char *)malloc(count*sizeof(char));
page=(count-1)/10+1;
pagecount = (Stu_Lnode *)malloc(page*sizeof(Stu_Lnode));
q=printhead->next;
for (i=0,j=0;i<count;i++)
{
if (i%10==0)
{
pagecount[j] = q;
j++;
}
q=q->next;
}
q = pagecount[0];
i=0;
//--------------------------------------
StructSort(3);
//--------------------------------------
while(1)
{
ClearPrintDisplay();
count=0;
y=3;
yy=3;
exitflag=0;
while(count<10)
{
GoToXY(0,y);
CalculateTotal(q,str_total);
CalculateAvg(q,str_avg);
PrintStudentRecord(q,str_total,str_avg,sign);
tail_y=0;
if (q==printtail)
{
WhereXY(&tail_x,&tail_y);
break;
}
q=q->next;
count++;
y++;
}
q=pagecount[i];
r = 0;
while (r!=row)
{
q=q->next;
r++;
}
GoToXY(1,14);
printf("%d/%d",i+1,page);
GoToXY(1,15);
printf("Press [up]/[down]/[pageup]/[pagedown]/[enter]/[delete] operate");
GoToXY(1,16);
printf("Press [ESC] to back");
GoToXY(1,row+3);
printf("[");
GoToXY(78,row+3);
printf("]");
q=pagecount[i];
r = 0; // 计数器
while (r!=row) //q 指向选中的元素
{
q=q->next;
r++;
}
while(1)
{
WhereXY(&xx,&yy);
key = GetchKey();
if(key==_END)
{
i=page-1;
q=pagecount[i];
row=0;
break;
}
if(key==_HOME)
{
i=0;
q=pagecount[0];
row=0;
break;
}
if(key==_INSERT && page>1)
{
Clear(1,15);
Clear(1,16);
GoToXY(1,15);
printf("Change page---Please input a page_code:[");
WhereXY(&p_x,&p_y);
while(1)
{
GoToXY(p_x,p_y);
printf("%*s]",page/10+1," ");
GoToXY(p_x,p_y);
while(1)
{
datacheck=InputDataCheck(pagecode,page/10+1,p_x,p_y);
if(datacheck==1)
break;
GoToXY(p_x,p_y);
}
i=atoi(pagecode)-1;
if (i>page-1)
{
GoToXY(1,19);
printf("Error,Please input a page_code between [1-%d]",page);
GetchKey();
Clear(1,19);
continue;
}
break;
}
row=0;
q=pagecount[i];
break;
}
//------------------------------------------------------------
#ifdef DEBUG
if (key == _DELETE)
{
Clear(1,15);
Clear(1,16);
GoToXY(10,15);
printf("Delete Confirm:");
GoToXY(28,15);
printf(" Press [ENTER] to continue");
GoToXY(28,16);
printf(" Press [ESC] to back");
while(1)
{
key=GetchKey();
if (key == _ENTER || key == _ESC)
break;
else
{
PrintAlert(10);
continue;
}
}
Clear(1,15);
Clear(1,16);
if (key == _ESC)
{
r = 0;
q=pagecount[i];
while (r!=row)
{
q=q->next;
r++;
}
GoToXY(xx,yy);
continue;
}
if (key == _ENTER)
{
q = pagecount[i];
r = 0;
while (r!=row)
{
q=q->next;
r++;
}
strcpy(&txt[k],q->data.sno);
k++;
if (q==printtail)
{
if (printtail==pagecount[i])
{
if (printtail==printhead->next)
{
if (searchflag == 1)
{
temphead=NULL;
}
else
{
head=NULL;
return 0;
}
//------------------------------------------------------
q=head->next;
while(q)
{
for (j=0;j<k;j++)
{
if (strcmp(q->data.sno,&txt[j])==0)
{
if (q==tail)
{
tail=tail->pre;
}
else
{
q->pre->next=q->next;
q->next->pre=q->pre;
}
}
}
q=q->next;
}
return 0;
//------------------------------------------------------
}
else
{
i--;
page--;
row=0;
printtail=printtail->pre;
}
}
else
{
printtail=printtail->pre;
row--;
}
}
else
{
q->pre->next=q->next;
q->next->pre=q->pre;
}
q=printhead;
count=0;
while(q!=printtail)
{
count++;
q=q->next;
}
q=printhead->next;
for (count_i=0,j=0;count_i<count;count_i++)
{
if (count_i%10==0)
{
pagecount[j] = q;
j++;
page=j;
}
q=q->next;
}
q=pagecount[i];
savedatalabel = 1;
filedatachange=1;
break;
}
}
#endif
//------------------------------------------------------------
if (key == _PAGEDOWN && i==page-1)
{
GoToXY(1,19);
printf("Alert ,This is last page");
Sleep(500);
Clear(1,19);
GoToXY(xx,yy);
continue;
}
if (key == _PAGEUP && i==0)
{
GoToXY(1,19);
printf("Alert ,This is first page");
Sleep(500);
Clear(1,19);
GoToXY(xx,yy);
continue;
}
if (key == _PAGEDOWN && i<page-1)
{
q = pagecount[++i];
row=0;
flag=0;
break;
}
if (key == _PAGEUP && i>0)
{
q = pagecount[--i];
row=0;
break;
}
if (key == KEY_UP && yy!=3)
{
row--;
PrintSign("up",yy);
WhereXY(&xx,&yy);
continue;
}
if (key == KEY_UP && yy==3 && i>0)
{
row=9;
q = pagecount[--i];
flag=1;
break;
}
if (key == KEY_DOWN )
{
if (yy==tail_y-1 && i==page-1 )
{
GoToXY(1,19);
printf("Alert ,This is last record");
Sleep(500);
Clear(1,19);
GoToXY(xx,yy);
continue;
}
if (yy!=12 && yy!=tail_y-1)
{
row++;
PrintSign("down",yy);
WhereXY(&xx,&yy);
continue;
}
}
if (key == KEY_UP && yy==3 && i==0)
{
GoToXY(1,19);
printf("Alert ,This is first record");
Sleep(500);
Clear(1,19);
GoToXY(xx,yy);
continue;
}
if (key == KEY_DOWN && yy==12 && i<page-1)
{
q = pagecount[++i];
row=0;
flag=0;
break;
}
//-----------------------------------------------------
if (key == _ENTER)
{
data=0;
q = pagecount[i];
r = 0;
while (r!=row)
{
q=q->next;
r++;
}
ClearPrintDisplayAll();
PrintSubjectMenu(q->data.sno);
GoToXY(48,6);
printf("Total Score:");
WhereXY(&p_x,&p_y);
GoToXY(48,9);
printf(" Avg Score:");
while(1)
{
for (k=0;k<7;k++)
{
GoToXY(30,4+k);
printf(" ");
}
GoToXY(40,4);
printf(" ");
GoToXY(p_x,p_y);
printf(" ");
GoToXY(p_x,p_y+3);
printf(" ");
GoToXY(30,3);
printf("%s",q->data.sno);
GoToXY(30,4);
printf("%s",q->data.sname);
GoToXY(30,5);
printf("%d",q->data.sage);
GoToXY(30,6);
printf("%s",q->data.schi);
GoToXY(30,7);
printf("%s",q->data.seng);
GoToXY(30,8);
printf("%s",q->data.smath);
GoToXY(30,9);
printf("%s",q->data.spho);
GoToXY(30,10);
printf("%s",q->data.sche);
GoToXY(p_x,p_y);
CalculateTotal(q,str_total);
printf("%s",str_total);
GoToXY(p_x,p_y+3);
CalculateAvg(q,str_avg);
printf("%s",str_avg);
GoToXY(1,14);
printf("Press [up] / [down] to move \"->\" and Press [ENTER] to insert data");
GoToXY(1,15);
printf("Press [pageup]/ [pagedown] to next page");
GoToXY(1,16);
printf("Press [ESC] to Back");
WhereXY(&t_x,&t_y);
GoToXY(13,4);
printf("->");
WhereXY(&k_x,&k_y);
GoToXY(t_x,t_y);
while(1)
{
key = GetchKey();
if(key==_ENTER)
{
switch(data)
{
case 0:
do{
pflag=InputName(q->data.sname);
}while(pflag==-1);
break;
case 1:
do{
pflag=InputAge(str_age);
}while(pflag==-1);
q->data.sage= atoi(str_age);
break;
case 2:
do{
pflag=InputGrade(q->data.schi, "chinese","",6);
}while(pflag==-1);
break;
case 3:
do{
pflag=InputGrade(q->data.seng, "english","",7);
}while(pflag==-1);
break;
case 4:
do{
pflag=InputGrade(q->data.smath,"mathematics","",8);
}while(pflag==-1);
break;
case 5:
do{
pflag=InputGrade(q->data.spho, "Phogric","",9);
}while(pflag==-1);
break;
case 6:
do{
pflag=InputGrade(q->data.sche, "Chemical","",10);
}while(pflag==-1);
break;
}
CalculateTotal(q,str_total);
CalculateAvg(q,str_avg);
GoToXY(1,19);
printf("Data change successful !!! ");
GoToXY(p_x,p_y);
printf(" ");
GoToXY(p_x,p_y);
printf("%s",str_total);
GoToXY(p_x,p_y+3);
printf(" ");
GoToXY(p_x,p_y+3);
printf("%s",str_avg);
Sleep(500);
Clear(1,19);
filedatachange=1;
GoToXY(k_x-1,k_y);
continue;
}
if(key==KEY_DOWN)
{
if(data<6)
{
GoToXY(13,k_y);
printf(" ");
k_y++;
GoToXY(13,k_y);
printf("->");
GoToXY(k_x-1,k_y);
data++;
continue;
}
else
{
GoToXY(13,k_y);
printf(" ");
k_y=4;
GoToXY(13,k_y);
printf("->");
GoToXY(k_x-1,k_y);
data=0;
continue;
}
}
if(key == KEY_UP )
{
if(data>0)
{
GoToXY(13,k_y);
printf(" ");
k_y--;
GoToXY(13,k_y);
printf("->");
GoToXY(k_x-1,k_y);
data--;
continue;
}
else
{
GoToXY(13,k_y);
printf(" ");
k_y=10;
GoToXY(13,k_y);
printf("->");
GoToXY(k_x-1,k_y);
data=6;
continue;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -