?? zuoye.c
字號(hào):
/*
written by 1jjk
mail:lingjiujianke@gmail.com
*/
#include<stdio.h>
typedef struct{
unsigned int number;
char name[20];
unsigned int english;
unsigned int math;
unsigned int computer;
unsigned int ave;
}stuinfo;
stuinfo stu[600];
int counter=0;
char filename[50]="/root/11.txt";
FILE *fp;
int output();
int insert();
int search();
int stat();
int taxis();
int delete();
/*顯示目錄*/
int menu(void)
{
printf("\n===============================================\n");
printf("\t\t\tthe main menu\n");
printf("\t1. insert the data\t\t2. output the data\n");
printf("\t3. data taxis\t\t\t4. search the data\n");
printf("\t5. delete the data\t\t6. data stat\n");
printf("\t7. exit the menu\n");
printf("===============================================\n");
printf("please input the number you want to choose [the number form 1----7]:");
return 0;
}
int main()
{
int num;
if((fp=fopen(filename,"w"))==NULL)
{
printf(" error");
}
fprintf(fp,"%-10s%-10s%-10s%-10s%-10s%-10s","number","name","english","math","computer","ave");
fclose(fp);
while(1)
{
menu();
scanf("%d",&num);
switch(num)
{
case 1:
insert();
break;
case 2:
output();
break;
case 3:
taxis();
break;
case 4:
search();
break;
case 5:
delete();
break;
case 6:
stat();
break;
case 7:
return 0;
default:
printf("you have input other num,please in put the num from 1 to 7.\n");
break;
}
}
return 0;
}
/*輸入成績(jī)*/
int insert()
{
int aver;
counter++;
/*如果人數(shù)超過(guò)590就自動(dòng)彈出錯(cuò)誤并返回*/
if(counter>590)
{
printf("error!");
return 0;
}
if((fp=fopen(filename,"a"))==NULL)
{
printf(" error");
}
/*輸入學(xué)生姓名*/
printf("\nplease in put the student name:");
/*輸入學(xué)生姓名*/
scanf("%s",stu[counter].name);
printf("\nplease input the student's english grade:");
/*輸入學(xué)生英語(yǔ)成績(jī)*/
scanf("%d",&stu[counter].english);
/*如果輸入的成績(jī)不符實(shí),則出錯(cuò)*/
if(stu[counter].english>100)
{
printf("input wrong\n");
return 0;
}
if(stu[counter].english<0)
{
printf("input wrong\n");
return 0;
}
/*輸入數(shù)學(xué)成績(jī)*/
printf("\nplease input the student's math grade:");
/*出入數(shù)學(xué)成績(jī)*/
scanf("%d",&stu[counter].math);
/*如果輸入的成績(jī)不符實(shí),則出錯(cuò)*/
if(stu[counter].math>100)
{
printf("input wrong\n");
return 0;
}
if(stu[counter].math<0)
{
printf("input wrong\n");
return 0;
}
/*輸入計(jì)算機(jī)成績(jī)*/
printf("\nplease input the student's computer grade:");
/*輸入計(jì)算機(jī)成績(jī)*/
scanf("%d",&stu[counter].computer);
/*如果輸入的成績(jī)不符實(shí),則出錯(cuò)*/
if(stu[counter].computer>100)
{
printf("input wrong\n");
return 0;
}
if(stu[counter].computer<0)
{
printf("input wrong\n");
return 0;
}
aver=(stu[counter].english+stu[counter].math+stu[counter].computer)/3;
stu[counter].ave=aver;
stu[counter].number=counter;
/*輸入文件,內(nèi)容為姓名,英語(yǔ)成績(jī),數(shù)學(xué)成績(jī),計(jì)算機(jī)成績(jī)。平均成績(jī),都是結(jié)構(gòu)數(shù)組*/
fprintf(fp,"\n%-10d%-10s%-10d%-10d%-10d%-10d", stu[counter].number, stu[counter].name, stu[counter].english, stu[counter].math, stu[counter].computer, stu[counter].ave);
/*在屏幕上輸出結(jié)果*/
printf("%-10s%-10s%-10s%-10s%-10s%-10s","number","name","english","math","computer","ave");
printf("\n%-10d%-10s%-10d%-10d%-10d%-10d\n", stu[counter].number, stu[counter].name, stu[counter].english, stu[counter].math, stu[counter].computer, stu[counter].ave);
fclose(fp);
return 0;
}
/*輸出文件內(nèi)的所有內(nèi)容*/
int output()
{
char ch;
printf("\n");
if((fp=fopen(filename,"r"))==NULL)
{
printf(" error");
}
while((ch=fgetc(fp))!=EOF)
{
printf("%c",ch);
}
fclose(fp);
return 0;
}
/*根絕學(xué)生的平均成績(jī)的大小排序*/
int taxis()
{
stuinfo mid;
unsigned int a=1, b=1;
if((fp=fopen(filename,"rb"))==NULL)
{
printf("error!");
return 0;
}
while(b<counter)
{
while(a<=counter)
{
fscanf(fp,"%d%s%d%d%d%d",&a, stu[a].name,&stu[a].english,&stu[a].math,&stu[a].computer,&stu[a].ave);
a++;
}
a=1;
while(a<counter)
{
if(stu[a].ave>stu[a+1].ave)
{
mid=stu[a];
stu[a]=stu[a+1];
stu[a+1]=mid;
a++;
}
b++;
}
fclose(fp);
if((fp=fopen(filename,"w"))==NULL)
{
printf("error!");
return 0;
}
fprintf(fp,"%-10s%-10s%-10s%-10s%-10s%-10s\n","number","name","english","math","computer","ave");
printf("%-10s%-10s%-10s%-10s%-10s%-10s\n","number","name","english","math","computer","ave");
a=1;
while(a<=counter)
{
fprintf(fp,"%-10d%-10s%-10d%-10d%-10d%-10d\n",a, stu[a].name,stu[a].english,stu[a].math,stu[a].computer,stu[a].ave);
printf("%-10d%-10s%-10d%-10d%-10d%-10d\n",a, stu[a].name,stu[a].english,stu[a].math,stu[a].computer,stu[a].ave);
a++;
}
fclose(fp);
return 0;
}
/*根據(jù)學(xué)號(hào)查找學(xué)生的成績(jī)*/
int search()
{
unsigned int a;
printf("\nplease input the number you want to find:");
scanf("%d",&a);
if(a>590)
{
printf("the num you input is very large\n");
return 0;
}
if(a<0)
{
printf("the num you input is small then 0\n");
return 0;
}
if((fp=fopen(filename,"rb"))==NULL)
{
printf("error!");
return 0;
}
fscanf(fp,"%d%s%d%d%d%d",&a, stu[a].name,&stu[a].english,&stu[a].math,&stu[a].computer,&stu[a].ave);
printf("%-10d%-10s%-10d%-10d%-10d%-10d\n",a, stu[a].name,stu[a].english,stu[a].math,stu[a].computer,stu[a].ave);
fclose(fp);
return 0;
}
/*刪除指定內(nèi)容*/
int delete()
{
unsigned int a,b;
printf("\nplease input the number you want to delete:");
if((fp=fopen(filename,"rb"))==NULL)
{
printf("error!");
return 0;
}
a=1;
while(a<=counter)
{
fscanf(fp,"%d",&a);
a++;
}
fclose(fp);
if((fp=fopen(filename,"w"))==NULL)
{
printf("error!");
return 0;
}
scanf("%d",&a);
printf("you want delete %d\n",a);
for(b=a;b<=counter;b++)
{
stu[b-1]=stu[b];
}
counter=counter-1;
for(a=1;a<=counter;a++)
{
fprintf(fp,"%-10d%-10s%-10d%-10d%-10d%-10d\n",a, stu[a].name,stu[a].english,stu[a].math,stu[a].computer,stu[a].ave);
printf("%-10d%-10s%-10d%-10d%-10d%-10d\n",a, stu[a].name,stu[a].english,stu[a].math,stu[a].computer,stu[a].ave);
}
fclose(fp);
return 0;
}
/*平均分人數(shù)統(tǒng)計(jì)*/
int stat()
{
unsigned int a=1,c=0,d=0,e=0,f=0,g=0;
if((fp=fopen(filename,"rb"))==NULL)
{
printf("error!");
return 0;
}
while(a<=counter)
{
fscanf(fp,"%d",&a);
a++;
}
a=1;
while(a<(counter+1))
{
if(stu[a].ave<60)
{
c++;
}
else if(stu[a].ave>=60&&stu[a].ave<70)
{
d++;
}
else if(stu[a].ave>=70&&stu[a].ave<80)
{
e++;
}
else if(stu[a].ave>=80&&stu[a].ave<90)
{
f++;
}
else if(stu[a].ave>=90&&stu[a].ave<=100)
{
g++;
}
a++;
}
printf("\n============================================================\n");
printf("%-10s%-10s%-10s%-10s%-10s\n","0--59","60--69","70--79","80--89","90--100");
printf("%-10d%-10d%-10d%-10d%-10d\n", c, d, e, f, g);
fclose(fp);
return 0;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -