版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、唐山學院數(shù)據(jù)結(jié)構(gòu)課程設計題 目學生成績管理系統(tǒng)設計與實現(xiàn)系(部)計算機科學與技術(shù)系班 級 姓 名 學 號指導教師 2013 年丄月 4 日至 1 月 11 日共丄周2013年1月11日數(shù)據(jù)結(jié)構(gòu)課程設計任務書一、設計題目、內(nèi)容及要求1、設計題目:學生成績管理系統(tǒng)設計與實現(xiàn)。2、設計內(nèi)容及要求:(1)查詢功能:可以通過姓名、學號進行查詢學生成績,同時可以查詢有不及格科目的學生。(2)錄入功能:能夠錄入學生成績(包括:學號、姓名、至少 3門課程的成績、總分、 平均分等信息)??偡趾推骄肿詣佑嬎恪#?)排序功能:能夠?qū)W生成績進行排序并可以瀏覽排序結(jié)果。(4)統(tǒng)計功能:能夠統(tǒng)計出優(yōu)秀、良好、中等、及
2、格和不及格這五個等級的人數(shù)。二、要求的設計成果(課程設計說明書、設計實物、圖紙等)1、用C語言進行程序設計,實現(xiàn)系統(tǒng)的功能。注重算法效率,代碼要有適當?shù)淖⑨專?、撰寫課程設計說明書一份,不少于 2000字。課程設計說明書應包括封面、任務書、 成績評定表、正文(設計思路、設計步驟等)、參考文獻(資料)、附錄(程序代碼)等 內(nèi)容。三、進程安排12月31日:進行需求分析,確定系統(tǒng)的主要功能和算法思路;1月1日1月2日:進行詳細設計,確定各模塊的算法思路;1月3日1月4日:進行編碼實現(xiàn);1月7日1月10日:進行測試調(diào)試,完善設計;撰寫設計說明書,準備答辯;1月11日:答辯。四、主要參考資料1嚴蔚敏,吳
3、偉民數(shù)據(jù)結(jié)構(gòu).清華大學出版社,2007.2. 蘇仕華.數(shù)據(jù)結(jié)構(gòu)課程設計.機械工業(yè)出版社,2010.3. 滕國文.數(shù)據(jù)結(jié)構(gòu)課程設計.清華大學出版社,2010.指導教師(簽名):教研室主任(簽名):課程設計成績評定表出勤情況出勤天數(shù)缺勤天數(shù)成出勤情況及設計過程表現(xiàn)(20分)績課設答辯(20分)評設計成果(60分)疋總成績(100分)提問(答辯)問題情況綜合 評 疋指導教師簽名:年月日1.1 背景在 21 世紀,以高科技為核心的知識經(jīng)濟將占主導地位,國家的綜合國力和 國際競爭力將越來越取決于科學技術(shù)創(chuàng)新水平。 教育作為知識創(chuàng)新、 傳播和應用 的基礎(chǔ),培養(yǎng)和輸送人才的搖籃, 已經(jīng)成為經(jīng)濟發(fā)展和社會進步
4、的基礎(chǔ)。 盡管人 類進步的程度隨著不同時代,不同地區(qū)而有所變化,教育的口徑卻在不斷擴寬, 以便使過去僅供少數(shù)人使用的教育資源能夠為更多各種年齡、 不同社會階層和背 景的人們所用。在信息爆炸的時代, 傳統(tǒng)教學管理面臨著諸多挑戰(zhàn)。 管理現(xiàn)代化, 辦公自動化和決策科學化, 是現(xiàn)代辦公管理發(fā)展的必然趨勢。 隨著信息社會的不 斷發(fā)展,計算機的使用已經(jīng)深入到人們工作生活中的每一個角落。 而人們對數(shù)據(jù) 庫的運作和依賴同樣也是計算機出現(xiàn)后的一大優(yōu)勢, 在學校管理領(lǐng)域, 引入計算 機管理系統(tǒng), 可以大大提高管理效率和質(zhì)量, 是學校進行現(xiàn)代化、 標準化建設的 必然趨勢。學生成績管理工作被視作高校管理工作中一項不容
5、忽視的重要分支, 其工作 量大,涉及面廣,學生成績管理工作運行的好壞直接影響著整個高校管理工作的 各個環(huán)節(jié)。 由于成績管理工作的本身特點及特殊性質(zhì), 單純依靠人力, 會使從事 這項工作的管理人員過度纏身于繁瑣的業(yè)務中, 難免會發(fā)生許多錯誤, 難以做到 管理的規(guī)范化, 這不符合管理工作的今后發(fā)展趨勢。 因此, 需要開發(fā)一種功能全 面,操作簡便的管理系統(tǒng)軟件來補助作用, 人機配合,能夠使機器承擔部分工作, 使管理員逐步擺脫一些無謂的, 瑣碎的業(yè)務, 這對充分利用人力資源的主導作用 及使管理工作逐步步入規(guī)范化軌道有著重要意義。1.2 內(nèi)容學生成績管理系統(tǒng)是典型的信息管理系統(tǒng) (MIS), 其開發(fā)主要
6、包括后臺數(shù)據(jù) 庫的建立和維護以及前端應用程序的開發(fā)兩個方面。 對于前者要求建立起數(shù)據(jù)一 致性 1和完整性強、數(shù)據(jù)安全性好的庫。而對于后者則要求應用程序功能完備,易使用等特點。本系統(tǒng)主要完成對學生成績的管理,包括添加、修改、刪除,查 詢,打印等幾個方面。系統(tǒng)可以完成對各類信息的瀏覽、查詢、添加、刪除、修 改等功能。 系統(tǒng)的核心是添加、 修改和刪除三者之間的聯(lián)系, 每一個表的修改都 將自動地影響其它的表, 當完成添加或刪除操作時系統(tǒng)會自動地完成學生成績的 修改。查詢功能也是系統(tǒng)的核心之一。2 問題分析(1) 本題目主要涉及到順序表的使用及排序的基本操作。(2) 學生成績管理系統(tǒng)的主要目的就是利用軟
7、件實現(xiàn)成績的錄入、查詢、修 改等功能,使教師對學生成績的管理更加容易,提高工作效率、降低管理成本, 同時也方便于學生對自己信息的查詢。/定義學生信息int No;char name20; char grade20; char term20; float score1;/float score2; float score3; float score4; float sort; float ave; float sum;/學號 姓名 班別年級 大學物理 電子技術(shù) 英語 數(shù)據(jù)結(jié)構(gòu) 排序成績 平均分 總分(3) 成績管理系統(tǒng)主要涉及到對大量學生信息的操作,因此選用線性表。又 因為該軟件主要是對學生各科
8、成績求總和和平均值及對按學生成績分等級, 很少 有插入和刪除操作, 通過以上分析, 我選擇了順序表的存儲方式, 成績管理系統(tǒng) 的存儲結(jié)構(gòu)如下: struct student3總體設計該成績管理系統(tǒng)采用順序表存儲學生信息及成績。順序表的每一條記錄又包 括好幾個一維數(shù)組。班級、學號、姓名都是一維數(shù)組,各科成績都是整型變量。 因為該系統(tǒng)主要是對每條記錄進行的操作,所以順序表比較容易實現(xiàn)。圖3-1系統(tǒng)模塊結(jié)構(gòu)圖輸入:輸入學生相關(guān)信息己各科成績。求和:軟件自動計算總分和平均分。與此同時在表的下方顯示優(yōu)秀,良好, 中等,及格,不及格五個等級的學生人數(shù)。查詢:人用的輸入某一同學學號或姓名,系統(tǒng)進行輸出。修改
9、:修改原先輸入有錯的學生信息。刪除:查找不及格學生:四門成績中有一門不及格就算不及格輸出:用一個循環(huán)將所有成績輸出。 退出:退出學生成績管理系統(tǒng)。4詳細設計程序分為錄入、顯示、添加、修改、刪除、查詢顯示不及格情況六個部分。錄入部分根據(jù)提示由用戶自己輸入學生的信息和成績, 然后系統(tǒng)會自行通過 一個for循環(huán)實現(xiàn)對每個同學的總成績和平均成績的一個運算。然后是對同學的 平均分進行排序。同時在表的最下方顯示優(yōu)秀、良好、中等、及格及不及格五個 等級的同學人數(shù)(這里的等級分布為平均分的等級分布)。實現(xiàn)這一結(jié)果用的是一個switch語句。switch(int(stuj.ave/10)*利用switch語句統(tǒng)
10、計各個等級的學生人數(shù) */case 10:case 9:A+;break;/*統(tǒng)計優(yōu)秀學生人數(shù)*/case 8:B+;break;/*統(tǒng)計良好學生人數(shù)*/case 7:C+;break;/*統(tǒng)計中等學生人數(shù)*/case 6:D+;break;/*統(tǒng)計及格學生人數(shù)*/ default :E+;/*統(tǒng)計不及格學生人數(shù)*/4.1錄入模塊主要是最后執(zhí)行的時候輸入每個學生的信息和成績。4.1.1設計思路根據(jù)所有學生信息,按班級、學號、姓名、數(shù)字邏輯成績、數(shù)據(jù)結(jié)構(gòu)成績、 英語成績、物理成績的順序依次將每個學生的信息輸入。124.1.2流程圖開始V新建表7俞入 信1順序J學生息1 1 1盧/X /LL1 1
11、 /X /1L輸入學期輸入班別輸入學號輸入成績4輸入姓名輸入成績| 輸入成績輸入成績34.2計算模塊用for循環(huán),將每個學生的總分和平均分計算出來記在相應的位置。同時計算出優(yōu)秀、良好、中等、及格和不及格五個等級的同學的個數(shù)。其流程圖為4.3查找和修改部分實現(xiàn)通過學號來查找和修改同學的信息及各科成績4.4顯示不及格情況用來顯示同學不及格的科目。4.5整個程序模塊整個程序的流程圖為返回主采單1f結(jié)束La5運行測試開始運行時程序頁面如下圖5.1登錄頁面按任意鍵繼續(xù)為g *C: Docuents and Sett ingsAdinist rat orDebug 129. exeNNHXXNHXXNH
12、HENN HENN單 XHXNNHXNNHXNNHXNNHXNNHXNNHM:自心.績 況 息成息息息息情 .總.ft 生生生生生生及 WWW不 入示加除改詢番 錄顯添刪修查顯退12345678$5$選擇功能選項 輸入所選功能前的數(shù)字:-25圖兇ED息013舸晦 信-2計12巾 的 2 11-績績9績 巾貞關(guān):9成 創(chuàng)理術(shù)績構(gòu) 1 4弓卯支昕士 口主0: : 囊成結(jié) 豹:2卿-V名學子語據(jù) 憎期班學姓大電英數(shù) 生生生生生生 第入賽盂盂盂盂辜 JA入入入入入入息01本靦偉ZN信-2計12方2 11李inist rator桌面Debug129. exe*齣入要查詢的學生姓名:劉彪PJ 鬍值姓名大學
13、物理電子技術(shù)英語數(shù)據(jù)結(jié)構(gòu)llHl 4112006129文1彪60.0060.0060.0660.09 240.00 60.r按任惹犍返回主菜單圖5-10查詢功能選擇7時實現(xiàn)的是學生不及格的情況圖5-11不及格同學及不及格科目6總結(jié)整個程序的存儲方式均是順序鏈表,使得該系統(tǒng)在進行插入和刪除時大大降 低了效率,因為每刪除或插入一個數(shù)據(jù)都要進行大量的移動, 但是順序表的存儲 和其他操作都較為簡單易懂, 所以基于現(xiàn)在編寫的僅是一個較小的系統(tǒng), 輸入數(shù) 據(jù)也不會太多,根據(jù)自己對程序的掌握的程度還是選擇了順序表的存儲結(jié)構(gòu)。但是由于畢業(yè)設計時間較短, 所以該系統(tǒng)還有許多不盡如人意的地方, 比如 用戶界面不夠
14、美觀,出錯處理不夠等多方面問題。這些都有待進一步改善。我受到了指導老師細心指導 , 老師嚴謹?shù)闹笇B(tài)度與深厚的理論知識都讓我 受益非淺 , 從他身上我學到了很多的東西 , 無論是理論還是實踐都使我的知識有 很大的提高 . 借此我特提出感謝 .通過這次課設,使我對 C 語言有了更深刻的了解,讓我認識到,好多東西, 學會并不一定了解, 只有用這些東西去實踐, 才能更好理解這些, 要真正消化所 學的知識,實踐是最好的辦法。計算機有許多深奧的東西,只要我們肯鉆研,會 享受意想不到的快樂。作為國家的新一代,我們要肩負重任,努力學習。數(shù)據(jù)結(jié)構(gòu)教會我們要獨立思考, 對一個問題要有自己的想法, 有自己的思路。
15、 而且對同一個問題,要想法找最簡單、少時最少、效率最高的方法。雖然這些天 來很辛苦但是自己對 C 語言和數(shù)據(jù)結(jié)構(gòu)的深入理解也使自己很開心很踏實。以 后為了使自己能更加透徹的理解計算機方面的知識我會將理論與實踐結(jié)合起來, 使自己在不斷的實踐中完善自己,提升自己。參考文獻1 嚴蔚敏,吳偉民數(shù)據(jù)結(jié)構(gòu)北京:清華大學出版社,20082 蘇仕華數(shù)據(jù)結(jié)構(gòu)課程設計北京:機械工業(yè)出版社,2010.3 .滕國文數(shù)據(jù)結(jié)構(gòu)課程設計北京:清華大學出版社,2010.附錄全部代碼如下 #include #include #include #include #define MAX 1000 void input(); voi
16、d sort(); void display(); void insert();*/void del();數(shù)*/ void modify();數(shù)*/void sum(); void average();*/void fail();生*/void find();數(shù)*/int now_No=0; struct student int No;char name20; char grade20; char term20; float score1; float score2; float score3; float score4; float sort; float ave;/*清屏*/*顯示目錄 *
17、/* 排序數(shù)據(jù)函數(shù) */ /*顯示數(shù)據(jù)函數(shù) */*插入數(shù)據(jù)函數(shù)/* 刪除數(shù)據(jù)函/* 修改數(shù)據(jù)函/總分/* 平均值函數(shù)/* 不及格科目和學/* 查找數(shù)據(jù)函/定義學生信息/學號/姓名/班別/年級/大學物理 /電子技術(shù) /英語 /數(shù)據(jù)結(jié)構(gòu) /排序成績 /平均分/總分float sum;/* 主函數(shù) */struct student stuMAX,*p; void main()int as;char ch;dostart: printf(nnnnnnttt 歡迎使用學生成績管理系統(tǒng) n);printf(nnnnnntt*按任意鍵繼續(xù)/*清屏*/菜單printf(nnt$*$);*); ch=getch
18、();while(!ch); system(cls);/* 以下為功能選擇模塊 */ do 小 “;rr W* $n);printf(nt$t 錄入學生信息 t1 t$);printf(nt$t 顯示學生總成績信息 t2 t$);printf(nt$t 添加學生信息 t3 t$);printf(nt$t 刪除學生信息 t4 t$);printf(nt$t 修改學生信息 t5 t$);printf(nt$t 查詢學生信息 t6 t$);printf(nt$t 顯示不及格情況 t7t$);printf(nt$t 退出 t8 t$);*printf(n 選擇功能選項 (輸入所選功能前的數(shù)字 ):);
19、fflush(stdin); scanf(%d,&as); switch(as)case 1:system(cls);input(); break;case 2:system(cls);display(); break;case 3:system(cls); insert(); break;case 4:system(cls); del(); break;case 5:system(cls);modify(); break;case 6:system(cls);find();break;case 7:system(exit);fail();break;case 8:system(cls); e
20、xit(0);default:system(cls);goto start;while(1); /*while(1) 表示永遠循環(huán)下去 */ /* 至此功能選擇模塊結(jié)束 */ void input() /* 學生信息錄入模塊 */ int i=0;char ch;doprintf(tttt1.錄入學生信息n輸入第%d個學生的信息n,i+1); printf( 請輸入學期 :); fflush(stdin); gets(stui.term); printf( 輸入學生班別 :);fflush(stdin);gets(stui.grade);printf(輸入學生學號:);scanf(%u,&st
21、ui.No);fflush(stdin); printf( 輸入學生姓名 :); fflush(stdin); gets(); printf( 輸入學生大學物理成績 :); scanf(%f,&stui.score1); printf( 輸入學生電子技術(shù)成績 :); fflush(stdin); scanf(%f,&stui.score2); printf( 輸入學生英語成績 :); fflush(stdin); scanf(%f,&stui.score3); printf( 輸入學生數(shù)據(jù)結(jié)構(gòu)成績 :); fflush(stdin); scanf(%f,&stui.score
22、4); printf(n); i+;now_No=i;printf( 是否繼續(xù)輸入 ?(Y/N); fflush(stdin);ch=getch();while(ch!=n&ch!=N);system(cls);/* 排序數(shù)據(jù)函數(shù) */void sort()struct student temp;int i,j;average(); for(i=1;inow_No;i+) for(j=1;j=now_No-i;j+)if(stuj-1.avestuj.ave)temp=stuj;stuj=stuj-1;stuj-1=temp;printf( 排序已完成進入可進行顯示 n);system(pau
23、se);system(cls);void display() /* 顯示數(shù)據(jù)函數(shù) */int i;char as;average();sum();doprintf(tttt 班級學生信息列表 nn);printf(學期t班別t學號t姓名t大學物理t電子技術(shù)t英語t數(shù)據(jù) 結(jié)構(gòu)t總分t平均值n);for(i=0;inow_No&0;i+)printf(%st%st%ut%st%.2ft%.2ft%.2ft%.2ft%.2ft%.2fn,stui.term,stui. grade,stui.No,,stui.score1,stui.score2,stui.scor
24、e3,stui.score4,stui. sum,stui.ave);int j,A=0,B=0,C=0,D=0,E=0;printf( 統(tǒng)計不同等級學生人數(shù)的功能 :n);for(j=0;ji;j+)switch(int(stuj.ave/10)/* 利用 switch 語句統(tǒng)計各個等級的學生人數(shù)*/case 10:case 9:A+;break;/* 統(tǒng)計優(yōu)秀學生人數(shù) */case 8:B+;break;/*統(tǒng)計良好學生人數(shù)*/case 7:C+;break;/*統(tǒng)計中等學生人數(shù)*/case 6:D+;break;/* 統(tǒng)計及格學生人數(shù) */ default :E+;/* 統(tǒng)計不及格學生人
25、數(shù) */ printf( 優(yōu)秀學生人數(shù) :%dn,A);printf( 良好學生人數(shù) :%dn,B);printf( 中等學生人數(shù) :%dn,C);printf( 及格學生人數(shù) :%dn,D);printf( 不及格學生人數(shù) :%dn,E); printf(n);printf(ttt 按任意鍵返回主菜單 ); fflush(stdin);as=getch();while(!as); system(cls);/* 插入數(shù)據(jù)函數(shù) */void insert()char ch;int i;doprintf(n 輸入新插入學生信息 :n); printf( 請輸入學期 :); fflush(stdin
26、);gets(stunow_No.term);printf( 輸入學生班別 :);fflush(stdin); gets(stunow_No.grade);printf(輸入學生學號:); scanf(%u,&stunow_No.No); fflush(stdin);printf( 輸入學生姓名 :);fflush(stdin); gets(stunow_N); printf( 輸入學生大學物理成績 :); fflush(stdin);scanf(%f,&stunow_No.score1);printf( 輸入學生電子技術(shù)成績 :); fflush(stdin);scanf(%f,
27、&stunow_No.score2);printf( 輸入學生英語成績 :); fflush(stdin);scanf(%f,&stunow_No.score3);printf( 輸入學生數(shù)據(jù)結(jié)構(gòu)成績 :);fflush(stdin);scanf(%f,&stunow_No.score4);printf(n); now_No=now_No+1; sort();printf( 是否繼續(xù)輸入 ?(Y/N);fflush(stdin);ch=getch();system(cls);while(ch!=n&ch!=N);/* 刪除數(shù)據(jù)函數(shù) */void del()unsigned long inum;
28、int i;printf( 輸入要刪除學生的學號 :); fflush(stdin);scanf(%u,&inum); for(i=0;inow_No;i+)if(stui.No=inum)if(i=now_No)now_No-=1;else stui=stunow_No-1; now_No-=1;sort();break; system(cls);void find() /* 查詢函數(shù) */int i;char str20,as;average();sum();doprintf( 輸入要查詢的學生姓名 :); fflush(stdin); gets(str);for(i=0;inow_No;
29、i+)if(!strcmp(,str)printf(班別t學號t姓名t大學物理t電子技術(shù)t英語t數(shù)據(jù) 結(jié)構(gòu)t總分t平均值n);printf(%st%ut%st%.2ft%.2ft%.2ft%.2ft%.2ft%.2fn,stui.grade,stui.No,stui .name,stui.score1,stui.score2,stui.score3,stui.score4,stui.sum,stui.ave);printf(ttt 按任意鍵返回主菜單 );fflush(stdin);as=getch();while(!as); system(cls);void average()/* 求平均數(shù) */int i;for(i=0;inow_No;i+) stui.ave=(stui.score1+stui.score2+stui.score3+stui.score4)/4; void sum() int i;for(i=0;inow_No;i+) stui.sum=(stui.score1+stui.score2+stui.score3+stui.score4); void modify()/* 修改數(shù)據(jù)函數(shù)*/in
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度版權(quán)許可合同許可方式
- 2024年城市軌道交通建設與運營管理承包合同
- 2024小產(chǎn)權(quán)房買賣合同(買方)范本
- 2024年度通信工程安全施工質(zhì)量保證合同
- 2024年度學生轉(zhuǎn)學與安全責任承諾合同
- 2024年度物業(yè)租賃合同:高端商務樓物業(yè)管理與租賃合同
- 2024年廣告投放合同投放策略與違約金
- 2024年家具企業(yè)員工股權(quán)激勵計劃合同
- 2024年度影視制作合同標的及制作要求
- 2024丙丁雙方關(guān)于合作開展物流業(yè)務的戰(zhàn)略合作協(xié)議
- 【課件】第15課+權(quán)力與理性-17、18世紀西方美術(shù)+課件-高中美術(shù)人教版(2019)美術(shù)鑒賞
- 兒童早期的認知發(fā)展-皮亞杰前運算階段(三座山實驗)
- 國開一體化平臺01588《西方行政學說》章節(jié)自測(1-23)試題及答案
- 2024年極兔速遞有限公司招聘筆試參考題庫附帶答案詳解
- 2024年威士忌酒相關(guān)公司行業(yè)營銷方案
- 網(wǎng)絡游戲危害課件
- 2024供電營業(yè)規(guī)則學習課件
- 鐵路給水排水設計規(guī)范(TB 10010-2016)
- GINA2023-哮喘防治指南解讀-課件
- 2024年上海市第二十七屆初中物理競賽初賽試題及答案
- 寢室設計方案方法與措施
評論
0/150
提交評論