




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)專心-專注-專業(yè)精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)目錄概述21.1設(shè)計題目21.2題目描述21.3題目要求2需求分析32.1 設(shè)計思想32.2 程序流程圖32.3 相關(guān)處理函數(shù)3程序設(shè)計及代碼分析43.1 程序主模塊設(shè)計53.2 程序詳細模塊設(shè)計5實驗數(shù)據(jù)及運行結(jié)果64.1 實驗數(shù)據(jù)64.2 主菜單74.3 計算參考答案及頻次74.4 輸出成績分析8課設(shè)心得總結(jié)9程序源代碼9概述(正文宋體5號字,單倍行距,標題黑體3號字,小標題黑體5號字;題目內(nèi)5個小標題間空兩行,兩個題目之間分頁。正反面打?。┰O(shè)計題目模擬改卷系統(tǒng)。題
2、目描述改卷系統(tǒng)程序主要功能為改卷。同時,該系統(tǒng)程序可以實現(xiàn)成績查詢、成績排序、成績統(tǒng)計等一系列功能。通過接收數(shù)據(jù)文件格式為文本文件的數(shù)據(jù)流,其中文本文件由若干行組成,每行表示一名學生的考試答案信息,根據(jù)同學的答題情況,計算參考答案并統(tǒng)計學生的答題情況。題目要求輸出參考答案,及各題參考答案選項的頻次。支持按姓名查詢學生成績。能夠按照指定需求進行排序,如按成績的降序或升序?qū)W生信息進行排序。輸出成績單及試卷分析(分數(shù)段人數(shù),計算最高分、最低分、平均分、及格率)到外部文件。以功能菜單的形式選擇執(zhí)行各項操作。需求分析設(shè)計思想該系統(tǒng)采用模塊化設(shè)計。程序設(shè)計一個簡單、明了的主菜單供用戶選擇操作。程序初始化
3、階段,讀取文本文件“data.txt”,獲取學生選擇答案信息進行處理,若沒有輸入,則提示;系統(tǒng)自動統(tǒng)計學生答案并輸出參考答案。同時,用戶可根據(jù)主菜單對學生成績進行排序、分析、查詢等操作。程序流程圖圖2 程序主流程圖相關(guān)處理函數(shù)void ClearQueue() 從緩沖區(qū)中不斷獲取多余字符,直到遇到回車才進行下一步操作,即清除緩存流。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è)計及代碼分析學生結(jié)構(gòu)體設(shè)計設(shè)計結(jié)構(gòu)體,用來保存學生的姓名、答案以及分數(shù)信息,方便操作。typedef struct tagDatachar name10;/姓名char asnTEST_NUM + 1;/作答int grade;/分數(shù)Data;記錄相關(guān)信息的全局變量:Data dataMAX_LEN;/保存數(shù)據(jù)int total = 0;/總?cè)藬?shù)int ansTEST_NUM4;/每題的選擇人數(shù)頻次char answerTEST_NUM;/參考答案文件讀取模塊通過C語言文件讀取函數(shù),對數(shù)據(jù)文件進行讀取,同時將學生
5、的姓名、成績寫入結(jié)構(gòu)體數(shù)組中。主要函數(shù): void LoadData()參考答案計算模塊遍歷整個結(jié)構(gòu)體數(shù)組,獲取保存所有學生的答案選擇,并獲得所有題目答案選擇的最大數(shù)量,最終獲得參考答案。主要函數(shù):void GetAswer()通過用戶選擇,可將保存的參考答案以及頻次輸出。主要函數(shù):void PrintAnswer()按姓名查詢模塊通過用戶輸入的姓名信息,遍歷結(jié)構(gòu)體數(shù)組,并獲取姓名與之相同的學生信息輸出,若沒有匹配到該學生,則輸出提示信息。主要函數(shù):void SearchByName()成績計算模塊遍歷整個結(jié)構(gòu)體數(shù)組,對學生的選擇答案根據(jù)參考答案進行評分,其中1-15題計2分,16-35題計3
6、分,其余題目4分,最后獲得總分保存至結(jié)構(gòu)體數(shù)組中。主要函數(shù):void GetGrade()成績降序排序模塊對于保存在學生結(jié)構(gòu)體數(shù)組中的成績,通過冒泡排序進行降序排序并輸出。主要函數(shù):void Sort()成績單分析模塊對學生的成績信息進行分析,首先按學生成績排名,然后計算學生的最高分、最低分、平均分、及格率等信息,同時統(tǒng)計059,6080,81100分數(shù)段同學個數(shù)。最后將所有統(tǒng)計信息通過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ù)據(jù)及運行效果截圖實驗數(shù)據(jù)主菜單計算參考答案以及頻次按姓名查詢成績輸出試卷分析Result.txt 課設(shè)心得總結(jié)通過本次課程設(shè)計,我更加熟練掌握C語言編程相關(guān)知識。對于C語言中結(jié)構(gòu)體設(shè)計、全局變量、文件讀寫、冒泡排序等算法也有了深入了解。同時,通過本次課程設(shè)計,我更加了解了模塊化編程的重要性。將一個大的系統(tǒng)程序分成多個小模塊,不僅將問題簡單化了,同時也使得整個系統(tǒng)簡潔明了,對用戶也是一目了然。 總之,本次課程設(shè)計對我今后的學習有很大的指導(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;/分數(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ù)每個學生的選擇得到參考答案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ù)參考答案以及學生自己的選擇得到分數(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(請輸入學生姓名:, name);for (i = 0; i total; i+)if (strcmp(name, ) = 0)printf(%s成績?yōu)? %dnn, name, datai.grade);return;printf(文件中沒有記錄該學生相關(guān)信息!nn);/打印所有信息void PrintData()int i;if (total = 0)return;printf(%-8s%-10s%sn, 排名, 姓名, 分數(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, 排名, 姓名, 分數(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分數(shù)人數(shù)為:%dn, gradeCount0);fprintf(fp, 6079分數(shù)人數(shù)為:%dn, gradeCount1);fprintf(fp, 80100分數(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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江西省上饒市玉山縣2024-2025學年三下數(shù)學期末綜合測試模擬試題含解析
- 橋梁工程預(yù)埋件施工合同
- 個體工商戶合伙協(xié)議合同
- 江蘇省江都區(qū)六校2025屆初三2月網(wǎng)上月考(開學)數(shù)學試題含解析
- 鄭州二手房買賣合同范本
- 江蘇省射陽縣2024-2025學年初三三模考試物理試題含解析
- 股權(quán)轉(zhuǎn)讓簡易合同范本
- 四川省仁壽第一中學校北校區(qū)2024-2025學年高二下學期半期歷史試卷(含答案)
- 供貨合同預(yù)告合同
- 股權(quán)抵押借款合同樣式
- 2025第二屆衛(wèi)生健康行業(yè)網(wǎng)絡(luò)與數(shù)據(jù)安全技能大賽備賽試題庫資料500題(含答案)
- 2024年度浙江省衢州市人民醫(yī)院護士招聘真題練習試卷A卷附答案
- 一年級奧數(shù)排隊問題(公開課)課件
- 檢驗科生物安全培訓全面版課件
- 器官移植PPT教學課件
- 邏輯哲學論-英文版
- 背夾球-幼兒園中班游戲教案
- 工程倫理學教學課件
- 電站項目、燃機基礎(chǔ)施工方案
- EPC模式下設(shè)計階段可施工性研究
- 生物設(shè)備 年產(chǎn)1000t淀粉酶工藝設(shè)
評論
0/150
提交評論