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

下載本文檔

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

文檔簡介

1、課 程 設(shè) 計(jì) 報(bào) 告課程名稱 數(shù)據(jù)結(jié)構(gòu) 課題名稱 _學(xué)生成績管理系統(tǒng) 專 業(yè) 計(jì)嵌 班 級 學(xué) 號(hào) 姓 名 指導(dǎo)教師 2013年 12 月 25 日 前 言 設(shè)計(jì)課題三十:學(xué)生成績管理系統(tǒng)一、問題描述:現(xiàn)有學(xué)生成績信息文件1(1.txt),內(nèi)容如下姓名 學(xué)號(hào) 語文 數(shù)學(xué) 英語 張明明 01 67 78 82李成友 02 78 91 88張輝燦 03 68 82 56王露 04 56 45 77陳東明 05 67 38 47. . . . 學(xué)生成績信息文件2(2.txt),內(nèi)容如下:姓名 學(xué)號(hào) 語文 數(shù)學(xué) 英語 陳果 31 57 68 82李華明 32 88 90 68張明東 33 48 42

2、 56李明國 34 50 45 87陳道亮 35 47 58 77. 試編寫一管理系統(tǒng),要求如下:1) 實(shí)現(xiàn)對兩個(gè)文件數(shù)據(jù)進(jìn)行合并,生成新文件3.txt2) 抽取出三科成績中有補(bǔ)考的學(xué)生并保存在一個(gè)新文件4.txt3) 對合并后的文件3.txt中的數(shù)據(jù)按總分降序排序(至少采用兩種排序方法實(shí)現(xiàn))4) 輸入一個(gè)學(xué)生姓名后,能查找到此學(xué)生的信息并輸出結(jié)果(至少采用兩種查找方法實(shí)現(xiàn))5) 要求使用結(jié)構(gòu)體,鏈或數(shù)組等實(shí)現(xiàn)上述要求.二、功能要求:1、實(shí)現(xiàn)對兩個(gè)文件數(shù)據(jù)進(jìn)行合并,生成新文件3.txt。2、本系統(tǒng)顯示這樣的菜單:請選擇系統(tǒng)功能項(xiàng):0.退出1 .顯示學(xué)生信息2.顯示按學(xué)號(hào)排序后的學(xué)生信息3.顯示

3、按總分排序后的學(xué)生信息4.按學(xué)號(hào)查學(xué)生各科分?jǐn)?shù)和總分5.按姓名查學(xué)生各科分?jǐn)?shù)和總分6.抽取出三科成績中有補(bǔ)考的學(xué)生并保存三、算法提示:1、 數(shù)據(jù)結(jié)構(gòu):結(jié)構(gòu)體類型數(shù)組2、 數(shù)據(jù)庫結(jié)構(gòu):下表構(gòu)成該系統(tǒng)的基本數(shù)據(jù)庫。姓名學(xué)號(hào)語文數(shù)學(xué)英語Charint intintint四、測試數(shù)據(jù):學(xué)生人數(shù)N=10 五、其它:對該系統(tǒng)有興趣的同學(xué)可以在實(shí)現(xiàn)上述基本功能后,完善系統(tǒng)的其它功能。目錄第一章 緒論第一節(jié) 課程背景第二節(jié) 本文所做工作第二章 需求分析第三章 總體設(shè)計(jì)第四章 詳細(xì)設(shè)計(jì)第五章 測試第六章 使用說明第七章 總結(jié)附錄A 源代碼附錄B 參考資料第一章緒論學(xué)生成績管理系統(tǒng)是一個(gè)教育單位不可缺少的部分,它

4、的內(nèi)容對于學(xué)校的決策者和管理者來說都至關(guān)重要,所以學(xué)生成績管理系統(tǒng)應(yīng)該能夠?yàn)橛脩籼峁┏渥愕男畔⒑涂旖莸牟樵兪侄?學(xué)生檔案管理系統(tǒng)是典型的信息管理系統(tǒng)(MIS),經(jīng)過分析如此情況,我們用code#blocks開發(fā)工具,利用其提供的各種面向?qū)ο蟮拈_發(fā)工具和功能強(qiáng)大的SQL(結(jié)構(gòu)化查詢語言)。 第一節(jié) 課程背景在我國,各大中小學(xué)校的各類信息管理系統(tǒng)并非一個(gè)新的課題,但也有的學(xué)校根本就沒有信息任何管理系統(tǒng),所有的工作幾乎還是手工操作來完成。計(jì)算機(jī)技術(shù)在日新月異的發(fā)展,但是有的很多學(xué)校,特別是在西部貧困地區(qū),學(xué)校的種類管理都依然由手工操作來完成,這十分落后,效率極低,成本很大,而且極異出錯(cuò)。隨著社會(huì)的發(fā)

5、展,信息化是社會(huì)進(jìn)程的必然趨勢,學(xué)校管理只有只有快,準(zhǔn),精才能發(fā)揮其價(jià)值。所以機(jī)器代替人力是必然的歷史發(fā)展趨勢,只有領(lǐng)導(dǎo)的重視和支持才能從人工操作改為計(jì)算機(jī)的自動(dòng)化系統(tǒng)。人工操作必將被計(jì)算機(jī)代替。有些學(xué)校雖使用了計(jì)算機(jī),甚至管理系統(tǒng),但是仍然存在很多問題,問題一日不解決,效率就一日提不上去。第二節(jié) 本文所做工作本系統(tǒng)是將現(xiàn)代化的計(jì)算機(jī)技術(shù)和傳統(tǒng)的教學(xué)、教務(wù)工作相結(jié)合,按照學(xué)院的工作流程設(shè)計(jì)完成的。為了使系統(tǒng)在學(xué)院的管理中發(fā)揮更大的作用,實(shí)現(xiàn)工作過程的計(jì)算機(jī)化,提高工作效率和工作質(zhì)量,現(xiàn)提出如下的系統(tǒng)開發(fā)目標(biāo):(1)系統(tǒng)管理員進(jìn)入學(xué)生成績管理系統(tǒng)學(xué)生檔案管理的主要功能是:實(shí)現(xiàn)添加學(xué)生的基本信息、

6、修改學(xué)生的基本信息、查詢學(xué)生的基本信息、刪除學(xué)生的基本信息等基本功能。(2)系統(tǒng)管理員進(jìn)入學(xué)生成績管理系統(tǒng)學(xué)生成績管理的主要功能是:實(shí)現(xiàn)學(xué)生成績的錄入、學(xué)生成績的修改與保存等基本功能。(3)系統(tǒng)管理員進(jìn)行學(xué)生成績管理系統(tǒng)查詢與統(tǒng)計(jì)的主要功能是:實(shí)現(xiàn)根據(jù)某個(gè)學(xué)生的基本信息查詢他的成績,還可以根據(jù)學(xué)生成績的高低進(jìn)行排序等基本功能。1.1 編寫目的 本需求的編寫目的在于研究學(xué)生成績管理系統(tǒng)軟件的開發(fā)途徑和應(yīng)用方法 1.2 背景及范圍 本項(xiàng)目的名稱: 學(xué)生成績管理系統(tǒng) 本軟件基本上能具體化合理化的管理學(xué)生的學(xué)籍檔案,用結(jié)構(gòu)化的思維方式去了解計(jì)算機(jī)的基本工作原理和高級程序設(shè)計(jì)語言1.3 功能 主要功能:

7、學(xué)生成績錄入學(xué)生信息和成績修改查詢成績第二章 系統(tǒng)需求分析 可以使用戶錄入學(xué)生信息,并在系統(tǒng)中顯示出來,還能對錄入的信息進(jìn)行保存,當(dāng)需要時(shí)還可以對信息進(jìn)行修改和刪除,還能分別用學(xué)號(hào)、姓名、性別、年齡對學(xué)生信息進(jìn)行查詢,用戶進(jìn)入系統(tǒng)需要輸入密碼。第三章 總體設(shè)計(jì)struct student:一個(gè)結(jié)構(gòu)體類型,他能存放姓名、學(xué)號(hào)、語文、數(shù)學(xué)、英語等成績等不同類型數(shù)據(jù)組成的組合型的數(shù)據(jù)結(jié)構(gòu)。void main():主函數(shù)。FILE * fp:定義一個(gè)指向文件的指針變量fp.fp=fopen("學(xué)生成績","w +"):將fopen函數(shù)的返回值賦給指針變量fp,或

8、者說,fp指向了學(xué)生信息這個(gè)文件。如果文件不存在,則建立一個(gè)新的文本文件。Fscanf,fprintf:用格式化的方式讀寫文件。Strcmp:字符串比較函數(shù)。Strcpy:字符串復(fù)制函數(shù)。程序中還用到當(dāng)型循環(huán)、swith分支語句、if語句等。system("cls");:清屏函數(shù),使界面更簡潔。第四章 系統(tǒng)調(diào)試系統(tǒng)主界面顯示學(xué)生信息顯示按學(xué)號(hào)排序后的學(xué)生信息(按升序)顯示按總分排序后的學(xué)生信息按學(xué)號(hào)查學(xué)生各科分?jǐn)?shù)和總分按姓名查學(xué)生各科分?jǐn)?shù)和總分抽取出三科成績中有補(bǔ)考的學(xué)生并保存第五章 使用說明利用結(jié)構(gòu)體函數(shù)類型,使函數(shù)顯得沒那么繁瑣,利用文件指針,輸入的信息將保存在文件中,

9、以便下次查詢和修改,使用“w+”方式讀寫文件,當(dāng)指定那個(gè)文件不存在時(shí),將建立一個(gè)文件,不會(huì)出現(xiàn)出錯(cuò)信息。利用fscanf和fprintf實(shí)現(xiàn)對文件的讀寫。不足之處:錄入的信息沒能保存,每次便已運(yùn)行需要重新輸入數(shù)據(jù),對所學(xué)的東西沒有合理結(jié)合。第七章 總結(jié)當(dāng)剛開始聽到要課程設(shè)計(jì)時(shí),心里有點(diǎn)怕怕的,因?yàn)楫吘箘偨佑|c語言,雖說也學(xué)到了一些皮毛,但當(dāng)聽到要自己去編寫程序時(shí),才發(fā)現(xiàn)自己不會(huì)的不懂的還多著呢,要編寫一個(gè)程序還是有一些困難的,當(dāng)真的讓我去編寫程序時(shí),真的是有點(diǎn)怕怕的感覺。剛?cè)雽W(xué)時(shí),聽到要學(xué)習(xí)c語言時(shí),我是非常的感興趣,也非常高興,因?yàn)槟怯螒?、軟件都要用c語言來實(shí)現(xiàn),我想探究一下那到底是怎么實(shí)現(xiàn)

10、的,能達(dá)到那樣的效果,所以剛開始我很有激情,每節(jié)課我都認(rèn)真聽講,雖然剛開始聽起來有點(diǎn)困難,但是我相信功夫不負(fù)有心人,我知道課堂上的知識(shí)是不夠的,所以我利用課下時(shí)間,積極搜尋與之相關(guān)的信息,去圖書館借閱相關(guān)資料和習(xí)題,來增長自己的知識(shí)。當(dāng)程序?qū)懲炅耍医K于可以松口氣了,經(jīng)過一個(gè)思考,查資料,寫源程序,上機(jī)調(diào)試.現(xiàn)在終于告一段落了.看到自己的勞動(dòng)成果,心中不免有些驚喜,沒想到自己還能獨(dú)立完成初次的課程設(shè)計(jì),雖然不敢說這個(gè)程序都是我一個(gè)人寫的,但其中大部分都是我的成果,另外我還參考了別人的意見,對自己的程序進(jìn)行修改和完善。 這種課程設(shè)計(jì)對我們是非常有好處的,對C這門程序語言的掌握卻有非常大的作用.從

11、開始對題目的分析,就注定擺在我這樣一個(gè)對C了解不多的新手面前的是一段艱難的旅程.但最終很慶幸的是我居然能夠堅(jiān)持下來,而且完成了設(shè)計(jì)工作. C語言是很難學(xué)的,這也許是因人而異,但對我來說確實(shí)是一個(gè)障礙。如今要自己完成一個(gè)課程設(shè)計(jì),無疑是對自己的一個(gè)挑戰(zhàn).先是上網(wǎng)查找有關(guān)的資料,分析題目所需的數(shù)據(jù),要用到哪些函數(shù)等等,星期二上網(wǎng)初步調(diào)試,將函數(shù)用些結(jié)構(gòu)和語句連接起來,做這個(gè)工作時(shí),又將書本翻閱了一遍,重新獲得許多東西。如帶參函數(shù)的特點(diǎn),以及一些語句的運(yùn)用及特點(diǎn)等等。將工作分配到每塊是我完成這個(gè)設(shè)計(jì)的主要方法,然而將每塊都完成看起來比較輕松,但實(shí)際操作起來卻是比較麻煩的.由于平時(shí)對C知識(shí)的積累較為匱

12、乏,(這可能是最主要的原因了),所以操作起來真是寸步難行,沒辦法,只有拿出課本找到相應(yīng)的知識(shí)點(diǎn),臨陣磨槍.費(fèi)了一番功夫,再上機(jī)調(diào)試時(shí)就是最痛苦的時(shí)候了,錯(cuò)誤一大堆,要一個(gè)一個(gè)的修改。經(jīng)過幾翻調(diào)試修改之后終于可以執(zhí)行了,那時(shí)還興奮了好長時(shí)間呢!然而執(zhí)行出來的結(jié)果是不令人滿意的,界面不美觀不說,最重要的是輸入太煩瑣,而且受到的限制太多,如只能以某種方式輸入,且個(gè)數(shù)受限制。于是又發(fā)費(fèi)了大量時(shí)間去修改,終于比較滿意了,但也到了星期五了,也就是答辯的時(shí)間。答辯的時(shí)候我才發(fā)現(xiàn)還有好多知識(shí)是我不會(huì)的,老師問了我一些問題,我回答出來的卻不多,我體會(huì)到我還要很努力的學(xué)習(xí),在C的學(xué)習(xí)上我還有很長的一段路要走。今天

13、不管怎樣把這個(gè)設(shè)計(jì)作出來是件很高興的事情,不過能夠把這個(gè)設(shè)計(jì)順利完成要?dú)w功于我的指導(dǎo)老師,幫了我很多忙,也讓我發(fā)現(xiàn)了我有好多欠缺的地方,真的很感謝你們,謝謝!不管怎么說,我還是完成了這個(gè)設(shè)計(jì).雖說累了點(diǎn),但我想這對我們進(jìn)一步掌握C,并為下學(xué)期的二級考試是有很大的幫助的.能夠編出程序,其實(shí)本身就是對自己的一種肯定,是對自己前面一段時(shí)間學(xué)習(xí)綜合水平的一個(gè)檢閱.當(dāng)然完成后的興喜,只有經(jīng)歷過了才能體會(huì)到,而我體會(huì)到了.C語言課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新日異,當(dāng)今計(jì)算機(jī)應(yīng)用在生

14、活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)來說掌握計(jì)算機(jī)開發(fā)技術(shù)是十分重要的。從拿到題目到完成整個(gè)編程,從理論到實(shí)踐,在整整一個(gè)星期的日子里,可以學(xué)到很多很多的的東西,同時(shí)不僅可以鞏固了以前所學(xué)過的知識(shí),而且學(xué)到了很多在書本上所沒有學(xué)到過的知識(shí)。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會(huì)遇到過各種各樣的問題,同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識(shí)

15、理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體通過這次課程設(shè)計(jì)之后,一定把以前所學(xué)過的知識(shí)重新溫故。這次課程設(shè)計(jì)我最要感謝的就是我們的幾位指導(dǎo)老師,老師們每天都不辭勞苦為我們服務(wù),不管我們有什么問題,他們都耐心的為我們解答,我們有什么錯(cuò)誤他們都積極給我們指正出來,雖然有時(shí)也批評一下,但這對我們是有很大幫助的,有這么多優(yōu)秀的指導(dǎo)老師,我想我以后的學(xué)習(xí)會(huì)更上一層樓。附錄A 源代碼# include <stdio.h># include <stdlib.h># include <string.h># include <stdbool.h># includ

16、e <math.h># include <conio.h># define eps 1;typedef struct char name50; int num; int Chinese; int Math; int English; int sum;Node;Node student1000;int n;char text50;int cmp(const void *a, const void *b) return (*(Node *)b).sum > (*(Node *)a).sum?1:-1;int cmpnum(const void *a, const vo

17、id *b) return (*(Node *)a).num > (*(Node *)b).num?1:-1;void showstudent() int i;printf(" t姓名t學(xué)號(hào)t語文t數(shù)學(xué)t英語t總分n");for(i=0;i<n;i+)printf("t%st%dt%dt%dt%dt%dn",,studenti.num,studenti.Chinese,studenti.Math,studenti.English,studenti.sum); getch(); menu();void sortnum(

18、) int i,j,k;char a55;for(i=0;i<n;i+)for(j=0;j<n-i-1;j+)if(studentj.num>studentj+1.num)k=studentj.num;studentj.num=studentj+1.num;studentj+1.num=k;k=studentj.Chinese;studentj.Chinese=studentj+1.Chinese;studentj+1.Chinese=k;k=studentj.Math;studentj.Math=studentj+1.Math;studentj+1.Math=k;k=stu

19、dentj.English;studentj.English=studentj+1.English;studentj+1.English=k;k=studentj.sum;studentj.sum=studentj+1.sum;studentj+1.sum=k;strcpy(a,);strcpy(,studentj+1.name);strcpy(studentj+1.name,a);showstudent(); getch(); menu();void sortsum() qsort(student, n, sizeof(Node), cmp

20、); showstudent(); getch(); menu();void searchnum(int number) int min = 0, max = n-1, mid; bool escape = false; qsort(student, n, sizeof(Node), cmpnum); while(min <= max) mid = (min + max) / 2; if(studentmid.num > number) max = mid - eps; else if(studentmid.num < number) min = mid + eps; els

21、e escape = true; printf("t姓名t學(xué)號(hào)t語文t數(shù)學(xué)t英語t總分n"); printf("t%st%dt%dt%dt%dt%dn", , studentmid.num, studentmid.Chinese, studentmid.Math, studentmid.English, studentmid.sum); break; if(!escape) printf("t查無此人"); getch(); menu();void searchname() int i;for(i=0;i

22、<n;i+)if(strcmp(text,)=0)printf("t姓名t學(xué)號(hào)t語文t數(shù)學(xué)t英語t總分n"); printf("t%st%dt%dt%dt%dt%dn", , studenti.num, studenti.Chinese, studenti.Math, studenti.English, studenti.sum);break;if(i>=n)printf("t查無此人n"); getch(); menu();void save() FILE *fp;fp

23、=fopen("4.txt","w");int i;fprintf(fp, "t姓名t學(xué)號(hào)t語文t數(shù)學(xué)t英語t總分n");for(i=0;i<n;i+)if(studenti.Chinese<60|studenti.Math<60|studenti.English<60) printf("t%st%dt%dt%dt%dn",,studenti.num,studenti.Chinese,studenti.Math,studenti.English);fprintf(f

24、p,"t%st%dt%dt%dt%dn",,studenti.num,studenti.Chinese,studenti.Math,studenti.English);printf("n");printf("n"); printf("保存成功n"); printf("n"); getch(); menu();void menu() int choice; system("cls"); printf(" 菜單n"); printf(

25、"n"); printf(" 0.退出 n"); printf(" 1.顯示學(xué)生信息 n"); printf(" 2.顯示按學(xué)號(hào)排序后的學(xué)生信息 n"); printf(" 3.顯示按總分排序后的學(xué)生信息 n"); printf(" 4.按學(xué)號(hào)查學(xué)生各科分?jǐn)?shù)和總分 n"); printf(" 5.按姓名查學(xué)生各科分?jǐn)?shù)和總分 n"); printf(" 6.抽取出三科成績中有補(bǔ)考的學(xué)生并保存 n"); printf("n&quo

26、t;); printf(" 選擇代碼(0,1,2,3,4,5,6): "); scanf("%d", &choice); switch(choice) case 0: system("cls"); printf("謝謝使用!n"); exit(0); case 1: system("cls"); showstudent(); case 2: system("cls"); sortnum(); case 3: system("cls"); sortsum(); case 4: system("cls"); int num; printf("t請輸入要查找學(xué)生的學(xué)號(hào):"); scanf("%d", &num); searchnum(num); case 5: system("cls"); printf("t請輸入要查找學(xué)生的姓名:"); scanf

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論