📄 051150008.cpp
字号:
}
else
{w0=0;
if(w2==1)
stu[k]=s;
} /*走到这里是由于用户没有确认这次修改(在调用修改函数w1=modify_data(k,n);时没有确认). 使W0=0,为了让终止循环,
stu[k]=s,则把备份的s恢复给stu[k](即当次修改的),这样的好处是确保在此之前修改过的成功保存,而本次(用户没有确认的)不修改*/
if(w0!=1&&w2==1) /*W0不等于1则表示正常返回,w2=1表示在此之前有过修改,这时就保存用户已确认修改的并返回*/
save(n); /*w2不等于1表示在此次之前没有修改过(即:第一次),而又反悔这次修改,则不保存返回*/
}
while(w0==1);
menu();
}
/****************删除模块****************/
del() /*删除模块*/
{struct student s;
FILE *fp;
int i,j,n,k,c,w0=1;
n=load();
do
{clrscr();
k=-1;
/*给用户看全部记录以便确认要删除的记录*/
puts___();
printf_face(); /*调用显示数据结构项目函数*/
for(i=0;i<n;i++)
if(stu[i].ave!=0)
{if((i!=0)&&(i%10==0)) /*目的是分屏显示,每10个一屏*/
{printf("\n\nRemember NO. which needed del. pass any key to contiune . . .");
getch();
puts("\n\n");
}
printf_one(i); /*调用显示一个记录的函数*/
}
puts___();
do
{printf("\n\nEnter NO. that you want to Delete! NO.:");
scanf("%s",s.num); /*输入要修改的数据的学号*/
for(i=0;i<n;i++) /*查找要修改的数据*/
if(strcmp(s.num,stu[i].num)==0)
{k=i; /*找到要修改的记录的下标赋给K*/
s=stu[i];
}
if(k==-1) printf("\n\nNO exist! please again"); /*K=-1,表示没有找到相同之的*/
}
while(k==-1);
puts("\n");
printf_face(); /*调用显示数据结构项目函数*/
printf_one(k); /*调用显示一个记录的函数*/
printf("\nAre you sure?\n\t1).sure 2).no and del another 3).back without save all [ ]\b\b");
scanf("%d",&c);
if(c==1)
{stu[k].ave=0; /*stu[k].ave=0用来标识这个记录是要删除的.保存时则不保存stu[k].ave=0的数据*/
printf("\n\nSuccessful ^_^.\n\nAre you again?\n\t1).again 2).back to menu\t[ ]\b\b"); /*问是否继续*/
scanf("%d",&w0);
}
if(c==3) w0=0; /*w0=0不删除直接返回*/
if(w0!=1&&c!=3) /*只有当确认删除后返回才保存,不删除直接返回则不保存,且不保存在此之前删除过的记录*/
save(n);
}
while(w0==1);
menu(); /*返回主介面*/
}
/****************浏览(全部)模块****************/
browse() /*浏览(全部)模块*/
{int i,j,n;
n=load(); /*加载记录*/
clrscr();
puts___();
printf_face(); /*调用显示数据结构项目函数*/
for(i=0;i<n;i++)
{if((i!=0)&&(i%10==0)) /*目的是分屏显示*/
{printf("\n\nPass any key to contiune . . .");
getch();
puts("\n\n");
}
printf_one(i); /*调用显示一个记录的函数*/
}
puts___();
printf("\tThere are %d record.\n",n);
printf("\nPass any key to back . . .");
getch(); /*按任意健*/
menu();
}
/****************查找模块****************/
search() /*查找模块*/
{int i,n,k,w1=1,w2,w3,w4;
struct student s;
n=load();
do
{do
{k=-1;
printf("\n\nEnter name that you want to search! name:");
scanf("%s",s.name); /*输入要修改的数据的学号*/
printf_face(); /*调用显示数据结构项目函数*/
for(i=0;i<n;i++) /*查找要修改的数据*/
if(strcmp(s.name,stu[i].name)==0)
{k=i; /*找到要修改的记录*/
printf_one(k);break; /*调用显示一个记录的函数*/
}
if(k==-1)
{printf("\n\nNO exist! please");
printf("\n\nAre you again?\n\t1).again 2).NO and back [ ]\b\b");
scanf("%d",&w1);
}
}
while(k==-1&&w1==1); /*如果w1不等于1则直接返回*/
w4=0;w3=0;
if(k!=-1) /*k不等于-1表示找到,如果找到则选择操作*/
{printf("\n\nWhat do you want to do?\n\t1).Search another 2).Modify 3).Delete 4).Back menu [ ]\b\b");
scanf("%d",&w2);
switch(w2)
{case 2:w3=modify_data(k,n);break; /*调用修改数据函数*/
case 3:{printf("\nAre you sure?\n\t1).Sure 2).No and back [ ]\b\b");
scanf("%d",&w4);
if(w4==1)
stu[k].ave=0; /*表示删除*/
break;
}
}
if(w3==1||w4==1)
{save(n);
printf("\n\nSuccessful. ^_^.");
printf("\n\nWhat do you want to do?\n\t1).Search another 2).Back [ ]\b\b");
scanf("%d",&w2);
}
}
}
while(w2==1);
menu();
}
/****************插入模块****************/
insert() /*插入模块*/
{int i,j,n,c;
struct student s;
n=load();
puts("\nInput one data.\n");
do
{input(n); /*输入到第n个记录,即插入到最后*/
printf_face();
printf_one(n);
printf("\n\nAre you sure?\n\n\t1).Sure\t2).cancel snd again\t3).Back withuot save [ ]\b\b");
scanf("%d",&c);
if(c==1)
{for(j=0;j<n;j++) /*用起泡法排序*/
for(i=n;i>j;i--)
if(stu[i].ave>stu[i-1].ave)
{s=stu[i-1];stu[i-1]=stu[i];stu[i]=s;}
save(n+1);
printf_back();
}
else if(c!=2) menu();
}
while(c==2);
}
/****************排序模块(按平均成绩)****************/
order() /*排序模块(按平均成绩)*/
{int i,j,k,n;
struct student s;
n=load();
for(i=0;i<n-1;i++) /*选择法排序*/
{k=i;
for(j=i+1;j<n;j++)
if(stu[j].ave>stu[k].ave) k=j;
s=stu[i];stu[i]=stu[k];stu[k]=s;
}
save(n);
puts("\n\n");
printf_back();
}
/****************主界面****************/
menu() /*主界面*/
{int n,w1;
struct date d; /*定义时间结构体*/
getdate(&d); /*读取系统日期并把它放到结构体d中*/
do
{clrscr(); /*清屏*/
puts("\n\t\t\t 051150008 xuefeng");
printf("\t\t\t\t %d\\%d\\%d\n\n",d.da_year,d.da_mon,d.da_day); /*显示当前系统日期*/
puts("\t\t*********************MENU*********************\n\n");
puts("\t\t\t\t1.Enter new data");
puts("\t\t\t\t2.Addition data");
puts("\t\t\t\t3.Modify data");
puts("\t\t\t\t4.Delete data");
puts("\t\t\t\t5.Browse all");
puts("\t\t\t\t6.Search by name");
puts("\t\t\t\t7.Insert data");
puts("\t\t\t\t8.Order by average");
puts("\t\t\t\t9.Exit");
puts("\n\n\t\t**********************************************\n");
printf("Choice your number(1-9): [ ]\b\b");
scanf("%d",&n);
if(n<1||n>9) /*对选择的数字作判断*/
{w1=1;getchar();}
else w1=0;
}
while(w1==1);
/*选择功能*/
switch(n)
{case 1:enter();break; /*输入模块*/
case 2:add();break; /*追加模块*/
case 3:modify();break; /*修改模块*/
case 4:del();break; /*删除模块*/
case 5:browse();break; /*浏览模块*/
case 6:search();break; /*查找模块*/
case 7:insert();break; /*插入模块*/
case 8:order();break; /*排序模块*/
case 9:exit(0); /*退出*/
}
}
/*****************主函数****************/
main()
{menu();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -