C語言課程設(shè)計(jì)報(bào)告-- 學(xué)生成績(jī)統(tǒng)計(jì)系統(tǒng)
《C語言課程設(shè)計(jì)報(bào)告-- 學(xué)生成績(jī)統(tǒng)計(jì)系統(tǒng)》由會(huì)員分享,可在線閱讀,更多相關(guān)《C語言課程設(shè)計(jì)報(bào)告-- 學(xué)生成績(jī)統(tǒng)計(jì)系統(tǒng)(15頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 / C語言課程設(shè)計(jì)書 設(shè)計(jì)題目: 學(xué)生成績(jī)統(tǒng)計(jì)系統(tǒng) 課程名稱: C語言課程設(shè)計(jì) 學(xué) 院 :物理與光電工程學(xué)院 專業(yè)班級(jí): 電子科學(xué)與技術(shù)(1)班 學(xué) 號(hào) : 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é)生成績(jī)統(tǒng)計(jì) 一、設(shè)計(jì)目的: (1)該課程設(shè)計(jì)要求學(xué)生既動(dòng)手又動(dòng)腦,自學(xué),查資料,獨(dú)立實(shí)踐。將上學(xué)期課本上的理論知識(shí)和實(shí)際有機(jī)的結(jié)合起來,鍛煉學(xué)生實(shí)際分析問題和解決問題的能力,提高學(xué)生適應(yīng)實(shí)際、實(shí)踐編(程的能力,使對(duì)C語言系統(tǒng)編程有一個(gè)大致的了解。 (2)C語言的實(shí)踐。掌握C語言函數(shù)的定義方法,函數(shù)的聲明及函數(shù)的調(diào)用過程。掌握結(jié)構(gòu)體類型變量的定義和使用,綜合應(yīng)用C語言的知識(shí),實(shí)現(xiàn)一個(gè)完整的系統(tǒng),提高編程能力,體會(huì)軟件程序的開發(fā)過程。 二、任務(wù)要求:
4、 假設(shè)某班有:30人(姓名自定) 考試課程有:高等數(shù)學(xué)、物理、外語、C語言、德育5門課程。 將所有同學(xué)的成績(jī)保留在文件中,對(duì)文件中的數(shù)據(jù)處理,輸出所要求的內(nèi)容, 程序的功能主要包括3方面: ① 輸入成績(jī)到文件中 ② 輸出成績(jī) ③ 輸出不及格學(xué)生名單 ④ 成績(jī)排序 ⑤ 修改記錄 ⑥ 刪除記錄 ⑦ 插入記錄等 主函數(shù)中對(duì)3個(gè)功能選擇(菜單),調(diào)用對(duì)應(yīng)的函數(shù)完成。 三、總體設(shè)計(jì): (1)程序設(shè)計(jì)組成框圖 1.按班級(jí)輸出學(xué)生成績(jī)單
5、 2.按姓名查詢 學(xué)生成績(jī)管理系統(tǒng) 3.增加學(xué)生 4.刪除學(xué)生 5.按班級(jí)修改學(xué)生成績(jī) 6.保存所有學(xué)生信息
6、 7.顯示不及格學(xué)生成績(jī) 8.按平均成績(jī)排序并輸出成績(jī) 9.退出 (2)模塊功能說明 1 輸出功能:顯示全部學(xué)生的記錄。 2 查詢功能:輸入姓名可以查詢學(xué)生的詳細(xì)信息。 3 增加功能:增加新學(xué)生的信息。 4 刪除功能:刪除學(xué)生信息。 5 修改功能:修改學(xué)生的錯(cuò)誤信息。 6
7、 保存功能:保存已輸入信息。 7讀取功能:讀取已輸入信息。 8顯示功能:按照所需要的要求顯示學(xué)生記錄。 9 排序功能:按照要求完成對(duì)學(xué)生信息的排序。 10 退出系統(tǒng)。 (3)程序流程圖 開始 學(xué)生成績(jī)單 結(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ù)字 完成對(duì)應(yīng)的功能 void DesplayMenu(void) { STUDENT *p; printf("\t\t=========歡迎來到學(xué)生成績(jī)管理系統(tǒng)================\n"); printf("\t\t\t-------請(qǐng)選擇相應(yīng)功能------------\n"); printf("\t\t|************************************************|\n"); printf("
10、\t\t|------------- 1 按班級(jí)輸出學(xué)生成績(jī)單 -----------|\n"); printf("\t\t|------------- 2 按姓名查詢----------------------|\n"); printf("\t\t|------------- 3 增加學(xué)生 -----------------------|\n"); printf("\t\t|------------- 4 刪除學(xué)生 -----------------------|\n"); printf("\t\t|------------- 5 按班級(jí)修改學(xué)生成績(jī) -------------|\n
11、"); printf("\t\t|------------- 6 保存所有學(xué)生信息 ---------------|\n"); printf("\t\t|------------- 7 顯示不及格學(xué)生名單--------------|\n"); printf("\t\t|------------- 8 按平均成績(jī)排序并輸出成績(jī)--------|\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制作時(shí)間:2013年11月10號(hào)\n"); scanf("%d",&choose);/*取得用戶的選擇*/ switch(choose) { case 1: OutputInformation();/*顯示所有學(xué)生的信息*/ break; case 2: DesplayInfoBystudentName(); break; case 3: p=MallocNode();/*先申請(qǐng)一個(gè)新結(jié)點(diǎn)*/ GetInformation(
13、p);/*要求用戶輸入信息到新結(jié)點(diǎn)中*/ InsertOneNode(p);/*將新結(jié)點(diǎn)加到鏈表中*/ break; case 4: DeleteNodeBystudentNumber();/*根據(jù)用戶輸入的學(xué)號(hào)刪除該學(xué)生*/ break; case 5: ChangeMarkByName();/*根據(jù)用戶輸入的姓名修改學(xué)生成績(jī)*/ break; case 6: SaveLinkToFile();/*保存數(shù)據(jù)*/ break; case 7: DesplayMarkSegment();/*顯示不及格的學(xué)生成績(jī)*/ break; case 8: Composito
14、rByTotalMark();/*按平均成績(jī)排序*/ break; case 9: SaveLinkToFile();/*保存數(shù)據(jù)后再退出*/ free(headLink); exit(1); break; default: break; } DesplayMenu();/*遞歸調(diào)用*/ } (3)函數(shù)功能:根據(jù)用戶輸入的學(xué)號(hào)刪除該學(xué)生 void DeleteNodeBystudentNumber(void) { char studentNumber[10]; STUDENT *p,*q; char flag=0; printf("請(qǐng)輸入要?jiǎng)h除的學(xué)生
15、學(xué)號(hào):"); 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é)號(hào)的學(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é)生信息,請(qǐng)先輸入學(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ī)進(jìn)行排序 void CompositorByTotalMark(void) { STUDENT exchange,*r,*p,*q; r=headLink->next; if(r==NULL) { printf("現(xiàn)在還沒學(xué)生信息,請(qǐng)先輸入學(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);/*再?gòu)?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é)生成績(jī)單: 按姓名查詢: 刪除學(xué)生: 輸出不及格的名單: 按平均成績(jī)排序輸出: 六、設(shè)計(jì)總結(jié): 通過這次的課程設(shè)計(jì),讓我更加地對(duì)C語言有更深的了解,還有讓我發(fā)現(xiàn)了在結(jié)構(gòu)體和鏈表這方面的知識(shí)
23、要有待加強(qiáng)。第一次編程這么多的程序,說實(shí)話真的有點(diǎn)難度,但是通過后面慢慢的看書,一點(diǎn)點(diǎn)地去解決問題。在編寫程序是一定要注意細(xì)節(jié)的問題,因?yàn)橐粋€(gè)小小錯(cuò)誤會(huì)導(dǎo)致整個(gè)程序不能運(yùn)行,例如分號(hào)一定要加,否則在編譯的時(shí)候會(huì)出現(xiàn)錯(cuò)誤,當(dāng)然它會(huì)提示哪里有錯(cuò)誤的,這種小錯(cuò)誤最好能避免。一開始調(diào)試的時(shí)候出現(xiàn)了幾十條錯(cuò)誤的記錄,其中包括小錯(cuò)誤的,但是,只要慢慢的檢查的話,程序就會(huì)趨向完善,最后程序就會(huì)運(yùn)行的。C語言是計(jì)算機(jī)編程語言中最基礎(chǔ)的語言,務(wù)必要熟練掌握。所以在以后的練習(xí)中,一定要多多寫這樣的程序,這樣的話才能提高編程的能力。經(jīng)過一周的編程實(shí)習(xí),并在后一段的報(bào)告總結(jié),我對(duì)C語言這門科有新的認(rèn)識(shí),本人實(shí)在是獲益不淺!要想編寫一個(gè)準(zhǔn)確、高效并有使用價(jià)值的程序,一定先要對(duì)課本知識(shí)熟悉,還要掌握必要的上機(jī)操作能力,寫程序其實(shí)很容易而關(guān)鍵在于調(diào)試程序。這次設(shè)計(jì),讓我重新掌握了C語言,而且還得到了用C語言解決實(shí)際問題的寶貴經(jīng)驗(yàn)。 13
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《產(chǎn)品價(jià)值鏈與營(yíng)銷戰(zhàn)略》
- lecture 9(精品)
- Where’s your pen pal from (2)
- (精品)實(shí)驗(yàn)二血清γ球蛋白的分離純化與鑒定by陳蔚文
- 企業(yè)專利風(fēng)險(xiǎn)管理
- 高中記敘文寫作指導(dǎo):寫人要凸顯個(gè)性ppt課件
- 新生兒溶血病的發(fā)病機(jī)理臨床癥狀課件
- 7、艱辛的求索 (2)
- 學(xué)校心理健康教育組織管理課件
- IE七大手法的發(fā)展歷程
- 頸托的正確使用課件
- (精品)電功與電功率復(fù)習(xí)1
- 李曉光-管理學(xué)原理第十三章領(lǐng)導(dǎo)工作概述
- 固體中的相結(jié)構(gòu)
- 智能化酒店系統(tǒng)PPT