C語言課程設(shè)計(jì)報(bào)告-- 學(xué)生成績統(tǒng)計(jì)系統(tǒng)
《C語言課程設(shè)計(jì)報(bào)告-- 學(xué)生成績統(tǒng)計(jì)系統(tǒng)》由會員分享,可在線閱讀,更多相關(guān)《C語言課程設(shè)計(jì)報(bào)告-- 學(xué)生成績統(tǒng)計(jì)系統(tǒng)(15頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、 / C語言課程設(shè)計(jì)書 設(shè)計(jì)題目: 學(xué)生成績統(tǒng)計(jì)系統(tǒng) 課程名稱: C語言課程設(shè)計(jì) 學(xué) 院 :物理與光電工程學(xué)院 專業(yè)班級: 電子科學(xué)與技術(shù)(1)班 學(xué) 號 : 3111008376 姓 名 : 何燦豪
2、 聯(lián)系方式 : 任課教師 : 劉力斌 2013 年 11月 10日 目錄 設(shè)計(jì)目的 ··················· 2 任務(wù)要求 ··················· 2 總體設(shè)計(jì) ··················· 2 部分程序 ·················· 4 調(diào)試分析過程 ·················
3、·· 9 課程設(shè)計(jì)總結(jié) ···················· 13 題目:學(xué)生成績統(tǒng)計(jì) 一、設(shè)計(jì)目的: (1)該課程設(shè)計(jì)要求學(xué)生既動手又動腦,自學(xué),查資料,獨(dú)立實(shí)踐。將上學(xué)期課本上的理論知識和實(shí)際有機(jī)的結(jié)合起來,鍛煉學(xué)生實(shí)際分析問題和解決問題的能力,提高學(xué)生適應(yīng)實(shí)際、實(shí)踐編(程的能力,使對C語言系統(tǒng)編程有一個大致的了解。 (2)C語言的實(shí)踐。掌握C語言函數(shù)的定義方法,函數(shù)的聲明及函數(shù)的調(diào)用過程。掌握結(jié)構(gòu)體類型變量的定義和使用,綜合應(yīng)用C語言的知識,實(shí)現(xiàn)一個完整的系統(tǒng),提高編程能力,體會軟件程序的開發(fā)過程。 二、任務(wù)要求:
4、 假設(shè)某班有:30人(姓名自定) 考試課程有:高等數(shù)學(xué)、物理、外語、C語言、德育5門課程。 將所有同學(xué)的成績保留在文件中,對文件中的數(shù)據(jù)處理,輸出所要求的內(nèi)容, 程序的功能主要包括3方面: ① 輸入成績到文件中 ② 輸出成績 ③ 輸出不及格學(xué)生名單 ④ 成績排序 ⑤ 修改記錄 ⑥ 刪除記錄 ⑦ 插入記錄等 主函數(shù)中對3個功能選擇(菜單),調(diào)用對應(yīng)的函數(shù)完成。 三、總體設(shè)計(jì): (1)程序設(shè)計(jì)組成框圖 1.按班級輸出學(xué)生成績單
5、 2.按姓名查詢 學(xué)生成績管理系統(tǒng) 3.增加學(xué)生 4.刪除學(xué)生 5.按班級修改學(xué)生成績 6.保存所有學(xué)生信息
6、 7.顯示不及格學(xué)生成績 8.按平均成績排序并輸出成績 9.退出 (2)模塊功能說明 1 輸出功能:顯示全部學(xué)生的記錄。 2 查詢功能:輸入姓名可以查詢學(xué)生的詳細(xì)信息。 3 增加功能:增加新學(xué)生的信息。 4 刪除功能:刪除學(xué)生信息。 5 修改功能:修改學(xué)生的錯誤信息。 6
7、 保存功能:保存已輸入信息。 7讀取功能:讀取已輸入信息。 8顯示功能:按照所需要的要求顯示學(xué)生記錄。 9 排序功能:按照要求完成對學(xué)生信息的排序。 10 退出系統(tǒng)。 (3)程序流程圖 開始 學(xué)生成績單 結(jié)束 輸入數(shù)字 平均分排序 不及格名單 保存信息 增加學(xué)生 退出 按班修改 按姓名查詢 刪除學(xué)生 四、部分程序代碼如下: (1) 該函數(shù)功能:從文件中讀學(xué)生信息到鏈表中 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ù)字 完成對應(yīng)的功能 void DesplayMenu(void) { STUDENT *p; printf("\t\t=========歡迎來到學(xué)生成績管理系統(tǒng)================\n"); printf("\t\t\t-------請選擇相應(yīng)功能------------\n"); printf("\t\t|************************************************|\n"); printf("
10、\t\t|------------- 1 按班級輸出學(xué)生成績單 -----------|\n"); printf("\t\t|------------- 2 按姓名查詢----------------------|\n"); printf("\t\t|------------- 3 增加學(xué)生 -----------------------|\n"); printf("\t\t|------------- 4 刪除學(xué)生 -----------------------|\n"); printf("\t\t|------------- 5 按班級修改學(xué)生成績 -------------|\n
11、"); printf("\t\t|------------- 6 保存所有學(xué)生信息 ---------------|\n"); printf("\t\t|------------- 7 顯示不及格學(xué)生名單--------------|\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();/*顯示所有學(xué)生的信息*/ break; case 2: DesplayInfoBystudentName(); break; case 3: p=MallocNode();/*先申請一個新結(jié)點(diǎn)*/ GetInformation(
13、p);/*要求用戶輸入信息到新結(jié)點(diǎn)中*/ InsertOneNode(p);/*將新結(jié)點(diǎn)加到鏈表中*/ break; case 4: DeleteNodeBystudentNumber();/*根據(jù)用戶輸入的學(xué)號刪除該學(xué)生*/ break; case 5: ChangeMarkByName();/*根據(jù)用戶輸入的姓名修改學(xué)生成績*/ break; case 6: SaveLinkToFile();/*保存數(shù)據(jù)*/ break; case 7: DesplayMarkSegment();/*顯示不及格的學(xué)生成績*/ 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ù)用戶輸入的學(xué)號刪除該學(xué)生 void DeleteNodeBystudentNumber(void) { char studentNumber[10]; STUDENT *p,*q; char flag=0; printf("請輸入要刪除的學(xué)生
15、學(xué)號:"); 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("不存在該學(xué)號的學(xué)生\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)在沒有學(xué)生信息,請先輸入學(xué)生信息\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ù)功能:輸出不及格學(xué)生名單 void DesplayMarkSegment(void) { STUDENT *p; p=headLink->next; printf("不及格學(xué)生的名單有:\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))))/*只要有一科不及格就認(rèn)為該生不及格*/ { printf("%s\n",p->studentName); } p=p->next; } } (6)該函數(shù)功能:按平均成績進(jìn)行排序 void CompositorByTotalMark(void) { STUDENT exchange,*r,*p,*q; r=headLink->next; if(r==NULL) { printf("現(xiàn)在還沒學(xué)生信息,請先輸入學(xué)生信息\n"); return; } wh
19、ile(r)/*兩層while循環(huán)實(shí)現(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);/*先復(fù)制q結(jié)點(diǎn)信息到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);/*再復(fù)制p結(jié)點(diǎn)信息到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);/*最后復(fù)制exchange結(jié)點(diǎn)信息到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)試分析過程: 界面: 增加學(xué)生: 輸出學(xué)生成績單: 按姓名查詢: 刪除學(xué)生: 輸出不及格的名單: 按平均成績排序輸出: 六、設(shè)計(jì)總結(jié): 通過這次的課程設(shè)計(jì),讓我更加地對C語言有更深的了解,還有讓我發(fā)現(xiàn)了在結(jié)構(gòu)體和鏈表這方面的知識
23、要有待加強(qiáng)。第一次編程這么多的程序,說實(shí)話真的有點(diǎn)難度,但是通過后面慢慢的看書,一點(diǎn)點(diǎn)地去解決問題。在編寫程序是一定要注意細(xì)節(jié)的問題,因?yàn)橐粋€小小錯誤會導(dǎo)致整個程序不能運(yùn)行,例如分號一定要加,否則在編譯的時候會出現(xiàn)錯誤,當(dāng)然它會提示哪里有錯誤的,這種小錯誤最好能避免。一開始調(diào)試的時候出現(xiàn)了幾十條錯誤的記錄,其中包括小錯誤的,但是,只要慢慢的檢查的話,程序就會趨向完善,最后程序就會運(yùn)行的。C語言是計(jì)算機(jī)編程語言中最基礎(chǔ)的語言,務(wù)必要熟練掌握。所以在以后的練習(xí)中,一定要多多寫這樣的程序,這樣的話才能提高編程的能力。經(jīng)過一周的編程實(shí)習(xí),并在后一段的報(bào)告總結(jié),我對C語言這門科有新的認(rèn)識,本人實(shí)在是獲益不淺!要想編寫一個準(zhǔn)確、高效并有使用價(jià)值的程序,一定先要對課本知識熟悉,還要掌握必要的上機(jī)操作能力,寫程序其實(shí)很容易而關(guān)鍵在于調(diào)試程序。這次設(shè)計(jì),讓我重新掌握了C語言,而且還得到了用C語言解決實(shí)際問題的寶貴經(jīng)驗(yàn)。 13
- 溫馨提示:
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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 空前嚴(yán)重的資本主義世界經(jīng)濟(jì)危機(jī)講義
- 丹田降脂丸推廣策劃OTC0427教學(xué)課件
- 專業(yè)代理公司組織架構(gòu)及崗位職責(zé)
- 宮頸癌術(shù)后輔助放射治療通用PPT課件
- 家庭常用醫(yī)療器械的使用課件
- 給圖形做標(biāo)記
- 高三政治人教版一輪復(fù)習(xí)課件:課時11經(jīng)濟(jì)全球化與對外開放共44張
- 五年級下冊英語Recycle1人教版課件
- 五年級上冊科學(xué)《母雞生蛋了》粵教版課件
- 二年級上冊道德與法治大家排好隊(duì)課件
- 復(fù)習(xí)課件工業(yè)革命
- 第六章組織文化
- 勤助上崗培訓(xùn)課件
- 南川中學(xué) 剪紙課件 第2課
- 華師大版九年級上冊課件:2312平行線分線段成比例