📄 mangestudents.cpp
字号:
#include<stdio.h>
#include<string.h>
struct date
{int year,month,day;};
struct student
{long num;char name[25],sex[6];int clas, score;struct date birthday;}stu[50];
struct fm{int k;}am;
int n=2;
void lcd()
{
printf("******************************************************\n");
printf("1------------------------------search\n");
printf("2------------------------------sort\n");
printf("3------------------------------insert\n");
printf("4------------------------------delete\n");
printf("5------------------------------exit\n");
printf("******************************************************\n");
}
void lcd_search()
{
printf("******************************************************\n");
printf("1-----------search by student number\n");
printf("2-----------search by name\n");
printf("3-----------search by score\n");
printf("4-----------exit\n");
printf("******************************************************\n");
}
void save_n()
{FILE *fp;
fp=fopen("wh.dat","wb");
am.k=n;
fwrite(&am,sizeof(struct fm),1,fp);
fclose(fp);
}
int read_n()
{FILE *fp; int c;
fp=fopen("wh.dat","rb");
fread(&am,sizeof(struct fm),1,fp);
c=am.k;
fclose (fp);
return c;
}
void insert_number()
{struct student p,stu2;int i,j; FILE *fp;
fp=fopen("student.dat","rb");
for(i=0;i<n;i++)
fread(&stu[i],sizeof(struct student),1,fp);
printf("please input student num:\n");scanf("%ld",&stu2.num);
printf("please input student name:\n");scanf("%s",stu2.name);
printf("please input student sex(man/woman):\n");scanf("%s",stu2.sex);
printf("please input student class:\n");scanf("%d",&stu2.clas);
printf("please input student birth year:\n");scanf("%d",&stu2.birthday.year);
printf("please input student birth month:\n");scanf("%d",&stu2.birthday.month);
printf("please input student birth day :\n");scanf("%d",&stu2.birthday.day);
printf("please input student score:\n");scanf("%d",&stu2.score);
stu[n]=stu2;
n++;
save_n();
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(stu[i].num>stu[j].num)
{p=stu[i];stu[i]=stu[j];stu[j]=p;}
fp=fopen("student.dat","wb");
for(i=0;i<n;i++)
fwrite(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
}
void delete_number()
{int i,j,flag=1; long a; FILE *fp;
printf("please input a student number to delete:");
scanf("%ld",&a);
fp=fopen("student.dat","rb+");
for(i=0;i<n;i++)
fread(&stu[i],sizeof(struct student),1,fp);
for(i=0;i<n;i++)
{
if(a==stu[i].num)
{for(j=i;j<n-1;j++)
stu[j]=stu[j+1]; flag=0;
n--; save_n();}
} if(flag==1)printf("this student is not exist!\n");
fp=fopen("student.dat","wb");
for(i=0;i<n;i++)
fwrite(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
}
void sort_number()
{int i,j;struct student p; FILE *fp;
fp=fopen("student.dat","rb");
for(i=0;i<n;i++)
fread(&stu[i],sizeof(struct student),1,fp);
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(stu[i].num>stu[j].num)
{p=stu[i];stu[i]=stu[j];stu[j]=p;}
fclose(fp);
}
void search_number()
{int mid,i,top=0,bott=n-1,flag1=1,flag2=1;long a;
FILE *fp;
fp=fopen("student.dat","rb+");
for(i=0;i<n;i++)
fread(&stu[i],sizeof(struct student),1,fp);
printf("please input a student number:\n");
scanf("%ld",&a);
if(a<stu[top].num||a>stu[bott].num)flag2=0;
while(flag1==1&&top<=bott)
{mid=(top+bott)/2;
if(a==stu[mid].num)
{flag1=0;
printf("%-10ld%-10s%-3d%-6s%-4d-%d-%-3d%3d\n",stu[mid].num,stu[mid].name,stu[mid].clas,stu[mid].sex,stu[mid].birthday.year,stu[mid].birthday.month,stu[mid].birthday.day,stu[mid].score);
}
else if(a<stu[mid].num) bott=mid-1;
else top=mid+1;
}
if(flag1||!flag2)
printf("find not this student!\n");
printf("------------------------------------------------------------------\n");
fclose(fp);
}
void sort_score()
{int i,j;struct student p;FILE *fp;
fp=fopen("student.dat","rb+");
for(i=0;i<n;i++)
fread(&stu[i],sizeof(struct student),1,fp);
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(stu[i].score<stu[j].score)
{p=stu[i];stu[i]=stu[j];stu[j]=p;}
fp=fopen("student.dat","rb");
for(i=0;i<n;i++)
printf("%-10ld%-10s%-3d%-6s%-4d-%d-%-3d%3d\n",stu[i].num,stu[i].name,stu[i].clas,stu[i].sex,stu[i].birthday.year,stu[i].birthday.month,stu[i].birthday.day,stu[i].score);
printf("------------------------------------------------------------------\n");
fclose(fp);
}
void sort_score2()
{int i,j;struct student p;
FILE*fp;
fp=fopen("student.dat","rb");
for(i=0;i<n;i++)
fread(&stu[i],sizeof(struct student),1,fp);
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(stu[i].score<stu[j].score)
{p=stu[i];stu[i]=stu[j];stu[j]=p;}
fclose(fp);
}
void search_name()
{int i,flag=1;char c[25];
FILE*fp;
fp=fopen("student.dat","rb+");
for(i=0;i<n;i++)
fread(&stu[i],sizeof(struct student),1,fp);
printf("please input a student's name:\n");
scanf("%s",c);
for(i=0;i<n;i++)
if(strcmp(c,stu[i].name)==0)
{flag=0;
printf("%-10ld%-10s%-3d%-6s%-4d-%d-%-3d%-3d\n",stu[i].num,stu[i].name,stu[i].clas,stu[i].sex,stu[i].birthday.year,stu[i].birthday.month,stu[i].birthday.day,stu[i].score);
}
if(flag==1)printf("this student is not exist!\n");
printf("------------------------------------------------------------------\n");
fclose(fp);
}
void search_score()
{int fs;int i;
FILE*fp;
fp=fopen("student.dat","rb");
for(i=0;i<n;i++)
fread(&stu[i],sizeof(struct student),1,fp);
printf("please input a score:");
scanf("%d",&fs);
for(i=0;i<n;i++)
if(stu[i].score<fs)
printf("%-10ld%-10s%-3d%-6s%-4d-%d-%-3d%3d\n",stu[i].num,stu[i].name,stu[i].clas,stu[i].sex,stu[i].birthday.year,stu[i].birthday.month,stu[i].birthday.day,stu[i].score);
if(stu[n-1].score>=fs)
printf("the score<%d is not exist students!\n",fs);
printf("------------------------------------------------------------------\n");
fclose(fp);
}
void enter()
{int i; FILE *fp;
if((fp=fopen("student.dat","rb"))==NULL)
{fp=fopen("student.dat","wb");
for(i=0;i<n;i++)
{printf("please input student %d num:\n",i+1);
scanf("%ld",&stu[i].num);
printf("please input student %d name:\n",i+1);
scanf("%s",stu[i].name);
printf("please input student %d sex(man/woman):\n",i+1);
scanf("%s",stu[i].sex);
printf("please input student %d class:\n",i+1);
scanf("%d",&stu[i].clas);
printf("please input student %d birth year:\n",i+1);
scanf("%d",&stu[i].birthday.year);
printf("please input student %d birth month:\n",i+1);
scanf("%d",&stu[i].birthday.month);
printf("please input student %d birth day :\n",i+1);
scanf("%d",&stu[i].birthday.day);
printf("please input student %d score:\n",i+1);
scanf("%d",&stu[i].score);}
for(i=0;i<n;i++)
fwrite(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
clrscr();
}
else { fp=fopen("student.dat","rb");
for(i=0;i<n;i++)
fread(&stu[i],sizeof(struct student),1,fp);
fclose(fp);}
}
void main()
{int a=6,b;
clrscr();
n=read_n();
enter();
lcd();
while(a!=5)
{printf("please input 1~5 to next:");
scanf("%d",&a);
if(a==1)
{clrscr();lcd_search();printf("please input 1~4 to next:");
scanf("%d",&b);
while(b!=4)
{
if(b==1)
{clrscr();sort_number();search_number();lcd_search();}
if(b==2)
{clrscr(); search_name();lcd_search(); }
if(b==3)
{clrscr();sort_score2(); search_score();lcd_search();}
printf("please input 1~4 to next:");
scanf("%d",&b);
}
if(b==4){clrscr(); lcd(); }
}
if(a==2)
{clrscr();sort_score(); lcd();}
if(a==3)
{clrscr();insert_number(); clrscr(); lcd();}
if(a==4)
{clrscr();delete_number(); lcd();}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -