學(xué)生成績管理系統(tǒng)課程設(shè)計論文_第1頁
學(xué)生成績管理系統(tǒng)課程設(shè)計論文_第2頁
學(xué)生成績管理系統(tǒng)課程設(shè)計論文_第3頁
學(xué)生成績管理系統(tǒng)課程設(shè)計論文_第4頁
學(xué)生成績管理系統(tǒng)課程設(shè)計論文_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、摘 要“學(xué)生成績管理系統(tǒng)”主要用于完成日常教育工作中對學(xué)生成績檔案的數(shù)字化管理。該系統(tǒng)可使學(xué)校教職員工減輕工作壓力,系統(tǒng)地對教務(wù)、學(xué)生選課、教學(xué)和學(xué)生成績等各項服務(wù)和信息進(jìn)行管理。同時,可以有效減少學(xué)生成績管理工作量、提高查詢速度和方便分析。本論文從系統(tǒng)分析、系統(tǒng)設(shè)計、系統(tǒng)實施和使用等幾個方面對學(xué)生成績管理系統(tǒng)的功能需求、體系結(jié)構(gòu)和開發(fā)等進(jìn)行了介紹,較好實現(xiàn)了該系統(tǒng)的一個原型系統(tǒng)。 關(guān)鍵字:原型系統(tǒng);需求分析;系統(tǒng)設(shè)計;系統(tǒng)實施;系統(tǒng)使用;C#   目錄1引言11.1開發(fā)背景11.2開發(fā)前景21.3開發(fā)目的32系統(tǒng)需求分析42.1系統(tǒng)問題的提出42.2系統(tǒng)必要性5

2、3 系統(tǒng)總體設(shè)計63.1系統(tǒng)主要功能63.2系統(tǒng)流圖和主要界面展示63.2.1系統(tǒng)流圖63.2.2 系統(tǒng)主界面83.3 系統(tǒng)的主要模塊83.3.1增加學(xué)生記錄:83.3.2修改學(xué)生記錄模塊103.3.3保存文件模塊133.3.4學(xué)生記錄排序143.3.5結(jié)束語提示模塊174 系統(tǒng)測試194.1 增加學(xué)生記錄測試194.2 打開文件測試194.3 學(xué)生成績排序204.4 查詢學(xué)生成績記錄224.5 退出學(xué)生成績查詢系統(tǒng)235 課程設(shè)計總結(jié)25參考文獻(xiàn)27附錄281引言1.1開發(fā)背景隨著計算機(jī)應(yīng)用的日益普及,數(shù)據(jù)庫技術(shù)已成為越來越重要的技術(shù)基礎(chǔ)。數(shù)據(jù)庫即使是保證應(yīng)用軟件質(zhì)量的重要環(huán)節(jié),專業(yè)化、高效

3、的應(yīng)用系統(tǒng)對于數(shù)據(jù)庫技術(shù)的要求也越來越高。數(shù)據(jù)庫是數(shù)據(jù)管理的最新技術(shù),是計算機(jī)學(xué)科的重要分支。十余年來,數(shù)據(jù)庫管理系統(tǒng)已從專用的應(yīng)用的程序包發(fā)展成為通用的系統(tǒng)軟件。由于數(shù)據(jù)庫具有數(shù)據(jù)結(jié)構(gòu)化、最低冗余度、較高的程序與數(shù)據(jù)獨立性、易于擴(kuò)充、易于編制應(yīng)用程序等優(yōu)點,較大的信息系統(tǒng)都是建立在數(shù)據(jù)庫設(shè)計之上的。數(shù)據(jù)庫技術(shù)是計算機(jī)領(lǐng)域中最為活躍的技術(shù)之一,是計算機(jī)科學(xué)的重分支,它的出現(xiàn)對于許多企事業(yè)單位提高科學(xué)管理水平都起到舉足輕重的作用。對于一個企事業(yè)單位來說,數(shù)據(jù)庫的建設(shè)規(guī)模、數(shù)據(jù)庫信息量的大小和使用頻度已成為衡量這個機(jī)構(gòu)信息化程度的重要標(biāo)志。數(shù)據(jù)庫技術(shù)是計算機(jī)科學(xué)與技術(shù)中發(fā)展最快的領(lǐng)域之一,也是應(yīng)用

4、最廣的技術(shù)之一,它已成為計算機(jī)信息系統(tǒng)與應(yīng)用系統(tǒng)的核心技術(shù)和重要基礎(chǔ)。數(shù)據(jù)庫在一個信息管理系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)設(shè)計的好壞將直接對應(yīng)用系統(tǒng)的效率以及實現(xiàn)的效果產(chǎn)生影響。合理的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計可以提高數(shù)據(jù)存儲效率,保證數(shù)據(jù)的完整和一致。數(shù)據(jù)庫是數(shù)據(jù)管理的最新技術(shù),是計算機(jī)科學(xué)的重要分支。今天,信息資源已成為各個部門的重要財富和資源。建立一個滿足各級部門信息處理要求的行之有效的信息系統(tǒng)也成為一個企業(yè)生存和發(fā)展的重要條件。因此,作為信息系統(tǒng)核心和基礎(chǔ)的數(shù)據(jù)庫技術(shù)得到越來越廣泛的應(yīng)用,從小型單項事務(wù)處理系統(tǒng)到大型信息系統(tǒng),越來越多新的應(yīng)用領(lǐng)域采用數(shù)據(jù)庫技術(shù)來存儲和處理信息資源。數(shù)據(jù)庫設(shè)計是

5、建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng)的技術(shù),是信息系統(tǒng)開發(fā)和建設(shè)中的核心技術(shù),具體說,是指對于一個給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng),使之能夠有效地存儲數(shù)據(jù),滿足各種用戶的應(yīng)用需求(信息要求和處理要求)。數(shù)據(jù)庫一個信息系統(tǒng)的各個部分能否緊密地結(jié)合在一起以及如何結(jié)合,關(guān)鍵在數(shù)據(jù)庫。學(xué)生成績管理系統(tǒng)是一個單位不可缺少的部分,它的內(nèi)容對于單位的決策者和管理者來說都至關(guān)重要,所以學(xué)生成績管理系統(tǒng)應(yīng)該能夠為用戶提供充足的信息和快捷的的查詢手段。  1.2開發(fā)前景在我國,各大中小學(xué)校的各類信息管理系統(tǒng)并非一個新的課題,但也有的學(xué)校所有的工作幾乎還是手工操作來完成。計算機(jī)技術(shù)

6、在日新月異的發(fā)展,但是有很多學(xué)校,學(xué)校的各種業(yè)務(wù)管理都依然由手工操作來完成,十分落后,效率極低,成本很大。隨著社會的發(fā)展,信息化是社會進(jìn)程的必然趨勢,學(xué)校管理只有快,準(zhǔn),精和公平才能更好地發(fā)揮其社會價值。所以機(jī)器代替人力是必然的歷史發(fā)展趨勢,只有領(lǐng)導(dǎo)的重視和支持才能從人工操作改為計算機(jī)的自動化系統(tǒng)。人工操作必將被計算機(jī)代替。1.3開發(fā)目的學(xué)生成績管理系統(tǒng)如果可以為學(xué)校所使用,將會改變以往靠手工管理學(xué)生成績的狀況,可以樹立良好的辦學(xué)形象,提高工作效率,節(jié)省人力和物力。2系統(tǒng)需求分析2.1系統(tǒng)問題的提出隨著計算機(jī)技術(shù)的發(fā)展,特別是計算機(jī)網(wǎng)絡(luò)技術(shù)與數(shù)據(jù)庫技術(shù)的發(fā)展,使人們的生活與工作方式發(fā)生了很大的

7、變化。網(wǎng)絡(luò)技術(shù)的應(yīng)用使得計算機(jī)之間通信和信息共享成為可能,而數(shù)據(jù)庫技術(shù)的應(yīng)用則為人們奠定了數(shù)據(jù)存儲、信息檢索和數(shù)據(jù)分析等應(yīng)用功能的基礎(chǔ),使得各項業(yè)務(wù)工作通過信息化技術(shù)高效運(yùn)轉(zhuǎn)和被處理。數(shù)據(jù)庫始于20世紀(jì)60年代,經(jīng)過40多年的發(fā)展,現(xiàn)在已經(jīng)形成了理論體系,成為計算機(jī)軟件的一個重要分支。數(shù)據(jù)庫技術(shù)體現(xiàn)了當(dāng)代先進(jìn)的數(shù)據(jù)管理方法,使計算機(jī)的應(yīng)用真正滲透到國民經(jīng)濟(jì)各個部門,在數(shù)據(jù)處理領(lǐng)域發(fā)揮著越來越大的作用。而互聯(lián)網(wǎng)技術(shù)的出現(xiàn),更是進(jìn)一步豐富的人類生活,數(shù)字化生存已經(jīng)一步步走進(jìn)人們?nèi)粘5纳钆c工作。互聯(lián)網(wǎng)技術(shù)與數(shù)據(jù)庫技術(shù)的結(jié)合為計算的在人類生活中的應(yīng)用帶來了巨大的影響。產(chǎn)業(yè)信息化,管理現(xiàn)代化,科學(xué)化已

8、經(jīng)成為行業(yè)發(fā)展的重要課題,這不僅是企業(yè)提高自身競爭力,甚至是國家提高綜合國力,走向國民富強(qiáng)的重要手段。在我國,教育是一個影響著國富民強(qiáng)的重要行業(yè),隨著改革開放和市場經(jīng)濟(jì)的發(fā)展根據(jù)中國特有的國情發(fā)展,教育得到了國家的大力扶持與社會各界的高度重視,從而使教育業(yè)向現(xiàn)代規(guī)范化的方向高速發(fā)展,但是同發(fā)達(dá)國家相比,我國的教育行業(yè)的信息技術(shù)的應(yīng)用程度還很低,只有在大城市中發(fā)展較早、規(guī)模較大的院校中才使用計算機(jī)進(jìn)行教學(xué)管理,從教學(xué)和學(xué)生管理等方面提高工作效率,取得良好的社會和經(jīng)濟(jì)效益。而一些邊遠(yuǎn)地區(qū)傳統(tǒng)的、規(guī)模較小的教育機(jī)構(gòu)還沒有全部具備通過計算機(jī)和信息化技術(shù)全面進(jìn)行教學(xué)管理的能力。因此可見,隨著我國教育的迅

9、速發(fā)展,信息技術(shù)在其上的應(yīng)用會更加地廣泛和深入。2.2系統(tǒng)必要性在信息技術(shù)迅速發(fā)展的今天,網(wǎng)絡(luò)對于大對數(shù)人已經(jīng)不再陌生,并且其應(yīng)用在人們的工作、學(xué)習(xí)和生活中越來越多地發(fā)揮著不可替代的作用。很多學(xué)校紛紛根據(jù)自身的需要,采用了先進(jìn)的信息技術(shù)來加強(qiáng)教學(xué)管理、提高教學(xué)質(zhì)量。網(wǎng)上考試作為網(wǎng)絡(luò)教育不可缺少的組成部分,它與傳統(tǒng)的考試方式相比較而言,減少了教師出題,組織考試、批改試卷等工作量,提高了教師的工作效率,并且使考試更客觀公正。但是目前很多考試系統(tǒng)都是由軟件開發(fā)公司來開發(fā)并銷售的,多數(shù)考試系統(tǒng)力求功能全面,從而存在著設(shè)置參數(shù)過多、操作較難、成本較高等問題。所以開發(fā)一個實用夠用、操作簡單、使用方便、成本

10、較低的考試系統(tǒng)是很必要的。3 系統(tǒng)總體設(shè)計  3.1系統(tǒng)主要功能  一個基于系統(tǒng)開發(fā)的總體任務(wù)是實現(xiàn)學(xué)生成績管理,主要完成的功能有:保存學(xué)生成績記錄、修改學(xué)生成績記錄、統(tǒng)計學(xué)生信息和查詢學(xué)生記錄。其中查詢學(xué)生記錄還包括對全體學(xué)生所有科目成績進(jìn)行查詢,也能單獨對某個學(xué)生某一科進(jìn)行查詢并能實現(xiàn)添加、刪除記錄。成績表包括的字段:學(xué)號、姓名、課程號、課程名、成績。  3.2系統(tǒng)流圖和主要界面展示學(xué)生成績管理系統(tǒng)主要包括增加學(xué)生記錄以及查詢記錄、修改學(xué)生記錄以及刪除記錄、保存文件以及打開文件和統(tǒng)計信息以及顯示記錄; 3.2.1系統(tǒng)流圖學(xué)生學(xué)生成績管理系統(tǒng)的主要流程:學(xué)生成績

11、管理系統(tǒng)增加學(xué)生記錄查詢學(xué)生記錄修改學(xué)生記錄學(xué)生記錄排序統(tǒng)計信息打開文件保存文件顯示記錄圖3.1系統(tǒng)的主要結(jié)構(gòu)其中查詢學(xué)生記錄排序中還分別按姓名、學(xué)號和名次進(jìn)行升序和降序排列圖3.2記錄排序按姓名排序按學(xué)號排序按名次排序升序排列降序排序升序排列降序排序升序排列降序排序圖3.2學(xué)生記錄排序方法3.2.2 系統(tǒng)主界面程序運(yùn)行直接進(jìn)入主界面,主界面是系統(tǒng)的菜單所有的功能都能在界面展示圖3.3主界面圖3.3是學(xué)生成績管理系統(tǒng)的主界面;它主要包括增加學(xué)生記錄、查詢學(xué)生記錄、修改學(xué)生記錄、學(xué)生記錄排序、統(tǒng)計信息、打開文件、保存文件、顯示記錄和退出系統(tǒng)。3.3 系統(tǒng)的主要模塊3.3.1增加學(xué)生記錄:增加學(xué)生

12、記錄包括:增加學(xué)生人數(shù)、輸入學(xué)號、輸入姓名、輸入性別、輸入各科成績;其主要函數(shù)為:void addrecord(student stud) /*增加記錄*/ int i=0,j,num; char str5; if(numstus!=0) printf("已有記錄存在是否覆蓋?(y/n)n"); gets(str); if(str0='Y'|str0='y') i=0; else i=numstus; printf("請輸入增加的學(xué)生信息條目數(shù):"); scanf("%d",&num); if(

13、i=0) numstus=num; else numstus+=num; if(numstus>lens) lens+=50; pointer=(student *)realloc(pointer,lens*LEN); printf(":n"); for(;i<numstus;i+) getchar(); printf("請輸入學(xué)號:"); gets(pointeri.number); printf("請輸入姓名:"); gets(); printf("請輸入性別(男/女 1/0):&q

14、uot;); gets(pointeri.sex); if(pointeri.sex0='0') strcpy(pointeri.sex,"女"); else strcpy(pointeri.sex,"男"); printf("請輸入各科成績:(按"線代,高數(shù),英語,C語言,物理"的順序):"); studi.score=0; for(j=0;j<numsubs;j+) scanf("%f",&studi.subjectj); /*計算總分*/ studi.scor

15、e+=studi.subjectj; studi.average=studi.score/numsubs; /*計算平均分*/ count(stud); /*附名次*/ display(stud,0,numstus-1); getchar();3.3.2修改學(xué)生記錄模塊修改學(xué)生記錄主要包括有刪除學(xué)生記錄、修改學(xué)生記錄其主要函數(shù)為:void amendrecord(student stud) char str5; /*供用戶輸入*/ int i=-1,j; if(numstus=0) /*沒有記錄返回*/ printf("沒有可供修改的記錄!"); while(i<0)

16、 i=findrecord(stud); if(i>=0) printf("要刪除這個學(xué)生的信息嗎?(y/n)"); gets(str); if(str0='y'|str0='Y') deleterecord(stud,i); count(stud); else printf("確定要修改這個學(xué)生的信息嗎?(y/n)"); gets(str); if(str0='y'|str0='Y') printf("下面請重新輸入學(xué)生的信息:n"); printf("

17、請輸入學(xué)號:"); gets(studi.number); printf("請輸入姓名:"); gets(); printf("請輸入性別(男/女 1/0):"); gets(str); if(str0='0') strcpy(studi.sex,"女"); else strcpy(studi.sex,"男"); studi.score=0; printf("請按順序輸入成績:"); for(j=0;j<numsubs;j+) scanf(&q

18、uot;%f",&studi.subjectj); studi.score+=studi.subjectj; getchar(); studi.average=studi.score/numsubs; count(stud); display(stud,0,numstus-1); printf("是否繼續(xù)進(jìn)行其他修改?(y/n)n"); gets(str); if(str0='y'|str0='Y') i=-1; else i=1; void deleterecord(student stu,int i) /*刪除信息*/

19、int j; if(i>=0) for(j=i;j<numstus;j+) stuj=stuj+1; numstus-; printf("刪除成功!n"); getchar(); menu_select(); 圖3.4是修改記錄界面圖3.4即修改學(xué)生記錄的主要界面,它是在主界面中按“3”號鍵進(jìn)入修改界面3.3.3保存文件模塊主要函數(shù)為:int writetotext(student stud) /*將所有記錄寫入文件*/ int i=0,j; FILE *fp; char filename20; printf("輸入文件名稱:"); gets

20、(filename); fp=fopen(filename,"w"); fprintf(fp,"%dn",numstus); while(i<numstus) fprintf(fp,"%s %s %s ",studi.number,,studi.sex); for(j=0;j<numsubs;j+) fprintf(fp,"%f ",studi.subjectj); fprintf(fp,"%f %f %d ",studi.score,studi.average,

21、studi.index); i+; fclose(fp); printf("已成功存儲!n"); display(stud,0,numstus-1); numstus=0; return 0; 3.3.4學(xué)生記錄排序?qū)W生記錄排序是將學(xué)生的的成績分別按學(xué)號、姓名和名次進(jìn)行升序排列或降序排列其主要函數(shù)為:void sort(student stud) /*將學(xué)生排序*/ int i,j=0; char str5; student *p; p=stud; if(numstus=0) printf("沒有可供查詢的記錄!"); while(1) for(i=0;

22、i+) printf(" 請輸入查詢方式:"); printf("(直接輸入回車則結(jié)束查詢操作)n"); printf("1.按照學(xué)號t"); printf("2.按照姓名t"); printf("3.按照名次n"); gets(str); if(strlen(str)=0) break; if(str0='1') printf("請輸入排序次序:n"); printf("1.升序排列t"); printf("2.降序排列n&qu

23、ot;); gets(str); if(str0='1') sortnum2(p); else sortnum(p); display(stud,0,numstus-1); else if(str0='2') printf("請輸入排序次序:n"); printf("1.升序排列t"); printf("2.降序排列n"); gets(str); if(str0='1') sortname2(p); else sortname(p); display(stud,0,numstus-1);

24、 else if(str0='3') printf("請輸入排序次序:n"); printf("1.升序排列t"); printf("2.降序排列n"); gets(str); if(str0='1') sortcount2(p); else sortcount(p); display(stud,0,numstus-1); else printf("請輸入13"); printf("是否退出排序?(y/n)"); gets(str); if(str0='y

25、'|str0='Y') break; return; 圖3.5為按照名次進(jìn)行降序排列在圖3.5中為按照名次排列,它是在學(xué)生記錄排序中按“3”號鍵進(jìn)行選擇。另外在對學(xué)生記錄排序中還有按照姓名進(jìn)行排序,它是在學(xué)生記錄排序中按“2”號鍵進(jìn)行選擇.如圖3.6即是按照姓名進(jìn)行降序排列圖3.6 按照姓名進(jìn)行降序排列3.3.5結(jié)束語提示模塊結(jié)束語提示是在退出系統(tǒng)后的提示語主要包括歡迎語句、制作班級和制作人員列表其主要函數(shù)為:void display1() printf("tt本系統(tǒng)由計科二班制作nn"); printf(" tt制作人員列表: nn&qu

26、ot;); printf(" tt李世正"); printf("nn"); getchar(); 結(jié)束語提示是在退出程序時對制作人的顯示,它可以在主界面里按“0”鍵退出如圖3.7圖3.7系統(tǒng)退出時的結(jié)束語展示4 系統(tǒng)測試測試分析主要是對學(xué)生成績管理系統(tǒng)的一次運(yùn)行,從中找出漏洞,讓程序更加完美。4.1 增加學(xué)生記錄測試測試學(xué)生記錄增加時,隨機(jī)選取幾個姓名和成績進(jìn)行測試,程序運(yùn)行正常如圖4.1圖4.1 增加學(xué)生記錄4.2 打開文件測試打開文件測試是將以前保存好的文件打開,經(jīng)過測試,程序能正常打開文件如圖4.2圖4. 2 打開文件4.3 學(xué)生成績排序?qū)W生排序測

27、試時,成績能正常排列 如圖4.3和圖 4.4圖4.3 按照名次排序圖4.4 按照學(xué)號排序4.4 查詢學(xué)生成績記錄查詢學(xué)生成績測試時,成績能正常顯示如圖4.5和4.6圖4.5為按照學(xué)號查找學(xué)生記錄圖4.6 按照學(xué)生姓名查找4.5 退出學(xué)生成績查詢系統(tǒng)退出系統(tǒng)是,結(jié)束語正常顯示如圖4.7 程序能正常退出圖4.7 退出學(xué)生查詢系統(tǒng)測試5 課程設(shè)計總結(jié)這個系統(tǒng)提供了便捷的操作,讓管理者可以方便的記載學(xué)生的成就,信息,數(shù)據(jù)。這是一個綜合性較強(qiáng),較實際的一個編程軟件 。通過一周的編程及調(diào)試程序,感覺自己對C的知識有加深了一層,在這個科技飛速發(fā)展的時代,掌握電腦的應(yīng)用是如今每一位大學(xué)生所必須掌握的,掌握電腦

28、知識對于現(xiàn)代人來說都有很重要的作用,掌握電腦知識也是一種本領(lǐng),也是一種生存技能,可以在以后的工作鋪好堅實的道路。剛開始的時候程序出現(xiàn)很多問題,有時候感覺很苦惱、很煩躁,到那時我并沒有放棄,我知道學(xué)計算機(jī)的就是很枯燥無味,需要耐心,我還是堅持了下來。本系統(tǒng)的重點就是要理清思路,如何實現(xiàn)想要的結(jié)果,所以分成了幾大類模塊,我做的學(xué)生成績管理系統(tǒng)主要包括這幾個模塊,增加、查詢、排序、修改、刪除、統(tǒng)計、顯示等幾大類模塊,其他我感覺還比較容易,但就是排序這一塊,我參考了很多資料,有冒泡法排序、選擇法排序、交換法排序等等,其他的我都不太熟悉,所以這里我用了選擇法排序,實現(xiàn)想要的結(jié)果。后想說的是,調(diào)試程序真的

29、很關(guān)鍵。調(diào)試程序需要較大的耐心。可能調(diào)試程序的時間比自己編寫整個程序的時間還要長,下的工夫還要深,但這是一個程序員必須了解、接受的事實。通過這個實訓(xùn)的練習(xí),我也學(xué)到了很多東西,特別是加深了C的理解和應(yīng)用。但是為了更好的發(fā)展,我還是會好好學(xué)習(xí),更深層的掌握專業(yè)知識。 并且在這兩周的實訓(xùn)期間,當(dāng)在課程設(shè)計過程中遇到模棱兩可的問題時,同學(xué)們能過各抒己見,尊重他人見解,使我能夠綜合各種觀點,取長補(bǔ)短,虛心借鑒,使程序做得更盡人意;當(dāng)遇到我們都無法解決的問題時,有輔導(dǎo)老師耐心講解,詳細(xì)地指出了程序中的錯誤,不僅幫我解決了當(dāng)前編程中的問題,而且使我加深了對C語言的認(rèn)識,為以后的學(xué)習(xí)鋪平了道路。感謝他們,他

30、們不僅是我收獲了更多的知識,豐富了學(xué)習(xí)經(jīng)驗,而且使我養(yǎng)成了“嚴(yán)謹(jǐn)治學(xué)”的學(xué)習(xí)態(tài)度,使我擁有了面對困難的勇氣,并且體會到了濃濃的師生情。這必定是我人生中一筆寶貴的財富,再次感謝他們!另外,關(guān)于刪除,這個系統(tǒng)提供了普通的按照學(xué)號來刪除該學(xué)生的個人信息及相關(guān)成績的功能。當(dāng)然,再不知道學(xué)號的情況下,這個系統(tǒng)還提供了按照姓名來刪除的條件。(這樣一來,有同名的就會有點麻煩,在這方面還需要改進(jìn))參考文獻(xiàn)1譚浩強(qiáng).C 程序設(shè)計.北京:清華大學(xué)出版社,2011,4;2C語言程序設(shè)計實例精編;3C語言程序設(shè)計課本;附錄系統(tǒng)源代碼:#ifndef H_STUDENT_HH #define H_STUDENT_HH

31、#include "stdio.h" #include "string.h" #include "malloc.h" #define LEN sizeof(struct message_student) /*一個結(jié)構(gòu)體數(shù)組元素的長度*/ #define numsubs 5 /*學(xué)科數(shù)目*/ typedef struct message_student /*結(jié)構(gòu)體定義*/ char number6; char name20; char sex4; float subjectnumsubs; float score; float aver

32、age; int index; student; extern int numstus; /*學(xué)生數(shù)目*/ extern student *pointer; /*指向結(jié)構(gòu)體數(shù)組*/ extern int lens; int menu_select(); /*函數(shù)聲明*/ int openfile(student stu); /*打開文件*/int findrecord(student stud);/*查找信息*/ int writetotext(student stud);/*將所有記錄寫入文件*/ void welcome();/*歡迎界面*/ void display1(); /*展示制作

33、人信息*/void showtable(); /*展示在桌面*/void sort(student stu); /*將學(xué)生排序*/void deleterecord(student stu,int i); /*刪除信息*/void addrecord(student stud);/*增加記錄*/ void display(student stud,int n1,int n2); /*顯示數(shù)據(jù)*/void amendrecord(student stud); /*修改記錄*/void count(student stud); /*計算名次*/void sortnum(student stud);

34、 void sortnum2(student stud); void sortname(student stud); void sortname2(student stud); void sortcount(student stud); void sortcount2(student stud); void statistic(student stud); /*輸出統(tǒng)計信息*/ void display1(); #endif int menu_select() /*展示在桌面上*/ char c; printf("nn"); printf(" n");

35、printf(" n"); printf(" n"); printf(" 1. 增加學(xué)生記錄 5.統(tǒng)計信息 n"); printf(" n"); printf(" 2. 查詢學(xué)生記錄 6.打開文件 n"); printf(" n"); printf(" 3. 修改學(xué)生記錄 7.保存文件 n"); printf(" n"); printf(" 4. 學(xué)生紀(jì)錄排序 8.顯示記錄 n"); printf(" n&

36、quot;); printf(" 0. 退出系統(tǒng) n"); printf(" n"); printf(" n"); printf(" n"); printf("nn"); printf("請選擇(0-8):"); c=getchar(); getchar(); /*讓程序停留*/ return (c-'0'); /#include "head.h" int findrecord(student stud) /*查找信息*/ char str

37、2; int i,num; if(numstus=0) printf("沒有可被查找的記錄n"); return -1; else printf("以何種方式查找?n1.學(xué)號t2.姓名t3.名次n"); gets(str); if(str0='1') /*按學(xué)號查找*/ printf("請輸入學(xué)號:"); gets(str); for(i=0;i<=numstus;i+) if(strcmp(str,studi.number)=0) display(stud,i,i); break; else continue;

38、 else if(str0='2') /*按姓名查找*/ printf("請輸入姓名:"); gets(str); for(i=0;i<=numstus;i+) if(strcmp(str,)=0) display(stud,i,i); break; else continue; else if(str0='3') /*按名次查找*/ printf("請輸入名次:"); scanf("%d",&num); getchar(); /*讓程序停留*/ for(i=0;i&l

39、t;=numstus;i+) if(num=studi.index) display(stud,i,i); break; else continue; if(i>numstus) printf("沒有查找所要的信息。n"); return -1; return i; /#include"head.h" int openfile(student stu) /*打開文件*/ int i=0,j; FILE *fp; char filename20,str2; if(numstus!=0) printf("已經(jīng)有記錄存在,是否保存?(y/n)&

40、quot;); gets(str); if(str0='y'|str0='Y') writetotext(stu); printf("請輸入文件名:"); gets(filename); numstus=0; if(fp=fopen(filename,"rb+")=NULL) printf("無法打開該文件n"); return(-1); fscanf(fp,"%d",&numstus); fgetc(fp); while(i<numstus) /*讀取文件顯示在桌面*

41、/ fscanf(fp,"%s",stui.number); fscanf(fp,"%s",); fscanf(fp,"%s",stui.sex); for(j=0;j<numsubs;j+) fscanf(fp,"%f",&stui.subjectj); fscanf(fp,"%f",&stui.score); fscanf(fp,"%f",&stui.average); fscanf(fp,"%d",&a

42、mp;stui.index); i+; fclose(fp); printf("文件讀取成功n"); printf("是否顯示紀(jì)錄?(y/n)"); gets(str); if(str0='y'|str0='Y') display(stu,0,numstus-1); return(0); /#include "head.h" void sort(student stud) /*將學(xué)生排序*/ int i,j=0; char str5; student *p; p=stud; if(numstus=0)

43、printf("沒有可供查詢的記錄!"); while(1) for(i=0;i+) printf(" 請輸入查詢方式:"); printf("(直接輸入回車則結(jié)束查詢操作)n"); printf("1.按照學(xué)號t"); printf("2.按照姓名t"); printf("3.按照名次n"); gets(str); if(strlen(str)=0) break; if(str0='1') printf("請輸入排序次序:n"); pri

44、ntf("1.升序排列t"); printf("2.降序排列n"); gets(str); if(str0='1') sortnum2(p); else sortnum(p); display(stud,0,numstus-1); else if(str0='2') printf("請輸入排序次序:n"); printf("1.升序排列t"); printf("2.降序排列n"); gets(str); if(str0='1') sortname2

45、(p); else sortname(p); display(stud,0,numstus-1); else if(str0='3') printf("請輸入排序次序:n"); printf("1.升序排列t"); printf("2.降序排列n"); gets(str); if(str0='1') sortcount2(p); else sortcount(p); display(stud,0,numstus-1); else printf("請輸入13"); printf(&qu

46、ot;是否退出排序?(y/n)"); gets(str); if(str0='y'|str0='Y') break; return; void sortnum(student stud) int i,j; student temp; student *p; p=stud; for(i=0;i<numstus;i+) for(j=0;j<numstus-i-1;j+) if(strcmp(studj+1.number,studj.number)>0) temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp

47、; void sortnum2(student stud) int i,j; student temp; student *p; p=stud; for(i=0;i<numstus;i+) for(j=0;j<numstus-i-1;j+) if(strcmp(studj.number,studj+1.number)>0) temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; void sortname(student stud) int i,j; student temp; student *p; p=stud; for(i=0;i<

48、;numstus;i+) for(j=0;j<numstus-i-1;j+) if(strcmp(studj+1.name,)>0) temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; void sortname2(student stud) int i,j; student temp; student *p; p=stud; for(i=0;i<numstus;i+) for(j=0;j<numstus-i-1;j+) if(strcmp(,studj+1.name)>0) temp=

49、*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; void sortcount(student stud) int i,j; student temp; student *p; p=stud; for(i=0;i<numstus;i+) for(j=0;j<numstus-i-1;j+) if(studj+1.index>studj.index) temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; void sortcount2(student stud) int i,j; student temp; stu

50、dent *p; p=stud; for(i=0;i<numstus;i+) for(j=0;j<numstus-i-1;j+) if(studj.index>studj+1.index) temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; /#include"head.h" void statistic(student stud) /*新增功能,輸出統(tǒng)計信息*/ int i,j=0,k=0; char c1,str2; float averagenumsubs,sum=0; if(numstus=0) printf(

51、"沒有可被查找的記錄n"); else while(1) printf("下面將統(tǒng)計考試成績n"); printf("請選擇你要統(tǒng)計哪科的成績 1.線代 2.高數(shù) 3.英語 4.C語言 5.物理n"); c1=getchar(); printf("t一共有個%d記錄n",numstus); /*總共記錄數(shù)*/ switch(c1) case '1': for(i=0;i<numstus;i+) /*循環(huán)輸入判斷*/ sum+=studi.subject0; if(studk.subject0>studi.subject0) k=i; if(studj.subject0<studi.subject0) j=i; average0=sum/numstus; printf("t線代的最高分:n"); /*最高分*/ printf("tt學(xué)號:%s 姓名:%s 分?jǐn)?shù):%.2fn",studj.number,,studj.subject0); printf("t線代的最低分是:n"); /*最低分*/ printf("tt學(xué)號:%s 姓名:%s 分?jǐn)?shù):%.2fn",stu

溫馨提示

  • 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

提交評論