數(shù)據(jù)結(jié)構(gòu)宿舍管理系統(tǒng)實驗報告.doc_第1頁
數(shù)據(jù)結(jié)構(gòu)宿舍管理系統(tǒng)實驗報告.doc_第2頁
數(shù)據(jù)結(jié)構(gòu)宿舍管理系統(tǒng)實驗報告.doc_第3頁
數(shù)據(jù)結(jié)構(gòu)宿舍管理系統(tǒng)實驗報告.doc_第4頁
數(shù)據(jù)結(jié)構(gòu)宿舍管理系統(tǒng)實驗報告.doc_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告設(shè)計題目 宿舍管理系統(tǒng) 專 業(yè) 信息技術(shù)學院 班 級 計算機科學與技術(shù) 姓 名 顧文婷 學 號 121114045 完成日期 2014年6月10日 目 錄1. 問題描述32. 系統(tǒng)設(shè)計3.43. 數(shù)據(jù)結(jié)構(gòu)與算法描述4-74. 測試結(jié)果與分析8-135. 總 結(jié)13-146. 參考文獻14附錄 程序源代碼 15-35宿舍管理系統(tǒng)1. 問題描述 建立宿舍管理系統(tǒng),統(tǒng)計信息包括學生姓名,年齡,出生年月日,性別,學號,班級,系別,床號。2. 系統(tǒng)設(shè)計2.1 設(shè)計目標宿舍一般由若干學生入駐,每個宿舍都有獨立唯一的編號,入住學生也有唯一的學號,另外添加學生的姓名和班級,使用這些關(guān)鍵字就可以方便的查詢和管理宿舍入住情況。程序設(shè)計應(yīng)采用交互工作方式,并建立數(shù)據(jù)文件。程序應(yīng)通過建立子函數(shù)實現(xiàn)創(chuàng)建、保存與載入數(shù)據(jù)文件,查找、添加、刪除、更改、顯示等功能,可以自動保存修改。應(yīng)具有友好的界面和較強的容錯能力。能夠迅速準確地完成各種學生信息的統(tǒng)計和查詢,以方便管理員對學生信息的統(tǒng)一管理。2.2 設(shè)計思想為方便管理員對系統(tǒng)進行操作,程序應(yīng)具有以下功能:(1)創(chuàng)建宿舍數(shù)據(jù)文件,并提示管理員輸入學生姓名、學號、宿舍號、班級等信息,并在本地保存數(shù)據(jù)文件(2)打開宿舍數(shù)據(jù)文件:輸入文件名打開保存過的數(shù)據(jù)文件(3)查詢住宿信息:提供學號、姓名、宿舍號三種查詢方式(4)添加住宿信息:在數(shù)據(jù)文件中添加新的住宿信息(5)刪除住宿信息:提示管理員輸入要刪除的學生姓名,驗證后刪除(6)修改住宿信息:提示管理員輸入要修改的學生姓名,驗證后修改(7)輸出數(shù)據(jù)文件:將住宿信息按學號的大小排序全部輸出(8)退出系統(tǒng)2.3 系統(tǒng)模塊劃分(要給出流程圖)3. 數(shù)據(jù)結(jié)構(gòu)與算法描述 函數(shù)原型 函數(shù)功能函數(shù)處理描述void creat() 初始條件,創(chuàng)建新數(shù)據(jù)文件,用于存放學生信息調(diào)用文件操作函數(shù)來實現(xiàn)void readfile() 文件讀取函數(shù),打開已有的數(shù)據(jù)文件調(diào)用文件操作函數(shù)來實現(xiàn)void output()輸出函數(shù),用于輸出所有的學生信息調(diào)用文件操作函數(shù),并將學號作為關(guān)鍵字進行冒泡排序再輸出voidnamesearch()查找函數(shù),用于以姓名為關(guān)鍵字查詢使用指針,將關(guān)鍵字與記錄比較,若相同則輸出void numsearch()查找函數(shù),用于以學號為關(guān)鍵字查詢使用指針,將關(guān)鍵字與記錄比較,若相同則輸出Void dorsearch ()查找函數(shù),用于以房號為關(guān)鍵字查詢使用指針,將關(guān)鍵字與記錄比較,若相同則輸出void add()添加函數(shù),以姓名為關(guān)鍵字加入新的學生信息使用指針,建立一個新節(jié)點,將新信息插入原文件中void modify()修改函數(shù),用于以修改已存在的學生信息,以姓名為關(guān)鍵字使用指針,將關(guān)鍵字與記錄比較,若相同則更改原紀錄并保存在原文件中void deleted()刪除函數(shù),用于刪除所選的學生信息,以姓名為關(guān)鍵字使用指針,將關(guān)鍵字與記錄比較,若相同則刪除一切相關(guān)記錄void main()主函數(shù),用于調(diào)用子函數(shù)按照輸入的命令調(diào)用已定義的子函數(shù)3.1創(chuàng)建功能(void creat())使用函數(shù)新建鏈表,再使用while循環(huán)完成對宿舍數(shù)據(jù)的錄入,包括姓名、學號、班級、宿舍號等信息。最終將錄入數(shù)據(jù)保存在數(shù)組里。完成輸入后,輸入#結(jié)束循環(huán)。3.2讀取功能(void readfile())使用函數(shù)讀取數(shù)據(jù)文件,根據(jù)輸入的文件名加載保存在本地的數(shù)據(jù)文件,若找不到相同名稱文件,則輸出錯誤提示。3.3查找功能 (void namesearch(),void numsearch(),void groupsearch())通過輸入選擇相關(guān)的查詢函數(shù)來完成查找功能,使用指針將關(guān)鍵字與記錄比較,若相同則輸出,若無相同則輸出錯誤提示。3.4修改功能(void Modify())使用函數(shù)定義指向結(jié)構(gòu)體變量的指針,檢驗鏈表中是否有記錄,若有記錄,根據(jù)要修改的編號查找對應(yīng)結(jié)點修改信息并保存,若沒記錄,輸出錯誤提示。3.5刪除功能(void deleted())使用函數(shù)定義指向結(jié)構(gòu)體變量的指針,用指針檢驗鏈表中是否有記錄,若有記錄根據(jù)要修改的編號查找要刪除的結(jié)點并刪除記錄,若沒記錄,輸出錯誤提示。3.7輸出功能(void output()使用循環(huán)語句對已有的宿舍記錄進行逐個讀取,按學號為關(guān)鍵字進行冒泡排序,經(jīng)過n-1趟子排序完成,第i趟子排序從第1個數(shù)至第n-i個數(shù),若第i個數(shù)比后一個數(shù)大(則升序,小則降序)則交換兩數(shù),排序完后按順序輸出所有記錄。4. 測試結(jié)果與分析5. 總 結(jié)通過這次課程設(shè)計,我對數(shù)據(jù)結(jié)構(gòu)在程序中的應(yīng)用有了更深刻的了解,增強了程序的編寫能力,鞏固了專業(yè)知識,對程序的模塊化觀念也又模糊逐漸變的清晰了。在程序的運行與調(diào)試過程中出現(xiàn)了很多錯誤,通過反復地復習課本上的相關(guān)知識,不停地修改與調(diào)試,我終于完成了這段程序。在調(diào)試過程中,我認識到了語言的靈活性與嚴謹性,同一個功能可以由不同的語句來實現(xiàn),但編寫程序時要特別注意細節(jié)方面的問題,因為一個小小的疏忽就能導致整個程序不能運行。當然我也認識到了自己的薄弱之處,如對鏈表相關(guān)知識的欠缺,文件運用的不熟練,在以后的學習中我要集中精力、端正態(tài)度,爭取把知識學得更扎實、更全面。這次課程設(shè)計我做的還不是很完善,因為功能不是很多,如果以后有機會會完善的。學生的信息還不夠完整,如學生的宿舍長,系別,一些費用以及學生的成績等待相關(guān)詳細信息。在這次課程設(shè)計的過程中,我體會到要想開發(fā)一個系統(tǒng)軟件,不僅需要相當?shù)膶I(yè)技術(shù)知識,還要有嚴謹縝密的思維能力。只有思想上清晰了,編程才有意義,否則就是白費力氣。同時還要善于捕獲細小的方面,因為那往往是這個程序的致命因素。這次課程設(shè)計培養(yǎng)了我的細心和耐性,更樹立了一種科學的態(tài)度。6. 參考文獻數(shù)據(jù)結(jié)構(gòu) 嚴蔚敏c+附錄 程序源代碼#includestdio.h #includestring.h #includestdlib.h #includeconio.h /*頭文件*/ #define MAX 100 typedef struct int year; int month; int day; DATE; typedef struct int num; /*學號*/ char name20; /*姓名*/ /*定義結(jié)構(gòu)體*/ char sex6; /*性別*/ int age; /*年齡*/ DATE birthday; /*出生年月*/ char sushe30; /*宿舍號*/ char classes10; /*班級*/ char zhuanye50; /*專業(yè)*/ char chuanghao50; /*床號*/ STUDENTS; /*讀取信息*/ int read_file(STUDENTS students) FILE *fp; int i=0; if(fp=fopen(stu.txt,rt)=NULL) printf(nn*庫存文件不存在!請創(chuàng)建); /*創(chuàng)建文件*/ return 0; while(fread(&studentsi,sizeof(STUDENTS),1,fp)=1) /*成功創(chuàng)建*/ i+; fclose(fp); return i; /*保存信息*/ void save_file(STUDENTS students,int sum) FILE *fp; int i; if(fp=fopen(stu.txt,wb)=NULL) printf(讀文件錯誤!n); return; for(i=0;isum;i+) if(fwrite(&studentsi,sizeof(STUDENTS),1,fp)!=1) printf(寫文件錯誤!n); /*學生信息保存到文件中*/ fclose(fp); /*輸入模塊*/ int input(STUDENTS students) int i=0,t; /*定義要輸入學生的個數(shù)*/ system(cls); printf(nn 錄入學生個數(shù)(最多%d個),MAX); scanf(%d,&t); printf( -n); do / printf(n 第%d個學生信息,i+1); /*輸入學生的基本信息*/ printf(n 第%d個學生的學號,i+1); scanf(%d,&studentsi.num); if(studentsi.num=0) break; printf(n 學生姓名:); scanf(%s,); printf(n 學生性別:); scanf(%s,studentsi.sex); printf(n 學生年齡:); scanf(%d,&studentsi.age); printf(n 學生出生年月日:); scanf(%d %d %d,&studentsi.birthday.year,&studentsi.birthday.month, &studentsi.birthday.day); printf(n 學生宿舍:); scanf(%s,studentsi.sushe); printf(n 學生班級:); scanf(%s,studentsi.classes); printf(n 學生專業(yè):); scanf(%s,studentsi.zhuanye); printf(n 學生床號:); scanf(%s,studentsi.chuanghao); i+; while(it); save_file(students,t); /*保存輸入的學生信息*/ printf(n %d個學生信息輸入完畢! n,t); getch(); return t; /*返回輸入學生的個數(shù)值*/ /*輸出模塊*/ void output(STUDENTS students,int sum) int i; system(cls); printf(num name sex age year-month-day sushe classes zhuanye chuanghaon); printf( n); for(i=0;isum;i+) /*輸出學生的信息*/ printf(%5d %5s %5s %5d %5d %5d %5d %5s %5s %5s %5sn, studentsi.num,,studentsi.sex,studentsi.age,studentsi.birthday.year, studentsi.birthday.month,studentsi.birthday.day,studentsi.sushe, studentsi.classes,studentsi.zhuanye,studentsi.chuanghao); printf( n); getch(); save_file(students,sum); /*添加信息模塊*/ int append(STUDENTS students,int sum) int i=sum,flag=0; /*從已經(jīng)輸入的學生尾部添加*/ char choice; sum=read_file(students); system(cls); printf(nn 添加學生信息 n); do if(iMAX)/*已經(jīng)輸入的學生個數(shù)和要添加的學生個數(shù)之和要小于定義的學生個數(shù)最大值*/ printf(n 新學生學號:); scanf(%d,&studentsi.num); printf(n 學生姓名:); scanf(%s,); printf(n 學生性別:); /*輸入添加學生的基本信息*/ scanf(%s,studentsi.sex); printf(n 學生年齡:); scanf(%d,&studentsi.age); printf(n 學生出生年月日:); scanf(%d %d %d,&studentsi.birthday.year,&studentsi.birthday.month,&studentsi.birthday.day); printf(n 學生宿舍號:); scanf(%s,studentsi.sushe); printf(n 學生班級:); scanf(%s,studentsi.classes); printf(n 學生專業(yè):); scanf(%s,studentsi.zhuanye); printf(n 床號:); scanf(%s,studentsi.chuanghao); i+; printf(n 繼續(xù)添加嗎?(Y/N); choice=getch(); if(choice=Y|choice=y) flag=1; printf(n 繼續(xù)!n); /*是否要繼續(xù)添加*/ else flag=0; while(flag=1); printf(n 按任意鍵返回主菜單!); getch(); save_file(students,i); /*保存添加的學生信息到原文件*/ return i; /*返回文件中學生個數(shù)值*/ /*修改信息模塊*/ void modify(STUDENTS students,int sum) / FILE *fp; int i,choice,flag,modify_num; sum=read_file(students); /*讀文件*/ do system(cls); printf(n 輸入要修改的學生學號:); scanf(%d,&modify_num); /*輸入要修改的學生學號*/ for(i=0;isum;i+) if(studentsi.num=modify_num) printf(n 學生信息 n); printf(num name sex age year-month-day address sushe zhuanye chuanghaon); printf( n); printf(%5d %5s %5s %5d %5d %5d %5d %5s %5s %5s %5sn, studentsi.num,,studentsi.sex,studentsi.age,studentsi.birthday.year,studentsi.birthday.month, studentsi.birthday.day,studentsi.sushe,studentsi.classes,studentsi.zhuanye,studentsi.chuanghao); printf(n 要修改哪一項?n); printf(n 1.學生學號 n); printf(n 2.學生姓名 n); printf(n 3.學生性別 n); printf(n 4.學生年齡 n); printf(n 5.學生出生年月日 n); printf(n 6.學生宿舍號 n); printf(n 7.學生班級 n); printf(n 8.學生專業(yè) n); printf(n 9.學生床號 n); printf(n 請選擇(1-9):); scanf(%d,&choice); switch(choice) case 1:printf(n 輸入修改后的學號:); scanf(%d,&studentsi.num); break; case 2:printf(n 輸入修改后的姓名:); scanf(%s,); break; case 3:printf(n 輸入修改后的性別:); scanf(%s,studentsi.sex); break; /*選擇要修改學生的項目*/ case 4:printf(n 輸入修改后的年齡:); scanf(%d,&studentsi.age); break; case 5:printf(n 輸入修改后的出生年月:); scanf(%d %d %d,&studentsi.birthday.year,&studentsi.birthday.month, &studentsi.birthday.day); break; case 6:printf(n 輸入修改后的宿舍號:); scanf(%s,studentsi.sushe); break; case 7:printf(n 輸入修改后的班級:); scanf(%s,studentsi.classes); break; case 8:printf(n 輸入修改后的專業(yè):); scanf(%s,studentsi.zhuanye); break; case 9:printf(n 輸入修改后的床號:); scanf(%s,studentsi.chuanghao); break; printf(n 學生信息表 n); printf(num name sex age year-month-day sushe classes zhuanye chuanghaon); printf( n); printf(%5d %5s %5s %5d %5d %5d %5d %5s %5s %5s %5sn, studentsi.num,,studentsi.sex,studentsi.age,studentsi.birthday.year, studentsi.birthday.month,studentsi.birthday.day,studentsi.sushe, studentsi.classes,studentsi.zhuanye,studentsi.chuanghao); break; /*輸出修改后的學生信息*/ if(i=sum) printf(n 該學生不存在!); getch(); printf(nn 繼續(xù)修改嗎?(Y/N); choice=getch(); if(choice=Y|choice=y) flag=1; printf(n 繼續(xù)!n); /*是否要繼續(xù)修改*/ else flag=0; while(flag=1); printf(n 按任意鍵返回主菜單!); getch(); save_file(students,sum); /*保存修改后的信息*/ /*刪除信息模塊*/ int del(STUDENTS students,int sum) int i,del_num; printf(請輸入要刪除的學生學號); scanf

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論