已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告設(shè)計(jì)題目 宿舍管理系統(tǒng) 專 業(yè) 信息技術(shù)學(xué)院 班 級(jí) 計(jì)算機(jī)科學(xué)與技術(shù) 姓 名 顧文婷 學(xué) 號(hào) 121114045 完成日期 2014年6月10日 目 錄1. 問題描述32. 系統(tǒng)設(shè)計(jì)3.43. 數(shù)據(jù)結(jié)構(gòu)與算法描述4-74. 測(cè)試結(jié)果與分析8-135. 總 結(jié)13-146. 參考文獻(xiàn)14附錄 程序源代碼 15-35宿舍管理系統(tǒng)1. 問題描述 建立宿舍管理系統(tǒng),統(tǒng)計(jì)信息包括學(xué)生姓名,年齡,出生年月日,性別,學(xué)號(hào),班級(jí),系別,床號(hào)。2. 系統(tǒng)設(shè)計(jì)2.1 設(shè)計(jì)目標(biāo)宿舍一般由若干學(xué)生入駐,每個(gè)宿舍都有獨(dú)立唯一的編號(hào),入住學(xué)生也有唯一的學(xué)號(hào),另外添加學(xué)生的姓名和班級(jí),使用這些關(guān)鍵字就可以方便的查詢和管理宿舍入住情況。程序設(shè)計(jì)應(yīng)采用交互工作方式,并建立數(shù)據(jù)文件。程序應(yīng)通過建立子函數(shù)實(shí)現(xiàn)創(chuàng)建、保存與載入數(shù)據(jù)文件,查找、添加、刪除、更改、顯示等功能,可以自動(dòng)保存修改。應(yīng)具有友好的界面和較強(qiáng)的容錯(cuò)能力。能夠迅速準(zhǔn)確地完成各種學(xué)生信息的統(tǒng)計(jì)和查詢,以方便管理員對(duì)學(xué)生信息的統(tǒng)一管理。2.2 設(shè)計(jì)思想為方便管理員對(duì)系統(tǒng)進(jìn)行操作,程序應(yīng)具有以下功能:(1)創(chuàng)建宿舍數(shù)據(jù)文件,并提示管理員輸入學(xué)生姓名、學(xué)號(hào)、宿舍號(hào)、班級(jí)等信息,并在本地保存數(shù)據(jù)文件(2)打開宿舍數(shù)據(jù)文件:輸入文件名打開保存過的數(shù)據(jù)文件(3)查詢住宿信息:提供學(xué)號(hào)、姓名、宿舍號(hào)三種查詢方式(4)添加住宿信息:在數(shù)據(jù)文件中添加新的住宿信息(5)刪除住宿信息:提示管理員輸入要?jiǎng)h除的學(xué)生姓名,驗(yàn)證后刪除(6)修改住宿信息:提示管理員輸入要修改的學(xué)生姓名,驗(yàn)證后修改(7)輸出數(shù)據(jù)文件:將住宿信息按學(xué)號(hào)的大小排序全部輸出(8)退出系統(tǒng)2.3 系統(tǒng)模塊劃分(要給出流程圖)3. 數(shù)據(jù)結(jié)構(gòu)與算法描述 函數(shù)原型 函數(shù)功能函數(shù)處理描述void creat() 初始條件,創(chuàng)建新數(shù)據(jù)文件,用于存放學(xué)生信息調(diào)用文件操作函數(shù)來實(shí)現(xiàn)void readfile() 文件讀取函數(shù),打開已有的數(shù)據(jù)文件調(diào)用文件操作函數(shù)來實(shí)現(xiàn)void output()輸出函數(shù),用于輸出所有的學(xué)生信息調(diào)用文件操作函數(shù),并將學(xué)號(hào)作為關(guān)鍵字進(jìn)行冒泡排序再輸出voidnamesearch()查找函數(shù),用于以姓名為關(guān)鍵字查詢使用指針,將關(guān)鍵字與記錄比較,若相同則輸出void numsearch()查找函數(shù),用于以學(xué)號(hào)為關(guān)鍵字查詢使用指針,將關(guān)鍵字與記錄比較,若相同則輸出Void dorsearch ()查找函數(shù),用于以房號(hào)為關(guān)鍵字查詢使用指針,將關(guān)鍵字與記錄比較,若相同則輸出void add()添加函數(shù),以姓名為關(guān)鍵字加入新的學(xué)生信息使用指針,建立一個(gè)新節(jié)點(diǎn),將新信息插入原文件中void modify()修改函數(shù),用于以修改已存在的學(xué)生信息,以姓名為關(guān)鍵字使用指針,將關(guān)鍵字與記錄比較,若相同則更改原紀(jì)錄并保存在原文件中void deleted()刪除函數(shù),用于刪除所選的學(xué)生信息,以姓名為關(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)完成對(duì)宿舍數(shù)據(jù)的錄入,包括姓名、學(xué)號(hào)、班級(jí)、宿舍號(hào)等信息。最終將錄入數(shù)據(jù)保存在數(shù)組里。完成輸入后,輸入#結(jié)束循環(huán)。3.2讀取功能(void readfile())使用函數(shù)讀取數(shù)據(jù)文件,根據(jù)輸入的文件名加載保存在本地的數(shù)據(jù)文件,若找不到相同名稱文件,則輸出錯(cuò)誤提示。3.3查找功能 (void namesearch(),void numsearch(),void groupsearch())通過輸入選擇相關(guān)的查詢函數(shù)來完成查找功能,使用指針將關(guān)鍵字與記錄比較,若相同則輸出,若無相同則輸出錯(cuò)誤提示。3.4修改功能(void Modify())使用函數(shù)定義指向結(jié)構(gòu)體變量的指針,檢驗(yàn)鏈表中是否有記錄,若有記錄,根據(jù)要修改的編號(hào)查找對(duì)應(yīng)結(jié)點(diǎn)修改信息并保存,若沒記錄,輸出錯(cuò)誤提示。3.5刪除功能(void deleted())使用函數(shù)定義指向結(jié)構(gòu)體變量的指針,用指針檢驗(yàn)鏈表中是否有記錄,若有記錄根據(jù)要修改的編號(hào)查找要?jiǎng)h除的結(jié)點(diǎn)并刪除記錄,若沒記錄,輸出錯(cuò)誤提示。3.7輸出功能(void output()使用循環(huán)語(yǔ)句對(duì)已有的宿舍記錄進(jìn)行逐個(gè)讀取,按學(xué)號(hào)為關(guān)鍵字進(jìn)行冒泡排序,經(jīng)過n-1趟子排序完成,第i趟子排序從第1個(gè)數(shù)至第n-i個(gè)數(shù),若第i個(gè)數(shù)比后一個(gè)數(shù)大(則升序,小則降序)則交換兩數(shù),排序完后按順序輸出所有記錄。4. 測(cè)試結(jié)果與分析5. 總 結(jié)通過這次課程設(shè)計(jì),我對(duì)數(shù)據(jù)結(jié)構(gòu)在程序中的應(yīng)用有了更深刻的了解,增強(qiáng)了程序的編寫能力,鞏固了專業(yè)知識(shí),對(duì)程序的模塊化觀念也又模糊逐漸變的清晰了。在程序的運(yùn)行與調(diào)試過程中出現(xiàn)了很多錯(cuò)誤,通過反復(fù)地復(fù)習(xí)課本上的相關(guān)知識(shí),不停地修改與調(diào)試,我終于完成了這段程序。在調(diào)試過程中,我認(rèn)識(shí)到了語(yǔ)言的靈活性與嚴(yán)謹(jǐn)性,同一個(gè)功能可以由不同的語(yǔ)句來實(shí)現(xiàn),但編寫程序時(shí)要特別注意細(xì)節(jié)方面的問題,因?yàn)橐粋€(gè)小小的疏忽就能導(dǎo)致整個(gè)程序不能運(yùn)行。當(dāng)然我也認(rèn)識(shí)到了自己的薄弱之處,如對(duì)鏈表相關(guān)知識(shí)的欠缺,文件運(yùn)用的不熟練,在以后的學(xué)習(xí)中我要集中精力、端正態(tài)度,爭(zhēng)取把知識(shí)學(xué)得更扎實(shí)、更全面。這次課程設(shè)計(jì)我做的還不是很完善,因?yàn)楣δ懿皇呛芏?,如果以后有機(jī)會(huì)會(huì)完善的。學(xué)生的信息還不夠完整,如學(xué)生的宿舍長(zhǎng),系別,一些費(fèi)用以及學(xué)生的成績(jī)等待相關(guān)詳細(xì)信息。在這次課程設(shè)計(jì)的過程中,我體會(huì)到要想開發(fā)一個(gè)系統(tǒng)軟件,不僅需要相當(dāng)?shù)膶I(yè)技術(shù)知識(shí),還要有嚴(yán)謹(jǐn)縝密的思維能力。只有思想上清晰了,編程才有意義,否則就是白費(fèi)力氣。同時(shí)還要善于捕獲細(xì)小的方面,因?yàn)槟峭沁@個(gè)程序的致命因素。這次課程設(shè)計(jì)培養(yǎng)了我的細(xì)心和耐性,更樹立了一種科學(xué)的態(tài)度。6. 參考文獻(xiàn)數(shù)據(jù)結(jié)構(gòu) 嚴(yán)蔚敏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; /*學(xué)號(hào)*/ char name20; /*姓名*/ /*定義結(jié)構(gòu)體*/ char sex6; /*性別*/ int age; /*年齡*/ DATE birthday; /*出生年月*/ char sushe30; /*宿舍號(hào)*/ char classes10; /*班級(jí)*/ char zhuanye50; /*專業(yè)*/ char chuanghao50; /*床號(hào)*/ STUDENTS; /*讀取信息*/ int read_file(STUDENTS students) FILE *fp; int i=0; if(fp=fopen(stu.txt,rt)=NULL) printf(nn*庫(kù)存文件不存在!請(qǐng)創(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(讀文件錯(cuò)誤!n); return; for(i=0;isum;i+) if(fwrite(&studentsi,sizeof(STUDENTS),1,fp)!=1) printf(寫文件錯(cuò)誤!n); /*學(xué)生信息保存到文件中*/ fclose(fp); /*輸入模塊*/ int input(STUDENTS students) int i=0,t; /*定義要輸入學(xué)生的個(gè)數(shù)*/ system(cls); printf(nn 錄入學(xué)生個(gè)數(shù)(最多%d個(gè)),MAX); scanf(%d,&t); printf( -n); do / printf(n 第%d個(gè)學(xué)生信息,i+1); /*輸入學(xué)生的基本信息*/ printf(n 第%d個(gè)學(xué)生的學(xué)號(hào),i+1); scanf(%d,&studentsi.num); if(studentsi.num=0) break; printf(n 學(xué)生姓名:); scanf(%s,); printf(n 學(xué)生性別:); scanf(%s,studentsi.sex); printf(n 學(xué)生年齡:); scanf(%d,&studentsi.age); printf(n 學(xué)生出生年月日:); scanf(%d %d %d,&studentsi.birthday.year,&studentsi.birthday.month, &studentsi.birthday.day); printf(n 學(xué)生宿舍:); scanf(%s,studentsi.sushe); printf(n 學(xué)生班級(jí):); scanf(%s,studentsi.classes); printf(n 學(xué)生專業(yè):); scanf(%s,studentsi.zhuanye); printf(n 學(xué)生床號(hào):); scanf(%s,studentsi.chuanghao); i+; while(it); save_file(students,t); /*保存輸入的學(xué)生信息*/ printf(n %d個(gè)學(xué)生信息輸入完畢! n,t); getch(); return t; /*返回輸入學(xué)生的個(gè)數(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+) /*輸出學(xué)生的信息*/ 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)輸入的學(xué)生尾部添加*/ char choice; sum=read_file(students); system(cls); printf(nn 添加學(xué)生信息 n); do if(iMAX)/*已經(jīng)輸入的學(xué)生個(gè)數(shù)和要添加的學(xué)生個(gè)數(shù)之和要小于定義的學(xué)生個(gè)數(shù)最大值*/ printf(n 新學(xué)生學(xué)號(hào):); scanf(%d,&studentsi.num); printf(n 學(xué)生姓名:); scanf(%s,); printf(n 學(xué)生性別:); /*輸入添加學(xué)生的基本信息*/ scanf(%s,studentsi.sex); printf(n 學(xué)生年齡:); scanf(%d,&studentsi.age); printf(n 學(xué)生出生年月日:); scanf(%d %d %d,&studentsi.birthday.year,&studentsi.birthday.month,&studentsi.birthday.day); printf(n 學(xué)生宿舍號(hào):); scanf(%s,studentsi.sushe); printf(n 學(xué)生班級(jí):); scanf(%s,studentsi.classes); printf(n 學(xué)生專業(yè):); scanf(%s,studentsi.zhuanye); printf(n 床號(hào):); 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); /*保存添加的學(xué)生信息到原文件*/ return i; /*返回文件中學(xué)生個(gè)數(shù)值*/ /*修改信息模塊*/ void modify(STUDENTS students,int sum) / FILE *fp; int i,choice,flag,modify_num; sum=read_file(students); /*讀文件*/ do system(cls); printf(n 輸入要修改的學(xué)生學(xué)號(hào):); scanf(%d,&modify_num); /*輸入要修改的學(xué)生學(xué)號(hào)*/ for(i=0;isum;i+) if(studentsi.num=modify_num) printf(n 學(xué)生信息 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 要修改哪一項(xiàng)?n); printf(n 1.學(xué)生學(xué)號(hào) n); printf(n 2.學(xué)生姓名 n); printf(n 3.學(xué)生性別 n); printf(n 4.學(xué)生年齡 n); printf(n 5.學(xué)生出生年月日 n); printf(n 6.學(xué)生宿舍號(hào) n); printf(n 7.學(xué)生班級(jí) n); printf(n 8.學(xué)生專業(yè) n); printf(n 9.學(xué)生床號(hào) n); printf(n 請(qǐng)選擇(1-9):); scanf(%d,&choice); switch(choice) case 1:printf(n 輸入修改后的學(xué)號(hào):); scanf(%d,&studentsi.num); break; case 2:printf(n 輸入修改后的姓名:); scanf(%s,); break; case 3:printf(n 輸入修改后的性別:); scanf(%s,studentsi.sex); break; /*選擇要修改學(xué)生的項(xiàng)目*/ 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 輸入修改后的宿舍號(hào):); scanf(%s,studentsi.sushe); break; case 7:printf(n 輸入修改后的班級(jí):); scanf(%s,studentsi.classes); break; case 8:printf(n 輸入修改后的專業(yè):); scanf(%s,studentsi.zhuanye); break; case 9:printf(n 輸入修改后的床號(hào):); scanf(%s,studentsi.chuanghao); break; printf(n 學(xué)生信息表 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; /*輸出修改后的學(xué)生信息*/ if(i=sum) printf(n 該學(xué)生不存在!); 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(請(qǐng)輸入要?jiǎng)h除的學(xué)生學(xué)號(hào)); scanf
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 石方爆破施工方案
- 自粘卷材濕鋪施工方案
- 瀘州雕花鋁扣板施工方案
- 鐵藝大門安裝施工方案
- 2025年橡膠粒項(xiàng)目可行性研究報(bào)告
- 2024-2029年中國(guó)通信終端設(shè)備行業(yè)深度調(diào)研與投資戰(zhàn)略規(guī)劃分析報(bào)告
- 2024-2030年中國(guó)便攜式多媒體行業(yè)市場(chǎng)發(fā)展監(jiān)測(cè)及投資戰(zhàn)略規(guī)劃報(bào)告
- 【可行性報(bào)告】2024年苦咸水淡化裝置行業(yè)項(xiàng)目可行性分析報(bào)告
- 2025年光纖過線槽行業(yè)深度研究分析報(bào)告
- 2025年度項(xiàng)目管理師專項(xiàng)聘用合同3篇
- GB/T 16895.3-2024低壓電氣裝置第5-54部分:電氣設(shè)備的選擇和安裝接地配置和保護(hù)導(dǎo)體
- 2025湖北襄陽(yáng)市12345政府熱線話務(wù)員招聘5人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年河北省職業(yè)院校技能大賽智能節(jié)水系統(tǒng)設(shè)計(jì)與安裝(高職組)考試題庫(kù)(含答案)
- 2024年下半年鄂州市城市發(fā)展投資控股集團(tuán)限公司社會(huì)招聘【27人】易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- GB/T 29498-2024木門窗通用技術(shù)要求
- 《職業(yè)院校與本科高校對(duì)口貫通分段培養(yǎng)協(xié)議書》
- GJB9001C質(zhì)量管理體系要求-培訓(xùn)專題培訓(xùn)課件
- 人教版(2024)英語(yǔ)七年級(jí)上冊(cè)單詞表
- 中醫(yī)養(yǎng)生產(chǎn)業(yè)現(xiàn)狀及發(fā)展趨勢(shì)分析
- 2023年浙江省溫州市中考數(shù)學(xué)真題含解析
- 窗簾采購(gòu)?fù)稑?biāo)方案(技術(shù)方案)
評(píng)論
0/150
提交評(píng)論