C語言課程設(shè)計報告學(xué)生成績管理系統(tǒng)_第1頁
C語言課程設(shè)計報告學(xué)生成績管理系統(tǒng)_第2頁
C語言課程設(shè)計報告學(xué)生成績管理系統(tǒng)_第3頁
C語言課程設(shè)計報告學(xué)生成績管理系統(tǒng)_第4頁
C語言課程設(shè)計報告學(xué)生成績管理系統(tǒng)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

內(nèi)蒙古科技大學(xué)課程設(shè)計論文內(nèi)蒙古科技大學(xué)本科生課程設(shè)計論文題目:學(xué)生成績管理系統(tǒng)學(xué)生姓名:學(xué)號:專業(yè):班級:指導(dǎo)教師:目錄內(nèi)蒙古科技大學(xué)課程設(shè)計任務(wù)書 3學(xué)生成績管理系統(tǒng) 4【摘要】 41.論文題目:學(xué)生成績管理系統(tǒng) 42.技術(shù)參數(shù)、設(shè)計步驟: 43.設(shè)計理論分析方法: 54.設(shè)計結(jié)論及分析: 54.1各個函數(shù)功能簡單分析: 54.1.1主菜單函數(shù)(main): 54.1.2輸入函數(shù)(input): 54.1.3輸出函數(shù)(display): 64.1.4查找(find): 64.1.5修改(change): 64.1.6刪除(del): 64.1.7添加(add): 64.1.8讀入(read): 64.1.9保存(save): 64.1.10排序(sort): 64.1.11學(xué)號排序(sortx): 74.1.12不及格輸出(no_pass): 74.1.13輸出(shuchu): 75.參考文獻: 76.附錄: 86.1程序部分: 8內(nèi)蒙古科技大學(xué)課程設(shè)計任務(wù)書課程名稱C語言課程設(shè)計設(shè)計題目學(xué)生成績管理系統(tǒng)指導(dǎo)教師周李涌時間一、教學(xué)要求1.鞏固和加深學(xué)生對C語言課程的基本知識的理解和掌握

2.掌握C語言編程和程序調(diào)試的基本技能

3.利用C語言進行基本的軟件設(shè)計

4.掌握書寫程序設(shè)計說明文檔的能力

5.提高運用C語言解決實際問題的能力二、設(shè)計資料及參數(shù)每個學(xué)生在教師提供的課程設(shè)計題目中任意選擇一題,獨立完成,題目選定后不可更換。某班學(xué)生成績管理,包括以下功能:從鍵盤輸入包括學(xué)號、姓名、各門課程成績(不少于2門),并將其保存在磁盤文件student里打開文件后,計算每個人的總分和平均分,排序并保存具有在文件中進行單項查詢或多項查詢的功能(即能夠按照給定的關(guān)鍵字,如姓名等找出滿足條件的紀錄)具有輸出文件數(shù)據(jù)信息的功能三、設(shè)計要求及成果1.分析課程設(shè)計題目的要求

2.寫出詳細設(shè)計說明

3.編寫程序代碼,調(diào)試程序使其能正確運行

4.設(shè)計完成的軟件要便于操作和使用

4.設(shè)計完成后提交課程設(shè)計報告四、進度安排第一天

選擇課程設(shè)計題目,分析課題的要求

第二天

編程

第三天

編程及調(diào)試

第四天

寫課程設(shè)計報告

第五天

提交課程設(shè)計報告(打印稿及電子稿)五、評分標準1.根據(jù)平時上機考勤、表現(xiàn)和進度,教師將每天點名和檢查2.根據(jù)課程設(shè)計完成情況,必須有可運行的軟件。

3.根據(jù)課程設(shè)計報告的質(zhì)量,如有雷同,則所有雷同的所有人均判為不及格。六、建議參考資料1.《C語言程序設(shè)計》,譚浩強,清華大學(xué)出版社2.《C語言程序設(shè)計課程設(shè)計》,劉振安,機械工業(yè)出版社學(xué)生成績管理系統(tǒng)【摘要】通過課程設(shè)計,讓我對C語言有了更深的理解,讓我們把學(xué)到的理論應(yīng)用于具體實踐中,鍛煉了我們各方面的能力,從而讓我們更快提高。通過一些簡單函數(shù)的疊加構(gòu)成了功能比較完備的學(xué)生成績管理系統(tǒng),從輸入到處理再到輸出,你將體會到完美的真正含義。學(xué)生成績管理系統(tǒng)具有以下簡單功能:1.從鍵盤輸入包括學(xué)號、姓名、各門課程成績(不少于2門),并將其保存在磁盤文件里2.打開文件后,計算每個人的總分,排序并保存3.具有在文件中進行單項查詢或多項查詢的功能(即能夠按照給定的關(guān)鍵字,如姓名等找出滿足條件的紀錄)4.具有輸出文件數(shù)據(jù)信息的功能1.論文題目:學(xué)生成績管理系統(tǒng)2.技術(shù)參數(shù)、設(shè)計步驟:本程序包含輸入(input)、輸出(display)、查找(find)、修改(change)、刪除(del)、添加(add)、讀入(read)、保存(save)等基本功能。先分別定義各種全局函數(shù)和全局變量now,同時定義結(jié)構(gòu)體及結(jié)構(gòu)體數(shù)組(本程序為實現(xiàn)簡單操作暫定義長度為3)。其中now作為現(xiàn)有學(xué)生信息的一個標記作用尤為重要。每次執(zhí)行完函數(shù)就返回主菜單。共含有四個開關(guān)語句,依次在main,display,find,change中,使界面更友好,用戶操作更簡單。設(shè)計共分四步完成,依次為簡單設(shè)計,添加細節(jié),上機調(diào)試,先改錯再修改。遇到的問題可以查資料或向老師提問。3.設(shè)計理論分析方法:應(yīng)有全局的概念,拿到題目首先進行總體功能分析,只有對整體功能有了全局把握才能去里自己用那部分知識進行編寫。這個階段好比蓋房子,如果這個階段做好了,說明房子已改好了。剩下任務(wù)就是怎么去裝修了。確定了大體方向接下來就是功能實現(xiàn)階段了,即所謂裝修階段。同樣需要逐一地先寫出能實現(xiàn)此功能的簡單程序。比如學(xué)生成績管理系統(tǒng),先寫出最簡單的輸入、輸出、排序等功能函數(shù)。然后通過簡單函數(shù)的互相調(diào)用、嵌套構(gòu)成一個新功能的復(fù)雜函數(shù)。淡然這中間要加很多其他東西,這就需要我們多看書,多問老師同學(xué)啦。等到所有功能都能“正?!保ò刺崾菊_輸入)實現(xiàn),再考慮一些細節(jié)問題,例如:如果所有都能簡單運行,可是有些時候有些輸入錯誤或正確它都運行,這就需要我們通過改寫程序使之在正確輸入時運行,在錯誤輸入時給出出錯提示。就像性別問題,輸入M/W時運行,輸入其他就不讓它運行,同時給出正確輸入的提示。這樣就好很多了。后面的一一修改就可以了。同時還要考慮到見名知意,如:輸入(input)、輸出(display)、查找(find)、修改(change)、刪除(del)、添加(add)、讀入(read)、保存(save)、排序(sort)、按學(xué)號排序(sortx)、不及格(no_pass)、輸出(shuchu)。當然還有其他問題需要注意,在這里不一一細說。4.設(shè)計結(jié)論及分析:4.1各個函數(shù)功能簡單分析:4.1.1主菜單函數(shù)(main):主函數(shù)為一個死循環(huán),前幾個是功能實現(xiàn)函數(shù),只有9是退出。也就是說每執(zhí)行完一個函數(shù),他就自動返回主菜單。只有選擇9(退出)時才跳出循環(huán)。當然每選擇一次它就自動清空屏幕,所以運行結(jié)果更直觀。4.1.2輸入函數(shù)(input):先輸入要添加的學(xué)生數(shù)量n,同時now標記現(xiàn)有學(xué)生的數(shù)量。執(zhí)行n次循環(huán),輸入n個學(xué)生的信息;其中輸入性別時只有為M/W(M為男,W為女,均大寫)時才跳出循環(huán)。如果出錯,有提示信息。最后自動求和并保存。4.1.3輸出函數(shù)(display):三部分1.按總分名次輸出2.按學(xué)號順序輸出3.輸出有不及格課程的學(xué)生4.1.4查找(find):查找分為按學(xué)號查找和按姓名查找,查找成功就輸出,查找失敗就返回,輸出提示信息繼續(xù)輸入。4.1.5修改(change):輸入學(xué)號,然后選擇修改項,修改完后,提示用戶“是否繼續(xù)修改”,只有輸入N/n時退出,輸入其它字符都是繼續(xù)。4.1.6刪除(del):輸入要刪除學(xué)生的學(xué)號,如果找到就刪除其信息,并提示用戶刪除成功,如果沒找到就提示用戶刪除失敗。4.1.7添加(add):根據(jù)信息總?cè)萘?結(jié)構(gòu)體數(shù)組的長度)和第一次輸入的信息量判斷是否能繼續(xù)添加。如果添加后信息已滿,則提示用戶不能繼續(xù)添加,同時屏蔽了添加選項。4.1.8讀入(read):從文件讀入,避免了用戶多次大量輸入數(shù)據(jù)。4.1.9保存(save):每次執(zhí)行完修改信息包括添加、錄入、修改、刪除等都需要保存信息。當然在每個修改函數(shù)最后都需要調(diào)用一下保存函數(shù)。4.1.10排序(sort):按總成績名次排序(冒泡法排序)。n為要排序的學(xué)生數(shù)量,為形參。4.1.11學(xué)號排序(sortx):按學(xué)號先后順序進行排序(冒泡法排序)。n為要排序的學(xué)生數(shù)量,為形參。4.1.12不及格輸出(no_pass):輸出不及格的學(xué)生信息。4.1.13輸出(shuchu):輸出第n個學(xué)生信息。5.參考文獻:(1).《C語言程序設(shè)計》,譚浩強,清華大學(xué)出版社(2).《C語言程序設(shè)計課程設(shè)計》,劉振安,機械工業(yè)出版社6.附錄:6.1程序部分:#include<stdio.h>#include<conio.h>#include<string.h>#include<stdlib.h>#definemax3voidinput();voiddisplay();voidfind();voidchange();voiddel();voidread();voidsave();voidadd();voidsort(intn);voidsortx(intn);voidshuchu(intn);voidno_pass();intnow=0;/*標記位*/structstudent{ intnum; charname[20]; charsex; intNO; floatscore1; floatscore2; floatsum;};structstudentstu[max+1];voidmain()/*主函數(shù)(菜單)*/{ intas; do { printf("\n\t\t\t歡迎使用學(xué)生成績管理系統(tǒng)\n\n"); printf("\n\t\t\t\t1.錄入學(xué)員信息\n\t\t\t\t2.顯示學(xué)員信息\n\t\t\t\t3.查找學(xué)員信息\n\t\t\t\t4.修改學(xué)員信息\n\t\t\t\t5.刪除學(xué)員信息\n\t\t\t\t6.添加學(xué)員信息\n\t\t\t\t7.讀入學(xué)員信息\n\t\t\t\t8.保存學(xué)員信息\n\t\t\t\t9.退出"); printf("\n\n\n\t\t\t\t請選擇"); scanf("%d",&as); switch(as) { case1:system("cls");input();break; case2:system("cls");display();break; case3:system("cls");find();break; case4:system("cls");change();break; case5:system("cls");del();break; case6:system("cls");add();break; case7:system("cls");read();break; case8:system("cls");save();break; case9:system("cls");exit(0); } } while(1);} voidinput()/*輸入函數(shù)*/ { inti,n,j; for(i=0;;i++) { printf("\n請輸入添加的學(xué)生數(shù)量(在%d以內(nèi)):",max-now);scanf("%d",&n); if(n>max)printf("\n請確保添加的數(shù)量在%d以內(nèi)\t!!!",max); if(n<=max)break; }now=n; for(i=0;i<n;i++) { printf("\n\t\t\t\t輸入第%d個學(xué)生的信息\n",i+1); printf("\n輸入學(xué)生的學(xué)號:"); scanf("%d",&stu[i].num); getchar(); printf("\n輸入學(xué)生的姓名:"); gets(stu[i].name); printf("\n請輸入學(xué)生的性別(M/W):"); for(j=0;;j++) { stu[i].sex=getchar(); if(stu[i].sex=='M'||stu[i].sex=='W')break; elseprintf("\n\t\t\t請確保輸入性別的正確性(區(qū)分大小寫)!!!"); getchar(); } printf("\n請輸入學(xué)生成績1:"); scanf("%f",&stu[i].score1); printf("\n請輸入學(xué)生成績2:"); scanf("%f",&stu[i].score2); stu[i].sum=stu[i].score1+stu[i].score2; } sort(n); save();system("cls"); } voiddisplay()/*整體輸出函數(shù)*/ { intas,i; printf("\n\t\t\t班級學(xué)生成績列表\n\n\n"); printf("\n\t\t\t\t請選擇\n\n\t\t\t1.按名次輸出\n\t\t\t2.按學(xué)號輸出\n\t\t\t3.不及格的學(xué)生信息\n\t\t\t"); scanf("%d",&as); switch(as) { case1:sort(now);for(i=0;i<now;i++)shuchu(i);break; case2:sort(now);sortx(now);for(i=0;i<now;i++)shuchu(i);break; case3:no_pass();break; } } voidfind()/*查詢函數(shù)*/ { intnum,as,i; charname[20]; printf("\n\t\t\t請選擇\n\n\n"); printf("\n\t\t\t1.按學(xué)號查找\n\t\t\t2.按姓名查找\n\t\t\t");scanf("%d",&as); switch(as) { case1:system("cls");printf("請輸入要查找的學(xué)號:"); do { scanf("%d",&num); for(i=0;i<now;i++) { if(num==stu[i].num) { shuchu(i);break; } } if(i>=now) printf("\n\t\t該生信息不存在!!!請重新輸入學(xué)號:"); }while(i>=now);break; case2:system("cls");getchar();printf("請輸入要查找的學(xué)生姓名:"); do { gets(name); for(i=0;i<now;i++) { if(strcmp(name,stu[i].name)==0) { shuchu(i);break; } }if(i>=now) printf("\n\n\t\t\t該生信息不存在!!!請重新輸入姓名:"); }while(i>=now);break; } } voidchange()/*修改函數(shù)*/ { intnum,as,j,i,m; chara; printf("\n\t\t\t請輸入要修改的學(xué)生的學(xué)號:"); scanf("%d",&num); for(i=0;i<now;i++) { if(stu[i].num==num) { for(j=0;j<6;j++) { printf("\n\t\t\t請選擇\n\n\n");printf("\n\t\t\t1.修改學(xué)號\n\t\t\t2.修改姓名\n\t\t\t3.修改性別(M/W)\n\t\t\t4.修改成績1\n\t\t\t5.修改成績2\n\t\t\t"); scanf("%d",&as); switch(as) { case1:printf("請輸入新的學(xué)號:");scanf("%d",&stu[i].num);break; case2:printf("請輸入新的姓名:");getchar();gets(stu[i].name);break; case3:printf("請輸入新的性別:");getchar(); for(m=0;;m++) { stu[i].sex=getchar(); if(stu[i].sex=='M'||stu[i].sex=='W')break; elseprintf("\n\t\t\t請確保輸入性別的正確性(區(qū)分大小寫)!!!"); getchar(); }break; case4:printf("請輸入新成績1:");scanf("%f",&stu[i].score1);break; case5:printf("請輸入新成績2:");scanf("%f",&stu[i].score2);break; } stu[i].sum=stu[i].score1+stu[i].score2; printf("\n是否繼續(xù)修改該生信息?(Y/N)"); getchar(); a=getchar(); if(a=='N'||a=='n')break; } sort(now); save(); break; } } if(i>=now) printf("\n\n\t\t\t\t學(xué)號輸入有誤!!!\n\n"); } voiddel()/*刪除函數(shù)*/ { intnum,i; printf("\n\t\t\t輸入要刪除的學(xué)生學(xué)號"); scanf("%d",&num); for(i=0;i<=now;i++) { if(i>=now) { printf("\n\n\n\t\t\t學(xué)號輸入有誤!!!刪除失敗!!!\n\n"); break; } if(stu[i].num==num) { if(i==now-1) now-=1; else { stu[i]=stu[now-1]; now-=1; } printf("\n\n\t\t\t刪除成功!!!\n\n");sort(now); break; } } save(); } voidadd()/*添加函數(shù)*/ { charch; intj; printf("\n\t\t\t\t還能添加%d個學(xué)生信息!!!\n\n",max-now); if(now<max) { do { printf("\n\t\t\t\t輸入新插入學(xué)生的信息\n"); printf("\n輸入學(xué)生的學(xué)號:"); scanf("%d",&stu[now].num); getchar(); printf("\n輸入學(xué)生的姓名:"); gets(stu[now].name); printf("\n輸入學(xué)生的性別(M/W):"); for(j=0;;j++) { stu[now].sex=getchar(); if(stu[now].sex=='M'||stu[now].sex=='W')break; elseprintf("\n\t\t\t請確保輸入性別的正確性(區(qū)分大小寫)!!!"); getchar(); } printf("\n輸入學(xué)生的成績1:"); scanf("%f",&stu[now].score1); printf("\n輸入學(xué)生的成績2:"); scanf("%f",&stu[now].score2); stu[now].sum=stu[now].score1+stu[now].score2; now=now+1;sort(now); if(now>=max) { printf("\n\n\n\t\t存儲空間已滿無法繼續(xù)添加!!!\n\n"); break; } printf("\n\t\t\t是否繼續(xù)添加?(Y/N)"); getchar(); ch=getchar(); } while(ch!='n'||ch!='n'); } } voidsave()/*文件保存函數(shù)*/ { FILE*fp;/*fp為文件指針*/ inti; if((fp=fopen("stu_infer","wb"))==NULL) { printf("\n\n\t\t\t文件打開失敗!!!"); return; } for(i=0

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論