为了账号安全,请及时绑定邮箱和手机立即绑定

我自己写的学籍管理系统,不知道是不是文件读入时出了什么问题,有几个功能运行时就提示windows出现错误

我自己写的学籍管理系统,不知道是不是文件读入时出了什么问题,有几个功能运行时就提示windows出现错误

C
三十二应遍尘刹 2017-06-01 23:27:17
#include<stdio.h> #include<conio.h> #include<string.h> #include<math.h> #include<windows.h> #define N 100 typedef 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[i].num); puts("请输入学生姓名:(用#结束程序)\n"); scanf("%s",stu[i].name); puts("请依次输入学生的数学、英语、编程、文化课成绩:\n"); scanf("%f%f%f%f",&stu[i].math,&stu[i].english,&stu[i].cprogram,&stu[i].culture); while(strcmp(stu[i].num,"#")&&strcmp(stu[i].name,"#"))//字符数组比较函数,如果字符相等,则返回0,即跳出循环 { fprintf(fp,"%3d%15s%16s%7.1f%7.1f%7.1f%7.1f\n",i+1,stu[i].num,stu[i].name,stu[i].math, stu[i].english,stu[i].cprogram,stu[i].culture);//赋值给结构体变量,且把结构体变量写入文件 i++; printf("请输入第%d个记录",i+1); puts("请输入学生学号:(用#结束程序)\n"); scanf("%s",stu[i].num); puts("请输入学生姓名:(用#结束程序)\n"); scanf("%s",stu[i].name); puts("请依次输入学生的数学、英语、编程、文化课成绩:\n"); scanf("%f%f%f%f",&stu[i].math,&stu[i].english,&stu[i].cprogram,&stu[i].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[i].num, stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].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;i++) if(strcmp(stu[i].name,ch)==0) {  printf("\n        您查询的是学号为%s的学生,他的成绩如下:",stu[i].num); printf("\n        高数:%7.1f,英语:%7.1f,c语言编程:%7.1f,乱七八遭:%7.1f\n",stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3]); break; } if(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[i].num ,stu2[i].name,&stu2[i].math,&stu2[i].english,&stu2[i].cprogram,&stu2[i].culture); } fclose(fp);  for(j=0;j<i-2;j++)//选择法排序 { k=j; for(n=j+1;n<i-1;n++) { if(strcmp(stu2[j].num,stu2[n].num)>0) k=n; } temp=stu2[j]; stu2[j]=stu2[k]; stu2[k]=temp; } fp=fopen("d:\\按学号排序.txt","w"); if(fp=NULL) {printf("文件打开失败"); return;} fprintf(fp,"序号    学号      姓名        高数      英语      C语言      乱七八糟\n"); for(j=0;j<i;j++) { fprintf(fp,"%3d%15s%16s%7.1f%7.1f%7.1f%7.1f\n",j+1,stu2[j].num ,stu2[j].name,stu2[j].math,stu2[j].english,stu2[j].cprogram,stu2[j].culture); } printf("        文件已保存至D:\\按学号排序.txt"); fclose(fp); }         void jisuanPingjun() { int i,j=0,k,n; jibenxingxi stu3[N]={0},temp={0}; FILE *fp=NULL; system("color 9f"); fp=fopen("d:\\学生基本信息.txt","r"); if(fp==NULL) {printf("文件打开失败\n"); return;} printf("欢迎进入按平均成绩排序系统"); while(feof(fp)==0) { fscanf(fp,"%3d%15s%16s%7.1f%7.1f%7.1f%7.1f\n",&i,stu3[i].num, stu3[i].name,&stu3[i].math,&stu3[i].english,&stu3[i].cprogram,&stu3[i].culture); i++; } for(j=0;j<i-1;j++) stu3[j].average=(float)(stu3[j].math+stu3[j].english+stu3[j].cprogram+stu3[j].culture)/4; //平均分不一定是整数,所以要强制转换为浮点型变量 for(i=0;i<j;i++)//选择法排序平均分,此时j记录了有多少个人 { k=i; for(n=i+1;n<=j;n++) { if(stu3[k].average>stu3[n].average) k=n; } temp=stu3[k]; stu3[k]=stu3[i]; stu3[i]=temp; } fp=fopen("d:\\按平均成绩排序.txt","w"); if(fp==NULL) {printf("文件打开失败\n"); return;} fprintf(fp,"序号       学号        姓名        数学        英语       C语言      乱七八糟    平均分\n"); for(i=0;i<=j;i++) fprintf(fp,"%3d%15s%16s%7.1f%7.1f%7.1f%7.1f\n",i+1,stu3[i].num ,stu3[i].name,stu3[i].math,stu3[i].english,stu3[i].cprogram,stu3[i].culture,stu3[i].average); printf("   文件已保存至D:\\按平均成绩排序.txt\n");//把按平均成绩排序的信息写入文件 fclose(fp); }
查看完整描述

1 回答

?
慕粉1146083187

TA贡献12条经验 获得超1个赞

可能是SDK中的windows.h这个文件有问题,可以重装Visual Studio,选择“修复”试试。

查看完整回答
1 反对 回复 2017-06-07
  • 1 回答
  • 0 关注
  • 1527 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号