![學(xué)生成績(jī)管理系統(tǒng)_第1頁](http://file4.renrendoc.com/view/9bd989743df75dd4f7e49abcedbbda48/9bd989743df75dd4f7e49abcedbbda481.gif)
![學(xué)生成績(jī)管理系統(tǒng)_第2頁](http://file4.renrendoc.com/view/9bd989743df75dd4f7e49abcedbbda48/9bd989743df75dd4f7e49abcedbbda482.gif)
![學(xué)生成績(jī)管理系統(tǒng)_第3頁](http://file4.renrendoc.com/view/9bd989743df75dd4f7e49abcedbbda48/9bd989743df75dd4f7e49abcedbbda483.gif)
![學(xué)生成績(jī)管理系統(tǒng)_第4頁](http://file4.renrendoc.com/view/9bd989743df75dd4f7e49abcedbbda48/9bd989743df75dd4f7e49abcedbbda484.gif)
![學(xué)生成績(jī)管理系統(tǒng)_第5頁](http://file4.renrendoc.com/view/9bd989743df75dd4f7e49abcedbbda48/9bd989743df75dd4f7e49abcedbbda485.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
蕪湖職業(yè)技術(shù)學(xué)院信息工程系課程設(shè)計(jì)班級(jí)學(xué)號(hào)100408224 姓名許克龍 成績(jī) 課程名稱G4面對(duì)對(duì)象程序設(shè)計(jì)設(shè)計(jì)題目學(xué)生成績(jī)管理系統(tǒng) 指導(dǎo)教師唐賢傳 完成日期2011年6月24日目錄TOC\o"1-5"\h\z\o"CurrentDocument"ー、引言 3\o"CurrentDocument"二、程序設(shè)計(jì)要求 4\o"CurrentDocument"三、需求分析 51、學(xué)生信息錄入功能 5\o"CurrentDocument"2、文件保存功能 53.文件打開功能 54、查詢功能 55,排序功能 56報(bào)表是相互出功能 5\o"CurrentDocument"四、設(shè)計(jì)思路 6\o"CurrentDocument"1、學(xué)生信息輸入模塊 62、文件保存功能模塊 6\o"CurrentDocument"3、文件排序功能模塊 64、文件查詢功能模塊 6\o"CurrentDocument"六、局部概念設(shè)計(jì) 7\o"CurrentDocument"1,student類 7\o"CurrentDocument"2、school類 8\o"CurrentDocument"3,密碼修改流 9\o"CurrentDocument"六、總體設(shè)計(jì) 101、學(xué)生信息輸入模塊設(shè)計(jì) 102、文件保存模塊設(shè)計(jì) 103、文件排序模塊設(shè)計(jì) 104、文件查詢模塊設(shè)計(jì) 105,報(bào)表輸出模塊設(shè)計(jì) 106、全局流程圖 11\o"CurrentDocument"七、調(diào)試分析 12ハ、測(cè)試分析 13\o"CurrentDocument"九、課程設(shè)計(jì)總結(jié) 22\o"CurrentDocument"十、附錄 23ー、引言該程序是用C++語言在VisualC++下編寫的。編譯后生成一,個(gè)可執(zhí)行的程序,該程序是學(xué)生成績(jī)管理系統(tǒng)。面臨的信息很多,但是如何從大量的信息中篩選出所需的信息,有用的信息,オ是解決問題的關(guān)鍵,另外一個(gè)就是解決問題的方法,就像我在解決設(shè)計(jì)中的很多問題?樣,ー開始總是在看書,和書上的進(jìn)行比對(duì),雖然書本上的只是大部分都是有價(jià)值,正確的,但實(shí)際上每個(gè)人編程的思路和對(duì)數(shù)據(jù)處理的方法、思想都是不同的,所以要求我們一定要通過實(shí)踐才能找到解決問題的方案。二、程序設(shè)計(jì)的要求.了解并掌握面向?qū)ο蟪绦蛟O(shè)計(jì)方法,具備初步的獨(dú)立分析和設(shè)計(jì)能力。.初步掌握軟件開發(fā)過程的問題分析,系統(tǒng)設(shè)計(jì),程序編碼,測(cè)試等基本方法和技能。.提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法,獨(dú)立分析和解決問題的能力。.訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開發(fā)一般規(guī)范進(jìn)行軟件開發(fā),培養(yǎng)軟件工作者所具備的科學(xué)的工作方法和作風(fēng)。.設(shè)計(jì)的題目要求達(dá)到ー定工作量(300行以上代碼),并具有一定的深度和難度。.編寫出課程設(shè)計(jì)說明書。.學(xué)生必須仔細(xì)閱讀《C++程序設(shè)計(jì)教程》課程設(shè)計(jì)方案,認(rèn)真主動(dòng)完成課程設(shè)計(jì)的要求。有問題及時(shí)主動(dòng)通過各種方式與教師聯(lián)系溝通。學(xué)生要發(fā)揮自主學(xué)習(xí)的能力,充分利用時(shí)間,安排好課程設(shè)計(jì)的時(shí)間計(jì)劃,并在課程設(shè)計(jì)過程中不斷檢測(cè)自己的計(jì)劃完成情況。.課程設(shè)計(jì)前期安排學(xué)習(xí)C++編程和面向?qū)ο蟮能浖こ痰挠嘘P(guān)知識(shí),以自學(xué)和上機(jī)實(shí)驗(yàn)為主。三、需求分析:用數(shù)組或鏈表數(shù)據(jù)結(jié)構(gòu)完成一個(gè)學(xué)生成績(jī)管理系統(tǒng),此系統(tǒng)的具體功能要求如下:(1)學(xué)生信息錄入功能1)用戶從鍵盤輸入每個(gè)學(xué)生的信息:學(xué)號(hào)、姓名、性別、數(shù)學(xué)、英語、政治、C++、物理和課程設(shè)計(jì)五門課成績(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)前打開的數(shù)據(jù)文件進(jìn)行編輯。(4)査詢功能1)瀏覽所有學(xué)生信息;2)按學(xué)號(hào)查詢學(xué)生信息;3)按姓名查詢學(xué)生信息;4)查詢ー?個(gè)班總成績(jī)和平均成績(jī);5)查詢ー個(gè)班某ー門課總成績(jī)和平均成績(jī);(5)排序功能1)按照學(xué)生學(xué)號(hào)進(jìn)行排序2)按照學(xué)生姓名進(jìn)行排序(6)報(bào)表輸出功能1)按總成績(jī)輸出從高到低輸出學(xué)號(hào)、姓名等信息。四、設(shè)計(jì)思路整體框架:整個(gè)學(xué)生成績(jī)管理系統(tǒng)采用鏈表作為基本數(shù)據(jù)結(jié)構(gòu),創(chuàng)建一個(gè)類student用于保存學(xué)生的數(shù)據(jù)且是鏈表中的ー個(gè)節(jié)點(diǎn),定義一個(gè)school類,用于進(jìn)行排序,刪除,修改,保存,查找等操作,提取學(xué)生信息。該程序外部函數(shù)采用switch語句來實(shí)現(xiàn)各個(gè)模塊,主函數(shù)則通過switch語句連接各個(gè)模塊,以實(shí)現(xiàn)用戶的需要。模塊基本介紹:.學(xué)生信息錄入模塊此模塊可以讓用戶從鍵盤輸入每個(gè)學(xué)生的信息:學(xué)號(hào)、姓名、性別以及數(shù)學(xué)、英語、C++、物理和課程設(shè)計(jì)成績(jī)。用戶可插入一個(gè)或多個(gè)學(xué)生信息到當(dāng)前編輯的班級(jí)數(shù)據(jù)中。用戶可刪除ー個(gè)或多個(gè)學(xué)生信息。.文件保存功能模塊當(dāng)輸入學(xué)生的信息后,可以隨時(shí)將學(xué)生的信息保存,無論學(xué)生人數(shù)的多少均可保存,包括修改,刪除等操作后的保存。3、文件排序模塊、在此模塊中根據(jù)學(xué)生的學(xué)號(hào)或者是姓名查詢學(xué)生的信息,其中主要査詢其成績(jī)以及個(gè)人資料,用于提取學(xué)生信息或者修改學(xué)生信息,采用學(xué)生學(xué)號(hào)或者總分排序。4、査詢功能模塊在此模塊里,用戶可實(shí)現(xiàn)以下操作:1.按學(xué)號(hào)查詢學(xué)生信息;2.按姓名查詢學(xué)生信息;其中主要査詢-個(gè)班中各科成績(jī)大于90分的學(xué)生信息和各科成績(jī)低于平均成績(jī)的學(xué)生信息。五、局部概念設(shè)計(jì)1、student類student-num:string-sx:float-cpp:ks-ave:floar-name:string -sex:string-yy:float -wkfloat-ks:float -num:float-fank:int+student()+set():void+set(ifstream&f)+set(student*p):void4-print():void+print(ofstream&f):voidstudent類及其成員的定義:classStudent(public:Student(){next=0;}voidSet();〃輸入學(xué)生信息voidSet(ifstream&f); 〃導(dǎo)入學(xué)生信息voidSet(Student*p); 〃拷貝學(xué)生信息voidPrint();〃輸出學(xué)生信息voidPrint(ofstream&f);〃保存學(xué)生信息friendclassSchool;private:stringnum;stringname;stringsex;〃學(xué)號(hào)〃姓名〃性別floatsx,yy,wl,cpp,ks;〃課程floatsum,ave;intrank;Student*next;〃總分、平均分〃名次〃鏈表指針};
2、schoo!類school-Student*p-*ps+Input():void+output(intx):void+load():void+save():void+Student*school::search()+find():void+edit():void+Delete():void+numsort():void+sumsort():void+output(char*):void+Jsys():void+jfyx():void+bjg():viod+setpass():voidSchloo!類及其成員的定義:classSchool(public:School(){ps=0;}"School();voidInput();〃批量輸入、增加學(xué)生信息voidOutput(intx);〃輸出全體學(xué)生信息voidLoad();〃載入學(xué)生信息voidSaveO;〃保存學(xué)生信息Student*School::Search。;〃搜索學(xué)生信息voidFindO;〃查找學(xué)生信息voidEdit();〃修改學(xué)生信息voidDelete();〃刪除學(xué)生信息voidNumsort();〃按照學(xué)號(hào)排序voidSumsort();〃按照總分排序voidOutputT(char*);〃輸出表格頭部voidOutputLO;〃輸出表格尾部voidJsys();//90分以上的voidJfyxO;〃平均分以下的voidBjg();〃不及格的學(xué)生voidSetpass();private:〃修改登錄密碼
Student*p,*ps;〃定義動(dòng)態(tài)指針和表頭指針Student*p,*ps;〃定義動(dòng)態(tài)指針和表頭指針};3、密碼修改流程圖:首先輸入原始密碼,但原始密碼輸入正確后再輸入新密碼,若不正確則再次輸入原始密碼。輸入新密碼后再輸入確認(rèn)密碼,兩次輸入的密碼相同時(shí)則修改成功,若不同則重新設(shè)置新密碼。六、總體設(shè)計(jì)主要功能模塊的算法設(shè)計(jì)思路:.學(xué)生信息錄入模塊設(shè)計(jì)通過應(yīng)用student類,來進(jìn)行姓名,性別,學(xué)號(hào)和成績(jī)的錄入功能。學(xué)生信息的修改、刪除、排序及查找功能都在schoo!類中實(shí)現(xiàn).文件保存功能模塊通過函數(shù)student::print(ofstream&f)對(duì)學(xué)生的信息進(jìn)行保存,當(dāng)輸入學(xué)生的信息后,返回到菜單中,有保存學(xué)生信息欄,選擇可以將學(xué)生的信息保存。3、文件排序模塊盛序模塊分為兩小塊,?塊是按照學(xué)號(hào)排序,令一塊是按照總分排序。兩者都是在有schoo!類的前提下進(jìn)行的。按照學(xué)號(hào)排序塊調(diào)用了school類中的numsort。函數(shù),采用判斷語句和雙重循環(huán)對(duì)學(xué)生信息排序。按照總分排序塊調(diào)用了school類中的sumsort。函數(shù),同學(xué)號(hào)排序塊,采用了判斷語句和雙重循環(huán)保存學(xué)生信息。.査詢功能模塊可以根據(jù)姓名或?qū)W號(hào)進(jìn)行查找,搜索方法和前幾個(gè)模塊相同。調(diào)用schoo!類中的find。函數(shù),查找90分以上,平均分以下的信息,或者按照其他的查詢方法查找學(xué)生信息。90分以上和平均分以下的學(xué)生信息查詢都采用了switch語句,分情況查找。.報(bào)表輸出功能模塊輸出塊分兩種大的情況,即有學(xué)生信息是的輸出和沒有學(xué)生信息時(shí)的輸出。有學(xué)生信息時(shí)的輸出調(diào)用student類的函數(shù)print,沒有學(xué)生信息時(shí)的輸出調(diào)用school類的函數(shù)output(intx),輸出結(jié)果無學(xué)生信息。
6.全局流程圖首先輸入密碼,密碼輸入正確后進(jìn)入系統(tǒng),否則不能進(jìn)入并重新輸入密碼。進(jìn)入系統(tǒng)后進(jìn)行相關(guān)的操作,最后輸出學(xué)生的信息。七、調(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ì)已存在的文件讀取問題,通過“顯示全部學(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、主界面c、"C:\DocufnentsandSettings\Administrator\Debug\Cppl.exe" 學(xué)生成績(jī)管理系統(tǒng)
?輸入學(xué)生信息《學(xué)號(hào)排序輸出査詢學(xué)生信息 總分排序輸出修改學(xué)生信息 90分以上的和賒學(xué)生信息 平均分以下的保存學(xué)生信息 不及格的學(xué)生修改登錄密碼 退出管理系統(tǒng)2?錄入記錄??????輸入學(xué)生信息くくくくくくくくくくくく1xkn績(jī)績(jī) 成成成成成號(hào)名皐語理??設(shè)學(xué)姓性數(shù)霽C課入入入入入入入入常稀稀常情,粕福帝[任意鍵】ー繼續(xù)添加 【ESC】ー返回上層3?查詢記錄按學(xué)號(hào)查找:按姓名查找:4,刪除記錄訳"G\DocumentsandSettings\Administrator\Debug\Cppl.exe'刪除學(xué)生信息成功ILi訳?C:\DocumentsandSettingsXAdministratorXDebugXCppl.exe*'5,排序記錄6,90分以上
10、不及格11.修改密碼九、課程設(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)通過不了,再來檢查找出問題,這是?件非常辛苦的事情,也很浪費(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í)。十、附錄源代碼:/*=====================文件名:student,cpp描述:學(xué)生成績(jī)管理系統(tǒng)初始密碼:060505217主菜單:主菜單:r一=ー一學(xué)生成績(jī)管理系統(tǒng)II?輸入學(xué)生信息?查詢學(xué)生信息修改學(xué)生信息刪除學(xué)生信息保存學(xué)生信息修改登錄密碼學(xué)號(hào)排序輸出總分排序輸出90分以上的
平均分以下的
不及格的學(xué)生
退出管理系統(tǒng)II JI使用說明:小鍵盤區(qū):[1]ー左[2]—下[3]ー右[5]—上回車鍵一確認(rèn)空格鍵一右 [ESC]ー返回====================================================*/#include<iostream>#include<iomanip.h> 〃設(shè)置字寬#include<fstream.h> 〃文件存取#include<stdlib.h> 〃調(diào)用DOS命令#include<conio.h>〃按鍵檢測(cè)#include<string.h> 〃字符串處理typedefcharstring[80];〃定義字符串類型stringpassword;//?定義學(xué)生類
//?classStudentpublic:Student(){next=O;}voidSeto; 〃輸入學(xué)生信息voidSet(ifstream&f); 〃導(dǎo)入學(xué)生信息voidSet(Student*p); 〃拷貝學(xué)生信息voidPrint(); 〃輸出學(xué)生信息voidPrint(ofstream&f);〃保存學(xué)生信息friendclassSchool;private:stringnum; 〃學(xué)號(hào)stringname:〃姓名stringsex; 〃性別floatsx,yy,wl,cpp,ks;〃課程floatsum,ave; 〃總分、平均分intrank; 〃名次Student*next; 〃鏈表指針};〃輸入學(xué)生信息voidStudent::Set()cin>>num;cin>>namecin>>num;cin>>name;cin?sex;cin?sx;cin?yy;cin>>wl;cin?cpp;cin>>ks;coutくく“'t\t請(qǐng)輸入學(xué)號(hào):“;cout?"\t\t請(qǐng)輸入姓名:";coutくく"'t\t請(qǐng)輸入性別:";coutくく"'t't請(qǐng)輸入數(shù)學(xué)成績(jī)cout?"\t\t請(qǐng)輸入英語成績(jī)cout?"\t\t請(qǐng)輸入物理成績(jī)cout?"\t\t請(qǐng)輸入C++成績(jī)coutくく"'t't請(qǐng)輸入課設(shè)成績(jī)sum=sx+yy+wl+cpp+ks;ave=sum/5;〃導(dǎo)入學(xué)生信息voidStudent::Set(ifstream&f)f>>num?name>>sex;f?sx>>yy?wl?cpp>>ks;f?sum>>ave>>rank;}〃拷貝學(xué)生信息voidStudent::Set(Student*p){strcpy(num,p->num);strcpy(name,p->name);strcpy(sex,p->sex);sx=p->sx;yy=p->yy;wl=p->wl;cpp=p->cpp;ks=p->ks;sum=p->sum;ave=p->ave;rank=p->rank;}〃輸出學(xué)生信息voidStudent::Print()(coutくく"I"くくsetw(15)くくnumくくsetw(10)くくnameくくsetw(5)くくsexくく”;cout?setw(5)?sx?setw(5)?yy?setw(5)?wl?setw(5)?cpp<<setw(5)?ks?":";cout?setw(6)?sum?setw(5)?ave<<setw(4)?rank?"|"?endl;}〃保存學(xué)生信息voidStudent::Print(ofstream&f)(f?endl<<setw(15)<<num<<setw(10)?name?setw(5)?sex;f?setw(5)?sx?setw(5)<<yy<<setw(5)?wl?setw(5)<<cpp<<setw(5)<<
ks;f?setw(6)?sum<<setw(5)?ave?setw(4)?rank;// 定義學(xué)校類 classSchoolpublic:School(){ps=0;}"School();voidInput()i 〃批量輸入、增加學(xué)生信息voidOutput(intx); 〃輸岀全體學(xué)生信息voidLoad(); 〃載入學(xué)生信息voidSaveOi 〃保存學(xué)生信息Student*School::Search()i〃搜索學(xué)生信息voidFind();voidFind();voidEdit();voidDelete();voidNumsort();voidSumsort();〃查找學(xué)生信息〃修改學(xué)生信息〃刪除學(xué)生信息〃按照學(xué)號(hào)排序〃按照總分排序voidOutputLOvoidOutputLO;voidJsys();voidJfyx();voidBjg();voidSetpass();private:Student*p,*ps;);voidOutputT(char*);〃輸出表格頭部〃輸出表格尾部//90分以上的〃平均分以下的〃不及格的學(xué)生〃修改登錄密碼〃定義動(dòng)態(tài)指針和表頭指針School:qSchool()(p=ps;while(p!=0)ps=p->next;deletep;P=PS;//批量輸入、增加學(xué)生信息voidSchool::Input()do{system("cls");cout?endl<<endl<<endl?endl;cout?"\t\t??????輸入學(xué)生信息くくくくくくくくくくくく“くくendlくくendl;if(ps=0){ps=newStudent;ps->Set();)else(p=ps;while(p->next!=0)p=p->next;p->next=newStudent;p->next->Set();)cout?endl?"\t\t[任意鍵]—繼續(xù)添加[ESC]ー返回上層"?endl;}while(getchO!=27);Sumsort();}〃輸出表格頭部voidSchool::0utputT(char*title)(system("cls");cout?endl;cout?"0 "?title?";—II?endl;COUt?*I 1 [くくend];coutくく〃!學(xué)號(hào) 姓名性別[數(shù)學(xué)英語物理C++課設(shè);總分均分名次I〃くくendl;)〃輸出表格尾部voidSchool::OutputL(){COUt?*I I J,/?endl;)〃輸出全體學(xué)生信息voidSchool::Output(intx)(if(ps=0){system("cls");cout?endl?endl?endl?endl;COUtくく〃、l\lII I"くくendl;TOC\o"1-5"\h\zcoutくく"、t\tI I"くくendl;cout?"\t\t! 無學(xué)生信息記錄! I"?endl;cout?"\t\tI I"?endl;cout?"\t\tu 1"?endl;coutくくendlくくendlくくendlくくendl;}else{system("cls");cout<<endl;stringtitle[2]={"按照學(xué)號(hào)排序輸出〃,"按照總分排序輸出“};OutputT(title[x]);for(p=ps;p!=0;p=p->next)p->Print();OutputLO;)getchO;}〃載入學(xué)生信息voidSchool::Load()(ifstreaminfile("student,dai);infile?password;if(strcmp(password,"")==0)〃判斷文件是否為空|infile,close();ofstreamoutfile(^student,dat");outfile?"060505217";outfile.close();infile,open("student.dat");infile?password;)while(!infile,eof())(p=ps=newStudent;p->Set(infile);while(!infile,eof()){p=p-〉next二newStudent;p->Set(infile);}}infile,close();}〃保存學(xué)生信息voidSchool::Save(){ofstreamoutfile("student,dat");outfile<<password;
for(p=ps;p!=0;p=p->next)p->Print(outfile);outfile.close();system(^cls^);cout<<endl<<endl<<endl<<endl;cout?*\t\tr "くくendl;COUt?"\t\tI"?endl;cout?"\t\t! 學(xué)生信息保存成功!"?endl;cout?"\t\tI"?endl;COUt?"\t\t ::==::_::!::=::_::_="?endl;cout<<endl<<endl<<endl<<endl;getchO;)〃搜索學(xué)生信息Student*School::Search()(intm=0;string1[2];while(l)(strcpy(l[m],"f");strcpy(1[(m+l)%2]," ");system(z,cls");coutくくendlくくendlくくendlくくendl;cout?"\t\t]"?endl;cout<<"\t\tI"?endl;cout?"\t\tII "?1[0"く"按照學(xué)號(hào)查詢"?endl;cout<<"\t\tI"?endl;cout<<"\t\tIcout<<"\t\tI〃くく1ロ"く”按照姓名查詢?endl;cout?*\t\tI I*?endl;cout?*\t\tu 1*?endl;cout<<endl<<endl<<endl?endl;switch(getchO){case'I,:case'2':case'3,:case'5’:case32:m==0?m=1:m=0;break;case'\r:switch(m)(case0:stringnum;cout?endl?*\t\t請(qǐng)輸入學(xué)號(hào):‘;cin>>num;for(p=ps;p!=0;p=p-〉next)if(strcmp(num,p->num)=0)returnp;break;case1:stringname;cout?endl?"\t\t請(qǐng)輸入姓名:";cin>>name;for(p=ps;p!=0;p=p->next)if(strcmp(name,p->name)==0)returnp;break;}system("cls);coutくくendlくくendlくくendlくくendl;cout<<*\t\tn -1<<endl;coutくく“、t\t II"?endl;cout?"\t\t! 無該學(xué)生信息!I"?endl;cout?"\t\t IIz/?endl;cout?*\t\tu :—M"くくendl;cout<<endl?endl?endl<<endl;getchO;returnp;}))〃查找學(xué)生信息voidSchool::Find(){p=Search();if(p==0)return;system("cls");TOC\o"1-5"\h\zcout?endl<<endl?endl<<endl;cout?z/\t\tI 查詢結(jié)果 1"?endl;cout?"\t\tI I"?endl;cout?zz\t\tI學(xué)號(hào):"くくsetw(28)くくpー)numくく"I"くくendl;cout?*\t\tI I"?endl;coutくく"、t\tI姓名:"くくsetw(11)くくpー〉nameくく“性別:zz<<setw(9)<<p->sex<<"||"<<endl;cout?"\t\tI ITOC\o"1-5"\h\z"?endl;cout?"\t\tI 數(shù)學(xué):“くくsetw(ll)くくpー〉sxくく"英 語:zz?setw(9X<p->yy?zz||zz?endl;cout?"\t\tI I"?endl;cout?"\t\t! 物理:"くくsetw(ll)くくpー〉wlくく"C++:"?setw(9X<p->cpp?"I"<<endl;cout?"\t\tI I"?endl;cout<<"\t\tI 課設(shè):"くくsetw(ll)くくpー〉ksくく"總 分:"<<setw(9)?p->sum<<"||"<<endl;TOC\o"1-5"\h\zCOUt?*\t\tI I"くくendl;cout?"\t\t!均分:“くくsetw(ll)くくp->aveくく"名 次:"<<setw(9)<<p->rank<<z,||z/<<endl;cout?"\t\tI I"?endl;COUt?"\t\tL:—!= :_-::_=*"?endl;cout<<endl<<endl<<endl<<endl?endl;getchO;)〃修改學(xué)生信息voidSchool::Edit()(p=Search();if(p==0)return;intm=0;string1[12];while(l)(for(inti=0;i<12;i++)strcpy(1[i],"");strcpy(l[m],");systemCcls");cout<<endl<<endl<<endl<<endl;TOC\o"1-5"\h\zcout?"\t\tn 修改學(xué)生信息 1"?endl;cout?"\t\tI I"?endl;cout?"\t\tI "くく1[〇]くく"學(xué)號(hào):"?setw(28)?p->num?"I"?endl;cout<<"\t\tI I"?endl;cout?"\t\tI "?1[2]?"姓名:"?setw(8)?p->name<<l[3]<<"性別:"くくsetw(9)くくpー》sexくく"|"?endl;cout<<"\t\tI I"?endl;
cout?*\t\t,zcout?*\t\t,z<<setw(8)<<p->sx?l[5]くく"英語:cout?"\t\tI"?endl;COUt?"\t\tI"?setw(8)?p->wl?l[7]?"C++:COUt<<"\t\tI"?endl;cout?"\t\tI"?setw(8)<<p->ks?l[9]くく”總分:cout?"\t\tI"?endl;"?1[4]?"數(shù)學(xué):"?setw(9X<p->yy?"|"?endl;I"くく1[6]くく"物理:"?setw(9X<p->cpp?^|"?endl;II"くく1[8]くく”課設(shè):"?setw(9)?p->sum?,z|"<<endl;cout?"\t\tI "?l[10]?"均分:“くくsetw(8Xくp一)aveくく1[11]くく"返回 |"くくendl;cout<<"\t\tI"?endl;cout?"\t\tL "?endl;cout?endK<endl?endl;switch(getchO)(case1T:m一;if(m==-l)m=ll;if(m==l)m一;break;case'2':m+=2;if(m==12)m=l;if(m==13)m=O;if(m=l)m+=2;break;case'3’:case32:m++;if(m==12)m=0;if(m==l)m++;breakJ〃空格鍵等同于右方向鍵case'5':m-=2;if(m==-2)m=ll;if(m==-l)m=10;if(m==l)m+=9;break;case27:Sumsort();return;〃按[ESC]鍵返回case'\r':switch(m)(case0:cout<<*\t\t請(qǐng)輸入新學(xué)號(hào):";cin>>p->num;break;cout?"\t\t請(qǐng)輸入新姓名:";cin>>p->name;break;
case3:coutくく"、t\t請(qǐng)輸入新性別:cin?p->sex;break;case4:coutくく“、t\t請(qǐng)輸入新數(shù)學(xué)成績(jī):";cin?p->sx;break;case5:cout?"\t\t請(qǐng)輸入新英語成績(jī):〃;cin?p->yy;break;case6:coutくく“、t、t請(qǐng)輸入新物理成績(jī):";cin?p->wl;break;case7:cout?"\t\t請(qǐng)輸入新C++成績(jī):";cin?p->cpp;break;case8:coutくく“、t、t請(qǐng)輸入新課設(shè)成績(jī):";cin?p->ks;break;break;Sumsort();return;)pー〉sum=p-〉sx+pー〉yy+pー〉wl+pー〉cpp+p-〉ks;〉sum/5;〃刪除學(xué)生信息voidSchool::Delete0(p=Search();if(p==0)return;if(p!=ps)(Student*pt=ps;while(pt->next!=p)pt=pt->next;pt->next=p->next;)elseps二ps->next;deletep;system("cls");cout?endl<<endl?endl<<endl;TOC\o"1-5"\h\zcout?z/,\t\t廠 -I*?endl;COUt?*\t\tI I*?endl;cout<C\t\tI 刪除學(xué)生信息成功! |*?endl;COUt?*\t\tI I“くくendl;cout?"\t\tu~;i~-:—:~~;:=;i~;:=;:=~:~;=~;i~;—:~—;=~;:~"?endl;cout?endl?endl?endl<<endl;Sumsort();getchO;)〃按照學(xué)號(hào)排序voidSchool::Numsort0(if(ps==0)return;Student*pi,*pj,*pt=newStudent;for(pi=ps;pi->next!=0;pi=piつnext)for(pj=pi->next;pj!=0;pj=pj->next)if(strcmp(pi->num,pj->num)>0)(pt->Set(pi);pi->Set(pj);pj->Set(pt);}deletept;}〃按照總分排序voidSchool::Sumsort()(if(ps==0)return;inti=l;Student*pi,*pj,*pt=newStudent;for(pi=ps;pi->next!=0;pi-〉rank=i++,pi=pi->next)for(pj=pi->next;pj!=0;pj=pj->next)if(pi->sum<pj->sum)(pt->Set(pi);pi->Set(pj);pj->Set(pt);}deletept;pi-〉rank二i;for(pi=ps;pi->next!=0;pi=piー〉next)if(pi->sum==piー〉nextー〉sum)piー〉next-〉rank二pi-〉rank; 〃修正總分相同時(shí)的排名}//90分以上的voidSchool::Jsys()(intm=0;string1[6];while(l)(for(inti=0;i<6;i++)strcpy(l[i],* ");strcpy(1[m],,zfつ;system(z,cis);cout<<endl<<endl<<endl?endl;COUt<<ZZ\t\tII 統(tǒng)計(jì)學(xué)生信息—"くくendl;coutくく"'t\tI"?endl;cout?"\t\tI"くく1[0]くく"數(shù)學(xué)90分以上的"?endl;COUt<<"\t\tI"?endl;cout?"\t\tI"くく1[1]くく"英語90分以上的"?endl;cout<<"\t\tI"?endl;cout?*\t\t| "くく1[2"ぐ物理90分以上的"?endlCOUt?"\t\t1*?endlcout?"\t\t1"くく1[3]くぐC++90分以上的*?endlCOUt<<"\t\t1"?endlcout?"\t\t1 "?1[4]〈ぐ課設(shè)90分以上的"?endlCOUt?"\t\t1"?endlcout?"\t\t1 "くく:![5"く"返回至主菜單"?endlCOUt?"\t\t1"?endlCOUt?"\t\tL "くくendl;cout<<endl<<endl<<endl?endl?endl;switch(getchO){case1T:m一;if(m==-l)m=5;break;case'2':m++;if(m==6)m=0;break;case'3':case32:m++;if(m==6)m=0;break; 〃空格鍵等同于右方向鍵case'5':m—;if(m==-l)m=5;break;case27:return;〃按[ESC]鍵返回case'\r':switch(m)(caseO:OutputT("數(shù)學(xué)90分以上的");for(p=ps;p!=0;p=p->next) if(p->sx >= 90)p->Print();break;casel:OutputT("英語9〇分以上的");for(p=ps;p!=0;p=p->next) if(p->yy >= 90)p->Print();break;case2:0utputT("物理90分以上的");for(p=ps;p!=0;p=for(p=ps;p!=0;p=p->next)if(p->wl>= 90)p->Print0;break;case3:0utputT("C++9〇分以上的");for(p=ps;p!=0;p=p->next) if(p->cpp>= 90)p->Print();break;case4:0utputT("課設(shè)9〇分以上的");for(p=ps;for(p=ps;p!=0;p=p->next)if(p->ks >= 90)p->Print();break;case5:return;)OutputLO;getchO;〃平均分以下的voidSchool::Jfyx()(floats(0),y(0),w(0),c(0),k(0);intn=0;for(p=ps;p!=0;p=p->next,n++)s+=p->sx,y+=p->yy,w+=p->wl,c+=p->cpp,k+=p->ks;if(n!=0)s/=n,y/=n,w/=n,c/=n,k/=n;intm=0;string1[6];while(l){for(inti二〇;iく6;i++)strcpy(l[i]," ");strcpy(l[m]," —");system("cis");coutくくendlくくendlくくendlくくendl;
coutくぐ、t\tk 統(tǒng)計(jì)學(xué)生信息"くくendlCOUt?"\t\t11*?endlCOUt<<"\t\t1"くく1[0"ぐ數(shù)學(xué)平均分以下的 1*?endlCOUt<<"\t\t11"?endlCOUt?"\t\t1"くく1□"ぐ英語平均分以下的 1"?endlCOUt?"\t\t1!"?endlCOUt?"\t\t1"くく:![2"く"物理平均分以下的 |"?endlCOUt<<"\t\t11"?endlCOUt<<"\t\t1"〈く1[3]くく"C++平均分以下的 |"?endlCOUt?"\t\t11*?endlCOUt<<"\t\t1"?1[4]くく"課設(shè)平均分以下的 |*?endlCOUt<<"\t\t11"<<endlCOUt<<"\t\t1[5"く"返回至主菜單 |"?endlCOUt<<"\t\t11"?endlCOUIXX\I\L*?endlcout<<endl<<endl<<endl<<endl<<endl;switch(getchO)case'I1:m--;if(mニニT)m=5;break;case*2>:m++;it(mニニ6)m=0;break;case’3,:case32:m++;if(mニニ6)m=0;break; 〃空格鍵等同于右方向case'5':m--;if(m==-l)m=5;break;case27:return;〃按[ESC]鍵返回case'\r:stringtl,t2;switch(m)(caseO:OutputT(strcat(strcat(strcpy(tl,”數(shù)學(xué)平均分3,gcvt(s,4,t2))/分以下"));for(p=ps;p!=0;p=p->next)if(p->sx<s)pー〉Print();break;OutputT(strcat(strcat(strcpy(tl,“英語平均分*),gcvt(y,4,t2))/分以下"));for(p=ps;p!=0;p=p->next)if(p->yy<y)p->Print();break;OutputT(strcat(strcat(strcpy(tl,“物理平均分"),gcvt(w,4,t2)),"分以下"));for(p=ps;p!=0;p=p->next)if(p->wl<w)p->Print();break;OutputT(strcat(strcat(strcpy(tl,"C++平均分9,gcvt(c,4,t2)),"分以下"));for(p=ps;p!=0;p=p->next)if(p->cpp<c)p->Print();break;OutputT(strcat(strcat(strcpy(tl,“課設(shè)平均分"),gcvt(k,4,t2))/分以下"));for(p=ps;p!=0;p=p->next)if(p->ks<k)p->Print();break;return;)OutputLO;getch();〃不及格的學(xué)生voidSchool::Bjg()intm=0;
string1[6];while(l)for(inti=0;i<6;i++)strcpy(1[i]," ");strcpy(1[m],“systemC'cis");cout<<endl?endl<<endl?endl;緯卄券小り自 ーCOUIX\.\L\l||りし!T十王思 1"?endlCOUt<<"\t\t11"くくendlCOUt<<"\t\t1[〇"〈"數(shù)學(xué)不及格的學(xué)生 1"?endlCOUt?"\t\t1i"?endlCOUt?"\t\t1〈"英語不及格的學(xué)生 1"?endlCOUt?"\t\t11"?endlCOUt?"\t\t1"〈く1[2]く〈”物理不及格的學(xué)生 |"?endlCOUt<<*\t\t11"?endlCOUt?"\t\t1"〈〈1[3]〈〈"C++不及格的學(xué)生 |"?endlCOUt?"\t\t11"?endlCOUt?"\t\t1"〈〈1[4]〈〈"課設(shè)不及格的學(xué)生 |"?endlCOUt?"\t\t11"?endlCOUt<<*\t\t1"〈〈1[5]〈〈"返回至主菜單 |"?endlCOUt?"\t\t11"?endlIICOLlLXX\L\L"?endlcout<<endl?endl<<endl?endl?endl;switch(getchO){case'T:m--;if(m==-l)m=5;break;case'2':m++;if(m-6)m=0;break;casej':case32:m++;if(m=6)m=0;break; 〃空格鍵等同于右方向鍵case'5':m--;if(m=-l)m=5;break;case27:returnJ〃按[ESC]鍵返回case'\r':switch(m)(case0:OutputT("數(shù)學(xué)不及格的學(xué)生〃);for(p=ps;p!=0;p=p->next)if(p->sx<60)p->Print();break;caseLOutputT("英語不及格的學(xué)生〃);for(p=ps;p!=0;p=p->next)if(p->yy<60)p->Print();break;case2:OutputT(〃物理不及格的學(xué)生〃);for(p=ps;p!=0;p=p->next)if(p->wl<60)p->Print();break;case3:0utputT(〃C++不及格的學(xué)生〃);for(p=ps;p!=0;p=p->next) if(p->cppく60)p->Print();break;case4:0utputT(〃課設(shè)不及格的學(xué)生〃);for(p=ps;p!=0;p=p->next)if(p->ks<60)pー〉Print。;break;case5:return;)OutputL。:getchO;)〃修改登錄密碼voidSchool::Setpass()system(//color4b");stringt,st="";while(l){for(inti=0;i<16;i++){system("cls");cout?endl<<endl<<endl?endl;coutくく“、t\tr~===~=~===?修改登錄密碼====~:"?endl;COUt?"\t\tI"?endl;COUt?"\t\tI"?endl;cout?"\t\tI 請(qǐng)輸入原密碼:"?setw(18X<st?""?endl;cout?"\t\tI"?endl;cout?**\t\tu "?endl;cout<<endl<<endl<<endl?endl;chark=getch();if(k=='\r')break;t[i]=k;st[i]='*';t[i+l]=st[i+l]=0;}if(strcmp(password,t)==0)break;system(〃cls);cout<<endl<<endl<<endl<<endl;coulくく〃、l\tp 修改登錄密碼 "?endl;cout?"\t\tI"?endl;cout?"\t\tI"?endl;cout?*\t\t[ 密碼錯(cuò)誤!請(qǐng)重新輸入!?endl;cout?*\t\tI?endl;cout?*\t\tu ?endl;cout<<,\a*<<endl<<endl?endl<<endl;strcpy(st,;getchO;)strcpy(st,);stringt1;while(l){for(inti=0;i<16;i++)(system(^cls,z);cout<<endl<<endl<<endl<<endl;COUt?*\t\t[j 修改登錄密碼 ?endl;coutくく"、t\tI"?endl;COUt<<"\t\tI,z?endl;cout<<"\t\t!請(qǐng)輸入新密碼:"<<setw(18)?st<<""?endl;COUt<<"\t\tI"?endl;COUt<<"\t\tN"?endl;cout<<endl<<endl<<endl<<endl;chark=getchO;if(k==,\r')break;t[i]=k;st[i]=,*,;t[i+l]=st[i+l]=0;strcpy(st,"");for(i=0;i<16;i++)system(z/cls,z);cout<<endl<<endl<<endl?endl;COUt?*\t\t[j 修改登錄密碼 "くくendl;COUt<<"\t\tI"?endl;cout?"\t\tI"?endl;cout?"\t\tI 請(qǐng)確認(rèn)新密碼:"<<setw(18)?st?""?endl;COUt?"\t\tI"?endl;cout<<"\t\tu— "?endl;cout<<endl<<endl?endl<<endl;chark=getch();if(kニニ'\r')break;tl[i]=k;st[i]='*';tl[i+l]=st[i+l]=O;}if(strcmp(tl,t)==0){strcpy(password,t);system(zzcls");cout<<endl<<endl<<endl<<endl;cout?"\t\tn 修改登錄密碼 "?endl;cout<<"\t\tI"?endl;cout?"\t\tI"?endl;cout?"\t\t! 密碼修改成功!"?endl;cout<<"\t\tI?endl;cout?*\t\tu *?endl;cout<<endl<<endl<<endl<<endl;getchO;break;)else{system("cls");cout?endl<<endl<<endl<<endl;cout?*\t\t卜 ?修改登錄密碼—”くくendl;COUt?*\t\tI*?endl;COUt?*\t\tI"くくendl;cout?"\t\t!兩次輸入不一致!請(qǐng)重新輸入!"?endl;cout?"\t\tI"?endl;cout<<*\t\t11"?endl;coutくく‘、a'くくendlくくendlくくendlくくendl;strcpy(st,);getchO;}}system("col
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度學(xué)生保險(xiǎn)居間業(yè)務(wù)合同
- 教育培訓(xùn)行業(yè)經(jīng)驗(yàn)分享指南
- 汽車汽車租賃合同
- 三農(nóng)村電商物流作業(yè)指導(dǎo)書
- 轉(zhuǎn)租房屋租賃合同
- 礦業(yè)與安全技術(shù)作業(yè)指導(dǎo)書
- 房地產(chǎn)中介銷售服務(wù)合同
- 電子電路設(shè)計(jì)與制造作業(yè)指導(dǎo)書
- 組織行為學(xué)作業(yè)指導(dǎo)書
- 雙語藝術(shù)節(jié)之迎新文藝晚會(huì)活動(dòng)方案
- 2025年高考英語一輪復(fù)習(xí)講義(新高考)第2部分語法第23講狀語從句(練習(xí))(學(xué)生版+解析)
- NB/T 11459-2023煤礦井下直流電法勘探規(guī)程
- 十七個(gè)崗位安全操作規(guī)程手冊(cè)
- 爆花(2023年陜西中考語文試卷記敘文閱讀題及答案)
- 自主簽到培訓(xùn)課件-早安!幼兒園
- 小學(xué)項(xiàng)目化學(xué)習(xí)案例
- 2024-2030年中國(guó)大宗商品行業(yè)市場(chǎng)深度調(diào)研及發(fā)展趨勢(shì)與投資前景研究報(bào)告
- 強(qiáng)化提升1解三角形中的三線問題(解析)
- 異地就醫(yī)備案的個(gè)人承諾書
- 2024-2030年中國(guó)ODM服務(wù)器行業(yè)市場(chǎng)發(fā)展分析及前景趨勢(shì)與投資研究報(bào)告
- 室內(nèi)裝飾拆除專項(xiàng)施工方案
評(píng)論
0/150
提交評(píng)論