#include "stdio.h"#include "string.h"#include "stdlib.h"#include "conio.h"#include "string.h"#include "fcntl.h"typedef struct student{int num;char grade[10];char classroom[10];char name[10];float score_math;float score_chinese;float score_english;float average;float sum;}STU;typedef struct Node{STU data;struct Node *next;}*linklist;void menu();char *loginpassword(char password[],int n);//登录验证密码函数声明//linklist createstulist(linklist head); //创建学生链表即学生信息录入函数声明// void printstulist(linklist head); //学生信息输出函数声明//void searchstu_namelist(linklist head); //学生信息查询函数声明(按姓名)// void searchstu_numlist(linklist head); //学生信息查询函数声明(按学号) linklist modifystulist(linklist head); //学生信息修改函数声明//linklist delatestulist(linklist head); //学生信息删除函数声明//void savestulist(linklist head); //学生信息保存到文件函数声明// linklist loadstulist(); //从文件中读取学生信息函数声明// void sortstulist(linklist head); //成绩排名函数(按年级)声明//void sort(STU stu[],int flag); //学生分班函数声明//void sortstuclass(linklist head); //成绩排名函数(按班级)声明////*************************************//void main(){char admin[]="zhangqiong";char password[]="123456";char person[20];char password1[10];int i;printf("************************************************************************* *******\n");printf("\t\t **********欢迎来到学生成绩管理系统**********\n\n");printf("************************************************************************* *******\n\n");printf("\t\t\t\t用户登录\n\n\n\n");for(i=0;i<3;i++){printf("用户名: ");gets(person);fflush(stdin);printf("\n\n\n");loginpassword(password1,10);printf("\n\n\n");if(strcmp(admin,person)==0&&strcmp(password,password1)==0){printf("\t\t\t\t成功登录,亲!\n");printf("\n\n");printf("按任意键继续!");getch();menu();break;}elseprintf("\t用户名或者密码输入错误\n");}if(i==3)printf("\t对不起,您今天输入次数太多,已被强制退出!\n");}//**********************************************************////**********************************************************//char *loginpassword(char password[],int n) //登录密码函数,隐藏密码可见//{int i=0;int m=0;char ch;printf("用户密码:");while((ch=getch())!='\r'&&m<n){password[i++]=ch;printf("*");}password[i]='\0';return password;}//***************************************************//void menu() //主界面函数//{system("cls");linklist L;L=(linklist)malloc(sizeof(Node));L->next=NULL;int ch;do{printf("\t ----------******------------******-----------******----------\n\n");printf("\t\t\t**********学生成绩管理系统***********\n\n");printf("\t ----------******------------******-----------******----------\n\n\n\n\n");printf("\t1.录入学生成绩信息\n\t2.输出学生成绩信息\n\t3.按学号查找学生信息\n\t4.按姓名查找学生信息\n\t5.修改学生信息\n\t6.删除学生信息\n\t7.保存学生信息到文件\n\t8.从文件中读取学生信息\n\t9.年级总成绩排序\n\t10.班级总成绩排序\n\t11.退出\n");printf("\n\n");printf("请输入您要查询的项目:\n");scanf("%d",&ch);switch(ch){case 1:system("cls");createstulist(L);break;case 2:system("cls");printstulist(L);break;case 3: system("cls");searchstu_numlist(L);break;case 4: system("cls");searchstu_namelist(L);break;case 5: system("cls");modifystulist(L);break;case 6: system("cls");delatestulist( L);break;case 7: system("cls");savestulist(L);break;case 8: system("cls");L=loadstulist();break;case 9: system("cls");sortstulist(L);break;case 10: system("cls");sortstuclass(L);break;case 11:system("cls");exit(0);}}while(1);}//************************************//linklist createstulist(linklist L) //录入信息函数// {linklist p,q;char ch;q=L;printf("*******请输入学生信息*******\n\n\n");do{p=(linklist)malloc(sizeof(Node));if(!p){printf("没有多余内存空间\n");return L;}printf("请输入学号:\n");scanf("%d",&p->data.num);printf("请输入姓名:\n");scanf("%s",&p->);printf("请输入年级:\n");scanf("%s",&p->data.grade);printf("请输入班级:\n");scanf("%s",&p->data.classroom);printf("请输入数学成绩:\n");scanf("%f",&p->data.score_math);while(p->data.score_math>100){printf("成绩超过100了,你是猪吗?\n");printf("给老子重新输入:\n");scanf("%f",&p->data.score_math);}printf("请输入语文成绩:\n");scanf("%f",&p->data.score_chinese);while(p->data.score_chinese>100){printf("成绩超过100了,你是猪吗?\n");printf("给老子重新输入:\n");scanf("%f",&p->data.score_chinese);}printf("请输入英语成绩:\n");scanf("%f",&p->data.score_english);while(p->data.score_english>100){printf("成绩超过100了,你是猪吗?\n");printf("给老子重新输入:\n");scanf("%f",&p->data.score_english);}p->data.sum=p->data.score_math+p->data.score_chinese+p->data.score_english; p->data.average=p->data.sum/3;q->next=p;q=p;q->next=NULL;printf("是否要输入下一个学生的信息(Y/N)!");fflush(stdin);ch=getchar();system("cls");}while(ch=='Y'||ch=='y');return(L);}//*****************************************//void printstulist(linklist L) //输出信息函数//{linklist p;p=L->next;if(p==NULL){printf("请先录入学生信息,亲!\n");}elsewhile(p!=NULL){printf("学号姓名年级班级数学成绩语文成绩英语成绩总分平均成绩\n");printf("%6d %3s %2s %2s %4.1f %4.1f %4.1f %4.1f %4.1f\n", p->data.num,p->,p->data.grade,p->data.classroom,p->data.score_math,p->data.score_ chinese,p->data.score_english,p->data.sum,p->data.average);p=p->next;}printf("按任意键继续\n");getch();system("cls");}//*******************************************************//void searchstu_namelist(linklist L) //按姓名查询函数//{linklist p;char str[10];printf("请输入要查询的学生姓名:\n");scanf("%s",str);p=L->next;if(p==NULL){printf("请先录入学生信息\n");}while(p!=NULL){if(strcmp(p->,str)==0){printf("学号姓名年级班级数学成绩语文成绩英语成绩总分平均成绩\n");printf("%6d %3s %2s %2s %4.1f %4.1f %4.1f %4.1f %4.1f\n", p->data.num,p->,p->data.grade,p->data.classroom,p->data.score_math,p->data.score_ chinese,p->data.score_english,p->data.sum,p->data.average);}p=p->next;}printf("按任意键继续\n");getch();system("cls");}//****************************************//void searchstu_numlist(linklist L) //按学号查询函数//{linklist p;int number;printf("请输入要查询的学生学号:\n");scanf("%d",&number);p=L->next;if(p==NULL){printf("请先录入学生信息\n");}while(p!=NULL){if(p->data.num==number){printf("学号姓名年级班级数学成绩语文成绩英语成绩总分平均成绩\n");printf("%6d %3s %2s %2s %4.1f %4.1f %4.1f %4.1f %4.1f\n", p->data.num,p->,p->data.grade,p->data.classroom,p->data.score_math,p->data.score_ chinese,p->data.score_english,p->data.sum,p->data.average);}p=p->next;}printf("按任意键继续\n");getch();system("cls");}//*****************************************************//linklist delatestulist(linklist L) //删除信息函数//{linklist p,q;int number;char ch;printf("请输入要删除的学生学号:\n");scanf("%d",&number);p=L->next;if(p==NULL){printf("请先录入学生信息\n");return NULL;}while(p!=NULL){if(p->data.num==number){printf("学号姓名年级班级数学成绩语文成绩英语成绩总分平均成绩\n");printf("%6d %3s %2s %2s %4.1f %4.1f %4.1f %4.1f %4.1f\n", p->data.num,p->,p->data.grade,p->data.classroom,p->data.score_math,p->data.score_ chinese,p->data.score_english,p->data.sum,p->data.average);printf("确定要删除该学生的信息吗?(Y/N)\n");fflush(stdin);ch=getchar();if(ch=='Y'||ch=='y'){q=L;while(q->next!=p)q=q->next;if(q->next=p){if(p->next==NULL)q->next=NULL;elseq->next=p->next;free(p);printf("已删除该学生的相关信息!\n");return(L);}}elsereturn NULL;}elsep=p->next;}printf("按任意键继续\n");getch();system("cls");}//***************************************//void savestulist(linklist L) //存盘函数//{FILE *fp;linklist p;char outfile[20];printf("请输入你要保存信息的文件名:(例如:D:\\学生管理系统\\student.text)\n");scanf("%s",outfile);if((fp=fopen(outfile,"w"))==NULL){printf("文件打开失败\n");exit(1);}p=L;while(p!=NULL){fwrite(p,sizeof(Node),1,fp);p=p->next;}fclose(fp);printf("信息保存成功!\n");printf("请按任意键继续\n");getch();system("cls");}//*******************************************//linklist loadstulist() //读盘函数// {linklist q,p,L;L=NULL;FILE *fp;char infile[20];printf("请输入要打开的文件名:\n");scanf("%s",infile);if((fp=fopen(infile,"rb"))==NULL){printf("文件打开失败!\n");exit(1);}printf("正在打开文件....\n");p=(linklist)malloc(sizeof(Node));if(!p){printf("无法申请到内存空间");return L;}L=p;while(!feof(fp)){if(fread(p,sizeof(Node),1,fp)!=1){printf("读取信息失败!\n");break;}p->next=(linklist)malloc(sizeof(Node));if(!p->next){printf("无法申请到内存空间");return L;}q=p;p=p->next;}q->next=NULL;fclose(fp);printf("读取成功!\n");return L;}//*************************************************//void sortstulist(linklist L) //年级排序函数// {STU stu[1000];int i=0;int flag=0;linklist p;p=L->next;if(p==NULL){printf("请先录入学生信息,亲!\n");}while(p!=NULL&&i<1000){stu[i]=p->data;i++;p=p->next;flag++;}printf("正在排序.....\n");sort(stu, flag);}//******************************************************// void sort(STU stu[],int flag){int i,j;STU temp;for(i=1;i<flag;i++)for(j=0;j<flag-i;j++){if(stu[j].sum>stu[j+1].sum){temp=stu[j];stu[j]=stu[j+1];stu[j+1]=temp;}}printf("学号姓名年级班级数学成绩语文成绩英语成绩总分平均成绩\n");for(i=flag-1;i>=0;i--)printf("%6d %3s %2s %2s %4.1f %4.1f %4.1f %4.1f %4.1f\n", stu[i].num,stu[i].name,stu[i].grade,stu[i].classroom,stu[i].score_math,stu[i].score_chinese,stu[i].s core_english,stu[i].sum,stu[i].average);printf("按任意键继续!\n");getch();system("cls");}//*****************************************************//void sortstuclass(linklist L) //班级排序函数//{STU stu[1000];int i=0;STU c1[100],c2[100],c3[100],c4[100],c5[100],c6[100],c7[100],c8[100];int flag=0,flag1=0,flag2=0,flag3=0,flag4=0,flag5=0,flag6=0,flag7=0,flag8=0;int j1=0,j2=0,j3=0,j4=0,j5=0,j6=0,j7=0,j8=0;int ch;linklist p;p=L->next;if(p==NULL){printf("请先录入学生信息,亲!\n");}while(p!=NULL&&i<1000){stu[i]=p->data;i++;p=p->next;flag++;}printf("\t1.一班成绩\n\t2.二班成绩\n\t3.三班成绩\n\t4.四班成绩\n\t5.五班成绩\n\t6.六班成绩\n\t7.七班成绩\n\t8.八班成绩\n");printf("请选择你要查询的班级:\n");scanf("%d",&ch);for(i=0;i<flag;i++){if(strcmp(stu[i].classroom,"一班")==0) {c1[j1]=stu[i];j1++;flag1++;}else if(strcmp(stu[i].classroom,"二班")==0) {c2[j2]=stu[i];j2++;flag2++;}else if(strcmp(stu[i].classroom,"三班")==0) {c3[j3]=stu[i];j3++;flag3++;}else if(strcmp(stu[i].classroom,"四班")==0) {c4[j4]=stu[i];j4++;flag4++;}else if(strcmp(stu[i].classroom,"五班")==0) {c5[j5]=stu[i];j5++;flag5++;}else if(strcmp(stu[i].classroom,"六班")==0) {c6[j6]=stu[i];j6++;flag6++;}else if(strcmp(stu[i].classroom,"七班")==0) {c7[j7]=stu[i];j7++;flag7++;}else{c8[j8]=stu[i];j8++;flag8++;}}switch(ch){case 1: sort(c1,flag1);break;case 2: sort(c2,flag2);break;case 3: sort(c3,flag3);break;case 4: sort(c4,flag4);break;case 5: sort(c5,flag5);break;case 6: sort(c6,flag6);break;case 7: sort(c7,flag7);break;case 8: sort(c8,flag8);break;}}//**************************************************************************// linklist modifystulist(linklist L) //修改信息函数//{linklist p;int n,m;float math,chinese,english;char name[10],grade[10],classroom[10];char ch;p=L->next;printf("请输入要修改的学生学号:\n");scanf("%d",&n);while(p!=NULL){if(p->data.num!=n)p=p->next;else{printf("学号姓名年级班级数学成绩语文成绩英语成绩总分平均成绩\n");printf("%6d %3s %2s %2s %4.1f %4.1f %4.1f %4.1f %4.1f\n", p->data.num,p->,p->data.grade,p->data.classroom,p->data.score_math,p->data.score_ chinese,p->data.score_english,p->data.sum,p->data.average);printf("是否要修改该学生的信息?(Y/N)\n");fflush(stdin);ch=getchar();if(ch=='Y'||ch=='y'){printf("请输入该生新的学号:\n");scanf("%d",&m);printf("请输入该生新的姓名:\n");scanf("%s",name);printf("请输入该生新的年级:\n");scanf("%s",grade);printf("请输入该生新的班级:\n");scanf("%s",classroom);printf("请输入该生新的数学成绩:\n");scanf("%f",&math);printf("请输入该生新的语文成绩:\n");scanf("%f",&chinese);printf("请输入该生新的英语成绩:\n");scanf("%f",&english);p->data.num=m;strcpy(p->,name);strcpy(p->data.grade,grade);strcpy(p->data.classroom,classroom);p->data.score_math=math;p->data.score_chinese=chinese;p->data.score_english=english;p->data.sum=p->data.score_math+p->data.score_chinese+p->data.score_english;p->data.average=p->data.sum/3;printf("修改完成!\n");printf("按任意键继续");getch();//return(L);system("cls");return L;}}if(p=NULL)printf("没有找到要修改的学生信息,亲!\n");}printf("按任意键继续");getch();}********************//。