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

下載本文檔

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

文檔簡介

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

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

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

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

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

6、學院本科學生課程設計任務書I課程設計(論文)指導教師成績評定表II摘 要III1 方案設計11。1任務:11.1.1程序設計要求:11。1.2查詢菜單: (用二分查找實現以下操作)11.1。3打印任一查詢結果(可以連續(xù)操作)11.2功能:12 算法設計22.1線性表的順序存儲22。1.1存儲結構22.1。2程序結構圖為:23 詳細設計34 調試分析94。1使用方法94。2測試數據:94.2。1開始錄入的數據:94。2。2插入的數據:94。2。3查找的數據:94。2。4刪除的數據:94。3測試輸出結果(以運行結果圖表示):94。3。1歡迎界面:104.3。2按任意鍵進入線性表的創(chuàng)建界面:104.

7、3.3輸入數據,開始創(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進入刪除功能,刪除數據后顯示剩余的學生信息:134.3。13退出(數字為零時退出):134。4分析結果135 總結14參考文獻151方案設計1。1任務:為宿舍管理人員編寫一個宿舍管理查詢軟件1。1。1程序設計要求:采用交互工作方式建立數據文件 ,數據文件按關鍵字(姓名、學號、房號)進行排序(冒泡、選擇、插入排序等任選一種)1。1.2查詢菜單

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

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

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

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

12、 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(”n”);printf(”提示:當輸入的數字鍵為0時,退出操作n");if(t=1)printf(”請輸入數字鍵(18為操作鍵):”);/18為有效數字操作鍵 scanf

13、("%d”,&f);if(f<0f9)system(”cls"); printf("n");printf("輸入數字不對,請在原處重輸!n”); printf(”n”);menu();void disp() /返回主界面char c;fflush(stdin);printf(”n”);printf(”請按任意鍵進入主界面:”);scanf("c”,c);system(”cls”);void panduan3() /如果已無學生記錄則返回主界面 printf("n”);printf("已無學生記錄n&q

14、uot;);printf("n”); disp(); menu();void shuru(linklist l) /輸入學生的信息printf(”請輸入姓名:”);fflush(stdin); / 清空輸入緩沖區(qū),得到正確的輸入數據gets(); /輸入一行字符串(姓名)printf(”請輸入學號:");scanf(”d”,stud.num);printf(”請輸入房號:”);scanf("%d”,stud.room);void create(linklist &l)/創(chuàng)建學生信息表if(l。length>=l。listsize)

15、/判斷學生的人數是否超過初值,如果超過,則重新分配stu newbase;newbase=(stu*)realloc(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); /調用輸入函數ch=getchar();strcpy(,);l.eleml。l

16、ength。num=stud.num;l。eleml。length.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;l。eleml.length.room=stud。room;l

17、。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(i=0;il。length1;i+)for(j=i+1;jl.length;j+)if(l。elemi。rooml.elemj.room)temp=l。elemi;l。el

18、emi=l。elemj;l.elemj=temp;void sort2(linklist l)/按學號排序(采用冒泡排序)int i,j;stu temp;for(i=0;i<l。length1;i+)for(j=i+1;jl。length;j+)if(l。elemi。num>l。elemj.num)temp=l。elemi;l。elemi=l。elemj;l.elemj=temp;void sort1(linklist l)/按姓名排序(采用冒泡排序)int i,j;stu temp;for(i=0;i<l.length1;i+)for(j=i+1;jl。length;j+

19、)if(strcmp(,)>0)temp=l。elemi;l.elemi=l。elemj;l。elemj=temp;void print1(linklist l)/打印學生信息int i;printf("n”);printf(”姓名 學號 房號n”);printf(”n”);for(i=0;il.length;i+)printf(”-15s 3d %5dn”,,l。elemi.num,l。elemi.room);void print2(linklist l,int mid) /打印查找到的學生信息 prin

20、tf("查找成功-該學生信息為:n”);printf(”姓名 學號 房號n”);printf(”n”);printf("-15s 5d 5dn”,,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

21、ch) /如果學生不存在,判斷是否繼續(xù)查找scanf(”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(); /此函數功能為:返回主界面else int low=0,high=l.length,mid,flag=0;/flag作為標志符,為1則

22、表示查找成功,否則沒有所要查找的學生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 high=mid1;if(flag=1) print2(l,mid);if(panduan1(

23、ch) /調用判斷函數1chazhao3(l);else system(”cls”);menu();else if(panduan2(ch)) /調用判斷函數2chazhao3(l); else system(”cls”);menu();void chazhao2(linklist &l)/按學號從小到大查找(采用二分查找) if(l。length=0) panduan3();elseint low=0,high=l.length,mid,flag=0;int n;char ch;printf("n”);printf(”n”);printf("按學號查找->請

24、輸入要查找的學號:”);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=mid1;if(flag=1) print2(l,mid);if(panduan1(ch)) chazhao2(l);else system("cls”);menu();else if(panduan2(ch) chazhao2(l); else system(”cls”

25、);menu(); void chazhao1(linklist &l)/按姓名從小到大查找(采用二分查找) if(l.length=0) panduan3();elseint low=0,high=l.length,mid,flag=0;printf("n”);printf(”n”);printf(”按姓名查找>請輸入要查找的姓名:”);char a15,ch;scanf(”s”,a);printf(”n”);while(low=high) mid=(low+high)/2;if(strcmp(a,)=0)flag=1;break;else

26、 if(strcmp(a,)0)low=mid+1;else high=mid1;if(flag=1) print2(l,mid); /打印查找到的學生的信息if(panduan1(ch) chazhao1(l);else 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(”插

27、入的學生信息為:n");printf(”姓名:");fflush(stdin);/ 清空輸入緩沖區(qū),得到正確的輸入數據gets(); printf(”學號:");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。leng

28、th;i+) if(stud.numl。elemi.num)k=i;for(j=l。length;j>k;j)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&quo

29、t;);printf(”是否繼續(xù)插入?y/n:”);scanf(”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;il.length;i+)if(stud。num=l。elemi。num)printf("該學生的信息為:n”);pri

30、ntf("n");printf(”15s 3d 7dn”,,l。elemi。num,l。elemi。room);k=i;for(j=k;jl.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”);printf(”是否繼續(xù)刪除?<y/n:”);scanf(”c”,&ch);system("cls”);if(ch

31、='y) Delete(l);else system(”cls");void main() /主函數linklist l; /定義線性表 linit(l); /調用初始化函數char ch;system(”color a");printf(”n”);printf(” *歡迎進入宿舍管理查詢系統*n”);printf(”n”);printf(”請按任意鍵開始操作:”);scanf("c”,&ch);system("cls");/將屏幕先前顯示的內容清理掉create(l); /調用線性表創(chuàng)建函數system("cls”)

32、;t=1;menu(); /調用主菜單函數while(f!=0)system(”cls”);switch(f)case 1: sort1(l); /調用按姓名排序函數 printf("n”); if(l。length=0) printf(”已無學生記錄n"); printf(”n”); disp(); menu(); elseprintf(”按姓名排序:n”);print1(l);disp(); /調用返回主界面 menu(); break;case 2: sort2(l); /調用按學號排序函數 printf("n"); if(l。length=0)

33、printf("已無學生記錄n");printf("n”); disp(); menu();elseprintf("按學號排序:n”);print1(l);disp(); menu();break;case 3: sort3(l); /調用按房號排序函數 printf("n”); if(l。length=0) printf(”已無學生記錄n”); printf(”n"); disp(); menu(); elseprintf(”按房號排序:n”);print1(l);disp(); menu();break; case 4:sort1

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

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

36、字鍵“1”,則為按姓名排序 單擊數字鍵“2”,則為按學號排序單擊數字鍵“3",則為按房號排序 單擊數字鍵“4”,則為按姓名查找單擊數字鍵“5",則為按學號查找 單擊數字鍵“6”,則為按學號查找單擊數字鍵“7",則為按學號插入 單擊數字鍵“8”,則為按學號刪除系統中有如下關鍵詞: 提示:當輸入的數字鍵為0時,退出操作;請輸入數字鍵(18為操作鍵);請按任意鍵進入主界面.4。2測試數據:4。2.1開始錄入的數據:姓名 學號 房間號田浩然200910803050105朱棲才200910803079108丁強2009108030081044。2.2插入的數據:姓名 學號

37、房間號殷林2009108030651144。2.3查找的數據:丁強(按姓名) 200910803050(按學號) 114(按房間號)4.2。4刪除的數據:200910803079(按學號)4。3測試輸出結果(以運行結果圖表示):4。3。1歡迎界面:4.3.2按任意鍵進入線性表的創(chuàng)建界面:4。3.3輸入數據,開始創(chuàng)建:4。3。4請按鍵選擇操作:4。3。5按姓名排序:4.3。6按學號排序:4。3.7按房號排序:4。3。8插入后顯示:4。3.9按姓名查找:4.3。10按學號查找:4。3.11按房號查找:4。3.12進入刪除功能,刪除數據后顯示剩余的學生信息:4.3。13退出(數字為零時退出):4.4分析結果為了避免繁瑣、改進算法,在一些函數中調用了其它的函數.如:在按(姓名、學號、房號)查找中都調用了 panduan1(ch) 和panduan2(ch)函數.在插入和刪除模塊中,顯示學生的信息的下面總是有

溫馨提示

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

評論

0/150

提交評論