#include#include#include#include#include#define N 100typedef struct student{ char num[13];//字符数组记录学号 char name[20];// float math; float english; float cprogram;//c程序 float culture;//文化课成绩 float average;//平均成绩 float score[4];//用数组记录成绩,后面在函数中在看}jibenxingxi;//定义结构体变量的类型名为jjibenxingxi//void mainprint();//打印主界面void scoreInput();//成绩录入void scoreStat();//成绩统计系统void studentStatus();//学生管理功能界面void bukao(); /*生成并打印补考通知单*/ void sortAnhao(); /*按学号排序*/ void jisuanPingjun();/*计算平均分并排序*/ void tongjiFenshu(); /*统计分数段*/ void outdanke(); //输出单科成绩void qitafunction();//void findstudent();//查找学生//void main(){ char choose='\0',yes_no='\0'; do { system("color 4f"); system("cls"); mainprint(); printf(" "); choose=getch(); switch(choose) { case '1':scoreInput(); break;//成绩录入 case '2':scoreStat(); break; case '3':studentStatus(); break; case '4':qitafunction(); break; case '0': break; default:printf(" 你所输入的选项非法\n"); } if(choose=='0') break; printf(" 即将进入主菜单,要继续选择吗(Y/N)?\n"); do { yes_no=getch(); }while(yes_no!='y'&&yes_no!='Y'&&yes_no!='n'&&yes_no!='N'); }while(yes_no=='Y'||yes_no=='y');}void mainprint(){ printf(" |******************************************|\n"); printf(" | 欢迎使用学籍管理系统 |\n"); printf(" |******************************************|\n"); printf(" | 请输入选项编号(0~4) |\n"); printf(" |------------------------------------------|\n"); printf(" | 1--录入成绩 |\n"); printf(" | 2--统计成绩 |\n"); printf(" | 3--处理学籍 |\n"); printf(" | 4--创新功能 |\n"); printf(" | 0-- 退出 |\n"); printf(" |------------------------------------------|\n");}void scoreInput(){ int i=0; char yes_no='\0';// jibenxingxi stu[N]={0}; FILE *fp=NULL; system("color 5f");//头文件windows中的函数,调用DOS命令,5f,中间5代表设置背景颜色,f代表前景颜色(字体颜色) system("cls");//头文件windows中的函数,清屏 fp=fopen("d:\\学生基本信息.txt","w");//以写入的方式打开文件d:\\学生基本信息.txt if(fp==NULL) { printf(" 打开文件失败!\n"); return; } printf("\n欢迎进入成绩录入系统\n"); printf("请输入第%d个记录:\n",i+1); puts("请输入学生学号:(用#结束程序)\n"); scanf("%s",stu.num); puts("请输入学生姓名:(用#结束程序)\n"); scanf("%s",stu.name); puts("请依次输入学生的数学、英语、编程、文化课成绩:\n"); scanf("%f%f%f%f",&stu.math,&stu.english,&stu.cprogram,&stu.culture); while(strcmp(stu.num,"#")&&strcmp(stu.name,"#"))//字符数组比较函数,如果字符相等,则返回0,即跳出循环 { fprintf(fp,"%3d%15s%16s%7.1f%7.1f%7.1f%7.1f\n",i+1,stu.num,stu.name,stu.math, stu.english,stu.cprogram,stu.culture);//赋值给结构体变量,且把结构体变量写入文件 i++; printf("请输入第%d个记录",i+1); puts("请输入学生学号:(用#结束程序)\n"); scanf("%s",stu.num); puts("请输入学生姓名:(用#结束程序)\n"); scanf("%s",stu.name); puts("请依次输入学生的数学、英语、编程、文化课成绩:\n"); scanf("%f%f%f%f",&stu.math,&stu.english,&stu.cprogram,&stu.culture); } fclose(fp);}//void scoreStat(){ char choose='\0',yes_no='\0'; system("color 6f"); do { system("cls"); printf("欢迎进入成绩统计系统\n"); printf("\n |------------------------|"); printf("\n | 请输入选项编号(0~4) |"); printf("\n |------------------------|"); printf("\n | 1--按学号排序 |"); printf("\n | 2--按平均分数排序 |"); printf("\n | 3--统计分数段 |"); printf("\n | 4--返回 |"); printf("\n | 0--退出系统 |"); printf("\n |------------------------|\n"); choose=getch(); switch(choose) { case '1':sortAnhao(); case '2':jisuanPingjun(); case '3':tongjiFenshu(); case '4':main(); case '0':break; default:printf(" 这是一个非法选项!");break; } if(choose==0) break; printf(" 要继续选择吗?(Y/N)"); do { yes_no=getch(); }while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n'); }while(yes_no=='y'||yes_no=='Y');}//void studentStatus(){ char choose='\0',yes_no='\0'; jibenxingxi stu[N]={0}; FILE *fp=NULL; fp=fopen("d:\\学生基本信息.txt","r"); if(fp==NULL) {printf("文件打开失败!"); return; } system("color 2f"); do { system("cls"); printf (" |---------------------------------------|\n"); printf (" | 请输入选项编号(0-3) |\n"); printf (" |---------------------------------------|\n"); printf (" | 1----------生成并打印补考通知单 |\n"); printf (" | 2----------查找学生 |\n"); printf (" | 3----------输出单科成绩 |\n"); printf (" | 4----------返回 |\n"); printf (" | 0----------退出系统 |\n"); printf (" |---------------------------------------|\n"); choose=getche(); while(choose!='0'&&choose!='1'&&choose!='2'&&choose!='3'&&choose!='4') { printf(" %c为非法选项!请重新输入:",choose); choose=getchar(); } switch(choose) { case '1':bukao(); break; case '2':findstudent(); break; case '3':outdanke(); break; case '4':main(); break; case '0':break; } if(choose==0) { printf("\n"); printf("感谢您的使用!\n"); break; } printf("要继续选择吗?(Y/N)\n"); do { yes_no=getch(); }while(yes_no!='y'&&yes_no!='Y'&&yes_no!='n'&&yes_no!='N'); }while(yes_no=='y'||yes_no=='Y');}void findstudent(){ int i=0,j=0,count=0,n=0,t=0; char ch[20]="",yes_no='\0'; struct student stu[N]={0}; FILE *fp=NULL; fp=fopen("d:\\学生基本信息.txt","r"); if(fp==NULL) { printf("\n 打开文件失败!\n"); return; } while(feof(fp)==0) { fscanf(fp,"%3d%15s%16s%7.1f%7.1f%7.1f%7.1f\n",&t,stu.num, stu.name,&stu.score[0],&stu.score[1],&stu.score[2],&stu.score[3]); i++; n++; } fclose(fp); do { system("color 8f"); system("cls"); printf("\n 欢迎进入查询学生系统!\n"); printf("\n请输入要查学的学生的姓名:"); scanf("%s",&ch); for(i=0;i=n) printf("\n 查无此人.......\n"); printf("\n 要继续选择查询学生吗(Y/N)?\n"); do { yes_no=getche(); }while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n'); }while(yes_no=='y'||yes_no=='Y'); } void sortAnhao(){ int k,i=0,j=0,n=0,t=0; jibenxingxi stu2[N]={0},temp={0};//temp是为了排序时与结构体变量值进行交换的中间变量 FILE *fp=NULL; system("color 9f"); fp=fopen("d:\\学生基本信息.txt","r"); if(fp=NULL) {printf("文件打开失败!\n"); return;} printf("欢迎进入按学号排序系统\n"); for(i=0;feof(fp)==0;i++) { fscanf(fp,"%3d%15s%16s%7.1f%7.1f%7.1f%7.1f\n",&t,stu2.num ,stu2.name,&stu2.math,&stu2.english,&stu2.cprogram,&stu2.culture); } fclose(fp); for(j=0;j |