![數(shù)據(jù)結(jié)構(gòu)宿舍管理系統(tǒng)實驗報告_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/40dab18c-4747-4c45-bc38-898fde51b77c/40dab18c-4747-4c45-bc38-898fde51b77c1.gif)
![數(shù)據(jù)結(jié)構(gòu)宿舍管理系統(tǒng)實驗報告_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/40dab18c-4747-4c45-bc38-898fde51b77c/40dab18c-4747-4c45-bc38-898fde51b77c2.gif)
![數(shù)據(jù)結(jié)構(gòu)宿舍管理系統(tǒng)實驗報告_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/40dab18c-4747-4c45-bc38-898fde51b77c/40dab18c-4747-4c45-bc38-898fde51b77c3.gif)
![數(shù)據(jù)結(jié)構(gòu)宿舍管理系統(tǒng)實驗報告_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/40dab18c-4747-4c45-bc38-898fde51b77c/40dab18c-4747-4c45-bc38-898fde51b77c4.gif)
![數(shù)據(jù)結(jié)構(gòu)宿舍管理系統(tǒng)實驗報告_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/40dab18c-4747-4c45-bc38-898fde51b77c/40dab18c-4747-4c45-bc38-898fde51b77c5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告設(shè)計題目 宿舍管理系統(tǒng) 專 業(yè) 信息技術(shù)學(xué)院 班 級 計算機科學(xué)與技術(shù) 姓 名 顧文婷 學(xué) 號 121114045 完成日期 2014年6月10日 目 錄1. 問題描述32. 系統(tǒng)設(shè)計3.43. 數(shù)據(jù)結(jié)構(gòu)與算法描述4-74. 測試結(jié)果與分析8-135. 總 結(jié)13-146. 參考文獻(xiàn)14附錄 程序源代碼 15-35宿舍管理系統(tǒng)1. 問題描述 建立宿舍管理系統(tǒng),統(tǒng)計信息包括學(xué)生姓名,年齡,出生年月日,性別,學(xué)號,班級,系別,床號。2. 系統(tǒng)設(shè)計2.1 設(shè)計目標(biāo)宿舍一般由若干學(xué)生入駐,每個宿舍都有獨立唯一的編號,入住學(xué)生也有唯一的學(xué)號,另外添加學(xué)生的姓名和班級,使用這些關(guān)鍵字就
2、可以方便的查詢和管理宿舍入住情況。程序設(shè)計應(yīng)采用交互工作方式,并建立數(shù)據(jù)文件。程序應(yīng)通過建立子函數(shù)實現(xiàn)創(chuàng)建、保存與載入數(shù)據(jù)文件,查找、添加、刪除、更改、顯示等功能,可以自動保存修改。應(yīng)具有友好的界面和較強的容錯能力。能夠迅速準(zhǔn)確地完成各種學(xué)生信息的統(tǒng)計和查詢,以方便管理員對學(xué)生信息的統(tǒng)一管理。2.2 設(shè)計思想為方便管理員對系統(tǒng)進(jìn)行操作,程序應(yīng)具有以下功能:(1)創(chuàng)建宿舍數(shù)據(jù)文件,并提示管理員輸入學(xué)生姓名、學(xué)號、宿舍號、班級等信息,并在本地保存數(shù)據(jù)文件(2)打開宿舍數(shù)據(jù)文件:輸入文件名打開保存過的數(shù)據(jù)文件(3)查詢住宿信息:提供學(xué)號、姓名、宿舍號三種查詢方式(4)添加住宿信息:在數(shù)據(jù)文件中添加新
3、的住宿信息(5)刪除住宿信息:提示管理員輸入要刪除的學(xué)生姓名,驗證后刪除(6)修改住宿信息:提示管理員輸入要修改的學(xué)生姓名,驗證后修改(7)輸出數(shù)據(jù)文件:將住宿信息按學(xué)號的大小排序全部輸出(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ù)來實現(xiàn)void readfile() 文件讀取函數(shù),打開已有的數(shù)據(jù)文件調(diào)用文件操作函數(shù)來實現(xiàn)void output()輸出函數(shù),用于輸出所有的學(xué)生信息調(diào)用文件操作函數(shù),并將學(xué)號作為關(guān)鍵字進(jìn)行冒泡排序再輸出void
4、;namesearch()查找函數(shù),用于以姓名為關(guān)鍵字查詢使用指針,將關(guān)鍵字與記錄比較,若相同則輸出void numsearch()查找函數(shù),用于以學(xué)號為關(guān)鍵字查詢使用指針,將關(guān)鍵字與記錄比較,若相同則輸出Void dorsearch ()查找函數(shù),用于以房號為關(guān)鍵字查詢使用指針,將關(guān)鍵字與記錄比較,若相同則輸出void add()添加函數(shù),以姓名為關(guān)鍵字加入新的學(xué)生信息使用指針,建立一個新節(jié)點,將新信息插入原文件中void modify()修改函數(shù),用于以修改已存在的學(xué)生信息,以姓名為關(guān)鍵字使用指針,將關(guān)鍵字與記錄比較,若相同則更改原紀(jì)錄并保存在原文件中void deleted()刪除函數(shù),
5、用于刪除所選的學(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)完成對宿舍數(shù)據(jù)的錄入,包括姓名、學(xué)號、班級、宿舍號等信息。最終將錄入數(shù)據(jù)保存在數(shù)組里。完成輸入后,輸入#結(jié)束循環(huán)。3.2讀取功能(void readfile())使用函數(shù)讀取數(shù)據(jù)文件,根據(jù)輸入的文件名加載保存在本地的數(shù)據(jù)文件,若找不到相同名稱文件,則輸出錯誤提示。3.3查找功能 (void namesearch(),void numsearch(),
6、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)語句對已有的宿舍記錄進(jìn)行逐個讀取,按學(xué)號為
7、關(guān)鍵字進(jì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)了很多錯誤,通過反復(fù)地復(fù)習(xí)課本上的相關(guān)知識,不停地修改與調(diào)試,我終于完成了這段程序。在調(diào)試過程中,我認(rèn)識到了語言的靈活性與嚴(yán)謹(jǐn)性,同一個功能可以由不同的語句來實現(xiàn),但編寫程序時要特別注意細(xì)節(jié)方面的問題,因為一個小小的疏忽就能導(dǎo)致整個程
8、序不能運行。當(dāng)然我也認(rèn)識到了自己的薄弱之處,如對鏈表相關(guān)知識的欠缺,文件運用的不熟練,在以后的學(xué)習(xí)中我要集中精力、端正態(tài)度,爭取把知識學(xué)得更扎實、更全面。這次課程設(shè)計我做的還不是很完善,因為功能不是很多,如果以后有機會會完善的。學(xué)生的信息還不夠完整,如學(xué)生的宿舍長,系別,一些費用以及學(xué)生的成績等待相關(guān)詳細(xì)信息。在這次課程設(shè)計的過程中,我體會到要想開發(fā)一個系統(tǒng)軟件,不僅需要相當(dāng)?shù)膶I(yè)技術(shù)知識,還要有嚴(yán)謹(jǐn)縝密的思維能力。只有思想上清晰了,編程才有意義,否則就是白費力氣。同時還要善于捕獲細(xì)小的方面,因為那往往是這個程序的致命因素。這次課程設(shè)計培養(yǎng)了我的細(xì)心和耐性,更樹立了一種科學(xué)的態(tài)度。6. 參考文
9、獻(xiàn)數(shù)據(jù)結(jié)構(gòu) 嚴(yán)蔚敏c+附錄 程序源代碼#include"stdio.h" #include"string.h" #include"stdlib.h" #include"conio.h" /*頭文件*/ #define MAX 100 typedef struct int year; int month; int day; DATE; typedef struct int num; /*學(xué)號*/ char name20; /*姓名*/ /*定義結(jié)構(gòu)體*/ char sex6; /*性別*/ int age; /*年齡
10、*/ DATE birthday; /*出生年月*/ char sushe30; /*宿舍號*/ char classes10; /*班級*/ char zhuanye50; /*專業(yè)*/ char chuanghao50; /*床號*/ STUDENTS; /*讀取信息*/ int read_ students) FILE *fp; int i=0; if(fp=fopen("stu.txt","rt")=NULL) printf("nn*庫存文件不存在!請創(chuàng)建"); /*創(chuàng)建文件*/ return 0; while(fread(&
11、amp;studentsi,sizeof(STUDENTS),1,fp)=1) /*成功創(chuàng)建*/ i+; fclose(fp); return i; /*保存信息*/ void save_ students,int sum) FILE *fp; int i; if(fp=fopen("stu.txt","wb")=NULL) printf("讀文件錯誤!n"); return; for(i=0;i<sum;i+) if(fwrite(&studentsi,sizeof(STUDENTS),1,fp)!=1) printf
12、("寫文件錯誤!n"); /*學(xué)生信息保存到文件中*/ fclose(fp); /*輸入模塊*/ int input(STUDENTS students) int i=0,t; /*定義要輸入學(xué)生的個數(shù)*/ system("cls"); printf("nn 錄入學(xué)生個數(shù)(最多%d個)",MAX); scanf("%d",&t); printf(" -n"); do / printf("n 第%d個學(xué)生信息",i+1); /*輸入學(xué)生的基本信息*/ printf(&q
13、uot;n 第%d個學(xué)生的學(xué)號",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);
14、 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é)生班級:"); scanf("%s",studentsi.classes); printf("
15、;n 學(xué)生專業(yè):"); scanf("%s",studentsi.zhuanye); printf("n 學(xué)生床號:"); scanf("%s",studentsi.chuanghao); i+; while(i<t); save_); /*保存輸入的學(xué)生信息*/ printf("n %d個學(xué)生信息輸入完畢! n",t); getch(); return t; /*返回輸入學(xué)生的個數(shù)值*/ /*輸出模塊*/ void output(STUDENTS students,int sum) int i;
16、system("cls"); printf("num name sex age year-month-day sushe classes zhuanye chuanghaon"); printf(" n"); for(i=0;i<sum;i+) /*輸出學(xué)生的信息*/ printf("%5d %5s %5s %5d %5d %5d %5d %5s %5s %5s %5sn", studentsi.num,,studentsi.sex,studentsi.age,studentsi.
17、birthday.year, studentsi.birthday.month,studentsi.birthday.day,studentsi.sushe, studentsi.classes,studentsi.zhuanye,studentsi.chuanghao); printf(" n"); getch(); save_); /*添加信息模塊*/ int append(STUDENTS students,int sum) int i=sum,flag=0; /*從已經(jīng)輸入的學(xué)生尾部添加*/ char choice; sum=read_); system("
18、;cls"); printf("nn 添加學(xué)生信息 n"); do if(i<MAX)/*已經(jīng)輸入的學(xué)生個數(shù)和要添加的學(xué)生個數(shù)之和要小于定義的學(xué)生個數(shù)最大值*/ printf("n 新學(xué)生學(xué)號:"); scanf("%d",&studentsi.num); printf("n 學(xué)生姓名:"); scanf("%s",); printf("n 學(xué)生性別:"); /*輸入添加學(xué)生的基本信息*/ scanf("%s&qu
19、ot;,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.
20、sushe); printf("n 學(xué)生班級:"); scanf("%s",studentsi.classes); printf("n 學(xué)生專業(yè):"); scanf("%s",studentsi.zhuanye); printf("n 床號:"); scanf("%s",studentsi.chuanghao); i+; printf("n 繼續(xù)添加嗎?(Y/N)"); choice=getch(); if(choice='Y'|choic
21、e='y') flag=1; printf("n 繼續(xù)!n"); /*是否要繼續(xù)添加*/ else flag=0; while(flag=1); printf("n 按任意鍵返回主菜單!"); getch(); save_); /*保存添加的學(xué)生信息到原文件*/ return i; /*返回文件中學(xué)生個數(shù)值*/ /*修改信息模塊*/ void modify(STUDENTS students,int sum) / FILE *fp; int i,choice,flag,modify_num; sum=read_); /*讀文件*/ do
22、system("cls"); printf("n 輸入要修改的學(xué)生學(xué)號:"); scanf("%d",&modify_num); /*輸入要修改的學(xué)生學(xué)號*/ for(i=0;i<sum;i+) if(studentsi.num=modify_num) printf("n 學(xué)生信息 n"); printf("num name sex age year-month-day address sushe zhuanye chuanghaon"); printf(" n"
23、;); 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&quo
24、t;); printf("n 1.學(xué)生學(xué)號 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é)生宿舍號 n"); printf("n 7.學(xué)生班級 n"); printf("n 8.學(xué)生專業(yè) n"); printf("n 9.學(xué)生床號 n"); pri
25、ntf("n 請選擇(1-9):"); scanf("%d",&choice); switch(choice) case 1:printf("n 輸入修改后的學(xué)號:"); scanf("%d",&studentsi.num); break; case 2:printf("n 輸入修改后的姓名:"); scanf("%s",); break; case 3:printf("n 輸入修改后的性別:"); scanf(
26、"%s",studentsi.sex); break; /*選擇要修改學(xué)生的項目*/ 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);
27、 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 輸入修改后的床
28、號:"); 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,,stud
29、entsi.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(c
30、hoice='Y'|choice='y') flag=1; printf("n 繼續(xù)!n"); /*是否要繼續(xù)修改*/ else flag=0; while(flag=1); printf("n 按任意鍵返回主菜單!"); getch(); save_); /*保存修改后的信息*/ /*刪除信息模塊*/ int del(STUDENTS students,int sum) int i,del_num; printf("請輸入要刪除的學(xué)生學(xué)號"); scanf("%d",&del_n
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/Z 44938.1-2024機械電氣安全第1部分:用于保護人員安全的傳感器
- racemic-8-Hydroxy-cannabichromene-生命科學(xué)試劑-MCE-7832
- Mouse-Laminin-生命科學(xué)試劑-MCE-7265
- 二零二五年度雙方2025年度智能機器人研發(fā)團隊用工合同
- 2025年度自媒體合伙人合同版:短視頻平臺網(wǎng)紅孵化與推廣合同
- 防震防火的應(yīng)急預(yù)案
- 上海市商業(yè)租賃合同
- 產(chǎn)業(yè)基地設(shè)施維護合同
- 上海市汽車租賃合同模版正式版
- 個人住宅購買合同定金協(xié)議
- 福建省泉州市晉江市2024-2025學(xué)年七年級上學(xué)期期末生物學(xué)試題(含答案)
- 2025年春新人教版物理八年級下冊課件 第十章 浮力 第4節(jié) 跨學(xué)科實踐:制作微型密度計
- 貨運車輛駕駛員服務(wù)標(biāo)準(zhǔn)化培訓(xùn)考核試卷
- 2024年全國統(tǒng)一高考英語試卷(新課標(biāo)Ⅰ卷)含答案
- 肝臟炎性假瘤的影像學(xué)表現(xiàn)培訓(xùn)課件
- 國家行政機關(guān)公文格式課件
- 業(yè)務(wù)員回款考核辦法
- 急性心梗的護理業(yè)務(wù)學(xué)習(xí)課件
- 2021年投標(biāo)部工作計劃
- 好書推薦《西游記》共33張幻燈片
- 2019年安徽省中考數(shù)學(xué)試卷及答案解析
評論
0/150
提交評論