數(shù)據(jù)結(jié)構(gòu)大作業(yè)_第1頁
數(shù)據(jù)結(jié)構(gòu)大作業(yè)_第2頁
數(shù)據(jù)結(jié)構(gòu)大作業(yè)_第3頁
數(shù)據(jù)結(jié)構(gòu)大作業(yè)_第4頁
數(shù)據(jù)結(jié)構(gòu)大作業(yè)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、-作者xxxx-日期xxxx數(shù)據(jù)結(jié)構(gòu)大作業(yè)【精品文檔】課程設(shè)計(jì)說明書設(shè)計(jì)題目: 學(xué)生管理系統(tǒng)專 業(yè): xxxxxx班級: xxxxxxxxxxxxxxxxxx設(shè) 計(jì) 人: xxxxxxxxxxxxxxx山 東 科 技 大 學(xué)2015年 1 月 3 日山 東 科 技 大 學(xué)課 程 設(shè) 計(jì) 任 務(wù) 書專業(yè): xxx 班級:xxxxx 學(xué)號:xxxxxxx一、 課程設(shè)計(jì)題目:學(xué)生管理系統(tǒng)二、 設(shè)計(jì)原始資料:1、數(shù)據(jù)結(jié)構(gòu)(C語言版) 人民郵電出版社2、C+面向?qū)ο蟪绦蛟O(shè)計(jì) 電子工業(yè)出版社3、程序設(shè)計(jì)基礎(chǔ)-基于C語言 科學(xué)出版社三、 設(shè)計(jì)應(yīng)解決下列各主要問題:1、 首先輸入所有學(xué)生的信息。2、輸出一個(gè)學(xué)

2、生學(xué)號后,能查找到此學(xué)生的信息并輸出結(jié)果(采用查找方法實(shí)現(xiàn))3、要求是用結(jié)構(gòu)體,鏈或數(shù)組等實(shí)現(xiàn)上述要求4、先按總成績高的優(yōu)先輸出,總成績相同學(xué)號小的優(yōu)先輸出四、 設(shè)計(jì)說明書應(yīng)附有下列圖紙: 1、功能模塊圖 2、存儲學(xué)生信息流程圖 3、查詢個(gè)人信息流程圖 4、主函數(shù)流程圖 五、命題發(fā)出日期:2015年11月3日設(shè)計(jì)完成日期:2016年1月3日設(shè)計(jì)指導(dǎo)教師(簽章): 系主任(簽章): 課程設(shè)計(jì)成績評定表分類成績平時(shí)考勤(20%)平時(shí)實(shí)驗(yàn)(30%)綜合實(shí)驗(yàn)(30%)課程設(shè)計(jì)說明書質(zhì)量(20%)總分指導(dǎo)教師(簽章):年月日 學(xué)生管理系統(tǒng) 學(xué)生信息管理者用此程序所要完成的主要工作為:輸入學(xué)生的個(gè)人信息、

3、查找學(xué)生信息、通過此系統(tǒng)可以方便的進(jìn)行上述工作。每位同學(xué)所包含的信息有:姓名、學(xué)號、語文成績、數(shù)學(xué)成績和英語成績。1.1 主函數(shù)模塊 本模塊的主要功能是調(diào)用各個(gè)模塊,實(shí)現(xiàn)程序的主要功能。 1.2 排序功能 本模塊的主要功能是根據(jù)用戶的選擇進(jìn)行數(shù)組的創(chuàng)建,并對輸入數(shù)據(jù)或者隨機(jī)產(chǎn)生的數(shù)據(jù)進(jìn)行排序1.3 輸入子模塊 本模塊的主要功能是通過鍵盤錄入學(xué)生信息,并對用戶輸入數(shù)據(jù)進(jìn)行處理,創(chuàng)建數(shù)組。1.4 系統(tǒng)需求分析開發(fā)環(huán)境:Windows XP以上版本操作系統(tǒng)實(shí)用軟件:編寫實(shí)驗(yàn)報(bào)告:Microsoft Office Word二、概要設(shè)計(jì)2.1 功能模塊圖 開始 退出系統(tǒng)查詢學(xué)生信息輸出有補(bǔ)考的同學(xué)添加學(xué)

4、生信息 功能模塊圖 (1)存儲學(xué)生信息功能,定義結(jié)構(gòu)體student,用scanf和cin函數(shù)進(jìn)行輸入。流程圖如圖 存儲學(xué)生信息流程圖: 程序開始 初始化存入結(jié)構(gòu)體數(shù)組中 inYN 結(jié)束 存儲學(xué)生信息流程圖 相應(yīng)代碼設(shè)計(jì):typedef struct Achar a20;/學(xué)生姓名 int num;/學(xué)生學(xué)號int chscore,mascore,enscore;/學(xué)生的語文數(shù)學(xué)英語成績 Student; /存儲學(xué)生個(gè)人信息的結(jié)構(gòu)體typedef structStudent *elem;int length; SqList;(2) 查找有補(bǔ)考的同學(xué),并按成績降序排列輸出。流程圖如圖查找有補(bǔ)考同

5、學(xué)信息功能流程圖: 開始用sort函數(shù)排序,再進(jìn)行判斷輸出信息L.elemi.chscore60|L.elemi.mascore60|L.elemi.enscore60 Y 結(jié)束沒有補(bǔ)考的同學(xué) N 查找有補(bǔ)考同學(xué)信息功能流程圖 (3) 將學(xué)生按照學(xué)號的升冪排序,為后續(xù)查詢學(xué)生用二分查找提供條件。流程圖如圖sort函數(shù)排序流程圖: 開始調(diào)用sort函數(shù) in? N Ya.num b.num? N 結(jié)束 Y 交換 sort函數(shù)排序流程圖(4) 查找學(xué)生個(gè)人信息,根據(jù)用戶輸入的學(xué)號進(jìn)行查找。查找方法為二分查找。(5) 主函數(shù)流程圖如圖主函數(shù)流程圖: 開始 結(jié)束二分查找 i p?輸出有補(bǔ)考的同學(xué)Sca

6、nf和cin函數(shù)in?CreatList(L,m);構(gòu)造一個(gè)學(xué)生系統(tǒng)N YNYNY 主函數(shù)流程圖 2.2 各模塊函數(shù) bool cmp (const Student &a,const Student &b);/按照總成績進(jìn)行排序bool cmpp (const Student &a,const Student &b);/按照學(xué)號進(jìn)行排序void CreatList(SqList &L,int n);/建立數(shù)組void Sesrch_Bin(SqList &L,int n);/進(jìn)行二分查找三、詳細(xì)設(shè)計(jì)3.1 輸入學(xué)生信息程序運(yùn)行后,創(chuàng)建一個(gè)student結(jié)構(gòu)體,多組情況,每組輸入兩個(gè)整數(shù)分別表示

7、學(xué)生的總數(shù)和查詢數(shù)量。 調(diào)用sort()函數(shù),首先將學(xué)生按成績排序,運(yùn)用for循環(huán)和if(L.elemi.chscore60|L.elemi.mascore60|L.elemi.enscore60)語句輸出,如果總成績相同,學(xué)號小的在前面。3.3 排序調(diào)用sort()函數(shù)對Student按照學(xué)號升序進(jìn)行排序,此函數(shù)中采用了冒泡排序的方法,此方法只有在前一個(gè)學(xué)生的學(xué)號大于后一個(gè)學(xué)生的學(xué)號時(shí),才會需要一個(gè)輔助空間用作暫存記錄,空間復(fù)雜度低,并且穩(wěn)定。 3.4 查詢學(xué)生信息運(yùn)用for循環(huán)函數(shù),輸入要查詢學(xué)生的學(xué)號,對已經(jīng)排序的student進(jìn)行二分查找,low=high時(shí)遍歷,如果nu=smid.n

8、o 時(shí)找到輸出學(xué)生的信息語句:printf(%s %d %d %d %dn,L.elemi.a,L.elemi.num,L.elemi.chscore,L.elemi.mascore,L.elemi.enscore);如果沒有輸出printf(NOT FOUNDn); 主函數(shù)中while()等待輸入,用戶只要在運(yùn)行的頁面中輸入ctrl+z,即可退出系統(tǒng)。4、 運(yùn)行結(jié)果及分析本程序需用二分法,其余方法超時(shí),在輸入輸出時(shí)注意用標(biāo)準(zhǔn)語言輸入,注意格式。在運(yùn)行框內(nèi)輸入 Zhangyi 201501 90 90 90Zhanger 201502 80 80 80Zhangsan 201404 70 70

9、 70Zhangsi 201504 60 60 60Zhangwu 201505 50 50 50wcr 1124 100 100 100loushangdashen 1234 60 60 602015012015032015051201506輸出結(jié)果為下圖:五.總結(jié) 通過這次課程設(shè)計(jì),我學(xué)會了很多,首先,我對自身的知識掌握度加大了,以前只是單純的課本掌握,現(xiàn)在通過編寫,修改,測試程序,對課程設(shè)計(jì)中的一些知識更加了解了。其次,對于一些比較死板的知識,通過運(yùn)用,對它提高了很大的興趣,而且,自己設(shè)計(jì)的程序能夠運(yùn)行出來,自己非常有自豪感,滿足感。 總的說來,努力還是很有成效的,鍛煉了整體的能力,并且

10、通過一次次的調(diào)試來讀懂程序,程序更加完善。數(shù)據(jù)結(jié)構(gòu)在編程語言中是一門相當(dāng)有技術(shù)含量的語言,學(xué)會并能夠掌握它,對以后的生活幫助很大。附:主要算法的源代碼#include#include#include#include#includeusing namespace std;typedef int Status;#define OK 1#define ERROR 0#define OVERFLOW -2#define MAXSIZE 2001typedef structchar a20;int num;int chscore,mascore,enscore; Student;typedef stru

11、ctStudent *elem;int length; SqList;bool cmp (const Student &a,const Student &b)int sum1 = a.chscore + a.mascore + a.enscore;int sum2 = b.chscore + b.mascore + b.enscore;if(sum1 = sum2)return a.num sum2;bool cmpp (const Student &a,const Student &b)return a.num b.num;void CreatList(SqList &L,int n)L.e

12、lem=new StudentMAXSIZE;for(int i=0; iL.elemi.numL.elemi.chscoreL.elemi.mascoreL.elemi.enscore;L.length=n;void Sesrch_Bin(SqList &L,int n)int low=0,high=L.length-1,mid;while(low=high)mid=(low+high)/2;if(num=L.elemmid.num) return mid;else if(numL.elemmid.num) high=mid-1;else low=mid+1;return 0;int main()int m,n,a;SqList L;scanf(%d%d,&m,&n);CreatList(L,m);sort(L.elem,L.elem+n,cmp);for(int i=0; im; i+)if(L.elemi.chscore60|L.elemi.mascore60|L.elemi.enscore60)printf(%s %d %d %d %dn,L.elemi.a,L.elemi.num,L.elemi.chscore,L.elemi.mascore,L.elemi.enscore)

溫馨提示

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

最新文檔

評論

0/150

提交評論