數(shù)據(jù)結(jié)構(gòu)宿舍管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)宿舍管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)宿舍管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)宿舍管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)宿舍管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀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)介

1、數(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)鍵字就

2、可以方便的查詢和管理宿舍入住情況。程序設(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ù)文件中添加新

3、的住宿信息(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)行冒泡排序再輸出void 

4、;namesearch()查找函數(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ù),

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)完成對(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(),

6、void groupsearch())通過輸入選擇相關(guān)的查詢函數(shù)來完成查找功能,使用指針將關(guān)鍵字與記錄比較,若相同則輸出,若無(wú)相同則輸出錯(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)為

7、關(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è)程

8、序不能運(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. 參考文

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é)號(hào)*/ char name20; /*姓名*/ /*定義結(jié)構(gòu)體*/ char sex6; /*性別*/ int age; /*年齡

10、*/ DATE birthday; /*出生年月*/ char sushe30; /*宿舍號(hào)*/ char classes10; /*班級(jí)*/ char zhuanye50; /*專業(yè)*/ char chuanghao50; /*床號(hào)*/ STUDENTS; /*讀取信息*/ int read_ 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(&

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("讀文件錯(cuò)誤!n"); return; for(i=0;i<sum;i+) if(fwrite(&studentsi,sizeof(STUDENTS),1,fp)!=1) printf

12、("寫文件錯(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(&q

13、uot;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);

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é)生班級(jí):"); scanf("%s",studentsi.classes); printf("

15、;n 學(xué)生專業(yè):"); scanf("%s",studentsi.zhuanye); printf("n 學(xué)生床號(hào):"); scanf("%s",studentsi.chuanghao); i+; while(i<t); save_); /*保存輸入的學(xué)生信息*/ printf("n %d個(gè)學(xué)生信息輸入完畢! n",t); getch(); return t; /*返回輸入學(xué)生的個(gè)數(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é)生個(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&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é)生宿舍號(hào):"); scanf("%s",studentsi.

20、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'|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é)生個(gè)數(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é)號(hào):"); scanf("%d",&modify_num); /*輸入要修改的學(xué)生學(xué)號(hào)*/ 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 要修改哪一項(xiàng)?n&quo

24、t;); 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"); pri

25、ntf("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(

26、"%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);

27、 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 輸入修改后的床

28、號(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,,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("請(qǐng)輸入要?jiǎng)h除的學(xué)生學(xué)號(hào)"); scanf("%d",&del_n

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論