#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define SIZE 10
#define X 60 //及格线
#define MIMA 1225
struct Student
{
char name[15];
int number;
float chinese;
float math;
float english;
float comput;
float daolun;
double average;
};
void zhu_meun();
void jiaoshi_meun();
void xuesheng_meun();
void exit_meun();
void make(struct Student stud[SIZE]);
void chakan(struct Student stud[SIZE]);
void xiugai(struct Student stud[SIZE]);
void aver(struct Student stud[SIZE]);
void zhong(struct Student stud[SIZE]);
void you(struct Student stud[SIZE]);
void zhu_meun()
{
printf("\n");
printf("\t\t\t-= 欢迎使用 =-\n\n");
printf("==============================================================\n");
printf(" * * \n");
printf(" * 【1】教师登陆 【2】学生登陆 【0】 退出 * \n");
printf(" * * \n");
printf("==============================================================\n");
}
void jiaoshi_meun()
{
printf("\n");
printf("\t\t\t-= 欢迎进入教师界面 =-\n\n");
printf(" ======================================================== \n");
printf("| [1] 信息录入 |\n");
printf("| |\n");
printf("| [2] 查看信息 |\n");
printf("| |\n");
printf("| [3] 修改信息 [0] 退出系统 |\n");
printf("| |\n");
printf("| [4] 每门课程平均分 |\n");
printf("| |\n");
printf("| [5] 两门以上课程不及格学生信息 |\n");
printf("| |\n");
printf("| [6] 平均成绩在90分以上或全部成绩在85分以上学生信息 |\n");
printf(" -------------------------------------------------------- \n");
}
void xuesheng_meun()
{
printf("\n\n");
printf("\t\t-= 欢迎进入学生界面 =-\n\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf(" [1] 成绩查询 [0] 退出系统 \n");
printf(" ^-^ ^-^ \n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
}
void exit_meun()
{
printf("\n\n");
printf("===============================================================\n");
printf(" -= 感谢使用 再见 -= \n");
printf(">>>>>>>>>>>>>>>>>>~~~~~~~~~~~~~~~~~~~~~~~~~<<<<<<<<<<<<<<<<<<<<\n");
}
void make(struct Student stud[SIZE])
{
int n;
printf("Please enter data of students: \n");
printf("=============================================\n");
printf(" 学号 姓名 语文 数学 英语 c语言 导论 \n");
printf("---------------------------------------------\n");
for(n=0;n<SIZE;n++)
scanf("%d%s%f%f%f%f%f",&stud[n].number,stud[n].name,&stud[n].chinese,&stud[n].math,&stud[n].english,
&stud[n].comput,&stud[n].daolun);
}
void chakan(struct Student stud[SIZE])
{
int i;
printf("The data of the students: \n");
printf("=============================================================== \n");
printf(" 学号 姓名 语文 数学 英语 c语言 导论 平均成绩 \n");
printf("--------------------------------------------------------------- \n");
for(i=0;i<SIZE;i++)
{
printf("%-6d%-15s%-7.1f%-7.1f%-7.1f%-7.1f%-7.1f",stud[i].number,stud[i].name,stud[i].chinese,
stud[i].math,stud[i].english,stud[i].comput,stud[i].daolun);
stud[i].average=(stud[i].chinese+stud[i].math+stud[i].english+stud[i].comput+stud[i].daolun)/5.0;
printf("%-7.1f\n",stud[i].average);
}
}
void xiugai(struct Student stud[SIZE])
{
int i,nu,z=0;
printf("Enter the number you want to collect: ");
scanf("%d",&nu);
for(i=0;i<SIZE;i++)
{
if(nu==stud[i].number)
{
z=1;
printf("Enter the right data again:\n");
scanf("%d%s%f%f%f%f%f",&stud[i].number,stud[i].name,&stud[i].chinese,&stud[i].math,&stud[i].english,
&stud[i].comput,&stud[i].daolun);
stud[i].average=(stud[i].chinese+stud[i].math+stud[i].english+stud[i].comput+stud[i].daolun)/5.0;
}
}
if(z==0) printf("Not find!\n");
else printf("Success!\n");
}
void aver(struct Student stud[SIZE])
{
int i;
float a1=0,a2=0,a3=0,a4=0,a5=0;
for(i=0;i<SIZE;i++)
{
a1+=stud[i].chinese;
a2+=stud[i].math;
a3+=stud[i].english;
a4+=stud[i].comput;
a5+=stud[i].daolun;
}
a1/=SIZE;
a2/=SIZE;
a3/=SIZE;
a4/=SIZE;
a5/=SIZE;
printf("语文平均分: %7.1f\n",a1);
printf("数学平均分: %7.1f\n",a2);
printf("英语平均分: %7.1f\n",a3);
printf("c语言平均分:%7.1f\n",a4);
printf("导论平均分: %7.1f\n",a5);
}
void zhong(struct Student stud[SIZE])
{
int i,y=0,t=0;
printf("=============================================================== \n");
printf(" 学号 姓名 语文 数学 英语 c语言 导论 平均成绩 \n");
printf("--------------------------------------------------------------- \n");
for(i=0;i<SIZE;i++)
{
if(stud[i].chinese<X) y++;
if(stud[i].math<X) y++;
if(stud[i].english<X) y++;
if(stud[i].comput<X) y++;
if(stud[i].daolun<X) y++;
if(y>2)
{
printf("%-6d%-15s%-7.1f%-7.1f%-7.1f%-7.1f%-7.1f",stud[i].number,stud[i].name,stud[i].chinese,
stud[i].math,stud[i].english,stud[i].comput,stud[i].daolun);
printf("%-7.1f\n",stud[i].average);
t=1;
}
y=0;
}
if(t==0) printf("Not find!\n");
}
void you(struct Student stud[SIZE])
{
int i,t=0;
printf("=============================================================== \n");
printf(" 学号 姓名 语文 数学 英语 c语言 导论 平均成绩 \n");
printf("--------------------------------------------------------------- \n");
for(i=0;i<SIZE;i++)
{
if(stud[i].average>90||stud[i].chinese>85&&stud[i].math>85&&stud[i].english&&stud[i].comput>85&&stud[i].daolun>85)
{
printf("%-6d%-15s%-7.1f%-7.1f%-7.1f%-7.1f%-7.1f",stud[i].number,stud[i].name,stud[i].chinese,
stud[i].math,stud[i].english,stud[i].comput,stud[i].daolun);
printf("%-7.1f\n",stud[i].average);
t=1;
}
}
if(t==0) printf("Not find!\n");
}
void chaxun(struct Student stud[SIZE])
{
int i,num,t=0;
printf("Please enter your number to know your score: ");
scanf("%d",&num);
for(i=0;i<SIZE;i++)
{
if(num==stud[i].number)
{
t=1;
printf("=============================================================== \n");
printf(" 学号 姓名 语文 数学 英语 c语言 导论 平均成绩 \n");
printf("--------------------------------------------------------------- \n");
printf("%-6d%-15s%-7.1f%-7.1f%-7.1f%-7.1f%-7.1f",stud[i].number,stud[i].name,stud[i].chinese,
stud[i].math,stud[i].english,stud[i].comput,stud[i].daolun);
printf("%-7.1f\n",stud[i].average);
}
}
if(t==0) printf("Enter number error!\n");
}
void save(struct Student stud[SIZE])
{
FILE *fp;
int i ;
if((fp=fopen("stu.dat","wb"))==NULL)
{
printf("cannot open file\n");
return;
}
for(i=0;i<SIZE;i++)
if(fwrite(&stud[i],sizeof(struct Student),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
void load(struct Student stud[SIZE])
{
FILE *fp;
int i;
if((fp=fopen("stu.dat","rb"))==NULL)
{
printf("cannot open infile\n");
return;
}
for(i=0;i<SIZE;i++)
if(fread(&stud[i],sizeof(struct Student),1,fp)!=1)
{
if(feof(fp))
{
fclose(fp);
return;
}
printf("file read error\n");
}
fclose(fp);
}
int main()
{
struct Student stud[SIZE],*p=stud;
load(p);
system("cls");
zhu_meun();
int i,z=0,j=3,s,k;
while(1)
{
printf("Enter your choice: ");
scanf("%d",&i);
if(i<0||i>2)
{
printf("Please enter the number from 0 to 2 !\n");
continue;
}
switch(i)
{
case 1:
printf("Enter the pass_key: ");
do
{
scanf("%d",&s);
if(s==MIMA)
{
z=1;
break;
}
j--;
printf("Error!Enter again:");
}
while(j>0);
if(z==0)
{
printf("You have enter 3 times!\n");
exit(0);
}
else
{
system("cls");
jiaoshi_meun();
while(1)
{
printf("Enter your choice: ");
scanf("%d",&k);
if(k<0||k>6)
{
printf("Please enter the number from 0 to 6 !\n");
continue;
}
switch(k)
{
case 1:make(p);save(p);break;
case 2:chakan(p);break;
case 3:xiugai(p);save(p);break;
case 4:aver(p);break;
case 5:zhong(p);break;
case 6:you(p);break;
case 0:exit_meun();exit(0);
}
}
}break;
case 2:
int m;
system("cls");
xuesheng_meun();
while(1)
{
printf("Enter your choice:");
scanf("%d",&m);
if(m==1)
{
chaxun(p);
continue;
}
else exit_meun();exit(0);
}break;
case 0:exit_meun();exit(0);
}
}
return 0;
}