?? stu_sys.c
字號:
scanf("%d",&w0);
w2=1; /*來控制保存,使w2=1是標記已有過修改*/
}
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(); /*加載記錄*/
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;
do
{
puts("\n\t\t\t Copy right by CHEN LIN BIN!");
puts("\t\t\t\t 24/06/2005!\n\n");
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 + -