亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我自己寫的學籍管理系統,不知道是不是文件讀入時出了什么問題,有幾個功能運行時就提示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 關注
  • 1558 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號