程序設計學生選修課程系統(tǒng)設計與實現(xiàn)_第1頁
程序設計學生選修課程系統(tǒng)設計與實現(xiàn)_第2頁
程序設計學生選修課程系統(tǒng)設計與實現(xiàn)_第3頁
程序設計學生選修課程系統(tǒng)設計與實現(xiàn)_第4頁
程序設計學生選修課程系統(tǒng)設計與實現(xiàn)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

通達學院程序設計(2017/2018學年第1學期)題目:學生選修課程系統(tǒng)設計與實現(xiàn)專業(yè)計算機科學于技術(嵌入式)學生姓名班級學號指導教師徐小龍指導單位計算機學院·計算機科學與技術系日期2017年10月27日南京郵電大學通達學院程序設計指導教師成績評定表題目學生姓名班級學號專業(yè)評分內容評分標準優(yōu)秀良好中等差平時成績認真對待課程設計,遵守實驗室規(guī)定,上機不遲到早退,不做與設計無關得事。設計成果設計得科學、合理性功能豐富、符合設題目要求界面友好、外觀漂亮、大方設計得原創(chuàng)性設計報告設計報告正確合理、反映系統(tǒng)設計流程文檔內容詳實程度文檔格式規(guī)范、排版美觀答辯簡練、準確闡述設計內容,能準確有條理回答各種問題,系統(tǒng)演示順利。評分等級指導教師簽名日期2017-10—27備注評分等級有五種:優(yōu)秀、良好、中等、及格、不及格課題內容與要求學生選修課程系統(tǒng)設計與實現(xiàn)假定有n門課程,每門課程有課程編號,課程名稱,課程性質,總學時,授課學時,實驗或上機學時,學分,開課學期等信息,學生可按要求(如總學分不得少于60)自由選課。試設計一選修課程系統(tǒng),使之能提供以下功能:系統(tǒng)以菜單方式工作課程信息錄入功能(課程信息用文件保存)—-輸入課程信息瀏覽功能--輸出查詢功能:按學分查詢、按課程性質查詢學生可以選修課程需求分析開始本系統(tǒng)得功能模塊如圖所示開始主函數(shù)主函數(shù)進入選課操進入選課操作統(tǒng)計選課情況瀏覽課程信息錄入課程信息查詢課程信息從選課文件中統(tǒng)計信息輸入學號姓名進行選開課課瀏覽文件中得課程信息將課程信息輸入文件中從選課文件中統(tǒng)計信息輸入學號姓名進行選開課課瀏覽文件中得課程信息將課程信息輸入文件中按照課程性質查詢課程按照課程性質查詢課程按照學分查詢課程信息使系統(tǒng)以菜單方式工作:輸出個菜單,用于顯示以從文件中加載得課程信息與若干個可選得功能選項。根據(jù)客戶輸入得選項來運行不同得功能,運行不同得函數(shù)。錄入課程信息:使用戶可以將課程信息輸入文件瀏覽課程信息:使用戶可以按照學分或者課程性質瀏覽文件中得課程信息進入選課操作:輸入學號,姓名進行選課統(tǒng)計選課情況:從選課文件中統(tǒng)計信息概要設計(1)主函數(shù)得設計在主函數(shù)中按照提示輸入相對應數(shù)字進入相應得操作,同時,在輸入序號數(shù)字錯誤時,會自動提示“輸入錯誤,請重新輸入”,然后,重新輸入一個數(shù)字,繼續(xù)進行相應得操作。(注:輸入得數(shù)字要在0~5之內)算法設計如下:S1:從鍵盤上輸入一個0~5得數(shù)字,進入相應得操作S2:如果選擇序號1,則進入課程信息錄入操作S3:如果選擇序號2,則進入瀏覽課程信息操作S4:如果選擇序號3,則進入查詢課程信息操作S5:如果選擇序號4,則進入學生選擇課程操作S6:如果選擇序號5,則進入統(tǒng)計選課情況操作S7:如果選擇序號0,則退出學生選課管理系統(tǒng)S8:如果選擇除0~5得其她操作,則提示“輸入錯誤,請重新輸入”然后返回S1具體流程圖如下:開開始主函數(shù)主函數(shù)輸入0~5相應得操作對應得數(shù)字輸入0~5相應得操作對應得數(shù)字進行相應得操作進行相應得操作就是否繼續(xù)就是否繼續(xù)就是就是否否結束結束錄入函數(shù)得設計對于錄入函數(shù),就就是在D盤建立一個“course、txt”文件,然后通過scanf從鍵盤上輸入課程信息,再通過fprintf將輸入得信息保存在文件中,關閉文件。算法設計如下:S1:在D盤建立“course、txt”文件S2:提示讓學生輸入選課門數(shù)S3:從鍵盤上輸入課程信息并保存S4:當指針指向文件尾部,返回S3具體流程圖如下:開始創(chuàng)建文件開始創(chuàng)建文件輸入課程門數(shù)輸入課程門數(shù)結束輸入課程信息結束輸入課程信息保存課程信息保存課程信息就是否指向尾部就是否指向尾部就是就是結束結束瀏覽函數(shù)得設計對于瀏覽函數(shù),通過fscanf讀取文件中得課程信息,然后再通過printf將信息輸出算法設計如下:S1:打開“course、txt”文件S2:讀取文件中得信息S3:輸出信息S4:當指針未指向文件尾部,返回S2具體流程圖如下:開始開始打開文件打開文件輸出課程信息讀取課程信息輸出課程信息讀取課程信息否就是否指向尾部否就是否指向尾部就是就是結束結束查詢函數(shù)得設計對于查詢函數(shù),輸入1或2選擇查詢方式,如果不就是,則重新輸入。對于不同方式得查詢,如果輸入得方式與文件中有相符得,則輸出查詢結果算法設計如下:S1:選擇查詢方式S2:如果方式就是學分查詢,輸入想查詢得學分,打開文件,未指向文件尾部,如果文件中存在,則輸出查詢結果S3:如果方式就是課程性質查詢,輸入想查詢得課程性質,打開文件,未指向文件尾部,讀取文件信息,如果文件中存在,則輸出查詢結果S4:如果方式數(shù)字不存在,則退出查詢具體流程圖如下:開始開始選擇查詢方式選擇查詢方式數(shù)字不正確按課程性質數(shù)字不正確按課程性質按學分查詢打開文件讀取打開文件讀取打開文件讀取打開文件讀取只顯示課程編號、課程名稱信息,不顯示結果只顯示課程編號、課程名稱信息,不顯示結果就是否存在信息就是否存在信息就是否存在信息就是否存在信息就是就是否就是就是否否就是否指向尾部就是否指向尾部否就是否指向尾部就是否指向尾部就是就是就是就是就是就是就是就是退出課程查詢系統(tǒng)輸出課程信息輸出課程信息退出課程查詢系統(tǒng)輸出課程信息輸出課程信息結束結束結束結束選課函數(shù)得設計對于選課函數(shù),先從鍵盤上輸入學號,姓名,課程編號,課程名稱,打開“course、txt"文件,如果,課程存在,則進入下一步,建立“student、txt”文件,將選課信息保存在文件中,退出.算法設計如下:S1:輸入選課信息,包括學號,姓名,課程編號,課程名稱S2:打開文件“course、txt”S3:如果課程存在,則進行下一步S4:建立“student、txt”文件S5:保存選課信息具體流程圖如下開始:開始輸入選課信息輸入選課信息打開課程文件打開課程文件就是否存在課程就是否存在課程建立選課文件建立選課文件讀取選課信息保存讀取選課信息保存讀取選課信息保存讀取選課信息保存否就是否指向尾部否就是否指向尾部結束結束統(tǒng)計函數(shù)得設計對于統(tǒng)計函數(shù),打開“student、txt"文件,讀取文件中得選課信息,輸出文件中得選課信息,計數(shù),關閉文件算法設計如下:S1:打開“student、txt”文件S2:當未指向文件尾部,讀取文件中得選課信息S3:輸出選課信息同時計數(shù)S4:輸出人數(shù)S5:結束具體流程圖如下:開始開始打開選課文件打開選課文件讀取選課信息讀取選課信息輸出選課信息計數(shù)輸出選課信息計數(shù)否就是否指向尾部否就是否指向尾部結束結束四、詳細設計1、主函數(shù):構造voidmain(),實現(xiàn)調用各個功能模塊:學生選課系統(tǒng)執(zhí)行主流程如圖所示,先執(zhí)行主函數(shù)中顯示菜單函數(shù),通過循環(huán)與按鍵操作來執(zhí)行相應得操作。按鍵得有效鍵值為0~5之間得任意數(shù)值,其她按鍵為無效輸入,會提示“輸入錯誤,請重新輸入”,同時,再次用scanf創(chuàng)造再次輸入得機會。各個按鍵得執(zhí)行功能為:“1":錄入選修課課程信,調用函數(shù)luru();“2”:瀏覽錄入得課程信息,調用函數(shù)liulan();“3":查詢課程信息,調用函數(shù)chaxun();“4":進入選課操作,調用函數(shù)chaxun();“5":統(tǒng)計選課信息,調用函數(shù)tongji();“0”:退出系統(tǒng);intmain(){ intn;?intmenu();?intf1();?intluru(); intliulan();?intchaxun(); intxuanke(); inttongji();?printf(”\n*********************************************");?printf(”\n\n**********歡迎進入學生選課系統(tǒng)!**********");?menu();?printf("\n");?printf(”*******************theend*********************\n”);?printf(”\n*********************************************"); printf("\n\n請先選擇1進行課程信息錄入:”);?scanf(”%d",&n); for(;n>5||n〈0;) {? printf("\n輸入錯誤!請重新輸入!\n");???scanf(”%d",&n); }?while(n>0&&n〈6) {? switch(n)? {? case1:luru();break; ?case2:liulan();break; case3:chaxun();break;? case4:xuanke();break; case5:tongji();break; ?} scanf("%d”,&n);? for(;n〉5||n〈0;) { ? printf(”\n\n”);? ?printf("\n輸入錯誤!請重新輸入!\n”); ??scanf(”%d",&n);? }??system(”cls”);?}?if(n==0) { printf("\n\n\n\n\n\n\n"); printf(”**********謝謝使用?。?*******\n");? printf("\n\n\n\n\n");?} exit(0);?return0;}定義menu函數(shù),f1函數(shù)方便調用函數(shù)函數(shù)功能及實現(xiàn):此函數(shù)為輸出菜單,進入系統(tǒng)后提示可根據(jù)供選擇得項目進行后續(xù)操作.intmenu(){ intn;?printf(”\n\n\n\n");?printf("1、錄入課程信息\n\n");printf("2、瀏覽課程信息\n\n");printf(”3、查詢課程信息\n\n”);printf(”4、進入選課操作\n\n”);?printf("5、統(tǒng)計選課情況\n\n");?printf("0、退出選課系統(tǒng)\n\n”);return0;}定義課程、選課結構體變量structcourse{ intnum;?charname[20]; charkind[20];?intttime,mark,term;}c;structstudent{intsnum;?um; charcnam[20]; charsnam[20];}s[500];定義錄入函數(shù),課程信息函數(shù)功能及實現(xiàn):此函數(shù)錄入課程信息,在查詢、瀏覽、進入選課,查瞧選課信息等函數(shù)之前。定義指向文件得指針變量*fp,課程信息結構體c通過fopen函數(shù)建立文件"course、txt",后輸入錄入課程得門數(shù),打印表頭,通過for循環(huán),用scanf函數(shù)從屏幕讀取課程信息,并通過fprintf函數(shù)將課程信息錄入到文件“course、txt”中,最后輸出主菜單,返回主程序.intluru(){?FILE*fp;?structcoursec; intcount;?inti; if((fp=fopen(”D://course、txt",”w"))==NULL) { ?printf("cannotopenfile\n");??exit(0);?}?printf(”\n請輸入選擇得課程門數(shù):");?scanf("%d”,&count);?printf("\n\n\n");?f1();?for(i=0;i<count;i++) {? scanf("%d%s%s%d%d%d",&c、num,c、name,c、kind,&c、ttime,&c、mark,&c、term); fprintf(fp,”%d\t%s\t%s\t%d\t%d\t%d\t",c、num,c、name,c、kind,c、ttime,c、mark,c、term); } fclose(fp);?printf("\n錄入成功!\n\n");?menu(); return0;}定義瀏覽函數(shù),瀏覽錄入得課程信息函數(shù)功能及實現(xiàn):此函數(shù)先定義指向文件得指針*fp,課程結構體變量c,通過if語句判斷文件就是否存在,在調用函數(shù)f1(),輸出表頭信息,通過for循環(huán)并使用fscanf函數(shù)將文件中得課程信息讀出并通過printf打印到屏幕上,再通過fclose函數(shù)關閉文件.intliulan()//瀏覽函數(shù){?inti=0; FILE*fp;?structcoursec;?if((fp=fopen(”D://course、txt”,”r”))==NULL)?{ printf("\ncannotopencourse!\n");??exit(0);?} f1();?while(!feof(fp)&&i<count)?{?fscanf(fp,"%d%s%s%d%d%d",&c、num,c、name,c、kind,&c、ttime,&c、mark,&c、term);? printf(”%7d%11s%10s%9d%9d%8d\n",c、num,c、name,c、kind,c、ttime,c、mark,c、term); ?i++; } fclose(fp); menu();?return0;}定義查詢函數(shù),按照學分與課程性質查詢函數(shù)功能及實現(xiàn):先定義學生結構體變量s,打印相關可供選擇得選項,通過scanf函數(shù)讀取輸入字符,打印表頭,再使用if語句進行相關選擇。如果數(shù)“1",則就是按學分查詢課程,符合第一個if語句,輸入想要查詢得學分,程序通過for循環(huán)從文件中讀取課程信息,并通過printf函數(shù)輸出滿足要求得課程信息;如選擇“2”,符合第二個if語句,則按照課程性質查詢,輸入課程性質,程序通過for循環(huán)從文件中讀取課程信息,并通過printf函數(shù)輸出滿足要求得課程信息;如輸入“3”,符合第二個if語句,則按照課程名稱查詢,輸入要課程名稱,程序通過for循環(huán)從文件中讀取課程信息,并通過printf函數(shù)輸出滿足要求得課程信息;查詢完成后通過fclose函數(shù)關閉文件,打印主菜單,返回主函數(shù)。intchaxun(){?FILE*fp;?structcoursec;?intscore;?intb,i=0;?charkind[20];?printf("\n1、按學分查詢\n"); printf(”\n2、按課程性質查詢"); printf(”請選擇查詢方式\n\n輸入選項數(shù)字:”);?scanf("%d",&b);?for(;b〈1||b〉2;) { printf("\n輸入錯誤!請重新輸入!\n");??scanf(”%d",&b);?} if(b==1) { ?printf("\n輸入您要查詢得學分:”);? scanf("%d”,&score);??if((fp=fopen(”D://course、txt","r"))==NULL) {?? printf("\ncannotopencourse?。埽睢保? ? exit(0);? } f1(); ?while(!feof(fp)&&i<count)? { ?fscanf(fp,"%d%s%s%d%d%d”,&c、num,c、name,c、kind,&c、ttime,&c、mark,&c、term); if(c、mark==score) printf("%7d%11s%10s%9d%9d%8d\n”,c、num,c、name,c、kind,c、ttime,c、mark,c、term);? i++;??}?} elseif(b==2)?{ printf("\n\n輸入您要查詢得課程性質:”); scanf(”%s”,kind); if((fp=fopen("D://course、txt","r"))==NULL)//打開文件"course、txt"??{ printf("\ncannotopencourse!\n"); }??f1(); ?while(!feof(fp)&&i〈count) { ? fscanf(fp,"%d%s%s%d%d%d”,&c、num,c、name,c、kind,&c、ttime,&c、mark,&c、term); if(strcmp(c、kind,kind)==0) ?? printf("%7d%11s%10s%9d%9d%8d\n",c、num,c、name,c、kind,c、ttime,c、mark,c、term); ? i++;??} }?else?{? printf("輸入錯誤!"); ?exit(1);?}?fclose(fp); menu();?return0;}定義選課函數(shù),進入選課操作函數(shù)功能及實現(xiàn):進入此函數(shù)可進行自由選課,首先定義了學生結構體變量s,與課程結構體變量c。選課學生輸入自己得學號與要選得課程,通過for循環(huán)打開文件并找到所要選擇得課程,通過break跳出循環(huán),關閉課程文件“course、txt”并將學生選課信息存入文件“student、txt”中。打印菜單信息,返回主函數(shù)。intxuanke(){?intt=0,flag;?inti;?/*structcoursec;?FILE*fp; do {?printf(”\n請輸入學號姓名課程編號及課程名稱:");scanf("%d%s%d%s”,&s[t]、snum,s[t]、snam,&s[t]um,s[t]am);?if((fp=fopen(”D://course、txt",”r”))==NULL)//打開文件”course、txt"?{ printf("\ncannotopencourse!\n");? exit(0); }?while(!feof(fp))?{??fscanf(fp,"%d%s%s%d%d%d",&c、num,c、name,c、kind,&c、ttime,&c、mark,&c、term);?if((s[t]um==c、num)&&(s[t]am==c、name)) ? ?t++; ?break;?}?fclose(fp); printf("\n就是否繼續(xù),就是1,否0\n");? scanf("%d”,&flag); ?if((fp=fopen("D://student、txt","a+”))==NULL)??{ printf(”\ncannotopenstudent!\n"); exit(0);??} ?for(i=0;i<t;i++); ?fprintf(fp,"%d\t%s\t%d\t%s\t\n",s[t]、snum,s[t]、snam,s[t]um,s[t]am);?fclose(fp); }while(flag); printf("\n*********恭喜選課成功!*********\n”);?menu();?return0;}8。定義統(tǒng)計函數(shù),統(tǒng)計學生選課信息函數(shù)功能及實現(xiàn):此函數(shù)為查瞧選修課被選擇得情況。定義了變量total為了統(tǒng)計選課人數(shù),通過if語句判斷就是否存在文件“student、txt”,通過for循環(huán)打印出所有已選課學生得學號、選課課程編號與所選課程得名稱,通過計數(shù)變量total輸出已選課得人數(shù)信息。然后打印菜單,返回主函數(shù)。inttongji()//統(tǒng)計函數(shù){?inttotal=0; intt,i=0; FILE*fp; if((fp=fopen("D://student、txt”,"r”))==NULL) { ?printf(”\ncannotopenstudent!\n”); exit(0);?}?printf("\n學號姓名課程編號及課程名稱\n”); while(!feof(fp))?{ ?fscanf(fp,”%d%s%d%s\n",&s[i]、snum,s[i]、snam,&s[i]um,s[i]am); ?total++;??i++; }?t=i; for(i=0;i〈t;i++) ?printf(”%5d%6s%7d%10s\n”,s[i]、snum,s[i]、snam,s[i]um,s[i]am);?printf("\n選課學生總人數(shù)為:%d人",total);?fclose(fp);?menu();?return0;}源程序代碼:#include〈stdio、h>#include〈string、h>#include<stdlib、h>structcourse{?intnum;?charname[20]; charkind[20];?intttime,mark,term;}c;structstudent{ intsnum; intcnum; charcnam[20];?charsnam[20];}s[500];intcount;//全局變量intmain()//主函數(shù){?intn; intmenu();?intf1(); intluru(); intliulan(); intchaxun();?intxuanke(); inttongji(); printf(”\n*********************************************”); printf("\n\n**********歡迎進入學生選課系統(tǒng)!**********"); menu(); printf("\n"); printf(”*******************theend*********************\n”); printf("\n*********************************************”);?printf("\n\n請先選擇1進行課程信息錄入:”); scanf("%d",&n);//防止錯誤,請重新輸入 for(;n>5||n〈0;)?{? printf("\n輸入錯誤!請重新輸入!\n”); scanf("%d",&n); } while(n〉0&&n<6) {? switch(n) ?{ ?case1:luru();break;//錄入課程信息??case2:liulan();break;//瀏覽課程信息 ?case3:chaxun();break;//查詢課程信息? case4:xuanke();break;//進入選課操作? case5:tongji();break;//統(tǒng)計選課情況??} scanf(”%d",&n);//選擇所需操作? for(;n>5||n<0;) ?{ ? printf("\n\n");???printf(”\n輸入錯誤!請重新輸入!\n”);?? scanf("%d",&n);//防止錯誤,提示重新輸入 } system(”cls");//清屏 }?if(n==0)?{ printf(”\n\n\n\n\n\n\n"); printf("**********謝謝使用!**********\n"); printf("\n\n\n\n\n");?} exit(0);//退出選課系統(tǒng) return0;}intmenu()//菜單函數(shù){ intn;?printf("\n\n\n\n"); printf("1、錄入課程信息\n\n");printf(”2、瀏覽課程信息\n\n");printf("3、查詢課程信息\n\n”);printf(”4、進入選課操作\n\n”);printf("5、統(tǒng)計選課情況\n\n");printf("0、退出選課系統(tǒng)\n\n”);return0;}intf1(){?printf("\n課程編號課程名稱課程性質總學時學分開課學期:\n");?return0;}intluru()//錄入函數(shù){?FILE*fp;//定義指向文件得指針?structcoursec;?inti; if((fp=fopen("D://course、txt”,"w”))==NULL)//建立文件"course、txt”?{ printf(”cannotopenfile\n");??exit(0);?}?printf(”\n請輸入選擇得課程門數(shù):");?scanf(”%d",&count);?printf(”\n\n"); f1(); for(i=0;i<count;i++) {??scanf(”%d%s%s%d%d%d”,&c、num,c、name,c、kind,&c、ttime,&c、mark,&c、term); fprintf(fp,"%d\t%s\t%s\t%d\t%d\t%d\t",c、num,c、name,c、kind,c、ttime,c、mark,c、term); } fclose(fp);//關閉文件 printf(”\n*********錄入成功?。?******\n"); menu(); return0;}intliulan()//瀏覽函數(shù){ inti=0;?FILE*fp;//定義指向文件得指針 structcoursec;//定義課程結構體變量?if((fp=fopen("D://course、txt”,"r"))==NULL)//打開文件”course、txt” {??printf("\ncannotopencourse!\n"); exit(0); }?f1();?while(!feof(fp)&&i<count) {?fscanf(fp,"%d%s%s%d%d%d”,&c、num,c、name,c、kind,&c、ttime,&c、mark,&c、term);? printf("%7d%11s%10s%9d%9d%8d\n",c、num,c、name,c、kind,c、ttime,c、mark,c、term); i++; } fclose(fp);//關閉文件?menu();?return0;}intchaxun()//查詢函數(shù){ FILE*fp;//定義指向文件得指針 structcoursec;//定義課程結構體變量 intscore;?intb,i=0; charkind[20];?printf("\n1、按學分查詢\n”); printf(”\n2、按課程性質查詢"); printf("請選擇查詢方式\n\n輸入選項數(shù)字:"); scanf(”%d",&b);//防止錯誤,提示重新輸入 for(;b<1||b>2;) {??printf("\n輸入錯誤!請重新輸入!\n"); scanf(”%d",&b); }//按學分查詢?if(b==1)?{ ?printf("\n輸入您要查詢得學分:");??scanf("%d”,&score);? if((fp=fopen("D://course、txt",”r"))==NULL) ?{ printf("\ncannotopencourse!\n"); ??exit(0);??}? f1();? while(!feof(fp)&&i〈count)//當沒有指向文件尾部,讀取文件“course、txt”中得數(shù)據(jù)??{ ??fscanf(fp,"%d%s%s%d%d%d”,&c、num,c、name,c、kind,&c、ttime,&c、mark,&c、term);? ?if(c、mark==score)//比較輸入得分數(shù)與結構體中得分數(shù),如果相同,輸出那組數(shù)據(jù)?? printf(”%7d%11s%10s%9d%9d%8d\n",c、num,c、name,c、kind,c、ttime,c、mark,c、term); ??i++; ?}?}?elseif(b==2)//按課程性質查詢 { ?printf(”\n\n輸入您要查詢得課程性質:");? scanf("%s”,kind); ?if((fp=fopen(”D://course、txt","r"))==NULL)//打開文件"course、txt” ?{?? printf("\ncannotopencourse!\n");??}??f1();? while(!feof(fp)&&i〈count)//當沒有到達文件尾部,讀取“course、txt"中得數(shù)據(jù) ?{? ?fscanf(fp,"%d%s%s%d%d%d",&c、num,c、name,c、kind,&c、ttime,&c、mark,&c、term);???if(strcmp(c、kind,kind)==0)//比較輸入得字符串與原文件中得課程性質,如果相同,輸出那組數(shù)據(jù) ?? printf("%7d%11s%10s%9d%9d%8d\n",c、num,c、name,c、kind,c、ttime,c、mark,c、term); ?i++;??} }?else?{ printf(”輸入錯誤!");//選擇錯誤,就退出 ?exit(1); }?fclose(fp);?menu(); return0;}intxuanke()//選課函數(shù){?intt=0,flag;?inti;?FILE*fp;//定義指向文件得指針?do {?printf("\n請輸入學號姓名課程編號及課程名稱:”);scanf(”%d%s%d%s",&s[t]、snum,s[t]、snam,&s[t]um,s[t]am); if((fp=fopen("D://course、txt”,”r"))==NULL)//打開文件”course、txt" { printf(”\ncannotopencourse!\n");??exit(0); } while(?。鎒of(fp))//如果課程編號與課程名稱與學生所選一致,就跳出,執(zhí)行下一步 {? fscanf(fp,"%d%s%s%d%d%d”,&c、num,c、name,c、kind,&c、ttime,&c、mark,&c、term); if((s[t]um==c、num)&&(s[t]am==c、name)) ??t++; ?break;?}?fclose(fp); printf("\n就是否繼續(xù),就是1,否0\n"); ?scanf("%d",&flag); if((fp=fopen(”D://student、txt","a+"))==NULL)//建立文件“student、txt”? {? printf(”\ncannotopenstudent!\n");? exit(0);??}//建立,并將學生選課信息輸入"student、txt" ?for(i=0;i<t;i++);??fprintf(fp,”%d\t%s\t%d\t%s\t\n”,s[t]、snum,s[t]、snam,s[t]um,s[t]am); fclose(fp);//關閉選課文件”course、txt" }while(flag); printf("\n*********恭喜選課成功!*********\n");?menu();?return0;}inttongji()//統(tǒng)計函數(shù){ inttotal=0; intt,i=0; FILE*fp;?if((fp=fopen(”D://student、txt”,”r"))==NULL)//打開文件“student、txt”?{ ?printf("\ncannotopenstudent!\n");??exit(0);?} printf("\n學號姓名課程編號及課程名稱\n”); while(!feof(fp))//計數(shù)?{ fscanf(fp,"%d%s%d%s\n",&s[i]、snum,s[i]、snam,&s[i]um,s[i]am);//讀取文件“student、txt” total++; ?i++; } t=i; for(i=0;i<t;i++)??printf("%5d%6s%7d%10s\n”,s[i]、snum,s[i]、snam,s[i]um,s[i]am);?printf(”\n選課學生總人數(shù)為:%d人",total);?fclose(fp);//關閉文件 menu();?return0;}測試數(shù)據(jù)及其結果分析(1)、主菜單界面(2)、錄入課程信息:(3)、瀏覽課程信息:(4)、查詢課程信息a、按照學分查詢:b、按照課程性質查詢:(5)、進入選課操作:(可以多次選擇)(6)、統(tǒng)計選課信息(7)退出選課系統(tǒng)(按0退出操作系統(tǒng))調試過程中得問題調試步驟先進入菜單函數(shù),選擇數(shù)字進行相應得操作,然后,先進入錄入函數(shù)階段,通過鍵盤輸入相應得課程信息,同時,創(chuàng)建一個“course、txt”文件,將輸入得課程信息保存在文件中.然后,進入瀏覽函數(shù)階段,先讀取課程文件中得課程信息,然后將信息顯示到屏幕上。接著,進入查詢函數(shù)階段,通過學分或者課程性質,查詢相應得課程信息。隨后,進入選課函數(shù)階段,通過輸入學號與姓名,進行選課操作,并創(chuàng)建一個“student、txt”文件,將選課信息保存其中。最后,進入統(tǒng)計函數(shù)階段,讀取選課文件中得信息,統(tǒng)計選課人數(shù),并將選課信息顯示在屏幕上.選擇序號0退出選課系統(tǒng).(2)發(fā)現(xiàn)得問題1、在用scanf函數(shù)給普通變量輸入數(shù)據(jù)時,在變量名前漏寫地址運算符&.如:scanf(“%d",count);同時,不能少掉上引號與分號。2、輸入數(shù)據(jù)時得數(shù)據(jù)形式與要求不符.用scanf函數(shù)輸入數(shù)據(jù)時,必須注意要與scanf語句中得對應形式匹配。如:scanf(“%d,%d”,&x,&y);輸入數(shù)據(jù)時,不能輸23,而就是應該用2,33、可以用scanf輸入一個字符串,如果要用它輸入多個字符串,輸入時,中間要用空格分開。如:scanf(“%s%s%s”,str1,str2,str3);輸入數(shù)據(jù)howareyou4、混淆“=”與“==”在C語言中,“=”就是賦值運算符,“==”就是關系運算符。如:if(i==1)不能寫成if(i=1)5、在不該出現(xiàn)分號得地方加了分號如:if(x>y);在if后面就是不用加分號得6、不能超過數(shù)組得最大值使用,在引用數(shù)組元素時,下標從0開始,即下標得下限就是0,而下標得上限值就是數(shù)組定義時元素個數(shù)減1.7、在switch語句得各分支中未使用break語句。如:switch(n){case1:luru();break;//錄入課程信息??case2:liulan();break;//瀏覽課程信息 case3:chaxun();break;//查詢課程信息? case4:xuanke();break;//進入選課操作 case5:tongji();break;//統(tǒng)計選課情況 }8、統(tǒng)計時

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論