面向?qū)ο蟪绦蛟O(shè)計(C )課程設(shè)計任務(wù)書及題目_第1頁
面向?qū)ο蟪绦蛟O(shè)計(C )課程設(shè)計任務(wù)書及題目_第2頁
面向?qū)ο蟪绦蛟O(shè)計(C )課程設(shè)計任務(wù)書及題目_第3頁
面向?qū)ο蟪绦蛟O(shè)計(C )課程設(shè)計任務(wù)書及題目_第4頁
面向?qū)ο蟪绦蛟O(shè)計(C )課程設(shè)計任務(wù)書及題目_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

上海電機學(xué)院課程設(shè)計任務(wù)書課程名稱面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計課程代碼033056P1設(shè)計題目課程設(shè)計選題共24個(見附件)設(shè)計時間2014年6月16日——2014年6月20日院(系)電子信息學(xué)院專業(yè)計算機科學(xué)與技術(shù)班級BX1203、BX1204一、課程設(shè)計任務(wù)1.了解并掌握中小型綜合應(yīng)用程序的一般設(shè)計方法,具備初步的獨立分析和設(shè)計能力;2.初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等基本方法和技能;3.提高綜合運用所學(xué)的理論知識和方法獨立分析和解決問題的能力;4.訓(xùn)練用系統(tǒng)的觀點和軟件開發(fā)一般規(guī)范進行軟件開發(fā),培養(yǎng)軟件工作者所應(yīng)具備的科學(xué)的工作方法和作風(fēng);5.課題的代碼要求達到一定工作量,并具有一定的深度和難度;6.根據(jù)課題程序的分析和設(shè)計過程,撰寫課程設(shè)計報告。二、對課程設(shè)計成果的要求(包括課程設(shè)計說明書、圖紙、圖表、實物等軟硬件要求)課程設(shè)計結(jié)束應(yīng)提交程序源代碼、課程設(shè)計報告的電子稿和打印稿,以作為整個課程設(shè)計評分的書面依據(jù)和存檔材料。課程設(shè)計報告以規(guī)定的格式書寫、打印并裝訂,排版及圖、表要清楚、工整。課程設(shè)計報告的內(nèi)容如下:1.封面:題目、班級、學(xué)號、姓名、指導(dǎo)教師和完成日期。2.正文包括以下內(nèi)容:(1)需求分析:以無歧義的陳述說明課題的目的及要求,重點描述清楚程序要做什么。(2)概要設(shè)計:根據(jù)程序需要完成的功能分析主程序的流程,并劃分出各個功能模塊、完成各程序模塊之間的層次(調(diào)用)關(guān)系設(shè)計。(3)詳細設(shè)計:實現(xiàn)概要設(shè)計中劃分出的各個模塊。撰寫報告時,對每個模塊先用文字(可結(jié)合流程圖)描述其實現(xiàn)思路,重點描述清楚程序要怎么做,再貼出關(guān)鍵部分的實現(xiàn)代碼。(4)測試:列出測試結(jié)果,包括輸入和輸出。測試數(shù)據(jù)應(yīng)該完整和嚴(yán)格。(5)總結(jié)和體會:程序編寫和調(diào)試過程中遇到了哪些問題,是如何解決的,以及對設(shè)計與實現(xiàn)過程的回顧和分析;經(jīng)驗和體會等。(6)參考文獻:列出參考的網(wǎng)址、期刊和書籍等相關(guān)資料。(7)考核:根據(jù)課程的出勤情況、課題的實現(xiàn)及答辯質(zhì)量、課設(shè)報告的嚴(yán)謹(jǐn)和規(guī)范性等方面進行考核,注重過程考核和綜合能力的測評,以確保教學(xué)質(zhì)量。成績=平時成績占(含出勤)20%+課程設(shè)計報告成績占40%+課程設(shè)計作品成績占40%三、課程設(shè)計工作進度計劃:1 布置任務(wù)與要求 0.52 整體設(shè)計和詳細設(shè)計 13 編代碼 24 調(diào)試和測試 0.55 設(shè)計論文書寫 0.56 演示軟件和答辯 0.5共計5四、主要參考資料[1]沈?qū)W東等.C++面向?qū)ο蟪绦蛟O(shè)計實用教程[M].上海交通大學(xué)出版社,2012[2]譚浩強等.C++程序設(shè)計[M].北京:清華大學(xué)出版社,2011指導(dǎo)教師(簽名):王中華系主任(簽名):2014年5月20日年月日課程設(shè)計題目 附:課程設(shè)計題目有理數(shù)運算問題描述有理數(shù)是一個可以化為一個分?jǐn)?shù)的數(shù),例如2/3,533/920,-12/49都是有理數(shù),而就為無理數(shù)。在C++中,并沒有預(yù)先定義有理數(shù),需要時可以定義一個有理數(shù)類,將有理數(shù)的分子和分母分別存放在兩個整型變量中。對有理數(shù)的各種操作都可以用重載運算符來實現(xiàn)?;疽蠖x并實現(xiàn)一個有理數(shù)類,通過重載運算符+、-、*、/對有理數(shù)進行算術(shù)運算,通過重載運算符==實現(xiàn)判定兩個有理數(shù)是否相等。寫一個優(yōu)化函數(shù),它的作用是使有理數(shù)約去公分母,也即是使保存的有理數(shù)分子和分母之間沒有公約數(shù)(除去1以外)。此外,還要定義一個將有理數(shù)轉(zhuǎn)換為實數(shù)的函數(shù),再加上構(gòu)造函數(shù)和有理數(shù)輸出函數(shù)。測試數(shù)據(jù)在應(yīng)用程序中,創(chuàng)建若干有理數(shù)對象,通過帶參數(shù)的構(gòu)造函數(shù)使得各有理數(shù)對象值各不相同,然后分別進行各類運算,輸出運算結(jié)果,檢驗其正確性。實現(xiàn)提示設(shè)有兩個有理數(shù)a/b和c/d,則有:有理數(shù)相加分子=a*d+b*c;分母=b*d有理數(shù)相減分子=a*d-b*c;分母=b*d有理數(shù)相乘分子=a*c;分母=b*d有理數(shù)相除分子=a*d;分母=b*c優(yōu)化函數(shù)在創(chuàng)建有理數(shù)對象時應(yīng)執(zhí)行,在執(zhí)行其它各種運算之后也需執(zhí)行它,這樣可保證所存儲的有理數(shù)隨時都是最優(yōu)的。對于判斷兩個有理數(shù)是否相等,由于在對有理數(shù)進行各種運算后都對其進行優(yōu)化,所以判定兩個有理數(shù)是否相等只需判定它們兩個的分子和分母分別相等即可。選做內(nèi)容重載插入(<<)和提?。?gt;>)運算符,使得對有理數(shù)可以直接輸入輸出。設(shè)有理數(shù)輸入格式為:整數(shù)1整數(shù)2//整數(shù)1為分子,整數(shù)2為分母有理數(shù)輸出格式為:分子/分母通訊錄管理問題描述編寫一個簡單的通訊錄管理程序。通訊錄記錄有姓名,地址(省、市(縣)、街道),電話號碼,郵政編碼等四項。基本要求程序應(yīng)提供的基本管理功能有:添加:即增加一個人的記錄到通信錄中顯示:即在屏幕上顯示所有通信錄中的人員信息,應(yīng)能分屏顯示。存儲:即將通訊錄信息保存在一個文件中。裝入:即將文件中的信息讀入程序。查詢:可根據(jù)姓名查找某人的相關(guān)信息,若找到顯示其姓名、地址、電話號碼和郵政編碼。修改:可修改一個人的除姓名外其它信息。測試數(shù)據(jù)程序應(yīng)輸入不少于10個人員的通訊錄信息,應(yīng)考慮到人員可以同名的情況。實現(xiàn)提示程序可用一個單向鏈表來管理人員信息,每個人員的姓名,地址,電話號碼和郵政編碼用一個類Cperson來實現(xiàn),作為鏈表的值指針指向這些Cperson類對象,通過鏈表的遍歷可以操作這些數(shù)據(jù)。選做內(nèi)容為了加快數(shù)據(jù)定位查找的速度,采用常用優(yōu)先的方法對鏈表的各個節(jié)點進行排序,即一旦操作了一個人員的數(shù)據(jù),他的數(shù)據(jù)就將被調(diào)用到鏈表的鏈?zhǔn)住_@樣經(jīng)過有限次操作,經(jīng)常查閱的人員的信息就將排在鏈表的前端。雖然不能說鏈?zhǔn)椎墓?jié)點一定是最常用的,但常用的節(jié)點一定會排在較靠前的部分,鏈表查找時所要走的平均距離一定較短。商品銷售統(tǒng)計問題描述編寫商品銷售統(tǒng)計程序,商品的信息有:商品的名稱,計量單位(重量或件),單價。所有商品的信息事先已存入計算機,屏幕上顯示所有商品的名稱,選擇商品名,輸入商品計量單位(如重量,件數(shù)等),根據(jù)單價算出總價??蛻粢淮钨徫锟赡苜徺I多種商品,程序應(yīng)計算出客戶應(yīng)付的錢款數(shù)。基本要求程序分為兩個部分:第一部分用于輸入商品的信息并允許修改和刪除;第二部分實現(xiàn)銷售統(tǒng)計。程序運行時由用戶選擇進入哪一部分功能,并能在運行時在兩部分之間切換。第二部分運行時,首先顯示所有商品名稱及代碼(商品數(shù)目較多時,應(yīng)考慮分屏顯示),用戶輸入商品代碼及商品重量或件數(shù),用戶一次操作可輸入若干商品的購買信息,然后輸入一個特殊的代碼(如-1)表示本次購物結(jié)束。此時。程序計算出應(yīng)付錢款數(shù)并顯示。測試數(shù)據(jù)程序應(yīng)輸入不少于10種商品的信息,并進行模擬運行。實現(xiàn)提示本程序的商品信息管理可采用與課程設(shè)計題目二類似的數(shù)據(jù)結(jié)構(gòu),既定義一個商品類,每種商品作為商品類的實例(對象)存儲在鏈表節(jié)點中。選做內(nèi)容程序在營業(yè)結(jié)束時統(tǒng)計每種商品的銷售量,銷售金額及總營業(yè)額。因此第二部分應(yīng)有營業(yè)結(jié)束的選擇,當(dāng)用戶選擇此項時屏幕上顯示當(dāng)天營業(yè)的每種商品的銷售量,銷售金額及總營業(yè)額。注意,商品類的數(shù)據(jù)成員應(yīng)增加有商品的銷售量和銷售金額??偁I業(yè)額是所有商品的營業(yè)額之和,可用靜態(tài)數(shù)據(jù)成員實現(xiàn)?;蚩捎稍唐奉惻缮鲆粋€特殊的類,增加上面的數(shù)據(jù)成員及相應(yīng)的成員函數(shù)。研究生初試錄取問題描述研究生考試課程為4門,其中數(shù)學(xué)、外語、政治為統(tǒng)一命題,而專業(yè)基礎(chǔ)課則根據(jù)不同的專業(yè)由招生學(xué)校自行命題。國家對初試錄取分?jǐn)?shù)有總分要求(如某一年要求4門課總分應(yīng)達到310分),另外還有對每門課的最低分?jǐn)?shù)要求(如總分為100的試卷最低應(yīng)達到40分,總分為150的試卷最低應(yīng)達到65分)。編程統(tǒng)計初試合格的人數(shù),并按總分由高到低的順序輸出合格考生的信息?;疽蟪绦蜻\行時首先要求輸入:考生姓名,準(zhǔn)考證號,報考專業(yè),是否應(yīng)屆生,4門課程(政治、數(shù)學(xué)、外語、專業(yè)基礎(chǔ)課)成績。這些原始數(shù)據(jù)應(yīng)保存到一個文件中。然后輸入:錄取的總分要求,各課程的最低分?jǐn)?shù)要求。輸出要求:過線考生的姓名,準(zhǔn)考證號,報考專業(yè),是否應(yīng)屆生,4門課程(政治、數(shù)學(xué)、外語、專業(yè)基礎(chǔ)課)成績及總分,這些信息應(yīng)存放到另一個文件中。測試數(shù)據(jù)程序應(yīng)輸入不少于10名考生的信息,其中應(yīng)屆生和歷屆生分別有若干名,并且都有合格和不合格的情況。實現(xiàn)提示可定義一個考生類存放有關(guān)信息和實現(xiàn)相應(yīng)的操作。分?jǐn)?shù)線數(shù)據(jù)(總分要求和各門課程的要求)可定義另外的類來存放,但應(yīng)能被考生類及其派生類直接訪問。選做內(nèi)容初試合格的考生應(yīng)經(jīng)過復(fù)試才能決定是否錄取,復(fù)試成績合格(大于給定分值)可以錄取,否則被淘汰。而錄取的順序假設(shè)是按照專業(yè)基礎(chǔ)課和復(fù)試成績的平均值來確定的(因為這涉及到是計劃內(nèi)還是委培問題)。因此,應(yīng)首先輸入初試合格考生的復(fù)試成績及復(fù)試的合格線分?jǐn)?shù),然后按上面要求排序輸出并標(biāo)明被淘汰的學(xué)生。足球聯(lián)賽積分問題描述足球聯(lián)賽采用主客場雙循環(huán)賽制,勝一場得3分,平局各得1分,負一場得0分,聯(lián)賽排名以積分多者在前,當(dāng)兩隊(或多隊)積分相同時,則凈勝球(即進球數(shù)與失球數(shù)之差)多者在前,若凈勝球相同,則進球數(shù)多者在前,若仍相同,則抽簽或踢附加賽決定名次(這在聯(lián)賽結(jié)束后進行,聯(lián)賽未結(jié)束則兩隊名次并列,本程序不做這方面要求)。試編程序統(tǒng)計最近一輪比賽后,各隊積分及排名?;疽笤O(shè)積分表結(jié)構(gòu)如下:隊名(不超過15個字符),已比賽的場數(shù),贏的場數(shù),平的場數(shù),負的場數(shù),進球數(shù),失球數(shù),積分。積分表放在正文文件中。最近一輪的結(jié)果從鍵盤輸入,其形式為:主隊名(可用代碼),客隊名(可用代碼),主隊得分(即進球數(shù)),客隊得分(即進球數(shù))。程序應(yīng)根據(jù)此輪結(jié)果修改各隊的積分和名次,所得的最新記分表仍在原積分文件中并同時在屏幕上顯示。測試數(shù)據(jù)可選擇我國當(dāng)年的甲A或甲B聯(lián)賽的數(shù)據(jù)輸入,并檢查與報章公布的數(shù)據(jù)是否一致。實現(xiàn)提示定義一個球隊類,每個球隊是均是此類的對象。由于聯(lián)賽中參賽的隊伍數(shù)是固定的,因此可用對象數(shù)組來實現(xiàn)(當(dāng)然也可以用鏈表結(jié)構(gòu))。每輸入兩個隊的比賽成績,則相應(yīng)的隊的有關(guān)數(shù)據(jù)(比賽場數(shù),贏的場數(shù),平的場數(shù),負的場數(shù),進球數(shù),失球數(shù),積分等)即可進行修改,比賽成績錄入完成,調(diào)用聯(lián)賽排序方法(對象數(shù)組作為參數(shù))排出名次并輸出。選做內(nèi)容籃球聯(lián)賽(如NBA)往往采用勝率來決定名次,勝率就是取勝的場數(shù)比賽場數(shù)之比。若勝率相同,再由凈勝球及進球數(shù)來決定名次,通過繼承性完成上述要求。銀行賬戶管理程序問題描述設(shè)計一個銀行賬戶管理程序,賬戶的信息有賬號(唯一)、姓名、余額、身份證號碼、單位、電話號碼、地址等,允許用戶進行如下操作:開戶、銷戶、存款、取款、轉(zhuǎn)賬、查詢,一個用戶可以有多個戶頭,賬戶的數(shù)值沒有上限?;疽蟪绦蜻\行時,可以由用戶選擇進行何種操作,開戶操作要求輸入用戶信息后自動獲取賬號,用戶銷戶后賬號被回收,并且該賬號可以繼續(xù)分配給其它賬戶,不允許用戶透支,根據(jù)姓名或賬號可以進行用戶的信息查詢,所有的賬戶信息應(yīng)存放到一個文件中,可以隨時的訪問和更新。測試數(shù)據(jù)程序應(yīng)輸入不少于10人的賬戶信息,應(yīng)考慮到人員同名的情況。實現(xiàn)提示可定義一個賬戶類存放賬戶信息以及執(zhí)行相應(yīng)的操作,可以用一個鏈表類來管理賬戶。選做內(nèi)容在上述程序的基礎(chǔ)上,添加聯(lián)名賬戶(一個聯(lián)名賬戶有兩個擁有者)的管理。模擬計算器程序問題描述設(shè)計一個程序來模擬一個簡單的手持計算器。程序支持算術(shù)運算+、-、*、/、=、以及C(清除)、A(全清除)操作?;疽蟪绦蜻\行時,顯示一個窗口,等待用戶輸入,用戶可以從鍵盤輸入要計算的表達式,輸入的表達式顯示在窗口中,用戶鍵入’=’符號后,窗口顯示出結(jié)果。測試數(shù)據(jù)程序輸入不少于5種不同的表達式進行測試。實現(xiàn)提示可定義一個計算器類,該類包括兩個組件對象,一個計算引擎和一個用戶接口,用戶接口對象處理接受的鍵盤輸入信息,并顯示答案,計算引擎對象對給出的數(shù)據(jù)執(zhí)行相應(yīng)操作,并存儲操作的結(jié)果。選做內(nèi)容如果用戶輸入的表達式不合法,可以判別出來并給出相應(yīng)的錯誤提示。設(shè)計一個排課程序問題描述每位教師都有教學(xué)工作量,教師對他所希望講授的課程表達為一個期望值,1,2…,n,其中1位最高的期望值。課程也有優(yōu)先級,1,2…,n,用來決定將課程分給教師的順序,其中1時最高的優(yōu)先級。設(shè)計一個程序針對某些課程給某些教師進行排課?;疽蟪绦蜻\行時,用戶輸入教師信息(姓名、教師號、工作量)、課程信息(課程名、課程號、周學(xué)時、總學(xué)時、優(yōu)先級)、教師對所希望講授課程的期望值以及教學(xué)工作量等相關(guān)信息,所有信息應(yīng)保存在文件中,程序根據(jù)課程的優(yōu)先級以及教師對課程的期望值進行排課。為了公平起見,程序隨機分配課程,如果10門課程都有優(yōu)先級1,程序以隨機的順序?qū)⑦@些課程分給教師,如果10位教師對某門課程的期望值為1,程序應(yīng)從10位教師中隨機選擇一個。最后輸出排課情況,即某位老師上某門課程,以及某位老師的工作量。測試數(shù)據(jù)程序應(yīng)能實現(xiàn)對不少于20門課和10個教師的排課,并且使每個教師的滿意度達到最大,不存在工作量不滿的教師以及未分配的課等情況。實現(xiàn)提示可定義一個教師類存放教師信息,所有教師的信息可以用鏈表存儲;定義一個課程類存放課程信息,所有課程的信息可以用鏈表存儲;定義一個排課類進行排課,排課類可以訪問課程和教師信息。選做內(nèi)容對兩個同類班級安排一學(xué)期(20周)的課程,程序應(yīng)能處理某些限制,如一個老師不能同時給兩個班上課。設(shè)計一個Database類問題描述設(shè)計一個Database類。Database類是一個表的集合,而表又由行和列組成。例如,下面的雇員信息表包含三個記錄,每個記錄有四個字段(Employee、Name、Department和Boss)。雇員姓名部門部門經(jīng)理111-11-1234CruzACCWarder213-44-5649JMISMichaels321-88-7895TomFINBearskin基本要求能夠完成對數(shù)據(jù)庫的基本操作;包括創(chuàng)建數(shù)據(jù)庫,實現(xiàn)對數(shù)據(jù)庫里面的表的添加,刪除;以及能夠完成對表結(jié)構(gòu)的修改(如添加或刪除字段),以及對表中的記錄進行添加和刪除;能夠完成對使用適當(dāng)?shù)牟樵冋Z言從一個或多個表中查找相關(guān)信息。測試數(shù)據(jù)可以選取高校人員(教師、學(xué)生、職工等)數(shù)據(jù)庫作為測試數(shù)據(jù)實現(xiàn)提示Database類的公有接口包含如下數(shù)據(jù)成員:?創(chuàng)建一個表。?通過增加或刪除字段修改表結(jié)構(gòu)。?刪除一個表。?在表中增加一個記錄。?從表中刪除記錄。?用適當(dāng)?shù)牟樵冋Z言從一個或多個表中查找信息。選做內(nèi)容高校人員信息通常保存在文件里面,可以從文件里面讀取人員信息;然后完成上面操作。電煤氣管理系統(tǒng)問題描述設(shè)計一個水電管理信息系統(tǒng),能夠?qū)Ω咝5乃娰M用進行管理,包括了登記費用,查詢費用,以及住戶信息管理等。在設(shè)計時要考慮到學(xué)生和教工在用水電時的不同,學(xué)生可以免費使用一定額度的水電,超過這個額度的隨便以后必須自費使用,且自費部分水電費的價格標(biāo)準(zhǔn)要高于教工的收費標(biāo)準(zhǔn)(主要是節(jié)約資源)。基本要求實現(xiàn)對用戶信息的錄入實現(xiàn)水電煤氣數(shù)據(jù)的錄入計算并查詢用戶應(yīng)繳費用查詢未繳納費用名單測試數(shù)據(jù)可選用小區(qū)物業(yè)管理部門的數(shù)據(jù),也可采用手工輸入不少于10個用戶信息的數(shù)據(jù)。實現(xiàn)提示用戶基本信息類,教工用戶信息類,學(xué)生用戶信息類收費標(biāo)準(zhǔn)類,該類存儲水電煤氣標(biāo)準(zhǔn)單位的收費標(biāo)準(zhǔn),如:煤氣,1.0元/立方米;不同類型人員水、電、煤氣信息類,這些類可以包括水表,電表,煤氣表ID,抄表時間,上次抄表時間,本次抄表時間,上次抄表度數(shù),本次抄表度數(shù),本次使用度數(shù),費用,是否繳費標(biāo)記等信息。在實現(xiàn)的時候考慮繼承和多態(tài)技術(shù)的合理使用。選做內(nèi)容實現(xiàn)用戶查詢系統(tǒng)能夠找出該用戶半年之內(nèi)的交費記錄和本次應(yīng)交費的數(shù)據(jù)。賽事管理系統(tǒng)參賽選手n人(n>1),評委m人(m>2),評委給每一選手打一個分?jǐn)?shù)score(分?jǐn)?shù)score為小于等于10的一個正實數(shù))。選手的最后得分lastScore計算方法為(1)m<9時,去掉一個最高分和一個最低分后另m-2個得分的平均值。(2)m≥9時,去掉兩個最高分和兩個最低分后另m-4個得分的平均值。假設(shè)事先已經(jīng)建立了text型的數(shù)據(jù)文件f1.txt,其中依次記錄著n個選手的編號(一個正整數(shù))、姓名(一個字符串)以及m個評委給出的得分。請編制程序,依次從數(shù)據(jù)文件f1.txt中讀入n個選手的有關(guān)信息,而后按上述規(guī)定方法計算出每一個選手的最后得分,而且往屏幕上以及另一個text型文件f2.txt中同時輸出如下形式的結(jié)果信息。假設(shè)參賽選手人數(shù)n=5,評委人數(shù)m=7,磁盤文件f1.txt中的初始數(shù)據(jù)為:1zhangjin8.89.37.98.78.99.79.22lintao8.98.28.68.88.59.19.33guojian8.98.48.78.68.68.48.64maling7.98.38.58.68.58.98.35liuyifan9.59.19.89.29.09.58.9那么,程序執(zhí)行后,屏幕顯示結(jié)果以及磁盤文件f2.txt中的結(jié)果均應(yīng)該為:參賽號姓名最高分最低分累積分最后得分1zhangjin9.77.944.98.982lintao9.38.243.98.783guojian8.98.442.98.584maling8.97.942.28.445liuyifan9.88.946.39.26思考:可進一步考慮找出比賽的第1至第k名,也在屏幕以及f2.txt中同時輸出相關(guān)的結(jié)果信息(k小于等于n,并規(guī)定若多個選手最后得分相同時,則有效分(即已刪除原來的最高分后)中最高分高者名次優(yōu)先)。學(xué)生學(xué)籍與成績管理系統(tǒng)設(shè)計一個類CStudent,類中包含一個學(xué)生的基本數(shù)據(jù)如下:編號,姓名,性別,年齡,數(shù)學(xué)成績,計算機成績,外語成績。并假設(shè)編號為整數(shù),且從1號往后連續(xù)編碼;姓名為字符串,性別為字符。如:1LiPingm18899894請采用binary文件形式,并使用隨機讀寫處理方式,對自定義CStudent類的對象數(shù)據(jù)進行存儲與讀寫處理(即是說,總按具有連續(xù)編碼的編號num為“序”來對文件中的各對象數(shù)據(jù)進行隨機讀寫處理)。并設(shè)計該類的成員函數(shù),而且對輸出運算符“<<”進行重載,使該運算符能夠完成將一個學(xué)生的信息輸出到屏幕上。要求成員函數(shù)完成以下功能:(1)從鍵盤輸入一個學(xué)生的有關(guān)信息,并將它們存入到數(shù)據(jù)文件中(按編號來確定寫出位置)。(2)按編號對學(xué)生信息進行檢索并將檢索結(jié)果顯示在屏幕上。(3)按姓名對學(xué)生信息進行檢索并將檢索結(jié)果顯示在屏幕上。(4)計算某編號學(xué)生的總成績與平均成績。(5)列出所有總成績超過n分的性別為s同學(xué)的有關(guān)信息(n,s由用戶從鍵盤輸入)。思考:可進一步對上述程序進行擴充,如,添加學(xué)生基本數(shù)據(jù)(籍貫,專業(yè),班級,其他各門成績,獎懲記錄等),并添加所需要的其他相關(guān)處理函數(shù)(如可通過咨詢教學(xué)辦公室管理人員后確立),進而將其編制成為一個簡單而實用的小型學(xué)籍與成績管理軟件。日期時間顯示(1)定義一個時間類Time,能提供時、分、秒組成的時間,并提供時間增加的方法(按秒)。(2)定義一個日期類Date,記錄年、月、日,并提供日期增加的方法(按天)。(3)由類Time和日期類Date,派生出DateTime類,除具有年、月、日、時、分、秒外,還增加國名和與格林威治時間的差。編寫一個應(yīng)用程序,輸入年、月、日、時、分、秒,在屏幕上模擬顯示一電子計時器,不斷輸出下一秒的時間和日期,以及格林威治的日期和時間。注意,當(dāng)對日期增加1天后,會涉及所謂的“進位”問題:首先算出本“日”所在的月份具有的天數(shù)N,若加1之后的“日”數(shù)值超過所在的月份具有的天數(shù)N時,“進位”到月,而月份若超過12時還要“進位”到年。思考:可對該類增加你所考慮到的其他功能,如,對日期進行輸入,計算二日期的間隔天數(shù),計算某日期為星期幾,打印對象當(dāng)前數(shù)據(jù)的y年m月的月歷,一次增加若干天,對兩個日期進行其他比較運算等。商品管理系統(tǒng)某商場有如下的幾種貨品:襯衣、鞋子、帽子、褲子、冰箱、電視、立柜、壁櫥、沙發(fā)。每一種貨物都有詳細的說明信息。襯衣:布料、尺寸、單價、產(chǎn)地、庫存量、所屬貨柜;鞋子:皮料、尺寸、單價、產(chǎn)地、庫存量、所屬貨柜;帽子:布料、樣式(平頂或尖頂)、尺寸、單價、產(chǎn)地、庫存量、所屬貨柜;褲子:布料、尺寸、單價、產(chǎn)地、庫存量、所屬貨柜;冰箱:制冷類型、樣式(二門或三門)、顏色、尺寸、單價、產(chǎn)地、庫存量、重量、所屬貨柜;電視:樣式(彩色或黑白)、顏色、尺寸、單價、產(chǎn)地、庫存量、重量、所屬貨柜;立柜:木料、顏色、尺寸、單價、產(chǎn)地、庫存量、所屬貨柜;壁櫥:木料、顏色、尺寸、單價、產(chǎn)地、庫存量、所屬貨柜;沙發(fā):木料、皮料、顏色、尺寸、單價、產(chǎn)地、庫存量、所屬貨柜;對這些商品的操作有:新商品的錄入,商品的進庫,商品的出庫,商品的調(diào)價,所屬貨柜的管理,庫存的統(tǒng)計,總價格的計算,產(chǎn)地的統(tǒng)計。要求自行設(shè)計數(shù)據(jù)結(jié)構(gòu),用類結(jié)構(gòu)將上述的貨品表示出來。在上一步的基礎(chǔ)上,將上述的商品管理計算機化,完成操作要求的功能。實現(xiàn)集合類MyVector定義并實現(xiàn)一個集合類MyVector,集合類中curSize表明當(dāng)前集合中有幾個元素,集合中最多含maxSize個元素,存放集合元素的數(shù)組是動態(tài)的。要求提供的方法有:(1)增加一個元素到集合中;(2)從集合中去掉一個元素;(3)判斷一個元素是否在集合中;(4)重載<<運算法,輸入集合;重載>>運算符輸出集合;(5)分別實現(xiàn)集合的交、并、差運算。實現(xiàn)字符串類MyString設(shè)計一個簡單的字符串類MyString,它包含設(shè)置字符串、返回字符串長度和顯示內(nèi)容等功能。能對字符串進行插入、替換、刪除、查找和連接等操作。程序要求:(1)對字符串的操作采用下列菜單形式:生成字符串顯示求字符串長度字符串插入字符串替換字符串刪除字符串查找字符串的連接返回(2)調(diào)試生成字符串s=”ABCDBCEFGHTH”求長度len(s)=12字符串的插入t=”XYZ”insstr(s,3,t)=”ABXYZCDBCEFGHTH”字符的替換將字符串s中的所有p=”BC”替換為t=”LMN”;repl(s,p,t)=”ALMNDLMNEFGHTH”字符串的查找p=”BC”:index(s,p)=2字符串的連接將字符串p=“12345678”strcat(s,p)=”ABCDBCEFGHTH12345678”線性表操作定義一個線性表類(采用類模板),實現(xiàn)下列操作:生成線性表。做元素的插入、刪除操作。元素的查找。線性表輸出。二個多項式合并一個多項式。設(shè)計一個選擇式菜單,以菜單方式選擇上述操作??记诠芾砜记诠芾硇畔⒂涗浟藢W(xué)生的缺課情況,它包括:缺課日期、第幾節(jié)課、課程名稱、學(xué)生姓名、缺課類型(遲到、早退、請假及曠課)。試設(shè)計一個考勤管理系統(tǒng),使之能提供以下功能:錄入學(xué)生的缺課記錄;修改某個學(xué)生的缺課記錄;查詢某個學(xué)生的缺課情況;統(tǒng)計某段時間內(nèi),曠課學(xué)生姓名及曠課次數(shù),按曠課次數(shù)由多到少排序;統(tǒng)計某段時間內(nèi),有學(xué)生曠課的課程及曠課人次,按曠課人次由多到少排序;系統(tǒng)以菜單方式工作學(xué)生成績統(tǒng)計管理主要功能:1)輸入一個班級的學(xué)生的基本信息(包括學(xué)好,姓名,性別,5門課程成績)。2)按姓名或者學(xué)號查找、修改、刪除和保存各個學(xué)生的信息。3)計算每個學(xué)生各門功課總分和平均分,按學(xué)號或總分排序輸出每個學(xué)生的基本信息及總分、平均分和名次。4)計算全班各門功課的平均分,顯示每門課程中低于平均分的每一個學(xué)生的學(xué)號,姓名,性別,科目,成績。5)顯示每門科目中,成績在90分以上的學(xué)生信息,以及每門科目中不及格的學(xué)生信息。6)設(shè)置系統(tǒng)登陸密碼,只有正確輸入密碼方可進入管理系統(tǒng);可更改和保存登錄密碼。用模板類實現(xiàn)中綴表達式轉(zhuǎn)后綴并求值1.設(shè)計目的(1)掌握?!昂筮M先出”的特點。(2)掌握棧的典型應(yīng)用——中綴表達式轉(zhuǎn)后綴、并利用后綴表達式求值。(3)掌握串或者數(shù)組的相關(guān)操作。(4)掌握C++模板類和STL的使用。2.主要內(nèi)容(1)中綴表達式轉(zhuǎn)換為后綴。(a)定義一個運算符棧,并輸入一個中綴表達式(運算對象存在多位整數(shù),運算符為+、-、*、/、%及括號),然后從中綴表達式中自左至右依次讀入各個字符。(b)如果是第一次讀入運算對象,則直接輸出到后綴表達式;如果不是第一次讀入運算對象,并且前一個讀入的字符是運算對象,也是直接輸出到后綴表達式;如果不是第一次讀入運算對象,并且前一個讀入的字符是運算符,則先輸出逗號作為分隔符,然后再將該運算對象輸出到后綴表達式。(c)如果讀入的是運算符,并且運算符棧為空,則將該運算符直接進棧;如果棧不為空,則比較該運算符和棧頂運算符的優(yōu)先級。若該運算符高于棧頂運算符的優(yōu)先級,則將該運算符直接進棧;若該運算符低于或等于棧頂運算符的優(yōu)先級,則將棧中高于或等于該運算符優(yōu)先級的元素依次出棧,然后再將該運算符進棧。每出棧一個運算符時,先輸出一個逗號到后綴表達式作為分隔符,然后再將出棧運算符輸出到后綴表達式。(d)如果讀入的是開括號“(”,則直接進棧;如果讀入的是閉括號“)”,則一直出棧并輸出到后綴表達式,直到遇到一個開括號“(”為止。開括號“(”和閉括號“)”均不輸出到后綴表達式。(e)重復(fù)(b)(c)(d)步,直到中綴表達式結(jié)束,然后將棧中剩余的所有運算符依次出棧。每出棧一個運算符時,先輸出一個逗號到后綴表達式作為分隔符,然后再將出棧運算符輸出到后綴表達式。(f)給后綴表達式加上‘\0’作為字符串結(jié)束標(biāo)志。(2)后綴表達式求值。(a)定義一個double型的運算數(shù)棧,將中綴表達式轉(zhuǎn)換得到的后綴表達式字符串自左向右依次讀入。(b)如果讀入的是運算對象,則將該運算對象串(下一個逗號分隔符前的部分所構(gòu)成的數(shù)字字符串)轉(zhuǎn)換為對應(yīng)的多位整數(shù)值,然后將該整數(shù)值(將自動類型轉(zhuǎn)換為double型)直接進入運算數(shù)棧。(c)如果讀入的是運算符,則立即從運算數(shù)棧中彈出兩個運算數(shù),計算兩個運算數(shù)運算后的值(運算時先出棧的元素放在運算符后面,后出棧的元素放在運算符前面),并將計算結(jié)果存回運算數(shù)棧。(d)重復(fù)(b)(c)步,直到后綴表達式結(jié)束,最后棧中保存的那個數(shù)即為該后綴表達式的計算結(jié)果。(e)和手工計算的結(jié)果進行比較,檢驗程序運行結(jié)果的正確性。假設(shè)輸入中綴表達式為:轉(zhuǎn)換后的后綴表達式為:后綴表達式求得的值為:523.設(shè)計要求(1)運算對象存在多位整數(shù)。(2)遇到除數(shù)為0的情況,應(yīng)能給出相應(yīng)提示,并提醒重新輸入中綴表達式。(3)%運算符左右遇到非整數(shù)時,應(yīng)能自動對其進行取整;%運算符左右遇到負數(shù)時,應(yīng)能給出相應(yīng)提示,并提醒重新輸入中綴表達式。(4)如果一個班級中有兩個同學(xué)同時選中該課題,則要求學(xué)號在前的同學(xué)用模板類的方式自定義棧;學(xué)號在后面的同學(xué)要求使用STL中提供的棧來實現(xiàn)。馬的遍歷及其復(fù)雜性分析1.設(shè)計目的(1)掌握棧的本質(zhì),靈活使用棧解決實際問題。(2)掌握求解問題時使用的回溯策略。(3)比較一般回溯方法和貪心算法的異同點,并嘗試分析其時間和空間代價。2.主要內(nèi)容編寫程序?qū)崿F(xiàn)馬對棋盤方格的遍歷。一個棋盤有八行八列共64個方格,輸入馬的起始方格位置,從起始方格出發(fā),一個馬的移動必須跨越兩行一列或是兩列一行。設(shè)起始方格的次序為1,馬跳過的下一個方格的次序是上一個方格的次序加1。馬必須經(jīng)過每個方格且僅經(jīng)過一次,并且馬的移動不能超越棋盤邊界,求出馬經(jīng)過這64個方格的次序。例如,圖12-25顯示了坐標(biāo)(5,3)位置上馬的所有合法移動位置(即K0~K7)。圖12-25位置K上馬的八個合法移動位置簡化問題表述則為:從坐標(biāo)(row,column)出發(fā),依次嘗試:(row-2,column+1)、(row-1,column+2)、(row+1,column+2)、(row+2,column+1)、(row+2,column-1)、(row+1,column-2)、(row-1,col

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論