我想在这一个学生管理程序中加个登录界面,但是加不来。可不可以教一下我哦!
【#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define SIZE 3 /*定义常量SIZE便于以后的修改*/
struct student /*定义一个结构体数组存放学生的信息*/
{
int number; /*学号*/
char name[20];/*名字*/
char xueyuan[20];/*学院*/
int cla;/*班级*/
int score[3];/*分数*/
int sum;/*总分*/
int average;/*平均分*/
}stu[SIZE];
void menu();/*调用菜单函数*/
void write();/*读入信息*/
void save(int x);/*保存stud.dat文件函数*/
void SaveOneStudent(int i);/*保存一个学生信息*/
void SaveAllStudent(int n);/*保存全部学生信息*/
void inturn (struct student c[]);/*用于对学生的信息按学号排序的函数*/
void save2();/*将排序后的信息存入student.dat文件中*/
int AddStudent(int n);/*增加学生信息*/
void InputOnestudent(int i);/*输入一个同学信息*/
int DelStudent(int n);/*删除学生信息*/
void ModifyStudent(int n);/*修改学生信息*/
void OutputOneStudent(int i);/*查询一个学生信息*/
void SearchMenu(int n);/*查询学生信息操作*/
void SearchNumber(int n);/*按学号查询学生信息*/
void SearchName(int n);/*按姓名查询学生信息*/
void SearchXueyuan(int n);/*按所在学院查询学生信息*/
void SearchCla(int n);/*按所在班级查询学生信息*/
void tongji();/*学生信息统计操作*/
void tongji2();/*统计不及格率操作*/
void zfsc();/*总分排序操作*/
void avecz();/*按平均分统计人数操作*/
void avecz();/*按平均分统计人数操作*/
void search();/*查找最高成绩操作*/
void tongji2();/*统计不及格率操作*/
void read();/*读取student.dat文件文件中学生的信息*/
/*主函数************************************************************************************/
int main()
{
int n=SIZE;
int choice;/*用户选择变量*/
printf("*******************************************************************************\n");
printf("* *\n");
printf("* Hwadee &学生成绩文件管理& Hwadee *\n");
printf("* *\n");
printf("*******************************************************************************\n\n\n");
printf("******************************●●欢迎使用●●*********************************");
while (1)
{
menu();/*调用菜单函数形成操作界面*/
printf("请选择:");
scanf("%d", &choice);
if ( choice==0 )
{
printf("\t\t\t\t谢谢使用!!!");
break;
}
switch(choice) /*多重选择实现功能不同的功能*/
{
case 1:
write();
inturn(stu);
save(SIZE);
break;
case 2:
AddStudent(n);
break;
case 3:
DelStudent(n);
break;
case 4:
ModifyStudent(n);
break;
case 5:
SearchMenu(n);
break;
case 6:
tongji();
break;
case 0:
printf("\n谢谢使用!再见!\n");
default:
printf("\n按键错误!请重新选择!\n");
}/*结束switch*/
}/*结束while*/
}
//部分程序清单
/*菜单函数*************************************************************************************/
void menu()
{
printf("************请输入所需操作***********\n");/*选择功能菜单*/
printf("*************************************\n");
printf("1.学生成绩写入及排序\n");
printf("2.增加学生信息\n");
printf("3.删除学生信息\n");
printf("4.修改学生信息\n");
printf("5.查询学生信息\n");
printf("6.学生成绩统计操作\n");
printf("0.退出系统\n");
printf("**************************************\n");
}
/*写入函数*************************************************************************************/
void write()
{
int i;/*计数变量*/
for(i=0;i<SIZE;i++)
{
printf("学号:");
scanf("%d",&stu[i].number);
printf("姓名:");
scanf("%s",&stu[i].number);
printf("学院:");
scanf("%s",&stu[i].xueyuan);
printf("班级:");
scanf("%d",&stu[i].cla);
printf("高数:");
scanf("%d",&stu[i].score[0]);
printf("英语:");
scanf("%d",&stu[i].score[1]);
printf("C语言:");
scanf("%d",&stu[i].score[2]);
stu[i].sum=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2]);/*计算总成绩*/
printf("总成绩:%d",stu[i].sum);
stu[i].average=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;/*计算平均成绩*/
printf("平均成绩:%d\n",stu[i].average);
}
}
/*排序函数**************************************************************************************/
void inturn(struct student m[])
{
int i,j;/*计数变量*/
struct student temp;/*中间变量 类型为结构体*/
for(i=0;i<SIZE-1;i++) /*运用冒泡排序对结构体数组进行排序*/
for (j=i+1;j<SIZE-i-1;j++)
{
if(m[i].number>m[j].number)
{
temp=m[i];
m[i]=m[j];
m[j]=temp;
}
}
printf("\n排序后的学生信息:\n\n");
for (i=0;i<SIZE;i++)
{
printf("学号%d\t姓名%s\t学院%s\t班级%d\t高数%d\t英语%d\tC语言%d\t总成绩%d\t平均成绩%d\n\n",stu[i].number,stu[i].name,stu[i].xueyuan,stu[i].cla,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].average);
}/*输出排序后的学生信息*/
}
/*写入文件*************************************************************************************/
void save(int x)
{
FILE *fp;/*定义文件指针用于向文件读入数据*/
int i;
if((fp=fopen("student.dat","rb+"))==NULL)/*以二进制读,写方式打开文件*/
{
printf("cannot open file\n");
exit(1);
}
for(i=0;i<SIZE;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("file write error\n");
fclose(fp);
printf("\n信息保存成功!恭喜!!\n");
}
/*保存一个学生信息******************************************************************************/
void SaveOneStudent(int i)
{
FILE *fp;
if((fp=fopen("student.dat","rb+"))==NULL)/*以二进制读,写方式打开文件*/
{
printf("文件打开失败!\n");
exit(1);
}
fseek(fp,i,0);/*文件指针定位到第i个学生*/
fwrite(&stu[i],sizeof(struct student),1,fp);/*将第i个学生信息写入文件*/
fclose(fp);
}
/*保存全部学生信息******************************************************************************/
void SaveAllStudent(int n)/*保存全部学生信息*/
{
FILE *fp;
if((fp=fopen("student.dat","wb"))==NULL)/*以二进制写方式打开文件*/
{
printf("文件打开失败!\n");
exit(1);
}
fwrite(stu,sizeof(struct student),n,fp);/*将数组stu中全部学生信息写入文件*/
fclose(fp);
}
/*将排序后的学生信息读入到另外的文件中**********************************************************/
void save2()
{
FILE *fp;
int i;
if((fp=fopen("stud.dat","rb+"))==NULL)/*以二进制读,写方式打开文件*/
{
printf("文件打开失败!\n");
exit(1);
}
for (i=0;i<SIZE;i++)
if (fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("file write error\n");
fclose(fp);/*读取完毕关闭文件*/
}
/*增加学生信息*********************************************************************************/
int AddStudent(int n)
{
char c='y';
FILE *fp;
if((fp=fopen("student.dat","ab"))==NULL)/*以二进制追加方式打开文件*/
{
printf("文件打开失败!\n");
exit(1);
}
while(c=='y')
{
printf("\n请输入要增加的同学的信息:");
InputOnestudent(n);/*调用函数输入第n个学生信息*/
fwrite(&stu[n],sizeof(struct student),1,fp);/*将第n个学生信息保存至文件*/
n++;/*学生数量增加1*/
printf("\n继续输入其他同学信息吗?\n");
printf("确定进行删除请按y;不进行删除请按n\n");
c=getchar();
getchar();
}/*结束while*/
printf("\n按任意键继续!\n");
getchar();
fclose(fp);
return(n);
}
/*输入一个同学信息*****************************************************************************/
void InputOnestudent(int i)
{
printf("学号\t姓名\t学院\t班级\t高数\t英语\tC语言\n");
scanf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t\n",&stu[i].number,stu[i].name,stu[i].xueyuan,&stu[i].cla,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
stu[i].sum=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2]);/*计算总成绩*/
stu[i].average=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;/*计算平均成绩*/
}
/*删除学生信息*********************************************************************************/
int DelStudent(int n)
{
int i,k=-1,x;
char c1='y',c2;
while(c1=='y')
{
c2='n';
printf("\n请输入要删除的同学的学号:");
scanf("%d",&x);
for(i=0;i<n;i++)
if(x==stu[i].number)
{
k=i;/*找到要删除的同学学号,并用k记下其下标*/
break;
}
if(k<0)/*k<0表示在数组中没有找到输入学号对应的学生*/
printf("\n输入学号有误,请重新输入!");
else
{
printf("\n该同学信息如下:\n");
InputOnestudent(k);
printf("\n确定删除?\n");
printf("确定进行删除请按y;不进行删除请按n\n");
c2=getchar();
getchar();
if(c2=='y')/*c2为y,表示确定进行删除操作*/
{
for(i=k;i<n;i++)
stu[i]=stu[i+1];/*删除第k个学生信息*/
n--;/*学生人数减1*/
printf("删除成功!恭喜!!\n");
}
else
printf("\n取消删除!\n");
printf("\n继续删除操作吗?");
printf("\n继续删除请按y;不进行删除请按n\n");
c1=getchar();
getchar();
}
}/*结束while*/
save(n);
printf("\n按任意键继续!\n");
getchar();
return(n);
}
/*修改学生信息********************************************************************************/
void ModifyStudent(int n)
{
struct student temp;
int k=-1,x,i;
char c1='y',c2;
while(c1=='y')
{
c2='y';
printf("\n请输入要修改的同学的学号:");
scanf("%d",&x);
for(i=0;i<n;i++)
if(x==stu[i].number)
{
k=i;/*找到要修改的同学学号,并用k记下其下标*/
break;
}
if(k<0)/*k<0表示在数组中没有找到输入学号对应的学生*/
printf("\n输入学号有误,请重新输入!");
else
{
printf("请输入要修改学生修改后的的信息\n");
printf("学号\t姓名\t学院\t班级\t高数\t英语\tC语言\t\n");
scanf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t\n",&temp.number,stu[i].name,temp.xueyuan,&temp.cla,&temp.score[0],&temp.score[1],&temp.score[2]);
temp.sum=(temp.score[0]+temp.score[1]+temp.score[2]);/*计算总成绩*/
temp.average=(temp.score[0]+temp.score[1]+temp.score[2])/3;/*计算平均成绩*/
stu[k]=temp;/*修改该学生信息*/
printf("\n修改成功!恭喜!!\n");
break;
}
SaveAllStudent(k);/*保存修改后的学生信息*/
printf("\n继续修改操作吗?");
printf("\n继续修改请按y;不进行修改请按n\n");
c1=getchar();
getchar();
}/*结束while*/
printf("\n按任意键继续!\n");
getchar();
}
/*查询一个学生信息**********************************************************************************/
void OutputOneStudent(int i)
{
printf("学号:%d 姓名:%s 学院:%s 班级:%d\n",stu[i].number,stu[i].name,stu[i].xueyuan,stu[i].cla);
printf("高数:%d 英语:%d C语言:%d 总分:%d 平均分:%d\n",stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].average);
}
/*查询学生信息操作*********************************************************************************/
void SearchMenu(int n)
{
int selet;
while(1)
{
printf("**********************************************************\n");
printf("******************** 欢迎进入查询系统 *******************\n");
printf("**********************************************************\n");
printf("\n");
printf("********************* 请输入所需操作 *******************\n");/*选择功能菜单*/
printf("**********************************************************\n");
printf("1.按学号查询\n");
printf("2.按姓名查询\n");
printf("3.按学院查询\n");
printf("4.按班级查询\n");
printf("0.返回主菜单\n");
printf("**********************************************************\n");
printf("请输入操作选项:");
scanf("%d"