




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、摘 要隨著計(jì)算機(jī)技術(shù)的發(fā)展,特別是計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)與數(shù)據(jù)庫(kù)技術(shù)的發(fā)展,人們的生活與工作方式已發(fā)生了很大的改觀。網(wǎng)絡(luò)技術(shù)的應(yīng)用使得計(jì)算機(jī)之間通信、信息共享成為可能,而數(shù)據(jù)庫(kù)技術(shù)的應(yīng)用則為人們提供了數(shù)據(jù)存儲(chǔ)、信息檢索、信息分析等功能,從而使得工作更高效地進(jìn)行。因此本次課程設(shè)計(jì)的課題是學(xué)生成績(jī)管理系統(tǒng),本文介紹課程設(shè)計(jì)課題的基本要求,詳細(xì)介紹本次課程設(shè)計(jì)系統(tǒng)中的各種功能及流程圖,以及對(duì)各種功能的有其詳細(xì)的源程序代碼,同時(shí)本文提供了完整的源程序代碼,并展示了系統(tǒng)中各種功能的使用和運(yùn)行效果。最后給出了在用c語(yǔ)言程序設(shè)計(jì)編程過(guò)程中的總結(jié),其中包含作者對(duì)本程序的獨(dú)特設(shè)計(jì),作者的設(shè)計(jì)收獲、設(shè)計(jì)中遇到的困難和問(wèn)題
2、,以及作者對(duì)設(shè)計(jì)題目及功能的改進(jìn)意見(jiàn),英文摘要,查閱的參考文獻(xiàn)等方面的內(nèi)容。關(guān)鍵詞:網(wǎng)絡(luò)技術(shù);數(shù)據(jù)庫(kù);c語(yǔ)言目 錄1本課程的作用和目的2 課程的基本要求3設(shè)計(jì)整體規(guī)劃及方案4功能分析及設(shè)計(jì)任務(wù)5流程圖6各功能的運(yùn)行過(guò)程及結(jié)果7討論及進(jìn)一步研究建議8課程設(shè)計(jì)心得9源程序abstract參考文獻(xiàn)1本課程的作用和目的為綜合應(yīng)用c語(yǔ)言程序設(shè)計(jì)理論知識(shí)、進(jìn)一步提高學(xué)生綜合解決問(wèn)題、協(xié)調(diào)工作的能力和良好的軟件開(kāi)發(fā)習(xí)慣,特安排本實(shí)驗(yàn)內(nèi)容。希望通過(guò)該實(shí)習(xí)能夠進(jìn)一步激發(fā)學(xué)生的學(xué)習(xí)熱情,培養(yǎng)學(xué)生初步編程的能力,為后續(xù)的學(xué)習(xí)和發(fā)展奠定基礎(chǔ)。2.課程基本要求基本要求:(1)能按學(xué)期、按班級(jí)完成對(duì)學(xué)生成績(jī)的錄入。(2)
3、能按班級(jí)統(tǒng)計(jì)學(xué)生的成績(jī),求學(xué)生的總分及平均分,并能根據(jù)學(xué)生的平均成績(jī)進(jìn)行排序(3)能查詢學(xué)生成績(jī),不及格科目及學(xué)生名單(4)能按班級(jí)輸出學(xué)生的成績(jī)單(5)能按學(xué)號(hào)刪除學(xué)生紀(jì)錄,成績(jī)等。(6)將學(xué)生的學(xué)號(hào)、姓名及各門(mén)課程的成績(jī)等信息保存于外部存儲(chǔ)器的文件中。創(chuàng)新要求:在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計(jì)。信息描述:錄入學(xué)生成績(jī)信息(包括學(xué)生學(xué)號(hào)、姓名、各門(mén)課程的成績(jī)等)。3.設(shè)計(jì)整體規(guī)劃及方案整個(gè)程序的設(shè)計(jì)是通過(guò)對(duì)每一個(gè)功能的設(shè)計(jì),然后,再對(duì)每一個(gè)功能的程序進(jìn)行模塊化,從而形成一個(gè)完整的學(xué)生成績(jī)管理系統(tǒng)。在對(duì)于給定問(wèn)題進(jìn)行透徹的了解和詳細(xì)的分析的基礎(chǔ)上,把問(wèn)題分解成若干個(gè)按順序執(zhí)行的邏輯部分。每個(gè)子
4、任務(wù)如果仍很復(fù)雜,還可以再分解為若干個(gè)子任務(wù),如此逐層分解。4.功能分析及設(shè)計(jì)任務(wù)能按學(xué)期、按班級(jí)完成對(duì)學(xué)生成績(jī)的錄入、修改。能按班級(jí)統(tǒng)計(jì)學(xué)生的成績(jī),求學(xué)生的總分及平均分,并能根據(jù)學(xué)生的平均成績(jī)進(jìn)行排序。能查詢學(xué)生成績(jī),不及格科目及學(xué)生名單。將學(xué)生的學(xué)號(hào)、姓名及各門(mén)課程的成績(jī)等信息保存于外部存儲(chǔ)器的文件中能按班級(jí)輸出學(xué)生的成績(jī)單。系統(tǒng)以菜單方式工作。5.流程圖開(kāi)始主界面顯示所有學(xué)生信息修改學(xué)生記錄刪除學(xué)生記錄按姓名查詢學(xué)生記錄按平均成績(jī)排序按班級(jí)查詢按學(xué)期查詢?cè)黾訉W(xué)生記錄顯示不及格學(xué)生信息結(jié)束6. 各功能的運(yùn)行過(guò)程及結(jié)果1號(hào)功能顯示所有學(xué)生信息2號(hào)功能修改學(xué)生記錄3號(hào)功能刪除學(xué)生記錄4號(hào)功能按
5、姓名查詢學(xué)生記錄5號(hào)功能按平均成績(jī)排序6號(hào)功能按班級(jí)查詢7號(hào)功能按學(xué)期查詢8號(hào)功能增加學(xué)生記錄9號(hào)功能顯示不及格學(xué)生信息7. 討論及進(jìn)一步研究建議由于對(duì)c語(yǔ)言的系統(tǒng)編程還不是很熟悉,這個(gè)學(xué)生信息管理程序仍有不足之處和要改進(jìn)的地方。在這里進(jìn)行討論。不足之處有:1.1、由于程序運(yùn)行窗口尺寸不夠大,輸入的數(shù)據(jù)長(zhǎng)度有要求,不能夠輸入的太長(zhǎng)否則就會(huì)輸出結(jié)果排列不整齊甚至無(wú)法輸出數(shù)據(jù)。1.2、結(jié)構(gòu)體中的班級(jí)只能輸入整形變量。如果把班級(jí)定義為字符數(shù)組的話,暫時(shí)找不到辦法不通過(guò)鍵盤(pán)輸入,直接給結(jié)構(gòu)體中的字符數(shù)組賦值。1.3、排序方法是采用冒泡排序法,對(duì)平均值進(jìn)行排序。不過(guò)一旦選擇排序,會(huì)把文件中的全部結(jié)構(gòu)體進(jìn)
6、行排序,然后根據(jù)用戶輸入選擇,按班級(jí)或?qū)W期顯示出來(lái)。如果只按班級(jí)或?qū)W期進(jìn)行排序的話,要對(duì)文件中的結(jié)構(gòu)體進(jìn)行篩選,這樣就不能使用冒泡排序法,暫時(shí)還想不出其他方法。8.課程設(shè)計(jì)心得大二時(shí)我們學(xué)習(xí)了c這一編程語(yǔ)言,但我們感覺(jué)學(xué)的很淺薄,平時(shí)都只能編一些比較小的程序,對(duì)一些比較大的程序都無(wú)從下手。這次課程設(shè)計(jì)花了三天,通過(guò)和同學(xué)的討論要與不斷地嘗試,讓我們學(xué)到了不少的知識(shí),開(kāi)拓了視野?;仡欉@次課程設(shè)計(jì),至今我們收獲慨頗多,自從拿到題目到完成整個(gè)編程,從理論到實(shí)踐,在整整三天的日子里,可以學(xué)到很多很多的東西,同時(shí)不僅可以鞏固了以前所學(xué)過(guò)的知識(shí),而且學(xué)到了很多在書(shū)本上所沒(méi)有學(xué)到過(guò)的知識(shí)。通過(guò)這次課程設(shè)計(jì)使
7、我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論和知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)際相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考能力。在我們小組有解決不了的問(wèn)題時(shí),我們會(huì)主動(dòng)查閱相關(guān)的資料,或向其他同學(xué)詢問(wèn),這不僅豐富了我們的知識(shí),還增進(jìn)了我們同學(xué)之間的友誼。為了增大信息的安全性,需要用文件來(lái)存儲(chǔ)信息,由于我們?cè)谏险n時(shí)不注重對(duì)文件的運(yùn)用,所以在這方面有較大的困難。我們先將書(shū)本認(rèn)認(rèn)真真地看了一遍,又做了一下課后習(xí)題來(lái)驗(yàn)證和增進(jìn)自己的理解,終于,經(jīng)過(guò)我們的不懈努力,我們小組的程序有了突破,成功地實(shí)現(xiàn)了用文件來(lái)保存并查看學(xué)生的信息。通過(guò)這次課程設(shè)計(jì),我們發(fā)現(xiàn)了自己的不
8、足之處,對(duì)以前所學(xué)的知識(shí)理解得不夠深刻,掌握得不夠牢固,比如說(shuō)結(jié)構(gòu)體、文件等等,這次課程設(shè)計(jì),讓我們重新溫習(xí)了c語(yǔ)言的相關(guān)知識(shí),并且也讓我們對(duì)c語(yǔ)言編程的印象有了很大改觀,發(fā)現(xiàn)c語(yǔ)言也可以完成這么實(shí)用的程序。這次課程設(shè)計(jì)讓我們對(duì)c語(yǔ)言溫故而知新,也大大提高我們小組對(duì)c語(yǔ)言編程的興趣和信心。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é)號(hào),姓名, 班級(jí),學(xué)期,成績(jī),
10、成績(jī),成績(jī),總分,平均成績(jī));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);/通過(guò)學(xué)期查詢void terms
11、erch()int term;printf(請(qǐng)輸入要查詢的學(xué)期:);scanf(%d,&term);getchar();printf(%6s%10s%10s%8s%8s%8s%8s%10s%10sn,學(xué)號(hào),姓名, 班級(jí),學(xué)期,成績(jī),成績(jī),成績(jī),總分,平均成績(jī));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;/通過(guò)班級(jí)查詢void classserch() stude
13、nt_sortbyaverage();int cla;printf(請(qǐng)輸入要查詢的班級(jí):);scanf(%d,&cla);getchar();printf(%6s%10s%10s%8s%8s%8s%8s%10s%10sn,學(xué)號(hào),姓名, 班級(jí),學(xué)期,成績(jī),成績(jī),成績(jī),總分,平均成績(jī));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);/*通過(guò)學(xué)號(hào)返回?cái)?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;/*通過(guò)姓名返回?cái)?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é)號(hào),姓名, 班級(jí),學(xué)期,成績(jī),成績(jī),成績(jī),總分,平均成績(jī));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(請(qǐng)輸入學(xué)期:);scanf(%d,&term);getchar();printf(請(qǐng)輸入班級(jí):);scanf(%d,&cla);getchar();studentsnum.cla=cla;studentsnum.term=te
17、rm;printf(請(qǐng)輸入學(xué)號(hào):);scanf(%s,&studentsnum.id);getchar();printf(請(qǐng)輸入姓名:);scanf(%s,&studentsnum.name);getchar();printf(請(qǐng)輸入成績(jī):); scanf(%f,&studentsnum.mark1);getchar();printf(請(qǐng)輸入成績(jī):);scanf(%f,&studentsnum.mark2);getchar();printf(請(qǐng)輸入成績(jī):);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(請(qǐng)輸入要修改的學(xué)生的學(xué)號(hào):);scanf(%s,&id);getchar();index=student_searchbyindex(id);if (index=-1)printf(學(xué)生不存在!n);elseprintf(你要修改的學(xué)生信息為:n)
19、;student_displaysingle(index);printf(- 請(qǐng)輸入新值-n);printf(請(qǐng)輸入學(xué)號(hào):);scanf(%s,&studentsindex.id);getchar();printf(請(qǐng)輸入姓名:);scanf(%s,&studentsindex.name);getchar();printf(請(qǐng)輸入班級(jí):);scanf(%d,&studentsindex.cla);getchar();printf(請(qǐng)輸入學(xué)期:);scanf(%d,&studentsindex.term);getchar();printf(請(qǐng)輸入成績(jī):);scanf(%f,&studentsin
20、dex.mark1);getchar();printf(請(qǐng)輸入成績(jī):);scanf(%f,&studentsindex.mark2);getchar();printf(請(qǐng)輸入成績(jī):);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(請(qǐng)輸入要?jiǎng)h除的學(xué)生的學(xué)號(hào):)
21、;scanf(%s,&id);getchar();index=student_searchbyindex(id);if (index=-1)printf(學(xué)生不存在!n);elseprintf(你要?jiǎng)h除的學(xué)生信息為:n);student_displaysingle(index);printf(是否真的要?jiǎng)h除?(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(請(qǐng)輸入要查詢的學(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é)號(hào),姓名, 班級(jí),學(xué)期,成績(jī),成績(jī),成績(jī),總分,平均成績(jī));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(不能打開(kāi)文件!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é)生信息寫(xiě)入文件*/void io_writeinfo()file *fp;int i;if (fp=fopen(database.txt,wb)=null)printf(不能打開(kāi)文件!n);return;
25、if (fwrite(&num,sizeof(int),1,fp)!=1)printf(寫(xiě)入文件錯(cuò)誤!n);for (i=0;inum;i+)if (fwrite(&studentsi,sizeof(struct student),1,fp)!=1)printf(寫(xiě)入文件錯(cuò)誤!n); fclose(fp);/*主程序*/void main()int choice;io_readinfo();while(1)/*主菜單*/printf(n- 學(xué)生成績(jī)管理系統(tǒng)-n);printf(1. 顯示所有學(xué)生信息n);printf(2. 修改學(xué)生記錄n);printf(3. 刪除學(xué)生記錄n);printf(
26、4. 按姓名查詢學(xué)生記錄n);printf(5. 按平均成績(jī)排序n);printf(6. 按班級(jí)查詢n);printf(7. 按學(xué)期查詢n);printf(8. 增加學(xué)生記錄n);printf(9. 顯示不及格學(xué)生信息n);printf(10. 退出n);printf(請(qǐng)選擇(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ē)領(lǐng)域新技術(shù)的應(yīng)用探討試題及答案
- 幼兒園認(rèn)識(shí)圖形的樂(lè)趣題試題及答案
- 電池?zé)峁芾砑夹g(shù)考題試題及答案
- 智能充電技術(shù)應(yīng)用測(cè)試試題及答案
- 教師教育教學(xué)反思的道德維度探討試題及答案
- 綠色金融行業(yè)發(fā)展趨勢(shì)與市場(chǎng)前景深度解析
- 物質(zhì)的量和濃度計(jì)量的基本辦法試題及答案
- 海鮮知識(shí)測(cè)試題及答案
- 政策執(zhí)行對(duì)創(chuàng)業(yè)生態(tài)的正向影響試題及答案
- 大學(xué)化學(xué)學(xué)習(xí)中的合作學(xué)習(xí)模式試題及答案
- 2025年遼寧省葫蘆島市綏中縣中考一模語(yǔ)文試題含答案
- 家政經(jīng)理培訓(xùn)課件
- 2024-2025學(xué)年高一下學(xué)期期中考試化學(xué)試卷
- 四川省南充市高級(jí)中學(xué)2024-2025學(xué)年高二下學(xué)期期中考試 化學(xué)(含答案)
- 國(guó)際教育規(guī)劃合同8篇
- 整裝定制合同協(xié)議
- 產(chǎn)品研發(fā)項(xiàng)目管理制度
- 2025年全國(guó)中學(xué)生漢字聽(tīng)寫(xiě)大會(huì)比賽題庫(kù)及解析(共八套)
- 關(guān)于臨期商品的處理管理辦法
- 新能源全面入市是構(gòu)建新型電力系統(tǒng)的重要支撐-136號(hào)文政策解讀
- 2025消防業(yè)務(wù)理論考試題庫(kù)及參考答案
評(píng)論
0/150
提交評(píng)論