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

下載本文檔

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

文檔簡(jiǎn)介

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

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論