版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、軟件工程課課程實驗驗報告 系統(tǒng)名名稱 _ 學(xué)生生信息管管理系統(tǒng)統(tǒng)_學(xué) 院 _ 計計算機(jī)學(xué)學(xué)院信息息_ _ 學(xué)生生信息管管理系統(tǒng)統(tǒng)設(shè)計文文檔可行性研究究 1.1技術(shù)術(shù)可行性性已經(jīng)有人開開發(fā)過,并并且我們們也都使使用過相相類似系系統(tǒng),對對其一般般性的軟軟件和操操作環(huán)境境、編譯譯環(huán)境都都比較熟熟悉,所所以說在在技術(shù)上上來說是是可行的的。 1.2經(jīng)濟(jì)濟(jì)可行性性當(dāng)前系統(tǒng)只只對服務(wù)務(wù)器有關(guān)關(guān)的要求求,在服服務(wù)費(fèi)用用方面,支支出在你你那個承承擔(dān)的范范圍,以以后的維維護(hù)及其其他設(shè)備備的總共共費(fèi)用在在可以承承擔(dān)的范范圍。用用當(dāng)前系系統(tǒng)可以以節(jié)約出出能夠支支付當(dāng)前前系統(tǒng)的的直接支支出,以以后維護(hù)護(hù)費(fèi)用更更是比以以
2、前的機(jī)機(jī)制節(jié)約約很多錢錢。1.3操作作可行性性系統(tǒng)的操作作方式在在這個用用戶組織織內(nèi)能行行得通。需求分析2.1輸入入讓學(xué)生在紙紙面上填填寫相關(guān)關(guān)內(nèi)容,然然后等待待輔導(dǎo)員員或管理理員的審審批確認(rèn)認(rèn)后,再再輸入數(shù)數(shù)據(jù)庫中中保存。2.2輸出出學(xué)生選擇用用戶選項項進(jìn)入系系統(tǒng)后,系系統(tǒng)可經(jīng)經(jīng)有算法法程序輸輸出學(xué)生生基本信信息表,學(xué)學(xué)習(xí)成績績表等。2.2.11打印輸輸出可打印基本本信息、學(xué)學(xué)習(xí)成績績等各種種表格以以及在對對相應(yīng)信信息進(jìn)行行統(tǒng)計操操作后的的表格。2.2.22文件輸輸出可將所有打打印表格格輸出到到EXCCEL文文件中,以以便用戶戶使用其其它的EEXCEEL軟件件改變表表格的大大小及字字體。2.
3、3故障障處理2.3.11內(nèi)部故故障處理理在開發(fā)階段段可以隨隨即修改改數(shù)據(jù)庫庫里的相相應(yīng)內(nèi)容容。 2.3.22外部故故障處理理對編輯的程程序進(jìn)行行重裝載載時,第第一次裝裝載認(rèn)為為錯,修修改。第第二次運(yùn)運(yùn)行,在在需求調(diào)調(diào)用時出出錯,有有錯誤提提示,重重試。2.4性能能要求分分析2.4.11系統(tǒng)易易操作性性所開發(fā)的系系統(tǒng)應(yīng)做做到操作作簡單,盡盡量使系系統(tǒng)操作作不受用用戶對電電腦知識識水平的的限制。2.4.22系統(tǒng)具具有可維維護(hù)性由于系統(tǒng)涉涉及的信信息比較較廣,數(shù)數(shù)據(jù)庫中中的數(shù)據(jù)據(jù)需定期期修改,系系統(tǒng)可利利用的空空間及性性能也隨隨之下降降,為了了使系統(tǒng)統(tǒng)更好地地運(yùn)轉(zhuǎn),學(xué)學(xué)院可以以對系統(tǒng)統(tǒng)數(shù)據(jù)及及一些簡
4、簡單的功功能進(jìn)行行獨立的的維護(hù)及及調(diào)整。2.4.33系統(tǒng)具具有開放放性該系統(tǒng)能夠夠在開放放的硬件件體系結(jié)結(jié)構(gòu)中運(yùn)運(yùn)行,并并且能與與其他系系統(tǒng)順利利連接,不不會因外外部系統(tǒng)統(tǒng)的不同同面要做做在量的的修改工工作。3.概要設(shè)設(shè)計3.1基本本設(shè)計概概念和處處理流程程管理員通過過密碼認(rèn)認(rèn)證,進(jìn)進(jìn)入信息息管理頁頁面對學(xué)學(xué)生相關(guān)關(guān)信息的的錄入、更更新、修修改、添添加等操操作,也也可以通通過查詢詢界面對對學(xué)生信信息進(jìn)行行完全的的查詢,而而學(xué)生和和相關(guān)人人員只能能通過公公共的查查詢界面面對學(xué)生生信息進(jìn)進(jìn)行查詢詢,如要要對學(xué)生生信息進(jìn)進(jìn)行完全全查詢就就需要得得到管理理員的同同意。管理界面管理界面數(shù)據(jù)中 心處理處理
5、打印查詢管理員操作信息輸出查詢用戶界面3.2接口口設(shè)計 本本系統(tǒng)采采用快速速原型開開發(fā)工具具Vissuall Baasicc 6.0進(jìn)行行開發(fā),所所提供的的不同層層次的接接口,都都具有高高度的集集成性,本本系統(tǒng)沒沒有采用用低級語語言設(shè)計計和完成成自定義義接口,因因此接口口設(shè)計部部分已經(jīng)經(jīng)由不同同方式的的組件來來完成了了,以下下只做簡簡單說明明。3.2.11用戶接接口 說明將向用用戶提供供的命令令和它們們的語法法結(jié)構(gòu),以以及軟件件的回答答信息。命令語法信息正確信息錯誤提交IF EELSEE進(jìn)入系統(tǒng)返回到當(dāng)前前界面重設(shè)點擊事件清空輸入的的數(shù)據(jù)無取消點擊事件返回到當(dāng)前前界面無3.2.22外部接接口說
6、明本系統(tǒng)統(tǒng)同外界界的所有有接口的的安排包包括軟件件與硬件件之間的的接口、本本系統(tǒng)與與各支持持軟件直直接的關(guān)關(guān)系。硬件接口軟件接口鍵盤鼠標(biāo)打印機(jī)主模塊管理模塊查詢模塊3.2.33內(nèi)部接接口說明本系統(tǒng)統(tǒng)之內(nèi)的的各個系系統(tǒng)元素素之間的的接口的的安排。數(shù)數(shù)據(jù)庫接接口設(shè)計計采用AADO連連接方式式。模塊名稱主模塊管理員驗證證模塊用戶查詢界界面管理界面主模塊管理員驗證證模塊用戶查詢界界面管理界面4.詳細(xì)設(shè)設(shè)計4.1控制制流程圖圖4.1.11主模塊塊軟件結(jié)結(jié)構(gòu)4.1.22管理員員登陸軟軟件結(jié)構(gòu)構(gòu)4.1.33用戶查查詢軟件件結(jié)構(gòu)用戶查詢模塊輸入查詢條件用戶查詢模塊輸入查詢條件IF正確輸出結(jié)果ELSE打印出結(jié)果
7、返回重新輸入條件4.2源程程序流程程圖5、項目測測試 功能能截圖: 5.11 登登 陸 界 面面 5.22 學(xué)生生用戶功功能界面面 5.3 學(xué)生生查詢功功能 5.44 管管理員管管理界面面 55.5 管理員員輸入功功能 5.6 管理理員刪除除功能 5.77 管管理員查查詢功能能 5.88 管理理員修改改功能 55.9 管理員員插入功功能 5.110 統(tǒng)統(tǒng)計功能能 5.111 分分類功能能 5.112 顯示示功能 5.113 管理理員保存存功能文件保存名名為:SSTUDDENTT 路徑徑為:CC:6、項目管管理6、1 人人員管理理 團(tuán)隊負(fù)負(fù)責(zé)人:陶修赟赟 小組成成員:萬萬富,洪洪鑫,汪汪賢惠,項
8、項鑫6、2產(chǎn)品品管理 本產(chǎn)品品工作于于inn-TCC工作環(huán)環(huán)境,用用于對學(xué)學(xué)生成績績的管理理。學(xué)生生用戶,可可進(jìn)行查查詢課程程成績;管理員員可對學(xué)學(xué)生及其其成績進(jìn)進(jìn)行錄入入、修改改、查詢詢、排列列等功能能。本系系統(tǒng)可進(jìn)進(jìn)行維護(hù)護(hù),修改改。6、3進(jìn)程程管理可行性分析析:5月月23日日5月月24日日 標(biāo)標(biāo)志:提提交可行行性分析析報告項目開發(fā)計計劃:55月255日55月266日 標(biāo)志志:提交交項目開開發(fā)計劃劃需求分析:5月227日5月227日 標(biāo)志志:完成成需求分分析報告告軟件設(shè)計:5月330日6月11日 標(biāo)志:完成軟軟件分析析與設(shè)計計文檔編程實現(xiàn):6月22日66月100日 標(biāo)標(biāo)志:代代碼編寫寫全部
9、完完成軟件測試:6月113日6月114日 標(biāo)志:完成軟軟件測試試,可投投入使用用可行性分析:5月25日5月26日 標(biāo)志:提交可行性分析報告項目開發(fā)計劃:5月27日5月30日 標(biāo)志:提交項目開發(fā)計劃需求分析:5月31日5月31日 標(biāo)志:完成需求分析報告軟件設(shè)計:6月1日6月3日 標(biāo)志:完成軟件分析與設(shè)計文檔軟件實現(xiàn):6月6日6月14日 可行性分析:5月25日5月26日 標(biāo)志:提交可行性分析報告項目開發(fā)計劃:5月27日5月30日 標(biāo)志:提交項目開發(fā)計劃需求分析:5月31日5月31日 標(biāo)志:完成需求分析報告軟件設(shè)計:6月1日6月3日 標(biāo)志:完成軟件分析與設(shè)計文檔軟件實現(xiàn):6月6日6月14日 標(biāo)志:代
10、碼編寫全部完成測試與實施:6月15日6月16日 標(biāo)志:完成軟件測試,可投入使用可行性分析:5月25日5月26日 標(biāo)志:提交可行性分析報告項目開發(fā)計劃:5月27日5月30日 標(biāo)志:提交項目開發(fā)計劃需求分析:5月31日5月31日 標(biāo)志:完成需求分析報告軟件設(shè)計:6月1日6月3日 標(biāo)志:完成軟件分析與設(shè)計文檔軟件實現(xiàn):6月6日6月14日 標(biāo)志:代碼編寫全部完成測試與實施:6月15日6月16日 標(biāo)志:完成軟件測試,可投入使用 7、編 碼#inclludee #inclludee #inclludee sstriing.h#inclludee cconiio.hh#defiine HEAADERR1 -
11、STTUDEENT- n#defiine HEAADERR2 | nuumbeer | naame |CCompp|Maath|Engg | ssum | avve |miici | n#defiine HEAADERR3 |-|-|-|-|-|-|-|-| #defiine FORRMATT | %-10ss |%-155s|%4d|%4dd|%44d| %4dd | %.2ff |%4d |nn#defiine DATTA p-datta.nnum,p-datta.nnamee,p-daata.egrradee,p-daata.mgrradee,p-daata.cgrradee,p-daa
12、ta.tottal,p-datta.aave,p-datta.mminggci#defiine ENDD - nint ssaveeflaag=00; /*是是否需要要存盤的的標(biāo)志變變量*/typeddef strructt sttudeent /*標(biāo)記為為stuudennt*/ ccharr nuum110; /*學(xué)學(xué)號*/ ccharr naame15; /*姓姓名*/ iint cgrradee; /*CC語言成成績*/ iint mgrradee; /*數(shù)數(shù)學(xué)成績績*/ iint egrradee; /*英英語成績績*/ iint tottal; /*總總分*/ ffloaat aav
13、e; /*平平均分*/ iint minngcii; /*名名次*/;typeddef strructt noode /*定義義每條記記錄或結(jié)結(jié)點的數(shù)數(shù)據(jù)結(jié)構(gòu)構(gòu),標(biāo)記記為noode*/ sstruuct stuudennt ddataa; sstruuct nodde *nexxt;Nodee,*LLinkk;void mennuchhoicce() ssysttem(clls); /*清屏.與cllrsccr()功能相相同*/ ttexttcollor(10); /*在文本本模式中中選擇新新的字符符顏色*/ ggotooxy(7,55); ccpriintff( Thhe SStuddent
14、ts Graade Mannageemennt SSysttem n); ggotooxy(7,88); pprinntf(nnPleeasee Ennterr yoour chooicee; 0 eenteer sstuddentts sysstemmntttt); pprinntf( ); pprinntf(1 entter teaacheers syysteemnn);void mennu() /*菜單單函數(shù)*/ ssysttem(clls); /*清屏.與cllrsccr()功能相相同*/ ttexttcollor(10); /*在文本本模式中中選擇新新的字符符顏色*/ ggotoox
15、y(7,55); /*在文本本窗口中中設(shè)置光光標(biāo),下下同*/ ccpriintff( Thhe SStuddentts Graade Mannageemennt SSysttem n); ggotooxy(7,88); ccpriintff( *MMenuu*n); ggotooxy(7,99); ccpriintff( * 1 inpput rrecoord 2 ddeleete reccordd *n); ggotooxy(7,110); ccpriintff( * 3 seaarchh rrecoord 4 mmodiify reccordd *n); ggotooxy(7,111);
16、ccpriintff( * 5 inssertt rrecoord 6 ccounnt reccordd *n); ggotooxy(7,112); ccpriintff( * 7 sorrt rreorrd 8 ssavee reccordd *n); ggotooxy(7,113); ccpriintff( * 9 dissplaay rrecoord 0 qquitt sysstemm *n); ggotooxy(7,114); ccpriintff( *n); /*cprrinttf()送格式式化輸出出至文本本窗口屏屏幕中*/void mennusttudeent() ssysttem
17、(clls); /*清屏.與cllrsccr()功能相相同*/ ttexttcollor(10); /*在文本本模式中中選擇新新的字符符顏色*/ ggotooxy(7,55); /*在文本本窗口中中設(shè)置光光標(biāo),下下同*/ ccpriintff( Thhe SStuddentts Graade Mannageemennt SSysttem n); ggotooxy(7,88); ccpriintff( *MMenuu*n); ggotooxy(7,99); ccpriintff( *33 seearcch reccordd 0 quiit syysteem*n); ggotooxy(7,110)
18、; ccpriintff( *n); /*cprrinttf()送格式式化輸出出至文本本窗口屏屏幕中*/void priinthheadder() /*格式式化輸出出表頭*/ pprinntf(HEAADERR1); pprinntf(HEAADERR2); pprinntf(HEAADERR3);void priintddataa(Noode *ppp) /*格式式化輸出出表中數(shù)數(shù)據(jù)*/ NNodee* pp; pp=ppp; pprinntf(FORRMATT,DAATA); void Wroong() /*輸輸出按鍵鍵錯誤信信息*/ pprinntf(nnnnnnn*Errrorr:in
19、nputt haas wwronng! preess anyy keey tto cconttinuue*n); ggetccharr();void Noffindd() /*輸出未未查找此此學(xué)生的的信息*/ pprinntf(nn=Nott fiind thiis sstuddentt!nn);void Dissp(LLinkk l) /*顯示示單鏈表表l中存存儲的學(xué)學(xué)生記錄錄,內(nèi)容容為sttudeent結(jié)結(jié)構(gòu)中定定義的數(shù)數(shù)據(jù)項*/ NNodee *pp; pp=l-neext; /*l存儲儲的是單單鏈表中中頭結(jié)點點的指針針,該頭頭結(jié)點沒沒有存儲儲學(xué)生信信息,指指針域指指向的后后繼結(jié)點點才有
20、學(xué)學(xué)生信息息*/ iif(!p) priintff(n=Noot sstuddentt reecorrd!n); gettchaar(); retturnn; pprinntf(nnn); pprinntheeadeer(); /*輸出出表格頭頭部*/ wwhille(pp) /*逐條條輸出鏈鏈表中存存儲的學(xué)學(xué)生信息息*/ priintddataa(p); p=pp-nnextt; /*移移動至下下一個結(jié)結(jié)點*/ priintff(HEEADEER3); ggetccharr();Node* Loocatte(LLinkk l,chaar ffinddmesss,chhar nammeorrn
21、umm) /*用于定定位鏈表表中符合合要求的的節(jié)點,并并返回指指向該節(jié)節(jié)點的指指針,ffinddmesss保存要要查找的的具體內(nèi)內(nèi)容; nammeorrnumm保保存按什什么查找找;在單單鏈表ll中查找找;*/ NNodee *rr; iif(sstrccmp(nammeorrnumm,nnum)=0) /*按按學(xué)號查查詢*/ r=ll-nnextt; whiile(r) iff(sttrcmmp(rr-ddataa.nuum,ffinddmesss)=0) /*若找到到finndmeess值值的學(xué)號號*/ reeturrn rr; r=r-nexxt; eelsee iff(sttrcmmp
22、(nnameeornnum,naame)=0) /*按姓名名查詢*/ r=ll-nnextt; whiile(r) iff(sttrcmmp(rr-ddataa.naame,finndmeess)=00) /*若找找到fiindmmesss值的學(xué)學(xué)生姓名名*/ reeturrn rr; r=r-nexxt; rretuurn 0;void strringginpput(chaar *t,iint lenns,ccharr *nnotiice) /*輸輸入字符符串,并并進(jìn)行長長度驗證證(長度度leens)priintff(n EExceeed thee reequiiredd leengtth!
23、 n); /*進(jìn)進(jìn)行長度度校驗,超超過leens值值重新輸輸入*/ whhilee(sttrleen(nn)llenss); sttrcppy(tt,n); /*將輸輸入的字字符串拷拷貝到字字符串tt中*/int nnumbberiinpuut(ccharr *nnotiice) /*輸入入分?jǐn)?shù),00分分?jǐn)?shù)1100 | t1100 | tneext; ssysttem(clls); DDispp(l); /*先打打印出已已有的學(xué)學(xué)生信息息*/ wwhille(rr-nnextt!=NNULLL) rr=r-neext; /*將指針針移至于于鏈表最最末尾,準(zhǔn)準(zhǔn)備添加加記錄*/ wwhille(1
24、1) /*一次次可輸入入多條記記錄,直直至輸入入學(xué)號為為0的記記錄結(jié)點點添加操操作*/ whiile(1) /*輸輸入學(xué)號號,保證證該學(xué)號號沒有被被使用,若若輸入學(xué)學(xué)號為00,則退退出添加加記錄操操作*/ sttrinnginnputt(nuum,110,Inpput nummberr(prresss 00reeturrn mmenuu):); /*格格式化輸輸入學(xué)號號并檢驗驗*/ fllag=0; iff(sttrcmmp(nnum,0)=0) /*輸輸入為00,則退退出添加加操作,返返回主界界面*/ retturnn; s=l-nexxt; whhilee(s) /*查詢該該學(xué)號是是否已經(jīng)
25、經(jīng)存在,若若存在則則要求重重新輸入入一個未未被占用用的學(xué)號號*/ iif(sstrccmp(s-datta.nnum,numm)=0) flaag=11; breeak; ss=s-neext; iff(fllag=1) /*提示用用戶是否否重新輸輸入*/ ggetccharr(); pprinntf(=Thhe nnumbber %s is nott exxisttingg,trry aagaiin?(y/nn):,nuum); sscannf(%c,&cch); iif(cch=y|cch=Y) conntinnue; eelsee retturnn; ellse breeak; p=(N
26、odde *)maallooc(ssizeeof(Nodde); if(!p) prrinttf(n Alllocaate memmoryy faailuure ); /*如沒有有申請到到,打印印提示信信息*/ reeturrn ; strrcpyy(p-daata.numm,nuum); /*將字符符串nuum拷貝貝到p-daata.numm中*/ strringginpput(p-datta.nnamee,155,NNamee:); p-datta.ccgraade=nummberrinpput(C lannguaage Scoore0-1100:); /*輸入入并檢驗驗分?jǐn)?shù),分分?jǐn)?shù)必須須
27、在01000之間*/ p-datta.mmgraade=nummberrinpput(Maath Scoore0-1100:); p-datta.eegraade=nummberrinpput(Enngliish Scoore0-1100:); p-datta.ttotaal=pp-ddataa.eggradde + p-daata.cgrradee + p-datta.mmgraade; /*計算總總分*/ p-datta.aave=(flloatt)(pp-ddataa.tootall/3); /*計計算平均均分*/ p-datta.mminggci=0; p-nexxt=NNULLL;
28、/*表明明這是鏈鏈表的尾尾部結(jié)點點*/ r-nexxt=pp; /*將將新建的的結(jié)點加加入鏈表表尾部中中*/ r=pp; savvefllag=1; /*在maain()有對對該全局局變量的的判斷,若若為1,則進(jìn)行行存盤操操作*/ rretuurn ;void Qurr(Liink l) /*按按學(xué)號或或姓名,查查詢學(xué)生生記錄*/ iint sellectt; /*1:按學(xué)號號查,22:按姓姓名查,其其他:返返回主界界面(菜菜單)*/ ccharr seearcchinnputt200; /*保保存用戶戶輸入的的查詢內(nèi)內(nèi)容*/ NNodee *pp; iif(!l-nexxt) /*若若鏈表為
29、為空*/ sysstemm(ccls); priintff(n=Noo sttudeent reccordd!nn); gettchaar(); retturnn; ssysttem(clls); pprinntf(nn =11 Seearcch bby nnumbber =2 Seaarchh byy naamen); pprinntf( plleasse cchoiice1,22:); sscannf(%d,&sseleect); iif(sseleect=1) /*按按學(xué)號查查詢*/ strringginpput(seaarchhinpput,10,Innputt thhe eexiss
30、tinng sstuddentt nuumbeer:); p=LLocaate(l,ssearrchiinpuut,numm);/*在在l中查查找學(xué)號號為seearcchinnputt值的節(jié)節(jié)點,并并返回節(jié)節(jié)點的指指針*/ if(p) /*若若p!=NULLL*/ prrinttheaaderr(); prrinttdatta(pp); prrinttf(EEND); prrinttf(preess anyy keey tto rretuurn); geetchhar(); elsse Noofinnd(); gettchaar(); eelsee iff(seelecct=2) /*按按姓名
31、查查詢*/ strringginpput(seaarchhinpput,15,innputt thhe eexisstinng sstuddentt naame:); p=LLocaate(l,ssearrchiinpuut,namme); if(p) prrinttheaaderr(); prrinttdatta(pp); prrinttf(EEND); prrinttf(preess anyy keey tto rretuurn); geetchhar(); elsse Noofinnd(); gettchaar(); eelsee Wroong(); gettchaar();void D
32、ell(Liink l) /*刪除除學(xué)生記記錄:先先找到保保存該學(xué)學(xué)生記錄錄的節(jié)點點,然后后刪除該該節(jié)點*/ iint sell; NNodee *pp,*rr; ccharr fiindmmesss200; iif(!l-nexxt) sysstemm(ccls); priintff(n=Noo sttudeent reccordd!nn); gettchaar(); retturnn; ssysttem(clls); DDispp(l); pprinntf(nn =11 Deelette bby nnumbber =2 DDeleete by nammenn); pprinntf( ple
33、easee chhoicce11,2:); sscannf(%d,&ssel); iif(ssel=1) strringginpput(finndmeess,10,innputt thhe eexisstinng sstuddentt nuumbeer:); p=LLocaate(l,ffinddmesss,numm); if(p) /*p!=NULLL*/ r=l; whhilee(r-neext!=p) rr=r-neext; r-neext=p-nexxt;/*將pp所指節(jié)節(jié)點從鏈鏈表中去去除*/ frree(p); /*釋放內(nèi)內(nèi)存空間間*/ prrinttf(n=DDeleete su
34、cccesss!n); geetchhar(); saavefflagg=1; elsse Noofinnd(); gettchaar(); eelsee iff(seel=2) strringginpput(finndmeess,15,innputt thhe eexisstinng sstuddentt naame); p=LLocaate(l,ffinddmesss,namme); /*先先按姓名名查詢到到該記錄錄所在的的節(jié)點*/ if(p) r=l; whhilee(r-neext!=p) rr=r-neext; r-neext=p-nexxt; frree(p); prrinttf(
35、n=DDeleete succcesss!n); geetchhar(); saavefflagg=1; elsse Noofinnd(); gettchaar(); eelsee Wroong(); gettchaar();void Moddifyy(Liink l) /*修改改學(xué)生記記錄。先先按輸入入的學(xué)號號查詢到到該記錄錄,然后后提示用用戶修改改學(xué)號之之外的值值,學(xué)號號不能修修改*/ NNodee *pp; ccharr fiindmmesss200; iif(!l-nexxt) sysstemm(ccls); priintff(n=Noo sttudeent reccordd!nn);
36、 gettchaar(); retturnn; ssysttem(clls); pprinntf(Moodiffy sstuddentt reecorrderr:); DDispp(l); sstriingiinpuut(ffinddmesss,110,nIInpuut tthe exiistiing stuudennt nnumbber:); /*輸入并并檢驗該該學(xué)號*/ pp=Loocatte(ll,fiindmmesss,nnum); /*查查詢到該該節(jié)點*/ iif(pp) /*若pp!=NNULLL,表明明已經(jīng)找找到該節(jié)節(jié)點*/ priintff(NNumbber:%s,n,p-da
37、ata.numm); priintff(NNamee:%ss,p-datta.nnamee); strringginpput(p-datta.nnamee,155,iinpuut nnew namme:); priintff(CC laanguuagee sccoree:%dd,p-datta.ccgraade); p-datta.ccgraade=nummberrinpput(C lannguaage Scoore0-1100:); priintff(MMathh sccoree:%dd,p-datta.mmgraade); p-datta.mmgraade=nummberrinpput(M
38、aath Scoore0-1100:); priintff(EEngllishh sccoree:%dd,p-datta.eegraade); p-datta.eegraade=nummberrinpput(Enngliish Scoore0-1100:); p-datta.ttotaal = p-daata.egrradee + p-datta.ccgraade + pp-ddataa.mggradde; p-datta.aave=(flloatt)(pp-ddataa.tootall/3); p-datta.mminggci=0; priintff(n=Moodiffy ssucccess
39、s!nn); Dissp(ll); savvefllag=1; eelsee Noffindd(); gettchaar();void Inssertt(Liink l) /*插入記記錄,按按學(xué)號查查詢到要要插入的的節(jié)點的的位置,然后在在該學(xué)號號之后插插入一個個新節(jié)點點*/ LLinkk p,v,nnewiinfoo; /*p指指向插入入位置,nnewiinfoo指新插插入記錄錄*/ ccharr chh,nuum110,s110; /*s保存存插入點點位置之之前的學(xué)學(xué)號,nnum保存存輸入的的新記錄錄的學(xué)號號*/ iint flaag=00; vv=l-neext; ssysttem(cll
40、s); DDispp(l); wwhille(11) strringginpput(s,110,nPPleaase inpput Inssertt loocattionn aafteer tthe Nummberr:); flaag=00; v=ll-nnextt; whiile(v) /*查查詢該學(xué)學(xué)號是否否存在,fflagg=1表表示該學(xué)學(xué)號存在在*/ iff(sttrcmmp(vv-ddataa.nuum,ss)=0) fflagg=1;breeak; v=v-nexxt; if(flaag=1) brreakk; /*若學(xué)學(xué)號存在在,則進(jìn)進(jìn)行插入入之前的的新記錄錄的輸入入操作*/ el
41、sse geetchhar(); prrinttf(n=TThe nummberr %ss iss noot eexisstinng,ttry agaain?(y/n):,ss); sccanff(%c,&chh); iff(chh=y|chh=Y) cconttinuue; ellse rretuurn; sstriingiinpuut(nnum,10,Innputt neew sstuddentt Nuumbeer:); /*以新記記錄的輸輸入操作作與Addd()相同*/ vv=l-neext; wwhille(vv) if(strrcmpp(v-daata.numm,nuum)=0) p
42、rrinttf(=Sorrry,thee neew nnumbber:%ss iis eexisstinng !n,nuum); prrinttheaaderr(); prrinttdatta(vv); prrinttf(n); geetchhar(); reeturrn; v=vv-nnextt; nnewiinfoo=(NNodee *)malllocc(siizeoof(NNodee); iif(!newwinffo) priintff(n AAlloocatte mmemoory faiilurre ); /*如如沒有申申請到,打打印提示示信息*/ retturnn ; /*返返回主界
43、界面*/ sstrccpy(newwinffo-datta.nnum,numm); sstriingiinpuut(nnewiinfoo-ddataa.naame,15,Naame:); nnewiinfoo-ddataa.cggradde=nnumbberiinpuut(C llangguagge SScorre00-1000:); nnewiinfoo-ddataa.mggradde=nnumbberiinpuut(Matth SScorre00-1000:); nnewiinfoo-ddataa.eggradde=nnumbberiinpuut(Engglissh SScorre00-1
44、000:); nnewiinfoo-ddataa.tootall=neewinnfo-daata.egrradee+neewinnfo-daata.cgrradee+neewinnfo-daata.mgrradee; nnewiinfoo-ddataa.avve=(flooat)(neewinnfo-daata.tottal/3); nnewiinfoo-ddataa.miingcci=00; nnewiinfoo-nnextt=NUULL; ssaveeflaag=11; pp=l-neext; /*將指指針賦值值給p,因為ll中的頭頭節(jié)點的的下一個個節(jié)點才才實際保保存著學(xué)學(xué)生的記記錄*/
45、wwhille(11) if(strrcmpp(p-daata.numm,s)=00) /*在鏈鏈表中插插入一個個節(jié)點*/ neewinnfo-neext=p-nexxt; p-neext=newwinffo; brreakk; p=pp-nnextt; Diisp(l); prrinttf(nn); geetchhar();void Tonngjii(Liink l) /*統(tǒng)計總總分,單單科第一一和各科科不及格格人數(shù)*/ NNodee *ppm,*pe,*pcc,*ppt; /*用用于指向向分?jǐn)?shù)最最高的節(jié)節(jié)點*/ NNodee *rr=l-neext; iint couuntcc=0,cou
46、untmm=0,couuntee=0; /*保存三三門成績績中不及及格的人人數(shù)*/ iif(!r) sysstemm(ccls); priintff(n=Noo sttudeent reccordd!nn); gettchaar(); retturnn ; ssysttem(clls); DDispp(l); ppm=ppe=ppc=ppt=rr; wwhille(rr) if(r-datta.ccgraadedatta.mmgraadedatta.eegraadedatta.ccgraade=pcc-ddataa.cggradde) pc=r; if(r-datta.mmgraade=pmm
47、-ddataa.mggradde) pm=r; if(r-datta.eegraade=pee-ddataa.eggradde) pe=r; if(r-datta.ttotaal=pt-daata.tottal) pt=r; r=rr-nnextt; pprinntf(nn-thee ToongJJi rresuult-nn); pprinntf(C Lannguaage60: %d (renn)nn,ccounntc); pprinntf(Maath 60: %d (renn)nn,ccounntm); pprinntf(Enngliish ddataa.naame,pt-daata.tot
48、tal); pprinntf(Thhe hhighhestt sttudeent by Engglissh sscorre naame:%s tottoall sccoree:%ddn,pee-ddataa.naame,pe-daata.egrradee); pprinntf(Thhe hhighhestt sttudeent by Matth sscorre naame:%s tottoall sccoree:%ddn,pmm-ddataa.naame,pm-daata.mgrradee); pprinntf(Thhe hhighhestt sttudeent by C sscorre na
49、ame:%s tottoall sccoree:%ddn,pcc-ddataa.naame,pc-daata.cgrradee); pprinntf(nnnppresss aany keyy too reeturrn); ggetccharr();void Sorrt(LLinkk l) /*利用用插入法法排序?qū)崒崿F(xiàn)單鏈鏈表的按按總分字字段的降降序排序序,從高高到低*/ LLinkk lll; NNodee *pp,*rrr,*s; iint i=00; iif(ll-nnextt=NNULLL) sysstemm(ccls); priintff(n=Noo sttudeent reccord
50、d!nn); gettchaar(); retturnn ; lll=(Nodde*)malllocc(siizeoof(NNodee); iif(!ll) priintff(n AAlloocatte mmemoory faiilurre ); /*如如沒有申申請到,打打印提示示信息*/ retturnn ; lll-nexxt=NNULLL; ssysttem(clls); DDispp(l); pp=l-neext; wwhille(pp) s=(Nodde*)malllocc(siizeoof(NNodee); /*s用于于保存從從原鏈表表中取出出的節(jié)點點信息*/ if(!s) prr
51、inttf(n Alllocaate memmoryy faailuure ); reeturrn ; s-datta=pp-ddataa; s-nexxt=NNULLL; rr=ll; /*rrr鏈表表存儲插插入單個個節(jié)點后后保持排排序的鏈鏈表,lll是這這個鏈表表的頭指指針,每每次從頭頭開始查查找插入入位置*/ whiile(rr-neext != NULLL & rrr-nexxt-datta.ttotaal = pp-ddataa.tootall) rrr=rrr-nnextt; /*指針針移至總總分比pp所指的的節(jié)點的的總分小小的節(jié)點點位置*/ if(rr-neext=NUULL)/
52、*若若新鏈表表ll中中的所有有節(jié)點的的總分值值都比pp-ddataa.tootall大時,就就將p所所指節(jié)點點加入鏈鏈表尾部部*/ rrr-nnextt=s; elsse /*否則則將該節(jié)節(jié)點插入入至第一一個總分分字段比比它小的的節(jié)點的的前面*/ s-neext=rr-neext; rrr-nnextt=s; p=pp-nnextt; /*原鏈鏈表中的的指針下下移一個個節(jié)點*/ ll-nnextt=lll-nnextt; /*lll中存儲儲是的已已排序的的鏈表的的頭指針針*/ pp=l-neext; /*已排排好序的的頭指針針賦給pp,準(zhǔn)備備填寫名名次*/ wwhille(pp) /*當(dāng)當(dāng)p不
53、為為空時,進(jìn)進(jìn)行下列列操作*/ i+; /*結(jié)點點序號*/ p-datta.mminggci=i; /*將名名次賦值值*/ p=pp-nnextt; /*指針后后移*/ Disp(l);printtf(n =Sorrt ccompplette!n);savefflagg=1;void Savve(LLinkk l) /*數(shù)據(jù)據(jù)存盤,若用戶戶沒有專專門進(jìn)行行此操作作且對數(shù)數(shù)據(jù)有修修改,在在退出系系統(tǒng)時, 會提示示用戶存存盤*/ FFILEE *ffp; NNodee *pp; iint couunt=0; ffp=ffopeen(c:sttudeent,wwb); /*以只只寫方式式打開二二進(jìn)制
54、文文件*/ iif(ffp=NULLL) /*打打開文件件失敗*/ priintff(n=oppen fille eerroor!n); gettchaar(); retturnn ; pp=l-neext; wwhille(pp) if(fwrritee(p,sizzeoff(Noode),1,fp)=11)/*每次寫寫一條記記錄或一一個節(jié)點點信息至至文件*/ p=p-nexxt; coountt+; elsse brreakk; iif(ccounnt00) gettchaar(); priintff(nnnnnnn=Savve ffilee coomplletee,tootall saa
55、vedds reccordd nuumbeer iis:%dnn,ccounnt); gettchaar(); savvefllag=0; eelsee sysstemm(ccls); priintff(TThe currrennt llinkk iss emmptyy,noo sttudeent reccordd iss saavedd!nn); gettchaar(); ffcloose(fp); /*關(guān)閉閉此文件件*/int mmainn(vooid) LLinkk l; /*定定義鏈表表*/ FFILEE *ffp; /*文文件指針針*/ iint sellectt; /*保存存選擇結(jié)
56、結(jié)果變量量*/ ccharr chh; /*保保存(yy,Y,n,NN)*/ iint couunt=0; /*保保存文件件中的記記錄條數(shù)數(shù)*/ NNodee *pp,*rr; /*定義記記錄指針針變量*/ ll=(NNodee*)mmallloc(sizzeoff(Noode); iif(!l) priintff(n AAlloocatte mmemoory faiilurre ); retturnn ; ll-nnextt=NUULL; rr=l; ffp=ffopeen(C:sttudeent,aab+); /*以以追加方方式打開開一個二二進(jìn)制文文件,可可讀可寫寫,若此此文件不不存在,會會創(chuàng)建此此文件*/ iif(ffp=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年銷售經(jīng)理區(qū)域市場拓展聘用合同模板2篇
- 2025年項目工程中介協(xié)議書模板(含設(shè)計、施工、驗收)3篇
- 2025年私人房產(chǎn)買賣合同文本與合同解除條件3篇
- 民政局2025版離婚協(xié)議書婚姻糾紛調(diào)解服務(wù)協(xié)議2篇
- 二零二五版美容院美容院連鎖加盟管理合同4篇
- 墻面裝飾板施工方案
- 窮人續(xù)寫200字6篇
- 2024年中級經(jīng)濟(jì)師考試題庫(典型題)
- 2025年消防系統(tǒng)智能化改造與安全評估合同協(xié)議3篇
- 2024年園區(qū)綠化管理制度
- 二零二五年度無人駕駛車輛測試合同免責(zé)協(xié)議書
- 2025年湖北華中科技大學(xué)招聘實驗技術(shù)人員52名歷年高頻重點提升(共500題)附帶答案詳解
- 高三日語一輪復(fù)習(xí)助詞「と」的用法課件
- 毛渣采購合同范例
- 2023中華護(hù)理學(xué)會團(tuán)體標(biāo)準(zhǔn)-注射相關(guān)感染預(yù)防與控制
- 五年級上冊小數(shù)遞等式計算200道及答案
- 2024年廣東高考政治真題考點分布匯 總- 高考政治一輪復(fù)習(xí)
- 燃?xì)夤艿滥甓葯z驗報告
- GB/T 44052-2024液壓傳動過濾器性能特性的標(biāo)識
- FZ/T 81013-2016寵物狗服裝
- JB∕T 14089-2020 袋式除塵器 濾袋運(yùn)行維護(hù)技術(shù)規(guī)范
評論
0/150
提交評論