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

下載本文檔

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

文檔簡介

1、目 錄1 引言12 系統(tǒng)需求分析12.1項目背景分析12.2 系統(tǒng)開發(fā)的目標與意義12.3 項目需求分析13 系統(tǒng)總體設(shè)計13.1 功能模塊分析13.2 系統(tǒng)功能模塊初始化準備33.2.1 編譯預(yù)處理33.2.2 數(shù)據(jù)結(jié)構(gòu)定義33.3 具體模塊處理函數(shù)的實現(xiàn)43.3.1 菜單函數(shù)界面的設(shè)計43.3.2 功能函數(shù)設(shè)計44 系統(tǒng)測試與分析94.1 運行工具介紹94.2 系統(tǒng)操作9結(jié)束語10參考文獻10用C語言實現(xiàn)一個簡單的學生成績管理系統(tǒng)摘要:伴隨著現(xiàn)代社會的發(fā)展,網(wǎng)絡(luò)技術(shù)的不斷進步,越來越多的管理工作都從傳統(tǒng)的現(xiàn)實社會中發(fā)展到了網(wǎng)絡(luò)上。高校是使用計算機技術(shù)最早的單位,學校的各項管理工作也從現(xiàn)實生

2、活走上了網(wǎng)絡(luò)空間。本文對學校的需求進行分析,通過使用C語言設(shè)計并實現(xiàn)學生成績的管理,力求盡量簡潔實用地解決學校對學生成績的管理和學生對成績的查詢問題。關(guān)鍵字:C語言 成績管理系統(tǒng) 程序設(shè)計1 引言在信息時代,計算機以其極高的運算速度、巨大的數(shù)據(jù)存儲容量,以及能準確地進行各種算術(shù)運算和邏輯運算的能力而成為現(xiàn)代化計算工具,并被廣泛應(yīng)用于社會各個領(lǐng)域。計算機技術(shù)的高速發(fā)展已被認為是人類進入信息時代的標志。成績管理系統(tǒng)是計算機技術(shù)和信息時代的產(chǎn)物,是信息處理或數(shù)據(jù)處理的核心。該系統(tǒng)開發(fā)的總體任務(wù)是實現(xiàn)學生成績管理的系統(tǒng)化、規(guī)范化、自動化,以達到提高學生成績管理效率的目的。通過運用程序設(shè)計軟件實現(xiàn)學生成

3、績管理中的多種功能,如學生成績信息的添加、刪除、查詢、修改、顯示、排序等。該系統(tǒng)的設(shè)計充分利用計算機作為輔助工具,來實現(xiàn)學生考試成績從傳統(tǒng)的手工管理到計算機管理,并對提高管理效率和節(jié)約大量的人力、物力有一定的推動作用。因此,開發(fā)這種管理軟件很必要,本文將在分析系統(tǒng)的應(yīng)用價值以及開發(fā)工具的基礎(chǔ)上,用C語言來開發(fā)成績管理系統(tǒng)。2 系統(tǒng)需求分析2.1項目背景分析在我國,各大中小學校的各類信息管理系統(tǒng)并非一個新的課題,但也有的學校根本就沒有任何信息管理系統(tǒng),特別是在西部貧困地區(qū),學校的各類管理依然由手工操作來完成,這十分落后,效率極低,成本很大,而且極異出錯。隨著社會的發(fā)展,信息化是社會進程的必然趨勢

4、,學校管理只有快,準,精才能發(fā)揮其價值。2.2 系統(tǒng)開發(fā)的目標與意義(1)系統(tǒng)開發(fā)目標:本系統(tǒng)是將現(xiàn)代化的計算機技術(shù)和傳統(tǒng)的教學、教務(wù)工作相結(jié)合,按照學院的工作流程設(shè)計完成的。為了使系統(tǒng)在學院的管理中發(fā)揮充分發(fā)揮其作用,實現(xiàn)工作過程的計算機化,提高工作效率和工作質(zhì)量,現(xiàn)提出如下的系統(tǒng)開發(fā)目標:系統(tǒng)應(yīng)具有實用性、可靠性和適用性。對系統(tǒng)中數(shù)據(jù)庫的信息進行有效處理,防止數(shù)據(jù)錯亂。能夠按照用戶選擇的不同的條件進行簡單查詢。方便用戶的操作,盡量減少用戶的操作。(2)系統(tǒng)開發(fā)的意義:在各大中小學校,用計算機管理學校的信息已經(jīng)越來越普遍了。用計算機不但可以提高工作效率,而且還節(jié)省了許多人力物力財力。提高了學

5、校的管理能力,為此,用計算機來管理學校的信息,是非常必要的。2.3 項目需求分析學校工作流程分析:學校工作總體規(guī)劃由教務(wù)人員在學生成績管理系統(tǒng)中輸入學生的基本信息并對其進行維護管理,包括對信息的增加、修改及對信息的各項處理操作等。新的學年,教務(wù)人員首先編排班級,再對在校學生進行基本的信息錄入,新生入學后由教務(wù)人員在管理系統(tǒng)中完成新學生信息的維護。在每個學期開始,教務(wù)處根據(jù)班級的情況,以班為單位,為每個班級安排一個班主任,并對各科老師進行安排。每舉行一次考試后由任課老師對成績進行錄入。班主任對本班的成績匯總。并進行排名,并對本年級各科成績及總成績進行排名。教務(wù)處、班主任及任課老師跟據(jù)實際情況對錄

6、入的成績進行維護管理,各位同學對以上錄入的信息可以跟據(jù)自己的需要進行適當?shù)牟樵儭? 系統(tǒng)總體設(shè)計3.1 功能模塊分析學生成績管理系統(tǒng)是對學生基本信息及成績的管理。開發(fā)工具主要采用TurboC2.0,主要用于對學生的學號、姓名等自然信息以及各項學科成績進行增加、刪除、修改、查詢及保存到文件等操作。系統(tǒng)給用戶提供了一個簡單的人機界面,使用戶可以根據(jù)提示輸入操作項,調(diào)用系統(tǒng)提供的管理功能。學生成績管理系統(tǒng)處理流程如圖1。0主菜單界面歡迎界面1輸入0退出2查詢3修改4刪除5插入6平均分7排序8顯示繼續(xù)輸入10返回主菜單1學號查詢2姓名查詢3總分查詢結(jié) 束9初始化10保存返回圖1 系統(tǒng)處理流程圖主要功能

7、設(shè)計描述如下:(1)系統(tǒng)主控平臺允許用戶選擇想要的操作,包括輸入學生信息、顯示學生信息、查詢學生信息、修改學生信息、刪除學生信息、計算成績以及成績的排序等。通過輸入相應(yīng)的序號選擇相應(yīng)的操作。(2)學生成績信息用戶根據(jù)提示輸入學生的學號、姓名、以及三門課的成績,如語文成績、英語成績、數(shù)學成績等。輸入完成一條學生記錄,可根據(jù)提示信息繼續(xù)輸入下一條學生記錄或者繼續(xù)其他的操作。允許輸入多條學生的成績信息記錄。輸入完的學生記錄暫時保持在單鏈表中,等待下一步的操作。(3)查詢學生信息可以根據(jù)學號,姓名,總分從單鏈表中對學生所有的信息進行查詢,如果沒有查詢到任何信息,系統(tǒng)會給出提示信息。(4)修改學生信息首

8、先提示用戶輸入要進行修改的操作的學號,如果單鏈表中有該學生的信息存在,則提示用戶輸入要修改的學生的基本信息、各科成績等,并將修改結(jié)果重新存儲在單鏈表中。如果用戶沒有找到要修改的學生信息,系統(tǒng)將給出提示。(5)插入學生信息對已經(jīng)建立好的信息若還需增加,則對信息進行插入。首先提示用戶輸入要進行插入的學號,然后在根據(jù)提示對用戶信息進行完整輸入。輸入完成后系統(tǒng)將對其進行保存。(6)刪除學生信息首先提示用戶輸入要刪除學生的學號,系統(tǒng)根據(jù)用戶輸入的信息在單鏈表中查找,如果找到,直接刪除該學生全部信息,如果沒有找到,系統(tǒng)給出提示信息。(7)計算各科成績平均分該模塊主要進行學生成績的平均分計算,進入計算界面,

9、系統(tǒng)自動對各科進行平均分計算。(8)顯示學生信息在選擇了顯示學生信息后,將剛輸入的學生信息從單鏈表中調(diào)出來顯示,如果沒有數(shù)據(jù),則提示無學生記錄。(9)學生成績排序成績信息輸入完整后,根據(jù)學生的總分對學生從小到大進行排序,在顯示學生信息的時候可以看到學生在班級或校的排列名次。(10)操作完成后對操作結(jié)果進行保存。運行完畢,退出系統(tǒng)。3.2 系統(tǒng)功能模塊初始化準備3.2.1 編譯預(yù)處理“編譯預(yù)處理”是C編譯系統(tǒng)的一個組成部分。在C編譯系統(tǒng)對程序進行通常的編譯(包括詞法和語法分析、代碼生成、優(yōu)化等)之前,先對程序中這些特殊命令進行“預(yù)處理”,然后將預(yù)處理的結(jié)果和源程序一起再進行通常的編譯處理,以得到

10、目標代碼。C語言提供的預(yù)處理功能主要有:(1)宏定義;(2)文件包含;(3)條件編譯。而本程序使用文件包含的預(yù)處理方式進行編譯預(yù)處理:#include<stdlib.h>/*標準庫函數(shù)*/#include<stdio.h>/*標準輸入、輸出函數(shù)庫*/#include<conio.h>/*屏幕操作函數(shù)*/#include<string.h>/*字符串函數(shù)*/3.2.2 數(shù)據(jù)結(jié)構(gòu)定義學生成績管理系統(tǒng)中的變量有學號,姓名,成績等,這些數(shù)據(jù)類型各不相同,無法用簡單數(shù)據(jù)類型來描述,顯然要定義結(jié)構(gòu)體類型。由于學生人數(shù)很多,還需要定義數(shù)組或者鏈表。數(shù)組的特點是

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

12、k,經(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; /*定義結(jié)點為link結(jié)構(gòu)*/3.3 具體模塊處理函數(shù)的實現(xiàn)3.3.1 菜

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

14、6;i+) putch(0xcd); /*輸出上邊框水平線*/putch(0xbb); /*輸出右上角邊框*/for(i=3;i<23;i+) gotoxy(8,i); putch(0xba); /*輸出左垂直線*/gotoxy(56,i); putch(0xba); /*輸出右垂直線*/gotoxy(8,23); putch(0xc8); /*輸出左下角邊框*/for(i=1;i<46;i+) putch(0xcd); /*輸出下邊框水平線*/putch(0xbc); /*輸出右下角邊框*/window(9,3,55,22);/*制作顯示菜單的窗口*/(2)菜單是由menu函數(shù)實

15、現(xiàn),主要通過printf函數(shù)顯示一些文本選項如:printf("<0>exit the program.n");構(gòu)建一個簡單的字符界面,系統(tǒng)設(shè)置11個模塊,用戶通過輸入關(guān)鍵字key從0-10之間選擇相應(yīng)的操作,函數(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:h

16、ead=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ù)設(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è)學號,排名為整形,名字設(shè)為字符型,語文,數(shù)學,英語成績設(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&quo

18、t;,&ID); head->ID=cIDprintf("please input name:"); scanf("%s",&cname);for(i=0;i<256;i+) head->namei=cnamei;printf("please input china:"); scanf("%d",&cchina);head->china=cchina;head->next=NULL; pointer=head;如果輸入正確既while為真的時候為news新建立一

19、個結(jié)點,提示用戶如果要繼續(xù)輸入按1,輸入0為退出。新輸入的數(shù)據(jù)存儲到news指針里,然后把head和news里面的數(shù)據(jù)一起放到pointer,供下面操作時調(diào)用pointer的數(shù)據(jù)。while(1)news=(link)malloc(sizeof(node);printf("Are you continue?");printf("If continue enter'1', or return enter'0'.");/*輸入1為繼續(xù),0為退出*/scanf("%d",&cID); if(cID=0

20、)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ù)gotoxy(x,y)和printf函數(shù)制作查詢的子菜單,菜單包括:0.exit、1.search by ID、2.search by name、3.search by sum。查詢菜單設(shè)置完成后應(yīng)用switch

21、()case1:執(zhí)行語句;break;語句調(diào)用相應(yīng)函數(shù)操作功能。系統(tǒng)在調(diào)用函數(shù)時,調(diào)用自定義的輔助函數(shù),按預(yù)定義格式顯示查詢成績的子菜單界面。用戶輸入的格式正確時使用while函數(shù)調(diào)用相應(yīng)的功能函數(shù)。 按學號查詢,輸入choose=1,key1為要查詢的學號,查找系統(tǒng)中學號為key1的學生是否存在,如果key1=ID說明找到該學生,并標記flag=1,中斷查詢顯示查詢的結(jié)果,否則繼續(xù)查找直到找到為止。例如:if(choose=1)while(pointer!=NULL)if(pointer->ID-key1=0) flag=1;break;else pointer=pointer->

22、;next; 按名字查詢,輸入choose=2,sname為要查詢學生的名字,查找系統(tǒng)中名字為sname的學生是否存在,如果strcmp(pointer->name,sname)=0說明找到該學生,并標記flag=1,中斷查詢顯示查詢的結(jié)果,否則繼續(xù)向下查找直到找到名字為sname的學生。 按學生的總成績查詢,輸入choose=3,score為要查找學生的總分,查找系統(tǒng)中總分為score的學生是否存在,如果if(pointer->sum-score=0)說明找到該學生,并標記flag=1,中斷查詢顯示查詢的結(jié)果;否則繼續(xù)向下查找直到找到總分為score的學生;(4)修改學生成績函數(shù)

23、修改函數(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)提示要修改的具體內(nèi)容,根據(jù)用戶需要選擇相應(yīng)內(nèi)容進行修改,此功能應(yīng)用switch(choose)case1:執(zhí)行語句;break;

24、語句執(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);信息輸入完成后

25、,按任意鍵系統(tǒng)自動保存到pointer中,新信息將覆蓋原有信息pointer->namei=xnamei,運行結(jié)束輸出修改后的信息,返回到菜單。如果沒有找到,系統(tǒng)將中止執(zhí)行。while(1) if(pointer->ID=key3) if(choose=1) for(i=0;i<256;i+)pointer->namei=xnamei; break; else if(choose=2)pointer->china=xchina;break;else if(choose=3)pointer->english=xenglish;break;else if(cho

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

27、鏈表的中間結(jié)點,刪除鏈表的尾節(jié)點。具體情況如圖2。. pointer!=key2時q pointer= =key2 j=0p pointer= =key2 j!=0jq=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=po

28、inter->next;else break; 如果key2=pointer->ID時,判斷j是否為0,如果j為0說明pointer為頭結(jié)點,則直接將結(jié)點刪除,head指向他的下一指針。if(pointer->ID=key2)if(j=0)head=head->next; free(pointer); 如果判斷j!=0,則說明刪除的結(jié)點不是頭指針,結(jié)點位于中間,要刪除結(jié)點pointer首先應(yīng)該讓q->next指向pointer->next,然后釋放pointer。執(zhí)行完后系統(tǒng)將自動停留幾秒然后返回主菜單。(7)插入學生成績插入功能主要用于插入新的學生記錄。在

29、insert_chengji函數(shù)先定義2個結(jié)構(gòu)體指針pointer和news,pointer為原指針,news為新插入指針。定義完成后對pointer初始化,然后為news建立新結(jié)點news=(link)malloc(sizeof(node),定義完成后為news輸入新數(shù)據(jù)。插入的情況有兩種既:如果pointer為空則直接將news的值賦給head輸入系統(tǒng)并做為頭指針;如果pointer不為空則把news的值賦給pointer,運行如果正確且head不為空時顯示輸入的數(shù)據(jù)信息。具體操作如圖3。 pointer= =NULLheadp news pointer!=NULLnewsp 圖3 插入算

30、法程序:if(head!=NULL) news=(link)malloc(sizeof(node); /*如果head不為空,為news指針建立一個結(jié)點*/gotoxy(3,5); printf("please input student ID:");scanf("%d",&news->ID);while(1) if(pointer=NULL) news->next=head; head=news; break; /*如果pointer為空,news直接為頭指針*/if(pointer->ID=key3) news->ne

31、xt=pointer->next; pointer->next=news; break;/*如果key3等于ID直接插入news*/pointer=pointer->next;(8)計算各科成績的平均分函數(shù)計算函數(shù)average求各科的平均分。首先為各科成績進行初始化操作,如果pointer不為空,說明里面有數(shù)據(jù),在對其求各科的總成績,最后在進行平均分求值。計算完成顯示最后計算結(jié)果。具體程序如下:while(1) achina=achina+pointer->china; /*求總分*/aenglish=aenglish+pointer->english;amat

32、h=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用來對學生成績進行按從大到小的順序排序。處理過程:定義2個臨時指針pointer、max,max用來存放pointer的數(shù)據(jù),而pointer指向它的下一位。再定義一個單精度變量fen、整形變量k和字符型變量s256,分別存放成績、學

33、號、名字。定義完成后把先對pointer初始化,用count來記錄pointer的個數(shù),然后從1開始對max和pointer進行比較。比較一次count加1,在把count的值賦給pointer->order。排序完成后到顯示界面查看。函數(shù)排序過程如下:for(i=1;i<count;i+) max=pointer=head;for(j=i+1;j<=count;j+) max=pointer->next;if(max->sum>pointer->sum) /*用總分對成績進行排名*/ fen=max->sum; max->sum=poin

34、ter->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;

35、max->english=pointer->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->

36、;next;(10)顯示學生成績函數(shù)顯示函數(shù)printf_list主要顯示學生的基本信息,每當操作完成的時候一般都會調(diào)用此函數(shù)進行預(yù)覽。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|

37、english|math|sum|order|n");gotoxy(2,6);printf("+-+-+-+-+-+-+-+n");while(pointer!=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,p

38、ointer->order);pointer=pointer->next; gotoxy(2,8);printf("*end*n");gotoxy(2,10);getch();returnhead;clrscr();(11)保存學生成績函數(shù)保存函數(shù)save主要用來對學生成績運行后的結(jié)果進行保存。該函數(shù)在運行之前先要定義一個指向文件的指針fp,在定義一個移動指針p和保存輸出的文件名outfile。用戶根據(jù)系統(tǒng)的提示,輸入要保存的文件名和保存路徑。系統(tǒng)以只寫(”w”)方式打開文件,如果移動指針p不為空則寫入一條記錄。運行結(jié)束返回主菜單。運行過程函數(shù):printf(&

39、quot;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!-n");fclose(fp);4 系統(tǒng)測試與分析4.1 運行工具介紹C語言運用的是TurboC程序應(yīng)用軟件中運行。TurboC是美國Borland公司的產(chǎn)品,Borland公司是一家專門從事軟件

40、開發(fā)、研制的大公司。該公司相繼推出了一套Turbo系列軟件,如TurboBASIC,TurboPascal,TurboProlog,這些軟件很受用戶歡迎。該公司在1987年首次推出TurboC1.0產(chǎn)品,其中使用了全然一新的集成開發(fā)環(huán)境,即使用了一系列下拉式菜單,將文本編輯、程序編譯、連接以及程序運行一體化,大大方便了程序的開發(fā)。1988年,Borland公司又推出TurboC1.5版本,增加了圖形庫和文本窗口函數(shù)庫等,而TurboC2.0則是該公司1989年出版的。TurboC2.0在原來集成開發(fā)環(huán)境的基礎(chǔ)上增加了查錯功能,并可以在Tiny模式下直接生成.COM(數(shù)據(jù)、代碼、堆棧處在同一64K內(nèi)存中)文件。還可對數(shù)學協(xié)處理器(支持8087/80287/80387等)進行仿真。4.2 系統(tǒng)操作將編寫好的程序在TurboC的代碼編輯器里進行編輯,語法檢查正確后進行運行。系統(tǒng)進入運行后,首先進入系統(tǒng)歡迎界面單擊任意鍵鍵進

溫馨提示

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

評論

0/150

提交評論