C語言課程設計報告-- 學生成績統(tǒng)計系統(tǒng)

上傳人:dus****log 文檔編號:125951836 上傳時間:2022-07-27 格式:DOC 頁數(shù):15 大小:840KB
收藏 版權(quán)申訴 舉報 下載
C語言課程設計報告-- 學生成績統(tǒng)計系統(tǒng)_第1頁
第1頁 / 共15頁
C語言課程設計報告-- 學生成績統(tǒng)計系統(tǒng)_第2頁
第2頁 / 共15頁
C語言課程設計報告-- 學生成績統(tǒng)計系統(tǒng)_第3頁
第3頁 / 共15頁

下載文檔到電腦,查找使用更方便

8 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《C語言課程設計報告-- 學生成績統(tǒng)計系統(tǒng)》由會員分享,可在線閱讀,更多相關《C語言課程設計報告-- 學生成績統(tǒng)計系統(tǒng)(15頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、 / C語言課程設計書 設計題目: 學生成績統(tǒng)計系統(tǒng) 課程名稱: C語言課程設計 學 院 :物理與光電工程學院 專業(yè)班級: 電子科學與技術(1)班 學 號 : 3111008376 姓 名 : 何燦豪

2、 聯(lián)系方式 : 任課教師 : 劉力斌 2013 年 11月 10日 目錄 設計目的 ··················· 2 任務要求 ··················· 2 總體設計 ··················· 2 部分程序 ·················· 4 調(diào)試分析過程 ·················

3、·· 9 課程設計總結(jié) ···················· 13 題目:學生成績統(tǒng)計 一、設計目的: (1)該課程設計要求學生既動手又動腦,自學,查資料,獨立實踐。將上學期課本上的理論知識和實際有機的結(jié)合起來,鍛煉學生實際分析問題和解決問題的能力,提高學生適應實際、實踐編(程的能力,使對C語言系統(tǒng)編程有一個大致的了解。 (2)C語言的實踐。掌握C語言函數(shù)的定義方法,函數(shù)的聲明及函數(shù)的調(diào)用過程。掌握結(jié)構(gòu)體類型變量的定義和使用,綜合應用C語言的知識,實現(xiàn)一個完整的系統(tǒng),提高編程能力,體會軟件程序的開發(fā)過程。 二、任務要求:

4、 假設某班有:30人(姓名自定) 考試課程有:高等數(shù)學、物理、外語、C語言、德育5門課程。 將所有同學的成績保留在文件中,對文件中的數(shù)據(jù)處理,輸出所要求的內(nèi)容, 程序的功能主要包括3方面: ① 輸入成績到文件中 ② 輸出成績 ③ 輸出不及格學生名單 ④ 成績排序 ⑤ 修改記錄 ⑥ 刪除記錄 ⑦ 插入記錄等 主函數(shù)中對3個功能選擇(菜單),調(diào)用對應的函數(shù)完成。 三、總體設計: (1)程序設計組成框圖 1.按班級輸出學生成績單

5、 2.按姓名查詢 學生成績管理系統(tǒng) 3.增加學生 4.刪除學生 5.按班級修改學生成績 6.保存所有學生信息

6、 7.顯示不及格學生成績 8.按平均成績排序并輸出成績 9.退出 (2)模塊功能說明 1 輸出功能:顯示全部學生的記錄。 2 查詢功能:輸入姓名可以查詢學生的詳細信息。 3 增加功能:增加新學生的信息。 4 刪除功能:刪除學生信息。 5 修改功能:修改學生的錯誤信息。 6

7、 保存功能:保存已輸入信息。 7讀取功能:讀取已輸入信息。 8顯示功能:按照所需要的要求顯示學生記錄。 9 排序功能:按照要求完成對學生信息的排序。 10 退出系統(tǒng)。 (3)程序流程圖 開始 學生成績單 結(jié)束 輸入數(shù)字 平均分排序 不及格名單 保存信息 增加學生 退出 按班修改 按姓名查詢 刪除學生 四、部分程序代碼如下: (1) 該函數(shù)功能:從文件中讀學生信息到鏈表中 void ReadInf

8、oFormFile(void) { FILE *fp; STUDENT *p; fp=fopen("student.txt","r"); if(!fp) { printf("文件不存在\n"); return; } p=MallocNode(); while(fscanf(fp,"%s%s%s%f%f%f%f%f",p->studentNumber,p->studentName,p->className, &(p->mark1),&(p->mark2),&(p->mark3),&(p->mark4),&(p->mark5))>0) { InsertOneNode(p

9、); p=MallocNode(); } fclose(fp); } (2)該函數(shù)功能:顯示菜單,根據(jù)用戶的輸入的數(shù)字 完成對應的功能 void DesplayMenu(void) { STUDENT *p; printf("\t\t=========歡迎來到學生成績管理系統(tǒng)================\n"); printf("\t\t\t-------請選擇相應功能------------\n"); printf("\t\t|************************************************|\n"); printf("

10、\t\t|------------- 1 按班級輸出學生成績單 -----------|\n"); printf("\t\t|------------- 2 按姓名查詢----------------------|\n"); printf("\t\t|------------- 3 增加學生 -----------------------|\n"); printf("\t\t|------------- 4 刪除學生 -----------------------|\n"); printf("\t\t|------------- 5 按班級修改學生成績 -------------|\n

11、"); printf("\t\t|------------- 6 保存所有學生信息 ---------------|\n"); printf("\t\t|------------- 7 顯示不及格學生名單--------------|\n"); printf("\t\t|------------- 8 按平均成績排序并輸出成績--------|\n"); printf("\t\t|------------- 9 退出 --------------------------|\n"); printf("\t\t|**************************************

12、**********|\n"); printf("\t\t\t\t\t\t制作者:何燦豪\n"); printf("\t\t\t\t\t\t制作時間:2013年11月10號\n"); scanf("%d",&choose);/*取得用戶的選擇*/ switch(choose) { case 1: OutputInformation();/*顯示所有學生的信息*/ break; case 2: DesplayInfoBystudentName(); break; case 3: p=MallocNode();/*先申請一個新結(jié)點*/ GetInformation(

13、p);/*要求用戶輸入信息到新結(jié)點中*/ InsertOneNode(p);/*將新結(jié)點加到鏈表中*/ break; case 4: DeleteNodeBystudentNumber();/*根據(jù)用戶輸入的學號刪除該學生*/ break; case 5: ChangeMarkByName();/*根據(jù)用戶輸入的姓名修改學生成績*/ break; case 6: SaveLinkToFile();/*保存數(shù)據(jù)*/ break; case 7: DesplayMarkSegment();/*顯示不及格的學生成績*/ break; case 8: Composito

14、rByTotalMark();/*按平均成績排序*/ break; case 9: SaveLinkToFile();/*保存數(shù)據(jù)后再退出*/ free(headLink); exit(1); break; default: break; } DesplayMenu();/*遞歸調(diào)用*/ } (3)函數(shù)功能:根據(jù)用戶輸入的學號刪除該學生 void DeleteNodeBystudentNumber(void) { char studentNumber[10]; STUDENT *p,*q; char flag=0; printf("請輸入要刪除的學生

15、學號:"); scanf("%s",studentNumber); p=headLink; q=headLink->next; while(q) { if(strcmp(q->studentNumber,studentNumber)==0) { p->next=q->next; free(q); flag=1; break; } p=p->next; q=q->next; } if(!flag) { printf("不存在該學號的學生\n"); return; } printf("成功刪除\n"); } (4)該函數(shù)功能是:保存鏈表

16、數(shù)據(jù)到文件中 void SaveLinkToFile(void) { STUDENT *p; FILE *fp; p=headLink->next; if(p==NULL) { printf("現(xiàn)在沒有學生信息,請先輸入學生信息\n\n"); return; } fp=fopen("student.txt","w+"); if(!fp) { printf("文件不存在\n"); return; } while(p) { fprintf(fp,"%s %s %s %f %f %f\n",p->studentNumber,p->studentName,p->c

17、lassName,p->mark1,p->mark2,p->mark3,p->mark4,p->mark5); p=p->next; } fclose(fp); } (5)函數(shù)功能:輸出不及格學生名單 void DesplayMarkSegment(void) { STUDENT *p; p=headLink->next; printf("不及格學生的名單有:\n"); while(p) { if((6>((int)(p->mark1/10)))||(6>((int)(p->mark2/10)))||(6>((int)(p->mark3/10)))|| (6>((

18、int)(p->mark4/10)))||(6>((int)(p->mark3/10))))/*只要有一科不及格就認為該生不及格*/ { printf("%s\n",p->studentName); } p=p->next; } } (6)該函數(shù)功能:按平均成績進行排序 void CompositorByTotalMark(void) { STUDENT exchange,*r,*p,*q; r=headLink->next; if(r==NULL) { printf("現(xiàn)在還沒學生信息,請先輸入學生信息\n"); return; } wh

19、ile(r)/*兩層while循環(huán)實現(xiàn)排序*/ { p=r; q=r->next; while(q) { if((q->mark1+q->mark2+q->mark3+q->mark4+q->mark5)>(p->mark1+p->mark2+p->mark3+p->mark4+p->mark5)) { strcpy(exchange.studentNumber,q->studentNumber);/*先復制q結(jié)點信息到exchange*/ strcpy(exchange.studentName,q->studentName); strcpy(exchange.classN

20、ame,q->className); exchange.mark1=q->mark1; exchange.mark2=q->mark2; exchange.mark3=q->mark3; exchange.mark4=q->mark4; exchange.mark5=q->mark5; strcpy(q->studentNumber,p->studentNumber);/*再復制p結(jié)點信息到q*/ strcpy(q->studentName,p->studentName); strcpy(q->className,p->className); q->mark1=p->ma

21、rk1; q->mark2=p->mark3; q->mark3=p->mark3; q->mark4=p->mark4; q->mark5=p->mark5; strcpy(p->studentNumber,exchange.studentNumber);/*最后復制exchange結(jié)點信息到p*/ strcpy(p->studentName,exchange.studentName); strcpy(p->className,exchange.className); p->mark1=exchange.mark1; p->mark2=exchange.mark2; p-

22、>mark3=exchange.mark3; p->mark4=exchange.mark4; p->mark5=exchange.mark5; } q=q->next; } r=r->next; } OutputInformation(); } 五、調(diào)試分析過程: 界面: 增加學生: 輸出學生成績單: 按姓名查詢: 刪除學生: 輸出不及格的名單: 按平均成績排序輸出: 六、設計總結(jié): 通過這次的課程設計,讓我更加地對C語言有更深的了解,還有讓我發(fā)現(xiàn)了在結(jié)構(gòu)體和鏈表這方面的知識

23、要有待加強。第一次編程這么多的程序,說實話真的有點難度,但是通過后面慢慢的看書,一點點地去解決問題。在編寫程序是一定要注意細節(jié)的問題,因為一個小小錯誤會導致整個程序不能運行,例如分號一定要加,否則在編譯的時候會出現(xiàn)錯誤,當然它會提示哪里有錯誤的,這種小錯誤最好能避免。一開始調(diào)試的時候出現(xiàn)了幾十條錯誤的記錄,其中包括小錯誤的,但是,只要慢慢的檢查的話,程序就會趨向完善,最后程序就會運行的。C語言是計算機編程語言中最基礎的語言,務必要熟練掌握。所以在以后的練習中,一定要多多寫這樣的程序,這樣的話才能提高編程的能力。經(jīng)過一周的編程實習,并在后一段的報告總結(jié),我對C語言這門科有新的認識,本人實在是獲益不淺!要想編寫一個準確、高效并有使用價值的程序,一定先要對課本知識熟悉,還要掌握必要的上機操作能力,寫程序其實很容易而關鍵在于調(diào)試程序。這次設計,讓我重新掌握了C語言,而且還得到了用C語言解決實際問題的寶貴經(jīng)驗。 13

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!