學(xué)生成績管理系統(tǒng)論文加源代碼數(shù)據(jù)結(jié)構(gòu)與算法課設(shè)C語言_第1頁
學(xué)生成績管理系統(tǒng)論文加源代碼數(shù)據(jù)結(jié)構(gòu)與算法課設(shè)C語言_第2頁
學(xué)生成績管理系統(tǒng)論文加源代碼數(shù)據(jù)結(jié)構(gòu)與算法課設(shè)C語言_第3頁
學(xué)生成績管理系統(tǒng)論文加源代碼數(shù)據(jù)結(jié)構(gòu)與算法課設(shè)C語言_第4頁
學(xué)生成績管理系統(tǒng)論文加源代碼數(shù)據(jù)結(jié)構(gòu)與算法課設(shè)C語言_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、學(xué)生成績管理系統(tǒng)(論文加源代碼)數(shù)據(jù)結(jié)構(gòu)與算法課設(shè)(C語言)目 錄引言 1 系統(tǒng)概述 1.1 系統(tǒng)功能 1.2 系統(tǒng)作用和特點(diǎn) 2 需求分析2.1 功能要求2.2 性能要求2.3 數(shù)據(jù)需求 2.4 開發(fā)環(huán)境 3 詳細(xì)設(shè)計(jì)3.1 登陸界面與主界面的實(shí)現(xiàn)3.2 詳細(xì)設(shè)計(jì)思想3.3 系統(tǒng)結(jié)構(gòu)體的設(shè)計(jì) 3.3 各種模塊的實(shí)現(xiàn) 4 所遇到的問題和分析4.1系統(tǒng)存在的不足4.2 制作過程中遇到的問題 4.4 問題分析5系統(tǒng)特色與關(guān)鍵技術(shù) 6結(jié)論與心得體會(huì)參考文獻(xiàn)附錄摘 要 隨著計(jì)算機(jī)的普與,人們的生活和學(xué)習(xí)都離不開電腦,計(jì)算機(jī)是提高生產(chǎn)效率的主要工具與途徑,所以教育也不例外?,F(xiàn)在基本每個(gè)大學(xué)都有自己的學(xué)生

2、管理系統(tǒng)。學(xué)生成績管理系統(tǒng)不僅把廣大教師從繁重的成績管理工作中解脫出來、把學(xué)校從傳統(tǒng)的成績管理模式中解放出來,而且對(duì)學(xué)生成績的判斷和整理更合理、更公正,同時(shí)也給教師提供了一個(gè)準(zhǔn)確、清晰、輕松的成績管理環(huán)境。本系統(tǒng)依據(jù)開發(fā)要求主要應(yīng)用于教育系統(tǒng),學(xué)生成績管理系統(tǒng)借助于計(jì)算機(jī)強(qiáng)大的處理能力,大大減輕了管理人員的工作量,并提高了處理的準(zhǔn)確性。學(xué)生成績管理系統(tǒng)的開發(fā)運(yùn)用,實(shí)現(xiàn)了學(xué)生成績管理的自動(dòng)化。主要完成對(duì)學(xué)生成績的管理,包括添加、修改、刪除,查詢,查看信息以與保存入檔等六個(gè)方面。每一個(gè)表的修改都將聯(lián)動(dòng)的影響其它的表,當(dāng)完成添加或刪除操作時(shí)系統(tǒng)會(huì)自動(dòng)地完成學(xué)生成績的修改。查詢功能也是系統(tǒng)的核心之一,

3、在系統(tǒng)中主要根據(jù)學(xué)生和學(xué)號(hào)進(jìn)行查詢,其目的都是為了方便用戶使用。系統(tǒng)有完整的添加、刪除和修改功能,并具備成績表查詢功能。論文主要介紹了本課題的開發(fā)背景,所要完成的功能和開發(fā)的過程。本文主要介紹了本課題的開發(fā)背景,所要完成的功能和開發(fā)的過程。重點(diǎn)說明了系統(tǒng)的設(shè)計(jì)思路、總體設(shè)計(jì)、各個(gè)功能模塊的設(shè)計(jì)與實(shí)現(xiàn)。關(guān)鍵詞:學(xué)生成績;成績管理信息系統(tǒng);C語言引言 幾年前,許多學(xué)校對(duì)于學(xué)生成績的管理還是停留在運(yùn)用手工操作,隨著計(jì)算機(jī)的飛快發(fā)展以與各個(gè)學(xué)校的規(guī)模不斷壯大,學(xué)生人數(shù)逐年增加。關(guān)于學(xué)生成績管理工作所涉與的數(shù)據(jù)量越來越大,有的學(xué)校不得不靠增加人力、物力來進(jìn)行學(xué)生成績管理。但人工管理又有著許多缺陷,比如:

4、效率底、易出錯(cuò)、檢索信息慢、對(duì)學(xué)校的管理提供決策信息較為困難等。學(xué)校不能完全掌握每一個(gè)學(xué)生的學(xué)習(xí)情況,這樣對(duì)學(xué)校的教學(xué)工作與其不利,使學(xué)校的教學(xué)質(zhì)量一直停滯不前,所以我想借本次課程設(shè)計(jì)之際,開發(fā)一個(gè)適用于各校的通用高校學(xué)生成績管理系統(tǒng),使學(xué)校能夠充分掌握學(xué)生的學(xué)習(xí)情況,便于學(xué)校教學(xué)工作的進(jìn)行和改革。開發(fā)的目標(biāo)建立學(xué)生成績管理系統(tǒng),采用計(jì)算機(jī)對(duì)學(xué)生成績進(jìn)行管理,進(jìn)一步提高辦學(xué)效率和現(xiàn)代化水平。使學(xué)校對(duì)學(xué)生的成績能夠快速并準(zhǔn)確的錄入、修改和查詢,更好地掌握每個(gè)學(xué)生的各科成績,便于教師的管理。使學(xué)生對(duì)個(gè)人的學(xué)習(xí)成績進(jìn)行快速的查詢。讓老師能夠更好、更快的了解學(xué)生的學(xué)習(xí)情況,使學(xué)校的教學(xué)質(zhì)量進(jìn)一步的提高

5、。本系統(tǒng)改變以往靠手工管理學(xué)生成績的狀況,可以樹立良好的辦學(xué)先鋒,提高工作效率,節(jié)省人力和物力,在些高校建立了校園網(wǎng),實(shí)現(xiàn)了辦公自動(dòng)化。1 系統(tǒng)概述1.1 系統(tǒng)功能 學(xué)生成績管理系統(tǒng)主要以管理學(xué)生成績信息為目的,。主要功能包括登錄用戶、成績錄入管理、查詢管理、修改管理、刪除管理、統(tǒng)計(jì)管理、成績排名等。登錄用戶:老師可以進(jìn)行各種操作,學(xué)生只能進(jìn)行查詢操作。成績錄入管理:每次考試結(jié)束,都可錄入學(xué)生成績信息。查詢管理:包括查詢成績和基本信息??梢燥@示單獨(dú)一條記錄,也可以顯示所有信息。修改管理:包括修改成績和基本信息。刪除管理:包括刪除成績和基本信息。統(tǒng)計(jì)管理:統(tǒng)計(jì)學(xué)生人數(shù),優(yōu)生率,不與格人數(shù)和平均成

6、績。成績排名:按成績的高低順序排列。1.2 系統(tǒng)作用和特點(diǎn)系統(tǒng)可以更快的使學(xué)生的成績相加并且排名以與各種統(tǒng)計(jì),這對(duì)老師來說是很好可以減少很多工作量,在多人多課考試時(shí)很有用,只要成績出來,輸入電腦就可以在幾秒是成績相加,并知道了某學(xué)生在學(xué)校排名,對(duì)老師來說,考完試自由的時(shí)間就增加了許多。功能強(qiáng)大,實(shí)用性很強(qiáng),并且有較好的交互界面,方便用戶使用,具有易操作性,覆蓋面廣。2需求分析2.1功能要求使用中文菜單,界面設(shè)計(jì)和用戶輸入輸出要人性化些;將學(xué)生信息保存在文本文檔中, 具有數(shù)據(jù)刪除功能,能最終從文件中刪除;排序功能,根據(jù)自己設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),設(shè)計(jì)排序算法具有多種查詢(如按學(xué)號(hào)查詢、按查詢、按成績查詢

7、等)與輸出功能;其它功能(如各種統(tǒng)計(jì),統(tǒng)計(jì)每個(gè)學(xué)生所有課程的平均分,統(tǒng)計(jì)某門課程所有學(xué)生的平均分等)學(xué)生信息的修改(修改學(xué)生,修改學(xué)生某門課程的成績)2.2 性能需求系統(tǒng)的高速性、穩(wěn)定性、安全性。系統(tǒng)的體系結(jié)構(gòu)能夠方便使用功能,適應(yīng)業(yè)務(wù)、辦公的發(fā)展。系統(tǒng)人機(jī)界面友好,易學(xué)易用。系統(tǒng)維護(hù)成本較低。2.3 數(shù)據(jù)需求基本數(shù)據(jù)維護(hù)功能添加學(xué)生的信息。修改學(xué)生的信息。刪除學(xué)生的信息。查詢學(xué)生的信息。統(tǒng)計(jì)學(xué)生的信息。存讀的成績信息。學(xué)生C語言算法數(shù)據(jù)庫性別數(shù)據(jù)庫學(xué)號(hào)算法XXC語言學(xué)生數(shù)據(jù)結(jié)構(gòu)登錄用戶賬號(hào)權(quán)限密碼 用戶結(jié)構(gòu)用戶登錄 學(xué)生成績管理系統(tǒng) 學(xué)生用戶 老師用戶查詢記錄刪除記錄來成績統(tǒng)計(jì)修改記錄查詢記

8、錄統(tǒng)計(jì)記錄存讀記錄成績統(tǒng)計(jì)統(tǒng)計(jì)記錄退出添加記錄主菜單2.4 開發(fā)環(huán)境開發(fā)環(huán)境是用Visual C+ 6.0,簡稱VC或者VC6.0,是微軟推出的一款C+編譯器,將“高級(jí)語言”翻譯為“機(jī)器語言(低級(jí)語言)”的程序。Visual C+是一個(gè)功能強(qiáng)大的可視化軟件開發(fā)工具。它是一種可視化的編程工具,它基于windows操作系統(tǒng)。它有兩種方式來建立應(yīng)用程序,一種是通過VC6.0的可視化編程工具,另一種是通過visual c+6.0的代碼編輯器,手工編寫代碼。本系統(tǒng)所用的語言是C語言,C語言是目前世界上流行、使用最廣泛的高級(jí)程序設(shè)計(jì)語言。C語言對(duì)操作系統(tǒng)和系統(tǒng)使用程序以與需要對(duì)硬件進(jìn)行操作的場(chǎng)合,用C語言

9、明顯優(yōu)于其它高級(jí)語言,許多大型應(yīng)用軟件都是用C語言編寫的。C語言具有繪圖能力強(qiáng),可移植性,并具備很強(qiáng)的數(shù)據(jù)處理能力,因此適于編寫系統(tǒng)軟件,三維,二維圖形和動(dòng)畫它是數(shù)值計(jì)算的高級(jí)語言3 詳細(xì)設(shè)計(jì)3.1登陸界面與主界面的實(shí)現(xiàn)系統(tǒng)登錄界面用了C選擇控制語言。用于對(duì)進(jìn)入系統(tǒng)的用戶進(jìn)行安全檢查,阻止非法用戶的進(jìn)入。驗(yàn)證賬號(hào)與密碼,通過判斷賬號(hào)與密碼是否符合申請(qǐng)的賬號(hào)和密碼,如果符合則允許登錄,否則提示用戶賬號(hào)或密碼不正確。本系統(tǒng)的登錄界面:主界面:在主界面中包括“班級(jí)成績添加班級(jí)成績顯示 班級(jí)成績統(tǒng)計(jì) 班級(jí)成績查詢 班級(jí)成績修改 班級(jí)成績表 班級(jí)成績存檔 班級(jí)成績讀入 退出”等全部的功能,之所以設(shè)計(jì)這麼

10、一個(gè)主界面,一是因?yàn)槟苁褂脩魧?duì)程序操作的流程更加清晰簡明,二是保證了用戶同時(shí)只能對(duì)一個(gè)文件進(jìn)行操作系統(tǒng)的要求,保證了系統(tǒng)的正確性和易用性。3.2 詳細(xì)設(shè)計(jì)思想3.2.1確定程序主要功能模塊這個(gè)就比較簡單了,主要是根據(jù)系統(tǒng)設(shè)計(jì)的說明與要求來設(shè)計(jì),從而設(shè)計(jì)了九大功能模塊,有文件操作,有系統(tǒng)維護(hù)功能,排序和統(tǒng)計(jì)功能,有輸入輸出等基本功能,比較人性化,添加了較多的提示語。這個(gè)程序的主要功能時(shí)輸入學(xué)生的學(xué)號(hào),學(xué)期和三科成績來對(duì)其進(jìn)行存儲(chǔ),在存儲(chǔ)后可以對(duì)學(xué)生的成績按學(xué)號(hào)與學(xué)期或與學(xué)期來進(jìn)行查詢,同時(shí)輸出此同學(xué)的平均分與總分,之后可以對(duì)某個(gè)同學(xué)的成績進(jìn)行各種操作,例如修改,刪除等,同時(shí)還可以對(duì)學(xué)生們的成績按

11、照總分或單科成績排序,在整個(gè)過程中所做的操作都會(huì)保存到student.txt文件中并顯示。3.2.2確定語言算法由于之前都沒有做過類似的設(shè)計(jì),所以一時(shí)間不能夠確定到底使用何種語言來設(shè)計(jì)本系統(tǒng),所以在網(wǎng)上看了一些其他人設(shè)計(jì)的程序,鏈表的、數(shù)組的,各種各樣的,也不知如何選擇,但是仔細(xì)地看了其中的設(shè)計(jì)思想,最終還是用C和數(shù)組的來做,一是覺得本人對(duì)鏈表掌握的不是很熟練,那么在設(shè)計(jì)過程中容易產(chǎn)生不能理解的錯(cuò)誤,耽誤時(shí)間,二是想運(yùn)用C,可以鞏固一下所學(xué)的數(shù)據(jù)結(jié)構(gòu)的知識(shí),之前做實(shí)驗(yàn)的時(shí)候都沒怎么用所學(xué)的知識(shí),這時(shí)候想練練。就這樣確定了整體的結(jié)構(gòu)算法3.3 系統(tǒng)結(jié)構(gòu)體的設(shè)計(jì)Student總分平均分C語言XX學(xué)

12、號(hào)算法性別數(shù)據(jù)庫struct Student /結(jié)構(gòu)體int term;/學(xué)期int num;/學(xué)號(hào)char name12;/float mark1;/成績float mark2;float mark3;float sum;/總分float average;/平均分3.3 各種模塊的實(shí)現(xiàn)Main()函數(shù)的設(shè)計(jì)用Mvoid main()來實(shí)現(xiàn),主要是來顯示主菜單,使用戶選擇操作。在main()函數(shù)中主要運(yùn)用do-while循環(huán)語句和switch()-case選擇判斷語句來調(diào)用相關(guān),選擇各種功能模塊。系統(tǒng)的運(yùn)行是在一個(gè)永真的循環(huán)里進(jìn)行的,只有在主界面并選擇“退出”時(shí),才會(huì)跳出永真循環(huán),并退出程序。

13、3.3.1錄入學(xué)生記錄模塊用函數(shù)int add_text(struct Student stud, int n) 來實(shí)現(xiàn) 主要功能用來對(duì)學(xué)生的記錄進(jìn)行添加。選擇8,進(jìn)入模塊錄入所需學(xué)生個(gè)數(shù)的學(xué)生信息,比如學(xué)號(hào),成績等。然后進(jìn)入主菜單,根據(jù)主菜單來在此基礎(chǔ)上進(jìn)行操作。期間會(huì)有一些提示語,按此操作即可。本函數(shù)用到了文件操作的指針FILE *fp。3.3.2顯示學(xué)生記錄模塊用函數(shù)void output_stu(struct Student stud, int n, int i)來實(shí)現(xiàn) 主要功能是用來顯示學(xué)生的信息進(jìn)行輸出。在系統(tǒng)已經(jīng)錄入了學(xué)生資料的前提下,只用該功能可以顯示學(xué)生的信息資料等等。同時(shí)也

14、會(huì)自動(dòng)跳出主菜單進(jìn)行后續(xù)操作。主要的程序代碼就是從文件的讀操作和界面顯示操作。3.3.3添加學(xué)生資料模塊用函數(shù)void input_num(struct Student stud, int n, int i) 來實(shí)現(xiàn)。主要功能是用來添加學(xué)生資料,成績。若有重號(hào)則提示重新輸入,就可以使用本模塊來進(jìn)行添加利用for循環(huán)進(jìn)行輸入新學(xué)生記錄,輸入完后,最后會(huì)有一個(gè)提示語句:是否繼續(xù)輸入 (yn),y是繼續(xù)輸入,n是返回主菜單否則將返回主菜單,本模塊功能到此結(jié)束。在此期間會(huì)根據(jù)語句算出總分和平均分,并默認(rèn)按學(xué)號(hào)排序保存到文件中去3.3.4 查詢,刪除,修改模塊分別用三個(gè)函數(shù)來實(shí)現(xiàn),刪除箅修改模塊是基于查

15、詢模塊上的,要先查詢你要進(jìn)行操作的容,然后再進(jìn)行其它操作。 查詢是用用函數(shù)int find_stu(struct Student stud, int n)來實(shí)現(xiàn),它有兩種方式,主菜單先5進(jìn)入查詢,會(huì)出現(xiàn)提示:請(qǐng)選擇您要查詢的方式:(1:按學(xué)號(hào)2:按名字;),用for和if語句,if (strcmp(, you_choice) != 0) 如果第i項(xiàng)與查找信息不匹配則查詢失敗,否則查詢成功,調(diào)用顯示函數(shù),輸出該學(xué)生信息,之后會(huì)出現(xiàn)提示:是否進(jìn)行1:修改2:刪除3:退出選項(xiàng)。修改是用函數(shù)void updata_stu(struct Student stud, int n, in

16、t y) 來實(shí)現(xiàn)的,修改也可以進(jìn)行任選一門課進(jìn)行修改,會(huì)有提示:請(qǐng)輸入您要對(duì)哪一門成績進(jìn)行修改?( 0:數(shù)據(jù)庫; 1:算法; 2:C語言) 之后輸入該課程的成績就可以了。 刪除是用void delete_stu(struct Student stud, int n, int y)來實(shí)現(xiàn)的,選擇了以后,還會(huì)有判斷提示:確認(rèn)您要進(jìn)行刪除嗎?(y/n),y是確定,之后就會(huì)回到主菜單,n是不刪除。退出是如果不進(jìn)行任何操作后,返回到主菜單。3.3.5 統(tǒng)計(jì)模塊誶功能是用void TJ_stu(struct Student stud, int n, int o) 來實(shí)現(xiàn)的。選3進(jìn)入統(tǒng)計(jì)界面,首先有提示要統(tǒng)

17、計(jì)的學(xué)科,有123供你選擇,選擇了以后,就可以顯示出該課程的成績表,按從高到低的順序排列,算法是用冒泡排序方法。以與各種統(tǒng)計(jì),包括:平均成績、與格率、優(yōu)生率、不與格人數(shù)、優(yōu)生人數(shù)。排序代碼如下:for (i = 0; i n-1; i+) for(j = i+1; j studi.scoreo) temp = studi; studi = studj; studj = temp; 3.3.6 班級(jí)成績表模塊該模塊是用void chenji_stu(struct Student stud, int n, int o) /函數(shù)實(shí)現(xiàn),用到的算法是直接選擇排序,是按總成績從高到低排序的,顯示是調(diào)用了顯

18、示模塊的函數(shù),使得函數(shù)的結(jié)構(gòu)大的簡化了。主要程序如下:for (i = 0; i n-1; i+) k=i;for(j = i+1; j studi.score3) k=j; / score3)表示總成績if(k!=i) temp = studi; studi = studk; studk = temp; 4 所遇到的問題和分析解決4.1系統(tǒng)存在的不足本學(xué)生成績管理系統(tǒng)由九大模塊組成,每個(gè)模塊相互聯(lián)系又相互獨(dú)立。這個(gè)學(xué)生成績管理系統(tǒng)存在著很多不足之處,由于自己本身編程能力的問題,這個(gè)系統(tǒng)可以實(shí)現(xiàn)的功能非常有限。只能實(shí)現(xiàn)學(xué)生管理系統(tǒng)最基本的功能,可以進(jìn)行簡單的輸入、輸出學(xué)生資料,查詢和修改學(xué)生信

19、息,能直接從文件中讀入數(shù)據(jù),能對(duì)系統(tǒng)所作的修改、操作進(jìn)行保存等。而且在每個(gè)模塊也有不足的地方,比如在輸入學(xué)生資料時(shí),對(duì)每個(gè)信息項(xiàng)沒有嚴(yán)格的規(guī)定,可以輸入任何的字符。感覺應(yīng)用圍還是不容樂觀。這有待以后努力,更詳盡的實(shí)現(xiàn)模塊的功能。4.2 制作過程中遇到的問題4.2.1 do-while語句的位置問題在查詢學(xué)生記錄此模塊中,只能查詢一次,若要進(jìn)行多次查詢的話就不行了,只能先到主菜單,再先查詢選項(xiàng),很是麻煩。不能實(shí)現(xiàn)原有的功能。所以要想清楚到底是哪里循環(huán)出問題,按照邏輯思路找到相應(yīng)的語句正確添加就行了。 4.2.2 system(cls)的使用問題剛開始時(shí)對(duì)菜單的切換不是很了解,編寫的程序運(yùn)行的時(shí)候

20、是一豎行向下的,很影響使用者的視覺圍,通過查詢一些資料得知了system(cls)的作用,能夠把一些暫時(shí)不用或不相關(guān)的信息通過清屏來處理。4.2.3存的分配問題對(duì)于初學(xué)者的話對(duì)存的分配和釋放問題是比較抽象的和模糊的問題,在排序是之前就出現(xiàn)了交換數(shù)據(jù)困難的問題,以與存分配空間繁瑣釋放空間不與時(shí)的問題,造成空間的浪費(fèi),使得程序運(yùn)行時(shí)效率較低,因此最后采用了順序存儲(chǔ)記錄的方式,這就能改變前面所出現(xiàn)的問題。4.4 問題分析在自己動(dòng)手寫的時(shí)候才會(huì)發(fā)現(xiàn)有太多的問題,這些都是只有自已親自去實(shí)踐才會(huì)有的收獲,例如在有些細(xì)節(jié)方面還是要特別注意啊,像分號(hào)的添加,是或還是與的的方向問題,函數(shù)的返回值等問題,雖然容易

21、改掉,但是很容易養(yǎng)成不好的習(xí)慣,而且還會(huì)浪費(fèi)時(shí)間,所以在一開始寫的時(shí)候就要很仔細(xì),這樣才能保證程序編的精細(xì),同時(shí)若出現(xiàn)很多這樣的錯(cuò)誤的話,在編寫程序的時(shí)候也會(huì)心里煩的,所以在編程的時(shí)候要認(rèn)真仔細(xì)。就你在剛開始時(shí)對(duì)文件的操作不是很明白,一直不能很好的操作文件,直到快驗(yàn)收的時(shí)候,仍舊出現(xiàn)問題,就是對(duì)已經(jīng)存在的文件讀取問題,將數(shù)據(jù)從文件中讀取,但是不能夠正常的讀出,最后把讀文件的操作語句進(jìn)行仔細(xì)檢查后,發(fā)現(xiàn)語句的順序有點(diǎn)問題,重新把fscanf()語句進(jìn)行再修改后就發(fā)現(xiàn)能夠正常的讀取文件了。其余的就沒什么比較大的問題了,基本上只要細(xì)心一點(diǎn)的話就可以正確調(diào)試成功了。5 系統(tǒng)特色與關(guān)鍵技術(shù)其實(shí)在本程序的

22、設(shè)計(jì)過程當(dāng)中,沒有很吸引人的關(guān)鍵技術(shù),因?yàn)槲业腃語言學(xué)的很好,所以當(dāng)初設(shè)計(jì)的時(shí)候就只是想把功能都實(shí)現(xiàn)就好了,盡可能的把所要求的功能都編進(jìn)程序,這樣就覺得很滿足了。所以都是設(shè)計(jì)的比較簡單易懂的語言,這樣自己能夠更明白一些,所以就沒有時(shí)間去細(xì)細(xì)地去設(shè)計(jì)自己的程序。本程序要說有什么值得說的,那就只有人性化這點(diǎn)了,在設(shè)計(jì)成學(xué)的時(shí)候,因?yàn)樽约号屡炝?,所以添加了很詳盡的提示,這樣在編程的過程中或調(diào)試的時(shí)候都能夠比較快的運(yùn)行。還有就是盡可能的應(yīng)用了do-while語句和switch-case語句,這兩個(gè)語句在之前不是很常用,所以在這個(gè)程序中試煉了一下,雖然在編寫的過程中總是出錯(cuò),但還是成功的用好了,也是程

23、序有條理一些。我也知道這些東西別人可能比我弄得還要好,但是我在我所學(xué)的知識(shí)中成功的應(yīng)用了這些,我覺得就是好事,就是進(jìn)步。6 結(jié)論與心得體會(huì)學(xué)生成績管理系統(tǒng)終于成功的驗(yàn)收了,從這最后的測(cè)試結(jié)果來看,基本上實(shí)現(xiàn)了成績管理系統(tǒng)的幾大功能:成績信息錄入、成績信息的管理。并達(dá)到操作過程中的直觀、方便、實(shí)用、安全等要求。系統(tǒng)采用模塊化程序設(shè)計(jì)的方法,既便于系統(tǒng)功能的組合和修改。本系統(tǒng)經(jīng)過測(cè)試,證明其運(yùn)行是穩(wěn)定、可靠的。但在系統(tǒng)設(shè)計(jì)中也也遇到很多的問題,并且本系統(tǒng)的功能還需要不斷的完善和改進(jìn),在以后空閑時(shí)間里逐一進(jìn)行完善,使系統(tǒng)功能更加完善, 一周多的數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)雖然有些疲憊,但還是有很多的收獲的

24、,像數(shù)據(jù)庫的課設(shè)一樣,我又一次鞏固了所學(xué)到的知識(shí),之前的學(xué)習(xí)只是停留在理論基礎(chǔ)上,現(xiàn)在自己動(dòng)手操作試驗(yàn)后,才是真正的理解與體會(huì)。編程也學(xué)了一年多了,有很多知識(shí)都是似懂非懂,通過平時(shí)上機(jī)操作,自己也了解了一些,但讓我有了更深的理解和更好的認(rèn)識(shí),則是在這次的課設(shè)上,之前的困惑也通過這次的課設(shè)解決了一些,雖然還是不能夠全面的理解,但是有進(jìn)步就很高興。在課程設(shè)計(jì)之前,因?yàn)橛幸郧皩?shí)驗(yàn)的經(jīng)驗(yàn)與教訓(xùn),明白了寫代碼這一步是非常重要的,因?yàn)楫?dāng)你把代碼輸進(jìn)去之后,并編譯讓其運(yùn)行,發(fā)現(xiàn)通過不了,再來檢查出問題,是很費(fèi)費(fèi)力的事情,因此分析和規(guī)劃代碼是很重要的,最重要的是要把邏輯結(jié)構(gòu)寫好,這樣就不會(huì)出現(xiàn)大問題,寫代碼就

25、要先找出核心的容,用多種方法來實(shí)現(xiàn)核心部分,這樣可以盡可能的避免發(fā)現(xiàn)邏輯或編譯不支持的錯(cuò)誤。 通過本次論文設(shè)計(jì),我學(xué)會(huì)了怎樣去借鑒別人的方法和經(jīng)驗(yàn),知道了如何整合資料和處理這些資料的能力,這位以后做畢設(shè)的論文打下了基礎(chǔ),使我感覺比較好的是有一種成功的喜悅,雖然在編譯的時(shí)候會(huì)經(jīng)常因?yàn)橐恍┬〉腻e(cuò)誤而心煩意亂,但是也不失為一件好事,失敗的越多積累的經(jīng)驗(yàn)越豐富,對(duì)人的考驗(yàn)也比較多,那么在最后編譯成功時(shí)的喜悅就越濃烈,也是自己的能力有了進(jìn)一步的提高。 參考文獻(xiàn)1 譚浩強(qiáng).C程序設(shè)計(jì)M.:清華大學(xué), 20052 雁.數(shù)據(jù)結(jié)構(gòu) M.:高等教育,2004.3 黃梯云.管理信息系統(tǒng). :經(jīng)濟(jì)科學(xué), 20074

26、甘仞初.信息系統(tǒng)開發(fā). :經(jīng)濟(jì)科學(xué), 20095 嚴(yán)蔚敏. 數(shù)據(jù)結(jié)構(gòu)(C語言版) M. :清華大學(xué), 20086乃孝.算法與數(shù)據(jù)結(jié)構(gòu)(C語言描述).:高等教育,2005.運(yùn)行前需在功程里新建個(gè)ni.txt.容如下7004 sun 98.0 89.0 97.0 94.7 284.0005 li 98.0 48.0 78.0 74.7 224.0002 zhao 98.0 78.0 59.0 78.3 235.0006 zhou 89.0 97.0 86.0 90.7 272.0003 qian 78.0 98.0 89.0 88.3 265.0001 chen 59.0 60.0 98.0 68

27、.3 205.0007 wu 57.0 76.0 87.0 73.3 220.0代碼# include /使程序包含頭文件 # include /使程序包含頭文件 # include /使程序包含頭文件 # define SIZE 50 /定義常量SIZE來控制數(shù)組的長度 void input_num(struct Student stud, int n, int i); /聲明學(xué)號(hào)輸入函數(shù) void input_name(struct Student stud, int n, int i); /聲明輸入函數(shù) void input_score(struct Student stud, int

28、n, int i); /聲明成績輸入函數(shù) void output_stu(struct Student stud, int n, int i); /聲明輸出函數(shù) void stat_stu(struct Student stud, int n, int o); /聲明統(tǒng)計(jì)函數(shù) float class_avr(struct Student stud, int n, int o); /聲明排序函數(shù) void chenji_stu(struct Student stud, int n, int o);void desc_stu(struct Student stud, int n, int o);

29、/聲明降序函數(shù) int find_stu(struct Student stud, int n); /聲明查找函數(shù) void delete_stu(struct Student stud, int n, int y); /聲明刪除函數(shù) void amend_stu(struct Student stud, int n, int y); /聲明修改函數(shù) void write_text(struct Student stud, int n); /聲明保存文件函數(shù) int add_text(struct Student stud, int n); /聲明讀取文件函數(shù) struct Student /

30、*聲明結(jié)構(gòu)體*/ char num10; char name20; float score5; ; void main() /*主函數(shù),是程序的入口*/ struct Student stuSIZE; /定義一個(gè)結(jié)構(gòu)數(shù)組 int count = 0; /定義整型變量count用來存放學(xué)生信息的個(gè)數(shù),初始化為0 int choice; /定義choice用于存放用戶對(duì)主菜單的選擇 int a; /用于接收主選單中scanf()函數(shù)的返回值 char judge; /用于幫助判斷輸入的選擇是否正確 int flag_main; /用于判斷主菜單用戶輸入的選擇是否有誤 int stat_choice

31、 = 0; /定義stat_choice用于用戶對(duì)統(tǒng)計(jì)項(xiàng)目的選擇,初始化為0 int flag_stat; /用于接收scanf()函數(shù)的返回值 int flag_find; /定義flag_find用于接收查尋函數(shù)的返回值 char man_choice; /定義man_choice用于接收用戶對(duì)是否進(jìn)行修改刪除的選擇 int con_choice; /定義con_choice用于接收用戶對(duì)修改或刪除的選擇 char sign_main; /定義sign_main接收用戶對(duì)是否離開程序的選擇 char sign_input; /定義sign_main接收用戶對(duì)是否繼續(xù)輸入的選擇 int i;

32、 /定義i,j作為控制循環(huán)的變量 while (1) /形成一個(gè)死循環(huán) system(color 71); /設(shè)置輸出顯示顏色 /*輸出主選菜單*/ printf(n=歡迎使用班級(jí)成績管理系統(tǒng)=nn);printf(=請(qǐng)選擇您要使用的功能=nn); printf(tt-n); printf(tttt 1:班級(jí)成績錄入 nn); printf(tttt 2:班級(jí)成績顯示 nn); printf(tttt 3:班級(jí)成績統(tǒng)計(jì) nn); printf(tttt 4:班級(jí)成績查詢 nn); printf(tttt 5:班級(jí)成績修改 nn); printf(tttt 6:班級(jí)成績表 nn); printf

33、(tttt 7:班級(jí)成績存檔 nn); printf(tttt 8:班級(jí)成績讀入 nn); printf(tttt 0:退出 nn); printf(tt-); printf(=); /*輸入對(duì)菜單的選擇*/ do flag_main = 0; printf(nttt 請(qǐng)您選擇需要的操作(0-6):); fflush(stdin); a = scanf(%d%c, &choice, &judge); if (a2 | judge != n) printf(nttt 您的選擇有誤,請(qǐng)重新輸入!n); flag_main-; while (flag_main 0); printf(nttt );

34、system(pause); /令屏幕暫停待輸入任意鍵后恢復(fù)運(yùn)行 system(cls); /清屏 system(color 71); /設(shè)置輸出顯示顏色 switch (choice) /把用戶對(duì)主菜單的選擇作為switch結(jié)構(gòu)的判斷條件 case (1): printf(ntt請(qǐng)錄入學(xué)生信息:n); i=0; /循環(huán)前對(duì)i清零 do if (count+i = 50) break; input_num(stu, count, i); /輸入學(xué)號(hào) input_name(stu, count, i); /輸入 input_score(stu, count, i); /錄入成績與總成績平均成績

35、i+; /每錄入一個(gè)學(xué)員信息i加1 printf(ntt還需要繼續(xù)錄入嗎?(Y/N); /*產(chǎn)生是否繼續(xù)錄入的條件*/ fflush(stdin); sign_input = getchar(); while(sign_input = y | sign_input= Y ); /判斷 count=count+i; /計(jì)算出本次錄入后總的已錄入成員個(gè)數(shù) printf(tt); break; case (2): /* printf(n顯示班級(jí)成績信息:n); printf(-);printf(學(xué)號(hào)tttt數(shù)據(jù)庫t算法tC語言t總成績t平均成績); /*格式化輸出提示信息*/printf( 學(xué)生信息

36、表n);*/printf( =nn);printf(n);printf(學(xué)號(hào) 數(shù)據(jù)庫 算法 C語言總成績 平均成績 n);printf(n);for (i = 0; i 0) /*返回值大于0,用戶選擇的是查找方式*/ printf(n 學(xué)號(hào)tttt數(shù)據(jù)庫t算法tC語言t總成績t平均成績n); output_stu(stu, count, flag_find-1); printf(n-); else if (flag_find = 0) /*查找失敗返回失敗信息*/ printf(n對(duì)不起沒有找到您的成績!n); else /*返回值大于0,用戶選擇的是學(xué)號(hào)查找方式*/ printf(n 學(xué)號(hào)

37、tttt數(shù)據(jù)庫t算法tC語言t總成績t平均成績n); output_stu(stu, count, -flag_find-1); printf(n-); break;case (5): flag_find = find_stu(stu, count); /實(shí)現(xiàn)用戶的查找功能 /*根據(jù)查找函數(shù)的返回值為用戶顯示查找的信息*/ if (flag_find 0) /*返回值大于0,用戶選擇的是查找方式*/ printf(n 學(xué)號(hào)tttt數(shù)據(jù)庫t算法tC語言t總成績t平均成績n); output_stu(stu, count, flag_find-1); printf(n-); else if (fl

38、ag_find = 0) /*查找失敗返回失敗信息*/ printf(n對(duì)不起沒有找到您的成績!n); else /*返回值大于0,用戶選擇的是學(xué)號(hào)查找方式*/ printf(n 學(xué)號(hào)tttt數(shù)據(jù)庫t算法tC語言t總成績t平均成績n); output_stu(stu, count, -flag_find-1); printf(n-); if (flag_find != 0) /*查找成功的情況下用戶可選擇修改或刪除操作*/ fflush(stdin); man_choice = getchar(); /*接收用戶選擇是否進(jìn)行下一步操作*/ while (man_choice) /*判斷用戶的選擇*/ printf(tt1:修改n);printf(tt2:刪除n);printf(tt3:退出n);printf(n請(qǐng)選擇您的操作);fflush(stdin); scanf(%d,&con_choice); /*用于接收用戶選擇的操作*/ /*根據(jù)用戶的選擇完成用戶選擇的操作*/ if (con_choice = 1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論