




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、廣州航海學院課程(C語言)設計任務書設計人曾雨祥專業(yè)計應班級171學號36設計項目學生試卷分數(shù)統(tǒng)計指導教師張翚一、設計內容與要求1、設計內容學生試卷分數(shù)統(tǒng)計:1) 表單設計需與題設保持一致;2) 要求漢字界面,比較美觀,提示信息準確漢化,所有功能可以反復使用。數(shù)據(jù)類型至少要用到函數(shù)、結構體和數(shù)組;*參考“C程序設計(第四版)補充材料和實驗_譚浩強”文件中的相應案例(Pdf文檔中208頁)。2、設計要求1) 對系統(tǒng)進行功能模塊分析、控制模塊分析正確;2) 系統(tǒng)設計要能完成題目所要求的功能;3) 編程簡練、可用,盡可能使系統(tǒng)的功能更加完善和全面;4) 說明書、流程圖要清楚;5) 特別要求自己獨立完
2、成。二、課程設計說明書的編寫寫出不少于1000字的課程設計說明書,除了在封面應有題目、班級、姓名、學號和課程設計日期、地點外,正文要有如下幾個方面的內容:(1) 需求分析(2) 詳細設計(3) 調試分析(4) 測試結果課程設計時間安排表 (第17周)內容課時數(shù)需求分析1詳細設計1代碼設計12調試分析2課程設計說明書2教研室意見教研室主任簽名 年 月 日系部意見 教學主任簽名 年 月 日注:1.任務書由指導教師填寫后由教研室、系簽署意見;2.任務書應在學生課程設計開始前下達給學生;3.任務書一式二份,設計人、指導教師各執(zhí)一份。 C語言課程設計 報告系 (部) 信息與通信工程學院 專 業(yè) 班 級
3、計應171班 姓 名 學 號 曾雨祥201715010136 設計基地(實訓室) 信息樓605實訓室 設 計 項 目 學生試卷分析統(tǒng)計 設 計 日 期 設 計 成 績 指 導 教 師 張 翚 學生試卷成績分析系統(tǒng)一需求分析1適合人群 教師。2使用范圍小學至大學,人數(shù)數(shù)量不大。二概要設計1. 主函數(shù)main():初始化各變量并調用各函數(shù)。2. 輸入模塊accept_data():輸入學生個人成績。3. 計算模塊count():依據(jù)學生成績進行計算需要的各種數(shù)值。 4. 輸出模塊show_data():輸出計算的各種數(shù)值。 程序功能結構圖如圖所示:學生試卷分析系統(tǒng)主函數(shù) 輸出模塊計算模塊輸入模塊三
4、詳細設計本系統(tǒng)有一個主函數(shù),3個功能模塊,每個功能模塊函數(shù)都是由主函數(shù)調用,分別說下:1主函數(shù)main()此函數(shù)初始化各變量并調用各函數(shù)。代碼如下:int main() /平均分和標準差函數(shù)說明 int sum,max,min; /數(shù)據(jù)定義 double pass=0; int grade11=0; STUDENT stuSIZE; double aveSIZE,fSIZE; printf("nntttttt歡迎使用學生試卷管理系統(tǒng)!ann"); sum=accept_data(stu,grade); /輸入數(shù)據(jù)(sum為總人數(shù)) count(&max,&m
5、in,&pass,ave,f,stu,sum);/計算期末考試成績的及格率最高分、最低分 /以及平時、期末和總評成績的平均分和標準差 show_data(stu,sum,grade,max,min,pass,ave,f); /輸入所有學生的序號、平時成績、期末成績和總評成績 /顯示期末考試成績的最高分、最低分以及平時、期末和總評成績的平均分和標準差return 0;解析:主函數(shù)為程序之精華。主函數(shù)逐步調用模塊來實現(xiàn),步驟如圖:因為所有功能模塊都在主函數(shù)之后,所有需要再主函數(shù)中聲明定義功能模塊的函數(shù)。2.輸入模塊accept_data()輸入模塊代碼如下:int accept_data(
6、STUDENT stu,int grade) int i=0,sum=0,temp,a1,a2; FLAG flag; printf("n 請輸入計算總成績時使用平時成績與期末成績的比例,用整數(shù)表示(百分比例 如:30 70):"); scanf("%d%d",&a1,&a2); /接收計算總評成績的比例 while(i<SIZE) printf("n 請輸入學號(輸入-1可停止輸入):"); scanf("%d",&stui.number); /輸入學號 if (stui.numbe
7、r=-1) /序號時-1則跳出循環(huán) sum=i; /sum記錄的是輸入的人數(shù) break; printf("n 請輸入學生的平時成績和期末成績(百分制分數(shù)):"); flag=True; while(flag=True) /重復讀入兩個成績,讀到正確的為止 scanf("%d%d",&stui.score0,&stui.score1); if(stui.score0<=100&& stui.score0>=0&& stui.score1<=100&& stui.score1
8、>=0) flag=False; /輸入的兩個成績合理 else printf("n007 錯誤數(shù)據(jù)!請再次輸入學生的平時成績和期末成績(百分制分數(shù) 輸入格式如:98 99):"); /輸入的兩個成績不合理 temp=(int)(1.0*a1/100*stui.score0+1.0*a2/100 * stui.score1); /計算總評成績 stui.score2=temp; /總評成績存入數(shù)組 temp=(stui.score1)/10; /計算分數(shù)段 if(temp=10) /分數(shù)段存入數(shù)組 grade10+; /100分存入數(shù)組元素grade10 else g
9、radetemp+1+; /9099分存入數(shù)組元素grade9 /8089分存入數(shù)組元素grade8 /7079分存入數(shù)組元素grade7,以此類推 i+; return sum; /返回人數(shù) 解析:主函數(shù)引用該模塊后,輸入成績比例,利用for語句連續(xù)分別輸入學生的學號,平時成績和期末成績,如果輸入成績大于100分或者小于0分,則需要重新輸入,如果正確則break,跳出for語句。 開始計算總評成績和各成績分數(shù)段并存入結構體里。最后返回已輸入成績的學生個數(shù)到主函數(shù)。3.計算模塊count()此函數(shù)計算各成績的最高分,最低分,及格率,標準差,代碼如下:void count(int * max,i
10、nt * min,double * pass,double ave,double f,STUDENT stu,int sum) int i,j,p_sum=0;int total3;double temp;*max=*min=stu0.score1; /設卷面成績的最高分、最低分初值if(stu0.score1>=60) p_sum+;for(i=1;i<sum;i+) if(stui.score1)>*max) /若高于最高分,將其覆蓋*max=stui.score1; if(stui.score1)<*min) /若低于最低分,將其覆蓋 *min=stui.scor
11、e1; if(stui.scorei)>=60) p_sum+; /計算及格的人數(shù)*pass=(1.0*p_sum/sum)*100; /計算及格率for(i=0;i<=2;i+) /平時、期末、總評的初值設置為0totali=0;for(j=0;j<3;j+) /求平時、期末、總評3個總分 for(i=0;i<sum;i+) totalj=totalj+stui.scorej; for(j=0;j<3;j+) /求平時、期末、總評3個平均分 avej=totalj/sum; for(j=0;j<3;j+) /求平均、期末、總評標準差 fj=0; /標準差初
12、值設置為0 for(i=0;i<sum;i+) /計算標準差 temp=stui.scorej-avej; fj=fj+temp*temp; fj=sqrt(fabs(fj)/sum); 解析:此模塊中,利用多個for語句來計算各個成績的最高分、最低分、及格人數(shù)、總分,根據(jù)及格人數(shù)求出及格率,利用total數(shù)組存放總分來計算平均分,利用公式求得標準差。4.輸出函數(shù)show_data()此模塊輸出計算好的三個成績和各成績段人數(shù),代碼如下:void show_data(STUDENT stu,int sum,int grade,int max,int min,double pass,doub
13、le ave,double f) int i,j; printf("nnn-nnn");printf("nttttt學號 平時成績 期末考試 總評成績n"); /輸出各成績for(i=0;i<sum;i+)printf("ttttt %4d ",stui.number);for(j=0;j<3;j+)printf("t%4d ",stui.scorej);printf("tn"); char str1320="tttt平時成績平均分","tttt期末成績
14、平均分","tttt總評成績平均分" char str2320="t平時成績標準差","t期末成績標準差","t總評成績標準差" printf("nnn-nnn"); printf("ntttt及格率=%6.2f%t最高分=%dt最低分=%dn",pass,max,min); /輸出3次分別輸出平時、期末、總評的平均分和標準差 for(j=0;j<3;j+) printf("n %s=%6.2f %s=%6.2fn",str1j,avej,
15、str2j,fj); printf("nnn-"); printf("nnnttttt期末成績中的各分數(shù)段為:nn"); /輸出各分數(shù)段 printf("ttttt60分以下:%d個nn",grade0+grade1+grade2+grade3+grade4+grade5+grade6); printf("ttttt60-69分段:%d個nn",grade7); printf("ttttt70-79分段:%d個nn",grade8); printf("ttttt80-89分段:%d個n
16、n",grade9); printf("ttttt90-99分段:%d個nn",grade10); printf("ttttt100分:%d個nn",grade11); 解析:此模塊利用數(shù)組和for語句連續(xù)輸出輸入的數(shù)值以及經(jīng)過計算模塊的各種數(shù)值。5.總代碼#include "stdio.h"#include "string.h"#include "conio.h"#include "math.h"#define SIZE 300typedef struct stu
17、dent /學生數(shù)據(jù)結構體聲明 int number; /學號 int score3; /平時、期末和總評成績 STUDENT;typedef enum boolen /枚舉定義 False,True FLAG;int accept_data(STUDENT stu,int grade);/輸入數(shù)據(jù)函數(shù)聲明void count(int * max,int * min,double * pass,double ave,double f,STUDENT stu,int sum);void show_data(STUDENT stu,int sum,int grade,int max,int min
18、,double pass,double ave,double f);/輸入所有學生的序號、平時成績 /期末成績和總評成績函數(shù)說明 /顯示期末考試成績的及格率、最高分、最低分以及平時、期末和總評成績的 /主函數(shù) int main() /平均分和標準差函數(shù)說明 int sum,max,min; /數(shù)據(jù)定義 double pass=0; int grade11=0; STUDENT stuSIZE; double aveSIZE,fSIZE; printf("nntttttt歡迎使用學生試卷管理系統(tǒng)!ann"); sum=accept_data(stu,grade); /輸入數(shù)據(jù)
19、(sum為總人數(shù)) count(&max,&min,&pass,ave,f,stu,sum);/計算期末考試成績的及格率最高分、最低分 /以及平時、期末和總評成績的平均分和標準差 show_data(stu,sum,grade,max,min,pass,ave,f); /輸入所有學生的序號、平時成績、期末成績和總評成績 /顯示期末考試成績的最高分、最低分以及平時、期末和總評成績的平均分和標準差return 0;/輸入模塊int accept_data(STUDENT stu,int grade) int i=0,sum=0,temp,a1,a2; FLAG flag;
20、printf("n 請輸入計算總成績時使用平時成績與期末成績的比例,用整數(shù)表示(百分比例 如:30 70):"); scanf("%d%d",&a1,&a2); /接收計算總評成績的比例 while(i<SIZE) printf("n 請輸入學號(輸入-1可停止輸入):"); scanf("%d",&stui.number); /輸入學號 if (stui.number=-1) /序號時-1則跳出循環(huán) sum=i; /sum記錄的是輸入的人數(shù) break; printf("n
21、 請輸入學生的平時成績和期末成績(百分制分數(shù)):"); flag=True; while(flag=True) /重復讀入兩個成績,讀到正確的為止 scanf("%d%d",&stui.score0,&stui.score1); if(stui.score0<=100&& stui.score0>=0&& stui.score1<=100&& stui.score1>=0) flag=False; /輸入的兩個成績合理 else printf("n007 錯誤數(shù)據(jù)!請
22、再次輸入學生的平時成績和期末成績(百分制分數(shù) 輸入格式如:98 99):"); /輸入的兩個成績不合理 temp=(int)(1.0*a1/100*stui.score0+1.0*a2/100 * stui.score1); /計算總評成績 stui.score2=temp; /總評成績存入數(shù)組 temp=(stui.score1)/10; /計算分數(shù)段 if(temp=10) /分數(shù)段存入數(shù)組 grade10+; /100分存入數(shù)組元素grade10 else gradetemp+1+; /9099分存入數(shù)組元素grade9 /8089分存入數(shù)組元素grade8 /7079分存入數(shù)
23、組元素grade7,以此類推 i+; return sum; /返回人數(shù) /計算模塊void count(int * max,int * min,double * pass,double ave,double f,STUDENT stu,int sum) int i,j,p_sum=0;int total3;double temp;*max=*min=stu0.score1; /設卷面成績的最高分、最低分初值if(stu0.score1>=60) p_sum+;for(i=1;i<sum;i+) if(stui.score1)>*max) /若高于最高分,將其覆蓋*max=s
24、tui.score1; if(stui.score1)<*min) /若低于最低分,將其覆蓋 *min=stui.score1; if(stui.scorei)>=60) p_sum+; /計算及格的人數(shù)*pass=(1.0*p_sum/sum)*100; /計算及格率for(i=0;i<=2;i+) /平時、期末、總評的初值設置為0totali=0;for(j=0;j<3;j+) /求平時、期末、總評3個總分 for(i=0;i<sum;i+) totalj=totalj+stui.scorej; for(j=0;j<3;j+) /求平時、期末、總評3個平
25、均分 avej=totalj/sum; for(j=0;j<3;j+) /求平均、期末、總評標準差 fj=0; /標準差初值設置為0 for(i=0;i<sum;i+) /計算標準差 temp=stui.scorej-avej; fj=fj+temp*temp; fj=sqrt(fabs(fj)/sum); /輸出模塊void show_data(STUDENT stu,int sum,int grade,int max,int min,double pass,double ave,double f) int i,j; printf("nnn-nnn");printf("nttttt學號 平時成績 期末考試 總評成績n"); /輸出各成績for(i=0;i<sum;i+)printf("ttttt %4d ",stui.number);for(j=0;j<3;j+)printf("t%4d ",stui.scorej);printf("tn"); cha
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司月度獎懲活動方案
- 公司消防比賽活動方案
- 公司盆栽種植活動方案
- 公司相親對象活動方案
- 公司現(xiàn)場招聘會策劃方案
- 公司組織溫泉玩活動方案
- 公司活動方案獎勵方案
- 公司行政生日會策劃方案
- 公司教育活動策劃方案
- 2025年廣東省廣州市南沙區(qū)中考二模道德與法治試題
- 2025屆重慶市普通高中學業(yè)水平選擇性考試預測歷史試題(含答案)
- 2025-2030中國眼底照相機行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 2024年深圳市大鵬新區(qū)區(qū)屬公辦中小學招聘教師真題
- 人教版小學語文四年級下冊作文范文2
- 大學語文試題及答案琴
- 紅十字會資產(chǎn)管理制度
- T/CSPSTC 112-2023氫氣管道工程施工技術規(guī)范
- 2025屆四川成都錦江區(qū)數(shù)學七下期末質量檢測試題含解析
- 無人機飛行器結構與性能試題及答案
- 《蔚來汽車》課件
評論
0/150
提交評論