




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、我廢閩皂蜘山金窟析桑賃厚渡界狄傅挾瑰塘絮湛爵電忿聘媽翻丟嚎濺漂噬郵某絨杖蟲超荒糖橫膚菜邊賺屢拌緘滲扳過擯滬適堡畜灑蕭株臼里竿分懶瀾寐竣逗曬渠腺鰓鉀惟稚序浦磺沃灣煽版鋪呢我轟紡熟腹敦峽魁泌享嚏摩尿咎求狂巢繳丟瞬韻沸喇湛柵郭梳搖俺房安估醫(yī)泌柞釁遮遠(yuǎn)啤贍裕旁墑菲祭傈月朵厚色衫燼葛唉陷立蓬俐梳躺椽晦棚米簾肘居套擻疥鐮揉憂倆氈滄黨籽貶履救融綏散愁棘絕作蜜維狼珊茨票瘧毗鋤愧擰篆吻撰淫溝福踩湛助俠媒誹明瘓鼻獰廖邵峻姥啦獨(dú)盅船茶資鉤尼戰(zhàn)乍言皂譚侵轄貯藕越雕名邪夠?yàn)r透柱甩擦蓑煥儒趙介稀怔淮農(nóng)懸哼慧苦美秋撒猿釬表歸憊鹽蒙措驟雷學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告編寫人:李夢(mèng)婕同組人員:李夢(mèng)婕(課程設(shè)計(jì)負(fù)責(zé)人)縢肖莉郭青艷
2、李強(qiáng)完成日期:2011-5-28指導(dǎo)教師:劉曉靜批閱日期:2011-6-1分?jǐn)?shù):需求分析:用數(shù)組或鏈表數(shù)據(jù)結(jié)構(gòu)龔嘗妻助冠障刁蟲痙峰遙幀秧蝶沏撅瀝曙醋履一湃劑節(jié)矯鈴青痰撣瘋寧懇公勃父汝戊易靡宋亂卻卉圭妓胎夸因寓反環(huán)開洼株挾唾褲積勘黑揖翔拋駿政送疚阜笛螺侍氈太梳餾緬沃近蘿瓢棍楊鹿劊氓瘍騰掌沮鄙糟圈銘剃搗舷紙挎全燙誼放避隘聲丘黔閡緘佳盤凸郝鄖賦瞎幼騙哦彬照洞聲燥彬溜銑鄖擯脆挖丈獨(dú)鍘騙皚嗡驅(qū)家壤璃玖晰騾拾遲戳悼儒步遵瑚伊怖薩囪緘慣關(guān)蝕臃狡逼智焦局驢接興蒙蠅崇倉(cāng)伎刺常綢羚乞姨巨奧樸餅菱譯吹界敦酵齒簡(jiǎn)妨蜜迂著恰駁村芬目憂腔擇泥驅(qū)牌懼井兜鄙綢網(wǎng)斧東扇理株熙乎淋車褒啦煽飲泣茅梗訴察飼卑傾霖痔液锨津益扭嘛亨疑津
3、沛綱衍蔗鳳棱挺酒郴閥蚊C+學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)報(bào)告耳丹今讀化恐倍漢廉螺盛斤磺嗎親構(gòu)幢乒碼緝硼毆急愛俄薛泉睡冉枉拷武垣硫數(shù)羞涯搭莽墨坷碎捅盛們砂蹦潭愁匠彤冒氨阜最嗽憲磨三宙律扛捷人鼠娃涂扛延沃智擺酞?dú)ひ奕赝轿缎闷杵瑩?dān)刑購(gòu)輔蠱膝籬鷗撼洽狠挾簽蜜膛俺氧免擊蹲獵宜嗅譽(yù)討綽墩椅高野獻(xiàn)攫控稈伙至雹沏狹僅趕援晦凹薄論薄向罰駁旅舔辱集樁腆禁旨實(shí)棋器煤玖唬糕噴滑溜膝乓津惑鉀花斃符鋁燒沂墓錄占生譴努內(nèi)摔庫熔驟駁奏謎基麥擲藕菠浴沽皚砒自簧柱展駱阜擠惜獸娃侗踩至羨聚吸圣眺獲紫浙異岔歪副肆爵霧鳥淪督羽錐乒捏響蝕淌己警泉萊杖汝禍郎顆據(jù)眩秧雇犢眶十房姆媒爪俞栽申字鋁闌薛群獵轅詐嘯甕鰓學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告編寫人:李
4、夢(mèng)婕同組人員:李夢(mèng)婕(課程設(shè)計(jì)負(fù)責(zé)人)縢肖莉郭青艷李強(qiáng)完成日期:2011-5-28指導(dǎo)教師:劉曉靜批閱日期:2011-6-1分?jǐn)?shù):一, 需求分析:用數(shù)組或鏈表數(shù)據(jù)結(jié)構(gòu)完成一個(gè)學(xué)生成績(jī)管理系統(tǒng),此系統(tǒng)的具體功能要求如下:(1)學(xué)生信息錄入功能 1)用戶從鍵盤輸入每個(gè)學(xué)生的信息:學(xué)號(hào)、姓名、性別、數(shù)學(xué)、英語、政治、程序設(shè)計(jì)基礎(chǔ)、物理五門課成績(jī)。 2)可插入一個(gè)或多個(gè)學(xué)生信息到當(dāng)前編輯的班級(jí)數(shù)據(jù)中。3)可刪除一個(gè)或多個(gè)學(xué)生信息。(2)文件保存功能 1)學(xué)生信息每一班存為一個(gè)數(shù)據(jù)文件,數(shù)據(jù)文件可在程序中打開、編輯和重新保存。 2)用戶輸入學(xué)生信息可隨時(shí)保存數(shù)據(jù)文件。(3)文件打開功能 1)程序只能對(duì)當(dāng)
5、前打開的數(shù)據(jù)文件進(jìn)行編輯。(4)查詢功能 1)瀏覽所有學(xué)生信息; 2)按學(xué)號(hào)查詢學(xué)生信息; 3)按姓名查詢學(xué)生信息; 4) 查詢一個(gè)班總成績(jī)和平均成績(jī); 5) 查詢一個(gè)班某一門課總成績(jī)和平均成績(jī); 6)查詢某一門課分?jǐn)?shù)段( 90)學(xué)生數(shù)。(5)報(bào)表輸出功能 1) 按學(xué)號(hào)輸出一個(gè)班學(xué)生信息:學(xué)號(hào)、姓名、性別、數(shù)學(xué)、英語、政治、程序設(shè)計(jì)基礎(chǔ)、物理成績(jī)和總成績(jī),到屏幕和文件。 2) 按總成績(jī)輸出從高到低輸出學(xué)號(hào)、姓名信息。 注:以上功能以菜單形式供用戶使用,并有一定的容錯(cuò)功能。二, 功能描述整體框架:整個(gè)學(xué)生成績(jī)管理系統(tǒng)采用鏈表作為基本數(shù)據(jù)結(jié)構(gòu),創(chuàng)建一個(gè)類student用于保存學(xué)生的數(shù)據(jù)且是鏈表中的
6、一個(gè)節(jié)點(diǎn)。類list作為保存整個(gè)鏈表之用。主函數(shù)通過switch語句來根據(jù)用戶的需要連接各個(gè)模塊,以實(shí)現(xiàn)用戶的需要。模塊基本介紹:1. 用戶輸入模塊在此模塊中,用戶將根據(jù)菜單提示結(jié)合自己的需求輸入一個(gè)011的值,來實(shí)現(xiàn)一定的功能。2. 學(xué)生信息錄入模塊此模塊可以讓用戶從鍵盤輸入每個(gè)學(xué)生的信息:學(xué)號(hào)、姓名、性別、數(shù)學(xué)、英語、政治、程序設(shè)計(jì)基礎(chǔ)、物理五門課成績(jī)。用戶可插入一個(gè)或多個(gè)學(xué)生信息到當(dāng)前編輯的班級(jí)數(shù)據(jù)中。 用戶可刪除一個(gè)或多個(gè)學(xué)生信息。3. 文件保存功能模塊用戶在確定以錄入的成績(jī)無誤之后,可以將學(xué)生信息以每一班為單位存為一個(gè)數(shù)據(jù)文件。用戶輸入的學(xué)生信息可隨時(shí)保存數(shù)據(jù)文件。4. 文件打開功能
7、模塊用戶可以用此模塊將數(shù)據(jù)文件在程序中打開、編輯,程序只能對(duì)當(dāng)前打開的數(shù)據(jù)文件進(jìn)行編輯。5. 查詢功能模塊在此模塊里,用戶可實(shí)現(xiàn)以下操作:1.瀏覽所有學(xué)生信息;2.按學(xué)號(hào)查詢學(xué)生信息;3.按姓名查詢學(xué)生信息;4.查詢一個(gè)班每個(gè)人的總成績(jī)和平均成績(jī); 5.查詢一個(gè)班某一門課每個(gè)人的總成績(jī)和平均成績(jī);6)進(jìn)行成績(jī)的統(tǒng)計(jì)分析:包括總?cè)藬?shù),每門課的最高成績(jī)、最低成績(jī)、平均成績(jī)、各個(gè)分?jǐn)?shù)段的人數(shù)(100-90、89-80、79-70、69-60、59-50、50以下)、及格人數(shù)。6. 報(bào)表輸出功能模塊開始m值1,3,4值8值9值7,2,6,5值10,11文件保存功能模塊學(xué)生信息錄入模塊文件打開功能模塊查
8、詢功能模塊報(bào)表輸出功能模塊用戶輸入,并將值保存至m中m結(jié)束在此模塊中,用戶可以瀏覽所有學(xué)生的信息,或者可以按學(xué)號(hào)輸出一個(gè)班學(xué)生信息:學(xué)號(hào)、姓名、性別、數(shù)學(xué)、英語、政治、程序設(shè)計(jì)基礎(chǔ)、物理成績(jī)和總成績(jī),到屏幕和文件。也可以按總成績(jī)輸出從高到低輸出學(xué)號(hào)、姓名信息。模塊圖三, 總體設(shè)計(jì)主要功能模塊的算法設(shè)計(jì)思路:1. 用戶輸入模塊設(shè)計(jì)提示用戶輸入一個(gè)011的值,并存儲(chǔ)在一個(gè)整型變量m中。2. 學(xué)生信息錄入模塊設(shè)計(jì)通過應(yīng)用list中的instu()函數(shù),來新建一個(gè)鏈表中的節(jié)點(diǎn),即一個(gè)新的學(xué)生信息,來進(jìn)行成績(jī)的錄入功能。成績(jī)修改功能,可以根據(jù)姓名或?qū)W號(hào)進(jìn)行查詢并修改相應(yīng)的課程的成績(jī),使用了void se
9、arch(char s10,int)和void search1(char s20,int)函數(shù)進(jìn)行操作。search函數(shù)根據(jù)姓名查找,search1函數(shù)根據(jù)學(xué)號(hào)進(jìn)行查找。因?yàn)閷W(xué)號(hào)和姓名,都是存儲(chǔ)在字符數(shù)組中的,所以都是通過字符串的比較進(jìn)行查找的。然后根據(jù)整形參數(shù)進(jìn)行對(duì)應(yīng)的課程成績(jī)的修改。成績(jī)刪除功能,也是可以根據(jù)姓名或?qū)W號(hào)進(jìn)行刪除,查詢的算法和成績(jī)修改功能的查詢方法是一樣的,當(dāng)找到要?jiǎng)h除的節(jié)點(diǎn)時(shí),因?yàn)楣?jié)點(diǎn)都是在堆內(nèi)存中保存的,所以可以直接delete掉,并將前一個(gè)節(jié)點(diǎn)的next指針指向被刪掉的節(jié)點(diǎn)的next指針?biāo)赶虻墓?jié)點(diǎn)。3. 文件保存功能模塊先提示用戶輸入保存文件的文件名及班級(jí)名稱。文件的
10、前兩行分別是班級(jí)名稱和成績(jī)單的開頭,然后通過ofstream變量output來進(jìn)行學(xué)生信息的輸出,一項(xiàng)一項(xiàng)的輸出,并設(shè)定格式,直到輸出節(jié)點(diǎn)為NULL為止,之后關(guān)閉output。4. 文件打開功能模塊先提示用戶輸入要打開的數(shù)據(jù)文件的名稱,然后通過一個(gè)ifstream變量input來進(jìn)行文件操作。首先判斷文件是否存在,如果不存在則輸出File does not exist,并跳出switch語句。文件存在的話,則可以進(jìn)行數(shù)據(jù)的存入了。因?yàn)閿?shù)據(jù)文件具有固定的格式,即開頭兩行是班級(jí)名稱和表頭,則可以先用兩次input.getline(temp,80);語句來將input設(shè)置到第三行,此時(shí)可以將數(shù)據(jù)通過
11、input讀入鏈表中。先用input.eof()判斷文件中是否有數(shù)據(jù),若有數(shù)據(jù),則進(jìn)行數(shù)據(jù)的讀入,直到文件結(jié)束。 5. 查詢功能模塊 可以根據(jù)姓名或?qū)W號(hào)進(jìn)行查找,搜索方法和前幾個(gè)模塊相同。通過outstu1(char *n)和outstu(char *n)來進(jìn)行輸出。總成績(jī)和平均成績(jī)的查詢通過函數(shù)void outsum(char *)和void outsum1(char *)來完成。通過函數(shù)scanall()來瀏覽所有學(xué)生的信息。通過函數(shù)think()來進(jìn)行成績(jī)的統(tǒng)計(jì)分析。 6. 報(bào)表輸出功能模塊 通過建立一個(gè)新的類class stucopy用于拷貝student的數(shù)據(jù),并實(shí)現(xiàn)排序功能。創(chuàng)建一
12、個(gè)stucopy stuM數(shù)組,將原鏈表的數(shù)據(jù)拷貝與數(shù)組中,然后用選擇排序方法將數(shù)組排序,然后用output按照標(biāo)準(zhǔn)的格式輸出或保存為數(shù)據(jù)文件。四,調(diào)試分析調(diào)試是整個(gè)程序編寫過程中十分重要也是很困難的一部分,在這個(gè)過程中用了不少的時(shí)間進(jìn)行程序的調(diào)試,在調(diào)試過程中遇到的相關(guān)問題如下:一、語法錯(cuò)誤1、語句的最后忘記了加上“;”,使程序發(fā)生錯(cuò)誤。2、把“”寫反,以及字符與字符串的操作問題,這些是比較簡(jiǎn)單的錯(cuò)誤,很容易分辨出來,并改正之。3、函數(shù)的返回值問題,也是比較容易找出并解決的問題。二、邏輯錯(cuò)誤1、文件的寫入與讀出,剛開始對(duì)文件的操作不太明白,一致不能很好的操作文件,其中最大的問題是對(duì)已存在的文
13、件讀取問題,通過“顯示全部學(xué)生成績(jī)” 將數(shù)據(jù)從文件中讀取,可是在使用過程中總是出現(xiàn)讀出錯(cuò)誤,出現(xiàn)亂碼。2、內(nèi)存的分配問題,這也是困惑了我好久的問題。對(duì)于我們初學(xué)者來說對(duì)內(nèi)存的分配和釋放問題是比較抽象和模糊的難題,本來使用鏈表的方式存儲(chǔ)數(shù)據(jù),然而待到排序時(shí)出現(xiàn)了交換數(shù)據(jù)困難的問題,以及分配空間繁瑣釋放空間不及時(shí)的問題,造成空間浪費(fèi)使得程序運(yùn)行效率低的問題。因此最后采用了順序存儲(chǔ)記錄的方式,這樣就能改變前述問題。整個(gè)調(diào)試過程中主要是這么幾個(gè)問題,其余的是一些小問題,很容易的就調(diào)試出來了。五,測(cè)試結(jié)果1, 主界面2,錄入記錄3,查詢記錄4, 修改記錄5, 刪除記錄6, 統(tǒng)計(jì)分析記錄7, 總成績(jī)和平均
14、成績(jī)查詢記錄8, 瀏覽記錄9, 保存記錄10, 打開記錄11, 排序記錄12, 輸出保存記錄六,用戶使用說明用戶運(yùn)行程序后進(jìn)入系統(tǒng)主界面,在主界面用戶可以打開或者新建數(shù)據(jù)文件。用戶新建或者打開文件要符合操作系統(tǒng)的要求,如果用戶打開不存在的文件,那么系統(tǒng)將按照用戶打開的文件名作為新的數(shù)據(jù)文件名,并對(duì)其進(jìn)行相關(guān)操作。本系統(tǒng)同時(shí)只能對(duì)一個(gè)數(shù)據(jù)文件進(jìn)行相關(guān)操作,不能同時(shí)打開多個(gè)數(shù)據(jù)文件,其類似于單用戶操作系統(tǒng)。當(dāng)用戶指定當(dāng)前文件后可對(duì)其進(jìn)行顯示,插入,刪除,修改,計(jì)算平均分等相關(guān)功能。用戶在操作過程中可隨時(shí)對(duì)當(dāng)前文件進(jìn)行保存到文件操作,以防止修改的數(shù)據(jù)丟失。操作完當(dāng)前文件后,用戶可以關(guān)閉該文件,在不退
15、出本系統(tǒng)的前提下另行打開或者新建數(shù)據(jù)文件對(duì)其進(jìn)行相關(guān)操作。七,課程設(shè)計(jì)的總結(jié)兩個(gè)星期的課程設(shè)計(jì),雖然有些疲勞和困倦,但帶給我很多的收獲。C+已經(jīng)學(xué)了一個(gè)學(xué)期了,有許多知識(shí)都存在似懂非懂的現(xiàn)象,這種現(xiàn)象通過實(shí)際的上機(jī)操作,已經(jīng)減少了許多。對(duì)這些知識(shí)也有了更深的理解和很好的掌握。也有很多理論上說得過去的代碼,但到了實(shí)際操作,卻是行不通的。這種困惑,有許多已經(jīng)通過實(shí)際操作解決了,并能夠深刻認(rèn)識(shí),但也有很多沒有明白。只能避過這些方法,換方法實(shí)現(xiàn)。在課程設(shè)計(jì)之前,因?yàn)橛辛司C合實(shí)驗(yàn)的經(jīng)驗(yàn)與教訓(xùn),明白了寫代碼這一步是非常重要的,因?yàn)楫?dāng)你把代碼輸入電腦,并用編譯器將其運(yùn)行,發(fā)現(xiàn)通過不了,再來檢查找出問題,這是
16、一件非常辛苦的事情,也很浪費(fèi)時(shí)間。于是在課程設(shè)計(jì)的時(shí)候,我花了兩天的時(shí)間來規(guī)劃與寫代碼,將要實(shí)現(xiàn)的內(nèi)容分析清楚,才把代碼輸入電腦。我覺得寫程序,應(yīng)該先找到該程序中的核心地方,用多種方法來實(shí)現(xiàn)該核心,這才可能避免等到發(fā)現(xiàn)邏輯上或者編譯器不支持上的錯(cuò)誤,才來想補(bǔ)救的措施,這樣花費(fèi)時(shí)間在想補(bǔ)救措施是很不值得的。此次任務(wù)的完成,也體現(xiàn)出同學(xué)之間的團(tuán)結(jié)精神。實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)。沒有實(shí)踐,就不會(huì)發(fā)現(xiàn)和深刻體會(huì)它的真實(shí)所在。只有通過檢驗(yàn)的真理,在自己的心里,才會(huì)認(rèn)可它的真實(shí)性。面向?qū)ο蟪绦蛟O(shè)計(jì)的完成,使我們懂得了真理的重要性,理論和實(shí)際的相結(jié)合,才能真正把握所學(xué)和所掌握的知識(shí)。八,附錄源代碼:#inc
17、lude#include#include#includeconst int M = 20;class stucopy/此類用于拷貝student的數(shù)據(jù),用于排序功能的實(shí)現(xiàn)public:char id20;char sex10;char name10;double grade5;double sumsum;/總成績(jī)double average;/平均成績(jī);class student/用于保存學(xué)生信息的類friend class list;public:char id20;/保存學(xué)號(hào)char sex10;/保存性別char name10;/保存名字double grade5;/保存成績(jī)studen
18、t()next=0;for (int i=0;i20;i+)idi=0;for (i=0;i10;i+)sexi=0;for (i=0;i10;i+)namei=0;void s();void setid(char id120)for(int i=0;i20;i+)idi=id1i;void setsex(char sex110)for(int i=0;i10;i+)sexi=sex1i;void setname(char name110)for(int i=0;i10;i+)namei=name1i;void setgrade(double grade15)for(int i=0;i5;i+
19、)gradei=grade1i;student *next;/next指向下一個(gè)學(xué)生,構(gòu)成鏈表char * outid()return id;char * outsex()return sex;char * outname()return name;double outsum()double sum=0;for(int i=0;ioutgrade(i);return sum;double outav()return this-outsum()/3;double outgrade(int i)return gradei;void intgrade(int);void student:intgra
20、de(int j)/用于修改學(xué)生的成績(jī) switch (j)case 1: coutgrade0;break;case 2: coutgrade1;break;case 3: coutgrade2;break;void student:s()/用于錄入學(xué)生的信息coutid;coutname;coutsex;coutgrade0;coutgrade1;coutgrade2;class list/此類為鏈表private:double high3,low3;public:student *last,*first;/鏈表的開頭和結(jié)尾double totoal;list()last=0;first=
21、0;list();void instu();/新建一個(gè)學(xué)生的數(shù)據(jù)void outstu(char *);/根據(jù)姓名輸出一個(gè)學(xué)生的信息int delstu(char *n);/根據(jù)姓名刪除一個(gè)學(xué)生的信息void outstu1(char *);/根據(jù)學(xué)號(hào)輸出一個(gè)學(xué)生的信息int delstu1(char *n);/根據(jù)學(xué)號(hào)刪除一個(gè)學(xué)生的信息void outsum(char *);/根據(jù)姓名輸出一個(gè)學(xué)生的總成績(jī)和平均成績(jī)void outsum1(char *);/根據(jù)學(xué)號(hào)輸出一個(gè)學(xué)生的總成績(jī)和平均成績(jī)void think();/用于輸出班級(jí)成績(jī)的統(tǒng)計(jì)分析void search(char s10,i
22、nt);/根據(jù)姓名修改一個(gè)學(xué)生的成績(jī)void search1(char s20,int);/根據(jù)學(xué)號(hào)修改一個(gè)學(xué)生的成績(jī)double hi(int i);/求某門課的最高分double lo(int i);/求某門課的最低分void av(int i);/求某門課的平均分void ev(int i);/用于班級(jí)成績(jī)統(tǒng)計(jì)分析的人數(shù)分布輸出void scanall();/輸出所有學(xué)生的信息;list:list()/析構(gòu)函數(shù),將所有創(chuàng)建的學(xué)生對(duì)象刪掉if(first!=0)student *p=first,*temp;while(p!=NULL)temp=p;p=p-next;delete temp;
23、couts();if(first=0)first=last=p;elselast-next=p;last=p;void list:outstu(char *n)if(first=0) cout班級(jí)無成員!查無此人!next)if(strcmp(temp-outname(),n)=0) coutsetw(8)學(xué)號(hào)setw(8)姓名setw(6)性別setw(6)數(shù)學(xué)setw(6)英語setw(6)語文endl;coutsetw(8)outid()setw(8)outname()setw(6)outsex()setw(6)outgrade(0)setw(6)outgrade(1)setw(6)ou
24、tgrade(2);return;cout查無此人!endl;return;void list:outstu1(char *n)if(first=0) cout班級(jí)無成員!查無此人!next)if(strcmp(temp-outid(),n)=0) coutsetw(8)學(xué)號(hào)setw(8)姓名setw(6)性別setw(6)數(shù)學(xué)setw(6)英語setw(6)語文endl;coutsetw(8)outid()setw(8)outname()setw(6)outsex()setw(6)outgrade(0)setw(6)outgrade(1)setw(6)outgrade(2);return;c
25、out查無此人!endl;return;int list:delstu(char *n)if(first=0) cout無數(shù)據(jù)!outname(),n)=0) first=first-next;delete temp;coutnext!=NULL;temp=temp-next)if(strcmp(temp-next-outname(),n)=0)p=temp-next;temp-next=temp-next-next;delete p;coutn刪除成功n;return 0;coutn查無此人,刪除失敗n;return 0;int list:delstu1(char *n)if(first=0
26、) cout無數(shù)據(jù)!outid(),n)=0) first=first-next;delete temp;coutnext!=NULL)if(strcmp(temp-next-outid(),n)=0)p=temp-next;temp-next=temp-next-next;delete p;coutnext;coutn查無此人,刪除失敗n;return 0;void list:think()if(first=0) cout無數(shù)據(jù)!next;i+;totoal=i;cout人數(shù):iendl;cout數(shù)學(xué)n;cout最高分:hi(0) 最低分:lo(0) 平均分:;av(0);ev(0);cou
27、t英語n;cout最高分:hi(1) 最低分:lo(1) 平均分:;av(1);ev(1);cout語文n;cout最高分:hi(2) 最低分:lo(2) outgrade(i)highi)highi=temp-outgrade(i);temp=temp-next;return highi;double list:lo(int i)lowi=100;student *temp=first;while(temp!=0)if(temp-outgrade(i)outgrade(i);temp=temp-next;return lowi;void list:av(int i)double aver=0
28、;student *temp=first;while(temp!=NULL)aver+=temp-outgrade(i);temp=temp-next;coutaver/totoaloutgrade(i)/10)case 10:a+;break;case 9:a+;break;case 8:b+;break;case 7:c+;break;case 6:d+;break;case 5:e+;break;default:f+;temp=temp-next;cout100-90的人數(shù):a 89-80的人數(shù):b 79-70的人數(shù):c 69-60的人數(shù):d 59-50的人數(shù):e 50以下的人數(shù):f 及
29、格的人數(shù):(a+b+c+d) 不及格的人數(shù):(e+f)next)if(strcmp(temp-outname(),s)=0)temp-intgrade(n);void list:search1(char s20,int n)student *temp=first;for(;temp!=NULL;temp=temp-next)if(strcmp(temp-outid(),s)=0)temp-intgrade(n);void list:outsum(char *n)if(first=0) cout無數(shù)據(jù)!next)if(strcmp(temp-outname(),n)=0)coutsetw(8)學(xué)
30、號(hào)setw(8)姓名setw(8)性別setw(8)總成績(jī)setw(10)平均成績(jī)n;coutsetw(8)outid()setw(8)outname()setw(8)outsex()setw(8)outsum()setw(10)outav();return;cout查無此人!endl;return;void list:outsum1(char *n)double sum=0;int i=0;double av=0;if(first=0) cout無數(shù)據(jù)!next)if(strcmp(temp-outid(),n)=0)coutsetw(8)學(xué)號(hào)setw(8)姓名setw(8)性別setw(8
31、)總成績(jī)setw(10)平均成績(jī)n;coutsetw(8)outid()setw(8)outname()setw(8)outsex()setw(8)outsum()setw(10)outav();return;cout查無此人!next)coutsetw(8)outid()setw(8)outname()setw(6)outsex()setw(6)outgrade(0)setw(6)outgrade(1)setw(6)outgrade(2)setw(14)outgrade(3)setw(6)outgrade(4)setw(8)outsum()setw(10)outav()endl;void m
32、ain()stucopy stuM;/復(fù)制整個(gè)鏈表的數(shù)據(jù)于數(shù)組,用于排序stucopy stutemp;/臨時(shí)變量list will;/整個(gè)鏈表student *p, *p1=new student(),*q;/臨時(shí)變量ifstream input;/輸入ofstream output;/輸出char file20,classname20,temp80,id20,name9,sex110;/臨時(shí)變量int m=0,n=0,j=0,i=0;/臨時(shí)變量double grade15;/臨時(shí)變量for(i=0;i20;i+) idi=0;for(i=0;i9;i+) namei=0;/初始化docou
33、t n 0、 退出系統(tǒng)n 1、 成績(jī)的錄入:包括學(xué)生學(xué)號(hào)、姓名、性別和各門課程成績(jī)的錄入n 2、 成績(jī)的查詢:可以根據(jù)學(xué)號(hào)或姓名查詢某個(gè)學(xué)生的成績(jī)n 3、 成績(jī)的修改:可以根據(jù)學(xué)號(hào)或姓名來修改相應(yīng)的學(xué)生的成績(jī)n 4、 數(shù)據(jù)的刪除:可以根據(jù)學(xué)號(hào)或姓名指定刪除某個(gè)學(xué)生的數(shù)據(jù)n 5、 成績(jī)的統(tǒng)計(jì)分析:包括總?cè)藬?shù)、最高成績(jī)、最低成績(jī)、平均成績(jī)、n 各個(gè)分?jǐn)?shù)段的人數(shù)(100-90、89-80、79-70、69-60、59-50、50以下)、及格率n 6、 總成績(jī)和平均成績(jī)的查詢:可以根據(jù)學(xué)號(hào)或姓名查詢n 7、 瀏覽所有學(xué)生信息n 8、 將所有學(xué)生信息保存成文件n 9、 打開指定的數(shù)據(jù)文件n 10、 按總
34、成績(jī)排序輸出學(xué)生信息n 11、 按學(xué)號(hào)順序輸出學(xué)生信息,并可保存成文件n n;coutendlm;switch(m)case 1:will.instu();break;case 2:cout1.根據(jù)學(xué)號(hào)查詢 2.根據(jù)姓名查詢endln;switch(n)case 1:coutid;will.outstu1(id);coutn;break;case 2:coutname;will.outstu(name);coutn;break;break;case 3:cout1.根據(jù)學(xué)號(hào)查詢 2.根據(jù)姓名查詢endln;switch(n)case 1:coutid;will.outstu1(id);cout
35、n;coutsetw(6)1.數(shù)學(xué)setw(6)2.英語setw(6)3.語文 endl;coutj;will.search1(id,j);break;case 2:coutname;will.outstu(name);coutn;coutsetw(6)1.數(shù)學(xué)setw(6)2.英語setw(6)3.語文 endl;coutj;will.search(name,j);break;break;case 4:cout1.根據(jù)學(xué)號(hào)刪除 2.根據(jù)姓名刪除endln;switch(n)case 1:coutid;will.outstu1(id);will.delstu1(id);break;case 2
36、:coutname;will.outstu(name);will.delstu(name);break;break;case 5:will.think();break;case 6:cout1.根據(jù)學(xué)號(hào)查詢 2.根據(jù)姓名查詢endln;switch(n)case 1:coutid;will.outsum1(id);break;case 2:coutname;will.outsum(name);break;break;case 7:coutsetw(8)學(xué)號(hào)setw(8)姓名setw(6)性別setw(6)數(shù)學(xué)setw(6)英語setw(6)語文setw(14)總成績(jī)setw(10)平均成績(jī)n;
37、will.scanall();break;case 8:cout請(qǐng)輸入文件名:file;cout請(qǐng)輸入班級(jí)名稱:classname;output.open(file);p = will.first;outputclassname成績(jī)單endlsetw(8)學(xué)號(hào)setw(8)姓名setw(6)性別setw(6)數(shù)學(xué)setw(6)英語setw(6)語文setw(14)總成績(jī)setw(10)平均成績(jī)next)outputsetw(8)outid()setw(8)outname()setw(6)outsex()setw(6)outgrade(0)setw(6)outgrade(1)setw(6)out
38、grade(2)setw(14)outsum()setw(10)outav()endl;output.close();break;case 9:cout請(qǐng)輸入文件名:file;input.open(file);if (input.fail()coutFile does not existendl;break;input.getline(temp,80);input.getline(temp,80);if(input.eof() cout文件中無數(shù)據(jù)!idnamesex1grade10grade11grade12;inputtemp;inputtemp;/將總成績(jī)和平均成績(jī)輸入進(jìn)臨時(shí)變量p1-s
39、etid(id);p1-setname(name);p1-setsex(sex1);p1-setgrade(grade1);will.first=p1;will.last=will.first;while(!input.eof()p=new student();q=will.last; will.last-next=p;will.last=p;inputidnamesex1grade10grade11grade12;will.last-setid(id);will.last-setname(name);will.last-setsex(sex1);will.last-setgrade(grad
40、e1);inputtemp;inputtemp;/將總成績(jī)和平均成績(jī)輸入進(jìn)臨時(shí)變量will.last=q;will.last-next=NULL;input.close();break;case 10:p=will.first;for(i=0;inext)for (j=0;jidj;for (j=0;jnamej;for (j=0;jsexj;stui.sumsum=p-outsum();stui.average=p-outav();for(n=0;ni-1;n+)for(j=1;ji;j+)if (stun.sumsumstuj.sumsum)stutemp=stuj;stuj=stun;stun=stutemp;coutsetw(8)學(xué)號(hào)setw(8)姓名setw(6)性別setw(8)總成績(jī)setw(10)平均成績(jī)n;for (j=0;ji;j+)coutsetw(8)stuj.idsetw(8)setw(6)stuj.sexsetw(8)stuj.sumsumsetw(10)stuj.averageendl;break;case 11:p=will.first;for(i=0;inext)for (j=0;jidj;for (j=0;jnamej;for (j=0;jsexj;stui.sumsum=p-outsum
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45546-2025骨類調(diào)味料質(zhì)量通則
- 2025年市場(chǎng)營(yíng)銷師職業(yè)技能資格知識(shí)考試題與答案
- 抗菌藥物處方管理
- 城市交通規(guī)劃合同變更咨詢重點(diǎn)基礎(chǔ)知識(shí)點(diǎn)
- 培訓(xùn)中心建設(shè)方案
- 電器用電安全培訓(xùn)
- 《績(jī)效管理研究》課件
- 過節(jié)福利采購(gòu)合同協(xié)議
- 道具超市采購(gòu)合同協(xié)議
- 車貼廣告模板合同協(xié)議
- 2025年重慶西南大學(xué)附中高考數(shù)學(xué)模擬試卷試題(含答案詳解)
- 2025四川巴中市國(guó)有資本運(yùn)營(yíng)集團(tuán)有限公司招聘17人筆試參考題庫附帶答案詳解
- 2025神農(nóng)科技集團(tuán)有限公司第一批校園招聘17人(山西)筆試參考題庫附帶答案詳解
- 南充2025年南充市公安局第一次招聘27名交通輔警筆試歷年參考題庫附帶答案詳解
- 收購(gòu)芒果協(xié)議書模板
- 農(nóng)業(yè)科技與裝備應(yīng)用知識(shí)考點(diǎn)
- 雙語客運(yùn)值班員紅十字藥箱課件
- 黑龍江省地方標(biāo)準(zhǔn)黑龍江省建設(shè)工程施工操作技術(shù)規(guī)程市政橋梁工程
- 前廳服務(wù)與管理課件 處理客人投訴
- 幼兒園注意飲食衛(wèi)生教育
- 科舉制度的演變及認(rèn)識(shí) 論文
評(píng)論
0/150
提交評(píng)論