




已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
安徽省巢湖學(xué)院計(jì)算機(jī)與信息工程學(xué)院課程設(shè)計(jì)報(bào)告課程名稱 oracle數(shù)據(jù)庫 課題名稱 企業(yè)人事管理系統(tǒng) 專業(yè)班級(jí) 11計(jì)科工程*班 學(xué) 號(hào) 姓 名 聯(lián)系方式指導(dǎo)教師邢慧芬 完成日期: 年 月 日目 錄1 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書11.1 題目11.2 要求12 總體設(shè)計(jì)12.1 功能模塊設(shè)計(jì)12.2 所有功能模塊的流程圖13 詳細(xì)設(shè)計(jì)13.1 程序中所采用的數(shù)據(jù)結(jié)構(gòu)及存儲(chǔ)結(jié)構(gòu)的說明13.2 算法的設(shè)計(jì)思想23.3 稀疏矩陣各種運(yùn)算的性質(zhì)變換24 調(diào)試與測(cè)試:24.1 調(diào)試方法與步驟:24.2 測(cè)試結(jié)果的分析與討論:34.3 測(cè)試過程中遇到的主要問題及采取的解決措施:35 時(shí)間復(fù)雜度的分析:46 源程序清單和執(zhí)行結(jié)果47 總結(jié)88 參考文獻(xiàn)81 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書1.1 題目【示例】用三元組實(shí)現(xiàn)稀疏矩陣的轉(zhuǎn)置、相加、相乘1.2 要求【示例】(1)用creat函數(shù)創(chuàng)建三元組;(2)用print函數(shù)打印計(jì)算結(jié)果;(3)用add函數(shù)實(shí)現(xiàn)稀疏矩陣的相加運(yùn)算;(4)用mult 函數(shù)實(shí)現(xiàn)稀疏矩陣的相乘運(yùn)算;(5)用Transm函數(shù)實(shí)現(xiàn)稀疏矩陣的轉(zhuǎn)置運(yùn)算;(6)用menu函數(shù)創(chuàng)建一個(gè)菜單2 總體設(shè)計(jì)2.1 功能模塊設(shè)計(jì)根據(jù)課程設(shè)計(jì)題目的功能要求,各個(gè)功能模塊的組成框圖如下:【示例】輸入矩陣1矩陣相加輸入矩陣2計(jì)算結(jié)果矩陣相減輸入矩陣1輸入矩陣2計(jì)算結(jié)果矩陣轉(zhuǎn)置輸入矩陣計(jì)算結(jié)果退出2.2 所有功能模塊的流程圖【示例1】略3 詳細(xì)設(shè)計(jì)模塊功能說明:如函數(shù)功能、入口及出口參數(shù)說明,函數(shù)調(diào)用關(guān)系描述等;【示例1】3.1 程序中所采用的數(shù)據(jù)結(jié)構(gòu)及存儲(chǔ)結(jié)構(gòu)的說明以順序存儲(chǔ)結(jié)構(gòu)來表示三元組表,則可得到稀疏矩陣的一種壓縮存儲(chǔ)方式三元組順序表。/-稀疏矩陣的三元組順序存儲(chǔ)表示-#define MAXSIZE 100 /*假設(shè)非零元個(gè)數(shù)的最大值為20*/typedef structint i,j; /*該非零元的行下標(biāo)和列下標(biāo)*/ int v;Triple;typedef structTriple dataMAXSIZE+1; /*非零元三元組表,data0未用*/ int mu,nu,tu; /*矩陣的行數(shù),列數(shù)和非零元個(gè)數(shù)*/TSMastrix;在此,data域中表示非零元得三元組是以行序?yàn)橹餍蝽樞蚺帕械?,這樣有利于進(jìn)行某些矩陣運(yùn)算。3.2 算法的設(shè)計(jì)思想a) 相加運(yùn)算對(duì)于兩個(gè)稀疏矩陣相加,即行與行,列與列相加b)相乘運(yùn)算若設(shè)Q=M*N 其中M是m1*n1矩陣,N是m2*n2矩陣,只有當(dāng)n1=m2時(shí)才可以相乘。乘積矩陣Q中元素 Q(i,j)=M(i,k)*N(k,j) 1im1,1jn2在算法中,不論M(i,k)和 N(k,j)的值是否為零,都要進(jìn)行一次乘法運(yùn)算,而實(shí)際上,這兩者有一個(gè)值為零時(shí),其乘積也為零。因此,在對(duì)稀疏矩陣進(jìn)行運(yùn)算時(shí),應(yīng)免去這種無效操作,只需在M.data和N.data中找到相應(yīng)的各對(duì)元素(即M.data中的j值和 N.data中的i值相等的各對(duì)元素)相乘即可。c) 轉(zhuǎn)置運(yùn)算 對(duì)于一個(gè)m*n的矩陣M,它的轉(zhuǎn)置矩陣T是一個(gè)n*m的矩陣,且T(i,j)=M(j,i),1in,1jm。完成一個(gè)稀疏矩陣的轉(zhuǎn)置分為三步:(1)將矩陣的行列值相互交換;(2)將每個(gè)三元組中的i和j相互調(diào)換;(3)重排三元組之間的次序便可實(shí)現(xiàn)矩陣的轉(zhuǎn)置;3.3 稀疏矩陣各種運(yùn)算的性質(zhì)變換a)加法運(yùn)算兩個(gè)稀疏矩陣的加和矩陣仍然是稀疏矩陣b)乘法運(yùn)算兩個(gè)稀疏矩陣的乘積矩陣不是稀疏矩陣c)轉(zhuǎn)置運(yùn)算一個(gè)稀疏矩陣的轉(zhuǎn)置矩陣仍然是稀疏矩陣4 調(diào)試與測(cè)試:4.1 調(diào)試方法與步驟:【示例1】簡(jiǎn)述測(cè)試步驟第一步:測(cè)試矩陣加法:過程(略)第二步:測(cè)試矩陣乘法:過程(略)第三步:測(cè)試矩陣轉(zhuǎn)置:過程(略)4.2 測(cè)試結(jié)果的分析與討論:(測(cè)試要寫出測(cè)試用例及每個(gè)用例結(jié)果的的截圖)4.3 測(cè)試過程中遇到的主要問題及采取的解決措施:(略)5 時(shí)間復(fù)雜度的分析:a)加法運(yùn)算由于兩矩陣行列相等,故時(shí)間復(fù)雜度為O(行*列)b)乘法運(yùn)算設(shè)M是m1*n1矩陣,N是m2*n2矩陣,則時(shí)間復(fù)雜度是O(m1*n1*n2)c)轉(zhuǎn)置運(yùn)算時(shí)間復(fù)雜度和原矩陣的列數(shù)及非零元的個(gè)數(shù)的乘積成正比,即O(mu*nu)6 源程序清單和執(zhí)行結(jié)果(清單中應(yīng)有足夠的注釋)【示例1】#include#include#include#include#define MAXSIZE 100 /*假設(shè)非零元個(gè)數(shù)的最大值為20*/typedef structint i,j; /*該非零元的行下標(biāo)和列下標(biāo)*/ int v;Triple;typedef structTriple dataMAXSIZE+1; /*非零元三元組表,data0未用*/ int mu,nu,tu; /*矩陣的行數(shù),列數(shù)和非零元個(gè)數(shù)*/juzheng;void creat(juzheng &T)/*創(chuàng)建三元組*/ int k,i,j; printf(n 請(qǐng)輸入矩陣n); do printf(n請(qǐng)輸入矩陣的行數(shù),列數(shù),非零元素個(gè)數(shù)n); scanf(%d%d%d,&T.mu,&T.nu,&T.tu); if(T.mu20)|(T.nu20)|(T.tu/(T.mu*T.nu)0.05)|(T.tuT.mu*T.nu)|T.tuMAXSIZE) printf(n 不滿足,請(qǐng)重新輸入!n); while(T.mu20)|(T.nu20)|(T.tu/(T.mu*T.nu)0.05)|(T.tuT.mu*T.nu)|T.tuMAXSIZE); for(k=1;k=T.tu;k+) do printf(n請(qǐng)輸入非零元素的行數(shù)i,列數(shù)j,數(shù)值vn); scanf(%d%d%d,&T.datak.i,&T.datak.j,&T.datak.v); if(T.datak.iT.mu)|(T.datak.jT.nu)|(T.datak.v=0) printf(n 不滿足,請(qǐng)重新輸入!n); while(T.datak.iT.mu)|(T.datak.jT.nu)|(T.datak.v=0); return;void print(juzheng A) /*打印計(jì)算結(jié)果*/int q,n,k,a=0; printf(nn矩陣為:n); for(n=1;n=A.mu;n+) for(k=1;k=A.nu;k+) for(q=1;qA.tu)printf(t%-3d,a); printf(n); void add(juzheng A,juzheng B)/*加法運(yùn)算*/ int n,k; if(A.mu!=B.mu|A.nu!=B.nu) printf(n 不滿足相加條件); printf(n 兩矩陣行列各自相等才可加); else for(n=1;n=A.tu;n+) for(k=1;k=B.tu;k+)/*將矩陣T的非零元接至M中*/ if(A.datan.i=B.datak.i&A.datan.j=B.datak.j) A.datan.v+=B.datak.v; B.datak.v=0; for(k=1;k=B.tu;k+) if(B.datak.v!=0) A.dataA.tu+1.i=B.datak.i; A.dataA.tu+1.j=B.datak.j; A.dataA.tu+1.v=B.datak.v; A.tu+; print(A); void mult(juzheng A,juzheng B)/*乘法運(yùn)算*/int z,n1,k1,n2,k2,s,sum,count=0; juzheng Z; int b1100100,b2100100,b3100100; if(A.nu!=B.mu)printf(矩陣列數(shù)與行數(shù)不等,不能進(jìn)行乘法運(yùn)算); else Z.mu=A.mu; Z.nu=B.nu; for(n1=1;n1=A.mu;n1+)/*初始化為零*/ for(k1=1;k1=A.nu;k1+)b1n1k1=0; for(n1=1;n1=A.mu;n1+) for(k1=1;k1=A.nu;k1+)b2n1k1=0; for(n1=1;n1=A.tu;n1+)/*裝載三元組數(shù)據(jù)*/ b1A.datan1.iA.datan1.j=A.datan1.v; for(n1=1;n1=B.tu;n1+) b2B.datan1.iB.datan1.j=B.datan1.v; for(n1=1;n1=Z.mu;n1+) for(k2=1;k2=Z.nu;k2+) sum=0; for(k1=1;k1=Z.nu;k1+) sum+=b1n1k1*b2k1k2; if(sum!=0) count+; Z.datacount.i=n1; Z.datacount.j=k2; Z.datacount.v=sum; Z.tu=count; print(Z); void Transm(juzheng A)/*轉(zhuǎn)置運(yùn)算*/ juzheng B; int p,q,col; B.mu=A.nu; B.nu=A.mu; B.tu=A.tu; if(B.tu) q=1; for(col=1;col=A.nu;col+) for(p=1;p=A.tu;p+) if(A.datap.j=col) B.dataq.i=A.datap.j; B.dataq.j=A.datap.i; B.dataq.v=A.datap.v; q+; print(B);char menu()/菜單 char n; printf(n ); printf(稀疏矩陣運(yùn)算器n); printf(n); printf(實(shí)現(xiàn)運(yùn)算n); printf(n); printf(1:矩陣相加n);printf(2:矩陣相乘n); printf(3:矩陣轉(zhuǎn)置n); printf(4:退出n); printf(n); printf(n你要選擇的操作是: ); n=getchar(); return n;main() juzheng A,B; for(;) switch(menu() case 1:creat(A); print(A); creat(B); print(B); printf(n); add(A,B); getch(); break; case 2:creat(A); print(A); creat(B); print(B); printf(n); mult(A,B); getch(); break; case 3: creat(A); print(A); printf(n); Transm(A); getch(); break; case 4: exit(0); system(PAUSE); return EXIT_SUCCESS;7 總結(jié)【示例1】本程序在剛開始調(diào)試時(shí)有許多錯(cuò)誤,但在我的努力及同學(xué)的幫助下都被一一克服,現(xiàn)在在操作本程序時(shí)可根據(jù)提示進(jìn)行相關(guān)操作,能正確輸出結(jié)果。在剛開始的幾次調(diào)試中曾經(jīng)出現(xiàn)過不能運(yùn)行、不能產(chǎn)生十以內(nèi)隨機(jī)數(shù)字、不能隨機(jī)出現(xiàn)加減、不會(huì)正確輸出結(jié)果、不能進(jìn)行循環(huán)練習(xí)等等問題。經(jīng)過我的努力及同學(xué)的幫助,這些問題得到克服,并且使程序的功能也得到了一定的完善。現(xiàn)在它能對(duì)出錯(cuò)的題目發(fā)出報(bào)警聲,并且給出正確答案。最后還能分別輸出對(duì)錯(cuò)的題數(shù)及所得分?jǐn)?shù)。在這次設(shè)計(jì)過程中,不僅復(fù)習(xí)課本上所學(xué)知識(shí),還通過查資料、問同學(xué)學(xué)到了課本上沒有的知識(shí)。從而啟發(fā)我
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- DB1301T 414-2022 太行山淺山區(qū)桃標(biāo)準(zhǔn)園建設(shè)技術(shù)規(guī)范
- 寧波萬華入廠培訓(xùn)考試試題及答案
- 龍門吊操作證考試試題及答案
- 建筑c證模擬考試試題及答案
- 2025年安徽馬鞍山市當(dāng)涂縣事業(yè)單位招聘工作人員各崗位達(dá)到最低分?jǐn)?shù)控制線考生筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 2025北京九洲科瑞科技有限公司招聘店鋪運(yùn)營(yíng)等崗位27人筆試參考題庫附帶答案詳解
- 安全員知識(shí)b證考試試題及答案
- 教育培訓(xùn)機(jī)構(gòu)場(chǎng)地租賃官方合同書
- 《反證法》提升訓(xùn)練
- 公共交通車輛使用權(quán)特許經(jīng)營(yíng)協(xié)議
- 醫(yī)院市場(chǎng)營(yíng)銷績(jī)效考核管理辦法
- 醫(yī)院清潔消毒與滅菌課件
- 2022年小學(xué)生詩詞大賽參考題庫200題(含答案)
- 水泥廠工藝流程圖
- 檢驗(yàn)檢測(cè)服務(wù)公司合作戰(zhàn)略方案
- DB34∕T 451-2017 地理標(biāo)志產(chǎn)品 舒城小蘭花
- 《卓有成效的管理者》Word電子版電子版本
- 螺紋基本尺寸對(duì)照表
- T∕CIC 049-2021 水泥窯用固體替代燃料
- 制缽機(jī)的設(shè)計(jì)(機(jī)械CAD圖紙)
- 《土木工程生產(chǎn)實(shí)習(xí)報(bào)告》
評(píng)論
0/150
提交評(píng)論