版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、學(xué)生成績管理系統(tǒng)一、實驗?zāi)康?. 通過此次課程設(shè)計中學(xué)生成績管理系統(tǒng)的題目,掌握鏈表等數(shù)據(jù)結(jié)構(gòu)的基 本操作方面的知識,并能靈活的解決一些基本的問題,加深對其性質(zhì)及各項操作的 理解;2. 將所學(xué)數(shù)據(jù)結(jié)構(gòu)方面的知識與一門具體的語言一一C語言來進(jìn)行實現(xiàn), 感受數(shù)據(jù)結(jié)構(gòu)的強(qiáng)大作用,加深理解。二、試驗要求管理系統(tǒng)中有五個要求:輸入查找修改插入刪除存儲(1) 輸入要求:能夠通過鍵盤輸入和文件輸入兩種(2) 查找要求:能夠根據(jù)學(xué)生號查找單個學(xué)生的信息,也可以遍歷所有學(xué)生信息(3) 修改要求:能夠根據(jù)學(xué)生號修改單個學(xué)生所有信息(4) 插入要求:能夠?qū)崿F(xiàn)頭插和尾插(5) 刪除要求:能夠根據(jù)學(xué)生號刪除單個學(xué)生信息
2、(6) 存儲要求:通過鏈表存儲所有信息三、算法的思想與算法實現(xiàn)步驟1 基本思想 通過鏈表數(shù)據(jù)類型進(jìn)行基本操作,主要有三個模塊:分別是主函數(shù)模 塊、主要操作函數(shù)及基本操作函數(shù)。其中,主函數(shù)負(fù)責(zé)其他子函數(shù)的調(diào)用實現(xiàn)以及基本界面的操作 主要函數(shù)包括:void Stulnput (Student *); 學(xué)生成績管理系統(tǒng)的輸入函數(shù),由主函數(shù)調(diào)用void StuSelect (Student *); 學(xué)生成績管理系統(tǒng)的查找函數(shù),由主函數(shù)調(diào)用void StuAlter(Student *);/學(xué)生成績管理系統(tǒng)的修改函數(shù),由主函數(shù)調(diào)用void Stulnsert(Student *); /學(xué)生成績管理系統(tǒng)的
3、插入函數(shù),由主函數(shù)調(diào)用void StuDelect(Student *); /學(xué)生成績管理系統(tǒng)的刪除函數(shù),由主函數(shù)調(diào)用void StuSave(Student *); /學(xué)生成績管理系統(tǒng)的存儲函數(shù),由主函數(shù)調(diào)用基本操作函數(shù):void StuOutput(Student *p);/ 輸出函數(shù)int Stulmport(Student *head,Student *p); / 輸入函數(shù)void StulnputHand(Student *head); /學(xué)生成績管理系統(tǒng)的手動輸入函數(shù),由輸入函數(shù)調(diào)用void StulnputFile(Student *head); /學(xué)生成績管理系統(tǒng)的文件輸入函數(shù)
4、,由輸入函數(shù)調(diào)用void StuSelectErg(Student *head); /學(xué)生成績管理系統(tǒng)的遍歷函數(shù),由查找函數(shù)調(diào)用void StuSelectNumFind(Student *head); /學(xué)生成績管理系統(tǒng)的按學(xué)號查找函數(shù),由查找函 數(shù)調(diào) 用void StuSelectSubFind(Student *head); /學(xué)生成績管理系統(tǒng)的按科目查找函數(shù),由查找函數(shù) 調(diào) 用2.實現(xiàn)步驟首先,分析題目要求劃分實現(xiàn)模塊,定義基本數(shù)據(jù)類型,諸如結(jié)構(gòu)體、鏈表等;其次,針對上述的基本操作實現(xiàn)具體需要進(jìn)行的操作,具體實現(xiàn)每個環(huán)節(jié)需要進(jìn)行的基本操作,即具體編寫每個小函數(shù)實現(xiàn)功能;最后,編寫主函數(shù)
5、對每個實現(xiàn)進(jìn)行按需調(diào)用,實現(xiàn)操作。3. 流程圖四. 代碼:#in clude#in clude#in clude struct Stude nt char n ame10;char subject10;int num;int grade;Stude nt *n ext;void StuMain();學(xué)生成績管理系統(tǒng)的主函數(shù),由 main函數(shù)調(diào)用 void Stulnput(Student *); 學(xué)生成績管理系統(tǒng)的輸入函數(shù),由主函數(shù)調(diào)用void StuSelect(Student *); 學(xué)生成績管理系統(tǒng)的查找函數(shù),由主函數(shù)調(diào)用void StuAlter(Student J;/學(xué)生成績管理系統(tǒng)
6、的修改函數(shù),由主函數(shù)調(diào)用void Stulnsert(Student *);/學(xué)生成績管理系 統(tǒng)的插入函數(shù),由主函數(shù)調(diào)用void StuDelect(Student *); 學(xué)生成績管理系統(tǒng)的刪除函數(shù),由 主函數(shù)調(diào)用void StuSave(Student *); 學(xué)生成績管理系統(tǒng)的存儲函數(shù),由主函數(shù)調(diào)用void StuOutput(Student *p);/ 輸出函數(shù)int Stulmport(Student *head,Student *p); / 輸入函數(shù)void StuOutput(Student *p) /打印函數(shù),將鏈表的該節(jié)點信息輸出printf(” 學(xué)生姓名:”);printf
7、(%s ,p-name);printf(n 學(xué)生號:”);printf(*%d ,p-num);printf(科目:”);printf(%s *,p-subject);printf(” 學(xué)生成績:”);printf(”d n”,pgrade);int Stulmport(Student *head,Student *p)(Student *Opinion=(Student *)malloc(sizeof(Student);/ 用來判斷輸入節(jié)點中學(xué)生號是否有重復(fù)Opinion=head-n ext;printf(學(xué)生姓名:nH); scanf(”s”,pname);printf(” 學(xué)生號:n)
8、; scanf(%d,&p-num);printf(科目:n); scanf(%s,p-subject);if(Opinion!=NULL)num=pnum&!strcmp(Opinionsubject,psubject) grade);return 0;void main()StuMain();void StuMain()char decide=y;int num=1;子函數(shù)Student *head;head=(Student *)malloc(sizeof(Student); head-next=NULL;定義while變量,函數(shù)是否繼續(xù)進(jìn)行 定義switch變量,函數(shù)跳轉(zhuǎn)到哪 個定義鏈
9、表的頭指針/給頭指針開辟空間可編輯范本while(decide!=n)printf(H*nM);*printf(,f1輸入2查找3修改4插入*printf(f,5刪除6存儲7退出nn);printf(Hit*nn);scanf(”cr,&num);switch( num)case 1:Stulnput(head); break;case 2:StuSelect(head); break;case 3:StuAlter(head); break;case 4:Stu Insert(head); break;case 5:StuDelect(head); break;case 6:StuSave(
10、head); break;default:decide= rf;break;void StulnputHand(Student *head); /學(xué)生成績管理系統(tǒng)的手動輸入函數(shù),由輸入函數(shù)調(diào)用void StulnputFile(Student *head); /學(xué)生成績管理系統(tǒng)的文件輸入函數(shù),由輸入函數(shù)調(diào)用(printf(M itprintf(uprintf(H1手動輸入2文件輸入3退出 it*void Stulnput(Student *head)(學(xué)生成績管理系統(tǒng)的輸入函數(shù),由主函數(shù)調(diào)用char decide=y; int num;函數(shù)定義while變量,函數(shù)是否繼續(xù)進(jìn)行定義switch變
11、量,函數(shù)跳轉(zhuǎn)到哪個子while(decide!=nf)scanf(”d”,&num);switch( num)case 1:StulnputHand(head); break;case 2:StulnputFile(head);default:deciderf;break;void StulnputHand(Student *head) /學(xué)生成績管理系統(tǒng)的手動輸入函數(shù),由輸入函數(shù)調(diào)用next=NULL)(Student *point=(Student *)malloc(sizeof(Student); / 鏈表中最后一個 節(jié)點,只在該 函數(shù)中存在point-next=NULL;int dec
12、ide=1;while(decide!=O)Student *p=(Student *)malloc(sizeof(Student); p-next=NULL;Stulmport(head5p); if(head-next=NULL)(head-next=p; point=p;)elsenext=p; point=p;printf(K 是否繼續(xù):1/0nM);scanf(%d,&decide);elseprintf(”管理系統(tǒng)中已存在信息,若想輸入學(xué)生信息,請轉(zhuǎn)插入子系統(tǒng)”);void StulnputFile(Student *head) /學(xué)生成績管理系統(tǒng)的文件輸入函數(shù),由輸入函數(shù)調(diào)用(i
13、f(head-next!=NULL)(printf(-學(xué)生管理系統(tǒng)中已有信息,請?zhí)D(zhuǎn)到插入選項n):return ;FILE *fp;printfC*請輸入文件名(包括物理地址)n”);char filename10;scanf(n%s,filename);if(fp=fopen(filename,r)=NULL)(printf(Hcan not open filerY);return;Student *point=(Student *)malloc(sizeof(Student);Student *Opinion=(Student *)malloc(sizeof(Student);/ 用來判
14、斷輸入節(jié)點中學(xué)生號是否有重復(fù)while(!feof(fp) Opin ion=head-n ext;Student *p=(Student *)malloc(sizeof(Student); p-next=NULL;fread(p,sizeof(Stude nt),1 ,fp);if(Opi nion!=NULL)可編輯范本if(Opinion- num=p- num&!strcmp(Opi nion-subject,p-subject) (printf(-該文件中有重復(fù)學(xué)生信息,請驗明再傳輸n-);head- next=NULL;return ;Opinion=Opin ion-next;
15、if (head-next=N U LL)head-n ext=p;poin t=p;)elsepoint- next=p;poin t=p;);Opinion=head-n ext;while(Opinion-next!=NULL)Opinion=Opinionn ext;if(Opinion-next-next=NULL) Opinion-next=NULL;;fclose(fp);printf(u 傳輸成功 nn);void StuSelectErg(Student *head); /學(xué)生成績管理系統(tǒng)的遍歷函數(shù),由查找函數(shù)調(diào)用void StuSelectNumFind(Student *
16、head); /學(xué)生成績管理系統(tǒng)的按學(xué)號查找函數(shù),由查找函 數(shù)調(diào) 用void StuSelectSubFind(Student *head); /學(xué)生成績管理系統(tǒng)的按科目查找函數(shù),由查找函數(shù) 調(diào) 用void StuSelect(Student *head) /學(xué)生成績管理系統(tǒng)的查找函數(shù),由主函數(shù)調(diào)用定義while變量,函數(shù)是否繼續(xù)進(jìn)行 char decide-/; int num;定義switch變量,函數(shù)跳轉(zhuǎn)到哪個子函數(shù)while(decide!=n)( it*.、printf(n*nH);printf(Hprintff* scanf(” d”,&num);遍歷2學(xué)號查找3科目查找4退出*n
17、n);*pfl switch(num)(case 1:StuSelectErg(head); break;case 2:StuSelectNumFind(head); break;case 3:StuSelectSubFind(head); break;default:decide=n,;break;void StuSelectErg(Student *head) /學(xué)生成績管理系統(tǒng)的遍歷函數(shù),由查找函數(shù)調(diào)用(Student *p=(Student *)malloc(sizeof(Student); p=head-next;int i=1;while(p!=NULL)(printf(M第%d位
18、學(xué)生信息:n;i);StuOutput(p); p=p-next; i+;void StuSelectNumFind(Student *head) /學(xué)生成績管理系統(tǒng)的查找子系統(tǒng),有查找函數(shù)調(diào)用( int num;printf(”輸入想要查找學(xué)生的學(xué)生號:n”); scanf(H%dH,&num);Student *p=(Student *)malloc(sizeof(Student); p=head-next;int i=1;while(p!=NULL)if(nu m=p-num)StuOutput(p);i+;p=p-next;if(i=1)printf(“沒有該學(xué)生信息”);void S
19、tuSelectSubFind(Student *head) /學(xué)生成績管理系統(tǒng)的按科目查找函數(shù),由查找函數(shù) 調(diào) 用(char Sub10;printf(輸入想要查找科目:n);scanf(n%s,Sub);Student *p=(Student *)malloc(sizeof(Student); p=head-next;int i=1;while(p!=NULL)(if(!strcmp(Sub,p-subject)StuOutput(p);i+;p=p-next;if(i=1)printf(”沒有該學(xué)生信息”);void StuAlter(Student *head) /學(xué)生成績管理系統(tǒng)的修
20、改函數(shù),由主函數(shù)調(diào)用(int num;printfC*輸入想要查找學(xué)生的學(xué)生號:n”);scanf(” d”,&num);char Sub10;printf(輸入想要查找科目:nH);scanf(%s,Sub);Student *p=(Student *)malloc(sizeof(Student); p=head-next;int i=1;while(p!=NULL)if(num=p-num&!strcmp(Sub,p-subject)可編輯范本printf(H 輸入修改成績:n); scanf(H%d,&p-grade); printf(修改成功 n“); i+;p=p-n ext;if(
21、i=1) printff沒有該學(xué)生信息“);void Stulnsert(Student *head) /學(xué)生成績管理系統(tǒng)的插入函數(shù),由主函數(shù)調(diào)用Student *point=(Student *)malloc(sizeof(Student);poin t=head-n ext;while(point-next!=NULL)point=point-next; / 找到尾結(jié)點char decide=y; /定義while變量,函數(shù)是否繼續(xù)進(jìn)行int num;/定義switch變量,函數(shù)跳轉(zhuǎn)到哪個子函數(shù)while(decide!=n)printf(,f*n );printf(n * 1 頭插 2
22、尾插3 退出 *nn);printf(”scanf(,f%dH,&num);Student *p=(Student *)malloc(sizeof(Student);switch( num) case 1:Stulmport(head,p); pnext=head-next; head-next=p; printf(M 插入成功nH); break;case 2:Stulmport(head,p); point-next=p; p-next=NULL; printf(M 插入成 功 nn); break;default:deciderf; break;)void StuDelect(Student *head) /學(xué)生成績管理系統(tǒng)的刪除函數(shù),由主函數(shù)調(diào)用int num;printf(輸入想要刪除學(xué)生的學(xué)生號:n”);scanf(” d”,&num);char Sub10
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《電工基礎(chǔ)與技能訓(xùn)練》課件-第四章 交流電路的分析-劉鑫尚
- 圖書轉(zhuǎn)庫服務(wù)合同
- 《第九章9.1-9》課件.2-9.2新一代人工智能發(fā)展趨勢
- 2025年榆林貨運從業(yè)資格證考試試題及答案
- 2025年西雙版納怎么考貨運從業(yè)資格證
- 2025年西寧貨運從業(yè)資格證考試答案
- 2025年呂梁貨運資格證安檢考試題
- 環(huán)保工程合伙施工協(xié)議合同
- 客戶反饋處理辦法
- 合同部技術(shù)創(chuàng)新計劃
- 接地裝置試驗作業(yè)指導(dǎo)書
- 手術(shù)通知單模板
- 網(wǎng)絡(luò)拓?fù)鋱D常用圖標(biāo)新版
- 《互聯(lián)網(wǎng)金融》試題A及參考答案
- artcam2008軟件及使用artcam的安裝和破解
- 企業(yè)微信的使用培訓(xùn)
- 普外科專科護(hù)理規(guī)范及標(biāo)準(zhǔn)
- UML學(xué)生成績管理系統(tǒng)
- CA6132普通車床使用說明書
- 工程交工驗收會議監(jiān)理發(fā)言
- 電力工程項目管理中的溝通與協(xié)調(diào)
評論
0/150
提交評論