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