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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、編 號:學號:教學院計算機學院數(shù)據(jù)結(jié)構(gòu)課程名稱宿舍管理查詢系統(tǒng)軟件工程同組人員(完成時間)指導(dǎo)教師2一概述 二總體方案設(shè)計1.程序結(jié)構(gòu)圖.2.程序流程圖(主要部分的詳細流程圖)詳細設(shè)計1 .軟件設(shè)計題目:宿舍管理查詢2.算法思想:.3.本系統(tǒng)定義的存儲結(jié)構(gòu)采用結(jié)構(gòu)體數(shù)組:5.主要函數(shù)定義說明:四 程序的調(diào)試與運行結(jié)果說明1. 測試輸出結(jié)果(以運行結(jié)果圖表示)五課程設(shè)計總結(jié) 六參考文獻 七附件概述1. 課程設(shè)計的目的 1理解和掌握該課程中的有關(guān)基本概念,程序設(shè)計思想和方法。 2培養(yǎng)綜合運用所學知識獨立完成課題的能力。 3培養(yǎng)勇于探索、嚴謹推理、實事求是、有錯必改,用實踐來檢驗理論, 全方位考慮問

2、題等科學技術(shù)人員應(yīng)具有的素質(zhì)。4掌握從資料文獻、 科學實驗中獲得知識的能力, 提高學生從別人經(jīng)驗中 找到解決問題的新途徑的悟性,初步培養(yǎng)工程意識和創(chuàng)新能力。2. 課程設(shè)計的要求 需要的基本知識與技能,尚未掌握的知識點,需要查閱相關(guān)資料。教師對 本題目所提出的要求等。任務(wù):為宿舍管理人員編寫一個宿舍管理查詢軟件 , 程序設(shè)計要求:(1)采用交互工作方式(2)可以增加、刪除、修改信息(3)建立數(shù)據(jù)文件 ,數(shù)據(jù)文件按關(guān)鍵字 (姓名、學號、房號)進行排序 (選擇、 快速排序、堆排序等任選一種 )(4)查詢: a. 按姓名查詢 ;b. 按學號查詢 ;c 按房號查詢(5)打印任一查詢結(jié)果(可以連續(xù)操作)總

3、體方案設(shè)計1 .程序結(jié)構(gòu)圖(主要部分的詳細流程圖)2 .程序流程圖(圖 2-2)詳細設(shè)計1 軟件設(shè)計題目:宿舍管理查詢?nèi)蝿?wù):為宿舍管理人員編寫一個宿舍管理查詢軟件 , 程序設(shè)計要求:(1)采用交互工作方式(2)可以增加、刪除、修改信息(3)建立數(shù)據(jù)文件 ,數(shù)據(jù)文件按關(guān)鍵字 (姓名、學號、房號)進行排序 (選擇、 快速排序、堆排序等任選一種 )查詢 : a. 按姓名查詢 ;b. 按學號查詢 ;c 按房號查詢 打印任一查詢結(jié)果(可以連續(xù)操作)(4)(5)2算法思想:首先,運行程序進入“歡迎進入宿舍管理查詢系統(tǒng)”界面,然后進入線性 表創(chuàng)建界面中,輸入學生的信息,創(chuàng)建好學生信息以后單擊“n”鍵則進入操

4、作 界面(主界面),然后可按鍵進行操作。單擊數(shù)字鍵“1”,則為按姓名排序 單擊數(shù)字鍵“3”, 單擊數(shù)字鍵“5”, 單擊數(shù)字鍵“7”,系統(tǒng)中有如下關(guān)鍵詞:則為按房號排序 則為按學號查找 則為按學號插入單擊數(shù)字鍵 單擊數(shù)字鍵 單擊數(shù)字鍵 單擊數(shù)字鍵2”,則為按學號排序4”,則為按姓名查找6”,則為按學號查找8”,則為按學號刪除(1)關(guān)鍵變量說明:#define N 40#define increase 10 char name20;int num;int room;int length;stu *elem;int listsize;( 2)函數(shù)定義說明:#include#include退出操作;提

5、示:當輸入的數(shù)字鍵為 0 時, 請輸入數(shù)字鍵 (18 為操作鍵 ) ; 請按任意鍵進入主界面。3. 本系統(tǒng)定義的存儲結(jié)構(gòu)采用結(jié)構(gòu)體數(shù)組:線性表存儲空間的初始分配量 線性表存儲空間的分配量增量 姓名學號房號當前長度存儲空間基址當前分配的存儲容量#include (3)結(jié)構(gòu)體說明: typedef struct char name20;int num;int room;stu;stu stud; typedef structint length; /stu *elem; /定義結(jié)構(gòu)體成員int listsize; / linklist;當前長度存儲空間基址當前分配的存儲容量4.界面設(shè)計函數(shù):voi

6、d menu()/ 操作菜單 printf (n);printf (*n);printf (n);printf(n); printf (n);printf (n);printf (n);printf (n);printf (n);printf (n);printf (n);printf (n);printf (n);printf (n);printf (n);*按姓名排序按房號排序按學號查找按學號插入請按鍵選擇操作按學號排序按姓名查找按房號查找按學號刪除printf ( 提示:當輸入的數(shù)字鍵為 0時,退出操作 n); if ( t = 1 )printf ( 請輸入數(shù)字鍵 (18 為操作鍵 )

7、:);/18 為有效數(shù)字操作鍵 scanf ( %d, &f );if ( f 9 )system ( cls );printf ( n );printf ( 輸入數(shù)字不對 , 請在原處重輸 !n );printf (n);menu ();/返回主界面 void disp ()char c; fflush ( stdin ); printf ( n );printf ( 請按任意鍵進入主界面 : ); scanf ( %c, &c );system ( cls );5.主要函數(shù)定義說明:void init ( linklist &l ) void menu() / void disp () v

8、oid panduan3 ()/void shuru ( linklist l ) / void create ( linklist &l ) / void sort3 ( linklist &l ) / void sort2 ( linklist &l ) /線性表初始化操作菜單返回主界面 如果已無學生記錄則返回主界面 輸入學生的信息 創(chuàng)建學生信息表 按房號排序(采用冒泡排序) 按學號排序(采用冒泡排序)void sort1 ( linklist &l ) / void print1 ( linklist &l ) / void print2 ( linklist &l, int mid )

9、 int panduan1 ( char ch ) / int panduan2 ( char ch ) / void chazhao3 ( linklist &l )/ void chazhao2 ( linklist &l )/ void chazhao1 ( linklist &l )/ void insert ( linklist &l ) void Delete(linklist &l) void main() /按姓名排序(采用冒泡排序) 打印學生信息 打印查找到的學生信息 判斷是否繼續(xù)查找 如果學生不存在 , 判斷是否繼續(xù)查找 按房號從小到大查找 按學號從小到大查找 按姓名從小到

10、大查找采用二分查找) 采用二分查找) 采用二分查找)按學號從小到大插入該學生 按學號刪除該學生 主函數(shù)程序的調(diào)試與運行結(jié)果說明1.測試輸出結(jié)果(以運行結(jié)果圖表示)圖 4-1 ) 圖 4-2 ) 圖 4-3 ) 圖 4-4 ) 圖 4-5 ) 圖 4-6 ) 圖 4-7 ) 圖 4-8 ) 圖 4-9 ) 圖 4-10 ) 圖 4-11 ) 圖 4-12 ) 圖 4-13 ) 圖 4-14 ) 圖 4-15 )五 課程設(shè)計總結(jié)經(jīng)過這次課程設(shè)計,我收獲到到了很多東西,對 C 語言有了進一步的了解 和認識,不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有 學到過的知識。通過這次課程設(shè)計使

11、我懂得了理論與實際相結(jié)合是很重要的, 只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理 論中得出結(jié)論,才能提高自己的實際動手能力和獨立思考的能力,在設(shè)計的過 程中發(fā)現(xiàn)了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不 夠牢固,通過這次課程設(shè)計之后,一定把以前所學過的知識重新溫故。通過本次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計,我學到了很多,獨立的完成了作業(yè),我覺得 很滿足,也很有成就感, 現(xiàn)在知道并熟練的掌握了一些曾經(jīng)自己不知道的知識。 經(jīng)過這次課程設(shè)計,我深刻認識到算法在程序設(shè)計中的重要性,一個完整的程 序總是由若干個函數(shù)構(gòu)成的,這些相應(yīng)的函數(shù)體現(xiàn)了算法的基本思想。通過此次課程設(shè)計,

12、我了解了編寫應(yīng)用軟件的一般步驟,獲得了很多寶貴 的經(jīng)驗。特別是怎樣將理論與實踐相結(jié)合,把書本上的的內(nèi)容應(yīng)用到我們做的 程序上。其次我熟悉了數(shù)據(jù)結(jié)構(gòu)的知識學會了很多關(guān)于程序設(shè)計的經(jīng)驗和技巧, 明白了程序設(shè)計的使用性和通用性事程序生存周期長短的關(guān)鍵,學會了程序調(diào) 試的一般方法。重要的是通過本次程序設(shè)計,我逐步具備了走向程序員的基本 素質(zhì)。知道如何在困難重重時一步一步細心發(fā)現(xiàn)問題,解決問題。知道了在軟 件設(shè)計中對界面和功能如何平衡,如何達到相對完美。編程是一件枯燥乏味工作,但是只要認真專研,我們會從中學到很多在課 本上學不到或者無法在課堂上掌握的知識,同時也能從中感受到編程的樂趣。 興趣是可以培養(yǎng)的

13、, 只要堅持下去, 面對困難我們總能夠找到解決問題的方法。 通過小組的分工與合作, 使我充分認識到在項目團隊開發(fā)過程中合作的重要性, 也更加理解了溝通協(xié)作能力在軟件開發(fā)行業(yè)中的重要性。另外也需要提出的是 在這次程序設(shè)計的過程中,非常感謝陳利民老師對我們的耐心指導(dǎo)。老師在教 學過程中表現(xiàn)出來的對學術(shù)專研一絲不茍的精神讓我非常有收獲。同樣也是老 師的嚴格要求才使得小組成員能夠順利的完成任務(wù)。六 參考文獻123456譚浩強,C程序設(shè)計題解與上機指導(dǎo)(第二版),北京,清華大學出版社, 2000年 9 月。陳朔鷹等編著,C語言程序設(shè)計基礎(chǔ)教程,兵器工業(yè)出版社,1994年9月。 裘宗燕 著,從問題到程序科

14、學出版社,北京大學出版社, 姜仲秋等主編,C語言程序設(shè)計,南京大學出版社, 劉瑞挺主編,計算機二級教程,南開大學出版社,1999年 4月。1998年 1月。1996年10 月。陳朔鷹 陳英主編,C語言程序設(shè)計習題集(第二版)人民郵電出版社,2003年 2月。7田淑清等,C語言程序設(shè)計輔導(dǎo)與習題集,中國鐵道出版社,2000年1月。七 附件源代碼:#include#include#include#define N 40 / 線性表存儲空間的初始分配量#define increase 10 / 線性表存儲空間的分配量增量 定義全局變量int f, t = 0; / typedef struct ch

15、ar name20;int num; int room;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);prin

16、tf (n);printf(n);按姓名排序按學號排序printf (n);printf (n);按房號排序按姓名查找printf (n);printf (n);按學號查找按房號查找printf (n);printf (n);按學號插入按學號刪除printf (n);printf (n);printf (n);printf (n);printf (n);printf ( 提示:當輸入的數(shù)字鍵為 0時,退出操作 n); if ( t = 1 )printf ( 請輸入數(shù)字鍵 (18 為操作鍵 ):);/18 為有效數(shù)字操作鍵 scanf ( %d, &f );if ( f 9 )system (

17、 cls );printf ( n );printf ( 輸入數(shù)字不對 , 請在原處重輸 !n );printf (n);menu ();/返回主界面void disp ()char c; fflush ( stdin ); printf ( n );printf ( 請按任意鍵進入主界面 : );scanf ( %c, &c ); system ( cls );void panduan3 () /如果已無學生記錄則返回主界面printf (n);printf ( 已無學生記錄 n);printf (n);disp ();menu ();輸入學生的信息void shuru ( linklist

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

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

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

21、=getchar (); printf ( n );printf ( 是否繼續(xù)輸入 ?: ); scanf ( %c, &ch );printf ( n ); printf ( n );if ( ch = n ) system ( cls );按房號排序(采用冒泡排序)void sort3 ( linklist &l )/int i, j;stu temp;for ( i= 0; i l.length - 1; i+)for ( j = i + 1; j l.elemj.room )temp = l.elemi; l.elemi = l.elemj; l.elemj = temp;按學號排序(

22、采用冒泡排序) void sort2 ( linklist &l )/ int i, j; stu temp;for ( i = 0; i l.length - 1; i+ ) for ( j = i + 1; j 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.length - 1; i+ )for ( j = i + 1; j 0 ) temp = l.elemi;l.

23、elemi = l.elemj;l.elemj = temp;打印學生信息 void print1 ( linklist &l )/ int i;printf ( n );房號n);學號printf ( 姓名printf ( n );for ( i = 0; i 該學生信息為 :n );printf ( 姓名學號 房號n);printf ( n );printf (%-15s %-5d %-5dn, , l.elemmid.num, l.elemmid.room );判斷是否繼續(xù)查找int panduan1 ( char ch ) /scanf ( %c, &ch

24、);printf ( 是否繼續(xù)查找 ?:);fflush ( stdin );scanf ( %c, &ch );if ( ch =y)system ( cls ); return ( 1 ) ; elsereturn 0;如果學生不存在 , 判斷是否繼續(xù)查找int panduan2 ( char ch ) /scanf ( %c, &ch );printf ( 該學生不存在 , 是否繼續(xù)查找 ?: ); fflush(stdin);scanf(%c,&ch);if ( ch = y ) system ( cls ); return ( 1 ); elsereturn 0;按房號從小到大查找(

25、采用二分查找)void chazhao3 ( linklist &l )/if(l.length=0) panduan3(); / else此函數(shù)功能為:返回主界面作為標志符,為 1 則表int low=0,high=l.length,mid,flag=0;/flag 示查找成功,否則沒有所要查找的學生int m; char ch; printf ( n ); printf ( n );printf ( 按房號查找 請輸入要查找的房號 : );scanf ( %d, &m );printf ( n ); while ( low l.elemmid.room ) low = mid + 1;el

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

27、gh = l.length, mid, flag = 0;int n;char ch; printf ( n ); printf ( n );printf ( 按學號查找 請輸入要查找的學號 : );scanf ( %d, &n );printf ( n );while ( low l.elemmid.num ) low = mid + 1;elsehigh = mid - 1;if ( flag = 1)print2 ( l, mid );if( panduan1 ( ch ) ) chazhao2 ( l );elsesystem ( cls ); menu ();elseif ( pan

28、duan2 ( ch ) chazhao2 (l); elsesystem ( cls ); menu();( linklist &l )/按姓名從小到大查找(采用二分查找)void chazhao1if ( 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 0 ) low = mid

29、 + 1;elsehigh = mid - 1; if ( flag = 1 )打印查找到的學生的信息print2 ( l, mid ); / if ( panduan1 ( ch ) ) chazhao1 ( l ); elsesystem ( cls ); menu ();elsechazhao1 ( l );if ( panduan2 ( ch ) ) elsesystem ( cls ); menu ();按學號從小到大插入該學生void insert ( linklist &l )/int i, j, k; char ch; printf (n);printf ( 插入的學生信息為

30、:n); printf ( 姓名 :);fflush (stdin);/ 清空輸入緩沖區(qū),得到正確的輸入數(shù)據(jù) 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.length; i+)

31、if ( stud.num k; j- )l.elemj = l.elemj - 1;strcpy ( , ); l.elemk.num = stud.num; l.elemk.room = stud.room;break;elsestrcpy ( , ); l.eleml.length.num = stud.num; l.eleml.length.room = stud.room;l.length+;fflush (stdin);printf (n);printf ( 是否繼續(xù)插入 ?:);s

32、canf (%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);printf(n);printf(%-15s %-3d %7dn,,l.elemi.num,l.elemi .

33、room);k=i;for(j=k;j=l.length) printf( if(k=0)l.length-; fflush(stdin); printf(n); printf( 是否繼續(xù)刪除 ?:); scanf(%c,&ch); system(cls); if(ch=y) Delete(l); else system(cls); void main() linklist l; init(l); char ch;/主函數(shù)該學生不存在 n);定義線性表 l 調(diào)用初始化函數(shù)*歡迎進入宿舍管理查詢系統(tǒng)system(color a); printf(n); printf(*n); printf(n); printf( 請按任意鍵開始操作 :); scanf(%c, &ch);system(cls);/ 將屏幕先前顯示的內(nèi)容清理掉 creat

溫馨提示

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

評論

0/150

提交評論