版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、課 程 設(shè) 計課程設(shè)計名稱: 宿舍管理查詢軟件 專 業(yè) 班 級 : 計科0604 學(xué) 生 姓 名 : 胡方俊 學(xué) 號 :20064140414 指 導(dǎo) 教 師 : 白浩 課程設(shè)計時間: 2008年6月23日 1 需求分析 為一個宿舍設(shè)計管理查詢軟件,每當(dāng)進(jìn)入個新同學(xué),可以輸入他的姓名,學(xué)號以及 號碼,并且可以把他們的所有信息按學(xué)號從小到大排列,能按照姓名查找并顯示其所有信息,也可以按照姓名刪除某個學(xué)生的信息。2 概要設(shè)計2.1 使用C語言中的結(jié)構(gòu)體鏈表來存儲數(shù)據(jù)結(jié)構(gòu)體鏈表可以方便存儲成組的相關(guān)數(shù)據(jù)。結(jié)構(gòu)體鏈表可以方便結(jié)構(gòu)體的添加、刪除、查找。另外結(jié)構(gòu)體鏈表可以讓一個結(jié)構(gòu)體的相關(guān)數(shù)據(jù)集體存儲,不
2、僅十分方便我們對數(shù)據(jù)的操作,而且讓程序的的思路特別清晰,讓程序更加清晰易懂。通過對結(jié)構(gòu)以鏈表的操作來控制數(shù)據(jù)。在添加數(shù)據(jù)時,增加鏈表的長度,在刪除時先通過查找找到此數(shù)據(jù)的前驅(qū)和后續(xù),來對數(shù)據(jù)進(jìn)行刪除。學(xué)會用文件的拷貝來實(shí)現(xiàn)冒泡法排序,這也是一種不同于常規(guī)的新方法。2.2 用戶界面設(shè)計窗口包括: 1:添加所有學(xué)生的信息 2:顯示學(xué)生所有信息 3:按學(xué)號進(jìn)行排序 4:插入學(xué)生所有信 5:按姓名刪除學(xué)生信息 6:查找學(xué)生所有的信息 0:退出學(xué)生信息管理系統(tǒng) 2.3 運(yùn)行說明 此程序在使用時,應(yīng)該先進(jìn)性多個學(xué)生信息的添加,之后才能進(jìn)行相關(guān)的操作,否則將不會顯示學(xué)生的信息,并提示重新操作。3 運(yùn)行環(huán)境3
3、.1 硬件環(huán)境一般的(1)Windows Vista/2003/XP(2)計算機(jī)及VisualC+6.0編程環(huán)境。4 開發(fā)工具和編程語言4.1 開發(fā)工具4.2 編程語言Visual C5 詳細(xì)設(shè)計 在宿舍管理系統(tǒng)里面添加學(xué)生信息 (1)添加學(xué)生信息的基本原理用指針*P來創(chuàng)建一個存儲單元,來存儲圖書的信息:學(xué)生的姓名、學(xué)號、 號碼。然后再和鏈變相連,有結(jié)構(gòu)體鏈表來存儲所有學(xué)生的信息。*指針只想最后一個結(jié)構(gòu)體鏈表的最后一個結(jié)構(gòu)體(2)添加學(xué)生信息的原理圖存儲圖書的結(jié)構(gòu)體單元P 的next指向NULL5.2 在宿舍管理系統(tǒng)中顯示所有學(xué)生的信息用printf來顯示學(xué)生的信息,并且用for循環(huán)來實(shí)現(xiàn)所有
4、的學(xué)生信息都能顯示。 在宿舍管理系統(tǒng)中按學(xué)號進(jìn)行排序 利用拷貝函數(shù)實(shí)現(xiàn)冒泡法排序,學(xué)號與學(xué)號間進(jìn)行大小的相互比較,大的自動下沉,這樣每進(jìn)行一次比較,大的都會沉到下面,最終是由小到大的排列。 在宿舍管理系統(tǒng)中按姓名進(jìn)行刪除信息首先用指針找到此學(xué)生的前驅(qū)和后續(xù),然后讓前驅(qū)的NEXT指向后續(xù),就刪除所要刪除的信息了。程序源代碼#include /*引用庫函數(shù)*/ #include #include #include typedef struct /*定義結(jié)構(gòu)體數(shù)組*/ char num10; /*學(xué)號*/ char name20; /*姓名*/ long tel; /* */ Student; St
5、udent stu80; /*結(jié)構(gòu)體數(shù)組變量*/ int menu_select() /*菜單函數(shù)*/ char c; do system(cls); /*運(yùn)行前清屏*/ printf(*n); printf(*歡迎進(jìn)入宿舍管理系統(tǒng)*n );printf(*1:添加所有學(xué)生的信息*n);printf(*2:顯示學(xué)生所有信息*n);printf(*3:按學(xué)號進(jìn)行排序*n);printf(*4:插入學(xué)生所有信息*n);printf(*5:按姓名刪除學(xué)生信息*n);printf(*6:查找學(xué)生所有的信息*n);printf(*0:退出學(xué)生信息管理系統(tǒng)*n);printf(*n);printf(請選擇
6、功能選項(xiàng):);c=getchar(); /*讀入選擇*/ while(c9); return(c-0); /*返回選擇*/ int Input(Student stud,int n) /*輸入若干條記錄*/ int i=0; char sign,x10; /*x10為清除多余的數(shù)據(jù)所用*/ while(sign!=n&sign!=N) /*判斷*/ printf(tttstudents num:); /*交互輸入*/ scanf(ttt%s,studn+i.num); printf(tttstudents name:); scanf(ttt%s,studn+); printf(tt
7、tstudents tel:); scanf(ttt%d,&studn+i.tel); gets(x); /*清除多余的輸入*/ printf(tttany more records?(Y/N); scanf(ttt%c,&sign); /*輸入判斷*/ i+; return(n+i); void Display(Student stud,int n) /*顯示所有記錄*/ int i; printf(ttt-n); /*格式頭*/ printf(tttnumber name teln); printf(ttt-n); for(i=1;i1&i%10=0) /*每十個暫停*/ printf(t
8、tt-n); /*格式*/ printf(ttt); system(pause); printf(ttt-n); printf(ttt); system(pause); void Sort_by_num(Student stud,int n) /*按學(xué)號排序*/ int i,j,*p,*q,s; char t10; for(i=0;in-1;i+) /*冒泡法排序*/ for(j=0;j0) strcpy(t,studj+1.num); strcpy(studj+1.num,studj.num); strcpy(studj.num,t); strcpy(t,studj+1.name); str
9、cpy(studj+1.name,); strcpy(,t); p=&studj+1.tel; q=&studj.tel; s=*p; *p=*q; *q=s; int Insert_a_record(Student stud,int n) /*插入一條記錄*/ char x10; /*清除多余輸入所用*/ printf(tttstudents num:); /*交互式輸入*/ scanf(ttt%s,studn.num); printf(tttstudents name:); scanf(ttt%s,); printf(tttstu
10、dents tel:); scanf(ttt%d,&studn.tel); gets(x); n+; Sort_by_num(stud,n); /*調(diào)用排序函數(shù)*/ printf(tttInsert Successed!n); /*返回成功信息*/ return(n); int Delete_a_record(Student stud,int n) /*按姓名查找,刪除一條記錄*/ char s20; int i=0,j; printf(ttttell me his(her) name:); /*交互式問尋*/ scanf(%s,s); while(strcmp(,s)!=
11、0&in) i+; /*查找判斷*/ if(i=n) printf(tttnot find!n); /*返回失敗信息*/ return(n); for(j=i;jn-1;j+) /*刪除操作*/ strcpy(studj.num,studj+1.num); strcpy(,studj+1.name); studj.tel=studj+1.tel; printf(tttDelete Successed!n); /*返回成功信息*/ return(n-1); void Query_a_record(Student stud,int n) /*查找并顯示一個記錄*/ char s
12、20; int i=0; printf(tttinput his(her) name:); /*交互式輸入*/ scanf(ttt%s,s); while(strcmp(,s)!=0&in) i+; /*查找判斷*/ if(i=n) printf(tttnot find!n); /*輸入失敗信息*/ return; printf(ttthis(her) number:%sn,studi.num); /*輸出該學(xué)生信息*/ printf(ttthis(her) tel:%dn,studi.tel); int AddfromText(Student stud,int n) /*
13、從文件中讀入數(shù)據(jù)*/ int i=0,num; FILE *fp; /*定義文件指針*/ char filename20; /*定義文件名*/ printf(tttInput the filename:); scanf(ttt%s,filename); /*輸入文件名*/ if(fp=fopen(filename,rb)=NULL) /*打開文件*/ printf(tttcannt open the filen); /*打開失敗信息*/ printf(ttt); system(pause); return(n); fscanf(fp,%d,&num); /*讀入總記錄量*/ while(inu
14、m) /*循環(huán)讀入數(shù)據(jù)*/ fscanf(fp,%s%s%d,studn+i.num,studn+,&studn+i.tel); i+; n+=num; fclose(fp); /*關(guān)閉文件*/ printf(tttSuccessed!n); printf(ttt); system(pause); return(n); void WritetoText(Student stud,int n) /*將所有記錄寫入文件*/ int i=0; FILE *fp; /*定義文件指針*/ char filename20; /*定義文件名*/ printf(tttWrite Records t
15、o a Text Filen); /*輸入文件名*/ printf(tttInput the filename:); scanf(ttt%s,filename); if(fp=fopen(filename,w)=NULL) /*打開文件*/ printf(tttcannt open the filen); system(pause); return; fprintf(fp,%dn,n); /*循環(huán)寫入數(shù)據(jù)*/ while(in) fprintf(fp,%-16s%-15s%dn,studi.num,,studi.tel); i+; fclose(fp); /*關(guān)閉文件*/
16、printf(Successed!n); /*返回成功信息*/ void main() /*主函數(shù)*/ int n=0; for(;) switch(menu_select() /*選擇判斷*/ case 1: printf(tttInput Recordsn); /*輸入若干條記錄*/ n=Input(stu,n); break; case 2: printf(tttDisplay All Recordsn); /*顯示所有記錄*/ Display(stu,n); break; case 3: printf(tttSortn); Sort_by_num(stu,n); /*按學(xué)號排序*/ p
17、rintf(tttSort Suceessed!n); printf(ttt); system(pause); break; case 4: printf(tttInsert a Recordn); n=Insert_a_record(stu,n); /*插入一條記錄*/ printf(ttt); system(pause); break; case 5: printf(tttDelete a Recordn); n=Delete_a_record(stu,n); /*按姓名查找,刪除一條記錄*/ printf(ttt); system(pause); break; case 6: print
18、f(tttQueryn); Query_a_record(stu,n); /*查找并顯示一個記錄*/ printf(ttt); system(pause); break; case 0: printf(tttHave a Good Luck,Bye-bye!n); /*結(jié)束程序*/ printf(ttt); system(pause); exit(0); 6 調(diào)試分析開始部分 6.2 添加學(xué)生信息 6.3 顯示學(xué)生信息按學(xué)號進(jìn)行排序 6.5 排序后顯示的結(jié)果6.6 插入新學(xué)生的信息 按姓名刪除學(xué)生信息 6.8 刪除進(jìn)行排序后顯示的結(jié)果6.9 按姓名查找學(xué)生的信息 6.10 退出管理系統(tǒng) 程序設(shè)計總結(jié)自己設(shè)計的宿舍管理系統(tǒng)基本實(shí)現(xiàn)了所要求的功能:1:添加所有學(xué)生的信息 2:顯示學(xué)生所有信息 3:按學(xué)號進(jìn)行排序 4:插入學(xué)生所有信息
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年牙科產(chǎn)品市場營銷與推廣合同模板3篇
- 2024年中級經(jīng)濟(jì)師考試題庫實(shí)驗(yàn)班
- 2025年度個人二手房購房合同范本及裝修款項(xiàng)分期支付協(xié)議2篇
- CEEM《全球智庫半月談》總第295期
- 銀山路施工方案審查
- 2024年中級經(jīng)濟(jì)師考試題庫附答案【模擬題】
- 音響安裝施工方案
- 2024年中級經(jīng)濟(jì)師考試題庫含完整答案
- 泥巖回填施工方案
- 二零二五年度高端品牌專賣店產(chǎn)權(quán)移交合同4篇
- 專升本英語閱讀理解50篇
- 施工單位值班人員安全交底和要求
- 中國保險用戶需求趨勢洞察報告
- 數(shù)字化轉(zhuǎn)型指南 星展銀行如何成為“全球最佳銀行”
- 中餐烹飪技法大全
- 靈芝孢子油減毒作用課件
- 現(xiàn)場工藝紀(jì)律檢查表
- 醫(yī)院品管圈與護(hù)理質(zhì)量持續(xù)改進(jìn)PDCA案例降低ICU病人失禁性皮炎發(fā)生率
- 新型電力系統(tǒng)研究
- 烘干廠股東合作協(xié)議書
- 法院服務(wù)外包投標(biāo)方案(技術(shù)標(biāo))
評論
0/150
提交評論