劉玉繪 軟件工程課程設(shè)計(jì)總結(jié)報(bào)告
淮海工學(xué)院軟件工程課程設(shè)計(jì)
報(bào)告書(shū)
題目名稱(chēng):圖書(shū)信息管理系統(tǒng)
班級(jí)組別:軟件082班
組員姓名:劉玉繪,石巖,廖南,徐洪衛(wèi),徐浩然,楊晨磊
評(píng)語(yǔ):組員成績(jī):劉玉繪:;石巖:;廖南:;徐洪衛(wèi):;徐浩然:楊晨磊:;指導(dǎo)教師:批閱時(shí)間:年月日軟件工程課程設(shè)計(jì)文檔目錄序名稱(chēng)份數(shù)號(hào)12345678軟件工程課程設(shè)計(jì)收獲與體會(huì)班級(jí):軟件082組別:6姓名:劉玉繪學(xué)號(hào)110831227本次的軟件工程設(shè)計(jì)針對(duì)具體的實(shí)際項(xiàng)目來(lái)進(jìn)行需求分析,測(cè)試計(jì)劃,概要設(shè)計(jì),詳細(xì)設(shè)計(jì),測(cè)試分析等具體的步驟流程走下來(lái),歷時(shí)時(shí)間為3個(gè)星期。從這3個(gè)星期中,我收獲很多,本次課程設(shè)計(jì)的選題是圖書(shū)信息管理系統(tǒng),組員為六個(gè)人。針對(duì)具體的實(shí)際流程,我們有了明確的分工。各個(gè)流程的都深有體會(huì)。在確立了項(xiàng)目之后,我們就開(kāi)始擬定項(xiàng)目開(kāi)發(fā)計(jì)劃。在做項(xiàng)目開(kāi)發(fā)的時(shí)候,對(duì)需求分析用時(shí),開(kāi)發(fā)用時(shí),測(cè)試用時(shí),維護(hù)等等都做了詳細(xì)的分析。這樣便于在實(shí)際的開(kāi)發(fā)時(shí)隨時(shí)跟蹤計(jì)劃任務(wù)的完成度,從而讓開(kāi)發(fā)人員將進(jìn)度掌握在開(kāi)發(fā)周期的范圍內(nèi)。其次更具要求相應(yīng)的完成了其他的相關(guān)文檔。在團(tuán)隊(duì)的開(kāi)發(fā)項(xiàng)目中,團(tuán)結(jié)協(xié)作是非常的重要,這個(gè)就體現(xiàn)在人與人之間的溝通。很好的溝通能夠加快項(xiàng)目開(kāi)發(fā)的進(jìn)度。這就要求我們作為開(kāi)發(fā)人員要學(xué)會(huì)和善于與合作者溝通。通過(guò)不斷的交流和溝通來(lái)避免一些隱藏的問(wèn)題,及時(shí)的發(fā)現(xiàn)問(wèn)題,解決問(wèn)題,從而能夠按時(shí)的完成項(xiàng)目開(kāi)發(fā)進(jìn)度。在小組長(zhǎng)合理的劃分好各個(gè)時(shí)每個(gè)人的任務(wù)后,我們都按照要求在規(guī)定的時(shí)間里面完成并提交了符合要求的文檔。對(duì)于文檔在軟件工程中的重要性在課程設(shè)計(jì)中體現(xiàn)的非常的明顯。文檔是必不可少的,它重要的也是為了幫助小組成員的溝通。但是文檔也不能過(guò)多,過(guò)于的繁瑣。我們是完全按照GB8567-88的標(biāo)準(zhǔn)來(lái)完成各個(gè)文檔。不僅明確的闡述了開(kāi)發(fā)圖書(shū)信息管理系統(tǒng)的各個(gè)步驟及設(shè)計(jì),同時(shí)也簡(jiǎn)潔明了。通過(guò)本次課程設(shè)計(jì),加深了對(duì)軟件開(kāi)發(fā)流程的深入理解。這是第一次嚴(yán)格的按照軟件工程開(kāi)發(fā)的標(biāo)準(zhǔn)開(kāi)發(fā)項(xiàng)目。在課程設(shè)計(jì)過(guò)程中,認(rèn)真編寫(xiě)軟件開(kāi)發(fā)文檔。代碼編寫(xiě)完后,再認(rèn)真測(cè)試,檢查系統(tǒng)的不足之處。在設(shè)計(jì)過(guò)程中我們也認(rèn)真的學(xué)習(xí)了Rational的一套軟件,通過(guò)次工具我們完成了面向?qū)ο笮枨蠓治黾昂竺娴臏y(cè)試,相信這對(duì)我們將來(lái)工作都非常的有幫助。由于之前開(kāi)發(fā)系統(tǒng)都沒(méi)有編寫(xiě)軟件開(kāi)發(fā)文檔的習(xí)慣,因此,在編寫(xiě)軟件開(kāi)發(fā)文檔的過(guò)程中遇到了一些問(wèn)題,但是通過(guò)查閱資料等途徑解決了。其次,我學(xué)會(huì)了軟件工設(shè)計(jì)的全部過(guò)程,知道文檔的重要性,知道團(tuán)隊(duì)合作的重要性。同時(shí),對(duì)系統(tǒng)的需求分析非常重要,需求的變成直接影響項(xiàng)目的開(kāi)發(fā)進(jìn)度。這次課程設(shè)計(jì)首先對(duì)系統(tǒng)的需求理解不透徹,走了一點(diǎn)彎路,浪費(fèi)了一些時(shí)間。在以后的軟件開(kāi)發(fā)過(guò)程中盡量吸取本次課程設(shè)計(jì)的經(jīng)驗(yàn)教訓(xùn),提高項(xiàng)目開(kāi)發(fā)效率。
擴(kuò)展閱讀:軟件課程設(shè)計(jì)總結(jié)報(bào)告1
鄭志安
編號(hào):()字號(hào)
《軟件課程設(shè)計(jì)》報(bào)告
班級(jí):信科09-3班姓名:張晴剛學(xué)號(hào):08093588講師:謝紅俠
中國(guó)礦業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院
201*年1月
鄭志安
軟件課程設(shè)計(jì)任務(wù)書(shū)
專(zhuān)業(yè)年級(jí):電子信息科學(xué)與技術(shù)201*級(jí)學(xué)生姓名:張晴剛
任務(wù)下達(dá)日期:201*年10月16日
課程設(shè)計(jì)日期:201*年10月16日至201*年1月2日
課程設(shè)計(jì)題目:
類(lèi)別題目序號(hào)面向過(guò)程1,2,3,4,5,6,7面向?qū)ο?,2,3,4,5,6,7,8圖形界面3數(shù)據(jù)結(jié)構(gòu)1,2,3,4,6,9
軟件課程設(shè)計(jì)指導(dǎo)教師評(píng)閱書(shū)
指導(dǎo)教師評(píng)語(yǔ)(①基礎(chǔ)理論及基本技能的掌握;②獨(dú)立解決實(shí)際問(wèn)題的能力;
③研究?jī)?nèi)容的理論依據(jù)和技術(shù)方法;④取得的主要成果及創(chuàng)新點(diǎn);⑤工作態(tài)度及工作量;⑥總體評(píng)價(jià)及建議成績(jī);⑦存在問(wèn)題等):
成績(jī):
指導(dǎo)教師簽字:年
月日3
目錄
==============================
第一部分基礎(chǔ)題
第一題1面向過(guò)程
5.編程序,使用戶(hù)任意輸入一個(gè)年份以及該年的1月1日是星期幾,而后任意指定某一天(再輸入該年的任意一個(gè)月份日期),由程序計(jì)算出這一天是星期幾。注意,2月份閏年為29天,非閏年為28天;可被4整除而不可被100整除的年份、或者可被400整除的年份均為閏年。//思考:利用元年元月元日(即1年1月1日)是星期一的已知事實(shí),可對(duì)程序進(jìn)行改造,讓用戶(hù)僅輸入一個(gè)表示日期的年月日,則程序就應(yīng)計(jì)算出那一天是星期幾!..………………....................................7
1.1需求分析…………………………………………………………………………11.2概要設(shè)計(jì)………………………………………………………………………...11.3詳細(xì)設(shè)計(jì)與編碼………………………………………………………………...11.4調(diào)試分析………………………………………………………………………...21.5用戶(hù)使用說(shuō)明………………………………………………………………….31.6設(shè)計(jì)心得………………………………………………………………………...3
第二題
7.將輸入的羅馬數(shù)據(jù)化為10進(jìn)制數(shù)。假設(shè)羅馬數(shù)據(jù)中只使用如下7個(gè)“基值”字母:M、D、C、L、X、V、I,分別用來(lái)表示1000、500、100、50、10、5、1。如,羅馬數(shù)據(jù)LXXXVII表示10進(jìn)制的87。
將輸入的10進(jìn)制正整數(shù)轉(zhuǎn)換為羅馬數(shù)據(jù)。假設(shè)羅馬數(shù)據(jù)中只使用“基值”字母:M、D、C、L、X、V、I,分別用來(lái)表示1000、500、100、50、10、5、1。
…………………………………………………………………………3
2.1需求分析………………………………………………………………………….32.2概要設(shè)計(jì)………………………………………………………………………..32.3詳細(xì)設(shè)計(jì)與編碼………………………………………………………………...42.4調(diào)試分析………………………………………………………………………...42.5用戶(hù)使用說(shuō)明………………………………………………………………….52.6設(shè)計(jì)心得………………………………………………………………………...5
2面向?qū)ο?/p>
第三題
1.第一題自定義一個(gè)示意性的復(fù)數(shù)類(lèi)型complex,其中含有若干個(gè)成員函數(shù),使用該類(lèi)
可以完成復(fù)數(shù)的加法以及對(duì)復(fù)數(shù)的輸出。請(qǐng)完成類(lèi)定義,并編制主函數(shù),說(shuō)明complex類(lèi)對(duì)象,對(duì)定義的各成員函數(shù)進(jìn)行調(diào)用。classcomplex{doublereal;//復(fù)數(shù)實(shí)部doubleimag;//復(fù)數(shù)虛部public:complex();//無(wú)參構(gòu)造函數(shù)complex(doubler,doublei);//2參構(gòu)造函數(shù)complexaddCom(complexc2);//調(diào)用者對(duì)象與對(duì)象c2相加,返回complex類(lèi)對(duì)象voidoutCom();//輸出調(diào)用者對(duì)象的有關(guān)數(shù)據(jù)(各分量)};
進(jìn)一步,在類(lèi)中添加對(duì)復(fù)數(shù)進(jìn)行其他基本運(yùn)算(如,復(fù)數(shù)減、乘、除、取模等)的相應(yīng)成員函數(shù),并通過(guò)主函數(shù)處的調(diào)用來(lái)驗(yàn)證各函數(shù)的使用正確性!..………………….5
3.1需求分析…………………………………………………………………………..53.2概要設(shè)計(jì)………………………………………………………………………...53.3詳細(xì)設(shè)計(jì)與編碼………………………………………………………………...63.4調(diào)試分析………………………………………………………………………..63.5用戶(hù)使用說(shuō)明………………………………………………………………….73.6設(shè)計(jì)心得………………………………………………………………………..7
第四題
6編寫(xiě)一個(gè)具有如下樣式的類(lèi)模板tmplt,用于實(shí)現(xiàn)所謂的反序輸出問(wèn)題,其中使用了類(lèi)型參數(shù)T(使所處理的元素類(lèi)型可變化)以及普通參數(shù)n(元素個(gè)數(shù)也可變化):templateclasstmplt{Tarr[n];//n個(gè)T類(lèi)型的數(shù)據(jù)存放于數(shù)組arr之中public:voiddataIn();//從鍵盤(pán)輸入n個(gè)T類(lèi)型數(shù)據(jù)放入arr數(shù)組中voidreverseOut();//將arr數(shù)組中的數(shù)據(jù)按輸入的相反順序輸出};
………………………………………………………………….……………………..74.1需求分析…………………………………………………………………………..74.2概要設(shè)計(jì)………………………………………………………………………...74.3詳細(xì)設(shè)計(jì)與編碼………………………………………………………………...84.4調(diào)試分析………………………………………………………………………...84.5用戶(hù)使用說(shuō)明………………………………………………………………….94.6設(shè)計(jì)心得………………………………………………………………………...10
第五題可視化編程
用你熟悉的一種可視化編程語(yǔ)言實(shí)現(xiàn)以下漢諾塔演示程序(可以參考附件中的程序代碼)。5.1需求分析…………………………………………………………………………..115.2概要設(shè)計(jì)………………………………………………………………………...125.3詳細(xì)設(shè)計(jì)與編碼………………………………………………………………...135.4調(diào)試分析………………………………………………………………………...145.5用戶(hù)使用說(shuō)明………………………………………………………………….155.6設(shè)計(jì)心得………………………………………………………………………...15
數(shù)據(jù)結(jié)構(gòu)第六題
2假設(shè)有一個(gè)循環(huán)鏈表的長(zhǎng)度大于1,且表中既無(wú)頭結(jié)點(diǎn)也無(wú)頭指針。已知p為指向鏈表中某結(jié)點(diǎn)的指針,試編寫(xiě)算法在鏈表中刪除結(jié)點(diǎn)p的前趨結(jié)點(diǎn)。
6.1需求分析…………………………………………………………………………..176.2概要設(shè)計(jì)………………………………………………………………………...176.3詳細(xì)設(shè)計(jì)與編碼………………………………………………………………...176.4調(diào)試分析………………………………………………………………………...186.5用戶(hù)使用說(shuō)明…………………………………………………………………186.6設(shè)計(jì)心得………………………………………………………………………...18
第七題編程序,按如下方法求A矩陣的轉(zhuǎn)置矩陣B:輸入兩個(gè)正整數(shù)m和n,而后通過(guò)
使用指針配合new運(yùn)算符生成一個(gè)m行n列的二維動(dòng)態(tài)數(shù)組A以及另一個(gè)n行m列的二維動(dòng)態(tài)數(shù)組B,之后為A輸入數(shù)據(jù)(A矩陣數(shù)據(jù)),進(jìn)而求出其轉(zhuǎn)置矩陣B(數(shù)據(jù)放動(dòng)態(tài)數(shù)組B中)并輸出結(jié)果。
7.1需求分析…………………………………………………………………………..197.2概要設(shè)計(jì)………………………………………………………………………...197.3詳細(xì)設(shè)計(jì)與編碼………………………………………………………………...197.4調(diào)試分析………………………………………………………………………...197.5用戶(hù)使用說(shuō)明………………………………………………………………….197.6設(shè)計(jì)心得………………………………………………………………………...20
1面向過(guò)程第5題5.
編程序,使用戶(hù)任意輸入一個(gè)年份以及該年的1
月1日是星期幾,而后任意指定某一天(再輸入該年的任意一個(gè)月份日期),由程序計(jì)算出這一天是星期幾。注意,2月份閏年為29天,非閏年為28天;可被4整除而不可被100整除的年份、或者可被400整除的年份均為閏年。//思考:利用元年元月元日(即1年1月1日)是星期一的已知事實(shí),可對(duì)程序進(jìn)行改造,讓用戶(hù)僅輸入一個(gè)表示日期的年月日,則程序就應(yīng)計(jì)算出那一天是星期幾。
需求分析:
當(dāng)我們處理查找具體年份月日是周幾的問(wèn)題,往往會(huì)遇到閏年平年的問(wèn)題,還有七天一循環(huán)的問(wèn)題。因此實(shí)現(xiàn)此類(lèi)算法是很有必要的。1.2概要設(shè)計(jì):
對(duì)于指定具體年月日所在本年的第多少天,有如下算法。
intsum_day(intmonth,intday){inti;intday_tab[12]={31,28,31,30,31,30,31,31,30,31,30,31};for(i=0;i=3)days=days+1;s=s+(days-1)%7;if(s>7)s=s%7;
cout
intyear,month,day,days,s;coutyear>>s;Intyear,month,day,days,s;coutmonth>>day;
days=sum_day(month,day);if(leap(year)&&month>=3)
Cin>>year>>s;days=days+1;
Cin>>month>>days=s+(days-1)%7;
;if(s>7)
s=s%7;
cout
Cout
1.year,month,day,days,s的類(lèi)型是int型的。
2.對(duì)于平年閏年的分析,要分別對(duì)待,加以區(qū)分。3.注意體會(huì)嘗試程序的健壯性。4.嘗試用其他方法完成該程序
1.5用戶(hù)說(shuō)明
用戶(hù)可直接通過(guò)鍵盤(pán)向界面輸入你指定年份1月1日是星期幾,然后輸入本年的月日,即可在屏幕上得到本年指定年月日是周幾了。1.6設(shè)計(jì)心得:
在這個(gè)程序設(shè)計(jì)中,所用的都是最基本的知識(shí),對(duì)于最基本的知識(shí)一定要達(dá)到熟練的程度,才能熟中生巧,設(shè)計(jì)出高質(zhì)量的程序。
2.面向過(guò)程第7題將輸入的羅馬數(shù)據(jù)化為10進(jìn)制數(shù)。假設(shè)羅馬數(shù)據(jù)中
只使用如下7個(gè)“基值”字母:M、D、C、L、X、V、I,分別用來(lái)表示1000、500、100、50、10、5、1。
2.1需求分析:
我們?cè)谏钪谐?huì)遇見(jiàn)用羅馬數(shù)字表示的代碼或者數(shù)學(xué)、物理等學(xué)習(xí)過(guò)程中,往往會(huì)遇到將羅馬數(shù)字轉(zhuǎn)化為十進(jìn)制數(shù)的計(jì)算,設(shè)計(jì)一個(gè)簡(jiǎn)單的轉(zhuǎn)換程序是很有意義的2.2概要設(shè)計(jì)
將輸入的10進(jìn)制正整數(shù)轉(zhuǎn)換為羅馬數(shù)據(jù)。假設(shè)羅馬數(shù)據(jù)中只使用“基值”字母:M、D、C、L、X、V、I,分別用來(lái)表示1000、500、100、50、10、5、1。顯然是一個(gè)翻譯程序,肯定是將一種表達(dá)形式換算成另一種表達(dá)形式。該題是把羅馬數(shù)字轉(zhuǎn)換成十進(jìn)制數(shù),初步設(shè)想:對(duì)于每個(gè)輸入的字母,用一個(gè)算法返回一個(gè)指定的數(shù)值,算法如下:
case"M":return1000;break;case"D":return500;break;case"C":return100;break;case"L":return50;break;case"X":return10;break;case"V":return5;break;case"I":return1;break;
對(duì)于羅馬數(shù)據(jù)中每個(gè)字母對(duì)應(yīng)數(shù)據(jù)累加過(guò)程,我們有如下算法:
while((y=getchar())!="\\n"){if(f(x)
case"I":return1;break;}}
運(yùn)行結(jié)果如下:
Cout
2.4調(diào)試分析
1程序開(kāi)始不可少語(yǔ)句intf(char);intm=0;
charx,y;//設(shè)“基值”并作零初始化,若不做初始化,字母輸出任意值。2.將對(duì)應(yīng)的字母返回對(duì)應(yīng)的值,然后把數(shù)值累加起來(lái),除了對(duì)應(yīng)之外沒(méi)有其他難點(diǎn)
3.嘗試著用其他方法編寫(xiě)2.5用戶(hù)使用說(shuō)明:
用戶(hù)直接從鍵盤(pán)輸入羅馬數(shù)字,按回車(chē)鍵可以方便得到輸出的阿拉伯?dāng)?shù)字。
2.6設(shè)計(jì)心得:
此程序在設(shè)計(jì)之前,一定要分析好設(shè)計(jì)思路,分析每個(gè)羅馬字母中返回的數(shù)值,做好相應(yīng)的處理。
//第三題1.自定義一個(gè)示意性的復(fù)數(shù)類(lèi)型complex,其中含有若干個(gè)成員函數(shù),//使用該類(lèi)可以完成復(fù)數(shù)的加法以及對(duì)復(fù)數(shù)的輸出。//
//請(qǐng)完成類(lèi)定義,并編制主函數(shù),說(shuō)明complex類(lèi)對(duì)象,對(duì)定義的各成員函數(shù)進(jìn)行調(diào)用。
3.1需求分析
運(yùn)用對(duì)象實(shí)現(xiàn)該算法,說(shuō)明complex類(lèi)對(duì)象,對(duì)定義的各成員函數(shù)進(jìn)行調(diào)用,是很有必要的。3.2概要設(shè)計(jì)classComplex{
public:
Complex(){real=0;imag=0;}//無(wú)參構(gòu)造函數(shù)
Complex(doubler,doublei){real=r;imag=i;}//2參構(gòu)造函數(shù)ComplexaddCom(Complex&c2);//實(shí)現(xiàn)加法運(yùn)算;ComplexaddCom2(Complex&d2);//實(shí)現(xiàn)減法運(yùn)算;ComplexaddCom3(Complex&e2);//實(shí)現(xiàn)乘法運(yùn)算;ComplexaddCom4(Complex&f2);//實(shí)現(xiàn)除法運(yùn)算;voidoutCom();//輸出結(jié)果運(yùn)算private:
doublereal;//復(fù)數(shù)實(shí)部doubleimag;//復(fù)數(shù)虛部};
3.3詳細(xì)設(shè)計(jì)與編碼#includeusingnamespacestd;classComplex{
public:
Complex(){real=0;imag=0;}
Complex(doubler,doublei){real=r;imag=i;}ComplexaddCom(Complex&c2);ComplexaddCom2(Complex&d2);ComplexaddCom3(Complex&e2);ComplexaddCom4(Complex&f2);voidoutCom();private:doublereal;doubleimag;};
ComplexComplex::addCom(Complex&c2){Complexc;
c.real=real+c2.real;c.imag=imag+c2.imag;returnc;}
ComplexComplex::addCom2(Complex&d2){Complexd;
d.real=real-d2.real;d.imag=imag-d2.imag;returnd;}
ComplexComplex::addCom3(Complex&e2){Complexe;
e.real=real*e2.real-imag*e2.imag;e.imag=real*e2.imag+e2.real*imag;returne;}
ComplexComplex::addCom4(Complex&f2){Complexf;
f.real=(real*f2.real+imag*f2.imag)/(f2.real*f2.real+f2.imag*f2.imag);f.imag=(f2.real*imag-real*f2.imag)/(f2.real*f2.real+f2.imag*f2.imag);returnf;}
voidComplex::outCom()
{cout
開(kāi)始聲明一個(gè)Complex類(lèi),并定義doublereal、imag;聲明類(lèi)的函數(shù),構(gòu)造函數(shù),加減乘除運(yùn)算
c.real=real+c2.real;c.imag=imag+c2.imag;d.real=real-d2.real;d.imag=imag-d2.imag;e.real=real*e2.real-imag*e2.imag;e.imag=real*e2.imag+e2.real*imag;
f.real=(real*f2.real+imag*f2.imag)/(f2.real*f2.real+f2.imag*f2.imag);f.imag=(f2.real*imag-real*f2.imag)/(f2.real*f2.real+f2.imag*f2.imag);輸出其加減乘除的值終止
運(yùn)行結(jié)果如下:
3.4調(diào)試分析
1.定義Complex類(lèi)很重要。
2.在Complex類(lèi)中實(shí)現(xiàn)對(duì)兩復(fù)數(shù)的加減乘除運(yùn)算。
3.寫(xiě)程序時(shí)的位置對(duì)應(yīng),以便查錯(cuò)。
3.5用戶(hù)使用說(shuō)明:屏幕直接顯示。3.6設(shè)計(jì)心得:
通過(guò)此題,我對(duì)上學(xué)期所學(xué)類(lèi)的定義以及復(fù)數(shù)運(yùn)算達(dá)到了復(fù)習(xí)的效果,熟悉了在類(lèi)中調(diào)用個(gè)復(fù)數(shù)進(jìn)行加減乘除運(yùn)算的基本操作。對(duì)于期原理有一定的掌握,所以這個(gè)程序設(shè)計(jì)倒是不難。
第四題/*6.
編寫(xiě)一個(gè)具有如下樣式的類(lèi)模板tmplt,用于實(shí)現(xiàn)所謂的反序輸出問(wèn)
題,
其中使用了類(lèi)型參數(shù)T(使所處理的元素類(lèi)型可變化)以及普通參數(shù)n(元素個(gè)數(shù)也可變化):
templateclasstmplt{
Tarr[n];//n個(gè)T類(lèi)型的數(shù)據(jù)存放于數(shù)組arr之中public:voiddataIn();//從鍵盤(pán)輸入n個(gè)T類(lèi)型數(shù)據(jù)放入arr數(shù)組中voidreverseOut();//將arr數(shù)組中的數(shù)據(jù)按輸入的相反順序輸出};而后編制主函數(shù),將類(lèi)模板實(shí)例化為某個(gè)具體的類(lèi)并說(shuō)明類(lèi)對(duì)象,之后通過(guò)對(duì)象調(diào)用其負(fù)責(zé)輸入數(shù)據(jù)的成員函數(shù),再通過(guò)對(duì)象調(diào)用另一成員函數(shù)按反序輸出那些輸入數(shù)據(jù)。*/
4.1需求分析
應(yīng)用類(lèi)模板tmplt,用于實(shí)現(xiàn)所謂的反序輸出問(wèn)題,使用了類(lèi)型參數(shù)T以及普通參數(shù)n。4.2概要設(shè)計(jì)
templateclasstmplt{Tarr[n];//n個(gè)T類(lèi)型的數(shù)據(jù)存放于數(shù)組arr之中public:voiddataIn();//從鍵盤(pán)輸入n個(gè)T類(lèi)型數(shù)據(jù)放入arr數(shù)組中voidreverseOut();//將arr數(shù)組中的數(shù)據(jù)按輸入的相反順序輸出};
4.3詳細(xì)設(shè)計(jì)與編碼#include#includeusingnamespacestd;templateclasstmplt{Tarr[n];public:
voiddateIn(){inti;
for(i=0;i>arr[i];};
voidreverseOut(){inti;
for(i=n-1;i>=0;i--)coutCout
用戶(hù)可以輸入若干組不同大小的數(shù)據(jù),然后按回車(chē)鍵,程序系統(tǒng)會(huì)自動(dòng)在屏幕上生成用戶(hù)想要得到的結(jié)果。
4.6設(shè)計(jì)心得:
通過(guò)該程序的設(shè)計(jì),更體會(huì)到在大規(guī)模的信息調(diào)用類(lèi)以及生成類(lèi)會(huì)更好,更進(jìn)一步培養(yǎng)自己的編程風(fēng)格,先整體規(guī)劃,然后一步一步實(shí)現(xiàn);出錯(cuò)處理的能力。
第五題.可視化編程
用你熟悉的一種可視化編程語(yǔ)言實(shí)現(xiàn)以下漢諾塔演示程序(可以參考附件中的程序代碼)。
5.1需求分析
實(shí)現(xiàn)漢諾塔從第一個(gè)位置移到第三個(gè)位置
實(shí)5.2概要設(shè)計(jì)
實(shí)現(xiàn)實(shí)程序是用MFC制作,在進(jìn)入MFC時(shí)選擇基本對(duì)話框來(lái)建立工程,然
后根據(jù)題目圖形的需求,在工作區(qū)的Resourceview中的Dialog進(jìn)行框架的設(shè)計(jì),跟著視頻思路往下走。
5.3詳細(xì)設(shè)計(jì)與編碼實(shí)現(xiàn)過(guò)程
可視化編程
5.4調(diào)試分析
移動(dòng)過(guò)程中要細(xì)心,按指定程序移動(dòng)。
5.5用戶(hù)使用說(shuō)明
本程序是漢諾塔程序使用很簡(jiǎn)單,直接點(diǎn)擊按鈕移動(dòng)就能得到結(jié)果。5.6設(shè)計(jì)心得可視化編程編程由于以前沒(méi)接觸過(guò)所以較難,許多函數(shù)都
要查資料,或上網(wǎng)搜尋。
第六題
6數(shù)據(jù)結(jié)構(gòu)第二題假設(shè)有一個(gè)循環(huán)鏈表的長(zhǎng)度大于1,且表中既無(wú)
頭結(jié)點(diǎn)也無(wú)頭指針。已知p為指向鏈表中某結(jié)點(diǎn)的指針,試編寫(xiě)算法在鏈表中刪除結(jié)點(diǎn)p的前趨結(jié)點(diǎn)。6.1需求分析
在數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)中,鏈表是最常見(jiàn)的存儲(chǔ)方式,鏈表的插入,刪除,改正也就是很常用的操作,對(duì)它的學(xué)習(xí)就顯得很有必要而且很有意義。
6.2概要設(shè)計(jì)
1.對(duì)節(jié)點(diǎn)的刪除,無(wú)疑先要定義一個(gè)結(jié)構(gòu)體和指針,運(yùn)來(lái)存放和查找要?jiǎng)h除的節(jié)點(diǎn)structNode*next
2.設(shè)計(jì)一個(gè)類(lèi)求前驅(qū)節(jié)點(diǎn):node1*getPriorNode(node1*node)3.刪除指向結(jié)點(diǎn)的前驅(qū)結(jié)點(diǎn):delPriorNode(node1*node)4.輸出原始鏈表:printList(node1*node)
5.主函數(shù)將操作后的鏈表輸出。
6.3詳細(xì)設(shè)計(jì)與編碼#include#include
typedefstruct_node1{
struct_node1*next;intvalue;}node1;
node1*getPriorNode(node1*node){
node1*next;
if(!node){
returnNULL;}
next=node->next;
while(node!=next->next){
next=next->next;}
returnnext;}
voiddelPriorNode(node1*node){
node1*prior=getPriorNode(node);
if(prior){
getPriorNode(prior)->next=prior->next;}}
voidprintList(node1*node){
node1*next;
開(kāi)始node1a,b,c,d,e,f,g;對(duì)每個(gè)節(jié)點(diǎn)的數(shù)值區(qū)賦值,以及說(shuō)明其指針指向的地址printList(&a);delPriorNode(&c);printList(&a);結(jié)束
if(!node){
return;}
printf("%d",node->value);next=node->next;while(node!=next){
printf("-->%d",next->value);next=next->next;}
printf("\\n");}
voidmain(){
node1a,b,c,d,e,f,g;
a.value=1;b.value=2;c.value=3;d.value=4;e.value=5;f.value=6;g.value=7;
a.next=&b;b.next=&c;c.next=&d;d.next=&e;e.next=&f;f.next=&g;g.next=&a;
printf("Originallist:");printList(&a);delPriorNode(&c);
printf("Deletednode3"spriornode(node2):");printList(&a);}
運(yùn)行結(jié)果:
6.4調(diào)試分析
編寫(xiě)過(guò)程要細(xì)心,缺分號(hào),括號(hào)的現(xiàn)象也有時(shí)發(fā)生
6.5用戶(hù)使用說(shuō)明
程序中的數(shù)字是從編程時(shí)輸入的,平心而論該程序還有很大的改編空間,是一個(gè)靜態(tài)的檢驗(yàn)程序
6.6設(shè)計(jì)心得
進(jìn)一步掌握了鏈表的基本操作,前驅(qū)指針在查找節(jié)點(diǎn)時(shí)的作用,類(lèi)的整體設(shè)計(jì)和個(gè)類(lèi)之間的關(guān)系,弄懂這些編程的要點(diǎn),無(wú)論是在今后的學(xué)習(xí)還是調(diào)試過(guò)程中都是很有意義的。
7據(jù)結(jié)構(gòu)第三題
/*3.編程序,按如下方法求A矩陣的轉(zhuǎn)置矩陣B:輸入兩個(gè)正整數(shù)m和n,而后通過(guò)使用指針配合new運(yùn)算符生成一個(gè)m行n列的二維動(dòng)態(tài)數(shù)組A以及另一個(gè)n行m列的二維動(dòng)態(tài)數(shù)組B,之后為A輸入數(shù)據(jù)(A矩陣數(shù)據(jù)),進(jìn)而求出其轉(zhuǎn)置矩陣B(數(shù)據(jù)放動(dòng)態(tài)數(shù)組B中)并輸出結(jié)果。*/
7..1需求分析
矩陣是物理數(shù)學(xué)中極其常見(jiàn)的數(shù)學(xué)工具,研究它的運(yùn)算也是十分重要的,特別的在計(jì)算機(jī)程序中的應(yīng)用是更重要的
7.2概要設(shè)計(jì)
輸入兩個(gè)正整數(shù)m和n,而后通過(guò)使用指針配合new運(yùn)算符生成一個(gè)m行n列的二維動(dòng)態(tài)數(shù)組A以及另一個(gè)n行m列的二維動(dòng)態(tài)數(shù)組B,之后為A輸入數(shù)據(jù)(A矩陣數(shù)據(jù)),進(jìn)而求出其轉(zhuǎn)置矩陣B(數(shù)據(jù)放動(dòng)態(tài)數(shù)組B中)。既是要求又是提示,故有一下提綱:
1.A=newint*[m];B=newint*[n];建立動(dòng)態(tài)數(shù)組分別存放行和列
2.for(a=0;a
7.3詳細(xì)設(shè)計(jì)與編碼
#includeusingnamespacestd;voidmain(){inta,b,m,n;int**A,**B;cin>>m>>n;A=newint*[m];for(a=0;a
結(jié)束刪除動(dòng)態(tài)數(shù)組A,B.在n行m列的二維數(shù)組中依次賦值。cout
7.4調(diào)試分析
本程序的編寫(xiě),調(diào)試費(fèi)了好大的力氣,具體的:
1.int**A,**B指針的定義符號(hào)問(wèn)題,即指向指針的指針
2.A=newint*[m],B=newint*[n]動(dòng)態(tài)數(shù)組的定義問(wèn)題
3.for(a=0;a
8課程設(shè)計(jì)總結(jié):
通過(guò)多次軟件課程設(shè)計(jì)學(xué)習(xí),我已經(jīng)基本熟練對(duì)面向過(guò)程,面向?qū)ο,可視化編程,?shù)據(jù)結(jié)構(gòu)的基本操作。并為以后進(jìn)一步學(xué)習(xí)計(jì)算機(jī)編程奠定了良好的基礎(chǔ)。相信在以后的學(xué)習(xí)中,我能更一步領(lǐng)悟到編程給我?guī)?lái)的快樂(lè)。
友情提示:本文中關(guān)于《劉玉繪 軟件工程課程設(shè)計(jì)總結(jié)報(bào)告》給出的范例僅供您參考拓展思維使用,劉玉繪 軟件工程課程設(shè)計(jì)總結(jié)報(bào)告:該篇文章建議您自主創(chuàng)作。
來(lái)源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問(wèn)題,請(qǐng)聯(lián)系我們及時(shí)刪除。