C語言學(xué)生成績管理程序設(shè)計實踐訓(xùn)練課程設(shè)計報告_第1頁
C語言學(xué)生成績管理程序設(shè)計實踐訓(xùn)練課程設(shè)計報告_第2頁
C語言學(xué)生成績管理程序設(shè)計實踐訓(xùn)練課程設(shè)計報告_第3頁
C語言學(xué)生成績管理程序設(shè)計實踐訓(xùn)練課程設(shè)計報告_第4頁
C語言學(xué)生成績管理程序設(shè)計實踐訓(xùn)練課程設(shè)計報告_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、摘 要隨著計算機(jī)技術(shù)的發(fā)展,特別是計算機(jī)網(wǎng)絡(luò)技術(shù)與數(shù)據(jù)庫技術(shù)的發(fā)展,人們的生活與工作方式已發(fā)生了很大的改觀。網(wǎng)絡(luò)技術(shù)的應(yīng)用使得計算機(jī)之間通信、信息共享成為可能,而數(shù)據(jù)庫技術(shù)的應(yīng)用則為人們提供了數(shù)據(jù)存儲、信息檢索、信息分析等功能,從而使得工作更高效地進(jìn)行。因此本次課程設(shè)計的課題是學(xué)生成績管理系統(tǒng),本文介紹課程設(shè)計課題的基本要求,詳細(xì)介紹本次課程設(shè)計系統(tǒng)中的各種功能及流程圖,以及對各種功能的有其詳細(xì)的源程序代碼,同時本文提供了完整的源程序代碼,并展示了系統(tǒng)中各種功能的使用和運(yùn)行效果。最后給出了在用c語言程序設(shè)計編程過程中的總結(jié),其中包含作者對本程序的獨特設(shè)計,作者的設(shè)計收獲、設(shè)計中遇到的困難和問題

2、,以及作者對設(shè)計題目及功能的改進(jìn)意見,英文摘要,查閱的參考文獻(xiàn)等方面的內(nèi)容。關(guān)鍵詞:網(wǎng)絡(luò)技術(shù);數(shù)據(jù)庫;c語言目 錄1本課程的作用和目的2 課程的基本要求3設(shè)計整體規(guī)劃及方案4功能分析及設(shè)計任務(wù)5流程圖6各功能的運(yùn)行過程及結(jié)果7討論及進(jìn)一步研究建議8課程設(shè)計心得9源程序abstract參考文獻(xiàn)1本課程的作用和目的為綜合應(yīng)用c語言程序設(shè)計理論知識、進(jìn)一步提高學(xué)生綜合解決問題、協(xié)調(diào)工作的能力和良好的軟件開發(fā)習(xí)慣,特安排本實驗內(nèi)容。希望通過該實習(xí)能夠進(jìn)一步激發(fā)學(xué)生的學(xué)習(xí)熱情,培養(yǎng)學(xué)生初步編程的能力,為后續(xù)的學(xué)習(xí)和發(fā)展奠定基礎(chǔ)。2.課程基本要求基本要求:(1)能按學(xué)期、按班級完成對學(xué)生成績的錄入。(2)

3、能按班級統(tǒng)計學(xué)生的成績,求學(xué)生的總分及平均分,并能根據(jù)學(xué)生的平均成績進(jìn)行排序(3)能查詢學(xué)生成績,不及格科目及學(xué)生名單(4)能按班級輸出學(xué)生的成績單(5)能按學(xué)號刪除學(xué)生紀(jì)錄,成績等。(6)將學(xué)生的學(xué)號、姓名及各門課程的成績等信息保存于外部存儲器的文件中。創(chuàng)新要求:在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計。信息描述:錄入學(xué)生成績信息(包括學(xué)生學(xué)號、姓名、各門課程的成績等)。3.設(shè)計整體規(guī)劃及方案整個程序的設(shè)計是通過對每一個功能的設(shè)計,然后,再對每一個功能的程序進(jìn)行模塊化,從而形成一個完整的學(xué)生成績管理系統(tǒng)。在對于給定問題進(jìn)行透徹的了解和詳細(xì)的分析的基礎(chǔ)上,把問題分解成若干個按順序執(zhí)行的邏輯部分。每個子

4、任務(wù)如果仍很復(fù)雜,還可以再分解為若干個子任務(wù),如此逐層分解。4.功能分析及設(shè)計任務(wù)能按學(xué)期、按班級完成對學(xué)生成績的錄入、修改。能按班級統(tǒng)計學(xué)生的成績,求學(xué)生的總分及平均分,并能根據(jù)學(xué)生的平均成績進(jìn)行排序。能查詢學(xué)生成績,不及格科目及學(xué)生名單。將學(xué)生的學(xué)號、姓名及各門課程的成績等信息保存于外部存儲器的文件中能按班級輸出學(xué)生的成績單。系統(tǒng)以菜單方式工作。5.流程圖開始主界面顯示所有學(xué)生信息修改學(xué)生記錄刪除學(xué)生記錄按姓名查詢學(xué)生記錄按平均成績排序按班級查詢按學(xué)期查詢增加學(xué)生記錄顯示不及格學(xué)生信息結(jié)束6. 各功能的運(yùn)行過程及結(jié)果1號功能顯示所有學(xué)生信息2號功能修改學(xué)生記錄3號功能刪除學(xué)生記錄4號功能按

5、姓名查詢學(xué)生記錄5號功能按平均成績排序6號功能按班級查詢7號功能按學(xué)期查詢8號功能增加學(xué)生記錄9號功能顯示不及格學(xué)生信息7. 討論及進(jìn)一步研究建議由于對c語言的系統(tǒng)編程還不是很熟悉,這個學(xué)生信息管理程序仍有不足之處和要改進(jìn)的地方。在這里進(jìn)行討論。不足之處有:1.1、由于程序運(yùn)行窗口尺寸不夠大,輸入的數(shù)據(jù)長度有要求,不能夠輸入的太長否則就會輸出結(jié)果排列不整齊甚至無法輸出數(shù)據(jù)。1.2、結(jié)構(gòu)體中的班級只能輸入整形變量。如果把班級定義為字符數(shù)組的話,暫時找不到辦法不通過鍵盤輸入,直接給結(jié)構(gòu)體中的字符數(shù)組賦值。1.3、排序方法是采用冒泡排序法,對平均值進(jìn)行排序。不過一旦選擇排序,會把文件中的全部結(jié)構(gòu)體進(jìn)

6、行排序,然后根據(jù)用戶輸入選擇,按班級或?qū)W期顯示出來。如果只按班級或?qū)W期進(jìn)行排序的話,要對文件中的結(jié)構(gòu)體進(jìn)行篩選,這樣就不能使用冒泡排序法,暫時還想不出其他方法。8.課程設(shè)計心得大二時我們學(xué)習(xí)了c這一編程語言,但我們感覺學(xué)的很淺薄,平時都只能編一些比較小的程序,對一些比較大的程序都無從下手。這次課程設(shè)計花了三天,通過和同學(xué)的討論要與不斷地嘗試,讓我們學(xué)到了不少的知識,開拓了視野?;仡欉@次課程設(shè)計,至今我們收獲慨頗多,自從拿到題目到完成整個編程,從理論到實踐,在整整三天的日子里,可以學(xué)到很多很多的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使

7、我懂得了理論與實際相結(jié)合是很重要的,只有理論和知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實際相結(jié)合起來,從理論中得出結(jié)論,才能真正提高自己的實際動手能力和獨立思考能力。在我們小組有解決不了的問題時,我們會主動查閱相關(guān)的資料,或向其他同學(xué)詢問,這不僅豐富了我們的知識,還增進(jìn)了我們同學(xué)之間的友誼。為了增大信息的安全性,需要用文件來存儲信息,由于我們在上課時不注重對文件的運(yùn)用,所以在這方面有較大的困難。我們先將書本認(rèn)認(rèn)真真地看了一遍,又做了一下課后習(xí)題來驗證和增進(jìn)自己的理解,終于,經(jīng)過我們的不懈努力,我們小組的程序有了突破,成功地實現(xiàn)了用文件來保存并查看學(xué)生的信息。通過這次課程設(shè)計,我們發(fā)現(xiàn)了自己的不

8、足之處,對以前所學(xué)的知識理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體、文件等等,這次課程設(shè)計,讓我們重新溫習(xí)了c語言的相關(guān)知識,并且也讓我們對c語言編程的印象有了很大改觀,發(fā)現(xiàn)c語言也可以完成這么實用的程序。這次課程設(shè)計讓我們對c語言溫故而知新,也大大提高我們小組對c語言編程的興趣和信心。9.源程序#include #include #include /*定義學(xué)生結(jié)構(gòu)體*/struct studentchar id20;char name20;int cla;int term;float mark1;float mark2;float mark3;float average;float sum

9、;/*聲明學(xué)生數(shù)組及學(xué)生數(shù)量*/struct student students1000;int num=0;/*求平均值*/float avg(struct student stu)return (stu.mark1+stu.mark2+stu.mark3)/3;/求總分float sum(struct student stu)return (stu.mark1+stu.mark2+stu.mark3);/找出不及格學(xué)生void nopass()printf(-不及格學(xué)生信息-n);printf(%6s%10s%10s%8s%8s%8s%8s%10s%10sn,學(xué)號,姓名, 班級,學(xué)期,成績,

10、成績,成績,總分,平均成績);for (int i=0;inum;i+)if(studentsi.mark160|studentsi.mark260|studentsi.mark360)printf(%6s%10s%10d%8.2d%8.2f%8.2f%8.2f%10.2f%10.2fn,studentsi.id,studentsi.name,studentsi.cla,studentsi.term,studentsi.mark1,studentsi.mark2,studentsi.mark3,studentsi.sum,studentsi.average);/通過學(xué)期查詢void terms

11、erch()int term;printf(請輸入要查詢的學(xué)期:);scanf(%d,&term);getchar();printf(%6s%10s%10s%8s%8s%8s%8s%10s%10sn,學(xué)號,姓名, 班級,學(xué)期,成績,成績,成績,總分,平均成績);printf(-n);for (int i=0;inum;i+)if(studentsi.term=term)printf(%6s%10s%10d%8.2d%8.2f%8.2f%8.2f%10.2f%10.2fn,studentsi.id,studentsi.name,studentsi.cla,studentsi.term,stude

12、ntsi.mark1,studentsi.mark2,studentsi.mark3,studentsi.sum,studentsi.average);/*按平均值排序*/void student_sortbyaverage()int i,j;struct student tmp;for (i=0;inum;i+)for (j=1;jnum-i;j+)if (studentsj-1.averagestudentsj.average)tmp=studentsj-1;studentsj-1=studentsj;studentsj=tmp;/通過班級查詢void classserch() stude

13、nt_sortbyaverage();int cla;printf(請輸入要查詢的班級:);scanf(%d,&cla);getchar();printf(%6s%10s%10s%8s%8s%8s%8s%10s%10sn,學(xué)號,姓名, 班級,學(xué)期,成績,成績,成績,總分,平均成績);printf(-n);for (int i=0;inum;i+)if(studentsi.cla=cla)printf(%6s%10s%10d%8.2d%8.2f%8.2f%8.2f%10.2f%10.2fn,studentsi.id,studentsi.name,studentsi.cla,studentsi.t

14、erm,studentsi.mark1,studentsi.mark2,studentsi.mark3,studentsi.sum,studentsi.average);/*通過學(xué)號返回數(shù)組下標(biāo)*/int student_searchbyindex(char id)int i;for (i=0;inum;i+)if (strcmp(studentsi.id,id)=0)return i;return -1;/*通過姓名返回數(shù)組下標(biāo)*/int student_searchbyname(char name)int i;for (i=0;inum;i+)if (strcmp(studentsi.na

15、me,name)=0)return i;return -1;/*顯示單條學(xué)生記錄*/void student_displaysingle(int index)printf(%6s%10s%10s%8s%8s%8s%8s%10s%10sn,學(xué)號,姓名, 班級,學(xué)期,成績,成績,成績,總分,平均成績);printf(-n);printf(%6s%10s%10d%8.2d%8.2f%8.2f%8.2f%10.2f%10.2fn,studentsindex.id,studentsindex.name,studentsindex.cla,studentsindex.term,studentsindex.

16、mark1,studentsindex.mark2,studentsindex.mark3,studentsindex.sum,studentsindex.average);/*插入學(xué)生信息*/void student_insert()int cla;int flag=0,term;int count=1;while(1)if(count=1)count-;printf(請輸入學(xué)期:);scanf(%d,&term);getchar();printf(請輸入班級:);scanf(%d,&cla);getchar();studentsnum.cla=cla;studentsnum.term=te

17、rm;printf(請輸入學(xué)號:);scanf(%s,&studentsnum.id);getchar();printf(請輸入姓名:);scanf(%s,&studentsnum.name);getchar();printf(請輸入成績:); scanf(%f,&studentsnum.mark1);getchar();printf(請輸入成績:);scanf(%f,&studentsnum.mark2);getchar();printf(請輸入成績:);scanf(%f,&studentsnum.mark3);getchar();studentsnum.average=avg(studen

18、tsnum);studentsnum.sum=sum(studentsnum);num+;printf(是否繼續(xù)?(y/n);if (getchar()=n)break;/*修改學(xué)生信息*/void student_modify()/float mark1,mark2,mark3;while(1)char id20;int index;printf(請輸入要修改的學(xué)生的學(xué)號:);scanf(%s,&id);getchar();index=student_searchbyindex(id);if (index=-1)printf(學(xué)生不存在!n);elseprintf(你要修改的學(xué)生信息為:n)

19、;student_displaysingle(index);printf(- 請輸入新值-n);printf(請輸入學(xué)號:);scanf(%s,&studentsindex.id);getchar();printf(請輸入姓名:);scanf(%s,&studentsindex.name);getchar();printf(請輸入班級:);scanf(%d,&studentsindex.cla);getchar();printf(請輸入學(xué)期:);scanf(%d,&studentsindex.term);getchar();printf(請輸入成績:);scanf(%f,&studentsin

20、dex.mark1);getchar();printf(請輸入成績:);scanf(%f,&studentsindex.mark2);getchar();printf(請輸入成績:);scanf(%f,&studentsindex.mark3);getchar();studentsindex.average=avg(studentsindex);printf(是否繼續(xù)?(y/n);if (getchar()=n)break;/*刪除學(xué)生信息*/void student_delete()int i;while(1)char id20;int index;printf(請輸入要刪除的學(xué)生的學(xué)號:)

21、;scanf(%s,&id);getchar();index=student_searchbyindex(id);if (index=-1)printf(學(xué)生不存在!n);elseprintf(你要刪除的學(xué)生信息為:n);student_displaysingle(index);printf(是否真的要刪除?(y/n);if (getchar()=y)for (i=index;inum-1;i+)studentsi=studentsi+1;num-;getchar();printf(是否繼續(xù)?(y/n);if (getchar()=n)break;/*按姓名查詢*/void student_s

22、elect()while(1)char name20;int index;printf(請輸入要查詢的學(xué)生的姓名:);scanf(%s,&name);getchar();index=student_searchbyname(name);if (index=-1)printf(學(xué)生不存在!n);elseprintf(你要查詢的學(xué)生信息為:n);student_displaysingle(index);printf(是否繼續(xù)?(y/n);if (getchar()=n)break;/*顯示學(xué)生信息*/void student_display()int i;printf(%6s%10s%10s%8s

23、%8s%8s%8s%10s%10sn,學(xué)號,姓名, 班級,學(xué)期,成績,成績,成績,總分,平均成績);printf(-n);for (i=0;inum;i+)printf(%6s%10s%10d%8.2d%8.2f%8.2f%8.2f%10.2f%10.2fn,studentsi.id,studentsi.name,studentsi.cla,studentsi.term,studentsi.mark1,studentsi.mark2,studentsi.mark3,studentsi.sum,studentsi.average);/*將學(xué)生信息從文件讀出*/void io_readinfo()

24、file *fp;int i;if (fp=fopen(database.txt,rb)=null)printf(不能打開文件!n);return;if (fread(&num,sizeof(int),1,fp)!=1)num=-1;elsefor(i=0;inum;i+)fread(&studentsi,sizeof(struct student),1,fp);fclose(fp);/*將學(xué)生信息寫入文件*/void io_writeinfo()file *fp;int i;if (fp=fopen(database.txt,wb)=null)printf(不能打開文件!n);return;

25、if (fwrite(&num,sizeof(int),1,fp)!=1)printf(寫入文件錯誤!n);for (i=0;inum;i+)if (fwrite(&studentsi,sizeof(struct student),1,fp)!=1)printf(寫入文件錯誤!n); fclose(fp);/*主程序*/void main()int choice;io_readinfo();while(1)/*主菜單*/printf(n- 學(xué)生成績管理系統(tǒng)-n);printf(1. 顯示所有學(xué)生信息n);printf(2. 修改學(xué)生記錄n);printf(3. 刪除學(xué)生記錄n);printf(

26、4. 按姓名查詢學(xué)生記錄n);printf(5. 按平均成績排序n);printf(6. 按班級查詢n);printf(7. 按學(xué)期查詢n);printf(8. 增加學(xué)生記錄n);printf(9. 顯示不及格學(xué)生信息n);printf(10. 退出n);printf(請選擇(1-10):);scanf(%d,&choice);getchar();switch(choice)case 1:student_display();break;case 2:student_modify();break;case 3:student_delete();break;case 4:student_selec

27、t();break;case 5:student_sortbyaverage();student_display();break;case 6:classserch();break;case 7:termserch();break;case 8:student_insert();break;case 9:nopass();break;case 10:exit(0);break;io_writeinfo();abstractthe subject of this design is student score management system. with the development of

28、computer technology, especially the development of computer network technology and database technology, peoples life and work style has changed a lot. the application of network technology makes it possible to communicate and share information between computers, and the application of database technology provides people with functions of data storage, information retrieval an

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論