版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
⑩退出”等全部的功能,之所以設(shè)計(jì)這麼一個(gè)主界面,一是因?yàn)槟苁褂脩魧Τ绦虿僮鞯牧鞒谈忧逦喢鳎潜WC了用戶同時(shí)只能對一個(gè)文件進(jìn)行操作系統(tǒng)的要求,保證了系統(tǒng)的正確性和易用性。3.2詳細(xì)設(shè)計(jì)思想3.2.1確定程序主要功能模塊這個(gè)就比較簡單了,主要是根據(jù)系統(tǒng)設(shè)計(jì)的說明及要求來設(shè)計(jì),從而設(shè)計(jì)了九大功能模塊,有文件操作,有系統(tǒng)維護(hù)功能,排序和統(tǒng)計(jì)功能,有輸入輸出等基本功能,比較人性化,添加了較多的提示語。這個(gè)程序的主要功能時(shí)輸入學(xué)生的學(xué)號(hào),姓名,學(xué)期和三科成績來對其進(jìn)行存儲(chǔ),在存儲(chǔ)后可以對學(xué)生的成績按學(xué)號(hào)及學(xué)期或姓名及學(xué)期來進(jìn)行查詢,同時(shí)輸出此同學(xué)的平均分及總分,之后可以對某個(gè)同學(xué)的成績進(jìn)行各種操作,例如修改,刪除等,同時(shí)還可以對學(xué)生們的成績按照總分或單科成績排序,在整個(gè)過程中所做的操作都會(huì)保存到"student.txt"文件中并顯示。3.2.2確定語言算法由于之前都沒有做過類似的設(shè)計(jì),所以一時(shí)間不能夠確定到底使用何種語言來設(shè)計(jì)本系統(tǒng),所以在網(wǎng)上看了一些其他人設(shè)計(jì)的程序,鏈表的、數(shù)組的,各種各樣的,也不知如何選擇,但是仔細(xì)地看了其中的設(shè)計(jì)思想,最終還是用C和數(shù)組的來做,一是覺得本人對鏈表掌握的不是很熟練,那么在設(shè)計(jì)過程中容易產(chǎn)生不能理解的錯(cuò)誤,耽誤時(shí)間,二是想運(yùn)用C,可以鞏固一下所學(xué)的數(shù)據(jù)結(jié)構(gòu)的知識(shí),之前做實(shí)驗(yàn)的時(shí)候都沒怎么用所學(xué)的知識(shí),這時(shí)候想練練。就這樣確定了整體的結(jié)構(gòu)算法3.3系統(tǒng)結(jié)構(gòu)體的設(shè)計(jì)StudentStudent總分平均分C語言姓名學(xué)號(hào)算法性別數(shù)據(jù)庫總分平均分C語言姓名學(xué)號(hào)算法性別數(shù)據(jù)庫structStudent//結(jié)構(gòu)體{ intterm;//學(xué)期 intnum;//學(xué)號(hào) charname[12];//姓名 floatmark1;//成績 floatmark2; floatmark3; floatsum;//總分 floataverage;//平均分}3.3各種模塊的實(shí)現(xiàn)Main()函數(shù)的設(shè)計(jì)用Mvoidmain()來實(shí)現(xiàn),主要是來顯示主菜單,使用戶選擇操作。在main()函數(shù)中主要運(yùn)用do-while循環(huán)語句和switch()-case選擇判斷語句來調(diào)用相關(guān),選擇各種功能模塊。系統(tǒng)的運(yùn)行是在一個(gè)永真的循環(huán)里進(jìn)行的,只有在主界面并選擇“退出”時(shí),才會(huì)跳出永真循環(huán),并退出程序。3.3.1錄入學(xué)生記錄模塊用函數(shù)intadd_text(structStudentstud[],intn)來實(shí)現(xiàn)主要功能用來對學(xué)生的記錄進(jìn)行添加。選擇"8",進(jìn)入模塊錄入所需學(xué)生個(gè)數(shù)的學(xué)生信息,比如學(xué)號(hào),姓名,成績等。然后進(jìn)入主菜單,根據(jù)主菜單來在此基礎(chǔ)上進(jìn)行操作。期間會(huì)有一些提示語,按此操作即可。本函數(shù)用到了文件操作的指針FILE*fp。3.3.2顯示學(xué)生記錄模塊用函數(shù)voidoutput_stu(structStudentstud[],intn,inti)來實(shí)現(xiàn)主要功能是用來顯示學(xué)生的信息進(jìn)行輸出。在系統(tǒng)已經(jīng)錄入了學(xué)生資料的前提下,只用該功能可以顯示學(xué)生的信息資料等等。同時(shí)也會(huì)自動(dòng)跳出主菜單進(jìn)行后續(xù)操作。主要的程序代碼就是從文件的讀操作和界面顯示操作。3.3.3添加學(xué)生資料模塊用函數(shù)voidinput_num(structStudentstud[],intn,inti)來實(shí)現(xiàn)。主要功能是用來添加學(xué)生資料,成績。若有重號(hào)則提示重新輸入,,就可以使用本模塊來進(jìn)行添加利用for循環(huán)進(jìn)行輸入新學(xué)生記錄,輸入完后,最后會(huì)有一個(gè)提示語句:是否繼續(xù)輸入(y\n),y是繼續(xù)輸入,n是返回主菜單否則將返回主菜單,本模塊功能到此結(jié)束。在此期間會(huì)根據(jù)語句算出總分和平均分,并默認(rèn)按學(xué)號(hào)排序保存到文件中去3.3.4查詢,刪除,修改模塊分別用三個(gè)函數(shù)來實(shí)現(xiàn),刪除箅修改模塊是基于查詢模塊上的,要先查詢你要進(jìn)行操作的內(nèi)容,然后再進(jìn)行其它操作。查詢是用用函數(shù)intfind_stu(structStudentstud[],intn)來實(shí)現(xiàn),它有兩種方式,主菜單先5進(jìn)入查詢,會(huì)出現(xiàn)提示:請選擇您要查詢的方式:(1:按學(xué)號(hào)2:按名字;),用for和if語句, if(strcmp(stud[i].name,you_choice)!=0)如果第i項(xiàng)與查找信息不匹配則查詢失敗,否則查詢成功,調(diào)用顯示函數(shù),輸出該學(xué)生信息,之后會(huì)出現(xiàn)提示:是否進(jìn)行1:修改2:刪除3:退出選項(xiàng)。修改是用函數(shù)voidupdata_stu(structStudentstud[],intn,inty)來實(shí)現(xiàn)的,修改也可以進(jìn)行任選一門課進(jìn)行修改,會(huì)有提示:請輸入您要對哪一門成績進(jìn)行修改?(0:數(shù)據(jù)庫;1:算法;2:C語言)之后輸入該課程的成績就可以了。
刪除是用voiddelete_stu(structStudentstud[],intn,inty)來實(shí)現(xiàn)的,選擇了以后,還會(huì)有判斷提示:確認(rèn)您要進(jìn)行刪除嗎?(y/n),y是確定,之后就會(huì)回到主菜單,n是不刪除。退出是如果不進(jìn)行任何操作后,返回到主菜單。3.3.5統(tǒng)計(jì)模塊誶功能是用voidTJ_stu(structStudentstud[],intn,into)來實(shí)現(xiàn)的。選3進(jìn)入統(tǒng)計(jì)界面,首先有提示要統(tǒng)計(jì)的學(xué)科,有123供你選擇,選擇了以后,就可以顯示出該課程的成績表,按從高到低的順序排列,算法是用冒泡排序方法。以及各種統(tǒng)計(jì),包括:平均成績、及格率、優(yōu)生率、不及格人數(shù)\、優(yōu)生人數(shù)。排序代碼如下:for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { if(stud[j].score[o]>stud[i].score[o]) { temp=stud[i]; stud[i]=stud[j]; stud[j]=temp; } } }
3.3.6班級(jí)成績表模塊該模塊是用voidchenji_stu(structStudentstud[],intn,into)/函數(shù)實(shí)現(xiàn),用到的算法是直接選擇排序,是按總成績從高到低排序的,顯示是調(diào)用了顯示模塊的函數(shù),使得函數(shù)的結(jié)構(gòu)大的簡化了。主要程序如下:for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) { if(stud[j].score[3]>stud[i].score[3])k=j;//score[3])表示總成績 if(k!=i) { temp=stud[i]; stud[i]=stud[k]; stud[k]=temp; } } 4所遇到的問題和分析解決4.1系統(tǒng)存在的不足本學(xué)生成績管理系統(tǒng)由九大模塊組成,每個(gè)模塊相互聯(lián)系又相互獨(dú)立。這個(gè)學(xué)生成績管理系統(tǒng)存在著很多不足之處,由于自己本身編程能力的問題,這個(gè)系統(tǒng)可以實(shí)現(xiàn)的功能非常有限。只能實(shí)現(xiàn)學(xué)生管理系統(tǒng)最基本的功能,可以進(jìn)行簡單的輸入、輸出學(xué)生資料,查詢和修改學(xué)生信息,能直接從文件中讀入數(shù)據(jù),能對系統(tǒng)所作的修改、操作進(jìn)行保存等。而且在每個(gè)模塊也有不足的地方,比如在輸入學(xué)生資料時(shí),對每個(gè)信息項(xiàng)沒有嚴(yán)格的規(guī)定,可以輸入任何的字符。感覺應(yīng)用范圍還是不容樂觀。這有待以后努力,更詳盡的實(shí)現(xiàn)模塊的功能。4.2制作過程中遇到的問題4.2.1do-while語句的位置問題在查詢學(xué)生記錄此模塊中,只能查詢一次,若要進(jìn)行多次查詢的話就不行了,只能先到主菜單,再先查詢選項(xiàng),很是麻煩。不能實(shí)現(xiàn)原有的功能。所以要想清楚到底是哪里循環(huán)出問題,按照邏輯思路找到相應(yīng)的語句正確添加就行了。4.2.2system('cls')的使用問題剛開始時(shí)對菜單的切換不是很了解,編寫的程序運(yùn)行的時(shí)候是一豎行向下的,很影響使用者的視覺范圍,通過查詢一些資料得知了system('cls')的作用,能夠把一些暫時(shí)不用或不相關(guān)的信息通過清屏來處理。4.2.3內(nèi)存的分配問題對于初學(xué)者的話對內(nèi)存的分配和釋放問題是比較抽象的和模糊的問題,在排序是之前就出現(xiàn)了交換數(shù)據(jù)困難的問題,以及內(nèi)存分配空間繁瑣釋放空間不及時(shí)的問題,造成空間的浪費(fèi),使得程序運(yùn)行時(shí)效率較低,因此最后采用了順序存儲(chǔ)記錄的方式,這就能改變前面所出現(xiàn)的問題。4.4問題分析在自己動(dòng)手寫的時(shí)候才會(huì)發(fā)現(xiàn)有太多的問題,這些都是只有自已親自去實(shí)踐才會(huì)有的收獲,例如在有些細(xì)節(jié)方面還是要特別注意啊,像分號(hào)的添加,是或還是與的的方向問題,函數(shù)的返回值等問題,雖然容易改掉,但是很容易養(yǎng)成不好的習(xí)慣,而且還會(huì)浪費(fèi)時(shí)間,所以在一開始寫的時(shí)候就要很仔細(xì),這樣才能保證程序編的精細(xì),同時(shí)若出現(xiàn)很多這樣的錯(cuò)誤的話,在編寫程序的時(shí)候也會(huì)心里煩的,所以在編程的時(shí)候要認(rèn)真仔細(xì)。就你在剛開始時(shí)對文件的操作不是很明白,一直不能很好的操作文件,直到快驗(yàn)收的時(shí)候,仍舊出現(xiàn)問題,就是對已經(jīng)存在的文件讀取問題,將數(shù)據(jù)從文件中讀取,但是不能夠正常的讀出,最后把讀文件的操作語句進(jìn)行仔細(xì)檢查后,發(fā)現(xiàn)語句的順序有點(diǎn)問題,重新把fscanf()語句進(jìn)行再修改后就發(fā)現(xiàn)能夠正常的讀取文件了。其余的就沒什么比較大的問題了,基本上只要細(xì)心一點(diǎn)的話就可以正確調(diào)試成功了。。5系統(tǒng)特色及關(guān)鍵技術(shù)其實(shí)在本程序的設(shè)計(jì)過程當(dāng)中,沒有很吸引人的關(guān)鍵技術(shù),因?yàn)槲业腃語言學(xué)的很好,所以當(dāng)初設(shè)計(jì)的時(shí)候就只是想把功能都實(shí)現(xiàn)就好了,盡可能的把所要求的功能都編進(jìn)程序,這樣就覺得很滿足了。所以都是設(shè)計(jì)的比較簡單易懂的語言,這樣自己能夠更明白一些,所以就沒有時(shí)間去細(xì)細(xì)地去設(shè)計(jì)自己的程序。本程序要說有什么值得說的,那就只有人性化這點(diǎn)了,在設(shè)計(jì)成學(xué)的時(shí)候,因?yàn)樽约号屡炝耍蕴砑恿撕茉敱M的提示,這樣在編程的過程中或調(diào)試的時(shí)候都能夠比較快的運(yùn)行。還有就是盡可能的應(yīng)用了do-while語句和switch-case語句,這兩個(gè)語句在之前不是很常用,所以在這個(gè)程序中試煉了一下,雖然在編寫的過程中總是出錯(cuò),但還是成功的用好了,也是程序有條理一些。我也知道這些東西別人可能比我弄得還要好,但是我在我所學(xué)的知識(shí)中成功的應(yīng)用了這些,我覺得就是好事,就是進(jìn)步。6結(jié)論及心得體會(huì)學(xué)生成績管理系統(tǒng)終于成功的驗(yàn)收了,從這最后的測試結(jié)果來看,基本上實(shí)現(xiàn)了成績管理系統(tǒng)的幾大功能:成績信息錄入、成績信息的管理。并達(dá)到操作過程中的直觀、方便、實(shí)用、安全等要求。系統(tǒng)采用模塊化程序設(shè)計(jì)的方法,既便于系統(tǒng)功能的組合和修改。本系統(tǒng)經(jīng)過測試,證明其運(yùn)行是穩(wěn)定、可靠的。但在系統(tǒng)設(shè)計(jì)中也也遇到很多的問題,并且本系統(tǒng)的功能還需要不斷的完善和改進(jìn),在以后空閑時(shí)間里逐一進(jìn)行完善,使系統(tǒng)功能更加完善,一周多的數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)雖然有些疲憊,但還是有很多的收獲的,像數(shù)據(jù)庫的課設(shè)一樣,我又一次鞏固了所學(xué)到的知識(shí),之前的學(xué)習(xí)只是停留在理論基礎(chǔ)上,現(xiàn)在自己動(dòng)手操作試驗(yàn)后,才是真正的理解及體會(huì)。編程也學(xué)了一年多了,有很多知識(shí)都是似懂非懂,通過平時(shí)上機(jī)操作,自己也了解了一些,但讓我有了更深的理解和更好的認(rèn)識(shí),則是在這次的課設(shè)上,之前的困惑也通過這次的課設(shè)解決了一些,雖然還是不能夠全面的理解,但是有進(jìn)步就很高興。在課程設(shè)計(jì)之前,因?yàn)橛幸郧皩?shí)驗(yàn)的經(jīng)驗(yàn)與教訓(xùn),明白了寫代碼這一步是非常重要的,因?yàn)楫?dāng)你把代碼輸進(jìn)去之后,并編譯讓其運(yùn)行,發(fā)現(xiàn)通過不了,再來檢查出問題,是很費(fèi)費(fèi)力的事情,因此分析和規(guī)劃代碼是很重要的,最重要的是要把邏輯結(jié)構(gòu)寫好,這樣就不會(huì)出現(xiàn)大問題,寫代碼就要先找出核心的內(nèi)容,用多種方法來實(shí)現(xiàn)核心部分,這樣可以盡可能的避免發(fā)現(xiàn)邏輯或編譯不支持的錯(cuò)誤。通過本次論文設(shè)計(jì),我學(xué)會(huì)了怎樣去借鑒別人的方法和經(jīng)驗(yàn),知道了如何整合資料和處理這些資料的能力,這位以后做畢設(shè)的論文打下了基礎(chǔ),使我感覺比較好的是有一種成功的喜悅,雖然在編譯的時(shí)候會(huì)經(jīng)常因?yàn)橐恍┬〉腻e(cuò)誤而心煩意亂,但是也不失為一件好事,失敗的越多積累的經(jīng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度水路貨運(yùn)運(yùn)輸承包服務(wù)合同2篇
- 二零二五版水電安裝工程安全評(píng)估與施工合同2篇
- 二零二五版農(nóng)業(yè)貸款定金合同規(guī)范文本3篇
- 二零二五版幼兒園教師勞動(dòng)權(quán)益保護(hù)及勞動(dòng)合同解除程序協(xié)議3篇
- 二零二五版房產(chǎn)托管居間服務(wù)合同協(xié)議3篇
- 二零二五年房地產(chǎn)物業(yè)管理合作開發(fā)合同3篇
- 二零二五年度重點(diǎn)單位保安勤務(wù)合同5篇
- 二零二五版微電影導(dǎo)演定制化拍攝合同3篇
- 二零二五版KTV員工心理健康關(guān)愛計(jì)劃合同2篇
- 二零二五年度高端酒店場地租賃合同范本2篇
- 供銷合同(完整版)
- 二零二五年企業(yè)存單質(zhì)押擔(dān)保貸款合同樣本3篇
- 鍋爐安裝、改造、維修質(zhì)量保證手冊
- 油氣行業(yè)人才需求預(yù)測-洞察分析
- (2024)河南省公務(wù)員考試《行測》真題及答案解析
- 1000只肉羊養(yǎng)殖基地建設(shè)項(xiàng)目可行性研究報(bào)告
- 《勞保用品安全培訓(xùn)》課件
- 2024版房屋市政工程生產(chǎn)安全重大事故隱患判定標(biāo)準(zhǔn)內(nèi)容解讀
- 2024院感年終總結(jié)報(bào)告
- 高一化學(xué)《活潑的金屬單質(zhì)-鈉》分層練習(xí)含答案解析
- 04S206自動(dòng)噴水與水噴霧滅火設(shè)施安裝圖集
評(píng)論
0/150
提交評(píng)論