數(shù)據(jù)結(jié)構(gòu)之學(xué)生成績(jī)管理系統(tǒng)_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)之學(xué)生成績(jī)管理系統(tǒng)_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)之學(xué)生成績(jī)管理系統(tǒng)_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)之學(xué)生成績(jī)管理系統(tǒng)_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)之學(xué)生成績(jī)管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩9頁(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)介

1、學(xué)生成績(jī)管理系統(tǒng)一、實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)此次課程設(shè)計(jì)中學(xué)生成績(jī)管理系統(tǒng)的題目,掌握鏈表等數(shù)據(jù)結(jié)構(gòu)的基本操作方面的知識(shí),并能靈活的解決一些基本的問(wèn)題,加深對(duì)其性質(zhì)及各項(xiàng)操作的理解;將所學(xué)數(shù)據(jù)結(jié)構(gòu)方面的知識(shí)與一門(mén)具體的語(yǔ)言一一C語(yǔ)言來(lái)進(jìn)行實(shí)現(xiàn),感受數(shù)據(jù)結(jié)構(gòu)的強(qiáng)大作用,加深理解。二、試驗(yàn)要求管理系統(tǒng)中有五個(gè)要求:輸入查找修改插入刪除存儲(chǔ)(1)輸入要求:能夠通過(guò)鍵盤(pán)輸入和文件輸入兩種(2)查找要求:能夠根據(jù)學(xué)生號(hào)查找單個(gè)學(xué)生的信息,也可以遍歷所有學(xué)生信息(3)修改要求:能夠根據(jù)學(xué)生號(hào)修改單個(gè)學(xué)生所有信息(4)插入要求:能夠?qū)崿F(xiàn)頭插和尾插(5)刪除要求:能夠根據(jù)學(xué)生號(hào)刪除單個(gè)學(xué)生信息(6)存儲(chǔ)要求:通過(guò)鏈表存儲(chǔ)

2、所有信息三、算法的思想與算法實(shí)現(xiàn)步驟基本思想通過(guò)鏈表數(shù)據(jù)類型進(jìn)行基本操作,主要有三個(gè)模塊:分別是主函數(shù)模塊、主要操作函數(shù)及基本操作函數(shù)。其中,主函數(shù)負(fù)責(zé)其他子函數(shù)的調(diào)用實(shí)現(xiàn)以及基本界面的操作主要函數(shù)包括:voidStulnput(Student*);學(xué)生成績(jī)管理系統(tǒng)的輸入函數(shù),由主函數(shù)調(diào)用voidStuSelect(Student*);學(xué)生成績(jī)管理系統(tǒng)的查找函數(shù),由主函數(shù)調(diào)用voidStuAlter(Student*);學(xué)生成績(jī)管理系統(tǒng)的修改函數(shù),由主函數(shù)調(diào)用voidStulnsert(Student*);學(xué)生成績(jī)管理系統(tǒng)的插入函數(shù),由主函數(shù)調(diào)用voidStuDelect(Student*);

3、/學(xué)生成績(jī)管理系統(tǒng)的刪除函數(shù),由主函數(shù)調(diào)用voidStuSave(Student*);學(xué)生成績(jī)管理系統(tǒng)的存儲(chǔ)函數(shù),由主函數(shù)調(diào)用基本操作函數(shù):/輸出函數(shù)voidStuOutput(Student*p);輸入函數(shù)intStulmport(Student*head,Student*p);voidStuInputHand(Student*head);/學(xué)生成績(jī)管理系統(tǒng)的手動(dòng)輸入函數(shù),由輸入函數(shù)調(diào)用voidStuInputFile(Student*head);/學(xué)生成績(jī)管理系統(tǒng)的文件輸入函數(shù),由輸入函數(shù)調(diào)用voidStuSelectErg(Student*head);/學(xué)生成績(jī)管理系統(tǒng)的遍歷函數(shù),由查找

4、函數(shù)調(diào)用voidStuSelectNumFind(Student*head);/學(xué)生成績(jī)管理系統(tǒng)的按學(xué)號(hào)查找函數(shù),由查找函數(shù)調(diào)用voidStuSelectSubFind(Student*head);/學(xué)生成績(jī)管理系統(tǒng)的按科目查找函數(shù),由查找函數(shù)調(diào)用實(shí)現(xiàn)步驟首先,分析題目要求劃分實(shí)現(xiàn)模塊,定義基本數(shù)據(jù)類型,諸如結(jié)構(gòu)體、鏈表等;其次,針對(duì)上述的基本操作實(shí)現(xiàn)具體需要進(jìn)行的操作,具體實(shí)現(xiàn)每個(gè)環(huán)節(jié)需要進(jìn)行的基本操作,即具體編寫(xiě)每個(gè)小函數(shù)實(shí)現(xiàn)功能;最后,編寫(xiě)主函數(shù)對(duì)每個(gè)實(shí)現(xiàn)進(jìn)行按需調(diào)用,實(shí)現(xiàn)操作。3.流程圖四.代碼:mcludemclude#mcludestmctStudentchainame10;cha

5、isubject10;iiitnum;mtgrade;Student*next;voidStuMainQ;學(xué)生成績(jī)管理系統(tǒng)的主函數(shù),由mam函數(shù)調(diào)用voidStuIiiput(Student*);學(xué)生成績(jī)管理系統(tǒng)的輸入函數(shù),由主函數(shù)調(diào)用voidsmselect(student*);學(xué)生成績(jī)管理系統(tǒng)的查找函數(shù),由主函數(shù)調(diào)用voidStuAlter(Student*);學(xué)生成績(jī)管理系統(tǒng)的修改函數(shù),由主函數(shù)調(diào)用voidSniIiisert(Snident*);學(xué)生成績(jī)管理系統(tǒng)的插入函數(shù),由主函數(shù)調(diào)用voidStuDelectCStudent*);學(xué)生成績(jī)管理系統(tǒng)的刪除函數(shù),由主函數(shù)調(diào)用voidStu

6、Save(Smdent*);學(xué)生成績(jī)管理系統(tǒng)的存儲(chǔ)函數(shù),由主函數(shù)調(diào)用voidStuOutput(Student*p);輸出函數(shù)mtStuInipoil(Student*head,Student*p);輸入函數(shù)voidStuOutput(Student*p)打印函數(shù),將鏈表的該節(jié)點(diǎn)信息輸出pnntff學(xué)生姓名:n);prmtf(M%sH,p-name);pnntf(”學(xué)生號(hào):”);priiitf(n%d.pnum);pnntf(”科目:”);pimtf(n%sn5p-subject);pnntf(”學(xué)生成績(jī):”);pnntff%dnH,p-grade);mtStuInipoil(Student*

7、head,Student*p)Student*Opuuon=(Student*)nialloc(sizeof(Snident);用來(lái)判斷輸入節(jié)點(diǎn)中學(xué)生號(hào)是否有重復(fù)Opmion=head-next;pnntf(”學(xué)生姓名:scanf(M%s,p-naiiie);prmtf(H學(xué)生號(hào):n”);scanf(”d=&pnum);pnntf(”科目:n”);scanf(%s”,psubject);if(Opuuon!=NULL)if(OpHUOii-iium=p-nuiii&!strcmp(Opinion-subject,p-subject)pmitfC該學(xué)生這門(mén)科目已有成績(jī),請(qǐng)重新輸入n”);retu

8、rn1;Opinion=Opinion-next;printf(”學(xué)生成績(jī):n”);scanf(%d=&pgiade);return0;voidmain()StuMainQ;voidStuMainQchai-decide=V;/定義while變量,函數(shù)是否繼續(xù)進(jìn)行intnum=l;定義switch變量,函數(shù)跳轉(zhuǎn)到哪個(gè)voidStuIiiput(Student*head)學(xué)生成績(jī)管理系統(tǒng)的輸入函數(shù),由主函數(shù)調(diào)用子函數(shù)Student*head;定義鏈表的頭指針head=(Student*)malloc(sizeof(Student);給頭指針開(kāi)辟空間head-next=NULL;初始化頭指針whi

9、le(decide?=,n,)pnntf(M*打).*i輸入2查找3修改4插入*5”);*5刪除6存儲(chǔ)7追出*nH);*打).scanf(”d”、&ni】ni);switch(num)case1:Stulnput(head);break:case2:StuSelect(head);break:case3:StuAlter(head);break:case4:Stulnsert(head);break:case5:StuDelect(head);break:case6:StuSave(head);break:default:decide:break;;voidStuIiiputHand(Stud

10、ent*head);學(xué)生成纟貴管理系統(tǒng)的手動(dòng)輸入函數(shù),由輸入函數(shù)調(diào)用voidStuIiiputFile(Student*head);學(xué)生成績(jī)管理系統(tǒng)的文件輸入函數(shù),由輸入函數(shù)調(diào)用chaidecide=V;intnum;數(shù)定義while變量,函數(shù)是否繼續(xù)進(jìn)行定義switch變量,函數(shù)跳轉(zhuǎn)到哪個(gè)子函while(decide!=,n,)*y).pnntf(-*1手動(dòng)輸入2文件輸入3退出林E);*y).scanfC%cT;&iii】m);switch(num)case1:StuIiiputHaiid(head);break;case2:StuIiiputFile(head);default:decid

11、e=,n,;break;voidStuIiiputHand(Student*head)學(xué)生成績(jī)管理系統(tǒng)的手動(dòng)輸入函數(shù),由輸入函數(shù)調(diào)用if(head-next=NULL)Student*pomt=(Student*)nialloc(sizeof(Student);鏈表中最后一個(gè)節(jié)點(diǎn),只在該函數(shù)中存在point-next=NULL;intdecide=l;wliile(decide!=O)Student*p=(Student*)malloc(sizeof(Student);p-next=NULL;Stulinport(head,p);if(head-next=NULL)head-next=p;po

12、int=p;elsepoint-next=p:pomt=p;printf(”是否繼續(xù):l/OnH);scanfC%d,&decide);elsepnntf(“管理系統(tǒng)中已存在信息,若想輸入學(xué)生信息,請(qǐng)轉(zhuǎn)插入子系統(tǒng)”);voidStuIiiputFile(Snideiit*head)學(xué)生成績(jī)管理系統(tǒng)的文件輸入函數(shù),由輸入函數(shù)調(diào)用if(head-next!=NULL)pmitf(”學(xué)生管理系統(tǒng)中已有信息,請(qǐng)?zhí)D(zhuǎn)到插入選項(xiàng)n”);return;FILE*fp;prmtf(請(qǐng)輸入文件名(包括物理地址)n”);charfilename10;scanfHs.filename);if(fp=fopen(fi

13、lename/*iH)=NULL)printHcannotopenfileiT);return;Student*point=(Snident*)malloc(sizeof(Student);Student*OpHiion=(Student*)nialloc(sizeof(Sndent);用來(lái)判斷輸入節(jié)點(diǎn)中學(xué)生號(hào)是否有重復(fù)wliile(?feof(fp)Opnuon=head-next;Student*p=(Student*)malloc(sizeof(Student);p-next=NULL;fiead(p.sizeof(Student),1.fp);if(Opuuon!=NULL)if(Op

14、Huon-num=p-num&!sticmp(OpHuon-subject.p-subject)pnnrff該文件中有重復(fù)學(xué)生信息,請(qǐng)驗(yàn)明再傳輸5”);head-next=NULL;return;Opinion=Opinion-next;voidStuIiiput(Student*head)學(xué)生成績(jī)管理系統(tǒng)的輸入函數(shù),由主函數(shù)調(diào)用if(head-next=NULL)head-next=p;pomt=p;elsepoint-next=p:pomt=p;Opinion=head-next;wliile(Opinion-next?=NULL)Opinion=Opinion-next;if(Opuuo

15、n-next-next=NULL)Opmion-next=NULL:;fclose(fp);pnntf(”傳輸成功n”);voidStuSelectErg(Student*head);學(xué)生成績(jī)管理系統(tǒng)的遍歷函數(shù),由查找函數(shù)調(diào)用voidSniSelectNumFind(Student*head);學(xué)生成績(jī)管理系統(tǒng)的按學(xué)兮查找函數(shù),由查找函數(shù)調(diào)用voidStuSelectSubFmd(Stiident*head);學(xué)生成績(jī)管理系統(tǒng)的按科目查找函數(shù),由查找函數(shù)調(diào)用voidStuSelect(Student*head)/學(xué)生成績(jī)管理系統(tǒng)的查找函數(shù),由主函數(shù)調(diào)用chaidecide=y;定義while變

16、量,函數(shù)是否繼續(xù)進(jìn)行intnum;定義switch變量,函數(shù)跳轉(zhuǎn)到哪個(gè)子函while(decide!=n)printfC*W).printf(M*1遍歷2學(xué)號(hào)查找3科目查找4退出*nn);pnntf(M*打).scanf(H%cl,&num);switch(num)case1:StuSelectErg(head);break;voidStuIiiput(Student*head)學(xué)生成績(jī)管理系統(tǒng)的輸入函數(shù),由主函數(shù)調(diào)用case2:StuSelectNuniFmd(head);break;case3:StuSelectSubFind(head);break;default:decide=,n,;

17、break;voidStuSelectEig(Student*head)學(xué)生成績(jī)管理系統(tǒng)的遍歷函數(shù),由查找函數(shù)調(diào)用Student*p=(Student*)inalloc(sizeof(Student);p=head-next;iiiti=l;while(p!=NULL)pnntf(M%d位學(xué)生信息:iri);StuOxitput(p);p=p-next;1+;voidStuSelectNuniFind(Student*head)學(xué)生成績(jī)管理系統(tǒng)的查找子系統(tǒng),有查找函數(shù)調(diào)用intnum;pnntf(”輸入想要查找學(xué)生的學(xué)生號(hào):5”);scanf(H%d,&num);Student*p=(Stud

18、ent*)inalloc(sizeof(Student);p=head-next;iiiti=l;while(p!=NULL)if(num=p-num)StuOxitput(p);1+;p=p-next;lf(l=l)pnntf(“沒(méi)有該學(xué)生信息”);voidStuIiiput(Student*head)學(xué)生成績(jī)管理系統(tǒng)的輸入函數(shù),由主函數(shù)調(diào)用voidStuSelectSubFmd(Student*head)學(xué)生成績(jī)管理系統(tǒng)的按科目查找函數(shù),由查找函數(shù)調(diào)用cliarSub10;phntf(”輸入想要查找科目:scanff%sSSub);Student*p=(Student*)inalloc(s

19、izeof(Student);p=head-next;mti=l;while(p!=NULL)if(!strcmp(Sub,p-subject)StuOxitput(p);1+;p=p-next;lf(l=l)pnmf(”沒(méi)有該學(xué)生信息”);voidStuAlter(Student*head)學(xué)生成績(jī)管理系統(tǒng)的修改函數(shù),由主函數(shù)調(diào)用intnum;pnntf(”輸入想要查找學(xué)生的學(xué)生號(hào):5”);scanf(H%d,&num);chaiSub10;phntf(”輸入想要查找科目:scanff%sSSub);Student*p=(Student*)inalloc(sizeof(Student);p=

20、head-next;mti=l;while(p!=NULL)if(num=p-num&!sticmp(Sub.p-subject)輸入修改成績(jī):n”);scanfC%d”,&pgnide);pmitf(”修改成功5”);i+;p=p-next;if(i=l)voidStuIiiput(Student*head)學(xué)生成績(jī)管理系統(tǒng)的輸入函數(shù),由主函數(shù)調(diào)用voidStuIiiput(Student*head)學(xué)生成績(jī)管理系統(tǒng)的輸入函數(shù),由主函數(shù)調(diào)用prmtfC-沒(méi)有該學(xué)生信息”);voidStiiIiisert(Student*head)學(xué)生成績(jī)管理系統(tǒng)的插入函數(shù),由主函數(shù)調(diào)用Student*pom

21、t=(Student*)malloc(sizeof(Student);pomt=head-next;while(pomt-next=NULL)pomt=pouit-next;找到尾結(jié)點(diǎn)chardecide=V;定義wlule變量,函數(shù)是否繼續(xù)進(jìn)行mtnum;定義switch變量,函數(shù)跳轉(zhuǎn)到哪個(gè)子函數(shù)wliile(decide!=n,)pnntffprmtf(nprmtf(nscanf(”d役&num);*-*i頭插2尾插3退出*ir);*恤”)Student*p=(Student*)malloc(sizeof(Student);switch(num)case1:Stulinpoit(head,p);p-next=head-next;headnext=p;pmitf(”插入成功5”);break;case2:Stulinpoit(head,p);pomt-next=p;p-next=NULL;pmitf(”插入成功5”);break;default:decide=,n,;break;voidStuDelect(Smdent*head)學(xué)生成績(jī)管理系統(tǒng)的刪除函數(shù),由主函數(shù)調(diào)用intnum;pnntff輸

溫馨提示

  • 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)論