版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計宿舍管理查詢軟件學院:信息科學技術(shù)學院班級:信計082學號:0841110Q,姓名:余鵬指導教師:并接完成日期:2010年12月目錄一、設(shè)計任務(wù)3二、總體設(shè)計3三、系統(tǒng)流程圖3四、詳細設(shè)計及測試5五、心得體會12附錄:源代碼13一、設(shè)計任務(wù)題目:宿舍管理查詢軟件任務(wù):為宿舍管理人員編寫一個宿舍管理查詢軟件,程序設(shè)計要求:(1)建立數(shù)據(jù)文件,數(shù)據(jù)文件按關(guān)鍵字(姓名、學號、房號)進行排序(冒泡、選擇、插入排序等任選一種)(2)實現(xiàn)如下查詢功能:按姓名查詢按學號查詢按房號查詢(3)打印任意查詢結(jié)果(可以連續(xù)操作)針對題目所要求的功能不太多,我特意添加了插入數(shù)據(jù)、讀入文件數(shù)據(jù)以及將數(shù)據(jù)
2、寫入文件三個額外功能。二、總體設(shè)計根據(jù)系統(tǒng)要求,即本系統(tǒng)具有信息的錄入,顯示,排序顯示、查找,插入、從文件中讀入數(shù)據(jù)、循環(huán)寫入數(shù)據(jù)、結(jié)束程序等功能,先設(shè)計出詳細的系統(tǒng)流程圖,然后將源代碼輸入程序,進行編譯調(diào)試即可。程序總體分12個項目:輸入記錄、顯示記錄、按姓名排序并顯示、按房間號排序并顯示、按學號排序并顯示、按姓名查找并顯示、按房問號查找并顯示、按學號查找并顯示、插入一條記錄按學號排序并顯示、從文件中讀入數(shù)據(jù)、循環(huán)寫入數(shù)據(jù)以及結(jié)束程序。三、系統(tǒng)流程圖系統(tǒng)流程圖下頁圖所示四、詳細設(shè)計及測試根據(jù)流程圖,將程序源代碼輸入到編譯環(huán)境中,按照提示選擇進行記錄的輸入,輸入一個數(shù)據(jù)后提示是否繼續(xù)輸入,直到
3、結(jié)束程序為止。將程序編譯生成“學生宿舍管理系統(tǒng).exe”。運行該文件如圖1所示。12345670090101工支記記一名間號名間號一件寫程運學錄錄排口1一號查番人?行際顯一在嗑一變千據(jù)顯并顯顯并顯按數(shù)并序并£開?據(jù)tg查找記讀數(shù)*1>T<0按項選的圖1輸出界面圖輸入記錄采用循環(huán)輸入while(sign!='n'&&sign!='N')/*判斷*/(printf("tt姓名:");scanf("tt%s",&roomn+);printf("tt學號:&quo
4、t;);scanf("tt%s",&roomn+i.num);printf("tt房間號:");scanf("tt%s",&roomn+i.roomnum);printf("tt是否繼續(xù)輸入?(Y/N)");scanf("tt%c",&sign);/*輸入判斷*/i+;返回(n+i);按照提示選擇“1”進行記錄的輸入如圖2所示:圖2輸入記錄顯示圖連續(xù)輸入多組數(shù)據(jù)后,按“n”結(jié)束輸入,提示按任意鍵繼續(xù),按任意鍵后選擇“2”進行記錄的顯示如圖3所示。bu示顯并序LL示小示顯示
5、示顯一歪子據(jù)顯并顯顯并卷數(shù)并序一開需開支據(jù)查找記讀數(shù)*:21)T<0按項選的學錄錄排口哥查蓋入室行*記記名問號名間號一件寫程運士入示姓愿于姓廈天文環(huán)委要輸顯您錄W12345678Q-010選-下房間號學號姓名105200?01左二103200915本四225201088主五請按任意鍵繼續(xù).圖3顯示所有記錄按姓名排序采用冒泡排序法。inti,j;chart10;for(i=0;i<n-1;i+)/*冒泡法排序*/for(j=0;j<n-1-i;j+)if(strcmp(,roomj+1.name)>0)strcpy(t,roomj+1.name);st
6、rcpy(roomj+1.name,);strcpy(,t);strcpy(t,roomj+1.num);strcpy(roomj+1.num,roomj.num);strcpy(roomj.num,t);strcpy(t,roomj+1.roomnum);strcpy(roomj+1.roomnum,roomj.roomnum);strcpy(roomj.roomnum,t);顯示后提示按任意鍵繼續(xù),選擇“3”進行按姓名排序并顯示,如圖4所示。E:去件安裝包VC6cNMyPrqjectn謖程設(shè)計曰bu9,湃程設(shè)計,exb,于錄錄排口與號查香入E行顯k記
7、記名間號名間號-件寫程運并x人示姓愿于姓愿又文班年要序,KVK123456789016選姓序系Hi二理示顯示示顯.無乎據(jù)顯一開顯顯-開顯按數(shù)并存turn開關(guān)據(jù)查找記讀數(shù)示顯并序th*:3!>T<«按項*選的示李四王五1032M09152252A1088105200901請按任意鍵繼續(xù).一按房間號排序采用冒泡排序法for(i=0;i<n-1;i+)/*冒泡法排序*/for(j=0;j<n-1-i;j+)if(strcmp(roomj.roomnum,roomj+1.roomnum)>0)(strcpy(t,roomj+1.num);strcpy(roomj
8、+1.num,roomj.num);strcpy(roomj.num,t);strcpy(t,roomj+1.roomnum);strcpy(roomj+1.roomnum,roomj.roomnum);strcpy(roomj.roomnum,t);strcpy(t,roomj+1.name);strcpy(roomj+1.name,);strcpy(,t);顯示后提示按任意鍵繼續(xù),選擇“4”進行按房間號排序并顯示,如圖5所*£:徽件安裝包/匚6£明的同日心課程設(shè)計0巴卜091淳程-設(shè)計exe輸顯您口豆123456789010選房記
9、記名間號名間號-件寫程運序入示姓愿于姓愿天幫至S系川-一理示顯示示顯一公子據(jù)顯一開顯顯一開顯按數(shù)并序一開翦開查找記讀數(shù)*:4!>TC0按項選派的顯房間號學號姓名183200915幸坦105200901米三225201888主五請按任意鍵繼續(xù)-同樣學號排序也是用的冒泡法排序0for(i=0;i<n-1;i+)/*冒泡法排序*/for(j=0;j<n-1-i;j+)if(strcmp(roomj.num,roomj+1.num)>0)strcpy(t,roomj+1.roomnum);strcpy(roomj+1.roomnum,roomj.roomnum);strcpy(
10、roomj.roomnum,t);strcpy(t,roomj+1.num);strcpy(roomj+1.num,roomj.num);strcpy(roomj.num,t);strcpy(t,roomj+1.name);strcpy(roomj+1.name,);strcpy(,t);顯示后提示按任意鍵繼續(xù),選擇“5”進行按學號排序并顯示,如圖6所示。缶做件安裝包WC6CNMyPrcjg六課程沒計時涕程設(shè)計總xe”0t學錄錄排411_號查雷入室行顯成記記名間號名間號一件寫程運并序入示姓暈姓屋天文環(huán)里要媒輸顯你界擇號123456789010選學示顯示示
11、顯一恐子據(jù)顯并顯顯并顯按數(shù)并序書孩開類據(jù)41查找記讀數(shù):51>I<0按項選!的示功房間號學號姓名10520090110320091522520109B請按任意鍵繼續(xù).王五功能6-8為查找功能按姓名查找并顯示功能printf("tt輸入要查找的姓名:");scanf("%s",s);while(strcmp(,s)!=0&&i<n)i+;/*if(i=n)printf("tt對不起沒有找到該學生!n");/*查找判斷*/返回失敗信息*/elseDisplay_a_record(roo
12、m1,i);/*調(diào)用函數(shù)*/顯示后提示按任意鍵繼續(xù),選擇“6”按提示步驟按學號查找一條記錄并顯示,如圖7所示。舊璇件安裝包4VCGCN'.MyProjects、課程注=+Dubug*說程迨計exe'2345678901g選姓一記記名問號名間號一件寫程入示姓屋子姓屋又文環(huán)市輸顯Is標警查擇名要佰并序一開孩開京據(jù)選王查找記讀數(shù)的于錄錄排口號查番入室行示示會示顯示示顯一互于據(jù)顯并顯顯并顯按數(shù)房間號學號姓名105200901張三請按任意鍵繼續(xù).圖7按姓名查找并顯示圖按房間號查找和按學號查找的方法大同小異。分別輸入“7”、“8”顯示截圖如下頁示顯并序LLF_不顯示示顯一公子掂顯并顯顯并顯
13、按數(shù)項選的學錄錄排口號查番入手行記記名間號備號一件寫程運入示姓屋子姓晟又文環(huán)里輸顯你善查擇號要12345t7890iSJ*r人.號學號間房Z25201088王五請按任意鍵繼續(xù).圖9按學號查找并顯示圖n)/*插入一條記錄并按學號排序*/*調(diào)用排序函數(shù)*/*返回成功信息*/圖8按房間號查找并顯示圖功能9為插入一條記錄按學號排序并顯示。intInsert_a_record(Studentroom,intprintf("tt學生姓名:");scanf("tt%s",&);printf("tt學生學號:");scan
14、f("tt%s",&roomn.num);printf("tt學生房間號:");scanf("tt%s",&roomn.roomnum);n+;Sort_by_num(room,n);printf("tt插入記錄成功!n");return(n);顯示后提示按任意鍵繼續(xù),選擇9”進行插入數(shù)據(jù),如下頁圖10所示。圖10插入一條記錄按學號排序并顯示圖五、心得體會這次課程設(shè)計我做的還不是很完善,因為功能不是很多,如果以后有機會完善的話,應(yīng)該對管理員和用戶登錄時做進一步完善。學生的信息還不夠完整,如學生的宿舍
15、長,系別,一些費用以及學生的成績等待相關(guān)詳細信息。如果使次系統(tǒng)再詳細些,需添加更多的管理員以及管理員權(quán)限,還有學生的更多信息,如果有必要的話,添加一些有關(guān)教師的信息,以及教師登錄的界面。在這次課程設(shè)計的過程中,我們體會到要想開發(fā)一個系統(tǒng)軟件,不僅需要相當?shù)膶I(yè)技術(shù)知識,還要有嚴謹縝密的思維能力。只有思想上清晰了,編程才有意義,否則就是白費力氣。同時還要善于捕獲細小的方面,因為那往往是這個程序的致命因素。這次課程設(shè)計培養(yǎng)了我的細心和耐性,更樹立了一種科學的態(tài)度。附錄:源代碼#include<stdio.h>#include<stdlib.h>#include<cty
16、pe.h>#include<string.h>typedefstruct(charroomnum4;charnum10;charname20;Student;Studentroom11000;intmenu()(charc;dosystem("cls");t學生宿舍管理系統(tǒng)n");t§1.輸入記錄§n");t§2.顯示記錄§n");t§3.按姓名排序并顯示§n");t§4.按房間號排序并顯示§n");t§5.按學號排序
17、并顯示§n");t§6.按姓名查找并顯示§n");t§7.按房間號查找并顯示§n");t§8.按學號查找并顯示§n");t§9.插入一條記錄按學號排序并顯示§n");t§10.從文件中讀入數(shù)據(jù)§n");t§11.循環(huán)寫入數(shù)據(jù)§n");t§0.結(jié)束程序§n");tn");請選擇您要運行的選項按(0-11):");c=getchar();)while(
18、c<'0'11c>'11');return(c-'0');)intInput(Studentroom口,intn)inti=0;charsign;while(sign!='n'&&sign!='N')printf("tt姓名:");scanf("tt%s",&roomn+);printf("tt學號:");scanf("tt%s",&roomn+i.num);printf(&quo
19、t;tt房間號:");scanf("tt%s",&roomn+i.roomnum);printf("tt是否繼續(xù)輸入?(Y/N)");scanf("tt%c",&sign);i+;)return(n+i);)voidDisplay_all_record(Studentroom,intn)inti;printf("ttn");printf("tt房間號學號姓名n");printf("ttn");for(i=1;i<n+1;i+)(printf(&
20、quot;tt%-10s%-10s%-10sn",roomi-1.roomnum,roomi-1.num,);printf("tt");system("pause");voidDisplay_a_record(Studentroom,intn)(printf("ttn");printf("tt房間號學號姓名n");printf("ttn");printf("tt%-10s%-10s%-10sn",roomn.roomnum,roomn.num
21、,);/*輸出所查找的一條記錄*/printf("n");printf("tt");voidSort_by_name(Studentroom,intn)(inti,j;chart10;for(i=0;i<n-1;i+)for(j=0;j<n-1-i;j+)strcpy(t,roomj+1.name);strcpy(roomj+1.name,);strcpy(,t);strcpy(t,roomj+1.num);strcpy(roomj+1.num,roomj.num);strcpy(r
22、oomj.num,t);strcpy(t,roomj+1.roomnum);strcpy(roomj+1.roomnum,roomj.roomnum);strcpy(roomj.roomnum,t);)voidSort_by_num(Studentroom,intn)(inti,j;chart10;for(i=0;i<n-1;i+)for(j=0;j<n-1-i;j+)if(strcmp(roomj.num,roomj+1.num)>0)(strcpy(t,roomj+1.roomnum);strcpy(roomj+1.roomnum,roomj.roomnum);strcp
23、y(roomj.roomnum,t);strcpy(t,roomj+1.num);strcpy(roomj+1.num,roomj.num);strcpy(roomj.num,t);strcpy(t,roomj+1.name);strcpy(roomj+1.name,);strcpy(,t);)voidSort_by_roomnum(Studentroom,intn)(inti,j;chart10;for(i=0;i<n-1;i+)for(j=0;j<n-1-i;j+)if(strcmp(roomj.roomnum,roomj+1.roomn
24、um)>0)(strcpy(t,roomj+1.num);strcpy(roomj+1.num,roomj.num);strcpy(roomj.num,t);strcpy(t,roomj+1.roomnum);strcpy(roomj+1.roomnum,roomj.roomnum);strcpy(roomj.roomnum,t);strcpy(t,roomj+1.name);strcpy(roomj+1.name,);strcpy(,t);)voidFind_record_name(Studentroom,intn)chars10;inti=0;
25、printf("tt輸入要查找的姓名:");scanf("%s",s);while(strcmp(,s)!=0&&i<n)i+;if(i=n)(printf("tt對不起沒有找到該學生!n");elseDisplay_a_record(room1,i);voidFind_record_rommnum(Studentroom,intn)chars20;inti=0;printf("tt輸入要查找的房間號:");scanf("%s",s);while(str
26、cmp(roomi.roomnum,s)!=0&&i<n)i+;if(i=n)printf("tt對不起沒有找到該學生!n");elseDisplay_a_record(room1,i);voidFind_record_num(Studentroom,intn)chars20;inti=0;printf("tt輸入要查找的學號:");scanf("%s",s);while(strcmp(roomi.num,s)!=0&&i<n)i+;if(i=n)!n");printf("
27、;tt對不起沒有找到該學生elseDisplay_a_record(room1,i);intInsert_a_record(Studentroom,intn)printf("tt學生姓名:");scanf("tt%s",&);printf("tt學生學號:");scanf("tt%s",&roomn.num);printf("tt學生房間號:");scanf("tt%s",&roomn.roomnum);n+;Sort_by_num
28、(room,n);printf("tt插入記錄成功!n");return(n);intAddfromText(Studentroom,intn)inti=0,num;FILE*fp;charfilename20;printf("tt輸入文件名:");scanf("tt%s",&filename);if(fp=fopen(filename,"rb")=NULL)printf("tt無法打開該文件n");printf("tt");system("pause&qu
29、ot;);return(n);fscanf(fp,"%d",&num);while(i<num)fscanf(fp,"%s%s%s%s",roomn+i.roomnum,roomn+i.num,roomn+);i+;n+=num;fclose(fp);printf("tt讀入成功!n");printf("tt");system("pause");return(n);voidWritetoText(Studentroom,intn)inti=0;FILE*fp;charf
30、ilename100;printf("tt循環(huán)寫入數(shù)據(jù)n");printf("tt輸入文件名:");scanf("tt%s",&filename);if(fp=fopen(filename,"w")=NULL)(printf("tt無法打開該文件n");system("pause");return;fprintf(fp,"%dn",n);while(i<n)(fprintf(fp,"%-10s%-10s%-10s%-10sn&quo
31、t;,roomi.roomnum,roomi.num,);i+;fclose(fp);printf("寫入成功!n");intmain()(intn=0;for(;)(switch(menu()(case 1:printf("tt輸入記錄n");n=Input(room1,n);break;case 2:Display_all_record(room1,n);break;case 3:printf("tt按姓名排序并顯示n");Sort_by_name(room1,n);printf("tt排序成功!n");Display_all_record(room1,n);printf("tt");break;case 4:printf("tt按房間號排序并顯示n");Sor
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度高新技術(shù)研發(fā)廠房租賃合同3篇
- 2024版汽車租賃合同樣本6篇
- 二零二五年度駕校學員駕駛技能競賽組織與管理合同3篇
- 二零二四企業(yè)銷售合同合規(guī)性審核與風險防范協(xié)議3篇
- 2025年度西餐廳桌椅設(shè)計采購及裝修合同模板3篇
- 2025年度科技企業(yè)戰(zhàn)略合作伙伴股權(quán)調(diào)整協(xié)議書3篇
- 二零二五年度航空航天器打膠工藝優(yōu)化合同2篇
- 2025版汽車金融臨時借款合同范例4篇
- 二零二五年度環(huán)保產(chǎn)品認證服務(wù)合同環(huán)保條款3篇
- 二零二四年農(nóng)產(chǎn)品電商平臺會員服務(wù)及積分獎勵合同3篇
- 二零二五年度無人駕駛車輛測試合同免責協(xié)議書
- 北京市海淀區(qū)2024-2025學年高一上學期期末考試歷史試題(含答案)
- 常用口服藥品的正確使用方法
- 2025年湖北華中科技大學招聘實驗技術(shù)人員52名歷年高頻重點提升(共500題)附帶答案詳解
- 2024年鉆探工程勞務(wù)協(xié)作協(xié)議樣式版B版
- 《心肺復蘇機救治院內(nèi)心搏驟?;颊咦o理專家共識》解讀
- 計算機二級WPS考試試題
- 智聯(lián)招聘行測題庫及答案
- 2023中華護理學會團體標準-注射相關(guān)感染預防與控制
- GB∕T 2099.1-2021 家用和類似用途插頭插座 第1部分:通用要求
- 超潔凈管道(CL-PVC)施工技術(shù)
評論
0/150
提交評論