畢業(yè)論文用C語言實現(xiàn)一個簡單的學生成績管理系統(tǒng)_第1頁
畢業(yè)論文用C語言實現(xiàn)一個簡單的學生成績管理系統(tǒng)_第2頁
畢業(yè)論文用C語言實現(xiàn)一個簡單的學生成績管理系統(tǒng)_第3頁
畢業(yè)論文用C語言實現(xiàn)一個簡單的學生成績管理系統(tǒng)_第4頁
畢業(yè)論文用C語言實現(xiàn)一個簡單的學生成績管理系統(tǒng)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、寧德師范高等??茖W校畢 業(yè) 論 文 (設 計)專業(yè) 計算機教育 指導教師 學生 學號 題 目 用c語言實現(xiàn)一個簡單的學生成績管理系統(tǒng) 2010年5月15日10目 錄1 引言12 系統(tǒng)需求分析12.1項目背景分析12.2 系統(tǒng)開發(fā)的目標與意義12.3 項目需求分析13 系統(tǒng)總體設計13.1 功能模塊分析13.2 系統(tǒng)功能模塊初始化準備33.2.1 編譯預處理33.2.2 數(shù)據(jù)結(jié)構(gòu)定義33.3 具體模塊處理函數(shù)的實現(xiàn)43.3.1 菜單函數(shù)界面的設計43.3.2 功能函數(shù)設計44 系統(tǒng)測試與分析94.1 運行工具介紹94.2 系統(tǒng)操作9結(jié)束語10參考文獻10計算機與信息工程系畢業(yè)設計研究報告用c語言

2、實現(xiàn)一個簡單的學生成績管理系統(tǒng)摘要:伴隨著現(xiàn)代社會的發(fā)展,網(wǎng)絡技術(shù)的不斷進步,越來越多的管理工作都從傳統(tǒng)的現(xiàn)實社會中發(fā)展到了網(wǎng)絡上。高校是使用計算機技術(shù)最早的單位,學校的各項管理工作也從現(xiàn)實生活走上了網(wǎng)絡空間。本文對學校的需求進行分析,通過使用c語言設計并實現(xiàn)學生成績的管理,力求盡量簡潔實用地解決學校對學生成績的管理和學生對成績的查詢問題。關(guān)鍵字:c語言 成績管理系統(tǒng) 程序設計1 引言在信息時代,計算機以其極高的運算速度、巨大的數(shù)據(jù)存儲容量,以及能準確地進行各種算術(shù)運算和邏輯運算的能力而成為現(xiàn)代化計算工具,并被廣泛應用于社會各個領域。計算機技術(shù)的高速發(fā)展已被認為是人類進入信息時代的標志。成績管

3、理系統(tǒng)是計算機技術(shù)和信息時代的產(chǎn)物,是信息處理或數(shù)據(jù)處理的核心。該系統(tǒng)開發(fā)的總體任務是實現(xiàn)學生成績管理的系統(tǒng)化、規(guī)范化、自動化,以達到提高學生成績管理效率的目的。通過運用程序設計軟件實現(xiàn)學生成績管理中的多種功能,如學生成績信息的添加、刪除、查詢、修改、顯示、排序等。該系統(tǒng)的設計充分利用計算機作為輔助工具,來實現(xiàn)學生考試成績從傳統(tǒng)的手工管理到計算機管理,并對提高管理效率和節(jié)約大量的人力、物力有一定的推動作用。因此,開發(fā)這種管理軟件很必要,本文將在分析系統(tǒng)的應用價值以及開發(fā)工具的基礎上,用c語言來開發(fā)成績管理系統(tǒng)。2 系統(tǒng)需求分析2.1項目背景分析在我國,各大中小學校的各類信息管理系統(tǒng)并非一個新的

4、課題,但也有的學校根本就沒有任何信息管理系統(tǒng),特別是在西部貧困地區(qū),學校的各類管理依然由手工操作來完成,這十分落后,效率極低,成本很大,而且極異出錯。隨著社會的發(fā)展,信息化是社會進程的必然趨勢,學校管理只有快,準,精才能發(fā)揮其價值。2.2 系統(tǒng)開發(fā)的目標與意義(1)系統(tǒng)開發(fā)目標:本系統(tǒng)是將現(xiàn)代化的計算機技術(shù)和傳統(tǒng)的教學、教務工作相結(jié)合,按照學院的工作流程設計完成的。為了使系統(tǒng)在學院的管理中發(fā)揮充分發(fā)揮其作用,實現(xiàn)工作過程的計算機化,提高工作效率和工作質(zhì)量,現(xiàn)提出如下的系統(tǒng)開發(fā)目標:系統(tǒng)應具有實用性、可靠性和適用性。對系統(tǒng)中數(shù)據(jù)庫的信息進行有效處理,防止數(shù)據(jù)錯亂。能夠按照用戶選擇的不同的條件進行

5、簡單查詢。方便用戶的操作,盡量減少用戶的操作。(2)系統(tǒng)開發(fā)的意義:在各大中小學校,用計算機管理學校的信息已經(jīng)越來越普遍了。用計算機不但可以提高工作效率,而且還節(jié)省了許多人力物力財力。提高了學校的管理能力,為此,用計算機來管理學校的信息,是非常必要的。2.3 項目需求分析學校工作流程分析:學校工作總體規(guī)劃由教務人員在學生成績管理系統(tǒng)中輸入學生的基本信息并對其進行維護管理,包括對信息的增加、修改及對信息的各項處理操作等。新的學年,教務人員首先編排班級,再對在校學生進行基本的信息錄入,新生入學后由教務人員在管理系統(tǒng)中完成新學生信息的維護。在每個學期開始,教務處根據(jù)班級的情況,以班為單位,為每個班級

6、安排一個班主任,并對各科老師進行安排。每舉行一次考試后由任課老師對成績進行錄入。班主任對本班的成績匯總。并進行排名,并對本年級各科成績及總成績進行排名。教務處、班主任及任課老師跟據(jù)實際情況對錄入的成績進行維護管理,各位同學對以上錄入的信息可以跟據(jù)自己的需要進行適當?shù)牟樵儭? 系統(tǒng)總體設計3.1 功能模塊分析學生成績管理系統(tǒng)是對學生基本信息及成績的管理。開發(fā)工具主要采用turboc2.0,主要用于對學生的學號、姓名等自然信息以及各項學科成績進行增加、刪除、修改、查詢及保存到文件等操作。系統(tǒng)給用戶提供了一個簡單的人機界面,使用戶可以根據(jù)提示輸入操作項,調(diào)用系統(tǒng)提供的管理功能。學生成績管理系統(tǒng)處理流

7、程如圖1。0主菜單界面歡迎界面1輸入0退出2查詢3修改4刪除5插入6平均分7排序8顯示繼續(xù)輸入10返回主菜單1學號查詢2姓名查詢3總分查詢結(jié) 束9初始化10保存返回圖1 系統(tǒng)處理流程圖主要功能設計描述如下:(1)系統(tǒng)主控平臺允許用戶選擇想要的操作,包括輸入學生信息、顯示學生信息、查詢學生信息、修改學生信息、刪除學生信息、計算成績以及成績的排序等。通過輸入相應的序號選擇相應的操作。(2)學生成績信息用戶根據(jù)提示輸入學生的學號、姓名、以及三門課的成績,如語文成績、英語成績、數(shù)學成績等。輸入完成一條學生記錄,可根據(jù)提示信息繼續(xù)輸入下一條學生記錄或者繼續(xù)其他的操作。允許輸入多條學生的成績信息記錄。輸入

8、完的學生記錄暫時保持在單鏈表中,等待下一步的操作。(3)查詢學生信息可以根據(jù)學號,姓名,總分從單鏈表中對學生所有的信息進行查詢,如果沒有查詢到任何信息,系統(tǒng)會給出提示信息。(4)修改學生信息首先提示用戶輸入要進行修改的操作的學號,如果單鏈表中有該學生的信息存在,則提示用戶輸入要修改的學生的基本信息、各科成績等,并將修改結(jié)果重新存儲在單鏈表中。如果用戶沒有找到要修改的學生信息,系統(tǒng)將給出提示。(5)插入學生信息對已經(jīng)建立好的信息若還需增加,則對信息進行插入。首先提示用戶輸入要進行插入的學號,然后在根據(jù)提示對用戶信息進行完整輸入。輸入完成后系統(tǒng)將對其進行保存。(6)刪除學生信息首先提示用戶輸入要刪

9、除學生的學號,系統(tǒng)根據(jù)用戶輸入的信息在單鏈表中查找,如果找到,直接刪除該學生全部信息,如果沒有找到,系統(tǒng)給出提示信息。(7)計算各科成績平均分該模塊主要進行學生成績的平均分計算,進入計算界面,系統(tǒng)自動對各科進行平均分計算。(8)顯示學生信息在選擇了顯示學生信息后,將剛輸入的學生信息從單鏈表中調(diào)出來顯示,如果沒有數(shù)據(jù),則提示無學生記錄。(9)學生成績排序成績信息輸入完整后,根據(jù)學生的總分對學生從小到大進行排序,在顯示學生信息的時候可以看到學生在班級或校的排列名次。(10)操作完成后對操作結(jié)果進行保存。運行完畢,退出系統(tǒng)。3.2 系統(tǒng)功能模塊初始化準備3.2.1 編譯預處理“編譯預處理”是c編譯系

10、統(tǒng)的一個組成部分。在c編譯系統(tǒng)對程序進行通常的編譯(包括詞法和語法分析、代碼生成、優(yōu)化等)之前,先對程序中這些特殊命令進行“預處理”,然后將預處理的結(jié)果和源程序一起再進行通常的編譯處理,以得到目標代碼。c語言提供的預處理功能主要有:(1)宏定義;(2)文件包含;(3)條件編譯。而本程序使用文件包含的預處理方式進行編譯預處理:#include/*標準庫函數(shù)*/#include/*標準輸入、輸出函數(shù)庫*/#include/*屏幕操作函數(shù)*/#include/*字符串函數(shù)*/3.2.2 數(shù)據(jù)結(jié)構(gòu)定義學生成績管理系統(tǒng)中的變量有學號,姓名,成績等,這些數(shù)據(jù)類型各不相同,無法用簡單數(shù)據(jù)類型來描述,顯然要定

11、義結(jié)構(gòu)體類型。由于學生人數(shù)很多,還需要定義數(shù)組或者鏈表。數(shù)組的特點是數(shù)據(jù)在內(nèi)存中順序存放,長度必須事先指定,而學生的人數(shù)很難估計。如果數(shù)組長度定的過大,會找出存儲空間浪費,如果過小,又無法滿足需求。特別是進行插入,刪除等操作時,代價較大而又容易出錯。用鏈表來管理學生成績就顯得比較妥當,它無需估計學生人數(shù),進行插入刪除等操作時代價較小。c語言中,說明和使用“結(jié)構(gòu)體”之前必須先定義,在編寫程序之前應該對學生基本信息進行定義,在這個程序中,使用struct來定義結(jié)構(gòu)體的類型為struct list,然后用它來定義變量,在定義結(jié)構(gòu)體類型的時候定義一個next成員,該成員可以把學生結(jié)點進行鏈接。并且通過

12、類型定義typedef將已有的各種類型名定義成為新的類型標識符link,經(jīng)類型定義后,link即可當做原類型名使用。具體定義如下:struct listint id; /*學號*/charname256; /*姓名*/int china; /*語文成績*/int english; /*英語成績*/int math; /*數(shù)學成績*/float sum; /*總分*/int order; /*排序*/struct list *next; /*指向下一個學生的指針*/;typedef struct list node; /*自定義一個數(shù)據(jù)結(jié)構(gòu)的結(jié)點*/typedef node *link; /*定

13、義結(jié)點為link結(jié)構(gòu)*/3.3 具體模塊處理函數(shù)的實現(xiàn)3.3.1 菜單函數(shù)界面的設計系統(tǒng)與用戶交換的界面是通過菜單實現(xiàn)的,菜單按預定義格式顯示主菜單界面,等待用戶輸入0-8中的任一數(shù)據(jù),系統(tǒng)會根據(jù)用戶的輸入調(diào)用相應的功能模塊,實現(xiàn)用戶所要求的操作。(1)本程序的菜單界面主要使用屏幕操作函數(shù)編寫,歡迎界面設置為白底紅字,菜單界面設置為綠底藍字,在歡迎界面中單擊任意鍵進入菜單操作界面。整個系統(tǒng)都以光標定位函數(shù)gotoxy(x,y)固定光標的位置,在對其進行輸出,從而可以使顯示的文字都出現(xiàn)在設定的窗口內(nèi),窗口的界面設置使用畫圖工具制作周圍的邊框,邊框的設置具體如下:gotoxy(8,2); putc

14、h(0xc9); /*輸入左上角邊框*/for(i=1;i46;i+) putch(0xcd); /*輸出上邊框水平線*/putch(0xbb); /*輸出右上角邊框*/for(i=3;i23;i+) gotoxy(8,i); putch(0xba); /*輸出左垂直線*/gotoxy(56,i); putch(0xba); /*輸出右垂直線*/gotoxy(8,23); putch(0xc8); /*輸出左下角邊框*/for(i=1;i46;i+) putch(0xcd); /*輸出下邊框水平線*/putch(0xbc); /*輸出右下角邊框*/window(9,3,55,22);/*制作顯

15、示菜單的窗口*/(2)菜單是由menu函數(shù)實現(xiàn),主要通過printf函數(shù)顯示一些文本選項如:printf(exit the program.n);構(gòu)建一個簡單的字符界面,系統(tǒng)設置11個模塊,用戶通過輸入關(guān)鍵字key從0-10之間選擇相應的操作,函數(shù)通過switch調(diào)用各功能模塊:switch(key) case0:exit(0);case1:head=init();break;case2:head=creat_list()break;case3:search_chengji(head);break;case4:head=modify_chengji(head,key);break;case5:

16、head=delete_chengji(head,key);break;case6:head=insert_chengji(head,key);break;case7:average(head);break;case8:sort(head);break;case9:printf_list(head);break;case10:save(head);break;3.3.2 功能函數(shù)設計(1)初始化鏈表學生成績管理系統(tǒng)使用前要先將系統(tǒng)進行初始化操作,初始化函數(shù)init()就是將函數(shù)置空。(2)創(chuàng)建學生信息函數(shù)創(chuàng)建學習信息函數(shù)由creat_list函數(shù)實現(xiàn),首先在創(chuàng)建鏈表之前先定義函數(shù)的基本信息并創(chuàng)

17、建結(jié)構(gòu)體指針head,pointer和new,設學號,排名為整形,名字設為字符型,語文,數(shù)學,英語成績設為單精度類型,并對order和sum進行初始化,為head建立一個空結(jié)點,當head不為空,輸入用戶信息,然后將新輸入的數(shù)據(jù)存于head指針。程序如下:head=(link)malloc(sizeof(node); /*建立一個新/空結(jié)點*/if(head=null) printf(memory allocate failure!n); exit(0);elseprintf(please inputid:); scanf(%d,&id); head-id=cidprintf(please i

18、nput name:); scanf(%s,&cname);for(i=0;inamei=cnamei;printf(please input china:); scanf(%d,&cchina);head-china=cchina;head-next=null; pointer=head;如果輸入正確既while為真的時候為news新建立一個結(jié)點,提示用戶如果要繼續(xù)輸入按1,輸入0為退出。新輸入的數(shù)據(jù)存儲到news指針里,然后把head和news里面的數(shù)據(jù)一起放到pointer,供下面操作時調(diào)用pointer的數(shù)據(jù)。while(1)news=(link)malloc(sizeof(node)

19、;printf(are you continue?);printf(if continue enter1, or return enter0.);/*輸入1為繼續(xù),0為退出*/scanf(%d,&cid); if(cid=0)break;news-next=null; pointer-next=news; pointer=news;創(chuàng)建函數(shù)時只能創(chuàng)建一次,因為創(chuàng)建的鏈表暫時存于head指針里,如果再次創(chuàng)建,要先保存否則系統(tǒng)會自動將head指針進行初始化數(shù)據(jù)將被清空,存放新創(chuàng)建的記錄。(3)查詢學生成績函數(shù)查詢函數(shù)search_chengji用來對學生的基本信息進行查詢。首先使用光標定位函數(shù)go

20、toxy(x,y)和printf函數(shù)制作查詢的子菜單,菜單包括:0.exit、1.search by id、2.search by name、3.search by sum。查詢菜單設置完成后應用switch()case1:執(zhí)行語句;break;語句調(diào)用相應函數(shù)操作功能。系統(tǒng)在調(diào)用函數(shù)時,調(diào)用自定義的輔助函數(shù),按預定義格式顯示查詢成績的子菜單界面。用戶輸入的格式正確時使用while函數(shù)調(diào)用相應的功能函數(shù)。 按學號查詢,輸入choose=1,key1為要查詢的學號,查找系統(tǒng)中學號為key1的學生是否存在,如果key1=id說明找到該學生,并標記flag=1,中斷查詢顯示查詢的結(jié)果,否則繼續(xù)查找直

21、到找到為止。例如:if(choose=1)while(pointer!=null)if(pointer-id-key1=0) flag=1;break;else pointer=pointer-next; 按名字查詢,輸入choose=2,sname為要查詢學生的名字,查找系統(tǒng)中名字為sname的學生是否存在,如果strcmp(pointer-name,sname)=0說明找到該學生,并標記flag=1,中斷查詢顯示查詢的結(jié)果,否則繼續(xù)向下查找直到找到名字為sname的學生。 按學生的總成績查詢,輸入choose=3,score為要查找學生的總分,查找系統(tǒng)中總分為score的學生是否存在,如果

22、if(pointer-sum-score=0)說明找到該學生,并標記flag=1,中斷查詢顯示查詢的結(jié)果;否則繼續(xù)向下查找直到找到總分為score的學生;(4)修改學生成績函數(shù)修改函數(shù)modify_chengji是對之前所輸入的信息如果出現(xiàn)錯誤,或需要更改時使用。在編寫之前先對函數(shù)進行定義,并把head的值賦給pointer,然后用簡單的printf函數(shù)編寫修改菜單的基本界面以及修改的內(nèi)容。用戶根據(jù)提示輸入要編輯的學號printf(please input number for modify:);scanf(%d,&keynum),系統(tǒng)根據(jù)學號查找該學生的基本信息,如果尋找到該生,系統(tǒng)提示要修

23、改的具體內(nèi)容,根據(jù)用戶需要選擇相應內(nèi)容進行修改,此功能應用switch(choose)case1:執(zhí)行語句;break;語句執(zhí)行。printf(enter0 exit modefiyn);printf(enter1 modefiy namen);printf(enter2 modefiy chinan);printf(enter3 modefiy englishn);printf(enter4 modefiy mathn);printf(please enter you choice:);scanf(%d,&choose);信息輸入完成后,按任意鍵系統(tǒng)自動保存到pointer中,新信息將覆蓋原

24、有信息pointer-namei=xnamei,運行結(jié)束輸出修改后的信息,返回到菜單。如果沒有找到,系統(tǒng)將中止執(zhí)行。while(1) if(pointer-id=key3) if(choose=1) for(i=0;inamei=xnamei; break; else if(choose=2)pointer-china=xchina;break;else if(choose=3)pointer-english=xenglish;break;else if(choose=4)pointer-math=xmath;break; if(head!=null) printf(pree any key

25、to save!);getch();printf_list(head);returnhead;(6)刪除學生信息函數(shù)刪除函數(shù)delete_chengji在編寫之前先定義2個結(jié)構(gòu)體pointer和q,key2為要刪除學生的學號,定義完成后對pointer賦初值,用j記錄pointer的位置,將其設為整形并初始化。從鏈表中刪去一個節(jié)點只要改變鏈接的關(guān)系即可,既修改結(jié)點指針成員的值。從鏈表中刪除一個結(jié)點有三種情況:刪除鏈表的頭結(jié)點,刪除鏈表的中間結(jié)點,刪除鏈表的尾節(jié)點。具體情況如圖2。. pointer!=key2時q pointer= =key2 j=0p pointer= =key2 j!=0j

26、q=pointer;j+;pointer=pointer-next;qpp headhead.圖2 刪除算法當pointer的后面指針不為空: 如果key2!=pointer-id,則把pointer的值賦給q,pointer指向下一個記錄繼續(xù)尋找學號key2。while(pointer-next!=null)if(pointer-id!=key2)q=pointer; j+; pointer=pointer-next;else break; 如果key2=pointer-id時,判斷j是否為0,如果j為0說明pointer為頭結(jié)點,則直接將結(jié)點刪除,head指向他的下一指針。if(point

27、er-id=key2)if(j=0)head=head-next; free(pointer); 如果判斷j!=0,則說明刪除的結(jié)點不是頭指針,結(jié)點位于中間,要刪除結(jié)點pointer首先應該讓q-next指向pointer-next,然后釋放pointer。執(zhí)行完后系統(tǒng)將自動停留幾秒然后返回主菜單。(7)插入學生成績插入功能主要用于插入新的學生記錄。在insert_chengji函數(shù)先定義2個結(jié)構(gòu)體指針pointer和news,pointer為原指針,news為新插入指針。定義完成后對pointer初始化,然后為news建立新結(jié)點news=(link)malloc(sizeof(node),定

28、義完成后為news輸入新數(shù)據(jù)。插入的情況有兩種既:如果pointer為空則直接將news的值賦給head輸入系統(tǒng)并做為頭指針;如果pointer不為空則把news的值賦給pointer,運行如果正確且head不為空時顯示輸入的數(shù)據(jù)信息。具體操作如圖3。 pointer= =nullheadp news pointer!=nullnewsp 圖3 插入算法程序:if(head!=null) news=(link)malloc(sizeof(node); /*如果head不為空,為news指針建立一個結(jié)點*/gotoxy(3,5); printf(please input student id:)

29、;scanf(%d,&news-id);while(1) if(pointer=null) news-next=head; head=news; break; /*如果pointer為空,news直接為頭指針*/if(pointer-id=key3) news-next=pointer-next; pointer-next=news; break;/*如果key3等于id直接插入news*/pointer=pointer-next;(8)計算各科成績的平均分函數(shù)計算函數(shù)average求各科的平均分。首先為各科成績進行初始化操作,如果pointer不為空,說明里面有數(shù)據(jù),在對其求各科的總成績,最

30、后在進行平均分求值。計算完成顯示最后計算結(jié)果。具體程序如下:while(1) achina=achina+pointer-china; /*求總分*/aenglish=aenglish+pointer-english;amath=amath+pointer-math;cnt=+cnt;if(pointer-next=null) break;pointer=pointer-next; /*求平均分*/avechina=achina/cnt;aveenglish=aenglish/cnt;avemath=amath/cnt;(9)學生成績排序?qū)W生成績排序函數(shù)sort用來對學生成績進行按從大到小的順

31、序排序。處理過程:定義2個臨時指針pointer、max,max用來存放pointer的數(shù)據(jù),而pointer指向它的下一位。再定義一個單精度變量fen、整形變量k和字符型變量s256,分別存放成績、學號、名字。定義完成后把先對pointer初始化,用count來記錄pointer的個數(shù),然后從1開始對max和pointer進行比較。比較一次count加1,在把count的值賦給pointer-order。排序完成后到顯示界面查看。函數(shù)排序過程如下:for(i=1;icount;i+) max=pointer=head;for(j=i+1;jnext;if(max-sumpointer-sum

32、) /*用總分對成績進行排名*/ fen=max-sum; max-sum=pointer-sum; pointer-sum=fen; /*總分的交換*/k=max-id; max-id=pointer-id; pointer-id=k; /*學號的交換*/fen=max-china; max-china=pointer-china; pointer-china=fen; /*語文成績的交換*/fen=max-math; max-math=pointer-math; pointer-math=fen; /*數(shù)學成績的交換*/fen=max-english; max-english=pointe

33、r-english; pointer-english=fen; /*英語成績的交換*/strcpy(s,max-name); strcpy(max-name,pointer-name); strcpy(pointer-name,s);/*姓名的交換*/pointer=pointer-next;pointer=head; count=0;while(pointer!=null)/*賦排序的值*/ count+; pointer-order=count;pointer=pointer-next;(10)顯示學生成績函數(shù)顯示函數(shù)printf_list主要顯示學生的基本信息,每當操作完成的時候一般都會

34、調(diào)用此函數(shù)進行預覽。printf_list函數(shù)運行時先輸出表頭,在單鏈表中反復調(diào)用函數(shù),逐條顯示學生的信息,直到運行結(jié)束,返回到主菜單界面。具體顯示函數(shù)如下:printf_list(linkhead) int i=0;link pointer;clrscr(); pointer=head;gotoxy(2,4);printf(+-+-+-+-+-+-+-+n);/*顯示表頭*/gotoxy(2,5);printf(|id|name|china|english|math|sum|order|n);gotoxy(2,6);printf(+-+-+-+-+-+-+-+n);while(pointer

35、!=null) i+;gotoxy(2,7); /*如果pointer不為空,逐條顯示內(nèi)容*/printf(|%d|%s|%4.2f|%4.2f|%4.2f|%4.2f|%d|n,pointer-id,pointer-name,pointer-china,pointer-english,pointer-math,pointer-sum,pointer-order);pointer=pointer-next; gotoxy(2,8);printf(*end*n);gotoxy(2,10);getch();returnhead;clrscr();(11)保存學生成績函數(shù)保存函數(shù)save主要用來對學

36、生成績運行后的結(jié)果進行保存。該函數(shù)在運行之前先要定義一個指向文件的指針fp,在定義一個移動指針p和保存輸出的文件名outfile。用戶根據(jù)系統(tǒng)的提示,輸入要保存的文件名和保存路徑。系統(tǒng)以只寫(”w”)方式打開文件,如果移動指針p不為空則寫入一條記錄。運行結(jié)束返回主菜單。運行過程函數(shù):printf(enteroutfilename,forexamplec:f1te.txt:n);scanf(%s,outfile);fp=fopen(outfile,w);while(p!=null) fwrite(p,sizeof(node),1,fp);p=p-next; printf(-savesuccess

37、!-n);fclose(fp);4 系統(tǒng)測試與分析4.1 運行工具介紹c語言運用的是turboc程序應用軟件中運行。turboc是美國borland公司的產(chǎn)品,borland公司是一家專門從事軟件開發(fā)、研制的大公司。該公司相繼推出了一套turbo系列軟件,如turbobasic,turbopascal,turboprolog,這些軟件很受用戶歡迎。該公司在1987年首次推出turboc1.0產(chǎn)品,其中使用了全然一新的集成開發(fā)環(huán)境,即使用了一系列下拉式菜單,將文本編輯、程序編譯、連接以及程序運行一體化,大大方便了程序的開發(fā)。1988年,borland公司又推出turboc1.5版本,增加了圖形庫

38、和文本窗口函數(shù)庫等,而turboc2.0則是該公司1989年出版的。turboc2.0在原來集成開發(fā)環(huán)境的基礎上增加了查錯功能,并可以在tiny模式下直接生成.com(數(shù)據(jù)、代碼、堆棧處在同一64k內(nèi)存中)文件。還可對數(shù)學協(xié)處理器(支持8087/80287/80387等)進行仿真。4.2 系統(tǒng)操作將編寫好的程序在turboc的代碼編輯器里進行編輯,語法檢查正確后進行運行。系統(tǒng)進入運行后,首先進入系統(tǒng)歡迎界面單擊任意鍵鍵進入學生成績管理系統(tǒng)的主菜單界面,系統(tǒng)提示用戶輸入0-8之間的不同數(shù)字,來實現(xiàn)不同的操作。主菜單界面如圖4所示。圖4 學生成績管理主菜單界面進入主菜單界面后,輸入數(shù)字1對本系統(tǒng)先

39、進行初始化,初始化后并可以輸入2進去創(chuàng)建界面,用戶可以根據(jù)提示信息輸入學生的基本信息,輸入完一條后,若要繼續(xù)輸入則輸入1,否則退出輸入0,輸入完成后調(diào)用顯示功能模塊,供用戶預覽。創(chuàng)建的時候只能創(chuàng)建一次,反復創(chuàng)建將把之前的數(shù)據(jù)清空,如需增加數(shù)據(jù)則使用插入功能。運行結(jié)束返回主菜單界面。若要進行查詢,在主菜單中輸入3,則進入查詢學生信息的子菜單,用戶可以根據(jù)自己的喜歡選擇用學號,姓名,總分中任一方式查詢。根據(jù)系統(tǒng)提示信息輸入查詢的條件,如果要查找的學生存在,系統(tǒng)根據(jù)要求從數(shù)據(jù)庫中查找到該學生的信息,并輸出顯示。否則提示沒有找到信息,返回主菜單界面。查詢學生信息子菜單界面如圖5所示。圖5 查詢信息若要

40、對學生信息進行修改則在主菜單中輸入4,進入修改學生信息界面,根據(jù)系統(tǒng)提示信息輸入要修改學生的學號,系統(tǒng)根據(jù)輸入的學號,檢索要修改的學生信息,在根據(jù)顯示的內(nèi)容,選擇要修改的具體內(nèi)容。修改完成先顯示未修改的信息,單擊任一鍵對其進行保存。若要刪除學生信息,在主菜單中輸入5,進入刪除學生信息界面,輸入要刪除的學生學號,如果該學號存在,系統(tǒng)將自動將其學生信息刪除,如果不存在,則顯示提示說明沒有該學號學生。操作完成后刪除界面停留幾秒立即返回到主菜單界面。在主菜單中若輸入的是6,則進入插入學生信息界面,根據(jù)系統(tǒng)提示信息輸入要增加的學生學號,若此學號不存在則根據(jù)提示輸入學生的基本信息,輸入完成后系統(tǒng)會自動保存

41、。在主菜單中若輸入7,則進入計算各科平均分成績,計算完成輸出計算結(jié)果。在主菜單界面中如果輸入8,則進入學生成績排行界面,系統(tǒng)會自動將剛輸入學生的成績進行排列,通過顯示功能模塊輸出學生的排名。在主菜單界面中如果輸入9,則進入顯示學生信息界面,系統(tǒng)會將剛輸入的學生的信息按照預定格式顯示出來。在主菜單中如果如果10,對其操作內(nèi)容進行保存。退出系統(tǒng)輸入0。結(jié)束語本文簡要介紹了如何用c語言來編寫學生成績管理系統(tǒng)和設計過程中的一些主要步驟。本系統(tǒng)基本上能夠?qū)崿F(xiàn)學生成績管理的添加、刪除、查詢、修改、計算、顯示、排序等功能,但是在設計過程中還有些功能不是很完善,操作界面不美觀,還有非常多地方需要以后繼續(xù)改進。

42、因此在以后的學習當中還應該更加努力,盡量達到最好。參考文獻:1 梁旭,古曉琳,黃明編著.c語言課程設計(第2版).電子工業(yè)出版社,2009.8.2 畢萬新,景福文主編.c語言程序設計(第四版).大連理工大學出版社,2005.8.3 田淑清主編.全國計算機等級考試二級教程.c語言程序設計(2008年版).北京:高等教育出版社,2007.8.4 (美)羅伯茨(roberts,e,s)著,翁惠玉等譯.c語言的科學和藝術(shù).北京:機械工業(yè)出版社,2005.3.5 齊景嘉主編,陳炯,張三群,苗樹紅編.數(shù)據(jù)結(jié)構(gòu)(含實訓).南京:東南大學出版社,2006.6.6 王曉東主編.c程序設計簡明教程.北京:中國水利

43、水電出版社,2006(2007重印).7 張宗杰主編.c語言程序設計使用教材.北京:電子工業(yè)出版社,2008.1.附表1:寧德師范高等??茖W校畢業(yè)論文(設計)開題報告學生姓名楊歡學號2007102235系別計算機與信息工程系專業(yè)計算機教育指導教師石曼銀職稱講師畢業(yè)論文(設計)題目用c語言實現(xiàn)一個簡單的學生成績管理系統(tǒng)畢業(yè)論文(設計)工作期限2009年12月1日起至2010年5月30日止選題的目的和意義伴隨著現(xiàn)代社會的發(fā)展,網(wǎng)絡技術(shù)的不斷進步,越來越多的管理工作都從傳統(tǒng)的現(xiàn)實社會中發(fā)展到了網(wǎng)絡上。c語言是計器語言中最基本的語言,是當今世界上應用最廣泛、影響最深遠的高級程序設計語言之一,他既有高級

44、語言的全部功能,又具有計算機硬件操作密切相關(guān)的功能,通過使用c語言設計并實現(xiàn)學生成績的管理,不僅可以熟練掌握c語言,對以后學習其他語言也有重要促進作用。畢業(yè)論文、設計綜述在信息時代,計算機以其極高的運算速度、巨大的數(shù)據(jù)存儲容量,以及能準確地進行各種算術(shù)運算和邏輯運算的能力而成為現(xiàn)代化計算工具,并被廣泛應用于社會各個領域。計算機技術(shù)的高速發(fā)展已被認為是人類進入信息時代的標志。成績管理系統(tǒng)是計算機技術(shù)和信息時代的產(chǎn)物,是信息處理或數(shù)據(jù)處理的核心。用c語言實現(xiàn)學生成績的管理首先要先對學校進行需求分析,了解現(xiàn)在的學校都是以什么方式來管理學生和學生的成績?;仡欉^去和現(xiàn)在了解現(xiàn)代社會的發(fā)展現(xiàn)狀。在根據(jù)學校

45、的具體需求設計一個適合學生使用的學生成績管理系統(tǒng),在制作系統(tǒng)之前,應該先畫一個學生成績管理系統(tǒng)的基本流程圖,畫出將要編寫的各個模塊,及各模塊功能是如何實現(xiàn)的。準備工作做好后就可以進行編寫程序了。編寫程序之前先要進行預編譯處理,定義一個學生成績的數(shù)據(jù)結(jié)構(gòu),學生成績含有幾個必要的學生信息如:學號、姓名、各科成績(舉例3科語文,數(shù)學,英語),總分及排名。結(jié)構(gòu)體定義完成后首先要編輯一個操作界面,本系統(tǒng)使用的是簡單的屏幕操作函數(shù)gotox()制作了一個簡單的歡迎界面和菜單界面。用戶根據(jù)系統(tǒng)提示輸入相應的選項,進入操作界面,功能函數(shù)的實現(xiàn)使用了gotoxy函數(shù)和printf函數(shù)編輯操作窗口,靈活運用switch函數(shù)調(diào)用各函數(shù),實現(xiàn)函數(shù)功能。在整個系統(tǒng)中普遍應用條件語句if() else限制條件的操作和功能的實現(xiàn)。每一個功能函數(shù)之間都存在在一種依賴關(guān)系,互相關(guān)聯(lián),互相調(diào)用。系統(tǒng)操作時首先進入菜單界面,當用戶輸入0時退出操作系統(tǒng);在操作之前先輸入1對系統(tǒng)進行初始化。當用戶輸入2則進行創(chuàng)建記錄信息,用戶根據(jù)系統(tǒng)提示信息輸入學生信息,輸入完成系統(tǒng)自動保存。當用戶輸入3時進入查詢界面,用戶根據(jù)自己的需求輸入要查詢的學號,輸入正確則調(diào)出信息供用戶查閱;當輸入4時進行修改,輸入要修改的學生學號在對其

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論