歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

大大數(shù)據(jù)結(jié)構(gòu)課程設計 學生成績管理系統(tǒng)

  • 資源ID:86584105       資源大小:185.50KB        全文頁數(shù):43頁
  • 資源格式: DOC        下載積分:10積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要10積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

大大數(shù)據(jù)結(jié)構(gòu)課程設計 學生成績管理系統(tǒng)

word任 務 書題目:學生成績管理系統(tǒng)設計內(nèi)容與要求:設計一個簡易的學生成績管理系統(tǒng),能夠完成學生成績的增加、刪除、查找、修改、統(tǒng)計等操作,數(shù)據(jù)信息保存文件保存。要求系統(tǒng)具有菜單和提示,界面友好。實現(xiàn)學生成績的管理和保存。實現(xiàn)目標:(1) 熟悉的運用c語言程序編寫代碼。(2) 能夠理清整個程序的運行過程并繪畫流程圖(3) 了解如何定義局部變量和整體變量;(4) 學會上機調(diào)試程序,發(fā)現(xiàn)問題,并解決(5) 學習使用C+程序來了解程序原理。(6) 學習用文檔書寫程序說明摘 要管理信息系統(tǒng)正在向著網(wǎng)絡化、智能化和集成化等趨勢開展。學生成績管理系統(tǒng)是為了更好的管理學生考試成績而開發(fā)的數(shù)據(jù)管理軟件。它對于一個學校是不可缺少的重要局部,它的內(nèi)容對于學校的決策者和管理者來說都至關重要。學生成績管理管理系統(tǒng)為用戶提供充足的信息和快捷的查詢手段,實現(xiàn)學生根本信息、成績的錄入,刪除,查詢,維護以與成績的統(tǒng)計分析等幾方面的功能,是現(xiàn)實問題的迫切要求。本系統(tǒng)開發(fā)的總體任務是實現(xiàn)學生成績管理的系統(tǒng)化、規(guī)X化、自動化。達到提高學生成績管理效率的目的。與傳統(tǒng)管理方法相比有明顯的優(yōu)點:查找方便,可靠性高,某某性好,本錢低。徹底改變了以前繁雜的管理模式,實現(xiàn)全面的、相對集中的、職能化的信息綜合管理。計算機被用到信息管理系統(tǒng)的環(huán)境正是適應了當今時代飛速開展的信息時代。人們深刻的認識到了計算機功能的強大,對于復雜的信息管理,計算機充分發(fā)揮著它的優(yōu)越性。檢索迅速、查找方便、可靠性高、存儲量大、某某性好、壽命長、本錢低,這些優(yōu)點極大地減輕了學院教學人員的工作量,縮小開支,提高了學生檔案管理的效率和準確性,能夠合理的安排時間,學生能夠盡快的知道自己的考試成績。同時,學生管理系統(tǒng)的應用也為今天的教育在未來市場的競爭力有所提高。 目 錄1.引 言573.具體設計過程888.函數(shù)實現(xiàn)說明104.程序運行結(jié)果135.軟件使用說明146.結(jié)論14參 考 文 獻16附錄:源代碼161.引 言數(shù)據(jù)結(jié)構(gòu)在計算機科學界至今沒有標準的定義。個人根據(jù)各自的理解的不同而有不同的表述方法:Sartaj Sahni在他的數(shù)據(jù)結(jié)構(gòu)、算法與應用一書中稱:“數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)對象,以與存在于該對象的實例和組成實 例的數(shù)據(jù)元素之間的各種聯(lián)系。這些聯(lián)系可以通過定義相關的函數(shù)來給出。他將數(shù)據(jù)對象data object定義為“一個數(shù)據(jù)對象是實例或值的集合。在數(shù)據(jù)結(jié)構(gòu)與算法分析一書中的定義是:“數(shù)據(jù)結(jié)構(gòu)是 ADT抽象數(shù)據(jù)類型Abstract Data Type 的物理實現(xiàn)。 在數(shù)據(jù)結(jié)構(gòu)與程序設計一書中,將一個數(shù)據(jù)結(jié)構(gòu)的設計過程分成抽象層、數(shù)據(jù)結(jié)構(gòu)層和實現(xiàn)層。其中,抽象層是指抽象數(shù)據(jù)類型層,它討論數(shù)據(jù)的邏輯結(jié)構(gòu)與其運算,數(shù)據(jù)結(jié)構(gòu)層和實現(xiàn)層討論一個數(shù)據(jù)結(jié)構(gòu)的表示和在計算機內(nèi)的存儲細節(jié)以與運算的實現(xiàn)。數(shù)據(jù)結(jié)構(gòu)具體指同一類數(shù)據(jù)元素中,各元素之間的相互關系,包括三個組成成分,數(shù)據(jù)的邏輯結(jié)構(gòu),數(shù)據(jù)的存儲結(jié)構(gòu)和數(shù)據(jù)運算結(jié)構(gòu)。 1.1. 重要意義一般認為,一個數(shù)據(jù)結(jié)構(gòu)是由數(shù)據(jù)元素依據(jù)某種邏輯聯(lián)系組織起來的。對數(shù)據(jù)元素間邏輯關系的描述稱為數(shù)據(jù)的邏輯結(jié)構(gòu);數(shù)據(jù)必須在計算機內(nèi)存儲,數(shù)據(jù)的存儲結(jié)構(gòu)是數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)形式,是其在計算機內(nèi)的表示;此外討論一個數(shù)據(jù)結(jié)構(gòu)必須同時討論在該類數(shù)據(jù)上執(zhí)行的運算才有意義。 在許多類型的程序的設計中,數(shù)據(jù)結(jié)構(gòu)的選擇是一個根本的設計考慮因素。許多大型系統(tǒng)的構(gòu)造經(jīng)驗明確,系統(tǒng)實現(xiàn)的困難程度和系統(tǒng)構(gòu)造的質(zhì)量都嚴重的依賴于是否選擇了最優(yōu)的數(shù)據(jù)結(jié)構(gòu)。許多時候,確定了數(shù)據(jù)結(jié)構(gòu)后,算法就容易得到了。有些時候事情也會反過來,我們根據(jù)特定算法來選擇數(shù)據(jù)結(jié)構(gòu)與之適應。不論哪種情況,選擇適宜的數(shù)據(jù)結(jié)構(gòu)都是非常重要的。 選擇了數(shù)據(jù)結(jié)構(gòu),算法也隨之確定,是數(shù)據(jù)而不是算法是系統(tǒng)構(gòu)造的關鍵因素。這種洞見導致了許多種軟件設計方法和程序設計語言的出現(xiàn),面向?qū)ο蟮某绦蛟O計語言就是其中之一。 1.2. 研究內(nèi)容在計算機科學中,數(shù)據(jù)結(jié)構(gòu)是一門研究非數(shù)值計算的程序設計問題中計算機的操作對象數(shù)據(jù)元素以與它們之間的關系和運算等的學科,而且確保經(jīng)過這些運算后所得到的新結(jié)構(gòu)仍然是原來的結(jié)構(gòu)類型。 “數(shù)據(jù)結(jié)構(gòu)作為一門獨立的課程在國外是從1968年才開始設立的。 1968年美國唐·歐·克努特教授開創(chuàng)了數(shù)據(jù)結(jié)構(gòu)的最初體系,他所著的計算機程序設計技巧第一卷根本算法是第一本較系統(tǒng)地闡述數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)與其操作的著作?!皵?shù)據(jù)結(jié)構(gòu)在計算機科學中是一門綜合性的專業(yè)根底課。數(shù)據(jù)結(jié)構(gòu)是介于數(shù)學、計算機硬件和計算機軟件三者之間的一門核心課程。數(shù)據(jù)結(jié)構(gòu)這一門課的內(nèi)容不僅是一般程序設計特別是非數(shù)值性程序設計的根底,而且是設計和實現(xiàn)編譯程序、操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)與其他系統(tǒng)程序的重要根底。 計算機是一門研究用計算機進展信息表示和處理的科學。這里面涉與到兩個問題:信息的表示,信息的處理 。 而信息的表示和組織又直接關系到處理信息的程序的效率。隨著計算機的普與,信息量的增加,信息X圍的拓寬,使許多系統(tǒng)程序和應用程序的規(guī)模很大,結(jié)構(gòu)又相當復雜。因此,為了編寫出一個“好的程序,必須分析待處理的對象的特征與各對象之間存在的關系,這就是數(shù)據(jù)結(jié)構(gòu)這門課所要研究的問題。眾所周知,計算機的程序是對信息進展加工處理。在大多數(shù)情況下,這些信息并不是沒有組織,信息數(shù)據(jù)之間往往具有重要的結(jié)構(gòu)關系,這就是數(shù)據(jù)結(jié)構(gòu)的內(nèi)容。數(shù)據(jù)的結(jié)構(gòu),直接影響算法的選擇和效率。計算機解決一個具體問題時,大致需要經(jīng)過如下幾個步驟:首先要從具體問題中抽象出一個適當?shù)臄?shù)學模型,然后設計一個解此數(shù)學模型的算法Algorithm,最后編出程序、進展測試、調(diào)整直至得到最終解答。尋求數(shù)學模型的實質(zhì)是分析問題,從中提取操作的對象,并找出這些操作對象之間含有的關系,然后用數(shù)學的語言加以描述。計算機算法與數(shù)據(jù)的結(jié)構(gòu)密切相關,算法無不依附于具體的數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)直接關系到算法的選擇和效率。運算是由計算機來完成,這就要設計相應的插入、刪除和修改的算法 。也就是說,數(shù)據(jù)結(jié)構(gòu)還需要給出每種結(jié)構(gòu)類型所定義的各種運算的算法。 數(shù)據(jù)是對客觀事物的符號表示,在計算機科學中是指所有能輸入到計算機中并由計算機程序處理的符號的總稱。 數(shù)據(jù)元素是數(shù)據(jù)的根本單位,在計算機程序中通常作為一個整體考慮。一個數(shù)據(jù)元素由假如干個數(shù)據(jù)項組成。數(shù)據(jù)項是數(shù)據(jù)的不可分割的最小單位。有兩類數(shù)據(jù)元素:一類是不可分割的原子型數(shù)據(jù)元素,如:整數(shù)"5",字符 "N" 等;另一類是由多個款項構(gòu)成的數(shù)據(jù)元素,其中每個款項被稱為一個數(shù)據(jù)項。例如描述一個學生的信息的數(shù)據(jù)元素可由如下6個數(shù)據(jù)項組成。其中的出生日期又可以由三個數(shù)據(jù)項:"年"、"月"和"日"組成,如此稱"出生日期"為組合項,而其它不可分割的數(shù)據(jù)項為原子項。關鍵字指的是能識別一個或多個數(shù)據(jù)元素的數(shù)據(jù)項。假如能起唯一識別作用,如此稱之為 "主" 關鍵字,否如此稱之為 "次" 關鍵字。數(shù)據(jù)對象是性質(zhì)一樣的數(shù)據(jù)元素的集合,是數(shù)據(jù)的一個子集。數(shù)據(jù)對象可以是有限的,也可以是無限的。數(shù)據(jù)處理是指對數(shù)據(jù)進展查找、插入、刪除、合并、排序、統(tǒng)計以與簡單計算等的操作過程。在早期,計算機主要用于科學和工程計算,進入八十年代以后,計算機主要用于數(shù)據(jù)處理。據(jù)有關統(tǒng)計資料明確,現(xiàn)在計算機用于數(shù)據(jù)處理的時間比例達到80%以上,隨著時間的推移和計算機應用的進一步普與,計算機用于數(shù)據(jù)處理的時間比例必將進一步增大。2. 課題分析學生成績管理系統(tǒng)主要提供成績查詢,方便管理的網(wǎng)上的信息查閱平臺,學生可以通過該系統(tǒng) 查閱與自己相關信息,查看留言、提交留言。教師可以通過成績管理系統(tǒng)查閱學生成績信息,教師信 息,查看教師留言、學生留言、提交留言、留言的管理等相關操作。系統(tǒng)管理員可以實現(xiàn)以上的所有 功能,還有對學生的添加、刪除、修改、教師的添加、刪除、修改,數(shù)據(jù)庫的備份、數(shù)據(jù)庫的復原等 相關操作。 根據(jù)開發(fā)要求,學生成績管理系統(tǒng)主要應用于教育系統(tǒng),完成對日常的教學、教務、教師以與學 生的計算機化的管理。開發(fā)學生成績管理系統(tǒng)可使學院教職員工減輕工作壓力,比擬系統(tǒng)地對教務、 教學上的各項服務和信息進展管理,同時,可以減少勞動力的使用,加快查詢速度、加強管理,以與 國家各部門關于信息化的步伐,使各項管理更加規(guī)X化。目前,學校工作繁雜、資料重多。目前,管 理信息系統(tǒng)已進入高校,但還未普與,而對于學生成績管理來說,目前還沒有一套完整的、統(tǒng)一的系統(tǒng)。因此,開發(fā)一套適和大眾的、兼容性好的系統(tǒng)是很有必要的。3. 具體設計過程 要完成學生成績信息的增刪改查與統(tǒng)計,首先設計一下內(nèi)存中存放數(shù)據(jù)信息的格式。在本設計中采用動態(tài)內(nèi)存空間分配的鏈表方法,該方法為一個結(jié)構(gòu)分配內(nèi)存空間。每一次分配一塊空間可用來存放一個學生成績的數(shù)據(jù),可稱之為一個結(jié)點。有多少個學生就應該有多少結(jié)點。總控模塊管理有三種不同的信息的處理模塊,即管理員模塊、教師模塊、學生模塊,各模塊的主要功能有:1系統(tǒng)管理員進入學生成績管理的主要功能:實現(xiàn)管理員用戶的添加、修改和刪除,以與對教師添加、教師修改、教師刪除、教師查詢、學生添加、學生修改、學生刪除、學生查詢等根本功能,并且參與開設課程、選擇課程的管理,安排教師的任課和學生的選課工作。2教師進入學生成績管理系統(tǒng)的主要功能:各科教師登錄系統(tǒng)后查詢和修改個人信息,修改自己的賬號密碼,查詢自己的授課課程,實現(xiàn)對選修了自己課程的學生的成績進展查詢、錄入和修改,各科教師可以對自己學生選修課程完畢后給予分數(shù),同時可以對自己所帶課程的成績優(yōu)秀人數(shù)、與格人數(shù)、不與格人數(shù)的分布信息進展查詢。3學生進入學生成績管理系統(tǒng)的主要功能:每個學生登錄后可以查詢和修改個人信息、修改自己的賬號密碼,以與自己所選任課教師的個人信息,同時在課程完畢后可以查詢在校期間各個時間段選修課程的成績與學分,以與對單科成績和總分的排名查詢。 學生成績系統(tǒng)中學生的成績信息按照學號的順序進展存放。根據(jù)任務要求,下面將系統(tǒng)功能進展詳細設計劃分,功能結(jié)構(gòu)圖1如下: 圖1.函數(shù)實現(xiàn)說明 在本實驗中,使用鏈表存放學生成績數(shù)據(jù),設計一個功能類record來完成系統(tǒng)的各項功能。具體設計如下:class recordpublic: struct SCORE * InsertRecord(struct SCORE * h); /增加學生成績信息struct SCORE * DeleteRecord(struct SCORE * h); /刪除學生成績信息struct SCORE * UpdateRecord(struct SCORE * h); /修改學生成績信息 void FindRecord(struct SCORE * h,int x,float s1,float s2); /根據(jù)某門課程的分數(shù)段查詢學生成績信息void FindRecord(struct SCORE * h,string x); /根據(jù)學生某某查詢成績信息void FindRecord(struct SCORE * h,int x); /根據(jù)學生學號查詢成績信息void StatisticRecord(struct SCORE * h,int x); /統(tǒng)計某門課程的與格學生人數(shù)、與格率,并顯示不與格學生信息void StacRecordFine(struct SCORE * h); /統(tǒng)計三門課程成績?nèi)珵閮?yōu)秀的學生人數(shù),并顯示全為優(yōu)秀的學生信息 void StacRecordDisq(struct SCORE * h); /統(tǒng)計三門課程成績?nèi)坎慌c格的學生人數(shù),并顯示全部不與格的學生信息void PrintRecord(struct SCORE * h); /輸出所有學生成績信息void SaveRecordFile(struct SCORE * h); /保存學生成績信息到文件struct SCORE * LoadRecordFile(struct SCORE * h); /從文件中加載學生成績信息;4.程序運行結(jié)果圖1為初始界面,當我們選擇運行程序時,便會出現(xiàn)如如下圖的界面。根據(jù)上面文字的內(nèi)容,我們可以了解系統(tǒng)的功能。并開始根據(jù)提示操作。如如下圖所示:圖2為具體添加學生信息的操作:圖3為修改學生成績信息:圖4為刪除學生成績信息:學生成績管理系統(tǒng)包括九個模塊:輸入學生資料,輸出學生資料,學生某某按順 序排列,添加學生資料,按某某查找,刪除該學生資料,查找并顯示學生資料,按某某 查找,修改該學生資料,從文件中讀入數(shù)據(jù),儲存學生資料并退出系統(tǒng)。這九個模塊既 相互聯(lián)系又相互獨立。 本系統(tǒng)根據(jù)學生成績管理的需要,而建立一個學生成績管理系統(tǒng),以方便對成績的 各項管理操作。本系統(tǒng)能對成績進展輸入和輸出;能按某某對學生進展排序,并顯示學生資料、成績等,不過得以系統(tǒng)輸入學生資料、成績?yōu)榍疤?;能添加學生成績資料;能根據(jù)學生的某某來查詢該學生的成績資料,并修改或是刪除該學生信息;能夠從文件中讀取學生信息,并且添加到系統(tǒng)中;能把對系統(tǒng)所進展的操作進展保存,以與時更新系統(tǒng)中的數(shù)據(jù)。6.結(jié)論課程設計是培養(yǎng)學生綜合運用所學知識 ,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對我們的實際工作能力的具體訓練和考察過程.隨著科學技術(shù)開展的日新月異,當今計算機應用在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握程序開發(fā)技術(shù)是十分重要的,而C語言又是最常見,功能最強大的一種高級語言,因此做好C語言課程設計是十分必要的?;仡櫰鸫舜握n程設計,至今我們?nèi)愿锌H多,確實,自從拿到題目到完成整個編程,從理論到實踐,在整整半個月的日子里,可以學到很多很多的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我們懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發(fā)現(xiàn)了自己的不足之處,對一些前面學過的知識理解得不夠深刻,掌握得不夠結(jié)實,比如說結(jié)構(gòu)體,指針,鏈表通過這次課程設計之后,我們把前面所學過的知識又重新溫故了一遍。我做的是黑白棋的課程設計,雖然是很簡單的一個小的程序,但對我一個初學者來說卻是一個很大的困難。更加是第一次做課程設計,所以第一天下午在機房做了一個下午卻絲毫沒有進展,最主要是不知從何開始,這個時候才知道上課教師們不厭其煩的教誨是多么的寶貴,這個時候才后悔上課的時候沒有認真的聽講??墒乾F(xiàn)在一切都晚了,還好時間還算是充裕,只好拿出書本重新復習一下。特別是結(jié)構(gòu)體,繪制棋盤的局部,幾乎是一片空白,不知從何著手。不過經(jīng)過幾天的努力,大體上把課本上的知識點看了一遍,知識點也都根本是撐握了,所以一下一步就是開始正式的編程序了。不過畢竟是個新手,還是不知如何下手,于是就在網(wǎng)上下了一篇類似的程序,經(jīng)過仔細的研究,終于讀懂了C語言編程的根本過程和方法。經(jīng)過一波三折,終于開始正式編程。編程是一件很枯燥很無聊的事情,但是出于完成作業(yè),得到學分的壓力,還必須強破自己堅持下去,按照教師所說的模塊化思想,分局部的進展編寫。而且編程是一件高精度、模X化的事情,稍有疏乎都會影響全局,也可能因為某一處的小的錯誤而導致整個程序的無法運行。所以認真仔細就是非常重要的了。開始的時候真的感覺編程是一件很無聊的事情,不過當一個程序運行成功的時候那種喜悅是無法言語的,那種成就感是無法比擬的。又經(jīng)過幾天的努力,終于把程序完成了,盡管程序還是有很多錯誤和漏洞,不過還是很高興的。無論如何是自己的勞動成果,是自己經(jīng)過努力得到的成績,同時也是學習C語言的一次實踐作業(yè),自己進步的證明。通過這次課程設計,使我對C語言有了更進一步的認識和了解,要想學好它要重在實踐,要通過不斷的上機操作才能更好地學習它,我也發(fā)現(xiàn)我的好多不足之處,首先是自己在指法上還不行,經(jīng)常按錯字母,通過學習也有所改良;再有對C語言的一些標準庫函數(shù)不太了解,還有對函數(shù)調(diào)用的正確使用不夠熟悉,還有對C語言中經(jīng)常出現(xiàn)的錯誤也不了解,通過實踐的學習,我認識到學好計算機要重視實踐操作,不僅僅是學習C語言,還是其它的語言,以與其它的計算機方面的知識都要重在實踐,所以后在學習過程中,我會更加注視實踐操作,使自己便好地學好計算機。 在課程設計過程中,收獲知識,提高能力的同時,我也學到了很多人生的哲理,懂得怎么樣去制定計劃,怎么樣去實現(xiàn)這個計劃,并掌握了在執(zhí)行過程中怎么樣去克制心理上的不良情緒。因此在以后的生活和學習的過程中,我一定會把課程設計的精神帶到生活中,不畏困難,勇往直前!參 考 文 獻附錄:源代碼# include <iostream># include <string># include <fstream>using namespace std;struct SCORE /定義存放學生成績信息的結(jié)點 int num; /學號string name; /某某float math; /數(shù)學成績float english; /英語成績float puter; /就算計根底成績float scoresum; /總成績struct SCORE * next; /next為指向下一結(jié)點的指針;struct SCORE * head; /指向鏈表頭結(jié)點的指針int studentSum=0; /學生總?cè)藬?shù)class recordpublic: struct SCORE * InsertRecord(struct SCORE * h); /增加學生成績信息struct SCORE * DeleteRecord(struct SCORE * h); /刪除學生成績信息struct SCORE * UpdateRecord(struct SCORE * h); /修改學生成績信息 void FindRecord(struct SCORE * h,int x,float s1,float s2); /根據(jù)某門課程的分數(shù)段查詢學生成績信息void FindRecord(struct SCORE * h,string x); /根據(jù)學生某某查詢成績信息void FindRecord(struct SCORE * h,int x); /根據(jù)學生學號查詢成績信息void StatisticRecord(struct SCORE * h,int x); /統(tǒng)計某門課程的與格學生人數(shù)、與格率,并顯示不與格學生信息void StacRecordFine(struct SCORE * h); /統(tǒng)計三門課程成績?nèi)珵閮?yōu)秀的學生人數(shù),并顯示全為優(yōu)秀的學生信息 void StacRecordDisq(struct SCORE * h); /統(tǒng)計三門課程成績?nèi)坎慌c格的學生人數(shù),并顯示全部不與格的學生信息void PrintRecord(struct SCORE * h); /輸出所有學生成績信息void SaveRecordFile(struct SCORE * h); /保存學生成績信息到文件struct SCORE * LoadRecordFile(struct SCORE * h); /從文件中加載學生成績信息;struct SCORE * record:InsertRecord(struct SCORE * h) struct SCORE * p1,*p2,*p3; /定義指針變量p1、p2、p3p3=new SCORE; /創(chuàng)建新的學生成績結(jié)點cout<<"n請輸入學生學號:"cin>>p3->num; /從鍵盤接收輸入數(shù)賦值給結(jié)點的學號cout<<"n請輸入學生某某:"cin>>p3->name; /從鍵盤接收輸入數(shù)賦值給結(jié)點的某某cout<<"n請輸入學生數(shù)學成績:"cin>>p3->math; /從鍵盤接收輸入數(shù)賦值給結(jié)點的數(shù)學成績cout<<"n請輸入學生英語成績:"cin>>p3->english; /從鍵盤接收輸入數(shù)賦值給結(jié)點的英語成績cout<<"n請輸入學生的計算機根底成績:"cin>>p3->puter; /從鍵盤接收輸入數(shù)賦值給結(jié)點的計算機成績p3->scoresum=p3->math+p3->english+p3->puter; /計算結(jié)點的總成績p3->next=NULL; /將要插入結(jié)點的指針域設置為空if(h=NULL) /當鏈表中沒有結(jié)點時,將要參加的結(jié)點作為頭結(jié)點 h=p3;return h;p1=p2=h;while(p1!=NULL&&p3->num>p1->num) /查找結(jié)點的學號大于要插入結(jié)點學號的第一個結(jié)點 /指針p1表示符合條件的結(jié)點的指針,指針p2是指針p1的前一個結(jié)點指針p2=p1;p1=p1->next; if(p1=h) /插入位置為頭結(jié)點前p3->next=p3;h=p3;return h;else /插入位置為鏈表中間和鏈表尾部p2->next=p3;p3->next=p1;studentSum+=1; /學生人數(shù)加1return h; /返回鏈表的頭結(jié)點void record:PrintRecord(SCORE * h) if(h=NULL)cout<<"n抱歉,沒有任何記錄!n"return;cout<<"n學號t某某t數(shù)學t英語t計算機t總分"<<endl;while(h) /輸出鏈表中每個結(jié)點的學生成績信息cout<<h->num<<"t"<<h->name<<"t"<<h->math<<"t"<<h->english<<"t"<<h->puter<<"t"<<h->scoresum<<endl;h=h->next;struct SCORE * record:DeleteRecord(struct SCORE * h) struct SCORE * p1,* p2;int num;if(h=NULL) /鏈表為空cout<<"n抱歉,沒有任何記錄!"return h;p1=p2=h; /將鏈表的頭結(jié)點指針h賦值給指針p1和指針p2cout<<"n請輸入要刪除記錄的學生學號"cin>>num;while(p1!=NULL&&p1->num!=num) /查找結(jié)點的學號等于要刪除學生學號的第一個結(jié)點 /指針p1表示符合條件的結(jié)點的指針,指針p2是指針p1的前一個結(jié)點指針p2=p1;p1=p1->next;if(p1=NULL) /沒有找到符合要求的結(jié)點cout<<"n抱歉啊,表中沒有該記錄哦!"return h;if(p1->num=num)studentSum-=1; /學生人數(shù)減1 if(p1=h) /刪除的是頭結(jié)點h=h->next ;else /刪除的是非頭結(jié)點p2->next=p1->next;delete p1; /釋放p1 所指向的儲存單元return h; struct SCORE * record:UpdateRecord(struct SCORE *h ) struct SCORE * p1;int num;if(h=NULL) /鏈表為空 cout<<"n抱歉,沒有任何記錄!"return h;p1=h; /將鏈表的頭結(jié)點指針h賦值給指針p1cout<<"n請輸入要修改記錄的學生學號!"cin>>num;while(p1!=NULL&&p1->num!=num) /查找結(jié)點的學號等于要修改學生學號的指針結(jié)點p1=p1->next; /將p1指針移到下一個結(jié)點if(p1=NULL) /沒有找到符合要求的結(jié)點cout<<"n抱歉啊,表中沒有該記錄哦!"return h;if(p1->num=num) /找到符合要求的結(jié)點,并修改學生的相關成績cout<<"n請重新輸入學生的數(shù)學成績:"cin>>p1->math ;cout<<"n請重新輸入學生英語成績:"cin>>p1->english ;cout<<"n請重新輸入學生的計算機根底成績:"cin>>p1->puter;p1->scoresum=p1->math+p1->english+p1->puter;return h;void record:FindRecord(struct SCORE * h,int x,float s1,float s2) if(h=NULL) /鏈表為空cout<<"n抱歉,沒有任何記錄!"return;cout <<"n學號t某某t數(shù)學t英語t計算機t總分"<<endl;while(h)if(x=1) /查找數(shù)學成績在某分數(shù)段的學生成績信息if(h->math>=s1&&h->math<=s2)cout<<h->num<<"t"<<h->name<<"t"<<h->math<<"t"<<h->english<<"t"<<h->puter<<"t"<<h->scoresum<<endl;if(x=2) /查找英語成績在某分數(shù)段的學生成績信息if(h->english>=s1&&h->english<=s2)cout<<h->num<<"t"<<h->name<<"t"<<h->math<<"t"<<h->english<<"t"<<h->puter<<"t"<<h->scoresum <<endl;if(x=3) /查找計算機成績在某分數(shù)段的學生成績信息if(h->puter>=s1&&h->english<=s2)cout<<h->num<<"t"<<h->name<<"t"<<h->math<<"t"<<h->english<<"t"<<h->puter<<"t"<<h->scoresum <<endl;h=h->next;void record:FindRecord(struct SCORE * h,int num) /根據(jù)學生學號查找學生成績信息 struct SCORE * p1;if(h=NULL) /鏈表為空cout<<"n抱歉,沒有任何記錄!"return;p1=h; /將鏈表的頭結(jié)點指針h賦值給指針p1while(p1!=NULL&&p1->num!=num) /查找節(jié)點的學號等于要查找學生學號的指針結(jié)點 p1=p1->next;if(p1=NULL) /沒有找到cout<<"n抱歉,表中沒有該記錄哦!"return;if(p1->num=num) /找到并顯示信息cout<<"n學號t某某t數(shù)學t英語t計算機t總分"<<endl;cout<<p1->num<<"t"<<p1->name<<"t"<<p1->math<<"t"<<p1->english<<"t"<<p1->puter<<"t"<<p1->scoresum<<endl;void record:FindRecord(struct SCORE * h,string name) /根據(jù)學生某某查找學生成績信息 struct SCORE * p1;if(h=NULL) /鏈表為空cout<<"n抱歉,沒有任何記錄"return ;p1=h;while(p1!=NULL&&p1->name!=name)p1=p1->next;if(p1=NULL)cout<<"n抱歉,表中沒有該記錄哦!"return;if(p1->name=name)cout<<"n學號t某某t數(shù)學t英語t計算機t總分"<<endl;cout<<p1->num<<"t"<<p1->name<<"t"<<p1->math<<"t"<<p1->english<<"t"<<p1->puter<<"t"<<p1->scoresum<<endl;void record:StatisticRecord(struct SCORE*h,int x)struct SCORE*p=h; /將鏈表的頭結(jié)點指針h復制給指針pint count=0; /定義統(tǒng)計人數(shù)count變量并賦初始值為0if(p=NULL) /鏈表為空cout<<"n抱歉,沒有任何記錄!"return;while(p)if(x=1) /統(tǒng)計數(shù)學成績與格的學生人數(shù)if(p->math>=60)count+=1;if(x=2) /統(tǒng)計英語成績與格的學生人數(shù)if(p->english>=60)count+=1;if(x=3) /統(tǒng)計計算機成績與格的學生人數(shù)if(p->puter>=60)count+=1;p=p->next;if(x=1) /顯示數(shù)學成績與格的學生人數(shù)與與格率cout<<"數(shù)學成績與格學生人數(shù)為"cout<<count;cout<<",與格率為"cout<<count/(float)studentSum<<endl;if(count<studentSum)cout<<"n學號t某某t數(shù)學"<<endl;elsecout<<"沒有數(shù)學成績不與格學生"<<endl;elseif(x=2) /顯示英語成績與格的學生人數(shù)與與格率cout<<"英語績與格學生人數(shù)為"cout<<count;cout<<",與格率為"cout<<count/(float)studentSum<<endl;if(count<studentSum)cout<<"n學號t某某t英語"<<endl;elsecout<<"沒有英語成績不與格的學生"<<endl;elseif(x=3) /顯示計算機成績與格的學生人數(shù)與與格率cout<<"計算機成績與格的學生人數(shù)為"cout<<count;cout<<",與格率為"cout<<count/(float)studentSum<<endl;if(count<studentSum)cout<<"n學號t某某t計算機"<<endl;elsecout<<"沒有計算機成績不與格的學生"<<endl;p=h;while(p)if(x=1) /顯示數(shù)學成績不與格的學生信息if(p->math<60)cout<<p->num<<"t"<<p->name<<"t"<<p->math<<endl;if(x=2) /顯示英語成績不與格的學生信息if(p->english<60)cout<<p->num<<"t"<<p->name<<"t"<<p->english<<endl;if(x=3) /顯示計算機成績不與格的學生信息if(p->puter<60)cout<<p->num<<"t"<<p->name<<"t"<<p->puter<<endl;p=p->next;void record:StacRecordFine(struct SCORE*h)struct SCORE *p=h; /將鏈表的頭結(jié)點指針h賦值給指針平pint count=0; /定義統(tǒng)計人數(shù)count變量并賦初始值為0if(p=NULL) /鏈表為空cout<<"n抱歉,沒有任何記錄!"return;while(p)if(p->math>=90&&p->english>=90&&p->puter>=90)/統(tǒng)計三門成績?nèi)繛閮?yōu)秀的學生人數(shù)count+=1;p=p->next; /將指針移到下一結(jié)點cout<<"三門成績?nèi)珵閮?yōu)秀的學生人數(shù)為"cout<<count<<endl;cout<<"n學號t某某t數(shù)學t英語t計算機t總分"<<endl;p=h; /將鏈表的頭結(jié)點指針h賦值給指針pwhile(p)if(p->math>=90&&p->english>=90&&p->puter>=90) /顯示三門成績?nèi)繛閮?yōu)秀的學生信息cout<<p->num<<"t"<<p->name<<"t"<<p->math<<"t"<<p->english<<"t"<<p->puter<<"t"<<p->scoresum<<endl;p=p->next;void record:StacRecordDisq(struct SCORE*h)struct SCORE*p=h; /將鏈表的頭結(jié)點指針h賦值給指針pint count=0; /定義統(tǒng)計人數(shù)count變量并賦初值為0if(p=NULL) /鏈表為空cout<<"n抱歉,沒有任何記錄!"return ;while(p)if(p->math<60&&p->english<60&&p->puter<60) /統(tǒng)計三門成績?nèi)繛椴慌c格的學生人數(shù)count+=1;p=p->next; cout<<"三門成績?nèi)坎慌c格的學生信息為"cout<<count<<endl;cout<<"全為不與格的學生信息為:"<<endl;cout<<"n學號t某某t數(shù)學t英語t計算機t總分"<<endl;p=h; while(p)if(p->math<60&&p->english<60&&p->puter<60) /顯示三門成績?nèi)繛椴慌c格的學生信息cout<<p->num<<"t"<<p->name<<"t"<<p->math<<"t"<<p->english<<"t"<<p->puter<<"t"<<p->scoresum<<endl;p=p->next;void record:SaveRecordFile(struct SCORE *h) /將鏈表中的數(shù)據(jù)寫入文件struct SCORE *p; ofstream ofile; if(!ofile) /文件打開錯誤cout<<"n數(shù)據(jù)文件打開錯誤沒有將數(shù)據(jù)寫入文件!n"return ;ofile<<"學號t某某t數(shù)學t英語t計算機t總分"while(h)ofile<<endl<<h->num<<"t"<<h->name<<"t"<<h->math<<"t"<<h->english<<"t"<<h->puter<<"t"<<h->scoresum; /將當前結(jié)點的數(shù)據(jù)信息寫入到文件中p=h;h=h->next;delete p;ofile.close(); /關閉文件對象struct SCORE * record:LoadRecordFile(struct SCORE *h)ifstream ifile; /定義輸入文件對象struct SCORE *p,*q;if(! ifile) /文件打開錯誤cout<<"n數(shù)據(jù)文件不存在,加載不成功!n"return NULL;char s50;ifile.getline(s,50); /讀取文件指針當前行數(shù)據(jù)while(! ifile.eof()studentSum=studentSum+1; /學生人數(shù)加1p=new SCORE; /創(chuàng)建新的score變量ifile>>p->num>>p->name>>p->math>>p->english>>p->puter>>p->scoresum; /將數(shù)據(jù)從文件中讀取到新的結(jié)點中p->next=NULL; /新結(jié)點的指針域為空if(h=NULL) /將新結(jié)點插入到鏈表中q=h=p;elseq->next=p;q=p;ifile.close(); /關閉文件對象return h;void SystemMenu(record r) /系統(tǒng)菜單,與處理用戶的選擇int choice;while(1)cout<<"ntt歡迎進入學生成績管理系統(tǒng)!" /顯示系統(tǒng)主菜單cout<<"n"cout<<"nt1、添加學生成績信息"cout<<"nt2、刪除學生成績信息"cout<<"nt3、修改學生成績信息"cout<<"nt4、查詢學生成績信息"cout<<"nt5、顯示所有學生成績信息"cout<<"nt6、統(tǒng)計學生成績信息"cout<<"nt0、退出系統(tǒng)"cout<<"n"cout<<"n請根據(jù)提示選擇操作:"cin>>choice;switch(choice)case 1: /增加學生成績信息head=r.InsertRecord(head);break;case 2: /

注意事項

本文(大大數(shù)據(jù)結(jié)構(gòu)課程設計 學生成績管理系統(tǒng))為本站會員(沈***)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復下載不扣分。




關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!