宿舍管理方案計(jì)劃查詢系統(tǒng)_第1頁
宿舍管理方案計(jì)劃查詢系統(tǒng)_第2頁
宿舍管理方案計(jì)劃查詢系統(tǒng)_第3頁
宿舍管理方案計(jì)劃查詢系統(tǒng)_第4頁
宿舍管理方案計(jì)劃查詢系統(tǒng)_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、編 號:學(xué) 號:V常戲/f 2HOBEI POLYTECHHIC UNIVERSITY程設(shè)計(jì)計(jì)算機(jī)學(xué)院數(shù)據(jù)結(jié)構(gòu)教學(xué)院 課程名稱宿舍管理查詢系統(tǒng)軟件工程同組人員 指導(dǎo)教師(完成時(shí)間)2概述總體方案設(shè)計(jì)1 .程序結(jié)構(gòu)圖2.程序流程圖(主要部分的詳細(xì)流程圖)詳細(xì)設(shè)計(jì)1 .軟件設(shè)計(jì)題目:宿舍管理查詢2.算法思想:3.本系統(tǒng)定義的存儲結(jié)構(gòu)采用結(jié)構(gòu)體數(shù)組:4.界面設(shè)計(jì)函數(shù):5.主要函數(shù)定義說明:程序的調(diào)試與運(yùn)行結(jié)果說明1.測試輸出結(jié)果(以運(yùn)行結(jié)果圖表示)課程設(shè)計(jì)總結(jié)參考文獻(xiàn)附件171.8.19.概述1. 課程設(shè)計(jì)的目的1 .理解和掌握該課程中的有關(guān)基本概念,程序設(shè)計(jì)思想和方法。2 .培養(yǎng)綜合運(yùn)用所學(xué)知識獨(dú)

2、立完成課題的能力。3 .培養(yǎng)勇于探索、嚴(yán)謹(jǐn)推理、實(shí)事求是、有錯(cuò)必改,用實(shí)踐來檢驗(yàn)理論, 全方位考慮問題等科學(xué)技術(shù)人員應(yīng)具有的素質(zhì)。4.掌握從資料文獻(xiàn)、科學(xué)實(shí)驗(yàn)中獲得知識的能力,提高學(xué)生從別人經(jīng)驗(yàn)中 找到解決問題的新途徑的悟性,初步培養(yǎng)工程意識和創(chuàng)新能力。2. 課程設(shè)計(jì)的要求需要的基本知識與技能,尚未掌握的知識點(diǎn),需要查閱相關(guān)資料。教師對 本題目所提出的要求等。任務(wù):為宿舍管理人員編寫一個(gè)宿舍管理查詢軟件 ,程序設(shè)計(jì)要求:(1)采用交互工作方式(2 )可以增加、刪除、修改信息(3) 建立數(shù)據(jù)文件,數(shù)據(jù)文件按關(guān)鍵字(姓名、學(xué)號、房號)進(jìn)行排序(選擇、 快速排序、堆排序等任選一種)(4) 查詢:a.

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

4、后進(jìn)入線性 表創(chuàng)建界面中,輸入學(xué)生的信息,創(chuàng)建好學(xué)生信息以后單擊 界面(主界面),然后可按鍵進(jìn)行操作。單擊數(shù)字鍵1 ”,則為按姓名排序單擊數(shù)字鍵“n ”鍵則進(jìn)入操作2 ”,則為按學(xué)號排單擊數(shù)字鍵3 ”,則為按房號排序單擊數(shù)字鍵4 ”,則為按姓名查單擊數(shù)字鍵5 ”,則為按學(xué)號查找單擊數(shù)字鍵6 ”,則為按學(xué)號查7 ”,則為按學(xué)號插入單擊數(shù)字鍵除系統(tǒng)中有如下關(guān)鍵詞:提示:當(dāng)輸入的數(shù)字鍵為0時(shí),退出操作;單擊數(shù)字鍵8 ”,則為按學(xué)號刪請輸入數(shù)字鍵(18為操作鍵); 請按任意鍵進(jìn)入主界面。3. 本系統(tǒng)定義的存儲結(jié)構(gòu)采用結(jié)構(gòu)體數(shù)組:(1 )關(guān)鍵變量說明:#defi ne N 40線性表存儲空間的初始分配量

5、#defi ne in crease 10線性表存儲空間的分配量增量char n ame20;姓名int num;學(xué)號int room;房號int len gth;當(dāng)前長度stu *elem;存儲空間基址int listsize;當(dāng)前分配的存儲容量(2 )函數(shù)定義說明:#i ncludevstdio.h #in clude #in clude(3)結(jié)構(gòu)體說明:typ edef struct/定義結(jié)構(gòu)體成員 char n ame20;int num;int room;stu;stu stud;typ edef structint len gth; / stu *elem;int listsize

6、;li nklist;當(dāng)前長度/存儲空間基址/當(dāng)前分配的存儲容量4.界面設(shè)計(jì)函數(shù):void men u()/操作菜單printf (n);printf (*n);printf (n); prin 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 (提示:當(dāng)輸入的數(shù)字鍵為0時(shí),退出操作n);if ( t = 1 )* 請 按鍵選 擇操作按姓名排序按房號排序按學(xué)號查找按學(xué)號插入按學(xué)號

7、排序按姓名查找按房號查找按學(xué)號刪除printf (請輸入數(shù)字鍵(18為操作鍵):);/18為有效數(shù)字操作鍵scanf ( %d, &f ); if ( f 9 )system ( cls);printf ( n);printf (輸入數(shù)字不對,請?jiān)谠幹剌?n);printf (n);menu ();/返回主界面void dis p ()char c;fflush ( stdi n );printf ( n);printf (請按任意鍵進(jìn)入主界面:); sea nf ( %c, & c );system ( els);5.主要函數(shù)定義說明:void init ( lin klist &l )/

8、線性表初始化void menu()/操作菜單void dis p ()/返回主界面void pan dua n3 ()/如果已無學(xué)生記錄則返回主界面void shuru ( lin klist l )/輸入學(xué)生的信息void create ( lin klist & )/創(chuàng)建學(xué)生信息表void sort3 ( lin klist & )/按房號排序(采用冒泡排序)void sort2 ( lin klist & )/按學(xué)號排序(采用冒泡排序)void sortl ( lin klist & )/按姓名排序(采用冒泡排序)void printi ( lin klist &l )/打印學(xué)生信息/打

9、印查找到的學(xué)生信息/判斷是否繼續(xù)查找/如果學(xué)生不存在,判斷是否繼續(xù)查找按房號從小到大查找(采用二分查找) 按學(xué)號從小到大查找(采用二分查找) 按姓名從小到大查找(采用二分查找) /按學(xué)號從小到大插入該學(xué)生/按學(xué)號刪除該學(xué)生/主函數(shù)void print2 ( lin klist & I, i nt mid ) int pan dua n1 ( char ch ) int pan dua n2 ( char ch ) void chazhao3 ( lin klist & )/ void chazhao2 ( lin klist & )/ void chazhaol ( lin klist & )

10、/ void in sert ( lin klist & ) void Delete(li nklist &I) void main()四 程序的調(diào)試與運(yùn)行結(jié)果說明1.測試輸出結(jié)果(以運(yùn)行結(jié)果圖表示):|j CAUsersAd m i nistratorCe 5 klopDeb g2015445012五梅崖明 exe*M-WWXWMWMMhMKWM-K合管里 詢j 系 W M MM K H M W K WH W M 哇 K M 請按e意犍幵始操作:(圖 4-1)I C:Us ert Ad nniistratorDf=trtopDehuq30l54CUlS01湮ffl.mifm(圖 4-2 )的

11、三11,=:青青土呈冃生墓塞H負(fù)入?yún)?S古OE童冃1 1 Trr是否繼紳輪人?:y包.-綣2 3 -二二 第姓學(xué)一 入人人入 詰 jjgjigjjg是否址綜輸入? 3 = y尹干4 4 -二:gfS肯音土呈冃星否?djStw.A? : ViG.名號號 H AAA-A si wwnA - .I rl !6 G/* 二二二第姓一繭AAAuAAAAf - -743iir是否M續(xù)輸人7:y息的生)學(xué)刃4* 9Mwolr 號第姓AAAAFl .1 IT 1請擴(kuò)入勦於學(xué)生的信息 請臉人姓名侏1敲|a壬卑皿 誘備人當(dāng)號:個(gè)早香堆績揄A X *4直_ui| 回(圖 4-3 )I *C:ID3ersAdnnln

12、istratorDe5llctopDebLig2i0154O45O126tE.eKe具-HMHWT*褲*廩B a K W H W i青按鍵選擇撫矣再按姓名查找 按學(xué)號查找 按房號查找 按學(xué)號刪除按姓名排序 按學(xué)號排序 按房號排序 按學(xué)號插入鬍觴勰飜勲退岀操作(圖 4-4 )I * C:U-5e r刊 A Jmi ni jtorDes(圖 4-11 ) 岳5TAUse5Ad n i nktrjtorXDe skto pDeo ug201540 5015 6 梅煙韻 exe彼房號萱找請輸人妾直K的庭號匚&嶷:成功謬護(hù)信.譬善昱否繼續(xù)查我(圖 4-12 )i CAUse rsAdm in 遲 trm

13、t廿 CDEskto田DetjuqZfU S4rM5012 廳海建 0, exe赳田梅王孫李程昌対奮B1234567 871123v6789e1I D回 ; 是普維續(xù)刪除? 3宀n.(圖 4-13 )3T:U #in clude #in clude#defi ne N 40 /線性表存儲空間的初始分配量#defi ne in crease 10 /線性表存儲空間的分配量增量int f, t = 0;/定義全局變量typ edef struct/學(xué)號和房號都為整型char n ame20;int num;int room;stu;stu stud;typ edef struct 當(dāng)前長度/存儲空

14、間基址/當(dāng)前分配的存儲容量int len gth; / stu *elem;int listsize;lin klist;void init ( lin klist & )/線性表初始化l.le ngth = 0;l.elem = ( stu * ) malloc ( N * sizeof ( stu );l.listsize = N;void men u()/操作菜單printf (n);printf (*n)printf (n); prin tf(n);printf (n);printf (n);printf (n);printf (n);printf (n);printf (n);pri

15、ntf (*按姓名排序按房號排序按學(xué)號查找按學(xué)號插入請按鍵選擇操作按學(xué)號排序按姓名查找按房號查找按學(xué)號刪除n);printf (n);printf (n);printf (n);printf (n);printf (提示:當(dāng)輸入的數(shù)字鍵為0時(shí),退出操作n);if ( t = 1 )printf (請輸入數(shù)字鍵(18為操作鍵):);/18為有效數(shù)字操作鍵 scanf ( %d, &f );if ( f 9 )system ( cls);printf ( n);printf (輸入數(shù)字不對,請?jiān)谠幹剌?n);printf (n);menu ();/返回主界面void dis p ()char c

16、;fflush ( stdi n );printf ( n);printf (請按任意鍵進(jìn)入主界面:); sea nf ( %c, & c );system ( els);void panduan3 ()/如果已無學(xué)生記錄則返回主界面printf (n);printf (已無學(xué)生記錄n);printf (n);disp ();menu ();/輸入學(xué)生的信息void shuru ( lin klist l )printf (請輸入姓名:);fflush ( stdin );/清空輸入緩沖區(qū),得到正確的輸入數(shù)據(jù)gets ( );/輸入一行字符串(姓名)printf (請輸入學(xué)

17、號:);sca nf ( %d, &stud. num );printf (請輸入房號:);sca nf ( %d, & stud.room );void create ( lin klist & )/ 創(chuàng)建學(xué)生信息表 if ( l.le ngth = l.listsize )則重新分配/判斷學(xué)生的人數(shù)是否超過初值,如果超過,stu *n ewbase;n ewbase = ( stu* ) realloc ( l.elem, ( N+in crease ) * sizeof ( stu );l.elem = n ewbase;l.listsize += in crease;int i = 2

18、;char ch;printf ( n);printf (H*n);printf ( n);printf (請輸入第1個(gè)學(xué)生的信息n);shuru ( l );/調(diào)用輸入函數(shù)ch = getchar ();strc py ( l.eleml.le ngth. name, stud .n ame );l.eleml.le ngth. num = stud. num;l.eleml.le ngth.room = stud.room;l.le ngth+;printf ( n);printf (是否繼續(xù)輸入?:);sca nf ( %c, &ch );printf ( n);printf ( n);

19、while ( ch = y)printf (請輸入第%d個(gè)學(xué)生的信息n, i ); shuru ( l );strc py ( l.eleml.le ngth. name, stud .n ame ); l.eleml.le ngth. num = stud. num;l.eleml.le ngth.room = stud.room;l.le ngth+;i+;ch=getchar ();printf ( n);printf (是否繼續(xù)輸入?vy/n:);scanf ( %c, &ch );printf ( n);printf ( n);if ( ch = n ) system ( cls)

20、; void sort3 ( lin klist & )/ 按房號排序(采用冒泡排序)int i, j;stu temp;for ( i= 0; i l.le ngth - 1; i+)for ( j = i + 1; j l.elemj.room )temp = l.elemi;l.elemi = l.elemj;l.elemj = temp;void sort2 ( lin klist & )/按學(xué)號排序(采用冒泡排序)int i, j;stu temp;for ( i = 0; i l.le ngth - 1; i+ )for ( j = i + 1; j l.elemj. num )t

21、emp = l.elemi;l.elemi = l.elemj;l.elemj = temp;void sortl(lin klist & )/ 按姓名排序(采用冒泡排序)int i, j;stu temp;for ( i = 0; i l.le ngth - 1; i+ )for ( j = i + 1; j 0 ) temp = l.elemi;l.elemi = l.elemj;l.elemj = temp;void printi ( lin klist & I )/int i;printf ( n);printf (姓名printf ( n);for ( i = 0; i printf

22、 (姓名 printf ( n);printf (%-15s %-5dl.elemmid.room );/打印查找到的學(xué)生信息該學(xué)生信息為:n); 學(xué)號 房號n);%-5dn,l.elemmid. name,l.elemmid. num,/判斷是否繼續(xù)查找int pan dua n1 ( char ch )sea nf ( %c, &ch );printf (是否繼續(xù)查找?:); fflush ( stdi n );sea nf ( %c, &ch ); if ( ch =y)system (cis); return ( 1 ); elsereturn 0;/如果學(xué)生不存在,判斷是否繼續(xù)查找i

23、nt pan dua n2 ( char ch )sca nf ( %c, &ch );printf (該學(xué)生不存在,是否繼續(xù)查找?:);fflush(stdi n);sca nf(%c,&ch);if ( ch = y)system ( cis);return ( 1 );elsereturn 0;void chazhao3 ( lin klist & )/按房號從小到大查找(采用二分查找)if(i.ie ngth=O) pan dua n3();else/此函數(shù)功能為:返回主界面in t low=0,high=l.le ngth,mid,flag=O;/flag查找成功,否則沒有所要查找的

24、學(xué)生int m;char ch;作為標(biāo)志符,為1則表示printf ( n);printf ( n);printf (按房號查找- 請輸入要查找的房號:); scanf ( %d, &m );printf ( n);while ( low l.elemmid.room )low = mid + 1;elsehigh = mid - 1;if ( flag = 1 )print2 ( l, mid );/調(diào)用判斷函數(shù)1if ( pan dua n1 ( ch ) chazhao3 ( l );else system ( cls); menu (); elseif ( panduan2 ( ch

25、)/ 調(diào)用判斷函數(shù) 2chazhao3 ( l );else system ( cis);menu ();void chazhao2 ( lin klist & )/按學(xué)號從小到大查找(采用二分查找)if ( l.le ngth = 0 ) pan dua n3 ();elsein t low = 0, high = l.le ngth, mid, flag = 0;int n;char ch;printf ( n);printf ( n);printf (按學(xué)號查找- 請輸入要查找的學(xué)號:);scanf ( %d, &n );printf ( n);while ( low l.elemmid

26、. num ) low = mid + 1;elsehigh = mid - 1;if ( flag = 1)print2 ( l, mid );if( pan dua n1 ( ch ) chazhao2 ( l );elsesystem ( cls); menu (); elseif ( pan dua n2 ( ch ) chazhao2 (l); elsesystem ( cIs);menu();void chazhaol(lin klist & )/按姓名從小到大查找(采用二分查找)if ( l.le ngth = 0) pan dua n3 ();in t low = 0, hig

27、h = l.le ngth, mid, flag = 0;printf (n);printf (n);printf (按姓名查找- 請輸入要查找的姓名:); char a15, ch;scanf ( %s, a );printf ( n);while ( low 0 ) low = mid + 1;elsehigh = mid - 1;if ( flag = 1 )/打印查找到的學(xué)生的信息print2 ( l, mid );if ( pan dua n1 ( ch ) ) chazhao1 ( l ); elsesystem ( cls); menu (); else if ( pan dua

28、 n2 ( ch ) ) chazhaol ( l ); elsesystem (cis);menu ();void in sert ( lin klist & )/ 按學(xué)號從小到大插入該學(xué)生int i, j, k;char ch;printf (n);printf (插入的學(xué)生信息為:n);printf (姓名:);fflush (stdi n);/ 清空輸入緩沖區(qū),得到正確的輸入數(shù)據(jù) gets (stud .n ame);printf (學(xué)號:);sca nf (%d,&stud. nu m);printf (房號:);sca nf (%d,&stud.room);if ( l.le ng

29、th = 0 )strc py ( l.eleml.le ngth. name, stud .n ame );l.eleml.le ngth. num = stud. num;l.eleml.le ngth.room = stud.room;for ( i = 0; i Lie ngth; i+)if ( stud. num k; j-)l.elemj = l.elemj - 1;strc py ( l.elemk. name, stud. name );l.elemk. num = stud .num;l.elemk.room = stud.room; break;else strc py

30、( l.eleml.le ngth. name,stud. name );l.eleml.le ngth. num = stud. num;l.eleml.le ngth.room = stud.room;l.le ngth+;fflush (stdi n);printf (n);printf (是否繼續(xù)插入?:); scanf (%c, & ch);if(ch=y) in sert(l);else system(cls);void Delete(li nklist &)/按學(xué)號刪除該學(xué)生int i,j,k=-1;char ch;prin tf(n); prin tf(n);printf(請輸

31、入要?jiǎng)h除學(xué)生的學(xué)號:);sca nf(%d,&stud. nu m);for(i=0;il.le ngth;i+)if(stud. num=l.elemi. num)printf(該學(xué)生的信息為:n);printf(n);prin tf(%-15s %-3d %7dn,l.elemi. name,l.elemi. num,l.elemi.room);k=i;for(j=k;j=l.length) printf(該學(xué)生不存在 n);if(k=O)l.le ngth-;fflush(stdi n);prin tf(n);printf(是否繼續(xù)刪除?:);sca nf(%c,&ch);system(cls);if(ch=y)Delete(l);else system(cls);void main()lin klist l;in it(l);char ch; system(color a); prin tf(n);printf(/主函數(shù)/定義線性表l/調(diào)用初始化函數(shù)*歡迎進(jìn)入宿舍管理查詢系統(tǒng)*n);prin tf(n);printf(請按任意鍵開始操作:);sca nf(%c, & ch);system(cls);/將屏幕先前顯示的內(nèi)容

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論