學(xué)生成績(jī)查詢數(shù)據(jù)結(jié)構(gòu)課設(shè)論文_第1頁
學(xué)生成績(jī)查詢數(shù)據(jù)結(jié)構(gòu)課設(shè)論文_第2頁
學(xué)生成績(jī)查詢數(shù)據(jù)結(jié)構(gòu)課設(shè)論文_第3頁
學(xué)生成績(jī)查詢數(shù)據(jù)結(jié)構(gòu)課設(shè)論文_第4頁
學(xué)生成績(jī)查詢數(shù)據(jù)結(jié)構(gòu)課設(shè)論文_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(論文)學(xué)生成績(jī)管理系統(tǒng)院(系)名稱專業(yè)班級(jí)學(xué)號(hào)學(xué)生姓名指導(dǎo)教師起止時(shí)間:學(xué)生成績(jī)管理是通過輸入、輸出、添加、排序、查找、刪除等活動(dòng),解決學(xué) 生成績(jī)等信息之間存在的相對(duì)應(yīng)的關(guān)系的信息存儲(chǔ),以此方便對(duì)學(xué)生成績(jī)等信息 的管理,從而可以人量告訴的對(duì)學(xué)生信息進(jìn)行操作。隨著社會(huì)的發(fā)展,快速便捷 已成為主流,當(dāng)學(xué)生數(shù)量特別大的吋候,此程序可以快速執(zhí)行查找或者錄入操作 者所需耍的信息。計(jì)算機(jī)信息管理技術(shù)的迅速發(fā)展恰恰解決了這個(gè)問題,它使計(jì) 算機(jī)技術(shù)與現(xiàn)代管理技術(shù)相互配合,來更加準(zhǔn)確、高速地完成學(xué)生成績(jī)的管理, 使學(xué)校老師和同學(xué)能夠以最少的人員來完成更多的工作。系統(tǒng)的開發(fā)主耍包括后臺(tái)數(shù)據(jù)庫的建

2、立和維護(hù)以及前端應(yīng)用程序的開發(fā)兩個(gè) 方面。本系統(tǒng)使用viscal c+進(jìn)行前臺(tái)界面和處理程序的開發(fā),前者建立成數(shù)據(jù) 一致性和完整性強(qiáng)、數(shù)據(jù)安全性好的數(shù)據(jù)庫,而后者具有應(yīng)用程序功能完備,易使 用等特點(diǎn)。學(xué)生成績(jī)管理系統(tǒng)在mvc設(shè)計(jì)模式的基礎(chǔ)上使用ssh框架。通過庫存管理進(jìn) 行學(xué)生成績(jī)的入庫出庫操作來完成學(xué)生信息的管理。關(guān)鍵詞:成績(jī)管理;成績(jī)查詢;遞歸遍歷第1章緒論111系統(tǒng)的開發(fā)背景11.2開發(fā)工具及語言1第2章概要設(shè)計(jì)22.1模塊劃分22.2數(shù)據(jù)結(jié)構(gòu)的選擇2第3章 系統(tǒng)詳細(xì)設(shè)計(jì)與編碼33.1完整的源程序33.2程序的輸入和輸出73.3調(diào)試程序中遇到的問題及解決方案9第4章思考題解析104思考題

3、的選擇104.2類c算法104.3程序分析13第5章總結(jié)14參考文獻(xiàn)15第1章緒論1. 1系統(tǒng)的開發(fā)背景人類已進(jìn)入21世紀(jì),科學(xué)技術(shù)突飛猛進(jìn),經(jīng)濟(jì)知識(shí)和信息產(chǎn)業(yè)初見端倪,特別是 信息技術(shù)和網(wǎng)絡(luò)技術(shù)的迅速發(fā)展的廣泛應(yīng)用,對(duì)社會(huì)的政治、經(jīng)濟(jì)、軍事、文化等領(lǐng) 域產(chǎn)生越來越深刻。學(xué)生成績(jī)管理系統(tǒng)是教育單位不可缺少的部分,它的內(nèi)容對(duì)于學(xué) 校的決策者和管理者來說都至關(guān)重要。1.2開發(fā)工具及語言本系統(tǒng)使用viscal c+語言開發(fā),主界面清晰顯示所有功能項(xiàng),使用簡(jiǎn)單。各個(gè)功 能項(xiàng)均定義一個(gè)函數(shù)來實(shí)現(xiàn),在主函數(shù)中調(diào)用各個(gè)子函數(shù)實(shí)現(xiàn)不同的功能。第2章概要設(shè)計(jì)2.1模塊劃分題冃應(yīng)實(shí)現(xiàn)的貝體功能;a. 每個(gè)學(xué)生的信

4、息:可以錄入每個(gè)學(xué)生的具體信息包括:姓名、學(xué)號(hào)、科目成績(jī) 等,并且可以對(duì)錄入的信息進(jìn)行保存和輸出。同吋在有遺漏是還可以把遺漏的學(xué)生信息 進(jìn)行添加操作,重新添加到其中。b. 可以對(duì)已經(jīng)存在的學(xué)生信息進(jìn)行操作:(1)成績(jī)杳詢:根據(jù)輸入的姓名學(xué)號(hào)可以輸出對(duì)應(yīng)同學(xué)的成績(jī);(2)成績(jī)排序:可以根據(jù)輸入的學(xué)生成績(jī)或者原來存在的學(xué)生成績(jī)信息對(duì)成績(jī) 按照順序從前到后進(jìn)行排序;(3)成績(jī)修改:如果出現(xiàn)成績(jī)錄入時(shí)發(fā)生錯(cuò)誤,可以在之后進(jìn)行修改操作將其 改正。2. 2數(shù)據(jù)結(jié)構(gòu)的選擇系統(tǒng)數(shù)據(jù)的邏輯結(jié)構(gòu)采用線性結(jié)構(gòu),物理結(jié)構(gòu)采用順序存儲(chǔ)結(jié)構(gòu)。存儲(chǔ)結(jié)構(gòu)定義如下:typedef structchar subject20;in

5、t score;fen;typedef structchar xuehao10;char xingming20;int zongfen;fen chengjifkechengshu; student;第3章系統(tǒng)詳細(xì)設(shè)計(jì)與編碼3. 1完整的源程序#include<stdio.h>#include<stri ng.h>#define biandongshu 6#define kechengshu 1#define xueshengshu 2int q=l;typedef structchar subject20;int score;fen;typedef structcha

6、r xuehao10;char xingming20;int zongfen;fen chengj ikechengshu; student;/*lshuru*/void input(student xuesheng)int i,j;printf(hnnow input %d students,infbrmation!,xueshengshu);for(j=0;j<xueshengshu;j+,q+)printf(nnxuehao:");scanf(n%su,xuesheng|j.xuehao);printf("xingming:h);scanf(n%sn,xuesh

7、engj.xingming);for(i=0;i<kechengshu;i+)printf(nkechengming:n); scanf(n%su,xuesheng|j.chengji|i|.subject); printf(” fenshu:”);scanf(h%dl&xueshengj .chengj i i. score);xueshengj.zongfen+=xueshengj.chengjii.score;/*2shuchu*/void print(student xuesheng)int i,j=0;printf(nnxuehao xingming kechengmi

8、ng fengshu");while(j<q-l)printf(nnn);printf(" %s% 12s”,xueshengj.xuehao,xueshengj.xingming);for(i=0;i<kechengshu;i+)printf("n%27s%dh,xueshengj.chengjii.subject,xueshengj.chengjii.score);printf(h zongfen:%d",xueshengj.zongfen);j+;/*3tianjia*/void add(student xuesheng)int i=0

9、,j,n,m=0;char ch20;while(xueshengi.chengjim.score)+i;printf(hninput the add student's information!n");printf(hnxuehao:u);scanf(” s”,ch);strcpy(xueshengi.xuehao,ch);printf(" xingming:1');scanf(',%sn,xueshengi.xingming);for(j=0;j<kechengshu;j+)printf(nnkemu:");scanf(” s”,

10、ch);s trcpy (xuesheng i .chengj i j . subj ect,ch);printf("chengji:");scanf("%dn,&n);xueshengfi .chengj i j .score=n; xueshengi.zongfen+=xueshengi.chengjij.score;q=q+l;/*4xiugai*/void change(student xuesheng jnt m)int i,j,x,n=l;char a20;if(xueshengm-1 .xuehao)while(n)printf(nnchoi

11、se the change number:n0-end;nl-xuehao;n2-xingming;n3-chengjichu;nn);scanf(h%dh,&n);switch(n)case l:printf(hninput the change xuehao:n);scanf("%s”,a);strcpy(xueshengm-1 .xuehao,a);break;case 2:printf(hninput the change xingming:,r);scanf(” s”,a);strcpy(xueshengm-11 xingming,a);break;case 3:p

12、rintf(hninput the change order(<=%d):fkechengshu);scanf(h%dm,&i);printf(mn 1 -kechengming;n2-fenshu;nn);scanf(u%dm,&j);switch(j)case l:printf(nninput kechengming:n); scanf("%sm,a); strcpy(xueshengm-l.chengjii-l .subject,a);break;case 2:printf(hninput fenshu:11);scanf(n%dn,&j);xue

13、shengm-1 .zongfen=xueshengm-1 .zongfen-xueshengm-1 .chengjii-l .score+j;xueshengm-l.chebreak;break;/*5paixu*/void paixu(student xueshengfl)int i,n=0,j;student ren; for(i=2;xueshengi.chengjin.score;i+) if(xueshengi.zongfen<xueshengi 1 .zongfen) ren=xueshengi;xueshengi =xueshengi-1 ; for(j=i-2;ren.

14、zongfen<xueshengj.zongfen;j) xueshengj+l =xueshengj;xueshengj+1 =ren;printf(nnthe member is orderly!n);/*6chazhao*/void check(student xueshengflchar al)int i=0,j=0;while(xueshengi.xuehao)if(strcmp(xueshengi .xuehao,a)=0)printf(hnxuehao:%s xingming:%s”,xueshengixuehao,xueshengi.xingming);for(j =0

15、;j <kechengshu;j+)printf(nnkemu: %schengj i: %dzongfen:%dn,xueshengi.chengjifj.subject,xueshengi.chengjij.score,xueshengi.zongfen)else if(strcmp(xueshengi .xingming,a)=0)printf(hnxuehao:%s xingming:%s,xueshengi.xuehao,xueshengi.xingming); for(j=0;j<kechengshu;j+)printf(hnkemu:%schengji:%dzongf

16、en:%d,xueshengi.chengjijlsubject,xueshengfil.chengjijl.score,xueshengfi.zongfen)if(! xueshengi .xuehao)printf(hnthe student is no exist!nh);i+;/*7shanchu*/void delet(student xuesheng,int m)int i;i=m;ngjii-l.score=j;if(! xueshengi .xuehao)printf(mnthe student is no exist!11);while(xueshengi >xueha

17、o)xueshengi-1 =xueshengi;i=i+l;q=qi;/*zhuhanshu*/void main()int m=l,n,x;char a20;student xueshengxueshengshu+biandongshu;while(m)printf(mn ii(0)結(jié)朿llnll(1) 輸入llnll(2)-輸出llnll“添加llnll(4)-修改llnll(5)-排序ii n ii(6)-查找ii n ii(7)-刪除ii n”);scanf("%d",&m); switch(m)case l:input( xuesheng);break;

18、case 2:print( xuesheng);break;case 3:add( xuesheng);break;case 4:printf(ninput the change's order:n); scanf(“d”,&x);change( xuesheng,x);break;case 5: paixu( xuesheng);break;case 6:printf(hinput the student's xuehao or xingming:11); scanf("%s”,a);check( xuesheng.a);break;case 7:print

19、f(hninput the delet studenfs situation:11); scanf("%d",&n);delet( xuesheng.n);break;getchar();3. 2程序的輸入和輸出程序運(yùn)行主界面:c:uersshuaigedesktopdcbugada$d.exe"圖3.1主界面*c:user$huaigedes ktopdebug3dasd.exe*<7>刪除now input 2 students* infopnatloot xueh«o1 xingning:小kechengning:數(shù)據(jù)結(jié)構(gòu) fe

20、nshu:80 xueh«o2pcingning:小明kechcngring: 據(jù)結(jié)構(gòu) fenshu:9h束入除 n_刪 二一 >>>>>>> 1 2 3 4 s 6 7 z ( z ( zx zx zk圖3. 2學(xué)生成績(jī)輸入c:usersshuaigedesktopdebugadasd.exe-xuchaoxingmingkcchcncfningfcngshu1數(shù)據(jù)結(jié)構(gòu)80zongfun:-8589933802小明數(shù)據(jù)結(jié)構(gòu)902ongfen:-858993370圖3. 3學(xué)生成績(jī)輸出input the student* s xuehao o

21、>* xingning:2xuehao:2 xingning:小明c:usersshuaigede$ktopdebugada$d.exe*now input 2 students* info»«nation? xuohao:1 xingning :丿卜李kcchcngminh:$ 據(jù)結(jié)構(gòu)fenshu:80cnu:數(shù)據(jù)菊栢 chengji:90 zongf en :-858993379t* 圖3.4學(xué)生成績(jī)查找圖3. 5學(xué)生成績(jī)修改3. 3調(diào)試程序中遇到的問題及解決方案問題:刪除學(xué)生信息功能不能實(shí)現(xiàn)。在選擇刪除功能后不能將選擇的學(xué)生信息刪除, 而總是刪除其他信息?解決方

22、案:出現(xiàn)這個(gè)問題肯定是數(shù)據(jù)覆蓋出現(xiàn)了錯(cuò)誤,也就是循環(huán)出現(xiàn)了錯(cuò)誤, 檢查循環(huán)程序后發(fā)現(xiàn),循環(huán)休內(nèi)數(shù)據(jù)交換岀現(xiàn)了錯(cuò)誤,沒有定義結(jié)構(gòu)變量,重新定義結(jié) 構(gòu)體變量后解決問題。第4章思考題解析4.1思考題的選擇所選擇的思考題:編寫一個(gè)算法,構(gòu)造一棵哈夫曼樹,并求出其帶權(quán)路徑長(zhǎng)度。4. 2類c算法#include <iostream>#include <stdlib.h>using namespace std;const int maxvalue二10000; 初始設(shè)定的權(quán)值最大值const int maxbit二4; /初始設(shè)定的最大編碼位數(shù)const int maxn = 10;

23、 /初始設(shè)定的最大結(jié)點(diǎn)個(gè)數(shù)struct haffnode 哈夫曼樹的結(jié)點(diǎn)結(jié)構(gòu)int weight; 權(quán)值int flag; 標(biāo)記int parent; /雙親結(jié)點(diǎn)f標(biāo)int leftchild; 左孩子卜標(biāo)int rightchild; 右孩子下標(biāo);struct code 存放哈夫曼編碼的數(shù)據(jù)元索結(jié)構(gòu)int bitfmaxbit; 數(shù)組int stan; /編碼的起始下標(biāo)int weight; 字符的權(quán)值;void haffman(int weight, int n, haffnode hafftreej)建立葉結(jié)點(diǎn)個(gè)數(shù)為n權(quán)值為weight的哈夫曼樹hafftreeint j, ml, m2

24、, xl, x2;哈夫曼樹hafftree初始化。n個(gè)葉結(jié)點(diǎn)的哈夫曼樹共冇2n-l個(gè)結(jié)點(diǎn)for(int i = 0; i < 2 * n - 1 ; i+)if(i < n)hafftreefi.weight = weightfi;else hafftreei .weight = 0;hafftreefi.parent = 0;hafftreei.flag = 0;hafftreei.leftchild = -l;hafftreei.rightchild = -1;構(gòu)造哈夫曼樹hafftree的n-1個(gè)非葉結(jié)點(diǎn)for(int i = 0;i < nl;i+)ml 二 m2 =

25、 max value;xl = x2 = 0;for(j = 0;j<n+i;j+)訐(hafftreefj.weight < ml && hafftreej.flag = 0)m2 = ml;x2 = xl;ml = hafftreej.weight;xl 二j;elseif(hafftreej.weight < m2 && hafftreej.flag = 0)m2 = hafftreefj .weight;x2=j;將找出的兩棵權(quán)值最小的了樹合并為一棵了樹hafftreex 1 .parent = n+i;hafftreex2.paren

26、t = n+i;hafftree xl. flag = 1;hafftreex2.flag = 1;hafftreen+i .weight = hafftreex 1 .weight+hafftreex2 .weight; hafftreen+i.leftchild = xl;hafftreen+i.rightchild = x2; -void haffmancode(haffnode hafttree, int n, code haffcodej) 由n個(gè)結(jié)點(diǎn)的哈夫曼樹hafftree構(gòu)造哈夫曼編碼haffcode code *cd = new code;int child, parent;

27、求n個(gè)葉結(jié)點(diǎn)的哈夫曼編碼for(int i = 0; i < n; i+)cd->start = n-1; 不等長(zhǎng)編碼的最后一位為n-1 cd->weight = hafftreei.weight; 取得編碼對(duì)應(yīng)權(quán)值的字符 child = i;parent 二 hafftreechild.parent;由葉結(jié)點(diǎn)向上直到根結(jié)點(diǎn)while(parent != 0)if(hafftreeparent.leftchild = child) cd->bitcd->start = 0; 左孩子結(jié)點(diǎn)編碼 0 elsecd->bitcd->start = 1;/右孩子

28、結(jié)點(diǎn)編碼 1cd->start;child = parent;parent = hafttreefchild.parent;保存葉結(jié)點(diǎn)的編碼和不等長(zhǎng)編碼的起始位for(int j = cd->start+1; j < n; j+) haffcodei.bitj = cd->bitj; haffcodei.start = cd->start;haffcodefi.weight = cd->weight; 保存編碼對(duì)應(yīng)的權(quán)值 int main()int i,j, n = 4;int weight = 1,3,5,7;haffnode *myhafftree =

29、new haffnode2*n-l;code *myhaffcode = new coden;if(n > maxn)cout « ”定義的n越界,修改maxn! h « endl; exit(0);haffman(weight, n, myhafftree); haffmancode(myhafftree, n, myhaffcode);輸出每個(gè)葉結(jié)點(diǎn)的哈夫曼編碼for(i = 0; i < n; i+)cout « "weight = " « myhaffcodei.weight « " code for(j = myhaffcodefi.starts 1; j < n; j+)cout« myhaffcodei.bitj;cout« endl;return 0;)4. 3程序分析該程序的邏輯結(jié)構(gòu)為集合,存儲(chǔ)結(jié)構(gòu)是鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。在求集合a和集合b的并集吋, 先將集合a中的元素放入新生成的集合中,再與集合b中元素進(jìn)行比較,把集合b中 不與集合a中的元素放入新生成的集合

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論