?? 676786complete.cpp
字號:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 100
struct Student
{
int num;
char name[10];
char sex[6];
int age;
int scholarship;
}stud[SIZE];
int total=-1;
//------------------------
void show(void)
{FILE *fp2;
int i;
if((fp2=fopen("file_dbf.txt","rb+"))==NULL)
{
printf("The file can not open\n");
return;
}
printf("\n學號 姓名 性別 年齡 獎學金\n");
printf("-------------------------------------------------------\n");
for(i=0;i<=total;i++)
{
fread(&stud[i],sizeof(struct Student),1,fp2);
printf("%-10d %-15s %-10s %-10d %-10d\n",stud[i].num,stud[i].name,
stud[i].sex,stud[i].age,stud[i].scholarship);
}
printf("-------------------------------------------------------\n");
fclose(fp2);
}
//------------------------
void add(void)
{FILE *fp3;
int i;
int flag=1;
fp3=fopen("file_dbf.txt","rb+");
for(i=0;i<=total;i++)
{
fread(&stud[i],sizeof(struct Student),1,fp3);}
total=total+1;
printf("輸入第%d個學生的數據:\n",total+1);
while(flag)
{printf("學號:");
scanf("%d",&stud[total].num);
for(i=0;i<total;i++)
{if(stud[total].num==stud[i].num)
{printf("學號重復 請重新輸入學號\n");
break;}}
if(i==total)
{flag=0;}
}
printf("姓名:");
scanf("%s",stud[total].name);
printf("性別:");
scanf("%s",stud[total].sex);
printf("年齡:");
scanf("%d",&stud[total].age);
printf("獎學金:");
scanf("%d",&stud[total].scholarship);
if((fp3=fopen("file_dbf.txt","wb+"))==NULL)
{
printf("The file can not open\n");
return;
}
for(i=0;i<=total;i++)
if(fwrite(&stud[i],sizeof(struct
Student),1,fp3)!=1)
{printf("file write error\n");
return;
}
fclose(fp3);
}
//-----------------------------
void dele(void)
{
FILE *fp4;
if((fp4=fopen("file_dbf.txt","rb+"))==NULL)
{
printf("The file can not open\n");
return;
}
for(int q=0;q<=total;q++)
{
fread(&stud[q],sizeof(struct Student),1,fp4);}
fclose(fp4);
int y,flag,i;
printf("輸入欲刪除的學生的學號__\n");
scanf("%d",&y);
for(flag=1,i=0;flag&&i<=total;i++)
{if(stud[i].num==y)
{for(int e=i;e<=total-1;e++)
{stud[e].num=stud[e+1].num;
stud[e].age=stud[e+1].age;
stud[e].scholarship=stud[e+1].scholarship;
strcpy(stud[e].name,stud[e+1].name);
strcpy(stud[e].sex,stud[e+1].sex);}
flag=0;
}
}
if(!flag)
total=total-1;
else
printf("無此學號!");
if((fp4=fopen("file_dbf.txt","wb+"))==NULL)
{
printf("The file can not open\n");
return;
}
for(i=0;i<=total;i++)
fwrite(&stud[i],sizeof(struct Student),1,fp4);
fclose(fp4);
}
//----------------------------
void search(void)
{ FILE *fp6;
int t;
printf("輸入要查詢的學生學號:");
scanf("%d",&t);
if((fp6=fopen("file_dbf.txt","rb+"))==NULL)
{
printf("The file can not open\n");
return;
}
for(int i=0;i<=total;i++)
{
fread(&stud[i],sizeof(struct Student),1,fp6);}
fclose(fp6);
for(int e=0,flag=1;flag&&e<=total;e++)
{if (stud[e].num==t)
{printf(" %d %s %s %d %d\n",stud[e].num,stud[e].name,
stud[e].sex,stud[e].age,stud[e].scholarship);
flag=0;}
}
if(flag)
{printf("無此學號!\n");}
}
//---------------------
void modify(void)
{ FILE *fp5;
int t;
printf("輸入要修改的學生學號:");
scanf("%d",&t);
if((fp5=fopen("file_dbf.txt","rb+"))==NULL)
{
printf("The file can not open\n");
return;
}
for(int i=0;i<=total;i++)
{
fread(&stud[i],sizeof(struct Student),1,fp5);}
fclose(fp5);
for(int e=0,flag=1;flag&&e<=total;e++)
{if (stud[e].num==t)
{printf("修改后的學號:");
int q;
scanf("%d",&q);
stud[e].num=q;
printf("修改后的姓名:");
char w;
scanf("%s",&w);
strcpy(stud[e].name,&w);
printf("修改后的性別:");
char z;
scanf("%s",&z);
strcpy(stud[e].sex,&z);
printf("修改后的年齡:");
int r;
scanf("%d",&r);
stud[e].age=r;
printf("修改后的獎學金:");
int o;
scanf("%d",&o);
stud[e].scholarship=o;
if((fp5=fopen("file_dbf.txt","wb+"))==NULL)
{
printf("The file can not open\n");
return;
}
for(i=0;i<=total;i++)
fwrite(&stud[i],sizeof(struct Student),1,fp5);
flag=0;
fclose(fp5);}
}
if(flag)
{printf("無此學號!\n");}
}
//-----------------------
void main()
{
FILE *fp;
int u=0;
fp=fopen("file_dbf.txt","rb+");
while(fread(&stud[u],sizeof(struct Student),1,fp)!=0)
{total=u;
u=u+1;
}
//---------------------------
int t=0;
printf(" --------◎◎◎學 籍 管 理 數 據 庫◎◎◎--------\n");
while(t==0||t==1||t==2||t==3||t==4||t==5)
{printf("\n輸入您的操作選項:______");
printf("\n輸入1為增加學生數據,輸入2為顯示整個數據庫,輸入3為刪除,輸入4為查詢,輸入5為修改,輸入0為退出\n");
scanf("%d",&t);
if(t==0)
{printf("\n謝謝您的使用\n");
return;}
if(t==1)
{add();}
if(t==3)
{dele();}
if(t==2)
{show();}
if(t==4)
{search();}
if(t==5)
{modify();}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -