




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)專心-專注-專業(yè)精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)目錄概述21.1設(shè)計(jì)題目21.2題目描述21.3題目要求2需求分析32.1 設(shè)計(jì)思想32.2 程序流程圖32.3 相關(guān)處理函數(shù)3程序設(shè)計(jì)及代碼分析43.1 程序主模塊設(shè)計(jì)53.2 程序詳細(xì)模塊設(shè)計(jì)5實(shí)驗(yàn)數(shù)據(jù)及運(yùn)行結(jié)果64.1 實(shí)驗(yàn)數(shù)據(jù)64.2 主菜單74.3 計(jì)算參考答案及頻次74.4 輸出成績分析8課設(shè)心得總結(jié)9程序源代碼9概述(正文宋體5號(hào)字,單倍行距,標(biāo)題黑體3號(hào)字,小標(biāo)題黑體5號(hào)字;題目內(nèi)5個(gè)小標(biāo)題間空兩行,兩個(gè)題目之間分頁。正反面打印)設(shè)計(jì)題目模擬改卷系統(tǒng)。題
2、目描述改卷系統(tǒng)程序主要功能為改卷。同時(shí),該系統(tǒng)程序可以實(shí)現(xiàn)成績查詢、成績排序、成績統(tǒng)計(jì)等一系列功能。通過接收數(shù)據(jù)文件格式為文本文件的數(shù)據(jù)流,其中文本文件由若干行組成,每行表示一名學(xué)生的考試答案信息,根據(jù)同學(xué)的答題情況,計(jì)算參考答案并統(tǒng)計(jì)學(xué)生的答題情況。題目要求輸出參考答案,及各題參考答案選項(xiàng)的頻次。支持按姓名查詢學(xué)生成績。能夠按照指定需求進(jìn)行排序,如按成績的降序或升序?qū)W(xué)生信息進(jìn)行排序。輸出成績單及試卷分析(分?jǐn)?shù)段人數(shù),計(jì)算最高分、最低分、平均分、及格率)到外部文件。以功能菜單的形式選擇執(zhí)行各項(xiàng)操作。需求分析設(shè)計(jì)思想該系統(tǒng)采用模塊化設(shè)計(jì)。程序設(shè)計(jì)一個(gè)簡單、明了的主菜單供用戶選擇操作。程序初始化
3、階段,讀取文本文件“data.txt”,獲取學(xué)生選擇答案信息進(jìn)行處理,若沒有輸入,則提示;系統(tǒng)自動(dòng)統(tǒng)計(jì)學(xué)生答案并輸出參考答案。同時(shí),用戶可根據(jù)主菜單對(duì)學(xué)生成績進(jìn)行排序、分析、查詢等操作。程序流程圖圖2 程序主流程圖相關(guān)處理函數(shù)void ClearQueue() 從緩沖區(qū)中不斷獲取多余字符,直到遇到回車才進(jìn)行下一步操作,即清除緩存流。char InputChar(char const * msg) 獲取有效的字符輸入。char* InputLine(char const * msg, char * str)獲取有效的字符串輸入。int InputIntInRange(char const * m
4、sg, int l, int r)用來得到有效的整型輸入,整型范圍為l, r程序設(shè)計(jì)及代碼分析學(xué)生結(jié)構(gòu)體設(shè)計(jì)設(shè)計(jì)結(jié)構(gòu)體,用來保存學(xué)生的姓名、答案以及分?jǐn)?shù)信息,方便操作。typedef struct tagDatachar name10;/姓名char asnTEST_NUM + 1;/作答int grade;/分?jǐn)?shù)Data;記錄相關(guān)信息的全局變量:Data dataMAX_LEN;/保存數(shù)據(jù)int total = 0;/總?cè)藬?shù)int ansTEST_NUM4;/每題的選擇人數(shù)頻次char answerTEST_NUM;/參考答案文件讀取模塊通過C語言文件讀取函數(shù),對(duì)數(shù)據(jù)文件進(jìn)行讀取,同時(shí)將學(xué)生
5、的姓名、成績寫入結(jié)構(gòu)體數(shù)組中。主要函數(shù): void LoadData()參考答案計(jì)算模塊遍歷整個(gè)結(jié)構(gòu)體數(shù)組,獲取保存所有學(xué)生的答案選擇,并獲得所有題目答案選擇的最大數(shù)量,最終獲得參考答案。主要函數(shù):void GetAswer()通過用戶選擇,可將保存的參考答案以及頻次輸出。主要函數(shù):void PrintAnswer()按姓名查詢模塊通過用戶輸入的姓名信息,遍歷結(jié)構(gòu)體數(shù)組,并獲取姓名與之相同的學(xué)生信息輸出,若沒有匹配到該學(xué)生,則輸出提示信息。主要函數(shù):void SearchByName()成績計(jì)算模塊遍歷整個(gè)結(jié)構(gòu)體數(shù)組,對(duì)學(xué)生的選擇答案根據(jù)參考答案進(jìn)行評(píng)分,其中1-15題計(jì)2分,16-35題計(jì)3
6、分,其余題目4分,最后獲得總分保存至結(jié)構(gòu)體數(shù)組中。主要函數(shù):void GetGrade()成績降序排序模塊對(duì)于保存在學(xué)生結(jié)構(gòu)體數(shù)組中的成績,通過冒泡排序進(jìn)行降序排序并輸出。主要函數(shù):void Sort()成績單分析模塊對(duì)學(xué)生的成績信息進(jìn)行分析,首先按學(xué)生成績排名,然后計(jì)算學(xué)生的最高分、最低分、平均分、及格率等信息,同時(shí)統(tǒng)計(jì)059,6080,81100分?jǐn)?shù)段同學(xué)個(gè)數(shù)。最后將所有統(tǒng)計(jì)信息通過C語言文件操作寫入到文件“result.txt”。主要函數(shù):void OutputData()程序主模塊提供系統(tǒng)程序的入口,可循環(huán)打印程序的主菜單供用戶選擇,并調(diào)用相關(guān)處理函數(shù)完成相關(guān)操作。主菜單函數(shù):void
7、 MainMenu()圖3 系統(tǒng)程序主要功能模塊圖實(shí)驗(yàn)數(shù)據(jù)及運(yùn)行效果截圖實(shí)驗(yàn)數(shù)據(jù)主菜單計(jì)算參考答案以及頻次按姓名查詢成績輸出試卷分析Result.txt 課設(shè)心得總結(jié)通過本次課程設(shè)計(jì),我更加熟練掌握C語言編程相關(guān)知識(shí)。對(duì)于C語言中結(jié)構(gòu)體設(shè)計(jì)、全局變量、文件讀寫、冒泡排序等算法也有了深入了解。同時(shí),通過本次課程設(shè)計(jì),我更加了解了模塊化編程的重要性。將一個(gè)大的系統(tǒng)程序分成多個(gè)小模塊,不僅將問題簡單化了,同時(shí)也使得整個(gè)系統(tǒng)簡潔明了,對(duì)用戶也是一目了然。 總之,本次課程設(shè)計(jì)對(duì)我今后的學(xué)習(xí)有很大的指導(dǎo)作用。程序源代碼#include #include #include #define MAX_LEN10
8、0/最多人數(shù)#define TEST_NUM35/題目數(shù)量typedef struct tagDatachar name10;/姓名char asnTEST_NUM + 1;/作答int grade;/分?jǐn)?shù)Data;Data dataMAX_LEN;/保存數(shù)據(jù)int total = 0;/總?cè)藬?shù)int ansTEST_NUM4;/每題的選擇人數(shù)頻次char answerTEST_NUM;/參考答案/清除無用輸入緩存流void ClearQueue()while(getchar()!=n)continue;/輸入charchar InputChar(char const * msg)char r
9、esult; printf(%s, msg);while(scanf(%c, &result)!=1)ClearQueue();printf(%s, msg);ClearQueue();return result;/*參數(shù)說明:msg:提示語str:用來得到輸入的字符串功能說明:用來得到有效的字符串輸入*/char* InputLine(char const * msg, char * str)int j=0;int c;printf(%s, msg);while(1)c = getchar();if (c = n | c = EOF)break;strj+=c;strj=0;return s
10、tr;/*參數(shù)說明:msg:提示語功能說明:用來得到有效的整型輸入*/int InputInt(char const* msg)int result;printf(%s, msg);while(scanf(%d, &result)!=1)ClearQueue();printf(%s, msg);ClearQueue();return result;/*參數(shù)說明:msg:提示語l:下限r(nóng):上限功能說明:用來得到有效的整型輸入,整型范圍為l,r*/int InputIntInRange(char const * msg, int l, int r)int j;while(1)j = InputIn
11、t(msg);if(jr)printf(請輸入%d和%d之間的整數(shù).n, l, r);continue;elsebreak;return j;/載入數(shù)據(jù)void LoadData()char filename = sample.txt;FILE *fp; char buffer100;int index;if(fp = fopen(filename,r) = NULL) printf(沒有找到或者不能打開data.txt!); return; memset(buffer, 0, sizeof(buffer);while (fgets(buffer, 100, fp) != NULL) ssca
12、nf(buffer, %d %s %s, &index, , datatotal.asn);memset(buffer, 0, sizeof(buffer);total+; fclose(fp);/根據(jù)每個(gè)學(xué)生的選擇得到參考答案void GetAswer()int i;int j;int index;int max;memset(&ans, 0, sizeof(ans);memset(answer, 0, sizeof(answer);for (i = 0; i total; i+)for (j = 0; j TEST_NUM; j+)index = datai.a
13、snj - A;ansjindex+;for (i = 0; i TEST_NUM; i+)max = -1;index = -1;for (j = 0; j max)max = ansij;index = j;if (index = 0)answeri = A + index;/根據(jù)參考答案以及學(xué)生自己的選擇得到分?jǐn)?shù)void GetGrade()int i;int j;int bRight = -1;for (i = 0; i total; i+)for (j = 0; j TEST_NUM; j+)bRight = -1;if (answerj = datai.asnj)bRight =
14、1;if (bRight = 1)if (j 15)datai.grade += 2;else if (j 35)datai.grade += 3;else datai.grade += 4;/打印參考答案及頻次void PrintAnswer()int i;printf(參考答案以及頻次如下:n);for (i = 0; i TEST_NUM; i+)printf(%-3c, answeri);printf(n);for (i = 0; i TEST_NUM; i+)printf(%-3d, ansiansweri - A);printf(nn);/按姓名查找void SearchByNam
15、e()char name10;int i;InputLine(請輸入學(xué)生姓名:, name);for (i = 0; i total; i+)if (strcmp(name, ) = 0)printf(%s成績?yōu)? %dnn, name, datai.grade);return;printf(文件中沒有記錄該學(xué)生相關(guān)信息!nn);/打印所有信息void PrintData()int i;if (total = 0)return;printf(%-8s%-10s%sn, 排名, 姓名, 分?jǐn)?shù));for (i = 0; i total; i+)printf(%-8d, i+1)
16、;printf(%-10s, );printf(%dn, datai.grade);/排序void Sort()int i;int j;Data tempData;for (i = 1; i total; i+) for (j = 0; j total-i; j+) if (dataj.grade dataj+1.grade) memcpy(&tempData, &(dataj+1), sizeof(Data);memcpy(&(dataj+1), &(dataj), sizeof(Data);memcpy(&(dataj), &tempData, sizeof(Data)
17、; PrintData();/輸出分析到文件void OutputData()int i;int j;Data tempData;FILE *fp;int gradeCount3;/0596079 80100int minGrade;int maxGrade;int totalGrade;int pass = 0;memset(&gradeCount, 0, sizeof(gradeCount);if (total = 0)return;fp = fopen(result.txt, w);if (!fp)return;for (i = 1; i total; i+) for (j = 0; j
18、 total-i; j+) if (dataj.grade dataj+1.grade) memcpy(&tempData, &(dataj+1), sizeof(Data);memcpy(&(dataj+1), &(dataj), sizeof(Data);memcpy(&(dataj), &tempData, sizeof(Data); totalGrade = 0;minGrade = data0.grade;maxGrade = data0.grade;fprintf(fp, %-8s%-10s%sn, 排名, 姓名, 分?jǐn)?shù));for (i = 0; i total; i+)fprin
19、tf(fp, %-8d, i+1);fprintf(fp, %-10s, );fprintf(fp, %dn, datai.grade);if (datai.grade 60)gradeCount0+;else if (datai.grade 80)gradeCount1+;else gradeCount2+;totalGrade+= datai.grade;if (datai.grade maxGrade)maxGrade = datai.grade;fprintf(fp, n);fprintf(fp, 059分?jǐn)?shù)人數(shù)為:%dn, gradeCount0);fprintf(fp, 6079分?jǐn)?shù)人數(shù)為:%dn, gradeCount1);fprintf(fp, 80100分?jǐn)?shù)人數(shù)為:%dn, gradeCount2);fprintf(fp, 最高分為:%dn, ma
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘭州社區(qū)團(tuán)購合同范本
- 再生資源回收收購合同范本
- 化工儲(chǔ)罐出租合同范本
- 加盟藝術(shù)培訓(xùn)合同范本
- 債權(quán)置換合同范本
- 農(nóng)土租賃合同范本
- 加工店轉(zhuǎn)讓合同范本
- 中介拿鑰匙裝修合同范本
- 勞務(wù)包活合同范本
- 勞務(wù)派遣辭退合同范本
- 2025年黑龍江農(nóng)墾職業(yè)學(xué)院單招職業(yè)傾向性測試題庫附答案
- 小學(xué)科學(xué)點(diǎn)亮我的小燈泡省公開課一等獎(jiǎng)全國示范課微課金獎(jiǎng)?wù)n件
- 2023-2024學(xué)年高中信息技術(shù)必修一滬科版(2019)第三單元項(xiàng)目六《 解決溫標(biāo)轉(zhuǎn)換問題-認(rèn)識(shí)程序和程序設(shè)計(jì)語言》教學(xué)設(shè)計(jì)
- 【湘教版】2024-2025學(xué)年七年級(jí)數(shù)學(xué)下冊教學(xué)工作計(jì)劃(及進(jìn)度表)
- 《急性左心衰》課件
- 新生兒胃腸減壓護(hù)理
- 二零二五版洗煤廠與礦業(yè)公司合作洗煤業(yè)務(wù)合同3篇
- 2024預(yù)防流感課件完整版
- 病例報(bào)告表(CRF)模板
- DL∕T 2447-2021 水電站防水淹廠房安全檢查技術(shù)規(guī)程
- 煤礦績效考核管理辦法
評(píng)論
0/150
提交評(píng)論