📄 自动化0605姜楠200682091.c
字号:
#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<string.h>
#include<math.h>
#define teacher_key "111111" //教师学生系统登入密码
#define student_key "000000"
#define ML 350
#define N 100
#define GOOD 80//设置优秀分数
#define BAD 60//设置不及格分数
typedef struct student_information//学生信息结构体变量
{
char number[20];
char name[20];
double score[3];
double sum;
double average;
}XX;
XX xx[N];
XX infor;
FILE *fp,*fp1;
int g,flag;
int kk;
char fname[N],fname1[N];//定义用来接收文件名的字符型数组
void welcome();
void menu(void);
void wait(void);
void delay(void);
void teacher_yz(void);
void student_yz(void);
void teacher_menu();
void student_menu();
int check_number1(char check[N]);
int check_number2(char check[N],int x);
int check_number3(char check[N]);
double check_number4(char check[N]);
void input(void);
void save_one();
void read();
void search();
void search_doc();
void search_1();
void search_2();
void add();
void drop(void);
void hgrade();
void hgrade_1();
void hgrade_2();
void hgrade_2_1();
void hgrade_2_2();
void hgrade_2_3();
void lgrade();
void lgrade_1();
void lgrade_2();
void lgrade_3();
void average();
void order();
void order_1();
void order_2();
void order_2_1();
void order_2_2();
void order_2_3();
void read_1();
void end();
void main()//主函数
{
menu();
}
void menu(void)//登入人员属性分类函数
{
char kind[N];
int r;
while(1)
{
welcome();
printf("\t\t请输入所属类别(输入数字1或2,以回车结束)\n");
printf("\t\t\t<1>********教师********\n");
printf("\t\t\t<2>********学生********\n");
printf("\t\t\t您选:");
scanf("%s",kind);
r=check_number1(kind);//输入屏蔽
if(r==1)
break;
else if(r==2)
break;
else
{
printf("\t\t输入有误请重新输入!\n");
wait();
system("cls");
}
}
if(r==1)
{
wait();
teacher_yz();
}
else
{
wait();
student_yz();
}
}
void wait(void) //输出等待函数
{
int i;
printf("\t\tPlease wait");
for(i=1;i<7;i++)
{
delay();
printf(".");
}
printf("\n");
}
void delay(void)//延时函数
{
int i,j,k;
for(i=0;i<ML;i++)
for(j=0;j<ML;j++)
for(k=0;k<ML;)
k++;
}
int check_number1(char check[N])//对输入数字进行验证
{
if(check[0]=='1')
{
if(check[1]=='\0')
return(1);
else
return(0);
}
else if(check[0]=='2')
{
if(check[1]=='\0')
return(2);
else
return(0);
}
else
return(0);
}
void teacher_yz(void)//教师登入密码验证
{
char key[N];
int k;
while(1)
{
system("cls");
printf("\n\n\n");
printf("\t\t***********************************************\n");
printf("\t\t******************教师系统*********************\n");
printf("\t\t***********************************************\n");
printf("\t\t请输入密码:");
scanf("%s",key);
k=strcmp(key,teacher_key);
if(k!=0)
{
printf("\t\t输入有误,请重新输入!\n");
wait();
}
else
break;
}
teacher_menu();
}
void student_yz(void)//登入密码验证
{
char key[N];
int k;
while(1)
{
system("cls");
printf("\n\n\n");
printf("\t\t***********************************************\n");
printf("\t\t******************学生系统*********************\n");
printf("\t\t***********************************************\n");
printf("\t\t请输入密码:");
scanf("%s",key);
k=strcmp(key,student_key);
if(k!=0)
{
printf("\t\t输入有误,请重新输入!\n");
wait();
}
else
break;
}
student_menu();
}
void teacher_menu()//教师主选单
{
char a[N],c[N];
int b,r;
int x1=1;
flag=1;
while(1)
{
while(1)
{
system("cls");
printf("\t\t***********************************************\n");
printf("\t\t*****************教师主选单********************\n");
printf("\t\t***********************************************\n");
printf(" \t\t(1)输入学生信息并新建文件\n");
printf(" \t\t(2)读取文件库中已有文件\n");
printf(" \t\t(3)查询学生信息\n");
printf(" \t\t(4)插入学生信息\n");
printf(" \t\t(5)删除学生信息\n");
printf(" \t\t(6)优秀统计及输出(成绩>80)\n");
printf(" \t\t(7)不及个统计及输出(成绩<60)\n");
printf(" \t\t(8)平均成绩并输出\n");
printf(" \t\t(9)排序并输出\n");
printf(" \t\t(0)退出\n");
printf("\t\t***********************************************\n");
printf("\t\t***********************************************\n");
printf("\t\t请输入您的选择项,并按回车键结束!\n");
printf("\t\t您选择的是:");
scanf("%s",a);
b=check_number2(a,x1);
if(b==0)
{
printf("\t\t输入有误!\n\t\t请重新输入!\n");
wait();
}
else
break;
}
switch(a[0])
{
case '1':input();break;
case '2':read();break;
case '3':search();break;
case '4':add();break;
case '5':drop();break;
case '6':hgrade();break;
case '7':lgrade();break;
case '8':average();break;
case '9':order();break;
case '0':end();break;
}
while(1)
{
printf("\t\t您想继续其他功能吗?\n\t\tYES---(1)\t\tNO---(2)\n");
printf("\t\t您选:");
scanf("%s",c);
r=check_number1(c);
if(r==1)
{
wait();
break;
}
else if(r==2)
break;
else
printf("\t\t输入有误请重新输入!\n");
}
if(r==2)
break;
}
end();
}
void student_menu()//学生主选单
{
char a[N],c[N];
int b,r;
int x2=2;
flag=2;
while(1)
{
while(1)
{
system("cls");
printf("\t\t***********************************************\n");
printf("\t\t*****************学生主选单********************\n");
printf("\t\t***********************************************\n");
printf(" \t\t(1)读取全体学生信息\n");
printf(" \t\t(2)查询学生信息\n");
printf(" \t\t(3)优秀统计及输出(成绩>80)\n");
printf(" \t\t(4)不及个统计及输出(成绩<60)\n");
printf(" \t\t(5)平均成绩并输出\n");
printf(" \t\t(6)排序并输出\n");
printf(" \t\t(0)退出\n");
printf("\t\t***********************************************\n");
printf("\t\t***********************************************\n");
printf("\t\t请输入您的选择项,并按回车键结束!\n");
printf("\t\t您选择的是:");
scanf("%s",a);
b=check_number2(a,x2);
if(b==0)
{
printf("\t\t输入有误!\n\t\t请重新输入!\n");
wait();
}
else
break;
}
switch(a[0])
{
case '1':read();break;
case '2':search();break;
case '3':hgrade();break;
case '4':lgrade();break;
case '5':average();break;
case '6':order();break;
case '0':end();break;
}
while(1)
{
printf("\t\t您想继续其他功能吗?\n\t\tYES---(1)\t\tNO---(2)\n");
printf("\t\t您选:");
scanf("%s",c);
r=check_number1(c);
if(r==1)
{
wait();
break;
}
else if(r==2)
break;
else
printf("\t\t输入有误请重新输入!\n");
}
if(r==2)
break;
}
end();
}
int check_number2(char check[N],int x)//输入数字验证
{
if(x=1)
{
if(check[0]>='0'&&check[0]<='9')
{
if(check[1]=='\0')
return(1);
else
return(0);
}
else
return(0);
}
else
{
if(check[0]>='0'&&check[0]<='6')
{
if(check[1]=='\0')
return(1);
else
return(0);
}
else
return(0);
}
}
void input(void)//数据输入函数,将数据先读入结构体中,然后进行保存写入文件
{
int n,i,k,ss;
char grade[10];
wait();
system("cls");
printf("\t\t*****************请输入下列信息*******************\n");
printf("\t\t请输入您要输入学生的个数:");
scanf("%d",&g);
wait();
system("cls");
printf("\t\t**************************************************\n");
printf("\t\t*****************INFORMATION**********************\n");
printf("\t\t**************************************************\n");
//学生成绩输入
for(i=0;i<g;i++)
{
printf("\n\t\t请输入第%d个学生的学号(<8位):",i+1);
scanf("%s",xx[i].number);
n=check_number3(xx[i].number);
if(n==0)
{
printf("\t\t请认真核对您的输入!\n");
i=i-1;
wait();
system("cls");
continue;
}
printf("\n\t\t请输入第%d个学生的姓名(汉字小于4个字):",i+1);
scanf("%s",xx[i].name);
printf("\n\t\t请输入第%d个学生的数学成绩:",i+1);
scanf("%s",grade);
xx[i].score[0]=check_number4(grade);
if(xx[i].score[0]==-1)
{
printf("\t\t请认真核对您的输入!\n");
i=i-1;
wait();
system("cls");
continue;
}
printf("\n");
printf("\t\t请输入第%d个学生的语文成绩:",i+1);
scanf("%s",grade);
xx[i].score[1]=check_number4(grade);
if(xx[i].score[1]==-1)
{
printf("\t\t请认真核对您的输入!\n");
i=i-1;
wait();
system("cls");
continue;
}
printf("\n");
printf("\t\t请输入第%d个学生的英语成绩:",i+1);
scanf("%s",grade);
xx[i].score[2]=check_number4(grade);
if(xx[i].score[2]==-1)
{
printf("\t\t请认真核对您的输入!\n");
i=i-1;
wait();
system("cls");
continue;
}
xx[i].sum=0;
for(k=0;k<3;k++)
xx[i].sum+=xx[i].score[k];
xx[i].average=xx[i].sum/3.0;
}
while(1)
{
printf("\t\t您确定要保存上述信息吗(请输入数字)? \n\t\t保存请选:1 不保存请选:0\n\t\t您选:");
printf("\t\t");
scanf("%d",&ss);
if(ss==1)
{
save_one();
break;
}
else if(ss==0)
break;
else
{
printf("\n\t\t选择错误!\n");
printf("\t\t请重新选择!\n");
wait();
system("cls");
}
}
}
int check_number3(char check[N])//输入数字验证
{
int i;
for(i=0;i<N;i++)
{
if((check[i]<'0'||check[i]>'9')&&check[i]!='\0')
return(0);
if(check[i]=='\0')
break;
}
return(1);
}
double check_number4(char check[N])//成绩输入数字验证
{
int i,k;
double score=0.0;
for(i=0;i<N;i++)
{
if((check[i]<'0'||check[i]>'9')&&check[i]!='\0')
return(-1);
if(check[i]=='\0')
break;
}
for(k=0;k<i;k++)
score+=(((int)check[k])-48)*pow(10,i-k-1);//将字符型改成double型并返回调用函数
return(score);
}
void save_one()//将数据写入文件中
{
int i;
printf("\t\t请输入您想保存的文件名:");
scanf("%s",fname);
if((fp=fopen(fname,"wb"))==NULL)
{
printf("\t\tCannot open the file!\n");
return;
}
for(i=0;i<g;i++)
{
if(fwrite(&xx[i],sizeof(XX),1,fp)!=1)
printf("\nfile write error!\n");
}
fclose(fp);
printf("\t\t您写入了%d个人信息!\n",g);
}
void read()//读文件中的内容
{
int j,r;
char c[N];
system("cls");
printf("\t\t*****************Read_File*******************\n");
printf("\t\t请输入已有的文件名:");
scanf("%s",fname1);
if((fp1=fopen(fname1,"rb"))==NULL)
{
printf("\t\t该文件不存在!\n");
while(1)
{
printf("\t\t您想继续吗?\n\t\tYES---(1)\t\tNO---(2)\n");
scanf("%s",c);
r=check_number1(c);
if(r==1)
break;
else if(r==2)
break;
else
printf("\t\t输入有误请重新输入!\n");
}
if(flag==1&&r==1)
teacher_menu();
else if(flag==2&&r==1)
student_menu();
else
{
fclose(fp1);
exit(0);
}
}
while(1)
{
fread(&infor,sizeof(XX),1,fp1);
if(feof(fp1))
break;
printf("\t\t学号\t姓名\t数学\t语文\t英语\t总分\t平均分\n");
printf("\t\t%s",infor.number);
printf("\t%s",infor.name);
for(j=0;j<3;j++)
printf("\t%.1f",infor.score[j]);
printf("\t%.1f\t",infor.sum);
printf("%.1f",infor.average);
printf("\n");
}
fclose(fp1);
}
void search()//查找函数
{
char search[N];
while(1)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -