數(shù)據(jù)結構宿舍管理查詢系統(tǒng)_第1頁
數(shù)據(jù)結構宿舍管理查詢系統(tǒng)_第2頁
數(shù)據(jù)結構宿舍管理查詢系統(tǒng)_第3頁
數(shù)據(jù)結構宿舍管理查詢系統(tǒng)_第4頁
數(shù)據(jù)結構宿舍管理查詢系統(tǒng)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、攀枝花學院學生課程設計(論文)題 目: 宿舍管理查詢軟件的設計與實現(xiàn) 學生姓名: 學 號: 所在院(系): 計算機學院 專 業(yè): 班 級: 指 導 教 師: 職 稱: 2011年6月4日教務處制攀枝花學院本科學生課程設計任務書題目宿舍管理查詢軟件的設計與實現(xiàn)1、課程設計的目的培養(yǎng)學生用學到的書本知識解決實際問題的能力;培養(yǎng)實際工作所需要的動手能力;培養(yǎng)學生以科學理論和工程上能力的技術,規(guī)范地開發(fā)大型、復雜、高質量的應用軟件和系統(tǒng)軟件具有關鍵性作用;通過課程設計的實踐,學生可以在程序設計方法、上機操作等基本技能和科學作風方面受到比較系統(tǒng)和嚴格的訓練。2、課程設計的內容和要求(包括原始數(shù)據(jù)、技術要

2、求、工作要求等)1)任務:為宿舍管理人員編寫一個宿舍管理查詢軟件, 程序設計要求:A.采用交互工作方式B.建立數(shù)據(jù)文件 ,數(shù)據(jù)文件按關鍵字(姓名、學號、房號)進行排序(冒泡、選擇、插入排序等任選一種)2)查詢菜單: (用二分查找實現(xiàn)以下操作)A.按姓名查詢 B.按學號查詢 C.按房號查詢3)打印任一查詢結果(可以連續(xù)操作)3、主要參考文獻1數(shù)據(jù)結構(C語言版),嚴蔚敏,清華大學出版社,20032數(shù)據(jù)結構題集,嚴蔚敏,清華大學出版社,20053數(shù)據(jù)結構(C語言版),劉大有,高等教育出版社,20044Data Structure with C+,William FordWilliam Topp,清

3、華大學出版社,20034、課程設計工作進度計劃第1天 完成方案設計與程序框圖 第2、3天 編寫程序代碼第4天 程序調試分析和結果第5天 課程設計報告和總結指導教師(簽字)日期年 月 日教研室意見:年 月 日學生(簽字): 接受任務時間: 年 月 日注:任務書由指導教師填寫。課程設計(論文)指導教師成績評定表題目名稱宿舍管理查詢軟件的設計與實現(xiàn)評分項目分值得分評價內涵工作表現(xiàn)20%01學習態(tài)度6遵守各項紀律,工作刻苦努力,具有良好的科學工作態(tài)度。02科學實踐、調研7通過實驗、試驗、查閱文獻、深入生產(chǎn)實踐等渠道獲取與課程設計有關的材料。03課題工作量7按期圓滿完成規(guī)定的任務,工作量飽滿。能力水平3

4、5%04綜合運用知識的能力10能運用所學知識和技能去發(fā)現(xiàn)與解決實際問題,能正確處理實驗數(shù)據(jù),能對課題進行理論分析,得出有價值的結論。05應用文獻的能力5能獨立查閱相關文獻和從事其他調研;能提出并較好地論述課題的實施方案;有收集、加工各種信息及獲取新知識的能力。06設計(實驗)能力,方案的設計能力5能正確設計實驗方案,獨立進行裝置安裝、調試、操作等實驗工作,數(shù)據(jù)正確、可靠;研究思路清晰、完整。07計算及計算機應用能力5具有較強的數(shù)據(jù)運算與處理能力;能運用計算機進行資料搜集、加工、處理和輔助設計等。08對計算或實驗結果的分析能力(綜合分析能力、技術經(jīng)濟分析能力)10具有較強的數(shù)據(jù)收集、分析、處理、

5、綜合的能力。成果質量45%09插圖(或圖紙)質量、篇幅、設計(論文)規(guī)范化程度5符合本專業(yè)相關規(guī)范或規(guī)定要求;規(guī)范化符合本文件第五條要求。10設計說明書(論文)質量30綜述簡練完整,有見解;立論正確,論述充分,結論嚴謹合理;實驗正確,分析處理科學。11創(chuàng)新10對前人工作有改進或突破,或有獨特見解。成績指導教師評語指導教師簽名: 年月日摘 要 本宿舍管理查詢軟件是為方便宿舍管理人員實現(xiàn)宿舍管理查詢而開發(fā)的,具有信息錄入、顯示、查詢、排序、插入和刪除功能,能實現(xiàn)信息修改和通過別的途徑導入大量數(shù)據(jù),可連續(xù)打印任一查詢結果,但不能實現(xiàn)信息存盤,使用簡單方便,點擊程序即可運行。關鍵詞:管理,查詢,結構體

6、,函數(shù)目 錄攀枝花學院本科學生課程設計任務書I課程設計(論文)指導教師成績評定表II摘 要III1 方案設計11.1任務:11.1.1程序設計要求:11.1.2查詢菜單: (用二分查找實現(xiàn)以下操作)11.1.3打印任一查詢結果(可以連續(xù)操作)11.2功能:12 算法設計22.1線性表的順序存儲22.1.1存儲結構22.1.2程序結構圖為:23 詳細設計34 調試分析94.1使用方法94.2測試數(shù)據(jù):94.2.1開始錄入的數(shù)據(jù):94.2.2插入的數(shù)據(jù):94.2.3查找的數(shù)據(jù):94.2.4刪除的數(shù)據(jù):94.3測試輸出結果(以運行結果圖表示):94.3.1歡迎界面:104.3.2按任意鍵進入線性表的

7、創(chuàng)建界面:104.3.3輸入數(shù)據(jù),開始創(chuàng)建:104.3.4請按鍵選擇操作:104.3.5按姓名排序:114.3.6按學號排序:114.3.7按房號排序:114.3.8插入后顯示:124.3.9按姓名查找:124.3.10按學號查找:124.3.11按房號查找:124.3.12進入刪除功能,刪除數(shù)據(jù)后顯示剩余的學生信息:134.3.13退出(數(shù)字為零時退出):134.4分析結果135 總結14參考文獻151 方案設計1.1任務:為宿舍管理人員編寫一個宿舍管理查詢軟件程序設計要求:采用交互工作方式建立數(shù)據(jù)文件 ,數(shù)據(jù)文件按關鍵字(姓名、學號、房號)進行排序(冒泡、選擇、插入排序等任選一種)查詢菜單

8、: (用二分查找實現(xiàn)以下操作)按姓名查詢 按學號查詢 按房號查詢打印任一查詢結果(可以連續(xù)操作)1.2功能:根據(jù)上述要求,我們開始考慮系統(tǒng)應具備的功能:要實現(xiàn)交互工作方式,各項操作結束后均應返回主菜單;系統(tǒng)本無任何信息數(shù)據(jù),要建立數(shù)據(jù)文件,需開發(fā)一個信息錄入功能,即首先創(chuàng)建一個學員線性表,同時我們可以將數(shù)據(jù)暫時保存在內存中,所以我們未開發(fā)信息存盤功能;信息錄入后都保存在內存中,用戶看不到,需要設計一個信息顯示功能,信息的顯示應該便于查閱,所以需具備按各種關鍵字顯示的功能;本系統(tǒng)按關鍵字(姓名、學號、房號)進行冒泡排序,采用二分查找方式分別實現(xiàn)按關鍵字(姓名、學號、房號)查詢功能;由于有些同學因

9、為不同原因而離校,所以設計了刪除功能;由于有新同學入校,所以設計了插入功能;當用戶操作完畢需要退出時,我們提供了退出選項,便于使用者退出交互式工作系統(tǒng)。2 算法設計2.1線性表的順序存儲存儲結構本系統(tǒng)定義的存儲結構采用結構體數(shù)組,結構體為:typedef struct /定義結構體成員char name20;int num; /學號和房號都為整型int room;stu;stu stud;typedef structint length; /當前長度stu *elem; /存儲空間基址int listsize; /當前分配的存儲容量linklist; 在此說明每個部分的算法設計說明(可以是描述

10、算法的流程圖)程序結構圖為: 姓名排序模塊學號刪除模塊房間排序模塊學號排序模塊 姓名查找模塊房號查找??鞂W號插入模塊主函數(shù)學號查找模塊3 詳細設計/采用順序線性表解決宿舍管理問題 (C語言)#include<stdio.h>#include<stdlib.h>#include<string.h>#define N 40 /線性表存儲空間的初始分配量#define increase 10 /線性表存儲空間的分配量增量int f,t=0; /定義全局變量typedef struct char name20;int num; /學號和房號都為整型int room;

11、stu;stu stud;typedef structint length; /當前長度stu *elem; /存儲空間基址int listsize; /當前分配的存儲容量linklist; void init(linklist &l)/線性表初始化l.length=0;l.elem=(stu *)malloc(N*sizeof(stu );l.listsize=N;void menu()/操作菜單printf("n");printf(" *請按鍵選擇操作*n");printf("n");printf("n"

12、;);printf(" 1 按姓名排序 2 按學號排序n");printf("n");printf(" 3 按房號排序 4 按姓名查找n");printf("n");printf(" 5 按學號查找 6 按房號查找n");printf("n");printf(" 7 按學號插入 8 按學號刪除n");printf("n");printf("n");printf("n");printf("

13、n");printf("提示:當輸入的數(shù)字鍵為0時,退出操作n");if(t=1)printf("請輸入數(shù)字鍵(18為操作鍵):");/18為有效數(shù)字操作鍵 scanf("%d",&f);if(f<0|f>9)system("cls"); printf("n");printf("輸入數(shù)字不對,請在原處重輸!n"); printf("n");menu();void disp() /返回主界面char c;fflush(stdin

14、);printf("n");printf("請按任意鍵進入主界面:");scanf("%c",&c);system("cls");void panduan3() /如果已無學生記錄則返回主界面 printf("n");printf("已無學生記錄n");printf("n"); disp(); menu();void shuru(linklist l) /輸入學生的信息printf("請輸入姓名:");fflush(stdin)

15、; / 清空輸入緩沖區(qū),得到正確的輸入數(shù)據(jù)gets(); /輸入一行字符串(姓名)printf("請輸入學號:");scanf("%d",&stud.num);printf("請輸入房號:");scanf("%d",&stud.room);void create(linklist &l)/創(chuàng)建學生信息表if(l.length>=l.listsize) /判斷學生的人數(shù)是否超過初值,如果超過,則重新分配stu *newbase;newbase=(stu*)realloc

16、(l.elem,(N+increase)*sizeof(stu );l.elem=newbase;l.listsize+=increase;int i=2;char ch;printf("n");printf(" *開始創(chuàng)建線性表*n");printf("n");printf("請輸入第1個學生的信息n");shuru(l); /調用輸入函數(shù)ch=getchar();strcpy(,);l.eleml.length.num=stud.num;l.eleml.l

17、ength.room=stud.room;l.length+;printf("n");printf("是否繼續(xù)輸入?<y/n>:");scanf("%c",&ch);printf("n");printf("n");while(ch='y') printf("請輸入第%d個學生的信息n",i); shuru(l);strcpy(,);l.eleml.length.num=stud.num

18、;l.eleml.length.room=stud.room;l.length+;i+;ch=getchar(); printf("n");printf("是否繼續(xù)輸入?<y/n>:");scanf("%c",&ch);printf("n");printf("n"); if(ch='n') system("cls");void sort3(linklist &l)/按房號排序(采用冒泡排序)int i,j;stu temp;for(

19、i=0;i<l.length-1;i+)for(j=i+1;j<l.length;j+)if(l.elemi.room>l.elemj.room)temp=l.elemi;l.elemi=l.elemj;l.elemj=temp;void sort2(linklist &l)/按學號排序(采用冒泡排序)int i,j;stu temp;for(i=0;i<l.length-1;i+)for(j=i+1;j<l.length;j+)if(l.elemi.num>l.elemj.num)temp=l.elemi;l.elemi=l.elemj;l.ele

20、mj=temp;void sort1(linklist &l)/按姓名排序(采用冒泡排序)int i,j;stu temp;for(i=0;i<l.length-1;i+)for(j=i+1;j<l.length;j+)if(strcmp(,)>0)temp=l.elemi;l.elemi=l.elemj;l.elemj=temp;void print1(linklist &l)/打印學生信息int i;printf("n");printf("姓名 學號 房號n");pri

21、ntf("n");for(i=0;i<l.length;i+)printf("%-15s %-3d %5dn",,l.elemi.num,l.elemi.room);void print2(linklist &l,int mid) /打印查找到的學生信息 printf("查找成功->該學生信息為:n");printf("姓名 學號 房號n");printf("n");printf("%-15s %-5d %-5dn",l.elemm

22、,l.elemmid.num,l.elemmid.room);int panduan1(char ch) /判斷是否繼續(xù)查找scanf("%c",&ch);printf("是否繼續(xù)查找?<y/n>:"); fflush(stdin);scanf("%c",&ch);if(ch='y')system("cls");return(1); elsereturn 0;int panduan2(char ch) /如果學生不存在,判斷是否繼續(xù)查找scanf("

23、;%c",&ch);printf("該學生不存在,是否繼續(xù)查找?<y/n>:"); fflush(stdin);scanf("%c",&ch);if(ch='y')system("cls");return(1); elsereturn 0;void chazhao3(linklist &l)/按房號從小到大查找(采用二分查找)if(l.length=0) panduan3(); /此函數(shù)功能為:返回主界面else int low=0,high=l.length,mid,fl

24、ag=0;/flag作為標志符,為1則表示查找成功,否則沒有所要查找的學生int m;char ch;printf("n");printf("n");printf("按房號查找->請輸入要查找的房號:");scanf("%d",&m);printf("n");while(low<=high) mid=(low+high)/2;if(m=l.elemmid.room)flag=1;break;else if(m>l.elemmid.room)low=mid+1;else

25、high=mid-1;if(flag=1) print2(l,mid);if(panduan1(ch) /調用判斷函數(shù)1chazhao3(l);else system("cls");menu();else if(panduan2(ch) /調用判斷函數(shù)2chazhao3(l); else system("cls");menu();void chazhao2(linklist &l)/按學號從小到大查找(采用二分查找) if(l.length=0) panduan3();elseint low=0,high=l.length,mid,flag=0;

26、int n;char ch;printf("n");printf("n");printf("按學號查找->請輸入要查找的學號:");scanf("%d",&n);printf("n");while(low<=high) mid=(low+high)/2;if(n=l.elemmid.num)flag=1;break;else if(n>l.elemmid.num)low=mid+1;else high=mid-1;if(flag=1) print2(l,mid);if(

27、panduan1(ch) chazhao2(l);else system("cls");menu();else if(panduan2(ch) chazhao2(l); else system("cls");menu(); void chazhao1(linklist &l)/按姓名從小到大查找(采用二分查找) if(l.length=0) panduan3();elseint low=0,high=l.length,mid,flag=0;printf("n");printf("n");printf(&qu

28、ot;按姓名查找->請輸入要查找的姓名:");char a15,ch;scanf("%s",a);printf("n");while(low<=high) mid=(low+high)/2;if(strcmp(a,)=0)flag=1;break;else if(strcmp(a,)>0)low=mid+1;else high=mid-1;if(flag=1) print2(l,mid); /打印查找到的學生的信息if(panduan1(ch) chazhao1(l);e

29、lse system("cls");menu();elseif(panduan2(ch)chazhao1(l);else system("cls");menu();void insert(linklist &l)/按學號從小到大插入該學生int i,j,k; char ch;printf("n");printf("插入的學生信息為:n");printf("姓名:");fflush(stdin);/ 清空輸入緩沖區(qū),得到正確的輸入數(shù)據(jù)gets(); printf(&quo

30、t;學號:");scanf("%d",&stud.num);printf("房號:");scanf("%d",&stud.room);if(l.length=0)strcpy(,);l.eleml.length.num=stud.num;l.eleml.length.room=stud.room;for(i=0;i<l.length;i+) if(stud.num<l.elemi.num)k=i;for(j=l.length;j>k;j

31、-)l.elemj=l.elemj-1;strcpy(,);l.elemk.num=stud.num;l.elemk.room=stud.room;break;else strcpy(,);l.eleml.length.num=stud.num;l.eleml.length.room=stud.room;l.length+;fflush(stdin);printf("n");printf("是否繼續(xù)插入?<y/n>:");scanf("

32、%c",&ch);if(ch='y') insert(l);else system("cls");void Delete(linklist &l)/按學號刪除該學生int i,j,k=-1;char ch;printf("n");printf("n");printf("請輸入要刪除學生的學號:");scanf("%d",&stud.num);for(i=0;i<l.length;i+)if(stud.num=l.elemi.num)prin

33、tf("該學生的信息為:n");printf("n");printf("%-15s %-3d %7dn",,l.elemi.num,l.elemi.room);k=i;for(j=k;j<l.length-1;j+)l.elemj=l.elemj+1;printf("n");break; if(i>=l.length) printf("該學生不存在n");if(k>=0)l.length-;fflush(stdin);printf("n&quo

34、t;);printf("是否繼續(xù)刪除?<y/n>:");scanf("%c",&ch);system("cls");if(ch='y') Delete(l);else system("cls");void main() /主函數(shù)linklist l; /定義線性表 linit(l); /調用初始化函數(shù)char ch;system("color a");printf("n");printf(" *歡迎進入宿舍管理查詢系統(tǒng)*n&quo

35、t;);printf("n");printf("請按任意鍵開始操作:");scanf("%c",&ch);system("cls");/將屏幕先前顯示的內容清理掉create(l); /調用線性表創(chuàng)建函數(shù)system("cls");t=1;menu(); /調用主菜單函數(shù)while(f!=0)system("cls");switch(f)case 1: sort1(l); /調用按姓名排序函數(shù) printf("n"); if(l.length=0)

36、 printf("已無學生記錄n"); printf("n"); disp(); menu(); elseprintf("按姓名排序:n");print1(l);disp(); /調用返回主界面 menu(); break;case 2: sort2(l); /調用按學號排序函數(shù) printf("n"); if(l.length=0) printf("已無學生記錄n");printf("n"); disp(); menu(); elseprintf("按學號排序:n

37、");print1(l);disp(); menu();break;case 3: sort3(l); /調用按房號排序函數(shù) printf("n"); if(l.length=0) printf("已無學生記錄n"); printf("n"); disp(); menu(); elseprintf("按房號排序:n");print1(l);disp(); menu();break; case 4:sort1(l); /先調用按姓名排序函數(shù)進行排序 chazhao1(l); /再調用按姓名查找函數(shù)進行(二分

38、)查找 break;case 5: sort2(l); /先調用按學號排序函數(shù)進行排序 chazhao2(l); /再調用按學號查找函數(shù)進行(二分)查找 break;case 6: sort3(l); /先調用按房號排序函數(shù)進行排序 chazhao3(l); /再調用按房號查找函數(shù)進行(二分)查找 break;case 7: sort2(l); /調用插入函數(shù) insert(l); system("cls");printf("顯示插入后的學生信息:n");print1(l);disp(); menu(); break;case 8: Delete(l);

39、 /調用刪除函數(shù)if(l.length=0)printf("n");printf("學生記錄已被刪除完n");printf("n");disp(); menu();elseprintf("顯示刪除后的學生信息:n");print1(l);disp(); menu();break;4 調試分析4.1使用方法首先,運行程序進入“歡迎進入宿舍管理查詢系統(tǒng)”界面,然后進入線性表創(chuàng)建界面中,輸入學生的信息,創(chuàng)建好學生信息以后單擊“n”鍵則進入操作界面(主界面),然后可按鍵進行操作。單擊數(shù)字鍵“1”,則為按姓名排序 單擊數(shù)字鍵

40、“2”,則為按學號排序單擊數(shù)字鍵“3”,則為按房號排序 單擊數(shù)字鍵“4”,則為按姓名查找單擊數(shù)字鍵“5”,則為按學號查找 單擊數(shù)字鍵“6”,則為按學號查找單擊數(shù)字鍵“7”,則為按學號插入 單擊數(shù)字鍵“8”,則為按學號刪除系統(tǒng)中有如下關鍵詞: 提示:當輸入的數(shù)字鍵為0時,退出操作;請輸入數(shù)字鍵(18為操作鍵);請按任意鍵進入主界面。4.2測試數(shù)據(jù):開始錄入的數(shù)據(jù):姓名 學號 房間號田浩然 200910803050 105朱棲才 200910803079 108丁強 200910803008 104插入的數(shù)據(jù):姓名 學號 房間號殷林 200910803065 114查找的數(shù)據(jù):丁強(按姓名) 200910803050(按學號) 114(按房間號)刪除的數(shù)據(jù):200910803079(按學號)4.3測試輸出結果(以運行結果圖表示):歡迎界面:按任意鍵進入線性表的創(chuàng)建界面:輸入數(shù)據(jù),開始創(chuàng)建:請按鍵選擇操作:4.3.5按姓名排序:按學號排序:按房號排序:插入后顯示:按姓名查找:4.3.10按學號查找:4.3.11按房號查找:進入刪除功能,刪除數(shù)據(jù)后顯示剩余的學生信息:退出(數(shù)字為零時退出):4.4分析結果為了避免繁瑣、改進算法,在一些函數(shù)中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論