?? delete.cpp
字號:
//delete刪除學生信息記錄
#include "delete.h"
void DelRecord()
{
int i;
long delnum; //存放教師輸入的要刪除員工序號
Student Tmps; //定義進行操作時的臨時結構體變量
Student s[SIZE];
int recNumber; //原文件中的記錄數
char DataFile[40] = "", next; //next為是否進行下一次刪除操作的選項
FILE *fp;
printf("\nplease input the name of file where data is stored,end with enter key.\n");
gets(DataFile);
//提示教師輸入要進行刪除記錄的文件名
while (*DataFile == ('\0'))
{
printf("\nplease input the name of file where data is stored,end with enter key.\n");
gets(DataFile);
}
begin:
//以二進制讀的方式發開文件
fp = fopen(DataFile, "rb");
if (fp == NULL)
{
printf("\nopen file %s fail! end with any key\n", DataFile);
perror("open file fail");
getch();
exit(1);
}
//輸入要刪除的學生的學號
printf("please input the employee'seatnum which you will delete:");
scanf("%ld", &delnum);
printf("the Student you will delete is:%ld\n", delnum);
//將文件中信息存入結構體數組
//與要刪除的學生學號相匹配的項不寫入數組,循環后數組中即為去掉了要刪除記錄后的剩余記錄
recNumber = 0;
while ((fread(&Tmps, sizeof(Student), 1, fp)))
{
if (Tmps.Number != delnum)
{
s[recNumber].Number = Tmps.Number;
strcpy(s[recNumber].Name, Tmps.Name);
s[recNumber].chinesescore = Tmps.chinesescore;
s[recNumber].mathscore = Tmps.mathscore;
s[recNumber].heji = Tmps.heji;
recNumber++;
}
}
fclose(fp);
//===將刪除后的剩余結構體記錄寫入文件=====
fp = fopen(DataFile, "wb+");
if (fp == NULL)
{
printf("\nset up file %s fail ! end with any key.\n", DataFile);
perror("set up fail");
getch();
exit(1);
}
for (i = 0;i < recNumber;i++)
{
if (fwrite(&s[i], sizeof(Student), 1, fp) != 1)
{
printf("\nwrite file %s fail! end any key", DataFile);
perror("write file fail");
getch();
exit(1);
}
}
fclose(fp);
//顯示刪除后的文件
fp = fopen(DataFile, "rb");
if (fp == NULL)
{
printf("\nopen file %s fail! end any key", DataFile);
perror("open file fail");
getch();
exit(1);
}
printf("\nthe file after delete is:\n");
printf("\nNumber\tName\tchinesescore\tmathscore\tzongfen\n");
while (fread(&Tmps, sizeof(Student), 1, fp))
{
if (Tmps.Number != 0)
printf("\n%ld\t%s\t%4.1f\t%4.1f\t%4.1f\t\n", Tmps.Number, Tmps.Name, Tmps.chinesescore, Tmps.mathscore, Tmps.heji);
}
fclose(fp);
printf("\ngo on ?(y/n)");
next = getche();
putchar('\n');
if (next == 'y' || next == 'Y')
goto begin;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -