c語言實習(xí)報告-xiaoli_第1頁
c語言實習(xí)報告-xiaoli_第2頁
c語言實習(xí)報告-xiaoli_第3頁
c語言實習(xí)報告-xiaoli_第4頁
c語言實習(xí)報告-xiaoli_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

目錄9.1題目要求………039.2需求分析………039.3總體設(shè)計………039.4詳細設(shè)計………049.4.1主函數(shù)…………………059.4.2各功能模塊設(shè)計………069.5上機操作………149.5.1數(shù)據(jù)源…………………149.5.2編譯、鏈接、運行……149.5.3運行結(jié)果………………149.6總結(jié)……………199.7參考文獻………199.8附錄……………199.1題目要求假定有n門課程,每門課程有課程編號、課程名稱、課程性質(zhì)、總學(xué)時、授課學(xué)時、學(xué)分、開課學(xué)期等信息,學(xué)生可按要求(如總學(xué)分不得少于60)自由選課。試設(shè)計一個選修課程系統(tǒng),使之能提供以下功能:系統(tǒng)以菜單方式工作。課程信息和學(xué)生選課信息錄入功能(課程信息用文件保存)——輸入。課程信息瀏覽功能——輸出。查詢功能(至少一種查詢方法)——算法。按學(xué)分查詢。某門課程學(xué)生選修情況(可選項)。9.2需求分析根據(jù)題目要求,由于課程信息是用文件保存,所以應(yīng)該提供文件的輸入、輸出等操作;在程序中需要提供課程信息錄入、課程信息瀏覽、課程信息查詢、學(xué)生選課、查看某門課程選課信息等功能操作;另外還應(yīng)提供鍵盤式選擇菜單實現(xiàn)功能選擇。9.3總體設(shè)計根據(jù)上面的需求分析,可以將這個系統(tǒng)的設(shè)計分為課程信息錄入、課程信息瀏覽、課程信息查詢、學(xué)生選課、查看某門課程選課信息等五個模塊,如圖1所示。圖9-19.4詳細設(shè)計9.4.1主函數(shù)[分析]主函數(shù)一般設(shè)計的比較簡潔,只提供輸入、處理和輸出部分的函數(shù)調(diào)用。其中各功能模塊如圖所示。其中各功能用菜單方式選擇。其流程圖如圖2所示。將main()函數(shù)內(nèi)的界面選擇部分語句單獨抽出作為一個獨立函數(shù)。其流程圖如圖9-2所示。YY開始顯示一系列功能選項輸入n,判斷n是否為0-5?根據(jù)n的值調(diào)用功能模塊函數(shù)結(jié)束N圖9-2主函數(shù)流程圖[程序]voidmenu(){intn,w=0;/*變量n保存選擇菜單數(shù)字,w判斷輸入的數(shù)字是否在功能菜單對應(yīng)數(shù)字范圍內(nèi)*/printf("********************************************************************************\n");printf("MENU\n");printf("********************************************************************************\n");printf("1-輸入課程信息\n");printf("2-瀏覽課程信息\n");printf("3-查詢課程信息\n");printf("4-某門選課情況\n");printf("5-進入選課操作\n");printf("0-退出選課系統(tǒng)\n");printf("********************************************************************************\n");printf("請選擇輸入<0~5>:");scanf("%d",&n);do/*對選擇的數(shù)字做判斷*/{ if(n>5||n<0) { printf("\n輸入錯誤!請重新輸入!\n"); scanf("%d",&n);/*重新輸入n*/ } elsew=1;}while(w==0);switch(n){case1:insert();break;/*課程信息錄入模塊*/case2:browser();break;/*課程信息瀏覽模塊*/case3:search();break;/*課程信息查詢模塊*/case4:xuanke_information();break;/*某門選課信息查詢模塊*/case5:xuan_ke();break;/*學(xué)生選課模塊*/case0:exit(0);/*退出*/}}/**********************主函數(shù)**********************/voidmain(){menu();/*菜單*/}9.4.2各功能模塊設(shè)計(1)課程信息錄入模塊[數(shù)據(jù)結(jié)構(gòu)]structcourse{ intnum;/*課程編號*/ charname[20];/*課程名稱*/ charkind[10];/*課程性質(zhì)*/ inttime;/*總時間*/ intttime;/*授課時間*/ intetime;/*實驗或上機時間*/ intmark;/*學(xué)分*/ intterm;/*學(xué)期*/};[分析]將課程信息用結(jié)構(gòu)體存放,課程信息錄入模塊如圖9-3所示。開始開始輸入課程門數(shù)輸入課程信息,將課程信息錄入文件中返回主菜單結(jié)束圖9-3課程信息錄入流程圖[程序]/***********************課程信息錄入模塊***********************/voidinsert(){ FILE*fp; structcoursec; intcount; inti; if((fp=fopen("course.txt","a+"))==NULL)/*以可加方式打開*/ { printf("cannotopenfile\n"); } printf("\n請輸入課程門數(shù):"); scanf("%d",&count);/*輸入課程門數(shù)*/ printf("\n課程編號課程名稱課程性質(zhì)總學(xué)時授課學(xué)時實驗或上機學(xué)時學(xué)分開課學(xué)期:\n"); for(i=0;i<count;i++)/*從0到count向文件輸入課程信息*/ { scanf("%d%s%s%d%d%d%d%d",&c.num,&,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark,&c.term); fprintf(fp,"%d%s%s%d%d%d%d%d\n",c.num,,c.kind,c.time,c.ttime,c.etime,c.mark,c.term);/*將課程信息寫入文件*/ } fclose(fp);/*關(guān)閉文件*/ menu();/*返回主菜單*/}(2)課程信息瀏覽模塊[需求分析]將課程信息從course文件中從頭到尾讀出就可以,具體過程如流程圖9-4所示。221開始從文件中讀出課程信息用戶自己進行選擇返回主菜單退出選課系統(tǒng)結(jié)束圖9-4課程信息瀏覽流程圖[程序]/***********************課程信息瀏覽模塊************************/voidbrowser(){ FILE*fp; structcoursec;/*將c定義為structcourse類型的結(jié)構(gòu)體變量*/ inta; if((fp=fopen("course.txt","r"))==NULL)/*以讀方式打開*/ { printf("\nCannotopencourse!\n"); } printf("\n課程目錄為:"); printf("\n課程編號課程名稱課程性質(zhì)總學(xué)時授課學(xué)時實驗或上機學(xué)時學(xué)分開課學(xué)期:\n"); for(;!feof(fp);)/*從文件讀取課程信息*/ { fscanf(fp,"%d%s%s%d%d%d%d%d\n",&c.num,&,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark,&c.term); printf("%5d%12s%9s%9d%9d%11d%11d%11d\n",c.num,,c.kind,c.time,c.ttime,c.etime,c.mark,c.term); } fclose(fp); printf("\n1-返回主菜單;2-退出選課系統(tǒng)\n"); scanf("%d",&a); if(a==1) menu();/*返回主菜單*/ else exit(0);/*退出*/}(3)課程信息查詢[需求分析]具體過程參見流程圖9-5所示。22211開始請用戶選擇按學(xué)分查詢,輸入所查學(xué)分按課程性質(zhì)查詢,輸入課程性質(zhì)從文件讀取課程信息并輸出從文件讀取課程信息并輸出用戶選擇返回主菜單退出系統(tǒng)結(jié)束圖9-5課程信息查詢流程圖[程序]/***********************課程信息查詢模塊***********************/voidsearch(){ FILE*fp; structcoursec;/*將c定義為structcourse類型的結(jié)構(gòu)體變量*/ intscore;/*定義學(xué)分為整型變量*/ charkind[10];/*定義課程性質(zhì)的數(shù)組*/ inta; intb; printf("\n1.按學(xué)分查詢,2.按課程性質(zhì)查詢.\n"); printf("請選擇查詢方式,輸入選項數(shù)字:"); scanf("%d",&b);/*輸入所選查詢方式*/ if(b==1) { printf("\n請輸入您要查詢的學(xué)分:"); scanf("%d",&score); if((fp=fopen("course.txt","r"))==NULL)/*將文件以讀方式打開*/ { printf("\nCannotopencourse!\n"); } printf("\n課程編號課程名稱課程性質(zhì)總學(xué)時授課學(xué)時實驗或上機學(xué)時學(xué)分開課學(xué)期:\n"); for(;!feof(fp);)/*將文件從頭到尾讀取*/ { fscanf(fp,"%d%s%s%d%d%d%d%d\n",&c.num,&,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark,&c.term); if(c.mark==score)/*如果課程信息學(xué)分和所選學(xué)分相等*/ printf("%5d%12s%9s%9d%9d%11d%11d%11d\n",c.num,,c.kind,c.time,c.ttime,c.etime,c.mark,c.term);/*輸出課程信息*/ } } elseif(b==2) { printf("\n請輸入您要查詢的課程性質(zhì):"); scanf("%s",&kind);if((fp=fopen("course.txt","r"))==NULL) { printf("\nCannotopencourse!\n"); } printf("\n課程編號課程名稱課程性質(zhì)總學(xué)時授課學(xué)時實驗或上機學(xué)時學(xué)分開課學(xué)期:\n"); for(;!feof(fp);) { fscanf(fp,"%d%s%s%d%d%d%d%d\n",&c.num,&,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark,&c.term); if(strcmp(c.kind,kind)==0) printf("%5d%12s%9s%9d%9d%11d%11d%11d\n",c.num,,c.kind,c.time,c.ttime,c.etime,c.mark,c.term); } } else { printf("輸入錯誤!"); exit(0); } fclose(fp);/*關(guān)閉文件*/ printf("\n1-返回主菜單;2-退出選課系統(tǒng)\n"); scanf("%d",&a); if(a==1) menu(); else exit(0);}(4)某門選課情況查詢模塊[需求分析]具體情況參看流程圖9-6所示。221開始輸入要查詢的選課編號從文件讀取所查編號的學(xué)生選課信息,每輸出一個total+1顯示該門選課的總?cè)藬?shù)用戶選擇返回主菜單退出系統(tǒng)結(jié)束圖9-6某門選課情況查詢流程圖[程序]/***********************某門課程選修情況模塊***********************/voidxuanke_information(){ inttotal=0;/*定義選課人數(shù)total的初始值為0*/ inta; intnum;/*定義課程編號為整形變量*/ FILE*fp; structstudents;/*將s定義為structstudent類型的變量*/ if((fp=fopen("student.txt","r"))==NULL) { printf("\nCannotopenstudent!\n"); } printf("\n請輸入您欲查詢的選課編號:");scanf("%d",&num); printf("\n學(xué)號課程編號課程名稱\n"); for(;!feof(fp);) { fscanf(fp,"%d%d%s\n",&s.snum,&um,&ame); if(um==num) { total++; printf("%7d%9d%13s\n",s.snum,um,ame); } } printf("\n選課學(xué)生總?cè)藬?shù)為:%d人",total); fclose(fp); printf("\n1-返回主菜單;2-退出選課系統(tǒng)\n"); scanf("%d",&a); if(a==1) menu(); else exit(0);}(5)學(xué)生選修模塊[需求分析]具體情況參見流程圖9-7所示。221開始結(jié)束輸入學(xué)號和課程編號讀取課程信息,當(dāng)學(xué)生所選編號與課程編號相符,停止將學(xué)生選課信息錄入學(xué)生文件中提示“選課成功”用戶選擇返回主菜單退出系統(tǒng)圖9-7學(xué)生選修流程圖[程序]/***********************學(xué)生選修課程模塊***********************/voidxuan_ke(){structstudents; structcoursec; inta; FILE*fp; printf("\n請輸入您的學(xué)號及您要選擇的課程編號:"); scanf("%d%d",&s.snum,&um); if((fp=fopen("course.txt","r"))==NULL) { printf("\nCannotopencourse!\n"); } for(;!feof(fp);) { fscanf(fp,"%d%s%s%d%d%d%d%d\n",&c.num,&,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark,&c.term); if(um==c.num)/*如果學(xué)生所選編號與課程編號相符*/ break; } fclose(fp); if((fp=fopen("student.txt","a+"))==NULL) { printf("\nCannotopenstudent!\n"); } fprintf(fp,"%d%d%s\n",s.snum,um,);/*從學(xué)生s文件輸出學(xué)生信息,包括學(xué)號,學(xué)生選課編號,課程名稱*/ fclose(fp); printf("您選課已成功!"); printf("\n1-返回主菜單;2-退出選課系統(tǒng)\n"); scanf("%d",&a); if(a==1) menu(); else exit(0);}9.5上機操作9.5.1數(shù)據(jù)源根據(jù)前面所列的數(shù)據(jù)輸入形式,輸入必要數(shù)據(jù)課程信息和學(xué)生信息。9.5.2編譯、鏈接和運行。在完成程序編譯后,點擊組建按鈕,然后點擊“!”運行程序。9.5.3運行結(jié)果。(1)主菜單函數(shù):進入程序,效果如圖5-8所示。圖5-8主函數(shù)模塊(2)課程信息錄入模塊在主界面出現(xiàn)后輸入1并按【Enter】鍵,結(jié)果如圖5-9所示。圖5-9課程信息錄入模塊輸入要錄入的課程信息,然后按【Enter】鍵,回到主界面,如圖5-10所示。圖5-10課程信息錄入模塊(3)課程信息瀏覽模塊瀏覽課程信息,如圖5-11所示。圖5-11課程信息瀏覽模塊(4)課程信息查詢模塊首先進入信息查詢界面,如圖5-12所示:圖5-12

溫馨提示

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

最新文檔

評論

0/150

提交評論