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