📄 zuoye.c
字号:
/*
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;
}
/*输入成绩*/
int insert()
{
int aver;
counter++;
/*如果人数超过590就自动弹出错误并返回*/
if(counter>590)
{
printf("error!");
return 0;
}
if((fp=fopen(filename,"a"))==NULL)
{
printf(" error");
}
/*输入学生姓名*/
printf("\nplease in put the student name:");
/*输入学生姓名*/
scanf("%s",stu[counter].name);
printf("\nplease input the student's english grade:");
/*输入学生英语成绩*/
scanf("%d",&stu[counter].english);
/*如果输入的成绩不符实,则出错*/
if(stu[counter].english>100)
{
printf("input wrong\n");
return 0;
}
if(stu[counter].english<0)
{
printf("input wrong\n");
return 0;
}
/*输入数学成绩*/
printf("\nplease input the student's math grade:");
/*出入数学成绩*/
scanf("%d",&stu[counter].math);
/*如果输入的成绩不符实,则出错*/
if(stu[counter].math>100)
{
printf("input wrong\n");
return 0;
}
if(stu[counter].math<0)
{
printf("input wrong\n");
return 0;
}
/*输入计算机成绩*/
printf("\nplease input the student's computer grade:");
/*输入计算机成绩*/
scanf("%d",&stu[counter].computer);
/*如果输入的成绩不符实,则出错*/
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;
/*输入文件,内容为姓名,英语成绩,数学成绩,计算机成绩。平均成绩,都是结构数组*/
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);
/*在屏幕上输出结果*/
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;
}
/*输出文件内的所有内容*/
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;
}
/*根绝学生的平均成绩的大小排序*/
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;
}
/*根据学号查找学生的成绩*/
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;
}
/*删除指定内容*/
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;
}
/*平均分人数统计*/
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;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -