




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)報(bào)告一、 問(wèn)題陳述及其需求分析(一) 問(wèn)題陳述學(xué)生信息管理系統(tǒng)是對(duì)學(xué)生信息的基本管理,其中包括以下及模塊:(1)增加一個(gè)學(xué)生的信息(需輸入要增加學(xué)生的所有信息);(2)統(tǒng)計(jì)本班學(xué)生總?cè)藬?shù)及男女生人數(shù)。(3)分別按照學(xué)號(hào)查找學(xué)生的信息;若找到則輸出該學(xué)生全部信息,否則輸出查找不到的提示信息。(4)按學(xué)號(hào)對(duì)所有學(xué)生信息排序,并輸出結(jié)果;(5)刪除一個(gè)學(xué)生的信息(需指定要?jiǎng)h除學(xué)生的學(xué)號(hào));同時(shí)顯示刪除后的結(jié)果。( 二 ) 功能需求分析 學(xué)生信息管理系統(tǒng)設(shè)計(jì)學(xué)生信息包括:學(xué)號(hào),姓名,性別,出生年月,電話使之提供以下功能:1、 系統(tǒng)以菜單方式工作2、建立鏈表并顯示3、插入新的學(xué)生信息4、刪除某學(xué)號(hào)的
2、學(xué)生信息5、查找某學(xué)號(hào)的學(xué)生信息6、對(duì)學(xué)生信息排序7、統(tǒng)計(jì)學(xué)生人數(shù)8、輸出學(xué)生信息二 總體設(shè)計(jì)(一)模塊 依據(jù)程序的數(shù)據(jù)結(jié)構(gòu),描述該程序的層次結(jié)構(gòu),如下圖:1建立鏈表并顯示2添加學(xué)生信息3刪除學(xué)生信息息4按學(xué)號(hào)查找學(xué)生信息5對(duì)學(xué)生信息排序6統(tǒng)計(jì)學(xué)生人數(shù)7輸出學(xué)員信息8學(xué)生信息寫入文件0退出main()菜單函數(shù)1、建立鏈表并顯示void createlist(struct stucode *r);2、插入新的學(xué)生信息void insert(struct stucode *r);3、刪除某學(xué)號(hào)的學(xué)生信息void del(struct stucode *r); 4、查找某學(xué)號(hào)的學(xué)生信息void se
3、arch1(struct stucode *r); 5、對(duì)學(xué)生信息排序void sort(struct stucode *r); 6、統(tǒng)計(jì)學(xué)生人數(shù)void search2(struct stucode *r); 7、輸出學(xué)生信息void out(struct stucode *r); (二)程序總體框架模塊層次結(jié)構(gòu),只確定了模塊之間的關(guān)系和函數(shù)原型,不是程序的執(zhí)行步驟。程序總體框架是該程序的總體流程圖。改程序不是順序連續(xù)地執(zhí)行全部功能,而是在某一時(shí)刻有選擇地執(zhí)行一種或多種功能。因此選用菜單方式是較佳的方案,程序總體框架如下圖: main() 菜單1 輸入 2 輸出3 排序 4 添加5 刪除 6
4、、統(tǒng)計(jì)7 查詢 8 退出 菜單代碼1建立鏈表并顯示2添加學(xué)生信息3刪除學(xué)生信息息4按學(xué)號(hào)查找學(xué)生信5對(duì)學(xué)生信息排序6統(tǒng)計(jì)學(xué)生人數(shù)7輸出學(xué)員信息息8學(xué)生信息寫入文件0退出(三) 運(yùn)行環(huán)境(軟,硬件環(huán)境) 硬件:CPU, 內(nèi)存, 主板, 硬盤, 顯卡, 鍵盤, 顯示器等等。 軟件:Windows XP trubo c應(yīng)用軟件。(四) 開(kāi)發(fā)工具和編程語(yǔ)言 開(kāi)發(fā)工具:trubo c 編程語(yǔ)言:C 語(yǔ)言三、 詳細(xì)設(shè)計(jì)(一)數(shù)據(jù)結(jié)構(gòu)依據(jù)給定學(xué)生信息和數(shù)據(jù)格式,數(shù)組用結(jié)構(gòu)體實(shí)現(xiàn),結(jié)構(gòu)體層次結(jié)構(gòu):struct stud 學(xué)號(hào) 整型 long int num; 姓名 字符串 name20; 性別 字符串 sex
5、2; 出生日期 字符串 birthday12;聯(lián)系方式 字符串 tel12; 頭文件#include #include #include /*定義數(shù)據(jù)結(jié)構(gòu)和鏈表*/struct stud long num; char name20; char sex2;char birthday12;char tel12; typedef struct stucode struct stud student ; struct stucode *next; L;(二)、算法說(shuō)明1、主函數(shù)的算法設(shè)計(jì): 清屏、顯示子菜單及運(yùn)用選擇操作(運(yùn)用swith語(yǔ)句),調(diào)用各個(gè)子函數(shù),最后退出程序,主要代碼:while(fla
6、g) system(cls); menu(); choose=getchar(); switch(choose)2、各個(gè)子函數(shù)的算法設(shè)計(jì) 1、一些顯示操作,輸入相應(yīng)的內(nèi)容即可 代碼: 2、創(chuàng)建鏈表并顯示學(xué)生信息 申請(qǐng)空間p=(L *)malloc(sizeof(L); 學(xué)生信息的輸入及顯示:p-student.num=n; strcpy(,a); p-next=NULL; 3、學(xué)生信息的刪除首先查詢要?jiǎng)h除的學(xué)生信息的學(xué)號(hào),如果存在刪除該學(xué)生,如果不存在給予相應(yīng)的提示。t=p-next; p-next=p-next-next; free(t);/釋放空間4、學(xué)生信息的
7、排序 新建鏈接,然后按要求對(duì)學(xué)生信息進(jìn)行排序while(z-next&z-next-student.num=p-student.num) z=z-next; p-next=z-next; z-next=p;5、學(xué)生人數(shù)的統(tǒng)計(jì):6、學(xué)生信息的顯示:直接發(fā)調(diào)用函數(shù)即可。四、運(yùn)行結(jié)果五、總結(jié)1、調(diào)試分析 (1)剛編譯完后有好多錯(cuò)誤和警告,運(yùn)行失敗,然后經(jīng)過(guò)修改錯(cuò)誤警告慢慢減少,最終可以運(yùn)行。 (2)該程序中可能還存在一些小問(wèn)題,比如有的時(shí)候它會(huì)主動(dòng)清屏,有的時(shí)候不會(huì)。并且我在編譯的過(guò)程中發(fā)現(xiàn)自己存在好多毛病,有粗心了等,不注意細(xì)節(jié),其實(shí)自己也知道細(xì)節(jié)決定成敗,以后我會(huì)注意。 2、設(shè)計(jì)總結(jié)經(jīng)過(guò)一周的課
8、程設(shè)計(jì),我學(xué)到了很多東西:鞏固和加深了對(duì)數(shù)據(jù)結(jié)構(gòu)的理解,提高綜合運(yùn)用本課程所學(xué)知識(shí)的能力。培養(yǎng)了我選用參考書,查閱手冊(cè)及文獻(xiàn)資料的能力。培養(yǎng)獨(dú)立思考,深入研究,分析問(wèn)題、解決問(wèn)題的能力。過(guò)實(shí)際編譯系統(tǒng)的分析設(shè)計(jì)、編程調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計(jì)方法。夠按要求編寫課程設(shè)計(jì)報(bào)告書,能正確闡述設(shè)計(jì)和實(shí)驗(yàn)結(jié)果,正確繪制系統(tǒng)和程序框圖。通過(guò)課程設(shè)計(jì),培養(yǎng)了我嚴(yán)肅認(rèn)真的工作作風(fēng),逐步建立正確的生產(chǎn)觀念、經(jīng)濟(jì)觀念和全局觀念。課程設(shè)計(jì)是把我們所學(xué)的理論知識(shí)進(jìn)行系統(tǒng)的總結(jié)并應(yīng)用于實(shí)踐的良好機(jī)會(huì),有利于加強(qiáng)我們用知識(shí)理論來(lái)分析實(shí)際問(wèn)題的能力,進(jìn)而加強(qiáng)了我們對(duì)知識(shí)認(rèn)識(shí)的實(shí)踐度,鞏固了我們的理論知識(shí),深化了
9、對(duì)知識(shí)的認(rèn)識(shí),并為走向社會(huì)打下一個(gè)良好的基礎(chǔ)。在這次課程設(shè)計(jì)中我遇到許多問(wèn)題和麻煩,得到了老師的幫助和指導(dǎo),才能夠使得這次課程設(shè)計(jì)順利的進(jìn)行下去,另外,在程序調(diào)試過(guò)程中,也得到很多同學(xué)的幫助,給我及時(shí)指出錯(cuò)誤,提出許多寶貴意見(jiàn)。在此對(duì)老師和同學(xué)們表示感謝!六、 參考文獻(xiàn) 書籍: 譚浩強(qiáng) C程序設(shè)計(jì)(第三版) 北京 清華大學(xué)出版社譚浩強(qiáng) C程序設(shè)計(jì)題解與上機(jī)指導(dǎo)(第三版) 北京 清華大學(xué)出版社 王為青 劉變紅 C語(yǔ)言高級(jí)編程及實(shí)例剖析 人民郵電出版社張建勛 C語(yǔ)言程序設(shè)計(jì)教程 清華大學(xué)出版社李玲 桂瑋珍 劉蓮英 C語(yǔ)言程序設(shè)計(jì)教程習(xí)題解答與實(shí)驗(yàn)指導(dǎo) 人民郵電出版社源程序:#include #in
10、clude #include struct stud long num; char name20; char sex2;char birthday12;char tel12; typedef struct stucode struct stud student ; struct stucode *next; L; void menu(); void createlist(struct stucode *r); void out(struct stucode *r); void search1(struct stucode *r); void search2(struct stucode *r)
11、; void del(struct stucode *r); void insert(struct stucode *r); void sort(struct stucode *r); void main() char choose; int flag=1; struct stucode *r=NULL; while(flag) system(cls); menu(); choose=getchar(); switch(choose) case 1: createlist(&r); out(r); printf(Testing function 1nPress any key to conti
12、nuen);getchar();getchar();break; case 2: search1(r); printf(Testing function 1nPress any key to continuen); getchar();getchar();break; case 3: search2(r); printf(Testing function 1nPress any key to continuen); getchar();getchar();break; case 4: del(&r); out(r); printf(Testing function 1nPress any ke
13、y to continuen); getchar();getchar();break; case 5: insert(&r); out(r); printf(Testing function 1nPress any key to continuen); getchar();getchar();break; case 6: sort(&r); out(r); printf(Testing function 1nPress any key to continuen); getchar();getchar();break; case 7: out(r); printf(Testing functio
14、n 7nPress any key to continuen); getchar();getchar();break; case 0: flag=0; printf(The end.n); getchar();getchar();break; default: printf(nWrong Selection!(選擇錯(cuò)誤,請(qǐng)重選!)n);getchar();getchar(); void createlist(struct stucode *r) struct stucode *p,*t; long n; char a20;char s4;char b12;char m12;if(*r) *r=
15、NULL; printf( n請(qǐng)輸入:n 學(xué)號(hào)(請(qǐng)按學(xué)號(hào)升序排列) 姓名 性別 出生日期 電話 (若要結(jié)束請(qǐng)輸入五個(gè)為零) n); scanf(%ld%s%s%s%s,&n,a,s,b,m); if(n=0) return; p=(L *)malloc(sizeof(L); p-student.num=n; strcpy(,a); strcpy(p-student.sex,s); strcpy(p-student.birthday,b); strcpy(p-student.tel,m); p-next=NULL; *r=p; scanf(%ld%s%s%s%s,&n
16、,a,s,b,m); while(n) t=p; p=(L *)malloc(sizeof(L); p-student.num=n; strcpy(,a); strcpy(p-student.sex,s); strcpy(p-student.birthday,b); strcpy(p-student.tel,m); p-next=NULL; t-next=p; scanf(%ld%s%s%s%s,&n,a,s,b,m); void search1(struct stucode *r) long x; if(!r) printf(沒(méi)有學(xué)生信息可查詢!n); retur
17、n ; printf( 請(qǐng)輸入要查詢的學(xué)生信息的學(xué)生學(xué)號(hào):n); scanf(%ld,&x); while(r&r-student.num!=x) r=r-next; if(r=NULL) printf(Error! No such student !n); else printf(%ld %s %s %s %sn,r-student.num,,r-student.sex,r-student.birthday,r-student.tel); void search2(struct stucode *r) int a=0,b=0,c=0;if(!r) printf(沒(méi)
18、有學(xué)生信息可統(tǒng)計(jì)!n); return ; else while(r)a+;if(strcmp(r-student.sex,男)=0)b+;if(strcmp(r-student.sex,女)=0)c+; r=r-next; printf(共有學(xué)生%d人,其中男生%d人,女生%d人,a,b,c);void del(struct stucode *r) long k; struct stucode *p=*r,*t; if(!(*r) printf(沒(méi)有學(xué)生信息可刪除 !n); return ; printf( 請(qǐng)輸入要?jiǎng)h除的學(xué)生信息的學(xué)生學(xué)號(hào):n); scanf(%ld,&k); if(p-s
19、tudent.num=k) *r=(*r)-next,free(p); else while(p-next&p-next-student.num!=k) p=p-next; if(p-next=NULL) printf(Error! No such student !n); else t=p-next; p-next=p-next-next; free(t); void insert(struct stucode *r) long n; char a20;char s4;char b12;char m12;L *p,*t,*k; printf( n請(qǐng)輸入:n 學(xué)號(hào)(請(qǐng)按學(xué)號(hào)升序排列) 姓名 性
20、別 出生日期 電話 (若要結(jié)束請(qǐng)輸入三個(gè)為零) n); scanf(%ld%s%s%s%s,&n,a,s,b,m); p=(L *)malloc(sizeof(L); p-student.num=n; strcpy(,a); strcpy(p-student.sex,s); strcpy(p-student.birthday,b); strcpy(p-student.tel,m); if(!(*r) *r=p; (*r)-next=NULL; return ; if(p-student.numstudent.num) p-next=(*r),(*r)=p; else t=*r; k=t; while(t-next&t-next-student.numstudent.num) t=t-next; p-next=t-next; t-next=p; *r=k; void sort(struct stucode *r) struct stucode *t,*p,*q,*z; if(!r) printf(沒(méi)有學(xué)生信息可排序!n); r
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 思政教育與人工智能深度融合的創(chuàng)新路徑探索
- 2025至2030年中國(guó)網(wǎng)傳輸光工作站行業(yè)發(fā)展研究報(bào)告
- 2025至2030年中國(guó)純銀郵票珍藏版行業(yè)發(fā)展研究報(bào)告
- 桂西地區(qū)視網(wǎng)膜靜脈阻塞相關(guān)危險(xiǎn)因素的臨床分析
- 刮痧干預(yù)神經(jīng)根型頸椎病的臨床觀察及抗炎鎮(zhèn)痛機(jī)制研究
- 2025至2030年中國(guó)紅棗蓮子早餐糊行業(yè)投資前景及策略咨詢報(bào)告
- 2025至2030年中國(guó)紅外對(duì)射感應(yīng)器市場(chǎng)調(diào)查研究報(bào)告
- 2025至2030年中國(guó)紫銅浮雕壁畫行業(yè)發(fā)展研究報(bào)告
- 2024年山東省環(huán)保發(fā)展集團(tuán)有限公司總部紀(jì)檢崗位招聘3人筆試參考題庫(kù)附帶答案詳解
- 2025至2030年中國(guó)粉體流量計(jì)行業(yè)投資前景及策略咨詢報(bào)告
- 回彈法檢測(cè)磚砂漿強(qiáng)度計(jì)算表
- 2023年廣東省高中學(xué)生化學(xué)競(jìng)賽試題和參考答案
- 小學(xué)勞動(dòng)技術(shù)云教三年級(jí)下冊(cè)植物栽培種植小蔥(省一等獎(jiǎng))
- 泌尿外科手術(shù)分級(jí)目錄
- 圍術(shù)期支氣管痙攣
- 科研項(xiàng)目臺(tái)賬
- 產(chǎn)品零部件防銹規(guī)定
- 2023年全國(guó)中學(xué)生生物學(xué)聯(lián)賽試題(word版有答案)
- 浙江省嘉興市地圖矢量PPT模板(圖文)
- 變位齒輪與變位齒輪傳動(dòng)
- 煙化爐車間技術(shù)操作規(guī)程-附一:煙化爐開(kāi)爐、停爐、故障處理及正常操作原則
評(píng)論
0/150
提交評(píng)論