📄 function1.c
字号:
GetStr(password,6,1);
break;
}
else
{
Empty(2,21,70,21);
printf("you input username is not exist!you must input again!");
Empty(18,8,28,8);
GetStr(username,10,0);
}
}while(1);
for(i=2;i>=0;i--)
{
if(strcmp(password,"123456")==0)//判断密码是否正确,若超过三次则退出系统!
{
p=1;
system("cls");
break;
}
else
{
Empty(2,21,70,21);
if(i==0)
{
printf("you input password 3 chance, press any key to exit!");
}
else
{
printf("Password is error! You has %d chance!",i);
Empty(18,10,28,10);
GetStr(password,6,1);
}
}
}
if(i==-1)
exit(0);
return p;
}
//================================输出主菜单功能函数===================================//
void Main_Menu_Function()
{
char ch;
int x,y;
Main_Menu_Interface();
GoToXY(59,16);
WhereXY(&x, &y);
ch=Personalized_Tips(x,y,7);//调用人性化提提示函数!
switch(ch)//菜单选择!
{
case '1':
Add_Function();
break;
case '2':
Sort_Function();
break;
case '3':
Print_Function(head,1,0,0);
break;
case '4':
SaveFile();
break;
case '5':
LoadFile();
break;
case '6':
Search_Function();
break;
case '7':
Stasco_Function();
break;
case '0':
Exit_Function();
break;
}
}
//================================增加功能函数===================================//
void Add_Function()
{
do
{
char a[3],b[5];
int i=0,j,lenght;
LinkList *p;
p=(LinkList *)malloc(sizeof(LinkList));
p->next=NULL;
system("cls");
Add_Interface();
if(lenght>100) //判断记录数是否大于等于100
{
Empty(2,21,60,21);
GoToXY(2,21);
printf("The information you enter is full,please enter any key to return!");
getch();
}
else
{
i=AutomaticSno();//自动生成学号
p->data.sno=i;
GoToXY(19,6);
printf("%03d",p->data.sno);//对学号的输出
GoToXY(19,7);//输入输出姓名
Name_Judge(p->data.name);
if(p->data.name[0]==27)
{
p->data.sno=0;
return;
}
Empty(19,7,40,7);
puts(p->data.name);
GoToXY(19,8);//输入输出年龄
p->data.age=Age_Judge(a);
if(p->data.age ==-1)
{
p->data.sno=0;
return;
}
printf("%d",p->data.age);
for(j=0;j<5;j++)//输入输出五科成绩
{
GoToXY(19,j+9);
p->data.score[j]=Score_Judge(b,j+9);
if(p->data.score[j]==-1)
{
p->data.sno =0;
return;
}
printf("%.1f",p->data.score [j]);
}
if(head==NULL)//把节点插入原链表!
{
head=p;
last=p;
}
else
{
last->next=p;
last=p;
}
lenght=GetLinkLen(head);
isSave=0;
Empty(2,21,70,21);
GoToXY(2,20);
printf("add success! do you want to contine[y/n]:");
GoToXY(43,20);
Exit_Judge();
if(key=='Y'||key=='y')
{
system("cls");
continue;
}
else if(key=='N'||key=='n')
break;
}
}while(1);
}
//================================排序功能函数===================================//
void Sort_Function()
{
char ch;
int x,y;
int lenght;
lenght=GetLinkLen(head);
if(lenght==0)//无记录的提示!
{
Empty(2,20,70,21);
printf("no data to sort! do you want to add data?[y/n]:");
Exit_Judge();
if(key=='Y'||key=='y')
{
system("cls");
Add_Function();
return;
}
else if(key=='N'||key=='n')
return;
}
else
{
system("cls");
Sort_Interface();
WhereXY(&x, &y);
ch=Personalized_Tips(x,y,4);
switch(ch)
{
case '1':
Select_Sort(1);
break;
case '2':
Select_Sort(2);
break;
case '3':
Select_Sort(3);
break;
case '4':
Select_Sort(4);
break;
case '0':
return;
}
Empty(2,20,60,20);
printf("Sort success! Do you want to contine[y/n]:");
Exit_Judge();
if(key=='Y'||key=='y')
{
system("cls");
Print_Function(head,1,0,0);
}
else if(key=='N'||key=='n')
{
system("cls");
Sort_Function();
return;
}
}
}
//================================退出功能函数===================================//
void Exit_Function()
{
int x,y;
char ch;
system("cls");
if(isSave==1)//已保存时的退出!
{
Exit_Interface();
GoToXY(62,9);
WhereXY(&x,&y);
ch=Personalized_Tips(x,y,1);
switch(ch)
{
case '1':
{
Empty(2,21,60,21);
printf("Are you sure to exit?[y/n]:");
Exit_Judge();
if(key=='Y'||key=='y')
exit(0);
else if(key=='N'||key=='n')
break;
}
case '0':
return;
}
}
else
{
Exit_Interface();//无保存时的退出!
GoToXY(62,9);
WhereXY(&x,&y);
ch=Personalized_Tips(x,y,2);
switch(ch)
{
case '1':
system("cls");
SaveFile();
break;
case '2':
{
Empty(2,21,60,21);
printf("Are you sure to exit?[y/n]:");
Exit_Judge();
if(key=='Y'||key=='y')
exit(0);
else if(key=='N'||key=='n')
break;
}
case '0':
return;
}
}
}
//================================打印功能函数===================================//
int Print_Function(LinkList *h,int plag,int wage,int stat_score)
{
int i=0,lenght;
int ch;
int len=0,j=0;
char m[3];
double tatal,avg;
double tatals=0, avgs[5];
int page=1,lastpage;
LinkList *p=h;
lenght=GetLinkLen(h);
if(stat_score==7)//打印各科的平均分!
{
Stasco_Interface(stat_score);
for(i=0;i<5;i++)
{
for(p=h,tatal=0;p!=NULL;p=p->next)
{
tatal+=p->data.score[i];
}
avgs[i]=tatal/lenght;
}
GoToXY(5,7);
printf("%22.1f %6.1f %6.1f %6.1f %6.1f",avgs[0],avgs[1],avgs[2],avgs[3],avgs[4]);
return 0;
}
while(1)
{
if(stat_score>=1&&stat_score<=6)//打印每一门的前三名!
{
system("cls");
Stasco_Interface(stat_score);
len=Stat_Topthree(stat_score);
p=h;
for(i=0;i<(page-1)*5&&i<len;i++)
p=p->next;
if(stat_score>=1&&stat_score<=5)
{
for(j=(page-1)*5;j<(page-1)*5+5&&j<len;j++)
{
GoToXY(5,j-(page-1)*5+7);
printf("%21d%8s %18.1f",p->data .sno ,p->data .name,p->data .score[stat_score-1]);
p=p->next;
}
}
if(stat_score==6)
{
for(j=(page-1)*5;j<(page-1)*5+5&&j<len;j++)
{
GoToXY(5,j-(page-1)*5+7);
tatals=p->data.score[0] +p->data.score[1] +p->data.score[2] +p->data.score[3] +p->data.score[4];
printf("%21d%8s %18.1f",p->data .sno ,p->data .name,tatals);
p=p->next;
}
}
lastpage=len%5?len/5+1:len/5;
GoToXY(67,18);
printf("page: [%d/%d]",page,lastpage);
GoToXY(2,20);
printf("finded %d records",len);
}
else
{
LinkList *p=h;
lenght=GetLinkLen(h);
GoToXY(3,21);
if(lenght==0)//无记录时的提示!
{
Empty(2,20,70,21);
printf("no data to print! do you want to add data?[y/n]");
Exit_Judge();
if(key=='Y'||key=='y')
{
system("cls");
Add_Function();
return 0;
}
else if(key=='N'||key=='n')
return 0;
}
else
{
system("cls");
Print_Interface();
if(plag==2)
{
Print_Interface();
GoToXY(2,18);
printf(" delete; [7]modify;");
}
for(i=0;i<(page-1)*PER_PAGE;i++)
p=p->next;
lastpage=lenght%PER_PAGE?lenght/PER_PAGE+1:lenght/PER_PAGE;
GoToXY(67,18);
printf("page: [%d/%d]",page,lastpage);
GoToXY(2,20);
printf("finded %d records",lenght);
for(i=(page-1)*PER_PAGE;i<(page-1)*PER_PAGE+10&&i<lenght;i++)
{
tatal=p->data.score[0] +p->data.score[1] +p->data.score[2] +p->data.score[3] +p->data.score[4];
avg=tatal/5;
GoToXY(5,i-(page-1)*PER_PAGE+6);
printf("%03d %-15s %4d %5.1f% 5.1f %5.1f %5.1f %6.1f %6.1f %5.1f\n",p->data.sno ,p->data.name ,p->data.age , p->data.score [0] ,p->data.score [1] ,p->data.score [2] ,p->data.score [3] ,p->data.score [4],tatal,avg);
p=p->next;
}
}
}
GoToXY(26,16);
if(plag==1||(stat_score>=1&&stat_score<=6))//普通查分页打印及统计打印!
{
ch=Personalized(26,16,1);
}
if(plag==2)//查询分页打印!
{
ch=Personalized(26,16,2);
}
switch(ch)
{
case 271:
page=1;
break;
case 281:
if(page<lastpage)
page++;
break;
case 273:
if(page>1)
page--;
break;
case 279:
page=lastpage;
break;
case '5':
do
{
Empty(20,20,50,20);
printf("please input the page [1-%d]:",lastpage);
ch=getch();
if((ch-48)>0&&(ch-48)<=lastpage)
{
page=ch-48;
break;
}
else
{
Empty(2,21,70,21);
printf("input error! you input not the page [1-%d]!",lastpage);
}
}while(1);
break;
case 283:
{
Empty(2,21,70,21);
printf("Do you want to delete y/n:");
Exit_Judge();
if(wage==1)//删除查询到的学号!
{
if(key=='Y'||key=='y')
{
h=DeleteOneStudent(h);
Empty(3,6,75,6);
Empty(2,21,60,21);
printf("delete success! please input any key to return!!");
DeleteAll(h);
getch();
return 0;
}
else if(key=='N'||key=='n')
{
Empty(2,21,60,21);
printf("please input any key to return!!");
getch();
return 0;
}
}
if(wage==2)//删除查询姓名中的学号!
{
if(key=='Y'||key=='y')
{
LinkList *p=h;
Empty(2,20,70,20);
printf("please input a sno to delete:");
Sno_Judge(m);
while(p!=NULL)
{
if(atoi(m)==p->data.sno)
break;
p=p->next;
}
if(p!=NULL)
{
DeleteStudent(h,atoi(m));
Empty(2,21,70,21);
printf("success delete!! is or no continue[y/n]!!");
}
else
{
Empty(2,21,70,21);
printf("find not data!!,is or no continue[y/n]!!");
}
return 0;
}
else if(key=='N'||key=='n')
return 0;
}
break;
}
case '7':
return 1;
case '0':
return -1;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -