學生成績分布統(tǒng)計_第1頁
學生成績分布統(tǒng)計_第2頁
學生成績分布統(tǒng)計_第3頁
學生成績分布統(tǒng)計_第4頁
學生成績分布統(tǒng)計_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第第頁學生成績分布統(tǒng)計同學成果分布統(tǒng)計

一、課程設計時間

2022年第2學期第15周,即6月13日~6月17日,共計1周,20學時。

二、課程設計內容

用C語言編寫軟件完成以下任務:

用C語言編寫軟件模擬數字化成果管理,用戶界面中的菜單至少包括“讀取數據、”“按學號或姓名查詢、”“統(tǒng)計各分數段人數、”“退出”4項;

讀取數據:C語言其中考試成果保存在文件file29.te*t中,數據格式為:學號,姓名,成果;

按學號和姓名查詢:實現(xiàn)成果查詢

統(tǒng)計各分數段人數:分數段指不及格、及格、中等、良好、優(yōu)秀5種成果,能夠統(tǒng)計個分數段的人數。

沈陽航空航天高校設計用紙

目次

一、需求分析1

二、設計分析2

三、主要界面截圖7

四、技術要點8

五、個人總結11

六、

一、需求分析

依據任務書給定的“課程設計內容”和“課程設計要求”作如下的需求分析。

1、安全性分析

這個系統(tǒng)涉及到同學的信息比較大,其中包括同學的學號及同學的姓名。是一些比較隱私的信息。能夠實現(xiàn)許多同學信息的查詢。這里就涉及到同學信息的安全性問題,所以我這個程序要很好的把安全性做好。

2、穩(wěn)定性分析

這個系統(tǒng)涉及到的信息量比較大,假如操得步驟不正確。那么系統(tǒng)間就會不好用,整個程序就會功虧一簣,所以我們要保證操操作的正確性,整個程序才能正確穩(wěn)定的進行。

3、經過對程序的分析討論,可知這個程序有四個功能,讀取數據、按學號或姓名查詢、統(tǒng)計個分數段人數、退出等

4、讀取數據需要一個函數,我把它定義為“duqu”它要實現(xiàn)的是從電腦的磁盤中吧需要的數據讀取出來。

5、按學號和姓名的查詢,在這里我有需要一個查

詢函數,我定義它為“cha*un”,當輸入學號或姓名是要有結果。

6、統(tǒng)計各個分數段的人數,需要一個計數函數,她要用到我們所學的“switchcase”循環(huán)這里你要統(tǒng)計出不及格、及格、中、良好、優(yōu)秀的人數

二、設計分析

有分析可知。我所設計的這個程序有四部分組成,每一部分都采納了一個自定義函數來完成。也就是有三個自定義函數來完成它。最末是退出。

自定義函數duqu,他是的功能是從電腦的磁盤中讀取出來所需的數據

自定義函數cha*un是要是想查詢的功能,也就是說當輸入學號或姓名是能在知道他的成果

自定義函數all是進行人數統(tǒng)計的,也就是,不及格、及格、中、良好、優(yōu)秀的人數。

1、程序總體結構圖

2、N-S結構框圖

3、主要功能模塊框圖

〔1〕讀取同學信息

〔2〕同學成果查詢

圖2同學信息查詢

3〕統(tǒng)計同學成果

圖3

三、主要界面截圖

圖1

程序主界面及讀取界面

圖2成果查詢及統(tǒng)計界面

1、結構體的應用來描述同學的基本信息。詳細程序段

如下:

structstudent/*定義結構體*/

{charnum[10];

charname[20];

intscore;

}stud[ren];

2、文件的讀取

主要就是充分運用老師所給的數據,來完成我的整個程序,那么我是運用已有的函數來打開這個文件的。這個函數是fopen函數。它主要的功能就是從計算機中讀取數據。如下就是我的讀取文件的程序。在這里指針文件指向我用文件的地址,用來方便查找文件。文件是以只讀的形式打開的。

inti;

FILE*fp;/*定義一個變量指向FILE*/

fp=fopen(d:\\file29.t*t,r);/*以只讀的形式打開文件*/for(i=0;iren;i++)

{fscanf(fp,%s\t%s\t%d\n,stud[i].num,stud[i].name,stud[i].score);

printf(%s\t%s\t%d\n,stud[i].num,stud[i].name,stud[i].score);}fclose(fp)

3、成果的查詢

在這里主要的功能是實現(xiàn)對同學成果的查詢,在這里由兩種方法可以查詢成果,第一種通過數日同學的學號對成果的查詢,另一種方法是通過輸入同學的姓名對成果進行查詢。這兩種方法是獨立的,是不相互影響的,在這里我只要運用的是switch..case多分枝結構選擇的運用。那么下面就是我的程序,在這里可以實現(xiàn)對同學成果的學號查詢和姓名查詢。這樣也是程序更加的合理化,更加的簡約,明白。

{inti,flag=0,a;charb[100],*[20];

printf(請選擇:1.學號2.姓名\n);

scanf(%d,a);

switch(a)/*選擇語句*/

{case1:printf(輸入學號:\n);scanf(%s,*);

for(i=0;i25;i++)

if(strcmp(stud[i].num,*)==0)

{printf(分數:%d\n,stud[i].fen);

flag=1;

}

if(flag==0)printf(沒有此人!\n);break;

case2:printf(輸入姓名:\n);scanf(%s,b);

for(i=0;i25;i++)

if(strcmp(stud[i].name,b)==0)

{printf(%d\n,stud[i].fen);

flag=1;break;

}

if(flag==0)printf(沒有此人!\n);break;

}

4、成果的統(tǒng)計

我要統(tǒng)計該班級有多少人是優(yōu)秀,多少人是良好,多少人是中等,多少人及格,多少人不及格。這樣是班級的成果更加明白,但是這一步也是特別的麻煩,一不當心就會出錯,所以這部我選擇了比較保險的步驟,if.else結構。這樣我的程序就是順次向下執(zhí)行,假如成果符合大于90那么優(yōu)秀的人增加一個,否那么繼續(xù)向下執(zhí)行,知道判斷玩這個人在進行下一個人的判斷,直到最末涌現(xiàn)我要的結果。下面就是我的程序

inti,a=0,b=0,c=0,d=0,e=0;

for(i=0;i25;i++)

{if(stud[i].score=90)a++;

elseif(stud[i].score=80)b++;

elseif〔stud[i].score80)c++;

elseif(stud[i].score70)d++;

elseif(stud[i].score60)e++;

}

printf(=90優(yōu)秀的人數:\t%d\n90,=80良好的人數:

\t%d\n80,=70中等的人數:\t%d\n70,=60幾個的人數:\t%d\n60不及格的人數:\t%d\n,a,b,c,d,e);

這樣下來我的程序基本就完成了,整個過程我運用了最基本的c語言知識,其中包括for循環(huán),switchcase分支結構,ifelse選擇語句。

五、個人總結

通過這一周的C語言課程設計,我又進一步的學習了C語言知識,也學會了真正的去編寫一個實際應用的程序,真正的吧課堂學到的東西運用到現(xiàn)實生活中,雖然編程的過程很困難,很愁人,但是當我真的編寫出來、運行出來心里那份滿意感是無法用語言來形容的,說不出來,但是真的很快樂。當然在這個過程中我也遇到了許多的困難,有的也真是我自己解決不了的,在這里也費城感謝那些給我援助的老師同學。有了你們我的課設才會這么順當。

六、

七、源程序

#includestdio.h

#includestring.h

#includestdlib.h

#defineren25

structstudent/*定義結構體*/

{charnum[10];

charname[20];

intscore;

}stud[ren];

voidduqu()/*讀取函數*/

{inti;

FILE*fp;/*定義一個變量指向FILE*/

fp=fopen(d:\\file29.t*t,r);/*以只讀的形式打開文件*/for(i=0;iren;i++)

{fscanf(fp,%s\t%s\t%d\n,stud[i].num,stud[i].name,stud[i].score);printf(%s\t%s\t%d\n,stud[i].num,stud[i].name,stud[i].score);}fclose(fp);

}

voidcha*un()/*查詢函數*/

{inti,flag=0,a;charb[100],*[20];

printf(請選擇:1.同學學號2.同學姓名\n);

scanf(%d,a);

switch(a)/*選擇語句*/

{case1:printf(輸入同學學號:\n);scanf(%s,*);

for(i=0;i25;i++)

if(strcmp(stud[i].num,*)==0)

{printf(分數:%d\n,stud[i].score);

flag=1;

}

if(flag==0)printf(查詢沒有此人!\n);break;

case2:printf(輸入同學姓名:\n);scanf(%s,b);

for(i=0;i25;i++)

if(strcmp(stud[i].name,b)==0)

{printf(%d\n,stud[i].score);

flag=1;break;

}

if(flag==0)printf(查詢沒有此人!\n);break;

}

}

voidall()/*統(tǒng)計函數*/

{inti,a=0,b=0,c=0,d=0,e=0;

for(i=0;i25;i++)

{if(stud[i].score=90)a++;

elseif(stud[i].score=80)b++;

elseif(stud[i].score80)c++;

elseif(stud[i].score70)d++;

elseif(stud[i].score60)e++;

}

printf(=90優(yōu)秀的人數:\t%d\n90,=80良好的人數:\t%d\n80,=70中等的人數:\t%d\n70,=60幾個的人數:\t%d\n60不及格的人數:\t%d\n,a,b,c,d,e);

}

voidmain()/*主函數*/

{printf(************************************************\n);printf(******歡迎您進入同學成果分布系******\n);printf(*******1:讀取數據*******\n);printf(******2:按學號或姓名查詢成果******\n);printf(******3:統(tǒng)計各分數段人數******\n);printf(4:退出系統(tǒng)\n);

printf(************************************************\n);while(1)

{intch;

printf(輸入你的選擇:\n);

scanf(%d,ch);

switch(ch)/*選擇語句*/{case1:duqu();break;

case2:cha*un();break;

case3:all();break;

case4:e*it(0);break;

default:printf(錯誤,請按任意鍵繼續(xù)!\n);break;}

}

}

同學成

溫馨提示

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

最新文檔

評論

0/150

提交評論