#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct person //Define a structure type
{
char num[10]; //Student ID NO.
char name[15]; //Name
int age; //Age
int en; //English Grades
int ji; //major number
}person;
person per[100];
char filename[20]; //Define global variable
logon() //Define login function
{
printf("\n\n\n\t\t\tStudent information management system\n\n");
printf("\n");
printf("\n\t\t\t 01/01/2012\n");
printf("\t\t\t ");
printf("\n\t\t\t by LiangShuang\n");
printf("\n\n\t\t\t \n");
system("pause");
}
int menu_filename() //file name you want to operate
{
system("cls");
printf("Please enter the file name you want to operate:");
scanf("\t%s",filename);
}
int menu_select() //Select operation
{
char c;
do{
system("cls");
printf("\t\tStudent information management system\n");
printf("\n");
printf("\n");
printf("\t\t 1. Add record\n");
printf("\n");
printf("\t\t 2. Show record \n");
printf("\n");
printf("\t\t 3. Inquire information \n");
printf("\n");
printf("\t\t 4. Calculate data \n");
printf("\n");
printf("\t\t 5. Modify record \n");
printf("\n");
printf("\t\t 6. Delete record \n");
printf("\n");
printf("\t\t 0. Log out \n");
printf("\n");
printf("\t\tPlease enter a number(0-6):");
c=getchar();
}while(c<'0'||c>'6');
return (c-'0');
}
void add() //Function: add and record student grades
{
FILE *fp;
int i=0,n=0;
char sign='y';
system("cls");
while(sign!='n'&&sign!='N') //add records
{
printf(" ----Student information added----\n");
printf("Number:\n");
scanf("\t%s",per[i].num);
printf("Name:\n");
scanf("\t%s",per[i].name);
printf("Age:\n");
scanf("\t%d",&per[i].age);
printf("English grade:\n");
scanf("\t%d",&per[i].en);
printf("major number:\n");
scanf("\t%d",&per[i].ji);
printf("continue to add?(y/n)");
scanf("\t%c",&sign);
i++;
n=n+1;
system( "cls ");
}system("pause");
if((fp=fopen(filename,"a"))==NULL)
{
printf("cannot open the files\n");
system("pause");
return;
}
for(i=0;i<n;i++)
if(fwrite(&per[i],sizeof(person),1,fp)!=1)
printf("file write error\n");
fclose(fp);
system("pasue");
}
void scan() //show the records
{
void amend(); //Declare a function
char sign='y';
FILE *fp;
int i=0,n;
system("cls");
if((fp=fopen(filename,"r"))==NULL)
{
printf("cannot open the files\n");
system("pause");
return;
}
while(!feof(fp))
{
fread(&per[i],sizeof(person),1,fp);
i++;
}
fclose(fp);
printf(" Number Name Age English grade Major NO.\n");
for(n=0;n<i-1;n++)
printf("\t%s \t%s \t%d \t%d \t\t%d\n",per[n].num,per[n].name,per[n].age,per[n].en,per[n].ji);
system("pause");
system("cls");
printf("Whether need to modify?(y/n)");
scanf("\t%c",&sign);
if(sign!='n'&&sign!='N')
amend();
system("pause");
}
void query() //Different selection methods of student info
{
FILE *fp;
int i=0,n=0;
int m;
system("cls");
printf("\t\nPlease select the inquire way:\n");
printf("\t\n");
printf("\t 1------Fuzzy inquiry \n");
printf("\t 2------Name \n");
printf("\t 3------Number \n");
printf("\t 4------Return \n");
printf("\t\n");
printf("Please enter a number:\n");
scanf("%d",&m);
while(m!=1&&m!=2&&m!=3&&m!=4)
{
printf("Error!Please enter a number:\n");
scanf("%d",&m);
}
if((fp=fopen(filename,"r"))==NULL)
{
printf("cannot open the files\n");
system("pause");
return;
}
while(!feof(fp))
{
fread(&per[i],sizeof(person),1,fp);
i++;n=n+1;
}
if(m==1) //Fuzzy inquiry
{
char s[3];
int i=0;
system("cls");
printf("\tPlease enter a Last name:");
scanf("%s",s);
for(i=0;i<n-1;i++)
{
if(per[i].name[0]==s[0]&&per[i].name[1]==s[1])
{
printf("\tNo.: %s\n",per[i].num);
printf("\tName: %s\n",per[i].name);
printf("\tAge: %d\n",per[i].age);
printf("\tEnglish grade: %d\n",per[i].en);
printf("\tCS grade: %d\n",per[i].ji);
printf("\t \n");
}
}
}
if(m==2) //Name inquiry
{
char s[20];
int i=0;
printf("\tPlease enter a name:");
scanf("\t%s",s);
while(strcmp(per[i].name,s)!=0&&i<n) i++;
if(i==n)
{
printf("\tNobody match this name!\n");
system("pause");
return;
}
printf("\tNo.: %s\n",per[i].num);
printf("\tName: %s\n",per[i].name);
printf("\tAge: %d\n",per[i].age);
printf("\tEnglish grade: %d\n",per[i].en);
printf("\tCS grade: %d\n",per[i].ji);
}
if(m==3) //ID inquiry
{
char s[15];
int i=0;
printf("Please enter a Number:");
scanf("\t%s",s);
while(strcmp(per[i].num,s)!=0&&i<n)i++;
if(i==n)
{
printf("\tNobody match this name!\n");
system("pause");
return;
}
printf("\tNo.: %s\n",per[i].num);
printf("\tName: %s\n",per[i].name);
printf("\tAge: %d\n",per[i].age);
printf("\tEnglish grade: %d\n",per[i].en);
printf("\tCS grade: %d\n",per[i].ji);
}
fclose(fp);
system("pause");
}
void date() //Statistics
{
FILE *fp;
struct person temp;
int sum; //Total score
int s[100];
int i=0,n=0;
int j,k,t;
int m;
system("cls");
printf("\t\nSelect sort way:\n");
printf("\t\n");
printf("\t1----English grade \n");
printf("\t2----Computer grade \n");
printf("\t3----Total points \n");
printf("\t4----Return \n");
printf("\t\n");
printf("Please enter a number:\n");
scanf("%d",&m);
system("cls");
while(m!=1&&m!=2&&m!=3&&m!=4)
{
printf("Error!Please enter a number:\n");
scanf("%d",&m);
}
if((fp=fopen(filename,"r"))==NULL)
{
printf("cannot open the files\n");
system("pause");
return;
}
while(!feof(fp))
{
fread(&per[i],sizeof(person),1,fp);
i++;n=n+1;
}
if(m==1)
{
for(i=0;i<n-1;i++) //Bubble sort
{
k=i;
for(j=i+1;j<n;j++)
if(per[j].en>per[k].en)
k=j;
temp=per[k];per[k]=per[i];per[i]=temp;
}
printf("\n");
printf(" Number Name Age English Grade Major\n");
printf("\n");
for(i=0;i<n-1;i++)
printf("\t%s \t%s \t%d \t%d \t\t%d\n",per[i].num,per[i].name,per[i].age,per[i].en,per[i].ji);
printf("\n");
fclose(fp);
}
if(m==2)
{
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(per[j].ji>per[k].ji)
k=j;
temp=per[k];per[k]=per[i];per[i]=temp;
}
printf("\n");
printf(" Number Name Age English Grade Major\n");
printf("\n");
for(i=0;i<n-1;i++)
printf("\t%s \t%s \t%d \t%d \t%d\n",per[i].num,per[i].name,per[i].age,per[i].en,per[i].ji);
printf("\n");
fclose(fp);
}
if(m==3)
{
for(i=0;i<n-1;i++)
{
sum=0;
sum=per[i].en+per[i].ji;
s[i]=sum;
}
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(s[j]>s[k])
k=j;
t=s[k];s[k]=s[i];s[i]=t;
temp=per[k];per[k]=per[i];per[i]=temp;
}
printf("\n");
printf(" Number Name Age English Grade Major Total Point \n");
printf("\n");
for(i=0;i<n-1;i++)
printf("\t%s \t%s \t%d \t%d \t\t%d \t%d\n",per[i].num,per[i].name,per[i].age,per[i].en,per[i].ji,s[i]);
printf("\n");
fclose(fp);
}
system("pause");
}
void amend() // Modify student info
{
FILE *fp;
int i=0,n=0;
char s[15];
int m;
system("cls");
printf("\t\nSelect the modify way:\n");
printf("\t\n");
printf("\t1------name \n");
printf("\t2------No. \n");
printf("\t3------Return \n");
printf("\t\n");
printf("Please enter a number:\n");
scanf("%d",&m);
while(m!=1&&m!=2&&m!=3)
{
printf("Error!Please enter a number:\n");
scanf("%d",&m);
}
if((fp=fopen(filename,"r"))==NULL)
{
printf("cannot open the files\n");
system("pause");
return;
}
while(!feof(fp))
{
fread(&per[i],sizeof(person),1,fp);
i++;n=n+1;
}i=0;
fclose(fp);
system("cls");
if(m==1)
{
char s[20];
int i=0;
printf("\tPlease enter the name you want to edit:");
scanf("\t%s",s);
while(strcmp(per[i].name,s)!=0&&i<n) i++; //comparison
if(i==n)
{
printf("\tNobody!\n");
return;
}
else{
printf("No:\n");
scanf("\t%s",per[i].num);
printf("Name:\n");
scanf("\t%s",per[i].name);
printf("Age:\n");
scanf("\t%d",&per[i].age);
printf("English Grade:\n");
scanf("\t%d",&per[i].en);
printf("Major:\n");
scanf("\t%d",&per[i].ji);
}
}
if(m==2)
{
char s[15];
int i=0;
printf("Please enter the Number you want to edit:");
scanf("\t%s",s);
while(strcmp(per[i].num,s)!=0&&i<n)i++;
if(i==n)
{
printf("\tNobody!\n");
return;
}
else{
printf("No.:\n");
scanf("\t%s",per[i].num);
printf("Name:\n");
scanf("\t%s",per[i].name);
printf("Age:\n");
scanf("\t%d",&per[i].age);
printf("English grade:\n");
scanf("\t%d",&per[i].en);
printf("Major:\n");
scanf("\t%d",&per[i].ji);
}
}
if((fp=fopen(filename,"w"))==NULL)
{
printf("cannot open the files\n");
return;
}
for(i=0;i<n-1;i++)
if(fwrite(&per[i],sizeof(person),1,fp)!=1)
printf("file write error\n");
fclose(fp);
printf("Success!\n");
system("pause");
}
void delet() //Delete data
{
FILE *fp;
char s[10];
int i=0,n=0;
if((fp=fopen(filename,"r"))==NULL)
{
printf("cannot open the files\n");
system("pause");
return;
}
while(!feof(fp))
{
fread(&per[i],sizeof(person),1,fp);
i++;n=n+1;
}
fclose(fp);
if((fp=fopen(filename,"w"))==NULL)
{
printf("cannot open the files\n");
system("pause");
return;
}
printf("No.:");
scanf("%s",s);
for(i=0;i<n-1;i++)
if(!(strcmp(per[i].num,s)==0))
fwrite(&per[i],sizeof(person),1,fp)!=1;
fclose(fp);
printf("Success!");
system("pause");
}
void main() //main function
{
int n=0;
logon();
menu_filename();
for(;;)
{
switch(menu_select())
{
case 1:
printf("\t\t Add student information\n");
add();
break;
case 2:
printf("\t\t Browse student information\n");
scan();
break;
case 3:
printf("\t\t Inquire student information\n");
query();
break;
case 4:
printf("\t\t Calculate data\n");
date();
break;
case 5:
printf("\t\t Modify data\n");
amend();
break;
case 6:
printf("\t\t Delete data\n");
delet();
break;
case 0:
printf("\n\t\tLogout\n");
printf("\n\t\t");
system("pause");
exit(0);
}
}
system("pause");
}