車輛管理系統(tǒng)課程設(shè)計報告完整_第1頁
車輛管理系統(tǒng)課程設(shè)計報告完整_第2頁
車輛管理系統(tǒng)課程設(shè)計報告完整_第3頁
車輛管理系統(tǒng)課程設(shè)計報告完整_第4頁
車輛管理系統(tǒng)課程設(shè)計報告完整_第5頁
已閱讀5頁,還剩81頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

車輛管理系統(tǒng)課程設(shè)計報告(優(yōu)質(zhì)文檔,可直接使用,可編輯,歡迎下載)

車輛管理系統(tǒng)課程設(shè)計報告(優(yōu)質(zhì)文檔,可直接使用,可編輯,歡迎下載)課程設(shè)計報告課程設(shè)計題目:車輛管理系統(tǒng)學生姓名:ABC專業(yè):軟件工程班級:16*****指導教師:*祥**康(完整源代碼和注釋在我上次的另一篇文章里)2021年6月18日東華理工大學課程設(shè)計評分表學生姓名:A班級16*****學號:20212021****課程設(shè)計題目:項目內(nèi)容滿分實評選題能結(jié)合所學課程知識、有一定的能力訓練.符合選題要求(5人一題)10工作量適中,難易度合理10能力水平能熟練應用所學知識,有一定查閱文獻及運用文獻資料能力10理論依據(jù)充分,數(shù)據(jù)準確,公式推導正確10能應用計算機軟件進行編程、資料搜集錄入、加工、排版、制圖等10能體現(xiàn)創(chuàng)造性思維,或有獨特見解10成果質(zhì)量總體設(shè)計正確、合理,各項技術(shù)指標符合要求.10說明書綜述簡練完整,概念清楚、立論正確、技術(shù)用語準確、結(jié)論嚴謹合理;分析處理科學、條理分明、語言流暢、結(jié)構(gòu)嚴謹、版面清晰10設(shè)計說明書欄目齊全、合理,符號統(tǒng)一、編號齊全。格式、繪圖、表格、插圖等規(guī)范準確,符合國家標準10有一定篇幅,字符數(shù)不少于500010總分100指導教師評語:指導教師簽名:年月日格式要求:中文正文使用五號字體,英文及代碼使用小五號字體東華理工大學課程設(shè)計評分表學生姓名:B班級16*****學號:20212021****課程設(shè)計題目:項目內(nèi)容滿分實評選題能結(jié)合所學課程知識、有一定的能力訓練.符合選題要求(5人一題)10工作量適中,難易度合理10能力水平能熟練應用所學知識,有一定查閱文獻及運用文獻資料能力10理論依據(jù)充分,數(shù)據(jù)準確,公式推導正確10能應用計算機軟件進行編程、資料搜集錄入、加工、排版、制圖等10能體現(xiàn)創(chuàng)造性思維,或有獨特見解10成果質(zhì)量總體設(shè)計正確、合理,各項技術(shù)指標符合要求。10說明書綜述簡練完整,概念清楚、立論正確、技術(shù)用語準確、結(jié)論嚴謹合理;分析處理科學、條理分明、語言流暢、結(jié)構(gòu)嚴謹、版面清晰10設(shè)計說明書欄目齊全、合理,符號統(tǒng)一、編號齊全。格式、繪圖、表格、插圖等規(guī)范準確,符合國家標準10有一定篇幅,字符數(shù)不少于500010總分100指導教師評語:指導教師簽名:年月日格式要求:中文正文使用五號字體,英文及代碼使用小五號字體東華理工大學課程設(shè)計評分表學生姓名:C班級16*****學號:20212021****課程設(shè)計題目:項目內(nèi)容滿分實評選題能結(jié)合所學課程知識、有一定的能力訓練。符合選題要求(5人一題)10工作量適中,難易度合理10能力水平能熟練應用所學知識,有一定查閱文獻及運用文獻資料能力10理論依據(jù)充分,數(shù)據(jù)準確,公式推導正確10能應用計算機軟件進行編程、資料搜集錄入、加工、排版、制圖等10能體現(xiàn)創(chuàng)造性思維,或有獨特見解10成果質(zhì)量總體設(shè)計正確、合理,各項技術(shù)指標符合要求。10說明書綜述簡練完整,概念清楚、立論正確、技術(shù)用語準確、結(jié)論嚴謹合理;分析處理科學、條理分明、語言流暢、結(jié)構(gòu)嚴謹、版面清晰10設(shè)計說明書欄目齊全、合理,符號統(tǒng)一、編號齊全。格式、繪圖、表格、插圖等規(guī)范準確,符合國家標準10有一定篇幅,字符數(shù)不少于500010總分100指導教師評語:指導教師簽名:年月日格式要求:中文正文使用五號字體,英文及代碼使用小五號字體【目錄】題目…03課程設(shè)計任務(wù)…03數(shù)據(jù)結(jié)構(gòu)…04四、模塊劃分…04程序的總體設(shè)計…05流程圖…06七、主要源程序代碼(附件源代碼)…09八、測試情況及調(diào)試中問題與解決方案…10九、實驗小結(jié)及心得…15十、工作日志…16十一、東華理工大學評分表…17一、題目:車輛管理系統(tǒng)設(shè)計二、課程設(shè)計任務(wù):車輛管理系統(tǒng)主要負責各種車輛的常規(guī)信息管理工作.系統(tǒng)中的車輛主要有大客車、小轎車和卡車。每種車輛有車輛編號、車牌號、車輛制造公司、車輛購買時間、車輛型號(大客車、小轎車和卡車)、總公里數(shù)、耗油量/公里、基本維護費用、養(yǎng)路費、累計總費用等信息。大客車還有載客量(最大載客數(shù))信息,小轎車還有箱數(shù)(兩廂或三廂)信息,卡車還有載重量等信息。每臺車輛當月總費用=油價*耗油量/公里+基本維護費用?;揪S護費用:客車:2000元/月,小轎車:1000元/月,卡車:1500元/月.(1)添加車輛:主要完成車輛信息的添加,要求編號唯一。當添加了重復的編號時,則提示數(shù)據(jù)添加重復并取消添加;當車輛信息庫已滿,則提示不能再添加新的數(shù)據(jù)。(2)查詢車輛:可按照三種方式來查詢物品,分別為:按車輛制造公司查詢:輸入車輛制造公司,輸出所查詢的信息,若不存在該記錄,則提示“該車輛制造公司不存在!";按編號查詢:輸入編號,輸出所查詢的信息,若不存在該記錄,則提示“該編號不存在!";按類別查詢:輸入類別,輸出所查詢的信息,若不存在記錄,則提示“該類別沒有車輛!";(3)顯示車輛信息庫:輸出當前車輛信息庫中所有車輛信息,每條記錄占據(jù)一行。(4)編輯功能:可根據(jù)查詢結(jié)果對相應的記錄進行修改,修改時注意編號的唯一性。(5)刪除車輛:主要完成車輛信息的刪除。如果當前車輛信息庫為空,則提示“車輛信息庫為空!”,并返回操作;否則,輸入要刪除的編號,根據(jù)編號刪除該車輛的記錄,如果該編號不在車輛信息庫庫中,則提示“該編號不存在”。(6)統(tǒng)計信息:輸出當前車輛信息庫中總物品數(shù),以及按車輛類別,統(tǒng)計出當前車輛信息庫中各類別的物品數(shù)并顯示。(7)車輛信息存盤:將當前程序中的車輛信息存入文件中。(8)讀出車輛信息:從文件中將車輛信息讀入程序。。要求:1、用C++語言實現(xiàn)程序設(shè)計;2、利用類和對象數(shù)組實現(xiàn)信息的數(shù)據(jù)結(jié)構(gòu)設(shè)計;3、系統(tǒng)的各個功能模塊要求用函數(shù)的形式實現(xiàn);4、界面友好(良好的人機交互),程序加必要的注釋。三、數(shù)據(jù)結(jié)構(gòu)Carsintnum;//編號intpnum;//車牌號charmade[20];//制造公司doubletime;//購買時間(多少個月)inttype;//型號(1—大客車,2-小轎車,3—卡車)doublekm;//總公里數(shù)intcost;//基本維護費用intRoadFee;//養(yǎng)路費doubleOilKm;//耗油量/公里doubleAllCount;//累計總費用friendManager;//聲明為友元Managerintpeople[N];//最大載客量(大客車)intcoach[N];//箱數(shù)(小轎車)intweight[N];//載重量(卡車)inttop;//記錄當前車輛數(shù)量Manager(){top=0;}//車輛初始值為0voidadd();//添加車輛voidsearch();//查詢車輛voidshow();//顯示車輛信息庫voidedit();//編輯功能voiddelet();//刪除車輛voidsum();//統(tǒng)計信息voidwrite();//車輛信息存盤voidread();//讀出車輛信息voidjiemian();//總界面四、模塊劃分車輛信息添加車輛信息添加車輛信息查詢車輛信息顯示車輛信息編輯車輛信息刪除退出系統(tǒng)車輛管理系統(tǒng)五、程序的總體設(shè)計·類的設(shè)計:classCars{public: intnum;//編號intpnum;//車牌號charmade[20];//制造公司doubletime;//購買時間(多少個月)inttype;//型號(1—大客車,2—小轎車,3—卡車)doublekm;//總公里數(shù)intcost;//基本維護費用 intRoadFee;//養(yǎng)路費 doubleOilKm;//耗油量/公里 doubleAllCount;//累計總費用};classManager{private: Carscar[N]; intpeople[N];//最大載客量(大客車) intcoach[N];//箱數(shù)(小轎車) intweight[N];//載重量(卡車) inttop;//記錄當前車輛數(shù)量public: Manager(){top=0;}//車輛初始值為0 voidadd();//添加車輛 voidsearch();//查詢車輛 voidshow();//顯示車輛信息庫voidedit();//編輯功能voiddelet();//刪除車輛voidsum();//統(tǒng)計信息voidread();//讀出車輛信息voidwrite();//車輛信息存盤voidjiemian();//總界面};·函數(shù)設(shè)計:在管理類中定義了以下函數(shù),功能標注在其后 voidadd();//用于添加車輛信息,進行信息錄入; voidsearch();//用于查詢車輛信息; voidshow();//顯示車輛信息庫voidedit();//編輯功能voiddelet();//刪除車輛voidsum();//統(tǒng)計信息voidread();//讀出車輛信息voidwrite();//車輛信息存盤voidjiemian();//總界面六、流程圖·車輛信息添加·車輛信息查詢·車輛信息顯示·車輛信息編輯·車輛信息刪除七、主要源程序代碼由于程序代碼功能多,此處只節(jié)選了添加車輛這一功能的代碼,程序完整源代碼另附文件/////////////////////////////////////////查詢車輛///////////////////////////////////////////////////voidManager::search(){ intchoose,m,n,a=0; chari,t[20]; cout<〈"****************************”〈<endl; cout<<”*1。按車輛制造公司查詢*"〈<endl; cout<<"*2。按編號查詢*"〈〈endl; cout<<"*3。按類別查詢*"〈<endl; cout〈〈"****************************"<〈endl; cout<〈”請輸入你的選項:"; while(1) { cin>〉i; cout〈<endl; if(i==’1'||i==’2’||i=='3’) break; cout〈〈”輸入錯誤,重輸:"; } if(i=='1') {cout<<"請輸入需查詢車輛的制造公司:"; cin〉〉t;} elseif(i=='2’) {cout〈〈”請輸入需查詢的車輛編號:”; cin〉〉n;} elseif(i=='3’) {cout<〈”請輸入需查詢的車輛型號(1-大客車,2-小轎車,3—卡車):"; cin>〉m;} for(intj=0;j〈top;j++) if(strcmp(car[j]。made,t)==0||car[j]。num==n||car[j].type==m) {cout<<”編號車牌號制造商購買時間型號特性總公里養(yǎng)路費維護費油耗總費用"〈〈endl;break;} for(j=0;j〈top;j++) if(strcmp(car[j]。made,t)==0||car[j]。num==n||car[j].type==m) { cout<<setw(4)〈<car[j]。num〈〈setw(7)<<car[j].pnum〈〈setw(7)〈<car[j].made〈〈setw(7)<〈car[j].time; if(car[j].type==1) cout〈<setw(9)〈〈"大客車"<<setw(8)<〈"載客量:"〈<people[j]; elseif(car[j]。type==2) cout<<setw(9)<<”小轎車”<<setw(9)<〈”車廂數(shù):”<〈coach[j]; else cout〈<setw(8)<〈”卡車"<〈setw(9)<〈”載重量:”〈〈weight[j]; cout<〈setw(6)〈〈car[j].km〈〈setw(7)<<car[j].RoadFee<<setw(7)<〈car[j].cost<〈setw(7)〈<car[j]。OilKm〈〈setw(8)〈〈car[j].AllCount〈〈endl; a++; } if(a!=0) { cout<<"是否進行修改?(1—是,2-否):”; cin〉〉choose; if(choose==1) edit(); } else { if(i=='1’)cout〈<"車輛制造公司不存在!”〈〈endl; if(i=='2')cout〈<”車輛編號不存在!”<〈endl; elseif(i=='3')cout〈<”車輛型號不存在!"<<endl; } cout〈<”按任意鍵返回功能主界面”<<endl;charzz=getch();jiemian();}八、測試情況及調(diào)試中問題與解決方案以下幾點分別為我們在課程設(shè)計期間測試情況及調(diào)試中問題與解決方案顯示車輛出現(xiàn)問題問題:養(yǎng)路費數(shù)據(jù)有問題以及功能3中顯示車輛信息庫要求每條記錄占據(jù)一行,當前程序顯示沒有達到要求(圖1。1)解決方案:發(fā)現(xiàn)代碼分別在169201233282行由于復制出現(xiàn)問題,將top改為j后養(yǎng)路費數(shù)據(jù)正常(圖1。2),使用setw設(shè)置域?qū)拋砜刂骑@示將每條記錄占據(jù)一行,修正后的正確顯示(圖1。3)圖1.1圖1。2圖1.3文件無法自動創(chuàng)建問題問題:這是開始編的讀取文件功能,當D盤根目錄存在a。txt文件時,功能運行正常。但當D盤根目錄不存在a.txt文件時,會出現(xiàn)如下問題(即編譯沒問題,但運行時會停止工作,如圖2。1—圖2。2)圖2.1圖2.22)解決方案:這是修改后的讀取文件功能函數(shù)(圖2。3),函數(shù)增加了判斷“是否能順利讀取文件”功能。如果不能,則創(chuàng)建a。txt文件再進行讀取圖2.33。刪除車輛問題1)問題:這個問題是我們課程設(shè)計中遇到的最大的問題,困擾了我們很久,當車輛數(shù)量足夠時,能成功刪除車輛(圖3.1-3。3),當車輛刪除到最后1輛時,界面顯示剩余未發(fā)生改變,而存取的文檔中車輛信息已經(jīng)刪除(圖3。4—3。6)。圖3.1圖3。2圖3。3圖3。4圖3.5圖3.62)解決方案:將代碼中的刪除功能函數(shù)中算法進行改進,修正后即使車輛只有一輛也能刪除,不會再出現(xiàn)1)中問題(圖3.7-3.8)圖3.7圖3。8九、實驗小結(jié)在我們課程設(shè)計的任務(wù)書中,說明了課程設(shè)計的目的是根據(jù)軟件工程的方法與流程,在相對集中的實訓教學時間內(nèi),通過一個功能較完整的小型應用系統(tǒng)的設(shè)計與開發(fā),深入復習并進一步掌握面向?qū)ο蟮某绦蛟O(shè)計思想與方法。同時,培養(yǎng)我們采用面向?qū)ο蟮姆椒ǚ治鰡栴}與解決問題的能力及團體組織與協(xié)作能力。這次課程設(shè)計是我們小組三個人歷經(jīng)一個多星期左右共同完成的,通過這一個多星期的學習、合作、交流,我們合作完成了車輛管理系統(tǒng)的程序設(shè)計。我們小組的三個人都是第一次做課程設(shè)計,面對我們所選的課程設(shè)計任務(wù),一開始有點摸不著頭腦,但在不斷的分工,查找資料,合作交流后,我們逐步實現(xiàn)車輛管理系統(tǒng)中的功能要求。因為我們的小組長在課程設(shè)計之前就開始查閱資料,完成了程序的總體設(shè)計,在組長的帶領(lǐng)下我們小組完成了這次任務(wù).在這次課程設(shè)計中,我們也遇到了很多問題,當我們完成了程序的大體設(shè)計以及函數(shù)功能實現(xiàn)后,發(fā)現(xiàn)在顯示功能這部分出現(xiàn)問題,在我們查閱書本后,使用了我們不熟悉的一個操作符setw(intn)來設(shè)置域?qū)挘鉀Q了顯示問題,但由于界面受限制,為保證每條記錄占據(jù)一行,導致輸入的數(shù)據(jù)受到一些限制。在這之后,我們解決了一個困擾我們很久的數(shù)據(jù)問題,顯示界面中養(yǎng)路費數(shù)據(jù)始終為0,雖然我們小組有分工,每個人的能力也不同,但是在我們?nèi)齻€人集體討論這個問題后,我們找到了問題的根源并解決了這個問題,也正是這個問題,讓我們體會到了合作的意義以及團隊的力量。除此之外,在課程設(shè)計期間,遇到問題,也要學會向同學、老師請教,因為我們很可能一時思路受阻或者不熟悉某些操作,通過請教他人,能夠迅速解決問題并學習到他人的長處。在課程設(shè)計中途,我們發(fā)現(xiàn)程序中的文件讀取及功能函數(shù)中刪除信息出現(xiàn)問題,影響了我們的進度,后來嘗試了不同的方法,進行測試,并請教他人,對程序進行修改,完成了程序,在這次的問題中,我們遇到問題受到阻礙,心情也有些低落,本來以為已經(jīng)完成了大部分,突然發(fā)現(xiàn)問題,感到一些壓力,不過我們小組的人都沒有放棄,一直堅持,不斷嘗試,最終一起努力完成了課程設(shè)計。當我們共同完成了這個課程設(shè)計,發(fā)現(xiàn)在這個過程中我們學習到了很多,得到了成長,學會與人溝通,與人合作,學會虛心請教他人,將所學知識與實踐相結(jié)合,我們的分析解決實際問題的能力得到了鍛煉,并且更真切的感受到無論做什么都需要細心和耐心,小細節(jié)也會出大錯,細心和耐心,才能發(fā)現(xiàn)問題并解決問題從而避免問題,堅持完成。這次課程設(shè)計我們參考了部分程序進行的,對我們來說是一個挑戰(zhàn)和鍛煉。我們在完成設(shè)計要求的基礎(chǔ)上在程序中加入了自己的想法和其他程序內(nèi)容,也就是對程序改進了一番,并有一些創(chuàng)新。雖然感覺我們的創(chuàng)新還不夠典型,但經(jīng)過這番修改,我們對修改的程序感到滿意.由于時間的緊迫和對知識的了解不夠廣泛,造成了系統(tǒng)中可能還存在一些不足,以后我們會繼續(xù)努力,大膽創(chuàng)新,爭取能編寫出透射著自己思想的程序。這次課程設(shè)計讓我們充分認識到了自己的不足,認識到了動手能力的重要性。我們會在以后的學習中更加努力鍛煉自己,提高自己,讓自己寫出更好更完善的程序,為以后的編程打好基礎(chǔ)!十、工作日志周一:我們通過共同討論,有了各自的大致主要分工任務(wù)(A主要編寫功能主函數(shù)的實現(xiàn);黃晨茹主要負責代碼的完善優(yōu)化和實驗報告;C主要負責調(diào)試代碼和PPT)A在今天繪制了大致算法流程圖,有了基本的設(shè)計雛形。編寫了一些函數(shù)功能代碼。黃晨茹在今天對一些功能函數(shù)有了優(yōu)化的思路方向,并合作編寫了一些函數(shù)功能實現(xiàn)的代碼.C在今天對添加車輛函數(shù)進行了調(diào)試,并經(jīng)過不斷地測試調(diào)試將添加車輛函數(shù)錯誤基本解決。小組的每個成員對此次任務(wù)充滿信心,今天都異常的激動。周二:我們今天共同編寫其他所有函數(shù)的功能代碼,并對各項功能進行了測試。通過請教老師和同學們,我們完成的進度越來越快.A今天在編寫文件存取功能上遇到了一些麻煩。通過查閱相關(guān)書籍,將文件的相關(guān)功能函數(shù)問題解決了.黃晨茹今天設(shè)計了輸出車輛信息庫函數(shù),開始顯示的每組數(shù)據(jù)上下都沒對齊.后來運用了域?qū)捄瘮?shù)出色的解決了每組數(shù)據(jù)的對齊格式,使顯示更加漂亮.C今天對車輛信息編輯功能進行了調(diào)試,并著手準備PPT的制作.對開始編寫的代碼進行了再次測試,發(fā)現(xiàn)添加功能函數(shù)的一個漏洞。(即當添加一個卡車、大客車、小轎車之外的車時,還會添加車輛)周三:我們在今天將課程設(shè)計的整體設(shè)計功能函數(shù)全部編完,并能夠編譯運行,只是還殘留有一些小細節(jié)沒有解決。A今天將剩余的刪除功能、編輯功能等編寫完畢。并對所有代碼進行了大致的注釋,使他人讀代碼時能快速明白設(shè)計的思路。黃晨茹今天將各功能函數(shù)的運行結(jié)果和錯誤代碼進行了截圖,還將錯誤代碼的原因進行了解釋,以方便完成接下來的實驗報告.C對所有函數(shù)功能進行了調(diào)試。將有錯的功能函數(shù)的代碼進行修改。最后在刪除車輛功能函數(shù)遇到一個小問題。(即刪不掉系統(tǒng)里的最后一輛車,但文件的刪除了)周四:我們小組通過在一起討論分析,最后終于將那個刪除函數(shù)功能代碼徹底修復。程序可以完全無誤地實現(xiàn)所有功能并運行。我們離勝利已經(jīng)不遠了。A今天將程序的源代碼進行了優(yōu)化,將重復的代碼進行了更改替換,使代碼相對較簡潔一些.并輔助C一起做PPT.黃晨茹今天在一起討論分析代碼錯誤中,突然一語道破那個困擾我們許久的問題,讓我們激動萬分,因為這就意味著程序設(shè)計代碼徹底完成。她也開始編寫實驗報告。C今天在討論出錯誤后,趕緊進入緊張的PPT制作中,為了讓周五的PPT演示更成功,他不斷地進行優(yōu)化PPT界面.最終完成了,時間已經(jīng)到第二天凌晨了。周五:我們一同上臺進行了PPT演示和課程設(shè)計答辯,在答辯完成,黃晨茹開始撰寫課程設(shè)計報告,A和C輔助黃晨茹完成。最終報告完成,大家的身上的擔子徹底沒了。雖然課程設(shè)計完成,大家都意識到團隊合作的優(yōu)勢,確定了今后的目標。#include"stdio.h"#include"conio.h”#include"stdlib。h"#include”string。h”#defineN1000 //N為可輸入的學生總?cè)藬?shù),可根據(jù)需要更改#defineM2 //M為宏定義的(在創(chuàng)建密碼函數(shù)中)可建立的登陸用戶個數(shù),可更改 structstudent //定義學生信息結(jié)構(gòu)體數(shù)組{ charnum[9];//學號 charname[20];//姓名 chardepar[15];//院系 charzhuanye[15];//專業(yè) charclasses[5]; //班級 charage[3];//年齡 charsex[4];//性別 charnation[5]; //民族 charbirth[9];//出生日期 charadd[10];//籍貫};structcode //定義密碼結(jié)構(gòu)體數(shù)組{ charname[20]; charcode[7];}co[M],s0;//確認是否新創(chuàng)建密碼文件模塊intcode() { FILE*fp; if((fp=fopen(”學生學籍管理系統(tǒng)__code。txt”,"rt"))==NULL) { printf(”密碼文件不存在,請輸入新的用戶名及密碼:\n"); //若不存在此密碼文件,則提示用戶創(chuàng)建密碼 printf(”請輸入任意鍵繼續(xù)!”); getch(); system(”cls"); return1; //無密碼文件返回1 } else return0; //已有密碼文件返回0}//新創(chuàng)建初始密碼voidcode_input() { FILE*fp; inti; if((fp=fopen(”學生學籍管理系統(tǒng)__code.txt”,"wt"))==NULL); //當建立密碼文件成功時,進入for循環(huán) for(i=0;i<M;i++) //M為宏定義的可建立的登陸用戶個數(shù),可更改 { printf("請錄入第%d個用戶名:",i+1); //創(chuàng)建不同的用戶名及密碼 scanf("%s”,co[i]。name); printf(”請錄入第%d個密碼(最多6位):",i+1); scanf(”%s”,co[i].code); printf("\n"); fwrite(&co[i],sizeof(structcode),1,fp); //將密碼保存進文件中 } fclose(fp); getch(); system(”cls");} //用戶登陸驗證模塊intenter(charname1[20],charcode1[6]) { FILE*fp; intflog=0; inti; fp=fopen(”學生學籍管理系統(tǒng)__code。txt",”rt");//打開存放密碼的文件 for(i=0;i〈M;i++) { fread(&co[i],sizeof(structcode),1,fp); //讀密碼文件 if((strcmp(name1,co[i].name)==0)) //如果輸入的用戶名與已存在用戶名相同,再比較密碼是否相同,否則進行下一個用戶名的比較 { if((strcmp(code1,co[i].code)==0))//比較此用戶名下的密碼是否一致 return1; //驗證成功后回到主函數(shù) } } if(i〉=M) //當比較完成后,都沒有符合條件的用戶名與密碼,則直接跳出程序 printf("******您無權(quán)進入此管理系統(tǒng)??!!*****"); fclose(fp); getch(); exit(1);}//從文件讀入數(shù)據(jù)intread_file(structstudentstu[]) { FILE*sp; inti=0; system(”cls"); if((sp=fopen("學生學籍管理系統(tǒng)__學生信息。txt”,”rt"))==NULL)//讀文件,若文件不存在,則需要創(chuàng)建一個新的文件(文件創(chuàng)建在save_file函數(shù)中完成) { printf(”\n學生學籍管理系統(tǒng)__學生信息文件不存在,請創(chuàng)建!\n”); getch(); system(”cls"); return0; } while((fread(&stu[i],sizeof(structstudent),1,sp))==1)//判斷文件是否處在結(jié)束位置 { if(stu[i]。num==0) //若文件內(nèi)容為空,則跳出循環(huán) break; else //若文件內(nèi)容不為空,i自加1。 i++; //i為文件內(nèi)結(jié)構(gòu)體數(shù)組的數(shù)量 } fclose(sp); returni; //返回i值,代表文件中學生的人數(shù)}//保存學生信息(保存在文件中)voidsave_file(structstudentstu[],intsum){ FILE*sp; inti; if((sp=fopen("學生學籍管理系統(tǒng)__學生信息。txt","wb"))==NULL)//若不存在此TXT文檔,則創(chuàng)建; { printf("讀文件錯誤!\n"); //創(chuàng)建不成功,返回menu函數(shù); return; } for(i=0;i<sum;i++) if(fwrite(&stu[i],sizeof(structstudent),1,sp)!=1) //保存文件,sum為現(xiàn)有總學生人數(shù),若未保存成功,提示"寫文件錯誤!"; printf(”寫文件錯誤!\n"); fclose(sp); return;}//創(chuàng)建并錄入信息intfound(structstudentstu[]) { inti=0,x; system("cls"); printf(”請輸入要錄入的學生的個數(shù):\n"); scanf(”%d",&x); if(x==0) return0; do //輸入信息 { printf("\n請錄入第%d個學生的信息:\n",i+1); printf("請錄入學號:”); scanf(”%s",stu[i]。num); printf(”\n請錄入姓名:”); scanf("%s",stu[i].name); printf(”\n請錄入院系:"); scanf(”%s",stu[i]。depar); printf(”\n請錄入專業(yè):"); scanf("%s",stu[i].zhuanye); printf("\n請錄入班級:"); scanf(”%s”,stu[i]。classes); printf(”\n請錄入性別:”); scanf("%s",stu[i].sex); printf("\n請錄入年齡:”); scanf("%s”,stu[i].age); printf("\n請錄入出生日期(yyyymmdd):"); scanf("%s”,stu[i]。birth); printf("\n請錄入民族:"); scanf(”%s",stu[i]。nation); printf(”\n請錄入籍貫:”); scanf("%s",stu[i]。add); i++; system(”cls”); }while(i〈x); //當i>=x(用戶要求創(chuàng)建學生的人數(shù))時,跳出輸入信息的for循環(huán); save_file(stu,x); //保存學生信息致文件 printf(”錄入完畢,請按任意鍵返回"); getch(); returni; //返回創(chuàng)建學生的人數(shù)}//修改學生信息voidmodify(structstudentstu[],intsum) { inti,item,a=1; //i控制數(shù)組下標,item控制子菜單的選擇 chars1[8]; FILE*sp; system(”cls”); read_file(stu,sum); //讀函數(shù) do { printf(”\n\n\n請輸入你要修改的學號:\n"); scanf(”%s",s1); //要修改的學生學號 for(i=0;i〈sum;i++) //查找此學生 { if(strcmp(stu[i]。num,s1)==0) //若找到該生,輸出該生的信息 { printf("該學生學號:%s\n”,stu[i].num); printf(”該學生姓名:%s\n",stu[i].name); printf(”該學生院系:%s\n”,stu[i]。depar); printf("該學生專業(yè):%s\n",stu[i].zhuanye); printf("該學生班級:%s\n”,stu[i].classes); printf("該學生性別:%s\n",stu[i].sex); printf("該學生年齡:%s\n",stu[i]。age); printf(”該學生出生日期:%s\n”,stu[i]。birth); printf(”該學生民族:%s\n",stu[i]。nation); printf("該學生籍貫:%s\n",stu[i].add); a=0; //找到該生,a=0; break; //出for循環(huán) } } if(a==1) //若沒有找到該生,a=1,輸出提示語句 printf(”\n\n該學號不存在!請重新輸入學號:\n"); }while(a); //當a=0,即沒有找到該生,則繼續(xù)循環(huán)重新輸入學生學號 printf(”\t****************\n"); printf(”\t你選擇你要修改的選項:\n"); printf("\t1。*修改姓名\n"); printf("\t2.*修改年齡\n"); printf("\t3.*修改性別\n"); printf(”\t4.*修改出生日期\n”); printf("\t5.*修改籍貫\n");printf("\t6.*修改院系名稱\n”); printf("\t7.*修改專業(yè)名稱\n"); printf("\t8.*修改班級\n”); printf(”\t9。*修改民族\n”); printf(”\t0。*退出菜單\n"); printf(”\t****************\n"); while(1) { printf(”\n\t請選擇你要進行的操作:"); scanf(”%d”,&item); ///item控制子菜單的選擇switch(item){case1: //修改姓名 printf(”\t請輸入新的姓名:”); scanf(”%s",stu[i].name); printf("\n\n\n修改成功!\n"); save_file(stu,sum); break; case2: //修改年齡 printf(”\t請輸入新的年齡:”); scanf("%s”,stu[i]。age);printf(”\n\n\n修改成功!\n"); save_file(stu,sum); break;case3: //修改性別 printf("\t請輸入新的性別:”); scanf("%s",stu[i]。sex); printf(”\n\n\n修改成功!\n"); save_file(stu,sum); break; case4: //修改出生日期 printf("\t請輸入新的出生年月(yyyy.mm):"); scanf("%s”,stu[i].birth);printf(”\n\n\n修改成功!\n”); save_file(stu,sum); break; case5: //修改籍貫 printf("\t請輸入新的籍貫:”); scanf("%s",stu[i].add); printf("\n\n\n修改成功!\n"); save_file(stu,sum); break; case6: //修改院系 printf("\t請輸入新的院系:"); scanf("%s”,stu[i].depar);printf(”\n\n\n修改成功!\n"); save_file(stu,sum); break; case7: //修改專業(yè) printf("\t請輸入新的專業(yè)名稱:"); scanf(”%s”,stu[i]。zhuanye);printf(”\n\n\n修改成功!\n"); save_file(stu,sum); break; case8: //修改班級 printf("\t請輸入新的班級:”); scanf("%s",stu[i].classes);printf(”\n\n\n修改成功!\n”); save_file(stu,sum); break; case9: //修改民族 printf(”\t請輸入新的民族名稱:"); scanf(”%s",stu[i].nation);printf(”\n\n\n修改成功!\n"); save_file(stu,sum); break; case0:return; //不修改,退出 default:printf("\t請在0到9之間選擇:”); //若輸入的值不在0~9,則提示 } }}//查詢學生信息voidseek(structstudentstu[],intsum) {inti,item,flag; //i控制數(shù)組下標,item控制子菜單的選擇,flag為判斷條件chars1[11];system("cls");while(1){ system("cls");printf(”\n\n\t\t--——-—---————----—\n”);printf("\t\t1。按學號查詢\n");printf(”\t\t2.按姓名查詢\n");printf("\t\t3.退出本菜單\n”);printf("\t\t---———---——-—-----\n”);printf("\t\t請選擇子菜單編號:”);scanf(”%d",&item); //選擇子菜單flag=0;switch(item){case1: //按學號進行查找printf("\t\t請輸入要查詢的學生的學號:”);scanf(”%s",s1);for(i=0;i〈sum;i++)if(strcmp(stu[i]。num,s1)==0) //判斷學號是否存在{ //輸出 flag=1; printf(”該學生學號:%s\n",stu[i]。num); printf(”該學生姓名:%s\n”,stu[i].name); printf(”該學生院系:%s\n",stu[i]。depar); printf(”該學生專業(yè):%s\n”,stu[i]。zhuanye); printf(”該學生班級:%s\n”,stu[i].classes); printf("該學生性別:%s\n",stu[i]。sex); printf(”該學生年齡:%s\n",stu[i]。age); printf("該學生出生日期:%s\n",stu[i].birth); printf(”該學生民族:%s\n",stu[i].nation); printf(”該學生籍貫:%s\n",stu[i]。add); getch();}if(flag==0) //當上一個if條件不成立,flag=0,學生學號不存在,輸出提示;printf("\n\n\n\t\t該學號不存在!\n”); getch();break;case2: //按姓名進行查找printf(”\n\n\t\t請輸入要查詢的學生的姓名:”);scanf(”%s”,s1);for(i=0;i<sum;i++)if(strcmp(stu[i]。name,s1)==0) //判斷姓名是否存在{ //輸出flag=1; printf(”該學生學號:%s\n",stu[i]。num); printf("該學生姓名:%s\n”,stu[i].name); printf("該學生院系:%s\n”,stu[i]。depar); printf(”該學生專業(yè):%s\n",stu[i]。zhuanye); printf(”該學生班級:%s\n",stu[i].classes); printf("該學生性別:%s\n”,stu[i].sex); printf("該學生年齡:%s\n",stu[i].age); printf(”該學生出生日期:%s\n”,stu[i].birth); printf("該學生民族:%s\n”,stu[i].nation); printf("該學生籍貫:%s\n",stu[i]。add); getch();}if(flag==0) //當上一個if條件不成立,flag=0,學生姓名不存在,輸出提示;printf(”\n\n\n\t\t該姓名不存在!\n"); getch();break;case3: system(”cls");return;default:printf(”\n\n\n\t\t請在1-3之間選擇\n"); //若輸入的值不在1~3,則提示 getch(); }}}//刪除某學生信息intdel(structstudentstu[],intsum) {inti,j,flag=0;chars1[9];system(”cls");printf("\n\n\t\t請輸入要刪除學生的學號:");scanf(”%s",s1);for(i=0;i〈sum;i++)if(strcmp(stu[i]。num,s1)==0) //判斷學號是否存在 {flag=1; //該學號存在,用后一個數(shù)組覆蓋此數(shù)組,循環(huán),即可刪除for(j=i;j〈sum—1;j++) stu[j]=stu[j+1];}if(flag==0) //該學號不存在printf("\n\n\t\t該學號不存在!\n”); getch();if(flag==1) //刪除成功,輸出提示{printf("\n\n\n\t\t刪除成功\n”);getch(); sum——; //刪除成功,sum自-1;} save_file(stu,sum); //保存 returnsum; //返回刪除后存在的學生人數(shù)}//顯示打印已有學生信息voidshow(structstudentstu[],intsum) {inti;system("cls”);printf("\n\n\t\t所有學生的信息為:\n");for(i=0;i<sum;i++) //for循環(huán)打印信息{ printf(”學號:%s\t",stu[i].num); printf(”姓名:%s\t",stu[i]。name); printf(”院系:%s\t”,stu[i]。depar); printf(”專業(yè):%s\t",stu[i].zhuanye); printf("班級:%s\t”,stu[i]。classes); printf("性別:%s\t”,stu[i].sex); printf(”年齡:%s\t",stu[i]。age); printf("出生日期:%s\t”,stu[i]。birth); printf(”民族:%s\t",stu[i].nation); printf(”籍貫:%s\n\n”,stu[i].add); } printf("按任意鍵返回”);getch(); system("cls”);}//添加學生信息intinsert(structstudentstu[],intsum) { inti,j,flag,m; FILE*sp; system("cls”); printf("\t請輸入要添加的學生的個數(shù):”); scanf(”%d”,&m); read_file(stu); //在添加前讀文件 do{ flag=1; i=sum; //此時i表示數(shù)組下標,添加學生,保存到當前已有數(shù)組的下一個,sum為總數(shù),stu[i]表示第sum+1個人 while(flag) { flag=0; printf("\n\n請輸入第%d個學生的學號:",i+1); scanf("%s",stu[i]。num);for(j=0;j〈i;j++) //判斷此學號是否存在 if(strcmp(stu[i].num,stu[j].num)==0) { printf("\n\n\n該學號已有,請重新輸入!\n”); flag=1; break; /*如果該學號已有則立刻對出該層for循環(huán)*/ } } printf("\n請輸入第%d個學生的姓名:”,i+1);scanf(”%s",stu[i]。name); printf("\n請輸入第%d個學生的院系:”,i+1);scanf(”%s",stu[i].depar);printf("\n請輸入第%d個學生的專業(yè):”,i+1);scanf("%s”,stu[i]。zhuanye);printf("\n請輸入第%d個學生的班級:”,i+1); scanf("%s",stu[i]。classes); printf("\n請輸入第%d個學生的性別:”,i+1); scanf(”%s”,stu[i]。sex); printf("\n請輸入第%d個學生的年齡:",i+1);scanf(”%s",stu[i].age);printf("\n請輸入第%d個學生的出生日期:”,i+1);scanf("%s",stu[i]。birth);printf("\n請輸入第%d個學生的民族:”,i+1);scanf(”%s",stu[i]。nation);printf(”\n請輸入第%d個學生的籍貫:”,i+1);scanf(”%s",stu[i]。add);if(flag==0){i=i;i++;}}while(i〈sum+m); //當下標i小于sum+m時,循環(huán)繼續(xù),stu[sum+m]指向添加全部學生后所用數(shù)組的下一個單元sum+=m; //添加完畢后,學生總?cè)藬?shù)變?yōu)閟um+m; printf(”\n\n\n\n\n\n\n\n\t\t\t\t錄入完畢!"); save_file(stu,sum); //保存getch(); system(”cls"); returnsum; //返回添加完成后現(xiàn)有的學生人數(shù)}//對學生信息排序voidrank(structstudentstu[],intsum) {inti,j; FILE*sp; structstudents1;system(”cls”);for(i=0;i<sum—1;i++) //對學生信息按照學號用選擇排序法進行排序 for(j=i+1;j<sum;j++)if(strcmp(stu[i]。num,stu[j]。num)>0) //小者換到stu[i] { s1=stu[i]; stu[i]=stu[j]; stu[j]=s1; } printf("\n\n\t\t所有學生的信息為:\n");for(i=0;i<sum;i++) //打印排好后的學生信息{ printf(”學號:%s\t”,stu[i]。num); printf(”姓名:%s\t",stu[i]。name); printf("院系:%s\t",stu[i]。depar); printf("專業(yè):%s\t",stu[i]。zhuanye); printf(”班級:%s\t”,stu[i].classes); printf("性別:%s\t",stu[i]。sex); printf(”年齡:%s\t”,stu[i].age); printf(”出生日期:%s\t",stu[i].birth); printf("民族:%s\t",stu[i]。nation); printf(”籍貫:%s\n\n",stu[i].add); } printf("按任意鍵返回”);getch(); system(”cls”);}//對班級的學生人數(shù)進行統(tǒng)計voidcount(structstudentstu[],intsum) { inti,count=0; chars1[5],s2[5],s3[5]; system("cls”);printf("\t\t請輸入你要統(tǒng)計學生人數(shù)的學院:”); scanf(”%s",s1); printf("\t\t請輸入你要統(tǒng)計學生人數(shù)的專業(yè):"); scanf(”%s”,s2); printf("\t\t請輸入你要統(tǒng)計學生人數(shù)的班級:"); scanf(”%s",s3); for(i=0;i〈sum;i++) if(strcmp(s1,stu[i].depar)==0&&strcmp(s2,stu[i].zhuanye)==0&&strcmp(s3,stu[i].classes)==0) //判斷條件 count++; //count為符合條件的學生人數(shù) printf(”%s學院%s專業(yè)%s班級的學生人數(shù)為:%d人”,s1,s2,s3,count); getch();}//菜單函數(shù)voidmenu(){ intchoice,sum; structstudentstu[N]; sum=read_file(stu); //sum為現(xiàn)已存入文件中學生的人數(shù) do { system(”cls”); printf(”\n\n\n"); printf(”\t\t**********歡迎進入**********\n”); printf("\t\t********學生學籍管理系統(tǒng)********\n\n\n”); printf(”\t\t\t1.創(chuàng)建學生信息\n"); printf("\t\t\t2。修改學生信息\n”); printf(”\t\t\t3。查詢學生信息\n”); printf(”\t\t\t4.刪除學生信息\n"); printf(”\t\t\t5.添加學生信息\n"); printf("\t\t\t6.保存學生信息\n”); printf("\t\t\t7。顯示已錄入學生信息\n”); printf(”\t\t\t8.對學生信息排序\n"); printf(”\t\t\t9。統(tǒng)計學生信息\n"); printf(”\t\t\t0.退出程序\n”); printf("\t\t\t請選擇您要執(zhí)行的操作(0~9):"); scanf("%d",&choice); switch(choice) { case1:sum=found(stu); break; //sum=創(chuàng)建后所存儲的學生人數(shù) case2:modify(stu,sum); break; //修改 case3:seek(stu,sum); break; //查詢 case4:sum=del(stu,sum); break; //sum=刪除學生后所存儲的學生人數(shù) case5:sum=insert(stu,sum); break; //sum=添加學生后所存儲的學生人數(shù) case6:save_file(stu,sum); break; //保存文件 case7:show(stu,sum); break; //顯示 case8:rank(stu,sum); break; //排序 case9:count(stu,sum); break; //統(tǒng)計某班級學生人數(shù) case0: break; } }while(choice!=0);}voidmain(){ intflag=0; flag=code(); //確認是否新創(chuàng)建密碼文件。若沒有存放密碼的文件,則flag=1,若有,flag=0; if(flag) //判斷if條件是否成立 code_input(); //當flag=1,即沒有存放密碼的文件時,進入code_input()函數(shù),創(chuàng)建用戶名及密碼;當flag=0,則不用新建密碼; printf(”*******請輸入你的用戶名及密碼*******:\n"); //登陸該管理系統(tǒng)前需身份驗證 scanf(”%s%s”,,s0。code); //輸入用戶的用戶名及密碼 enter(,s0。code); //登陸管理系統(tǒng)前,進入enter()函數(shù)驗證模塊 system(”cls”); menu();}課程報告課程名稱:程序設(shè)計實踐專業(yè)班級:計科1401學生姓名:牛草原學號:202116010101任課教師:張玉宏學期:2021-2021學年第二學期課程報告任務(wù)書題目圖書信息管理系統(tǒng)主要內(nèi)容開發(fā)一個圖書信息管理系統(tǒng),圖書信息包括:圖書編號、書名、作者、出版社、類別、出版時間、價格等基本信息(也可以根據(jù)自己情況進行擴充,比如是否借出、庫存量等).使之能提供以下基本功能:(1)圖書信息錄入功能(圖書信息用文件保存)--輸入(2)圖書信息瀏覽功能--輸出(3)查詢功能(至少一種查詢方式)、排序功能(至少一種排序方式):①按書名查詢②按作者名查詢=3\*GB3③按照價錢排序=4\*GB3④按出版時間排序等等(4)圖書信息的刪除與修改擴展功能:可以按照自己的程度進行擴展。比如(1)簡單的權(quán)限處理(2)報表打印功能(3)甚至根據(jù)自己情況,可以加上學生信息和借閱信息的管理,并擴充為圖書借閱系統(tǒng)。(4)模糊查詢(5)綜合查詢(6)統(tǒng)計功能比如統(tǒng)計處某一類別的圖書信息或篩選出小于指定數(shù)量庫存的圖書信息等等,總之,可以根據(jù)自己需求進行分析功能。任務(wù)要求一、提交材料應包括:(1)系統(tǒng)源代碼(2)課程報告二、整個設(shè)計過程具體要求(1)需求分析要求學生對案例系統(tǒng)進行分析,設(shè)計出需要完成的功能,完善各個模塊的調(diào)用關(guān)系;(2)設(shè)計過程要求學生進一步明確各模塊調(diào)用關(guān)系,進一步完善模塊函數(shù)細節(jié)(函數(shù)名、參數(shù)、返回值等)(3)實現(xiàn)過程要求學生養(yǎng)成良好的編碼習慣、完成各個模塊并進行測試,最終完成系統(tǒng)整體測試;(4)總結(jié)階段按照要求完成系統(tǒng)設(shè)計和實現(xiàn)報告,并進行總結(jié)、答辯。成績評定報告撰寫情況(30分)系統(tǒng)完成情況(30分)答辯情況(40分)總分內(nèi)容20分規(guī)范程度5分程序測試5分基本功能20分擴展功能10分自述情況10分答辯情況30分成績評定教師:目錄引言.。。。。.。。。。.。.。。。。。。.。。..。..。。..。..。。.。。...。。.。。.。..。.3緒論.。。..。.。。.。。.。。。。。。.。.....。...。.。..。.。。....。..。..。。..3需求分析。..。。.。.。。。。.。....。。.。。.。。.。..。..。。。。..。。.。。.。.3概要設(shè)計..。..。.。。。。。。。。.。。。.。。.。。。..。.。。。。。。。..。。.。。..。52.1數(shù)據(jù)結(jié)構(gòu)。.。..。。...。。..。。.。。..。。。。..。。。..。。。。..。..。..。。..。。.。.。.......。52.2數(shù)據(jù)需求.。.。...。...。.。.。。。..。。。。..。。....。.。。.。..。。。.....。..。。.。。..。...52。3模塊劃分。。.。。。.。。。..。。。..。..。.。.。。。。。。。..。..。.。。.。.。。。。.。...。.。。。。。。..52.4程序總體框架.。.。。。....。。。。。。..。.。。。...。...。.。。.。。。.。。.。..。.。。..。。。...。6三.詳細設(shè)計...。..。。。。.。。。.。...。..。。..。...。。。...。..。。。。。。。。。.。。。。。。。。。.。。。.。.。63.1登陸界面。..。...。。.。.。..。.。..。。。。。...。。。.。.。.。.。.。。。.。。.。。..。...。.。.。..73.2功能服務(wù).。。...。。.。.。。.。。...。。。。。.。。。...。..。.。。。.。。。..。.。。....。。。。.。.。21四.調(diào)試分析。...。。.。.。.。。。.。。。...。。.。。。。...。。。。..。.。...。。。48五.程序不足與改進.。.。。。。。。。...。........。。.。....。.。。。。。...49六。課程心得總結(jié).。..。.....。。。。..。。。。.。.。。.。。。。.。。。.。。.。。。。49引言經(jīng)過對程序設(shè)計題目的分析可知,整個程序的設(shè)計實現(xiàn)大致可以分為五個模塊,其中每個模塊對應一個函數(shù),他們分別是:圖書的添加函數(shù)voidadd_book(void);刪除圖書的函數(shù)voiddelete_book(void);查詢圖書的函數(shù)voidinquire_book(void);對圖書進行修改的函數(shù)voidrevise_book(void);以及對圖書進行排序的函數(shù)voidsort_book(void);在這幾個函數(shù)中,其功能的實現(xiàn)嚴格按照題目的要求:1圖書信息錄入函數(shù):主要功能是從鍵盤上輸入圖書信息并將其寫入文件中,作為圖書館的書庫。以便對以下的函數(shù)進行運行,此函數(shù)應是整個程序的基礎(chǔ)。2查詢圖書函數(shù):主要功能是按照一定的圖書特征(圖書名,圖書作者)先將圖書查詢到。3刪除圖書函數(shù):主要功能是將已存圖書按照一定的圖書特征(圖書編號,圖書名,圖書作者,圖書出版日期等)先將圖書查詢到,然后刪除.4圖書排序函數(shù):主要功能是將已存圖書按照一定的圖書特征將圖書進行詳細的排序,具體可以分為按圖書名排序,按圖編號排序;按圖書出版日期排序,按圖書價格排序。5圖書的修改函數(shù):功能是將已錄入的圖書的編號,作者,出版日期,價錢等進行修改。6退出函數(shù):該函數(shù)主要實現(xiàn)退出運行界面的功能。緒論整個程序的設(shè)計實現(xiàn)大致可以分為五個模塊,其中每個模塊對應一個函數(shù),他們分別是:圖書的添加函數(shù)voidadd_book(void);刪除圖書的函數(shù)voiddelete_book(void);查詢圖書的函數(shù)voidinquire_book(void);對圖書進行修改的函數(shù)voidrevise_book(void);以及對圖書進行排序的函數(shù)voidsort_book(void);1需求分析開發(fā)一個圖書信息管理系統(tǒng),圖書信息包括:圖書編號、書名、作者、出版社、類別、出版時間、價格等基本信息。使之能提供以下基本功能:(1)圖書信息錄入功能(圖書信息用文件保存)--輸入(2)圖書信息瀏覽功能--輸出(3)查詢功能、排序功能:①按書名查詢②按作者名查詢=3\*GB3③按照價錢排序=4\*GB3④按出版時間排序圖書信息的刪除與修改學生登錄和管理員登陸退出系統(tǒng)程序擴展:管理員功能:①學生信息管理1:學生卡添加2:學生卡信息查詢3:學生卡密碼查詢4:學生卡刪除②圖書信息管理(8)學生功能:①圖書信息查詢通過此次課程設(shè)計,可以使我們增強自己的動手能力,并可以使自己編寫的程序與程序之間的銜接更為自然,同時可以提高我們使用計算機解決實際問題的能力,了解并掌握C語言開發(fā)程序的全過程。此外還可以較為綜合地提高自己C語言編程能力及調(diào)試能力和自己對C語言語法的進一步認知,為自己的后續(xù)課程打好基礎(chǔ)。二概要設(shè)計2。1數(shù)據(jù)結(jié)構(gòu)該程序設(shè)計采用結(jié)構(gòu)體和文件操作,用于實現(xiàn)對圖書信息的存儲,修改,查詢及排序等功能.2.2數(shù)據(jù)需求該程序需要系統(tǒng)輸入及輸出圖書的編號,圖書名,圖書作者,圖書出版日期以及圖書價格等數(shù)據(jù)。2。3模塊劃分該程序總體上分為6個模塊,分別為:學生登錄系統(tǒng)模塊,管理員登陸系統(tǒng)模塊,圖書信息錄入模塊,圖書信息修改模塊,圖書信息刪除模塊,圖書信息查詢模塊及圖書信息排序模塊,學生卡添加模塊,學生卡刪除模塊,學生卡信息查詢模塊,學生卡密碼查詢模塊。其中圖書信息查詢模塊分為按書名查詢,作者名字查詢。圖書排序系統(tǒng)分為按圖書編號排序,按圖書價格排序,按圖書出版時間排序。各個模塊之間相互獨立但彼此之間有相互依附,通過彼此之間有規(guī)律的相互調(diào)用及參數(shù)的傳遞從而實現(xiàn)整個程序較為綜合的功能。簡言之:(1)voidmain_menu(void); 主菜單(2)voidstudent(void); 學生登錄函數(shù)(3)intstu_login(void); 學生登錄驗證(4)voidstu_find(void); 學生圖書查詢函數(shù)voidbook_search_name(void); 書名查找voidbook_search_author(void); 作者查找3。voidinquire_book(void); 查詢圖書(輸出所有圖書)(5)voidadministrar(void); 管理員登錄模塊(6)intadm_login(void); 管理員登錄驗證(7)voidad_st_menu(void); 學生信息管理菜單1.voidadd_card(void); 申請新學生卡2.voiddelete_card(void); 刪除學生卡3。voidpasswordlookup(void); 學生卡密碼查詢4.voidinquire_stu(void); 查詢學生卡(輸出所有學生卡信息)(8)voidad_bk_menu(void); 圖書信息管理菜單1。voidadd_book(void); 添加圖書2。voiddelete_book(void); 刪除圖書3。voidrevise_book(void); 修改圖書4.voidinquire_book1(void); 輸出所有圖書,管理員使用.5.voidsort_book(void); 圖書排序菜單①.voidsort_book_num(void); 圖書排序——編號②.voidsort_book_price(void); 圖書排序——價格③.voidsort_book_time(void); 圖書排序——出版時間2.4程序總體框架(如圖2.4—1)主界面主界面退出退出學生登錄學生登錄管理員登陸學生登錄學生登錄管理員登陸圖書管理學生信息管理圖書查詢圖書管理學生信息管理圖書查詢查詢圖書按作者查找按書名查找輸出所有圖書查詢圖書按作者查找按書名查找輸出所有圖書修改圖書刪除圖書添加圖書查詢學生卡查詢卡號密碼刪除卡號申請新卡號修改圖書刪除圖書添加圖書查詢學生卡查詢卡號密碼刪除卡號申請新卡號圖書排序圖書排序按編號排序按出版時間排序按價格排序按編號排序按出版時間排序按價格排序圖2。4-1三詳細設(shè)計3.1登陸界面:(1)基

溫馨提示

  • 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

提交評論