版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目 錄一、設(shè)計(jì)目的2二、設(shè)計(jì)內(nèi)容3三、設(shè)計(jì)要求4四、設(shè)計(jì)過程41算法思想分析42算法描述與實(shí)現(xiàn)53系統(tǒng)測(cè)試7五、設(shè)計(jì)總結(jié)11參考文獻(xiàn)12附錄131 設(shè)計(jì)目的1 了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計(jì)方法,具備初步的獨(dú)立分析和設(shè)計(jì)能力;2. 初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能;3. 提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問題的能力; 4.訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開發(fā)一般規(guī)范進(jìn)行軟件開發(fā),培養(yǎng)軟件工作者所應(yīng)具備的科學(xué)的工作方法和作風(fēng)。2 設(shè)計(jì)內(nèi)容2.1開發(fā)環(huán)境操作系統(tǒng): Windows 7開發(fā)工具:Microsoft Visual C+ 6.0開發(fā)語言:C+2.
2、2功能簡(jiǎn)介:本程序采用C+編寫,用于管理學(xué)生信息,基本功能有 批量添加學(xué)生信息,單個(gè)添加學(xué)生信息,按學(xué)號(hào)查找學(xué)生,按姓名查找學(xué)生,按學(xué)號(hào)刪除學(xué)生信息,排序輸出全部學(xué)生信息以及退出功能。程序流程:開始選擇功能按姓名查找按學(xué)號(hào)查找批量添加排序輸出按學(xué)號(hào)刪除添加信息結(jié)束3 設(shè)計(jì)要求1) 程序設(shè)計(jì)要求:采用交互工作方式,設(shè)計(jì)功能菜單;建立數(shù)據(jù)文件,數(shù)據(jù)包含學(xué)生的自然信息和成績(jī)信息(設(shè)計(jì)幾門課以及總成績(jī));對(duì)如下關(guān)鍵字:姓名、學(xué)號(hào)、各科成績(jī)進(jìn)行排序(冒泡、選擇、插入排序等任選一種)。2) 用二分查找實(shí)現(xiàn)如下查詢:按姓名查詢 按學(xué)號(hào)查詢 3) 用堆排序找出總成績(jī)排名的前5名學(xué)生4) 輸出任一查詢結(jié)果(可以
3、連續(xù)操作)4 設(shè)計(jì)過程1. 算法思想分析根據(jù)設(shè)計(jì)要求,首先定義三個(gè)數(shù)組,分別存放學(xué)號(hào)、姓名、成績(jī).typedef struct stud /學(xué)生信息結(jié)構(gòu) long num; char name20; float score; Stud; 然后編寫函數(shù),實(shí)現(xiàn)添加、查找、刪除、排序、退出功能,對(duì)數(shù)組元素進(jìn)行操作。2. 算法描述與實(shí)現(xiàn)添加信息:定義添加信息函數(shù),將輸入的信息添加到數(shù)組中:void inser(long b) Node *last,*current,*p; current=head; while(current!=NULL&&b>current->stude
4、nt.num) last=current; current=current->next; 查找學(xué)生:void searchname(char *s) /按姓名查找 Node *p=head; int flag=0; printf("n學(xué)號(hào) 姓名 成績(jī):n"); while(p!=NULL) if(strcmp(p->,s)=0) printf("%ld %s %fn",p->student.num,p->,p->student.score); flag=1; p=p->n
5、ext; continue; else p=p->next; if(!flag) printf("沒有找到相關(guān)信息"); void find(long b) /按姓名查找 Node *p=head; while(p!=NULL&&b!=p->student.num) p=p->next; if(!p) printf("No foundn"); else printf("n學(xué)號(hào) 姓名 成績(jī)n"); printf("%ld %s %fn",p->student.num,p->
6、;,p->student.score); 輸出信息:void print() Node *p=head; printf("n學(xué)號(hào) 姓名 成績(jī):n"); while(p!=NULL) printf("%ld %s %fn",p->student.num,p->,p->student.score); p=p->next; printf("n"); 3.系統(tǒng)測(cè)試1. 菜單 用戶運(yùn)行程序后,顯示如下所示菜單,用戶根據(jù)菜單提示進(jìn)行操作(如圖2.1)。圖2.1 2.批量
7、添加用戶選擇批量添加學(xué)生信息功能進(jìn)行批量添加,可連續(xù)添加,按 0 結(jié)束添加操作(如圖 2.2)。圖2.23.按學(xué)號(hào)查找學(xué)生 將學(xué)生信息錄入之后,若想查找某個(gè)學(xué)生,用戶可選擇按學(xué)號(hào)查找學(xué)生信息(圖2.3)。圖2.34. 按姓名查找學(xué)生將學(xué)生信息錄入之后,若想查找某個(gè)學(xué)生,用戶可選擇按姓名查找學(xué)生信息(圖2.4)。圖2.45. 添加信息用戶可以在批量添加后在單個(gè)添加學(xué)生信息(圖2.5)。圖2.56. 按學(xué)號(hào)刪除學(xué)生信息用戶可根據(jù)情況對(duì)已添加的學(xué)生信息進(jìn)行刪除,通過學(xué)號(hào)刪除(圖2.6)。圖2.67. 排序輸出程序可以將已添加的學(xué)生按照成績(jī)的降序排列輸出(圖2.7).圖2.78. 退出 操作結(jié)束后按
8、0 退出程序(圖2.8)。圖2.85 設(shè)計(jì)總結(jié)通過一周的課程設(shè)計(jì),我從中受益匪淺,使得我對(duì)數(shù)據(jù)結(jié)構(gòu)這門課有了更深一步的認(rèn)識(shí)。在設(shè)計(jì)過程中,我們發(fā)現(xiàn)問題,解決問題,一同探討問題,在老師的幫助下把問題一一解決。在解決問題的過程中得到了成長(zhǎng),在與同學(xué)的合作過程中,我獲益良多,提高了自己的團(tuán)隊(duì)合作能力和實(shí)際動(dòng)手能力,在親自動(dòng)手的同時(shí)提升自己,鍛煉自己。通過這次設(shè)計(jì),我深深的感受到了做系統(tǒng)是一件十分復(fù)雜周密的事情,不能有半點(diǎn)的疏忽,需要一個(gè)人有周密的思考能力,分析問題、處理問題的能力,還要有足夠的耐心。參考文獻(xiàn)數(shù)據(jù)結(jié)構(gòu)程序設(shè)計(jì)題典 李春葆等編 清華大學(xué)出版社數(shù)據(jù)結(jié)構(gòu)(C語言版) 黃國瑜 葉乃菁編 清華大
9、學(xué)出版社數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 蘇仕華 等編 機(jī)械工業(yè)出版社附錄:源代碼#include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct stud /學(xué)生信息結(jié)構(gòu) long num; char name20; float score; Stud; typedef struct node Stud student; struct node *next; Node; Node *head=NULL; void read(void); void inser(long b); void print
10、(); void find(long b); void searchname(char *s); Node * del(long n); void sort(int flag); void menu(); void main() char choose; int flag=1; while (flag) menu(); /調(diào)用功能菜單函數(shù),顯示菜單項(xiàng)。 printf(" 請(qǐng)選擇功能:"); choose=getchar(); switch(choose) case '1': read(); /調(diào)用建立鏈表的函數(shù);輸出鏈表信息; print(); printf
11、("nPress any key Continue "); getchar(); break; case '2': /調(diào)用按學(xué)號(hào)查找學(xué)生信息的函數(shù);并輸出查找結(jié)果信息; long c; printf("輸入要查找的學(xué)號(hào):"); scanf("%ld",&c); find(c); printf("nPress any key Continue."); getchar(); break; case '3': /調(diào)用按姓名查找學(xué)生信息的函數(shù);并輸出查找結(jié)果信息; char s20;
12、 printf("輸入要查找的姓名:"); scanf("%s",s); searchname(s); printf("n Press any key Continue."); getchar(); getchar(); break; case '4': /調(diào)用根據(jù)學(xué)號(hào)刪除某個(gè)學(xué)生信息的函數(shù);并輸出刪除后的鏈表信息; Node *h; long n; printf("輸入要?jiǎng)h除的學(xué)生學(xué)號(hào):"); scanf("%ld",&n); h=del(n); if(h=NULL)
13、printf("No find the student n"); else print(); printf("n Press any key Continue."); getchar(); getchar(); break; case '5': /調(diào)用插入新的學(xué)生信息的函數(shù);并輸出插入后的鏈表信息; long a; printf("輸入新學(xué)號(hào):n"); scanf("%ld",&a); inser(a); print(); printf("n Press any key Conti
14、nue."); getchar(); getchar(); break; case '6': /調(diào)用按分?jǐn)?shù)降序排序輸出的函數(shù);并輸出排序后的鏈表信息; sort(1); print(); sort(0); printf("nPress any key Continue."); getchar(); getchar(); break; case '0': /結(jié)束程序運(yùn)行flag=0; printf("n * The End! *n"); break; default: printf("n Wrong Se
15、lection !(選擇錯(cuò)誤,重選)n"); getchar(); void menu() /綜合作業(yè)功能菜單 printf(" n 學(xué) 生 信 息 管 理 系 統(tǒng)n"); printf(" n *菜 單*nn"); printf(" * nn");printf("* 1. 批 量 添 加 學(xué) 生 信 息 "); printf(" 2. 按 學(xué) 號(hào) 查 找 學(xué) 生 信 息 *n"); printf("* 3. 按 姓 名 查 學(xué) 生 信 息 "); printf(&
16、quot; 4. 按 學(xué) 號(hào) 刪 除 學(xué) 生 信 息 *n"); printf("* 5. 錄 入 新 的 學(xué) 生 信 息 "); printf(" 6. 按 分 數(shù) 降 序 排 序 輸 出 *n"); printf(" -0. 返 回-n"); printf(" * n"); void read(void) long a; printf("請(qǐng)輸入學(xué)號(hào):"); scanf("%ld",&a); while(a>0) inser(a); printf(&
17、quot;請(qǐng)輸入學(xué)號(hào):"); scanf("%ld",&a); void inser(long b) Node *last,*current,*p; current=head; while(current!=NULL&&b>current->student.num) last=current; current=current->next; if(current=NULL|b<current->student.num) printf("請(qǐng)輸入姓名、分?jǐn)?shù):"); p=(Node *)malloc
18、(sizeof(Node); p->student.num=b; scanf("%s%f",p->,&p->student.score); p->next=NULL; if(current=head) p->next=head; head=p; else p->next=current; last->next=p; else if(b=current->student.num) printf("error input a different number:"); void p
19、rint() Node *p=head; printf("n學(xué)號(hào) 姓名 成績(jī):n"); while(p!=NULL) printf("%ld %s %fn",p->student.num,p->,p->student.score); p=p->next; printf("n"); void find(long b) Node *p=head; while(p!=NULL&&b!=p->student.num) p=p->next; if(!p) printf(
20、"No foundn"); else printf("n學(xué)號(hào) 姓名 成績(jī)n"); printf("%ld %s %fn",p->student.num,p->,p->student.score); void searchname(char *s) Node *p=head; int flag=0; printf("n學(xué)號(hào) 姓名 成績(jī):n"); while(p!=NULL) if(strcmp(p->,s)=0) printf("%ld %s %fn",p->student.num,p->,p->student.score); flag=1; p=p->next; continue; else p=p->next; if(!flag) printf("沒有找到相關(guān)信息"); Node * del(long n) Node *p=head,*last; while(p->student.num!=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度鄉(xiāng)村振興項(xiàng)目贈(zèng)與合同
- 二零二五年度自然人二零二五年度個(gè)人教育培訓(xùn)貸款合同
- 2025年度食品展會(huì)參展合同協(xié)議
- 2025年度生態(tài)農(nóng)業(yè)園區(qū)麻石灌溉系統(tǒng)建設(shè)合同4篇
- 二零二五年度地質(zhì)勘探設(shè)備操作臨時(shí)駕駛員用工合同4篇
- 2025年度共享辦公空間租賃續(xù)約服務(wù)合同
- 二零二五年度智能城市整體解決方案軟件開發(fā)合同3篇
- 2025年場(chǎng)監(jiān)管委天津安全生產(chǎn)應(yīng)急預(yù)案演練服務(wù)合同2篇
- 2025年度茶葉茶苗種植技術(shù)培訓(xùn)與咨詢合同4篇
- 二零二五年度租賃合同:房地產(chǎn)公司與租戶之間的寫字樓租賃協(xié)議2篇
- 新教材人教版高中物理選擇性必修第二冊(cè)全冊(cè)各章節(jié)課時(shí)練習(xí)題及章末測(cè)驗(yàn)含答案解析(安培力洛倫茲力電磁感應(yīng)交變電流等)
- 初級(jí)養(yǎng)老護(hù)理員培訓(xùn)全套
- 集中供熱管網(wǎng)系統(tǒng)一次網(wǎng)的調(diào)節(jié)方法
- GB/T 41095-2021機(jī)械振動(dòng)選擇適當(dāng)?shù)臋C(jī)器振動(dòng)標(biāo)準(zhǔn)的方法
- MRP、MPS計(jì)劃文檔教材
- 甲狀腺疾病護(hù)理查房課件
- 安全安全帶檢查記錄表
- GB∕T 26520-2021 工業(yè)氯化鈣-行業(yè)標(biāo)準(zhǔn)
- 2022年浙江省紹興市中考數(shù)學(xué)試題及參考答案
- Listen-to-this-3-英語高級(jí)聽力-(整理版)
- 生活垃圾焚燒處理建設(shè)項(xiàng)目評(píng)價(jià)導(dǎo)則(2022)
評(píng)論
0/150
提交評(píng)論