Code:
#include <stdio.h>
struct Login{
char name[15];
char password[15];
};
struct Course{
char name[50];
char id[10];
char year[10];
};
struct A{
char name[50];
char id[10];
char grade[3];
};
struct Record{
struct Login log;
char name[30];
long int id;
char year[10];
char major[20];
int credit_hours;
float gpa;
char deanlist[5];
struct A course_taken[6];
};
void clear_buffer(void);
int main()
{
struct Login lecturer[3];
struct Course electronics[2];
struct Course tele[2];
struct Course computer[2];
struct Course multimedia[2];
struct Course microwave[2];
struct Course optical[2];
struct Course nanotech[2];
struct Course electrical[2];
struct Record stud[3];
FILE *lptr, *cptr, *rptr;
int i,j;
int ch,yesno;
/* Writing Login usernames and passwords for students and lecturers into login.txt */
if((lptr=fopen("login.txt","w"))==NULL){
printf("Error!File could not be opened");
exit(1);
}
else{
for(i=0 ; i<3 ; i++){
printf("Please key in lecturer's username and password\n");
fgets(lecturer[i].name,15,stdin);
fgets(lecturer[i].password,15,stdin);
fwrite(&lecturer[i], sizeof(struct Login), 1, lptr);
}
fclose(lptr);
}
/* Writing Courses name, id and year for each Major into course.txt */
if((cptr=fopen("course.txt","w"))==NULL){
printf("Error!File could not be opened");
exit(1);
}
else{
printf("Major:Electronics\n");
for(i=0 ; i<2 ; i++){
printf("Please enter course name, id and year\n");
fgets(electronics[i].name,50,stdin);
fgets(electronics[i].id,10,stdin);
fgets(electronics[i].year,10,stdin);
fwrite(&electronics, sizeof(struct Course), 1, cptr);
}
printf("Major:Telecommunications\n");
for(i=0 ; i<2 ; i++){
printf("Please enter course name, id and year\n");
fgets(tele[i].name,50,stdin);
fgets(tele[i].id,10,stdin);
fgets(tele[i].year,10,stdin);
fwrite(&tele[i], sizeof(struct Course), 1, cptr);
}
printf("Major:Computer\n");
for(i=0 ; i<2 ; i++){
printf("Please enter course name, id and year\n");
fgets(computer[i].name,50,stdin);
fgets(computer[i].id,10,stdin);
fgets(computer[i].year,10,stdin);
fwrite(&computer[i], sizeof(struct Course), 1, cptr);
}
printf("Major:Multimedia\n");
for(i=0 ; i<2 ; i++){
printf("Please enter course name, id and year\n");
fgets(multimedia[i].name,50,stdin);
fgets(multimedia[i].id,10,stdin);
fgets(multimedia[i].year,10,stdin);
fwrite(&multimedia[i], sizeof(struct Course), 1, cptr);
}
printf("Major:Microwave\n");
for(i=0 ; i<2 ; i++){
printf("Please enter course name, id and year\n");
fgets(microwave[i].name,50,stdin);
fgets(microwave[i].id,10,stdin);
fgets(microwave[i].year,10,stdin);
fwrite(µwave[i], sizeof(struct Course), 1, cptr);
}
printf("Major:Optical\n");
for(i=0 ; i<2 ; i++){
printf("Please enter course name, id and year\n");
fgets(optical[i].name,50,stdin);
fgets(optical[i].id,10,stdin);
fgets(optical[i].year,10,stdin);
fwrite(&optical[i], sizeof(struct Course), 1, cptr);
}
printf("Major:Nanotechnology\n");
for(i=0 ; i<2 ; i++){
printf("Please enter course name, id and year\n");
fgets(nanotech[i].name,50,stdin);
fgets(nanotech[i].id,10,stdin);
fgets(nanotech[i].year,10,stdin);
fwrite(&nanotech[i], sizeof(struct Course), 1, cptr);
}
printf("Major:Electrical\n");
for(i=0 ; i<2 ; i++){
printf("Please enter course name, id and year\n");
fgets(electrical[i].name,50,stdin);
fgets(electrical[i].id,10,stdin);
fgets(electrical[i].year,10,stdin);
fwrite(&electrical[i], sizeof(struct Course), 1, cptr);
}
fclose(cptr);
}
/* Writing Records of each student into student.txt */
if((rptr=fopen("student.txt","w"))==NULL){
printf("Error!File could not be opened");
exit(1);
}
else{
for(i=0 ; i<3 ; i++){
printf("Enter student's Login username and password?([1]Yes/[0]No>>>>>");
scanf("%d",&yesno);
if(yesno==1){
printf("Please key in student's Login username and password\n");
clear_buffer();
fgets(stud[i].log.name,15,stdin);
fgets(stud[i].log.password,15,stdin);
}
else{
break;
}
printf("Please enter student's name, id, year, major, credit hours, gpa and dean's list[yes/no]\n");
fgets(stud[i].name,30,stdin);
scanf("%ld %s %s %d %f %s",&stud[i].id
,stud[i].year
,stud[i].major
,&stud[i].credit_hours
,&stud[i].gpa
,stud[i].deanlist);
printf("Enter next course?([1]Yes/[0]No)>>>>>");
scanf("%d",&ch);
for(j=0 ; j<6 ; j++){
if(ch==1){
printf("Please enter student's course taken name, id and grade.\n");
clear_buffer();
fgets(stud[i].course_taken[j].name,50,stdin);
fgets(stud[i].course_taken[j].id,10,stdin);
fgets(stud[i].course_taken[j].grade,3,stdin);
printf("Enter next course?([1]Yes/[0]No)>>>>>");
scanf("%d",&ch);
}
else{
break;
}
}
fwrite(&stud[i], sizeof(struct Record), 1, rptr);
}
fclose(rptr);
}
return 0;
}
void clear_buffer(void)
{
int a;
while((a=getchar())!='\n' && a!=EOF);
}
Code:
#include<stdio.h>
struct Login{
char name[15];
char password[15];
};
struct A{
char name[50];
char id[10];
char grade[3];
};
struct Record{
struct Login log;
char name[30];
long int id;
char year[10];
char major[20];
int credit_hours;
float gpa;
char deanlist[5];
struct A course_taken[3];
};
void clear_buffer(void);
int login(int type,char *keyname,char *keypass);
int seqSearch(int input,struct Record key,struct Record dir[]);
int main()
{
struct Login lecturer[3];
struct Record stud[3];
struct Record query;
int user,search,result;
char username[15],userpass[15];
printf("Login as...\n");
printf("[1]Student [2]Lecturer [3]Guest\n");
scanf("%d",&user);
clear_buffer();
if(user==3){
printf("No login required for guests\n\n");
}
else{
printf("Username:");
fgets(username,15,stdin);
printf("Password:");
fgets(userpass,15,stdin);
login(user,username,userpass);
}
printf("Search by...\n");
printf("[1]Student Name\n[2]Student ID\n\n");
printf("Selection >>> ");
scanf("%d",&search);
clear_buffer();
switch(search){
case 1:
printf("Student Name:");
fgets(query.name,30,stdin);
result=seqSearch(1,query,stud);
if(result==-1){
printf("No record found\n");
exit(1);
}
else{
printf("\n%s \t%ld \t%s \t%s \t%d \t%.2f \t%s\n",
stud[result].name, stud[result].id, stud[result].year, stud[result].major,
stud[result].credit_hours,stud[result].gpa,stud[result].deanlist);
}
break;
case 2:
printf("Student ID:");
scanf("%ld",&query.id);
clear_buffer();
result=seqSearch(2,query,stud);
if(result==-1){
printf("No record found\n");
exit(1);
}
else{
printf("\n%s \t%ld \t%s \t%s \t%d \t%.2f \t%s\n",
stud[result].name, stud[result].id, stud[result].year, stud[result].major,
stud[result].credit_hours,stud[result].gpa,stud[result].deanlist);
}
break;
default:
printf("invalid input\n");
exit(1);
break;
}
return 0;
}
void clear_buffer(void)
{
int ch;
while((ch=getchar())!='\n' && ch!=EOF);
}
int login(int type,char *keyname,char *keypass){
int j;
FILE *rptr, *lptr;
struct Record stud[3];
struct Login lecturer[3];
switch(type){
case 1:
if((rptr=fopen("student.txt","r"))==NULL){
printf("Error!File could not be opened\n");
exit(1);
}
else{
rewind(rptr);
for(j=0 ; j<3 ; j++){
fread(&stud[j], sizeof(struct Record), 1, rptr);
if(((strcmp(keyname,stud[j].log.name))==0) && (strcmp(keypass,stud[j].log.password))==0){
printf("Login Successful\n\n");
break;
}
else{
if(j==2){
printf("Wrong username or password\n");
exit(1);
}
}
}
}
break;
case 2:
if((lptr=fopen("login.txt","r"))==NULL){
printf("Error!File could not be opened\n");
exit(1);
}
else{
rewind(lptr);
for(j=0 ; j<3 ; j++){
fread(&lecturer[j], sizeof(struct Login), 1, lptr);
if(((strcmp(keyname,lecturer[j].name))==0) && (strcmp(keypass,lecturer[j].password))==0){
printf("Login Successful\n\n");
break;
}
else{
if(j==2){
printf("Wrong username or password\n");
exit(1);
}
}
}
}
break;
default:
printf("Invalid input\n");
exit(1);
break;
}
}
int seqSearch(int input,struct Record key,struct Record dir[]){
int i;
FILE *rptr;
if((rptr=fopen("student.txt","r"))==NULL){
printf("Error!File could not be opened");
exit(1);
}
else{
rewind(rptr);
switch(input){
case 1:
for(i=0 ; i<3 ; i++){
fread(&dir[i], sizeof(struct Record), 1, rptr);
if((strcmp(key.name,dir[i].name))==0){
return(i);
break;
}
else{
if(i==2){
return(-1);
}
}
}
break;
case 2:
for(i=0 ; i<3 ; i++){
fread(&dir[i], sizeof(struct Record), 1, rptr);
if(key.id==dir[i].id){
return(i);
break;
}
else{
if(i==2){
return(-1);
}
}
}
break;
default:
printf("invalid input\n");
exit(1);
break;
}
}
fclose(rptr);
}