數(shù)據(jù)結(jié)構(gòu)學(xué)籍管理系統(tǒng)_第1頁
數(shù)據(jù)結(jié)構(gòu)學(xué)籍管理系統(tǒng)_第2頁
數(shù)據(jù)結(jié)構(gòu)學(xué)籍管理系統(tǒng)_第3頁
數(shù)據(jù)結(jié)構(gòu)學(xué)籍管理系統(tǒng)_第4頁
數(shù)據(jù)結(jié)構(gòu)學(xué)籍管理系統(tǒng)_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論