學生管理系統(tǒng)課程設計報告_第1頁
學生管理系統(tǒng)課程設計報告_第2頁
學生管理系統(tǒng)課程設計報告_第3頁
學生管理系統(tǒng)課程設計報告_第4頁
學生管理系統(tǒng)課程設計報告_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、成功是失敗之母,一切都是努力的結(jié)果 頁腳內(nèi)容22 湖南工業(yè)大學 課程設計任務書 2012 2013學年第 一學期 計算機與通信 學院(系、部) 軟件工程 專業(yè) 姓名:夏笑聲 課程名稱: 設計題目: 班級1202 完成期限: 進 度 安 排 面向過程程序設計課程設計 學生信息管理系統(tǒng) 自 2012 年 12 月 26 日至 2012 年 12 月28日共 三天 用C語言設計一個學生信息管理系統(tǒng)軟件,要求實現(xiàn)以下功能: 1. 建立文件功能 ? 可以使用默認文件名,或制定文件名將記錄存儲到文件 ? 文件保存成功要有提示 ? 初次使用可以新建一個保存文件 2. 錄入學生信息功能 ?可以隨時錄入制定人數(shù)

2、信息的功能 3. 查詢功能 ?可以通過輸入學號查詢制定學生信息功能 ?可以通過輸入姓名查詢制定學生信息功能 4. 刪除記錄功能 可以通過學生的姓名或?qū)W號信息刪除學生的信息 5. 修改記錄功能 可以通過學生的姓名或?qū)W號信息修改任意一項指定的信息 6. 按總分排序功能 可以按照學生的總分成績排好序?qū)⑺袑W生的信息顯示出來 7. 退出 可以在程序運行時很方便地退出程序 起止日期 工作內(nèi)容 程序基本設計思路 編輯核心代碼和程序模塊,修改程序增加部分功能 再次修改,調(diào)試;完成設計文檔和課程設計說明書答 辯 2012年12月28日 指導教師(簽字): 系教研室)主任(簽字): 敝2療/孝 HUNAN UN

3、liVERSITV OF TECHNOLOGY 計算機與通信學院 面過程程序設計課程設計 學生信息管理系統(tǒng) 12408300239 專業(yè)及班級 軟件工程1202 夏笑聲 2012/12/28 目錄 、實驗目的和要求 1課程設計的目的 2、課程設計的要求 二、設計方案 1、總體設計 2、系統(tǒng)流程圖 .4 17 3、程序說明書. 三、總結(jié)與體會 四、 參考資料 18 實驗目的和要求 1、課程設計目的: 1、 2、 使學生鞏固和加強“ C語言程序設計”課程的理論知識。 使學生掌握C語言程序設計的方法及編程技巧。 3、進一步理解和運用結(jié)構(gòu)化程序設計的思想和方法。、 5、初步掌握開發(fā)一個小型實用系統(tǒng)的基

4、本方法: 結(jié)合實際應用的要求,使課程 設計既覆蓋知識點,又接近工程的實際需要。 6培養(yǎng)學生良好的程序設計風格。、 7、 掌握書寫程序設計開發(fā)文檔的能力,使學生學會撰寫課程設計報告。、 8、通過查閱手冊和文獻資料,。培養(yǎng)學生獨立分析問題和解決問題的能力。、 9、培養(yǎng)學生的創(chuàng)新能力和創(chuàng)新思維。 2、基本要求: (1)要求利用結(jié)構(gòu)化程序設計的方法及 C語言的編程思想來完成系統(tǒng)設計。 (2)模塊化程序設計:要求在設計過程中,按功能定義函數(shù)或書寫多個文件, 進行模塊化設計,各個功能模塊用函數(shù)的形式來實現(xiàn)。 (3)學生所選課題必須上機通過,并獲得滿意的結(jié)果。 (4)程序書寫風格:鋸齒型書寫格式。 1、總體

5、設計 該程序共有6大模塊構(gòu)成,程序的開頭首先是一個歡迎界面,歡迎界面的 下方有提示信息按回車鍵繼續(xù),這時按下回車鍵,界面跳轉(zhuǎn)到程序的主界面,各 功能菜單項。此程序一共有六大功能,全部通過定義函數(shù)來實現(xiàn)功能。主要有以 下幾項基本功能:1.信息錄入功能2.信息查詢功能3.刪除記錄功能4.修改記錄功 能5.按總分排序輸出所有信息功能,6.退出程序功能。 3、程序說明書 此程序在實現(xiàn)功能時采用的方式是編寫函數(shù),通過編寫的5個函數(shù)來實現(xiàn)該 程序的五大基本功能。主要功能有信息錄入、信息查詢、刪除記錄、修改指定記 錄、輸出所有學生信息,以及退出程序功能。首先將一系列頭文件包含進來以及 定義文件指針和定義了一

6、個結(jié)構(gòu)數(shù)組用來存儲學生的所有信息,源代碼如下: #i ncludevstdio.h #i ncludevstdlib.h #in clude #in elude vp rocess.h struct node char id12; char n ame15; char fale4; int score3; int all; int _size; stude nt50; struct no de2 char id12; char n ame15; char fale4; char score44; char all4; ; FILE *fr; struct node *p=stude nt; c

7、har _class410=C 語言,大機,高數(shù),英語; int nu mber; void luru(); void chax un(); void sha nchu(); void p aixu(); void xiugai(); void mai n() 打開程序,首先可以看到的是一個精美的歡迎界面,該界面由如下代碼實現(xiàn): prin tf(nnnnnnnnnnnn); printf( printf( printf( printf( printf( printf( 夏笑聲 * * * * * * * * printf( printf(nnnnn 按回車鍵繼續(xù).); 歡迎界面如下圖所示: C

8、iDociu ents and S ettf)l面學主営理系編hU亡bu 就學生甘- 験翎專時騙專齢皤皤時齢辭騎貓6(鶴 2!n); 3!n); 4!n); printf(請選擇功能:n); printf(信息錄入請按 printf(信息查詢請按 printf(刪除記錄請按 printf(修改記錄請按 printf(按總分排序輸出所有信息請按5! n); printf(按0或其它任意鍵退出.n); 3? C ; Ddcub ents and S ett面學生昔理盞握ID亡學半?yún)? 1Hl| D 注意=在開始使用wratL. M靜尹幫呂件黯除原有數(shù)據(jù)魯按舉! 魯廉鶏検!I 信息査詢請:範申 刪除

9、憂錄請 修改記錄W 7京3 7 Sr |QQP zLnyzLn - 這時,我們在菜單的最上方可以看到一條警示信息,“注意:在第一次使用本軟 件之前,必須先建立一個存儲文件”,這是因為此程序需要一個文件來將所有學 生的各項信息存儲在外存中,只有這樣才能使已經(jīng)記錄的信息能夠永久保存。這 項功能我采用的是用“ W+ ”的方式打開文件,之所以這樣設計,是因為用“ W+ ” 的方式打開文件使程序獲得的一個額外功能,當按下“8”鍵的時候,可以將所 有已經(jīng)保存的記錄全部清楚掉,即初始化記錄功能,這樣就做到了一舉兩得了。 接下來介紹的是程序的信息錄入功能。在設計信息錄入功能時,我也遇到了 不少的問題,其中最大

10、的一個問題就是關(guān)于如何將要存儲的程序?qū)懭胛募?,很顯 然,如果將輸入的信息一股腦的寫入文件的話,后果將是非常嚴重的,因為寫入 的信息始終是要讀出來的,而如果隨意地寫進去的話,在讀取信息的時候,讀取 信息的位置指針將無法定位,因為寫入的時候沒有按照一定的規(guī)律。對于這個問 題,我采用的解決辦法的將所有學生的信息采用一定的格式寫入文件,學號統(tǒng)一 采用11位數(shù)字的格式,姓名統(tǒng)一采用占 6各字節(jié)的格式,性別采用兩個字節(jié)也 就是一個中文字符的格式,后面是各科分數(shù),全部采用占3個字節(jié)的格式,這樣 采用一種統(tǒng)一的格式將學生的信息按照順序一個接著一個寫入文件。源代碼如 下: for(i=0;iv_n1;i+) p

11、rintf(請輸入第%d位學生的學號,按0退出此次錄入! : n,i+1); sea nf(%s, pn umber.id); getcharO;用于吃掉回車符 /設置中途退 if(!(stre mp(pnu mber.id,_cheshi5) 出功能(如果中途不想繼續(xù)輸入的話) fclose(fr); 來控制當中途退出時能將已輸入的信息及時存到外存中 /此句用 break; if(strle n(pnu mber.id)!=11) printf(輸入的學號有誤!學號為標準的11位數(shù),請重新輸入:n); i-; con ti nue; else fprin tf(fr,%s, pnu mber

12、.id); Ioop2: printf(請輸入第%d位學生的姓名(僅支持中文):n,i+1); gets( pnu mber .n ame); if(strle n(pnu mber. name)=O|strle n(pnu mber. name)6) printf(姓名長度不符合要求,請重新輸入!n); goto Ioop2; fprin tf(fr,%s, pnu mber. name); a仁strle n(pnu mber .n ame); /在姓名不足三個字的后用空格補齊 a2=3-(a1/2); for(b2=1;b2=a2;b2+) fprin tf(fr,); loop7: p

13、rintf(請輸入性別:n); gets( pnu mber.fale); if(strle n(pnu mber.fale)!=2) prin tf(性別輸入有誤,請重新輸入!n); goto Ioop7; else fprin tf(fr,%2s, pnu mber.fale); pnu mber.all=0;將總分初始化 for(j=0;j4;j+) printf(請輸入第 %d 位學生的 %s成績:n,i+1,_classj); sca nf(%s,xj); fprin tf(fr,%-3s,xj); _x1=atoi(x1); _x2=atoi(x2); _x3=atoi(x3);

14、_x4=atoi(x4); _x5=_x1+_x2+_x3+_x4; fprin tf(fr,%-3d,_x5); printf(第%d位學生的信息輸入成功!n,i+1); fclose(fr); printf(錄入結(jié)束,按回車回主菜單! getcharO; getcharO; system(cls); else prin tf(a); printf(超出最大人數(shù),請重新輸入! 在讀取文件時位置指針移動的問題就解決啦。 n); n); 其次是,在信息存儲的過程中,我 還考慮到了使用者在使用時可能遇到的盡可能多的問題,如若輸入的學號小于 11位,便會有輸入錯誤提醒,還有一個非常使用的是當使用著在

15、進行信息錄入 的過程中,可以隨時地退出該功能,在錄入成功后會有錄入成功的提示信息。并 且,為了使程序在使用時不會顯得過于呆板,我還在警示信息顯示的同時加入了 聲音警示的功能,如學號輸入錯誤不僅有文字提示而且有聲音提示, printf(a);這樣使程序看起來顯得更加人性化。 程序的第二個功能是信息查詢功能。很顯然,沒有查詢的功能,寫得再好的 錄入功能也相當于白寫。進入信息查詢功能的菜單鍵是2數(shù)字鍵,進入該功能后 會有提示輸入要查詢的學生的學號或姓名,在設計該查詢功能時,我采用的是 strcmp函數(shù)來比較字符串的方式,來將輸入的要查詢的字符與文件中當前有的各 信息一一匹配,當找到相同的學號或姓名時

16、,立即退出匹配的循環(huán)。源代碼如下: for(i=0;iv50;i+)/將所有學生的學生跟已經(jīng)錄入的學號配對 fscan f(fr,%11s,_id); fscan f(fr,%6s,_name); if(!strc mp (shuru,_id)|(!strc mp (shuru,_ name) printf(學號:%sn,_id); printf(姓名:%sn,_name); fsca nf(fr,%2s,_fale); printf(性別:%2sn,_fale); for(j=0;j4;j+) fsca nf(fr,%3s,fe n); printf(%s 的成績?yōu)椋?sn,_classj,

17、fen); fsca nf(fr,%3s,_all); printf(總分:%3sn,_all); zhua ngtai=0; /標記說明已查找到記錄 break; else fseek(fr,16,1); /將光標移到下一次要配對的前一個,以測定該信息是否為最后一條 cheshi=fgetc(fr); if(cheshi=EOF) break; if(zhua ngtai) prin tf(a); printf(不存在該學號的學生!n); fclose(fr); printf(按回車鍵回主菜單.n); getchar(); getchar(); system(cls); 查詢的界面如下: c

18、T C:Dacv*eiLt s ulJ1: 面 I 學生首理系紅 111電1口0 學生曽理紊統(tǒng)H13E3 信a錄入請:茲! 詹息査詢請宏! 修跖己柔潼安4! 筮J硯鈾盤f有信息請按 ! 技阿雖它任盡囪屋岀 2 請輸入查詢的學空的學號或姓名: B 這樣寫有一個好處就是使查詢所要提供的信息不僅僅局限于姓名或著是學號,這 樣就更方便使用者的需要。 若查到結(jié)果則在屏幕上顯示已查到的結(jié)果: for(i=0;iv50;i+) /將所有學生的學生跟已經(jīng)錄入的學號配對 fscan f(fr,%11s,_id); fscan f(fr,%6s,_name); if(!strc mp (shuru,_id)|(!

19、strc mp (shuru,_ name) printf(學號:%sn,_id); printf(姓名:%sn,_name); fsca nf(fr,%2s,_fale); printf(性別:2sn,_fale); for(j=0;j4;j+) fsca nf(fr,%3s,fe n); printf(%s 的成績?yōu)椋?sn,_classj,fen); fsca nf(fr,%3s,_all); printf(總分:%3sn,_all); zhua ngtai=0; /標記說明已查找到記錄 break; else fseek(fr,16,1); /將光標移到下一次要配對的前一個,以測定該信

20、息是否為最后一條 cheshi=fgetc(fr); if(cheshi=EOF) break; 在設計此功能時,我也考慮到了查詢信息不存在的問題, 當使用者輸入的 ,而且, 同樣, 要查詢的信息不存在時,會有文字和聲音提示“未找到要查詢的記錄” 在執(zhí)行此功能的過程中,也設置了隨時退出查詢的功能。功能界面如下: C : Ddcub ents and 5 tiw;B 蜩己錄逋遠3, g總駁霾冊有售息請按占!I 按0或其它任卮、犍退出H 魯輸入要刪除的爭生的姓名或?qū)W號!I in于in -: Un 在查找要刪除 記錄的位置時,我采用的方式是先將所有信息先存入一個結(jié)構(gòu)數(shù)組,源代碼如下: for(i=0

21、;iv50;i+)/先將所有信息讀入一個結(jié)構(gòu)數(shù)組 _cheshi4=fgetc(fr); if(_cheshi4=E0F) break; else fseek(fr,-1,1); fscan f(fr,%11s,stude nt5i.id); fscan f(fr,%6s,stude nt5i. name); fscan f(fr,%2s,stude nt5i.fale); fscan f(fr,%3s, fscan f(fr,%3s, fscan f(fr,%3s, fscan f(fr,%3s, fscan f(fr,%3s, 至于查找要刪除信息的位置跟信息查詢功能查找的方式是一樣的,即將

22、所輸入的 學號或姓名跟已存在的信息一一匹配, 當找到要刪除的記錄時,立即退出匹配的 循環(huán)。源代碼如下: for(j2=0;j2i;j2+) if(!strc mp (_shuru2,stude nt5j2.id)|!strc mp (_shuru2,stude nt5j2. name) _biaoji=j2; 而且還增加了刪除記錄未找到的反應機制 if(_biaoji=51) prin tf(a); printf(未找到要刪除的記錄!n); 這樣就 首先要輸入要刪除的 (按0取消修改)n); 程序的第四大功能是修改記錄功能。設計此功能的目的是考慮到當使用者只 要修改某個學生的某一項信息但又不想

23、修改其他信息時就可以采用修改記錄功 能,此功能可以按照使用者的意圖選擇性的修改學生的某項指定的記錄。 比將該學生的記錄全部刪除然后又重新存進去要方便多了。 學生的姓名或?qū)W號,以確定操作對象,代碼如下: printf(請輸入要修改信息的學生的姓名或?qū)W號! sca nf(%s,_shuru2); /設置退出修改功能 if(strc mp (_cheshi8,_shuru2) fseek(fr,0,0); for(i=0;i6) printf(輸入姓名長度不符合要求,請重新輸入!n); goto Ioop3; strc py(stude nt4. name,_xi n); break; case 3

24、: loop4:printf(請輸入要修改的性別.n); sca nf(%s,_xi n); if(strle n(_xin )!=2) prin tf(a); printf(性別輸入有誤,請重新輸入!n); goto Ioop4; else strc py(stude nt4.fale,_xi n); break; 如果選擇要修改的分數(shù),又會提示讓你選擇要修改分數(shù)的科目: s VDacxuent s and Ee it:1 面I學生管邂系申學生管d 改信息的學生的姓名或?qū)W號!飾取消修改 ISSg修改Ki項 I黔夸技1 修改 僅改分數(shù)請按4 請選疇修改的成績. C語言唾1 央語請按勺. d A

25、扇 case 4: printf(請選擇要修改的成績:n); loop6: printf(C語言請按1n大機請按2n高數(shù)請按3門英語請按4.n); sea nf(%s,_xua nzhe); xua nzhe=atoi(_xua nzhe); switch(xua nzhe) case 1: printf(請輸入要修改的學號:n); scan f(%s,_xi n); if(strle n(_xin )=11) strc py(stude nt4.id,_xi n); else prin tf(a); printf(輸入學號有誤,學號為11位數(shù),請重新輸入! n); goto Ioop3; b

26、reak; case 2: loop3:printf(請輸入要修改的姓名(僅支持3個字以內(nèi)中文):n); scan f(%s,_xi n); if(strle n(_xi n)=0|strle n(_xin )6) printf(輸入姓名長度不符合要求,請重新輸入!n); goto Ioop3; strc py(stude nt4. name,_xi n); break; if C ; llocMe3it5 aad S生管理羔藪iD上bm. 信息存儲文件請按9! 注S:在第1次僥坤本件之前, 必須先建立信息#儲文建立 建立#儲文件或靖除原有數(shù)據(jù)請擬? ? ! 請選擇功能亠 信息5入請汝1! 宿

27、息查詢請藐* 帳址錄埴宙亨 修改記錄詭決處 襄足鉗有信息請捧! 抿0或冥匕任思退出 4 請輸入募修改信息的學生的姓名或?qū)W號!磁卿消修改 接下來介紹的程序的第五大功能一一輸出所有學生信息的功能。 當然雜亂地輸出所有 信息可以說是好無意義的,因此,我在設計此功能時采用了一個冒泡排序, 將所有學生的信 息按照總分從大到小依次輸出。具體是先將所有學生的信息先存儲在一個結(jié)構(gòu)數(shù)組中: for(_n 2=0;_ n250;_n2+) _cheshi4=fgetc(fr); if(_cheshi4=EOF) fseek(fr,-1,1); break; else ; fseek(fr,-1,1); fsca

28、nf(fr,%11s,stude nt6L n2.id); fsca nf(fr,%6s,stude nt6|_ n2. name); fsca nf(fr,%2s,stude nt6|_ n2.fale); fsca nf(fr,%3s,stude nt6L n2.score0); fsca nf(fr,%3s,stude nt6L n2.score1); fsca nf(fr,%3s,stude nt6L n2.score2); fsca nf(fr,%3s,stude nt6L n2.score3); fsca nf(fr,%3d, qiu0=atoi(stude nt6L n2.sco

29、re0); qiu1=atoi(stude nt6L n2.score1); qiu2=atoi(stude nt6L n2.score2); qiu3=atoi(stude nt6L n2.score3); stude nt6L n2.all=qiu0+qiu1+qiu2+qiu3; 然后用了一個冒泡排序: for(i=0;ijilu+1;i+)for(j=0;jilu-1;j+) if(stude nt6j.all)(stude nt6j+1.all) stude nt4=stude nt6|j; stude nt6j=stude nt6j+1; stude nt6j+1=stude nt4; ,退出功能在此程序中可以說無處不在, 因為我在設計各項功能時 在執(zhí)行各個功能時,隨時都可以退出到主菜單。但這里所說的退出 沒有退出的功能,有了該功能將可以使程序在運行時可以很方便地 按總分排好序之后就是輸出信息了,輸出信息的時候,我采用的是一個學生的所有信 息在一行輸出,這樣可以使使用者在查看的時候顯得更加清楚明了。 最后就是退出功能。 都考慮到了退出的問題, 功能是指退出程序功能, 退出。 三.總結(jié)與體會 至今我仍感慨頗多,的確,從從拿到題目到完成整個編程, 回顧起此次課程設計, 從理論到實踐,在整整半個學期的日子

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論