I have done it the old fashion way...
But my rename and remove functions are not working in deleteStudentRecord
Code:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<io.h>
#include<fcntl.h>
struct student
{
char name[20];
char semCode[10];
int enrollNo;
int assignSub;
int marks;
int attendence;
};
struct student var;
FILE *ptr;
void refresh()
{
fclose(ptr);
ptr = fopen("c:\\file.txt","a+");
}
void addStudentRecord()
{
refresh();
fflush(stdin);
printf("Enter name:\n");
gets(var.name);
fflush(stdin);
printf("Enter Semester Code:\n");
gets(var.semCode);
fflush(stdin);
printf("Enter Enrollment Number:\n");
scanf("%d",&var.enrollNo);
var.assignSub=0;
var.marks=-1;
fwrite(&var,sizeof(struct student),1,ptr);
printf("Data Entered Successfully\n");
printf("Press any key..");
refresh();
getch();
}
void updateStudentRecord()
{
int enrollNo;
int counter=0;
int records = getNoOfRecords();
refresh();
fflush(stdin);
printf("Enter Enrollment Number:\n");
scanf("%d",&enrollNo);
while(counter!=records)
{
fread(&var,sizeof(struct student),1,ptr);
if(var.enrollNo==enrollNo)
{
}
counter++;
}
}
void deleteStudentRecord()
{
int enrollNo;
int counter=0;
FILE *ptr2 = fopen("c:\\file2.txt","a");
int records = getNoOfRecords();
refresh();
fflush(stdin);
printf("Enter Enrollment Number:\n");
scanf("%d",&enrollNo);
while(counter!=records)
{
fread(&var,sizeof(struct student),1,ptr);
if(var.enrollNo==enrollNo)
{
}
else
{
fwrite(&var,sizeof(struct student),1,ptr2);
}
counter++;
}
fcloseall();
remove("c:\\file.txt");
rename("c:\\file2.txt","c:\\file.txt");
printf("Press any key..");
getch();
}
void markAttendence()
{
}
void enterMarks()
{
}
int fileSize()
{
int length;
int des;
des = open("c:\\file.txt",O_RDONLY,0);
length = lseek(des, 0, SEEK_END);
return length;
}
int getNoOfRecords()
{
return (fileSize()/(sizeof(struct student)));
}
void print()
{
system("cls");
printf("Name:");
puts(var.name);
printf("\n");
printf("Semester Code:");
puts(var.semCode);
printf("\n");
printf("Enrollment Number:");
printf("%d",var.enrollNo);
printf("\n\n");
printf("Assignment Submitted:");
if(var.assignSub==0)
{
printf("Not Entered!\n\n");
}
else if(var.assignSub==1)
{
printf("Not Submitted!\n\n");
}
else if(var.assignSub==2)
{
printf("Submitted!\n\n");
}
printf("Marks:");
if(var.marks==-1)
{
printf("Not Entered!\n\n");
}
else
{
printf("%d",var.marks);
printf("\n\n");
}
printf("Press any key...\n");
getch();
}
void searchByName()
{
char name[20];
int counter=0;
int records = getNoOfRecords();
refresh();
fflush(stdin);
printf("Enter Name:\n");
gets(name);
while(counter!=records)
{
fread(&var,sizeof(struct student),1,ptr);
if(!(strcmp(name,var.name)))
{
print();
}
counter++;
}
}
void searchBySemesterCode()
{
char semCode[10];
int counter=0;
int records = getNoOfRecords();
refresh();
fflush(stdin);
printf("Enter Semester Code:\n");
gets(semCode);
while(counter!=records)
{
fread(&var,sizeof(struct student),1,ptr);
if(!(strcmp(semCode,var.semCode)))
{
print();
}
counter++;
}
}
void searchByEnrollmentNumber()
{
int enrollNo;
int counter=0;
int records = getNoOfRecords();
refresh();
fflush(stdin);
printf("Enter Enrollment Number:\n");
scanf("%d",&enrollNo);
while(counter!=records)
{
fread(&var,sizeof(struct student),1,ptr);
if(var.enrollNo==enrollNo)
{
print();
}
counter++;
}
}
void search()
{
int a=0;
while(a!=4)
{
system("cls");
printf("1.Search by Name:\n");
printf("2.Search by Semester Code:\n");
printf("3.Search by Enrollment Number:\n");
printf("4.Exit\n");
printf("Enter:");
fflush(stdin);
scanf("%d",&a);
switch(a)
{
case 1:
searchByName();
break;
case 2:
searchBySemesterCode();
break;
case 3:
searchByEnrollmentNumber();
break;
case 4:
return;
break;
default:
printf("Invalid Option!!\n");
break;
}
}
}
void main()
{
int a=0;
ptr = fopen("c:\\file.txt","a+");
while(a!=7)
{
system("cls");
printf("Select an Option:\n");
printf("1.Add Student Record\n");
printf("2.Update Student Record\n");
printf("3.Delete Student Record\n");
printf("4.Mark Attendence\n");
printf("5.Enter Marks\n");
printf("6.Search\n");
printf("7.Exit\n");
printf("Enter:");
scanf("%d",&a);
switch(a)
{
case 1:
addStudentRecord();
break;
case 2:
updateStudentRecord();
break;
case 3:
deleteStudentRecord();
break;
case 4:
markAttendence();
break;
case 5:
enterMarks();
break;
case 6:
search();
break;
case 7:
exit(0);
break;
default:
printf("Invalid Option\n");
break;
}
}
}