C語言程序設計課程設計實習報告_第1頁
C語言程序設計課程設計實習報告_第2頁
C語言程序設計課程設計實習報告_第3頁
C語言程序設計課程設計實習報告_第4頁
C語言程序設計課程設計實習報告_第5頁
已閱讀5頁,還剩17頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、長江大學C語言程序設計課程設計實習報告題目:學生成績管理系統姓名:陳橋學院:計算機科學學院專業:教育技術學班級:教技11001學號:201003885指導教師:馬老師康老師2011年12月19日目錄設計目的二 課程設計摘要 2三 課程設計的任務與數據 3四 系統功能模塊 4五 詳細設計(各功能模塊的具體實現算法流程圖)5六 調試分析(包含各模塊的測試用例及測試結果)6七 總結、設計目的1. 進一步熟悉VC6.0的開發環境,掌握基本的編程方法,熟悉用 C語言完成一個應用程序的設計過程、掌握有關編輯和調試程序的方 法和技巧;2. 主要掌握C語言中的結果提、指針及文件操作等內容;3. 了解開發簡單應

2、用程序的全過程,包括:分析、設計、編程、調 試和編寫報告、課程設計摘要 第一步原始數據(建立兩個數據文件)1. 文件1用來存放學生成績2. 文件2用來存放課程學分第二步程序設計思想1. 定義兩個結構體數組用來存放文件1和文件2的內容。2. 編寫各個函數對應各個應實現的功能。3. 編寫第一個函數ReadDat1()讀取文件1 (jj110014.txt)讀取學生成績4. 編寫第二個函數ReadDat2()讀取文件2( jj01kc.txt)讀取課程學分5. 編寫第三個函數pj()計算各個同學的加權平均值6. 編寫第四個函數writecj()計算每個同學的名次,同時創建文本文件 ksMC11001

3、4.txt寫入數據,包括各個學生的學號、名次、姓名、各科成績、 加權平均值。7.編寫第五個函數kc()統計全班每門課程的平均分和標準差,并計算各分 數段(60分以下;6069; 7079; 8089; 90分以上的學生人數)。課程設計的計算公式為:式中:y為課程標準差,為為第i個學生成績,為本門課程的算術平均成績,N為學生數。創建txt文本文件kskcjj110014.txt寫入數據,包括課程編號、 課程名稱、課程學分、標準差、分數段人數統計。7編寫第六個函數cjt ( )打印每名學生的成績條,同時創建txt文本文件 kscjt110014.txt寫入成績條內容。8 編寫第七個函數bjg ()

4、屏幕顯示所有存在不及格課程的學生名單(含學號、 不及格課程名稱、課程的學分及成績)。9 編寫第八個函數yxiu ()屏幕顯示優等生名單(含學號、N門課成績、平 均分、名次)。三、程序設計的任務與數據1原始文件用記事本新建一文本文件,文件名為:“班名 +序號”,將本班的M名學 生在本學期的N門考試課的成績(要求用真實的課程名、假想的分數,并要求 將自己的學號假定為1,將自己的每門課的分數都定在90分以上,而將別人的每門課的分數都定在95分以下。)輸入到這個文件中,建議按如下形式存放(注:20 M 50 5 N :012 3 456 7 890 二訂 jT- QQ 4- i-O C- QQ T-

5、Ji iI ir-| 一I 1- T- Ji GSI 一168991g475587870836490g07580S56860g084g07760853087g086605g65070138576839000o O 3 O 00 47 8 7 7 7 68 20 86 7 7 6學號姓名英語C語言數學1我自己9693992張某7689893李某9196674王某755856jj110014.txt*7) jjnoQi-bw 本交件F如(El措式6 童看:V)薦駐的用記事本新建另一文本文件,文件名為:“班名+KC”,將本班本學期的 N門直實的課程名及其學分輸入到這個數據文件中,建議按如下列形式存放

6、:編號 課程名稱課程學分1 英語6.02 C語言4.5數學5.5jjO1kc.txt5 jjOlkc -文件(FJ 銅(巳福式Q號12 3 4 5學 O 5 5 o O 程.2 課設任務在主函數中讀入兩個原始數據文件的內容,保存在對應的結構體數組中,并 根據以上內容計算每個學生N門課的加權平均分(保留1位小數,4舍5入),并按平均分排列名次,平均分相同則名次并列。然后顯示菜單,利用菜單 調用各個函數,分別完成如下功能:1)用C語言創建一個數據文件,文件名為:“ MC+班號+序號”,如信計0901班的12號同學所建的文件名應為:“ MC1090221.txt”。用來存放班級排名

7、后的成績表,要求按以下形式存放。名次學號姓名英語C語言數學平均成績11我自己96939995.532張某76898980.543李某91966778.224王某75585688.855趙某58677768.52)分別統計全班每門課的平均分和標準差,并計算各分數 段(60分以下;6069; 7079; 8089; 90分以上) 的學生人數。一課程標準差的計算公式為:x式中:y為課程標準差,xi為第i個學生成績,為本門課程的算術平均成績,N為學生數。3)用C語言創建一個數據文件,文件名為:“ KC+班號+序號”, hx1090121.txt編號課程名稱課程學分標準差優秀良好中等及格不及格1英語6.

8、016.8310181532C語言4.511.715201383數學5.518.591219814)打印每名學生成績條,結果存放到用C語言創建的一個數據文件中,文件名 為:“ CJT+班號+序號”,CJT1090221.txt。成績條的格式自定。5)屏幕顯示所有存在不及格課程的學生的名單(含學號、不及格課程名稱、 課程的學分及成績)6)屏幕顯示優等生名單(含學號、N門課成績、平均分、名次) 優等生條件(只要滿足三個條件中的任意一個條件即可):a)平均分 92分b)名次在本班位于前五名99分c)平均分88分,并且至少有一門課的成績四、系統功能模塊模塊一:計 算加權平均 值,并排序rA模塊四:屏幕

9、顯 示所有存在不及 格課程的學生的 名單模塊二:統計全班每門課的 平均分和標準差,并計算各 分數段(60分以下;6069; 7079; 8089;90分以上)的學生人數。 創建一個數據文件,文件名為:kskcjj110014.txt模塊三:打印每 名學生成績條, 結果存放到用C 語言創建的一個 數據文件中,文 件名scjt110014.txt模塊五:屏幕顯 示優等生名單五、詳細設計(各功能模塊的具體實現算法一一流程圖)1.流程圖函數一函數二;諭取原始.屏幕詢出屮罵心件A#in elude #in elude struetstuint num;char name10;int seore5;flo

10、at ave;stu20;struct keche ngint num,count5; charkc name10; float xuefe n, ave;course5;void ReadDat1()int i,j;charstr1100;FILE *fp;if(fp=fope n( jj110014.txt,廣)=NULL) printf(Cannot openthe file1!n); exit(0);fgets(str1,100,fp);printf(%s,str1); for(i=0;i20;i+) fscanf(fp,%5d%s,&stui.num,); prin

11、tf(%2d %2s,stui.num,);for(j=0;j5;j+)fscanf(fp,%4d,&stui.scorej); printf(%6d,stui.scorej);printf(n);fclose(fp);void ReadDat2()FILE *fp;int k;char str2100;fp=fopen(jj01kc.txt,r); fgets(str2,100,fp);puts(str2); for(k=0;k5;k+) fscanf(fp,%d%s%f,&coursek.num,coursek.kcname,&coursek.xuefen); print

12、f(% -8d%-10s%fn,coursek.num,coursek.kcname,coursek.xuefen);fclose(fp);void pj()int i,j;float s=0,sum;for(i=0;i5;i+) s+=coursei.xuefen; for(i=0;i20;i+) sum=0; for(j=0;j5;j+) sum+=stui.scorej*coursej.xuefen;stui.ave=sum/s;void writecj()FILE *fp;int i,j,a20,k; for(i=0;i20;i+) k=1; for(j=0;j20;j+) if(st

13、ui.ave -stuj.ave0) k+;ai=k;if(fp=fopen(e:ksMC110014.txt,w)=NULL) printf(Faile to build a new file!n); exit(0);fprintf(fp,名次學號姓名英語C語言數學體育物理平均成績n); for(i=0;i20;i+) fprintf(fp,%3d%4d%7s,ai,stui.num,); for(j=0;j5;j+)fprintf(fp,%5d,stui.scorej); fprintf(fp,%8.2fn,stui.ave);fclose(fp);void kc()in

14、t i,j;float b5,sum5;FILE *fp;for(i=0;i5;i+)bi=0;for(j=0;j5;j+) sumj=0;for(i=0;i20;i+)sumj+=stui.scorej;for(j=0;j5;j+)for(i=0;i20;i+)bj+=(stui.scorej -sumj/20.0)*(stui.scorej -sumj/20.0);coursej.ave=(float)sqrt(double)bj/20.0);for(j=0;j5;j+)for(i=0;i5;i+)coursej.counti=0;for(j=0;j5;j+)for(i=0;i=90)co

15、ursej.count0+;elseif(stui.scorej=80)coursej.count1+;elseif(stui.scorej=70)coursej.count2+;elseif(stui.scorej=60)coursej.count3+;elsecoursej.count4+;if(fp=fopen(e:kskcjj110014.txt,w)=NULL)printf(Faile to build a new file!n);exit(0);fprintf(fp, 編號 課程名稱 課程學分 標準差 優秀 良好 中等 及格不及格n);for(i=0;i5;i+)fprintf(f

16、p,% -6d%-10s%-7.1f%5.1f,i+1,coursei.kcname,coursei.xuefen,coursei.ave);for(j=0;j5;j+)fprintf(fp,%5d,coursei.countj);fprintf(fp,n);fclose(fp);void cjt()int i,j,a20,k;float s=0,sum;FILE *fp;for(i=0;i5;i+)s+=coursei.xuefen;for(i=0;i20;i+)sum=0;for(j=0;j5;j+)sum+=stui.scorej*coursej.xuefen;stui.ave=sum/

17、s;for(i=0;i20;i+)k=1;for(j=0;j20;j+)if(stui.ave -stuj.ave0)k+;ai=k;if(fp=fopen(e:kscjt110014.txt,w)=NULL) printf(Faile to build a new file!n); exit(0);fprintf(fp,名次學號姓名英語C語言數學體育物理平均成績n);for(i=0;i20;i+)fprintf(fp,%3d%4d%7s,ai,stui.num,);for(j=0;j5;j+)fprintf(fp,%5d,stui.scorej);fprintf(fp,%6

18、.2fn,stui.ave);fprintf(fp,n);while(i!=19)fprintf(fp,名次學號姓名英語C語言數學體育物理平均成績n); break;fclose(fp);void bjg()int i,j;printf( 不及格課程學生名單 n);printf(學號 姓名 不及格課程名稱 課程學分 課程成績n); for(i=0;i20;i+)for(j=0;j5;j+)if(stui.scorej60)printf(% -5d,stui.num); printf(% -8s,);printf(%7s,coursej.kcname);printf(%11.1

19、f,coursej.xuefen); printf(%8dn,stui.scorej);printf(n);void yxiu()int i,j,k,a20,b20,c20;float s=0,sum;for(i=0;i5;i+)s+=coursei.xuefen;for(i=0;i20;i+)sum=0;for(j=0;j5;j+)sum+=stui.scorej*coursej.xuefen;stui.ave=sum/s;for(i=0;i20;i+)k=1;for(j=0;j20;j+)if(stui.ave -stuj.ave0)k+;ai=k;printf(優等生名單n);print

20、f(名次學號姓名英語C語言數學體育物理平均分n); for(i=0;i20;i+)bi=0;ci=0;for(j=0;j=92) bj+;for(i=0;i=88&stuj.scorei=99) cj+;for(i=0;i20;i+)if(ai=5|bi|ci)printf( %-5d,ai); printf(% -5d,stui.num); printf(% -6s,); for(j=0;j5;j+) printf(% -5d,stui.scorej);printf(% -7.2fn,stui.ave);printf(n);main()ReadDat1();ReadDat2

21、();pj();writecj();kc();cjt();bjg();yxiu();六、調試分析(包含各模塊的測試用例及測試結果) 源文件H2 4物9 80065042082080064067576978 8-6 77 679786 6文件 編輯 博c(a 童看m 澤和(巴W5 o9 8CO 5 3_7 cv to Ay- 788數學99896756SO?57080737073643070807060703080語G 61583055 0 47576803 6 0 英7-778978687888557 7號 ; 1O1234 5 672AJO 二-2?I GJ?/_ oo As tS 一I 一

22、I tI tItI JA 一1 tI運行結果課G語a6gG889g回6.0n6615833G_b047_bnT6OOB363V?79778978S9788955779亠寸FlilL t 壬趙錢孫魯楊周口宛白黃箜嚴葉劉餅稱名程吉旱理語育語 學-5.5 程459989體育9GS086738?文件鉀舊搐式Q)直看M命助(H12345672012345-73 U1- ir-l 1I iI 1- 一I iI 1- CN124936309567 6 848 9 1251 1 1 1 1 1 11111illisi9284709366平均分95.3203_7381.3483.4580.82%:語勺右3數 g

23、學9體9*5物9理2平;9769898084Sg1g4678670375s856335067370S07E?672367565657g0g070739037520S033e747556379032160g0706230184g07g70&81770648072685E0S0%0701E7勺0707468186 S0605080&2701b705g90657606S7667335703s34176023808g1u30S078英345005 9 3 554 5 30-5 5 702 7395240dJ456 5 702 9 078 均5. 3.1 .2,,.9.g,4

24、.S.2.,6.6Kskcjj110014.txt文忡希曰格式Q)章#M 禹麗絹號課程名稱課程學分標準差 優秀良好中等尺格不及格15 3 4 55 16 5 41 ,2.9.ao. IX - - 1X5 5 0 0 B 4-5241 英語45Kscjt110014.txtksCjtllOOW - icWX簾諛學號姓務英語C語言數學體肓物理平均成績1 1陳橋9&9399藥92 5.32名次學號姓蚩英語C語言數學體肓物理平均成績2 2張某7689392084 S3.73名次學號姓蚤英語C語言數學休育初理平均成績43李某9194672670 1.34名次學號姓五英語C語言數學體育物理平均成績194王臬7558588350 B2.95名次學號

溫馨提示

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

評論

0/150

提交評論