版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計(jì)</b></p><p><b> 課程設(shè)計(jì)任務(wù)書</b></p><p> 院系:自動(dòng) 專業(yè):自動(dòng) 班級(jí): 202</p><p> 學(xué)號(hào): 題目:學(xué)生成績管理1</p><p><b> 一、課程設(shè)計(jì)時(shí)間</b&
2、gt;</p><p> 2011~12第1學(xué)期第4周,共計(jì)1周,20學(xué)時(shí)。</p><p><b> 二、課程設(shè)計(jì)內(nèi)容</b></p><p> 用C語言編寫軟件完成以下任務(wù):</p><p> 一個(gè)文本文件(file15.txt,由指導(dǎo)教師提供)存儲(chǔ)了若干位同學(xué)的數(shù)學(xué)成績,文件中每行的內(nèi)容按照順序?yàn)椋簩W(xué)號(hào),班
3、級(jí),數(shù)學(xué)成績,姓名。請完成以下問題:</p><p> 1 將文件中的內(nèi)容全部顯示到窗體,并統(tǒng)計(jì)總?cè)藬?shù);</p><p> 2 統(tǒng)計(jì)數(shù)學(xué)成績的平均分;</p><p> 3 統(tǒng)計(jì)各個(gè)班級(jí)的平均分。</p><p><b> 三、課程設(shè)計(jì)要求</b></p><p><b> 1
4、. 程序質(zhì)量:</b></p><p> 貫徹結(jié)構(gòu)化的程序設(shè)計(jì)思想。</p><p> 用戶界面友好,功能明確,操作方便。</p><p> 用戶界面中的菜單至少應(yīng)包括“打印全部,并統(tǒng)計(jì)總?cè)藬?shù)”、“計(jì)算總平均分”、“計(jì)算各個(gè)班的平均分”、“退出”4項(xiàng)。</p><p> 代碼應(yīng)適當(dāng)縮進(jìn),并給出必要的注釋,以增強(qiáng)程序的可讀性
5、。</p><p> 2. 課程設(shè)計(jì)說明書:</p><p> 課程結(jié)束后,上交課程設(shè)計(jì)說明書和源程序。課程設(shè)計(jì)說明書的格式和內(nèi)容參見提供的模板。</p><p> 四、指導(dǎo)教師和學(xué)生簽字</p><p> 指導(dǎo)教師:________ 學(xué)生簽名:________</p><p><b> 五、說
6、明書成績</b></p><p><b> 六、教師評(píng)語</b></p><p><b> 目錄</b></p><p><b> 一、需求分析1</b></p><p><b> 二、設(shè)計(jì)分析1</b></p>&l
7、t;p> 三、主要界面截圖1</p><p><b> 四、技術(shù)要點(diǎn)5</b></p><p><b> 五、個(gè)人總結(jié)9</b></p><p><b> 六、參考文獻(xiàn)10</b></p><p><b> 七、源程序11</b>
8、</p><p><b> 需求分析</b></p><p> 通過分析可知,此程序是對表格的信息的統(tǒng)計(jì)。很明顯程序可分為三個(gè)部分:即打印并統(tǒng)計(jì)數(shù)據(jù),計(jì)算總平均分,計(jì)算各個(gè)平均分。在此只須構(gòu)件若干個(gè)函數(shù)進(jìn)行編程設(shè)計(jì)。</p><p><b> 二、設(shè)計(jì)分析</b></p><p><b&
9、gt; 1、程序總體結(jié)構(gòu)圖</b></p><p><b> 圖1程序總體結(jié)構(gòu)圖</b></p><p> 2.具體功能函數(shù)流程圖 </p><p> 讀取學(xué)生數(shù)據(jù)reads</p><p> 圖2. 讀取學(xué)生數(shù)據(jù)</p><p> (2)顯示所有學(xué)生信息show</
10、p><p> 圖3. 顯示所有學(xué)生信息</p><p> (3).計(jì)算總平均分average</p><p><b> 圖4.計(jì)算總平均分</b></p><p> (4).各班平均分aver</p><p><b> 圖5.各班平均分</b></p>&
11、lt;p><b> 主要界面截圖</b></p><p><b> 程序主界面截圖</b></p><p><b> 技術(shù)要點(diǎn)</b></p><p> 本程序有主函數(shù)和三個(gè)自定義的函數(shù)組成即main和show,average,aver。這些是整個(gè)程序中最核心的部分,以下便是對這些函數(shù)的
12、說明;</p><p><b> 1.定義函數(shù)</b></p><p> 首先要知道讀取數(shù)據(jù)的文件,定義一個(gè)文件指針,把所需的數(shù)據(jù)讀入到程序中,同時(shí)定義一個(gè)l,每讀入一個(gè),l 加一來統(tǒng)計(jì)學(xué)生數(shù)目;具體程序如下:</p><p> #include<stdio.h></p><p> #include&
13、lt;string.h></p><p> #include"stdlib.h"</p><p> #define N 40</p><p> struct student</p><p> {char num[20];</p><p> char cla[10];</p>
14、;<p> int math;</p><p> char name[10];</p><p><b> };</b></p><p> void menu();</p><p> void show();</p><p> void average();</p&
15、gt;<p> void aver();</p><p> void main()</p><p><b> {</b></p><p><b> int n;</b></p><p><b> while(1)</b></p><p
16、><b> { </b></p><p><b> menu();</b></p><p> printf("\n 請輸入您要選擇的操作序號(hào),按回車鍵確認(rèn):");</p><p> scanf("%d",&n);</p><p><
17、b> switch(n)</b></p><p> {case 1: show();break;</p><p> case 2: average();break;</p><p> case 3: aver();break;</p><p> case 4: exit(0);break;</p>&
18、lt;p> default: printf("輸入錯(cuò)誤,請輸入列表中存在的序號(hào)!\n ");</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void me
19、nu()</p><p> {printf("**************** 數(shù)據(jù)統(tǒng)計(jì) *****************");</p><p> printf("\n 1 打印全部,并統(tǒng)計(jì)人數(shù)");</p><p> printf(" 2 計(jì)算總平均分");<
20、/p><p> printf("\n 3 計(jì)算各個(gè)班平均分");</p><p> printf("\n 4 退出");</p><p><b> }</b></p><p> void reads(struct student stu[N],int
21、 *n)</p><p><b> {</b></p><p><b> FILE *fp;</b></p><p><b> int i=0;</b></p><p> if((fp=fopen("d:\\file15.txt","r&q
22、uot;))==NULL)</p><p> { printf("文件打開失??!\n");</p><p><b> return;</b></p><p><b> }</b></p><p><b> else</b></p>&l
23、t;p><b> {</b></p><p> for(i=0;!feof(fp);i++)</p><p> fscanf(fp,"%s%s%d%s",stu[i].num,stu[i].cla,&stu[i].math,&stu[i].name);</p><p><b> }&l
24、t;/b></p><p><b> *n=i;</b></p><p> fclose(fp);</p><p><b> }</b></p><p> void show()</p><p> {struct student stu[N];</p&g
25、t;<p><b> int i,n;</b></p><p> reads(stu,&n);/*從文件中讀出所有學(xué)生信息*/</p><p> printf(" *****************所有的學(xué)生信息如下*****************");</p><p> for(i
26、=0;i<n;i++)</p><p> printf("\n%s %s %d %s\n",stu[i].num,stu[i].cla,stu[i].math,stu[i].name);</p><p> printf("\n");</p><p> printf(" 總?cè)藬?shù)為: ");<
27、;/p><p> printf("%d\n",n);</p><p> printf("\n\n");</p><p><b> }</b></p><p><b> 2.計(jì)算總平均分</b></p><p> 求全部同學(xué)的數(shù)學(xué)平
28、均分,只需將所有同學(xué)的成績相加,然后除以總?cè)藬?shù),從而得到總平均分?jǐn)?shù)。</p><p> 在此需對單獨(dú)的模塊進(jìn)行引入,再.定義文件指針,打開讀入數(shù)據(jù)。</p><p> void average()</p><p><b> { </b></p><p> struct student stu[N];</p&
29、gt;<p> int i,n, average,temp=0;</p><p> reads(stu,&n);</p><p> for(i=0;i<n-1;i++)</p><p> temp=temp+stu[i].math;</p><p> average=temp/(n-1);</p&g
30、t;<p> printf("\n");</p><p> printf(" 總平均分為: ");</p><p> printf("%d\n",average);</p><p> printf("\n\n");</p><p><
31、b> }</b></p><p><b> 3.計(jì)算各班平均分</b></p><p> 把結(jié)構(gòu)體中的班級(jí)按從大到小排序,然后取第一個(gè)與后面的比較,當(dāng)與第一個(gè)不同是取出,它與后面的繼續(xù)比較,依次下去,即可的班級(jí)和人數(shù)。計(jì)算各班平均分是用這些跟結(jié)構(gòu)體中的班級(jí)比較,相同的數(shù)學(xué)成績相加,最后除以各班人數(shù)即可得到。</p><p&g
32、t;<b> 具體程序如下:</b></p><p> void aver()</p><p><b> {</b></p><p> struct student stu[N];</p><p> char ban[N][10];</p><p> int av
33、a[N],ren[N],m=0,i,j,n;</p><p> reads(stu,&n);</p><p> strcpy(ban[0],stu[0].cla);</p><p><b> ren[0]=1;</b></p><p> ava[0]=stu[0].math;</p>&l
34、t;p><b> i=n-1;</b></p><p> while(i>0)</p><p> {for(int j=0;j<=m;j++)</p><p> {if(strcmp(ban[j],stu[i].cla)==0)</p><p><b> {</b&
35、gt;</p><p> ava[j]+=stu[i].math;</p><p> ren[j]++; </p><p> i--; </p><p> break; </p><p><b>
36、}</b></p><p><b> else</b></p><p><b> if(j!=m)</b></p><p><b> continue;</b></p><p> else </p><
37、p> {m++; </p><p> strcpy(ban[m],stu[i].cla);</p><p> ren[m]=1; </p><p> ava[m]=stu[i].math; </p><p><b>
38、; i--; </b></p><p> break; </p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p>
39、 for(i=0;i<=m;i++)</p><p> { printf("班級(jí)%s 平均分%d\n",ban[i],ava[i]/ren[i]);</p><p><b> }</b></p><p><b> 五、個(gè)人總結(jié)</b></p><p> 在這幾天的課
40、程設(shè)計(jì)過程中,我學(xué)到了一些編寫大程序的基本步驟.課設(shè)之后我深深的感覺:上學(xué)期學(xué)習(xí)的C語言課,雖然學(xué)到很多東西,但是要編寫一個(gè)長程序,自己腦海中的思路不清晰,其中最主要的主干就明確不下來!我認(rèn)為那是自己沒有更好的理解和應(yīng)用C語言的一些語句。在幾天的課設(shè)中,經(jīng)過自己的努力,我學(xué)習(xí)并認(rèn)識(shí)到:首先,一個(gè)程序必須有一個(gè)明確的程序主干和清晰的編程思路,具體下來就是一個(gè)大的程序是由各種小程序組成,最后用菜單函數(shù)把它組成一個(gè)整體,也就實(shí)現(xiàn)了所想要的各個(gè)
41、功能。此外,在編程的過程中每一個(gè)細(xì)節(jié)都得做好,有時(shí)候一個(gè)標(biāo)點(diǎn)或是一個(gè)字母都會(huì)影響程序的正常運(yùn)行。我從中感悟做任何事情都要把最基本知識(shí)學(xué)扎實(shí),要思路縝密,細(xì)心些,這樣在以后的學(xué)習(xí)中才會(huì)有所的收獲。</p><p> 總結(jié):在完成一個(gè)大程序過程中要明確思路,找出主干。中心思想明確之后,就要耐心的思考·分析問題,踏踏實(shí)實(shí)的完成每一步的程序(結(jié)構(gòu)體.文件.函數(shù)調(diào)用),雖然大程序是非常復(fù)雜的,只要我們將事情簡單
42、化,分成每一個(gè)小部分,這樣耐心的去做,到最后就會(huì)得到滿意的大程序!</p><p> 當(dāng)看到自己編寫的程序正常準(zhǔn)確運(yùn)行的時(shí)候,心里有種滿足感,成就感!很開心!同時(shí)也要感謝老師和同學(xué)的幫助!</p><p><b> 六、參考文獻(xiàn)</b></p><p> 1 譚浩強(qiáng).C程序設(shè)計(jì).北京:清華大學(xué)出版社,2005</p><
43、;p><b> 七、源程序</b></p><p> #include<stdio.h></p><p> #include<string.h></p><p> #include"stdlib.h"</p><p> #define N 40</p>
44、;<p> struct student</p><p> {char num[20];</p><p> char cla[10];</p><p> int math;</p><p> char name[10];</p><p><b> };</b></
45、p><p> void menu();</p><p> void show();</p><p> void average();</p><p> void aver();</p><p> void main()</p><p><b> {</b></
46、p><p><b> int n;</b></p><p><b> while(1)</b></p><p><b> { </b></p><p><b> menu();</b></p><p> printf(&quo
47、t;\n 請輸入您要選擇的操作序號(hào),按回車鍵確認(rèn):");</p><p> scanf("%d",&n);</p><p><b> switch(n)</b></p><p> {case 1: show();break;</p><p> case 2: average(
48、);break;</p><p> case 3: aver();break;</p><p> case 4: exit(0);break;</p><p> default: printf("輸入錯(cuò)誤,請輸入列表中存在的序號(hào)!\n ");</p><p><b> }</b></p
49、><p><b> }</b></p><p><b> }</b></p><p> void menu()</p><p> {printf("**************** 數(shù)據(jù)統(tǒng)計(jì) *****************");</p><p>
50、 printf("\n 1 打印全部,并統(tǒng)計(jì)人數(shù)");</p><p> printf(" 2 計(jì)算總平均分");</p><p> printf("\n 3 計(jì)算各個(gè)班平均分");</p><p> printf("\n 4 退出
51、");</p><p><b> }</b></p><p> void reads(struct student stu[N],int *n)</p><p><b> {</b></p><p><b> FILE *fp;</b></p>
52、<p><b> int i=0;</b></p><p> if((fp=fopen("d:\\file15.txt","r"))==NULL)</p><p> { printf("文件打開失?。n");</p><p><b> return;<
53、;/b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> for(i=0;!feof(fp);i++)</p><p> fscanf(fp,&qu
54、ot;%s%s%d%s",stu[i].num,stu[i].cla,&stu[i].math,&stu[i].name);</p><p><b> }</b></p><p><b> *n=i;</b></p><p> fclose(fp);</p><p>
55、<b> }</b></p><p> void show()</p><p> {struct student stu[N];</p><p><b> int i,n;</b></p><p> reads(stu,&n);/*從文件中讀出所有學(xué)生信息*/</p>
56、<p> printf(" *****************所有的學(xué)生信息如下*****************");</p><p> for(i=0;i<n;i++)</p><p> printf("\n%s %s %d %s\n",stu[i].num,stu[i].cla,stu[i].math,stu[
57、i].name);</p><p> printf("\n");</p><p> printf(" 總?cè)藬?shù)為: ");</p><p> printf("%d\n",n);</p><p> printf("\n\n");</p><
58、;p><b> }</b></p><p> void average()</p><p><b> {</b></p><p> struct student stu[N];</p><p> int i,n,average,temp=0;</p><p>
59、 reads(stu,&n);</p><p> for(i=0;i<n-1;i++)</p><p> temp=temp+stu[i].math;</p><p> average=temp/(n-1);</p><p> printf("\n");</p><p>
60、printf(" 總平均分為: ");</p><p> printf("%d\n",average);</p><p> printf("\n\n");</p><p><b> }</b></p><p> void aver()</p>
61、;<p><b> {</b></p><p> struct student stu[N];</p><p> char ban[N][10];</p><p> int ava[N],ren[N],m=0,i,j,n;</p><p> reads(stu,&n);</p>
62、<p> strcpy(ban[0],stu[0].cla);</p><p><b> ren[0]=1;</b></p><p> ava[0]=stu[0].math;</p><p><b> i=n-1;</b></p><p> while(i>0)&l
63、t;/p><p><b> {</b></p><p> for(int j=0;j<=m;j++)</p><p><b> {</b></p><p> if(strcmp(ban[j],stu[i].cla)==0)</p><p><b>
64、{</b></p><p> ava[j]+=stu[i].math;</p><p> ren[j]++; </p><p> i--; </p><p> break; </p><p>
65、<b> }</b></p><p><b> else</b></p><p><b> if(j!=m)</b></p><p><b> continue;</b></p><p> else </
66、p><p><b> {</b></p><p> m++; </p><p> strcpy(ban[m],stu[i].cla);</p><p> ren[m]=1; </p><p> av
67、a[m]=stu[i].math; </p><p><b> i--; </b></p><p> break; </p><p><b> }</b></p><p><b> }</b></p>
68、<p><b> }</b></p><p> for(i=0;i<=m;i++)</p><p><b> { </b></p><p> printf("班級(jí)%s 平均分%d\n",ban[i],ava[i]/ren[i]);</p><p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計(jì)--學(xué)生成績管理
- c語言課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)1
- c語言課程設(shè)計(jì)--- 學(xué)生成績管理
- c語言課程設(shè)計(jì)--學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)---學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)----學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)-學(xué)生成績統(tǒng)計(jì)管理
- c語言課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)--c語言課程設(shè)計(jì)
- c語言課程設(shè)計(jì)--學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)--學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)---學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)———學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)學(xué)生成績管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論