




已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
二一二二一三學(xué)年第二學(xué)期信息科學(xué)與工程學(xué)院面向?qū)ο驝+語(yǔ)言課程設(shè)計(jì)報(bào)告課程名稱: 面向?qū)ο驝+語(yǔ)言課程設(shè)計(jì) 目 錄1.需求分析32.總體設(shè)計(jì)43.詳細(xì)設(shè)計(jì)54.調(diào)試測(cè)驗(yàn)65.測(cè)試結(jié)果66.心得體會(huì)127.相關(guān)附錄13.需求分析(1)問題描述:設(shè)計(jì)一個(gè)學(xué)生信息管理系統(tǒng),能錄入、修改、添加、刪除、查詢、顯示學(xué)生信息。并將學(xué)生信息在文件中保存。(2)應(yīng)用價(jià)值:能作為一個(gè)有效管理學(xué)生信息的系統(tǒng)??梢詢?chǔ)存學(xué)生的姓名、學(xué)號(hào)、性別、年齡、住址、各科成績(jī)。這在現(xiàn)實(shí)中對(duì)學(xué)生信息的管理也有極其重要的應(yīng)用價(jià)值??梢杂行У谋4鎸W(xué)生信息,應(yīng)用于教務(wù)管理。(3)限制條件:因?yàn)閯偨佑|C語(yǔ)言不到,兩個(gè)學(xué)期。所以所做程序難免會(huì)有一些瑕疵。在次列舉其中的一些限制條件。我所設(shè)置的錄入學(xué)生信息的函數(shù)必須由學(xué)號(hào)由小到大錄入,這是為了配合后面的修改、添加、刪除查詢功能。因?yàn)楹竺鎺讉€(gè)功能實(shí)現(xiàn)的方法就是由學(xué)號(hào)從小到達(dá)找所要修改的那一個(gè)結(jié)點(diǎn)。另一個(gè)問題就是學(xué)號(hào)的首位不可以為零,否則的話就無法顯示首位。對(duì)于這一問題,我還沒有想到更好的解決方法。不過在現(xiàn)實(shí)應(yīng)用中,很少出現(xiàn)學(xué)號(hào)首位為零的情況。因此也就不會(huì)太影響使用價(jià)值。最后一個(gè)問題,就是如果輸入的數(shù)據(jù)類型與定義的不符,就可能引起系統(tǒng)崩潰。因此,用戶在錄入信息時(shí)應(yīng)特別注意數(shù)據(jù)類別??傮w設(shè)計(jì)(1) 程序設(shè)計(jì)組成框圖1、輸入學(xué)生的信息:姓名、性別、學(xué)號(hào)、地址、成績(jī)4、輸入要?jiǎng)h除的學(xué)生的學(xué)號(hào),刪除學(xué)生信息 菜單1. 輸入學(xué)生信息2. 插入學(xué)生信息3. 修改學(xué)生信息4. 刪除學(xué)生信息5. 顯示學(xué)生信息6. 查詢學(xué)生信息7. 退出5、顯示學(xué)生的姓名、性別、學(xué)號(hào)、地址、成績(jī)2、輸入要插入學(xué)生的學(xué)號(hào),填加信息6、輸入你要查找學(xué)生姓名或?qū)W號(hào),修改學(xué)生信息3、按學(xué)生的學(xué)號(hào)或姓名來修改學(xué)生的相關(guān)信息7、退出系統(tǒng)學(xué)生信息管理系統(tǒng)功能模塊圖(2) 流程圖開 始輸入學(xué)生信息息生生信息修 改插 入刪 除查 詢退 出顯示結(jié) 束詳細(xì)設(shè)計(jì)函數(shù)功能student *creat(void)用于創(chuàng)建鏈表,不需要參數(shù),返回鏈表頭指針,在輸入學(xué)生信息時(shí)調(diào)用。student *del(student*,long)用于刪除結(jié)點(diǎn),參數(shù)為頭指針及要?jiǎng)h除學(xué)生的學(xué)號(hào),返回頭指針。在刪除學(xué)生信息時(shí)調(diào)用。 student *insert(student *,student *)用于插入結(jié)點(diǎn),參數(shù)為頭指針及類的指針,返回頭指針。插入學(xué)生信息時(shí)調(diào)用。student *correct_num(student *,long)用于修改結(jié)點(diǎn),參數(shù)為頭指針及學(xué)號(hào),返回頭指針。按學(xué)號(hào)修改學(xué)生信息時(shí)調(diào)用。student *correct_nam(student *,string)按姓名修改學(xué)生信息時(shí)調(diào)用。student *search_num(student *,long)用于查找結(jié)點(diǎn),參數(shù)為頭指針及學(xué)號(hào),返回頭指針。按學(xué)號(hào)查找學(xué)生信息時(shí)調(diào)用。student *search_nam(student *,string) 用于查找結(jié)點(diǎn),參數(shù)為頭指針及學(xué)號(hào),返回頭指針。按姓名查找學(xué)生信息時(shí)調(diào)用。int save(student *head)用于將指針數(shù)據(jù)存放到文件中。 void print(student*)參數(shù)為頭指針,用于輸出各結(jié)點(diǎn)數(shù)據(jù)。調(diào)試測(cè)驗(yàn)通過輸入學(xué)生信息,再修改、刪除、添加、查詢,最后輸出。檢查是否滿足預(yù)期結(jié)果,不滿足則重新完善。過程中也遇到許多問題。其中之一就是在執(zhí)行查詢、添加等功能是出現(xiàn)程序停止工作的情況。最后才發(fā)現(xiàn)在進(jìn)行判斷時(shí),將head=NULL誤輸為head=NULL,將鏈表轉(zhuǎn)化為了空鏈表,當(dāng)然無法工作啦。在其他細(xì)節(jié)方面,也出現(xiàn)了類似的錯(cuò)誤。因此,編程要特別仔細(xì),一個(gè)小小的錯(cuò)誤,都可能使整個(gè)程序毀于一旦。測(cè)試結(jié)果(1)首頁(yè)(2)輸入非選項(xiàng)中的的數(shù)字(3)錄入信息(4)插入信息(5)顯示信息(6)刪除信息(7)修改信息(8)查詢信息(9)查詢學(xué)生學(xué)號(hào)不存在時(shí)(10)顯示信息(11)退出系統(tǒng)心得體會(huì)耗時(shí)將近兩周的C+程序設(shè)計(jì)即將畫上句號(hào)。這也是我接觸過的最復(fù)雜的程序。要想一步完成如此繁瑣的程序是不可能的。因此必須有合理的規(guī)劃,列出框架。再分別用函數(shù)來實(shí)現(xiàn)各個(gè)功能。然后就是細(xì)化的工作,要分別設(shè)計(jì)各個(gè)函數(shù),這也是最關(guān)鍵的一步。既要注意各個(gè)函數(shù)的獨(dú)立性,又要注意他們之間的關(guān)系和在整個(gè)程序中的作用。最后將各不分有機(jī)結(jié)合為宜各整體。再通過不斷的調(diào)試、完善,最后達(dá)到預(yù)期的效果。當(dāng)然,最困難的部分就是修改。面對(duì)一個(gè)個(gè)問題,你需要不斷的檢查,在繁雜的程序中發(fā)現(xiàn)那一個(gè)錯(cuò)誤。這過程雖然是困難的,必須非常仔細(xì),絞盡腦汁想各種錯(cuò)誤的原因,最后解決問題。當(dāng)問題被解決的那一刻,心中會(huì)由然而生出一種成就感。這也是程序設(shè)計(jì)帶給我的快樂。在今后的學(xué)習(xí)生活中,我將投入更多時(shí)間到C+程序設(shè)計(jì)中,這樣設(shè)計(jì)程序?qū)?huì)更加得心應(yīng)手。程序設(shè)計(jì)就是這樣一門神奇的課程,只有勤于思考,刻苦鉆研,勇于創(chuàng)新才能,才能設(shè)計(jì)出滿意的程序。相關(guān)附錄#include #include#include#includeusing namespace std;#define NULL 0class student /定義類public: long num; char name20; int age; char sex20; char address30; float computer_score; float math_score; float English_score; student *next;int n;/定義主函數(shù)int main()student *creat(void); student *del(student*,long); student *insert(student *,student *); student *correct_num(student *,long); student *correct_nam(student *,string); student *search_num(student *,long); student *search_nam(student *,string); int save(student *head); void print(student*); student *head=NULL,*stu; long del_numb,correct_numb,search_numb; int choose,a; string search_name,correct_name; start:cout* 學(xué) 生 信 息 管 理 系 統(tǒng) * endl;/ goto指向的位置 cout* * endl; cout* 1.輸入學(xué)生信息 *endl; cout* 2.插入學(xué)生信息 *endl; cout* 3.修改學(xué)生信息 *endl; cout* 4.刪除學(xué)生信息 *endl; cout* 5.顯示學(xué)生信息 *endl; cout* 6.查詢學(xué)生信息 *endl; cout* 7.退出 *endl; cout 請(qǐng)輸入您的選擇(1-7):choose; switch(choose) /選擇結(jié)構(gòu),選擇要進(jìn)行的操作 case 1: system(cls); /系統(tǒng)清屏 cout輸入學(xué)生信息:endl; head=creat();/調(diào)用函數(shù),建立鏈表 system(cls); goto start;/返回目錄 break; case 2: system(cls); coutendl輸入要插入的學(xué)生信息:; stu=new student; /新建結(jié)點(diǎn) coutstu-num; coutstu-name; coutstu-age; coutstu-sex; coutstu-address; coutstu-computer_score; coutstu-math_score; coutstu-English_score; while(stu-num!=0) /結(jié)點(diǎn)學(xué)號(hào)不為空時(shí)插入 head=insert(head,stu);/調(diào)用函數(shù),插入結(jié)點(diǎn) save(head);/將數(shù)據(jù)儲(chǔ)存在文件中 coutendl輸入要繼續(xù)插入的學(xué)生信息:; stu=new student; coutstu-num; /輸入結(jié)點(diǎn)相關(guān)信息 coutstu-name; coutstu-age; coutstu-sex; coutstu-address; coutstu-computer_score; coutstu-math_score; coutstu-English_score; system(cls); goto start; break; case 3: system(cls); coutendl輸入要修改信息學(xué)生的學(xué)號(hào)/姓endl; cout按學(xué)號(hào)查詢輸入1,姓名查詢輸入a;if(a=1) coutendlcorrect_numb ;head=correct_num(head,correct_numb); /按學(xué)號(hào)修改學(xué)生信息 save(head); if(a=2)coutendlcorrect_name; head=correct_nam(head,correct_name);/ 按姓名修改學(xué)生信息 save(head); system(cls); goto start; break; case 4: system(cls); coutendldel_numb; while(del_numb!=0) head=del(head,del_numb); save(head); coutdel_numb; system(cls); goto start; break; case 5: system(cls); cout學(xué)生信息如下:endl; system(cls); print(head); system(pause);/運(yùn)行停在當(dāng)前頁(yè)面 system(cls); goto start; break; case 6: system(cls); coutendl輸入要查詢信息學(xué)生的學(xué)號(hào)/姓名:endl; cout按學(xué)號(hào)查詢輸入1,姓名查詢輸入2:a; system(cls); if(a=1) coutendlsearch_numb; head=search_num(head,search_numb);/調(diào)用按學(xué)號(hào)查詢函數(shù) if(a=2)coutendlsearch_name; head=search_nam(head,search_name); /按姓名查詢學(xué)生信息 system(pause); system(cls); goto start; break; case 7: system(cls); cout按任意鍵退出程序!; exit(0);break;/調(diào)用系統(tǒng)函數(shù)exit,運(yùn)行結(jié)束 default:coutendl請(qǐng)重新選擇1-7中的數(shù)字!;/輸入非選項(xiàng)數(shù)字時(shí),返回主菜單 system(pause); system(cls); goto start; break; return 0; /創(chuàng)建鏈表的函數(shù) student *creat(void) ofstream outfile(f1.dat,ios:out);/打開文件 if(!outfile) cerr打開失敗endl; exit(0); student *head; student *p1,*p2; n=0; p1=p2=new student;/新建對(duì)象 coutp1-num; outfilenum ; /將數(shù)據(jù)存入文件 coutp1-name; outfilename ; coutp1-age; outfileage ; coutp1-sex; outfilesex ; coutp1-address; outfileaddress ; coutp1-computer_score; outfilecomputer_score ; coutp1-math_score; outfilemath_score ; coutp1-English_score; outfileEnglish_scorenum!=0) n=n+1; if(n=1) head=p1; else p2-next=p1;/p1指向下一個(gè)結(jié)點(diǎn) p2=p1; p1=new student; coutp1-num; outfilenum ; coutp1-name; outfilename ; coutp1-age; outfileage ; coutp1-sex; outfilesex ; coutp1-address; outfileaddress ; coutp1-computer_score; outfilecomputer_score ; coutp1-math_score; outfilemath_score ; coutp1-English_score; outfileEnglish_scorenext=NULL; outfile.close();/關(guān)閉文件 return(head); /保存文件的函數(shù) int save(student *head) ofstream outfile(f1.dat,ios:out); if(!outfile) cerr打開文件出錯(cuò)!endl; exit(0); student *p1=head,*p2; if(head=NULL) cout列表為空!endl;return 0; dooutfilenum name age sex address computer_score math_score English_score;/將鏈表數(shù)據(jù)存入文件 p2=p1;p1=p1-next; while(p2-next!=NULL); outfile.close(); return 0; /刪除數(shù)據(jù)的函數(shù) student *del(student *head,long num) student *p1,*p2; if(head=NULL) cout列表為空!num&p1-next!=NULL)/按學(xué)號(hào)從小到大查找 p2=p1;p1=p1-next; if(num=p1-num) if(p1=head)head=p1-next;/如果找到 else p2-next=p1-next; cout刪除的學(xué)號(hào):numendl; n=n-1; else cout不能找到此學(xué)號(hào)的學(xué)生:next=NULL; else while(p0-nump1-num)&(p1-next!=NULL) p2=p1; p1=p1-next; if(p0-numnum) if(head=p1)head=p0;/p1學(xué)號(hào)最小,則作為頭指針 else p2-next=p0;/否則插入中間 p0-next=p1; else p1-next=p0;p0-next=NULL;/如果最大,則放在最后 n=n+1;/記錄結(jié)點(diǎn)數(shù) return(head); /按學(xué)號(hào)修改學(xué)生信息的函數(shù) student *correct_num(student *head,long num) student *p; if(head=NULL) cout列表為空!num&p-next!=NULL) p=p-next; if(num=p-num)/遭到后重新錄入學(xué)生的信息 coutp-num; coutp-name; coutp-age; coutp-sex; coutp-address; coutp-computer_score; coutp-math_score; coutp-English_score; else cout不能找到此學(xué)號(hào)的學(xué)生:num; return(head); /按姓名修改學(xué)生信息的函數(shù) student *correct_nam(student*head,string name) student *p; if(head=NULL) cout列表為空!name&p-next!=NULL) p=p-next; if(p-name=name) coutendl請(qǐng)重新輸入此學(xué)生的信息; coutp-num; coutp-name; coutp-age; coutp-sex; coutp-address; coutp-computer_score; coutp-math_score; coutp-English_score; else cout不能找到此學(xué)號(hào)的學(xué)生:name; return(head); /按學(xué)號(hào)查詢學(xué)生信息的函數(shù)student *search_num(student *head,long num) student *p; if(head=NULL) cout列表為空!num&p-next!=NULL) p=p-next; if(num=p-num) /找到后輸出學(xué)生信息 cout學(xué)生的學(xué)號(hào):; coutnumendl; cout學(xué)生的姓名: ; coutnameendl; cout學(xué)生的年齡:; coutageendl; cout學(xué)生的性別: ; coutsexendl; cout學(xué)生的住址: ; coutaddressendl; cout學(xué)生的電腦成績(jī): ; coutcomputer_scoreendl; cout學(xué)生的數(shù)學(xué)成績(jī): ; coutmath_scoreendl; cout學(xué)生的英語(yǔ)成績(jī): ; coutEnglish_scoreendl; else cout不能找到此學(xué)號(hào)的學(xué)生:num; return(head);/按姓名查詢學(xué)生信息的函數(shù) student *search_nam(student *head,string name) stud
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 船舶拆除作業(yè)的現(xiàn)場(chǎng)布置考核試卷
- 航天器空間站空間機(jī)械臂維修技術(shù)考核試卷
- 葡萄酒釀造過程中的釀造產(chǎn)業(yè)鏈整合與創(chuàng)新實(shí)踐探討考核試卷
- 皮革表面處理技術(shù)與工藝考核試卷
- 證券市場(chǎng)私募基金管理考核試卷
- 貨幣經(jīng)紀(jì)公司市場(chǎng)趨勢(shì)分析能力測(cè)試考核試卷
- 療養(yǎng)院護(hù)理信息化安全管理考核試卷
- 裝飾裝修工程中的合同履行與爭(zhēng)議解決考核試卷
- 肺炎個(gè)案護(hù)理模板
- 網(wǎng)絡(luò)信息安全防護(hù)與應(yīng)急響應(yīng)協(xié)議
- 2024年化工自動(dòng)化控制儀表理論考試題及答案
- 砂石料供應(yīng)、運(yùn)輸、售后服務(wù)方案-1
- 職業(yè)生涯規(guī)劃與求職就業(yè)指導(dǎo)智慧樹知到課后章節(jié)答案2023年下中南大學(xué)
- 辦理用電戶更名過戶聲明書范本
- 建設(shè)工程質(zhì)量管理手冊(cè)范本
- 中國(guó)文化遺產(chǎn)資料長(zhǎng)城100字
- 高中生物選擇性必修1基礎(chǔ)背誦 課件
- 2023-2024學(xué)年貴州省六盤水市小學(xué)語(yǔ)文六年級(jí)期末提升測(cè)試題詳細(xì)參考答案解析
- 江蘇南通軌道交通集團(tuán)有限公司運(yùn)營(yíng)分公司社會(huì)招聘工作人員考試真題及答案2022
- 人工智能時(shí)代小學(xué)勞動(dòng)教育的現(xiàn)實(shí)困境與突破路徑 論文
- 野生動(dòng)物管理學(xué)智慧樹知到答案章節(jié)測(cè)試2023年?yáng)|北林業(yè)大學(xué)
評(píng)論
0/150
提交評(píng)論