c++數(shù)據(jù)結(jié)構(gòu) 鏈表操作 學(xué)生管理系統(tǒng)
《c++數(shù)據(jù)結(jié)構(gòu) 鏈表操作 學(xué)生管理系統(tǒng)》由會(huì)員分享,可在線閱讀,更多相關(guān)《c++數(shù)據(jù)結(jié)構(gòu) 鏈表操作 學(xué)生管理系統(tǒng)(29頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、劉楊&李虎乘&劉楊&李虎乘&劉楊&李虎乘&劉楊&李虎乘&劉楊&李虎乘&劉楊&李虎乘&劉楊&李虎乘&劉楊&李虎乘 北京郵電大學(xué)課程設(shè)計(jì)報(bào)告 劉楊 李虎乘 We are the best! 課程設(shè)計(jì) 名稱 學(xué)生信息管理系統(tǒng) 學(xué) 院 理學(xué)院 指導(dǎo)教師 谷勇浩 班 級(jí) 班內(nèi)序號(hào) 學(xué) 號(hào) 學(xué)生姓名 成績 2010214102 5 10212653 李虎乘 2010214102 23 10212670 劉楊 課 程 設(shè) 計(jì) 內(nèi) 容 教學(xué)目的:1、進(jìn)一步掌握利用C++進(jìn)行類的定義
2、和操作方法; 2、進(jìn)一步掌握類的繼承和派生方法; 3、進(jìn)一步理解虛函數(shù)和多態(tài); 4、綜合利用上述知識(shí),學(xué)習(xí)設(shè)計(jì)并編寫面向?qū)ο蟮? C++簡單應(yīng)用程序; 5、培養(yǎng)學(xué)生團(tuán)結(jié)協(xié)作的能力。 基本內(nèi)容:用C++語言編寫學(xué)生信息管理系統(tǒng)。 實(shí)驗(yàn)方法:在DEV C++環(huán)境下編寫代碼并排查語法錯(cuò)誤和運(yùn)行錯(cuò)誤。 團(tuán)隊(duì)分工:李虎乘負(fù)責(zé)節(jié)點(diǎn)、鏈表、增加、查找、刪除、更改函數(shù)的編寫;劉楊負(fù)責(zé)主函數(shù)、輸入輸出流、輸出函數(shù)、現(xiàn)實(shí)幫助函數(shù)的編寫。其余工作均有參與。 學(xué)生 課程設(shè)計(jì) 報(bào)告 (附頁) 課 程 設(shè) 計(jì) 成 績 評(píng) 定 遵照實(shí)踐教學(xué)大綱并根據(jù)以下四
3、方面綜合評(píng)定成績: 1、課程設(shè)計(jì)目的任務(wù)明確,選題符合教學(xué)要求,份量及難易程度 2、團(tuán)隊(duì)分工是否恰當(dāng)與合理 3、綜合運(yùn)用所學(xué)知識(shí),提高分析問題、解決問題及實(shí)踐動(dòng)手能力的效果 4、是否認(rèn)真、獨(dú)立完成屬于自己的課程設(shè)計(jì)內(nèi)容,課程設(shè)計(jì)報(bào)告是否思路清晰、文字通順、書寫規(guī)范 評(píng)語: 成績: 指導(dǎo)教師簽名: 年 月 日 注:評(píng)語要體現(xiàn)每個(gè)學(xué)生的工作情況,可以加頁。 第一章 需求分析 1. 課程設(shè)計(jì)性質(zhì)和目的……………………………………………………… 第二章 使用說明和程序流程圖 1.
4、 系統(tǒng)總框圖…………………………………………………………………. 2. 使用手冊(cè)…………………………………………………………………… 3. 第三章 程序設(shè)計(jì) 1. 每個(gè)模塊的設(shè)計(jì)分析及功能描述……………………………………………… 2. 函數(shù)和重要參數(shù)及其說明……………….……………………………………. 第四章 總結(jié) 附件:源代碼 第一章、需求分析 一、設(shè)計(jì)目的 1、進(jìn)一步掌握利用C++進(jìn)行類的定義和操作方法; 2、進(jìn)一步掌握類的繼承和派生方法; 3、進(jìn)一步理解虛函數(shù)和多態(tài); 4、綜合利用上述知識(shí),學(xué)習(xí)設(shè)計(jì)并編寫
5、面向?qū)ο蟮腃++簡單應(yīng)用程序; 5、培養(yǎng)學(xué)生團(tuán)結(jié)協(xié)作的能力。 掌握一般類的定義、測試、封裝、數(shù)據(jù)隱藏、繼承及多態(tài)等概念,掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念和基本方法,掌握 C++語言的基本語法和基本內(nèi)容,并能運(yùn)用C++語言進(jìn)行基本的面向?qū)ο蟪绦蛟O(shè)計(jì),并且通過綜合課程設(shè)計(jì),提高實(shí)踐動(dòng)手技能,培養(yǎng)獨(dú)立分析分析問題和解決問題的能力。 第二章、系統(tǒng)總框圖 開始界面 主要提示菜單界面 增加學(xué)生信息 刪除學(xué)生信息 輸出學(xué)生信息 顯示幫助界面 修改學(xué)生信息 結(jié)束 二、使用手冊(cè) 1、輸入輸出的形式 本系統(tǒng)是一
6、個(gè)學(xué)生成績管理系統(tǒng),采用DEV 編譯器作為開發(fā)環(huán)境,這個(gè)環(huán)境是我們?cè)趯W(xué)習(xí)C++時(shí)使用的平臺(tái)。輸入數(shù)據(jù)類型主要是char、int、float等數(shù)據(jù)類型,輸入內(nèi)容包括:班級(jí)、學(xué)號(hào)、姓名、性別、語文成績、數(shù)學(xué)成績等數(shù)據(jù)。顯示內(nèi)容包括:班級(jí)、學(xué)號(hào)、姓名、平均分等數(shù)據(jù)。 2、程序的實(shí)現(xiàn)功能 用戶運(yùn)行程序后進(jìn)入系統(tǒng)主界面,在主界面用戶可以輸入所有學(xué)生的數(shù)據(jù)并保存到文件中,也可以讀取文件中已有的學(xué)生數(shù)據(jù)。本系統(tǒng)同時(shí)只能對(duì)一個(gè)數(shù)據(jù)文件進(jìn)行相關(guān)操作,不能同時(shí)打開多個(gè)數(shù)據(jù)文件,其類似于單用戶操作系統(tǒng)。 當(dāng)用戶讀取學(xué)生數(shù)據(jù)后可對(duì)其進(jìn)行顯示,插入,刪除,修改,計(jì)算平均分等相關(guān)操作。用戶在操作過程中可隨時(shí)對(duì)當(dāng)前文
7、件進(jìn)行保存到文件操作,以防止修改的數(shù)據(jù)丟失。 3、操作演示 ⑴、增加學(xué)生信息進(jìn)入開始界面以后,輸入數(shù)字 1 ,即可進(jìn)入“增加學(xué)生信息功能” 然后,依照程序提示的格式,逐個(gè)輸入該學(xué)生的信息,每個(gè)類別的信息以回車為間隔。 完成輸入以后,結(jié)束功能,回歸指令界面。 如果還需要增加,只需重復(fù)以上操作即可。 ⑵、輸出學(xué)生信息 進(jìn)入指令界面以后,輸入數(shù)字 2 ,進(jìn)入輸出學(xué)生信息功能: 本系統(tǒng)提供的輸出功能除包括對(duì)已經(jīng)輸入的學(xué)生基本信息以外,還自動(dòng)附帶對(duì)總分的計(jì)算并輸出、對(duì)平均分的計(jì)算并輸出。詳情可參考上圖。 如果學(xué)生信息為空,即尚未輸
8、入任何學(xué)生信息數(shù)據(jù),則會(huì)提示“沒有學(xué)生信息”。 ⑶、查找學(xué)生信息 進(jìn)入指令界面以后,輸入數(shù)字 3 ,即可進(jìn)入“查找學(xué)生信息”功能: 查找時(shí),輸入要查找對(duì)象的學(xué)號(hào)進(jìn)行操作,按回車確認(rèn)輸入: 如果輸入的信息有誤(無法匹配),則會(huì)提示“沒有符合條件的學(xué)生”。 ⑷、刪除學(xué)生信息 同樣地,輸入學(xué)生學(xué)號(hào),進(jìn)行匹配,匹配失敗則會(huì)提示“沒有符合條件的學(xué)生”。成功,則會(huì)刪除該對(duì)象的信息。 ⑸、修改學(xué)生信息 進(jìn)入指令界面以后,輸入數(shù)字 5 ,即可進(jìn)入“修改學(xué)生信息”功能。輸入學(xué)生學(xué)號(hào)進(jìn)行對(duì)象確認(rèn)。同樣地,參照輸入學(xué)
9、生信息時(shí)的方式,進(jìn)行信息重新輸入。 倘若修改時(shí)輸入的學(xué)號(hào)無法在已經(jīng)錄入的學(xué)生信息中找到匹配的,則會(huì)提示“沒有找到符合條件的學(xué)生”。 ⑺、顯示幫助信息表格 用于幫助現(xiàn)實(shí)提示表格。在指令界面下,鍵入數(shù)字7即可進(jìn)入該功能。 第三章、程序設(shè)計(jì) 一、每個(gè)模塊的設(shè)計(jì)分析及功能描述 1 main.cpp 主函數(shù),用于實(shí)現(xiàn)對(duì)提示界面及對(duì)函數(shù)的操作。 2 appcommand.h Appcommand的頭文件。外部聲明appcommand類,實(shí)現(xiàn)對(duì)以下函數(shù)的的聲明: 增加學(xué)生信息函數(shù): addInform(); 輸出學(xué)生信息函數(shù): outputInformLi
10、st(); 查找學(xué)生信息函數(shù):searchInform(); 刪除學(xué)生信息函數(shù):deleteInform(); 更改學(xué)生信息函數(shù):modifyInform(); 顯示幫助函數(shù):showHelp(); 3 Listnode.h Listnode的頭文件。外部聲明Listnode類,實(shí)現(xiàn)單鏈表的生成及歲單鏈表操作的聲明, 4 inform.h Inform的頭文件。外部聲明inform類,實(shí)現(xiàn)對(duì)學(xué)生信息的存儲(chǔ)。 5 achieve.h Achieve的頭文件。外部聲明achieve類,實(shí)現(xiàn)對(duì)計(jì)算學(xué)生總分與平均分的函數(shù)的聲明。 6 appcommand.cpp Appcomm
11、and的源文件。定義appcommand類,實(shí)現(xiàn)對(duì)頭文件中聲明函數(shù)的的定義。 7 Listnode.cpp Listnode的源文件。定義Listnode類,實(shí)現(xiàn)對(duì)單鏈表的具體操作等。 8 inform.cpp Inform的源文件。定義inform類,實(shí)現(xiàn)對(duì)學(xué)生信息的存儲(chǔ)的操作。 9 achieve.cpp Achieve源頭文件。定義achieve類,實(shí)現(xiàn)對(duì)計(jì)算學(xué)生總分與平均分的函數(shù)的具體定義(該函數(shù)在查找中課體現(xiàn))。 二、文件所定義的函數(shù)及其說明 一 、main 1.int main()函數(shù): 主函數(shù),用于產(chǎn)生主操作界面及提示用戶進(jìn)行操作。 二 、ppcom
12、mand 1.addInform()函數(shù): 增加學(xué)生信息函數(shù),用于增加學(xué)生信息。在主操作頁面中輸入1調(diào)用。 2.outputInformList()函數(shù): 輸出學(xué)生信息函數(shù),用于輸出學(xué)生信息。在主操作頁面中輸入2調(diào)用 3. searchInform()函數(shù): 查找學(xué)生信息函數(shù),用于查找學(xué)生信息。在主操作頁面中輸入3調(diào)用 4. deleteInform()函數(shù): 刪除學(xué)生信息函數(shù),用于刪除學(xué)生信息。在主操作頁面中輸入4調(diào)用 5. modifyInform()函數(shù); 修改學(xué)生信息函數(shù),用于修改學(xué)生信息。在主操作頁面輸入5調(diào)用
13、 6. showHelp()函數(shù); 顯示主頁面,在主操作頁面輸入5調(diào)用。 三、achieve 1. getTotalScore()函數(shù): 用于計(jì)算學(xué)生的總分,可以在查找學(xué)生信息的同時(shí)顯示學(xué)生總分。 其中對(duì)輸入輸出函數(shù)進(jìn)行重載 2. getAvgScore()函數(shù) 用于計(jì)算學(xué)生的平均分,可以在查找學(xué)生信息的同時(shí)顯示學(xué)生平均分。 其中對(duì)輸入輸出函數(shù)進(jìn)行重載 三、重要參數(shù)說明 1 addInform()函數(shù):尾指針:*pTail , 頭指針: *pHead 2 outputInformList()函數(shù):指針變量 *p 3 sear
14、chInform()函數(shù):指針變量 *p 4 deleteInform()函數(shù):指針變量 *p,指針變量 *q 5 modifyInform()函數(shù):指針變量*found,指針變量 *p; 第四章、總結(jié) 一、語法錯(cuò)誤 1、語句的最后忘記了加上“;”,使程序發(fā)生錯(cuò)誤。 2、把“<<”與“>>”寫反,以及字符與字符串的操作問題,這些是比較簡單的錯(cuò)誤,很容易分辨出來,并改正之。 3、函數(shù)的返回值問題,也是比較容易找出并解決的問題。 二、邏輯錯(cuò)誤 1、數(shù)據(jù)的輸入與讀出,剛開始對(duì)數(shù)據(jù)的操作不太明白,一致不能很好的操作,其中最大的問題是對(duì)輸入輸出流的控制、重載問題,通過“
15、輸出” 將數(shù)據(jù)從系統(tǒng)中讀出,可是在使用過程中總是出現(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ǔ)記錄的方式,這樣就能改變前述問題。 3、對(duì)最后的菜單進(jìn)行編寫時(shí),剛開始只能單次循環(huán),然后直接跳出菜單,后來我們進(jìn)行商量討論,運(yùn)用循環(huán)語句的嵌套寫出了完整的菜單系統(tǒng)。 三、心得與體會(huì) 2、課程設(shè)計(jì)經(jīng)驗(yàn)和體會(huì) 一個(gè)多月的課程設(shè)計(jì),雖然有些疲勞和
16、困倦,但帶給我們很多的收獲。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ù)天的時(shí)間來規(guī)劃與寫代碼,將要實(shí)現(xiàn)的內(nèi)容分
17、析清楚,才把代碼輸入電腦。我們從中發(fā)現(xiàn),寫程序應(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í)。此外,此次程序設(shè)計(jì)課,也增添了我們對(duì)計(jì)算機(jī)編程的興趣與愛好,可以說,這是一次非凡的經(jīng)歷!
18、 劉楊 李虎乘
2011年11月
于北京郵電大學(xué)
附件:程序源代碼
__________________main.cpp____________________
#include
19、de "appcommands.h" using namespace std; class ListNode; ListNode *pHead; int main() { pHead = NULL; showHelp(); cout << "請(qǐng)輸入命令..." << endl; int n;//接收用戶輸入的命令 while (cin >> n) { if (n == 1) { addInform(); } else if (n == 2) { outputInformList()
20、; } else if (n == 3) { searchInform(); } else if (n == 4) { deleteInform(); } else if (n == 5) { modifyInform(); } else if (n == 6) { return 0; } else if (n == 7) { showHelp(); } else { cout << "無效命令" << endl; } c
21、out << "請(qǐng)輸入命令..." << endl; } // 沒有顯示釋放鏈表占用的內(nèi)存,進(jìn)程結(jié)束時(shí)由操作系統(tǒng)回收內(nèi)存 system("pause"); return 0; } __________________listnode.h___________________#ifndef LISTNODE_H #define LISTNODE_H #include "Inform.h" class ListNode// ListNode 類指對(duì)節(jié)點(diǎn)和單鏈表的操作 { public: ListNode(Inform &data
22、); ~ListNode(); Inform &GetData(void);//獲取信息 void SetData(Inform inform);//用于修改數(shù)據(jù)和next ListNode *GetNext(void) const;//下一個(gè)節(jié)點(diǎn)的指針 void SetNext(ListNode *node);// 設(shè)置下一結(jié)點(diǎn) Inform _data;//liform里面的具體對(duì)象 ListNode *_next; }; #endif ________________listnode.cpp________
23、___________ #include "ListNode.h"http://對(duì)函數(shù)的定義 ListNode::ListNode(Inform &data)//對(duì) : _data(data), _next(NULL) { } Inform &ListNode::GetData(void)//對(duì)getdate函數(shù)的定義 { return _data; } void ListNode::SetData(Inform inform) { _data=inform ;//指針設(shè)置 } ListNode *ListNode::GetNext(
24、void) const//指針后移
{
return _next;
}
void ListNode::SetNext(ListNode * node)//
{
_next = node;
}
ListNode::~ListNode()//析構(gòu)函數(shù)
{
}
__________________inform.h___________________
#ifndef INFORM_H
#define INFORM_H
#include
25、h" using namespace std; class Inform { public: //輸出(流)的重載(統(tǒng)一格式輸出學(xué)生信息) friend ostream &operator<<(ostream &output, const Inform &t); //輸入(流)的重載(統(tǒng)一格式輸入學(xué)生信息) friend istream &operator>>(istream &input, Inform &t); public: Inform(void); ////學(xué)生信息的初始化,拷貝構(gòu)造函數(shù)使用編譯器合成的版本
26、//Inform(Inform &d); // 析構(gòu)函數(shù) ~Inform(); ////學(xué)生信息的匹配判斷(所有信息都匹配) //int operator==(const Inform &d); // ////查找學(xué)生的某項(xiàng)信息s是否匹配 //int operator==(char *s); // ////查找學(xué)生的某項(xiàng)信息t是否不匹配 //int operator!=(char *t); ////學(xué)生信息賦值操作 //Inform &operator=(Inform &d); public: /
27、/ 數(shù)據(jù)成員 //學(xué)號(hào) string number; //身份證號(hào) string id; //姓名 string name; //性別 string sex; //成績(第一步基本信息中無此變量) achieve ach; //電話號(hào)碼 string phonenumber; //寢室號(hào) string roomnumber; }; #endif ________________inform.cpp___________________ #include "Inf
28、orm.h" Inform::Inform() { } Inform::~Inform(void) { } ostream &operator<<(ostream &output, const Inform &t)//輸出(流)的重載(統(tǒng)一格式輸出學(xué)生信息) ,使可以在inform類上使用iostream { output << "身份證: " << t.id << ", "http://t是output(重載操作符) 的形參 << "姓名: " << t.name << ", " << "學(xué)號(hào): " << t.number << ",
29、" << "電話: " << t.phonenumber << ", " << "寢室: " << t.roomnumber << ", " << "性別: " << t.sex << ", " << t.ach; return output; } //輸入(流)的重載(統(tǒng)一格式輸入學(xué)生信息) istream &operator>>(istream &input, Inform &t) { input >> t.id >> t.name >> t.number >> t.phonenumber >> t
30、.roomnumber >> t.sex >> t.ach; if (!input) { // 輸入無效,重置狀態(tài) t = Inform(); } return input; } ________________appcommands.h___________________ // 應(yīng)用程序的命令 // 增加學(xué)生信息 void addInform(); // 輸出學(xué)生信息 void outputInformList(); // 查找學(xué)生信息 void searchInform(); // 刪除學(xué)生
31、信息
void deleteInform();
// 更改學(xué)生信息
void modifyInform();
// 顯示幫助
void showHelp();
_______________appcommands.app__________________
#include
32、 ListNode *pHeadbefore; // 增加學(xué)生信息 void addInform()//增加學(xué)生信息 { cout << "增加學(xué)生信息,格式為:身份證,姓名,學(xué)號(hào),電話,寢室號(hào),性別,語文分?jǐn)?shù),數(shù)學(xué)分?jǐn)?shù)" << endl; Inform inform; cin >> inform; if (cin)// 判斷是否輸入成功 { if (!pHead)//判斷phead指針是否為null ,如果是null 則繼續(xù)運(yùn)行 { pHead = new ListNode(inform);//listnode為鏈表的新節(jié)點(diǎn)
33、 } else//如果phead不為空 { ListNode *pTail = pHead; while(pTail->GetNext() != NULL)//getnext為listnode的成員函數(shù),作用為取得下一個(gè)節(jié)點(diǎn) { pTail = pTail->GetNext();//指向尾結(jié)點(diǎn)的指針向后移動(dòng) }// 找到尾部節(jié)點(diǎn),加到隊(duì)尾 pTail->SetNext(new ListNode(inform));//把新節(jié)點(diǎn)掛到鏈表尾 } } } // 輸出學(xué)生信息 void out
34、putInformList()
{
cout << "輸出學(xué)生信息" << endl;
if (!pHead) //判斷phead指針是否為null ,如果是null 則輸出沒有學(xué)生信息
{
cout << "沒有學(xué)生信息" << endl;
return;//表示函數(shù)結(jié)束
}
ListNode *p = pHead;//
while(p)//判斷p ,如果p不為null則繼續(xù)
{
cout<
35、; //指針向后 } } // 查找學(xué)生信息 void searchInform() { if (!pHead)//判斷phead指針是否為null ,如果是null 則輸出沒有學(xué)生信息 { cout << "沒有學(xué)生信息" << endl; return; } cout << "查找學(xué)生信息,請(qǐng)輸入學(xué)號(hào)" << endl; string input; cin >> input; if(cin) { ListNode *p = pHead; while (p)//判斷p ,如果p不為null則繼續(xù)
36、
{
if (p->GetData().number == input)
{
cout<
37、 void deleteInform()// 刪除學(xué)生信息 { cout << "刪除學(xué)生信息,請(qǐng)輸入學(xué)號(hào)" << endl; string input; cin >> input; if(cin) { ListNode *p = pHead; ListNode *q = pHeadbefore ; while (p)//判斷p ,如果p不為null則繼續(xù) { if (p->GetData().number == input) { q=p->GetNext();
38、 delete p; p=q; break; } // 向后走 q=p; p=p->GetNext(); } } cin.clear();// 清除標(biāo)準(zhǔn)輸入的錯(cuò)誤(如果有) } void modifyInform() { cout << "更改學(xué)生信息,請(qǐng)輸入學(xué)號(hào)" << endl; string input; cin >> input; ListNode *found =
39、 NULL; if(cin)//輸入正確 { ListNode *p = pHead; while (p) { if (p->GetData().number == input) { found = p; break; } p = p->GetNext(); // 向后走 } } // 清除標(biāo)準(zhǔn)輸入的錯(cuò)誤(如果有) cin.clear(); if (found) { cout << "修改" << found->GetData().number << "的信息,格
40、式為:身份證,姓名,電話,寢室號(hào),性別,語文分?jǐn)?shù),數(shù)學(xué)分?jǐn)?shù)" << endl;
Inform inform;
cin >> inform.id
>> inform.name
>> inform.phonenumber
>> inform.roomnumber
>> inform.sex
>> inform.ach;
if (cin) // 輸入成功
{
found->SetData(inform);
}
}
else
{
cout << "沒有找到符合條件的學(xué)生記錄" < 41、
}
}
void showHelp()// 顯示幫助
{ cout<<" *********************************************************** "< 42、
cout<<" * 1: 增加學(xué)生信息 * "< 43、 * "< 44、 * "< 45、_____________
#ifndef ACHIEVE_H
#define ACHIEVE_H
#include 46、);
// 獲取總分
double getTotalScore();
// 獲取平均分
double getAvgScore();
double yu_wen; // 語文
double shu_xue; // 數(shù)學(xué)
};
#endif
________________achieve.cpp__________________
#include "achieve.h"
achieve::achieve(void)
: yu_wen(0.0), shu_xue(0.0)
{
}//構(gòu)造函數(shù) ,將分 47、數(shù)初始為0分
achieve::~achieve(void)
{
}//析構(gòu)函數(shù)
double achieve::getTotalScore()
{
return yu_wen + shu_xue;//計(jì)算總分
}
double achieve::getAvgScore()
{
const int subjectCount = 2;
return getTotalScore() / subjectCount;//計(jì)算平均分
cout<< getAvgScore();
}
//
istream &operator>> 48、(istream &in, achieve &obj)// 重載輸入操作符
{
in
>> obj.yu_wen
>> obj.shu_xue;//
if (!in)//判斷輸入數(shù)字是否有效 ,若不空,則繼續(xù)執(zhí)行
{
obj = achieve();// 輸入無效,重置狀態(tài)
}
return in;
}
ostream &operator<<(ostream &out, const achieve &obj)
{
out << "語文: " << obj.yu_wen << ", "http://重載輸入輸出操作符
<< "數(shù)學(xué): " << obj.shu_xue;
return out;//返回第一個(gè)形參的引用
}
___________________________________完___________________________________________________
29
- 溫馨提示:
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é)數(shù)學(xué)五年級(jí)下冊(cè)圖形的運(yùn)動(dòng)(三)-1課件
- 供應(yīng)鏈管理方法
- 2019最新青島版數(shù)學(xué)一年級(jí)上冊(cè)第三單元《走進(jìn)花果山-10以內(nèi)的加減法》(信息窗6)課件
- 第四章勞動(dòng)中的心理、生理狀態(tài)對(duì)安全的影響
- 201x九年級(jí)物理上冊(cè)-雙休作業(yè)八(新版)教科版課件
- 課件:項(xiàng)目一-電子商務(wù)物流系統(tǒng)規(guī)劃
- 【人教版】2012-2013學(xué)年九年級(jí)(全一冊(cè))數(shù)學(xué)小復(fù)習(xí):第27章相似復(fù)習(xí)課件
- 消化腺(全英文)課件
- 小學(xué)語文資源五年級(jí)上冊(cè)課件《落花生》課件第一課時(shí)
- 納米材料的基本效應(yīng)課件
- 分析化學(xué)概論-課件
- 沉浸式光影解決方案課件
- 第六講加固Windows操作系統(tǒng)安全ppt課件
- 民主選舉投出理性一票ppt課件
- 高二數(shù)學(xué)選修正態(tài)分布推薦實(shí)用全套PPT