




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高考?xì)v史模擬試卷3(北京卷)詳細(xì)解析
- 2025年高考?xì)v史模擬試卷(福建卷)詳細(xì)解析
- 2025-2030年中國(guó)車用汽油數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025-2030年中國(guó)可調(diào)節(jié)劃槽圓鋸片數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 網(wǎng)絡(luò)編輯-互聯(lián)網(wǎng)媒體簡(jiǎn)歷
- Unit1 Friends 暑假預(yù)習(xí)檢測(cè)題(含答案)譯林版八年級(jí)上冊(cè)
- 養(yǎng)老護(hù)理服務(wù)協(xié)議書
- 業(yè)務(wù)合作協(xié)議簽署進(jìn)展跟蹤表
- 服務(wù)器網(wǎng)絡(luò)安全隔離技術(shù)應(yīng)用
- 農(nóng)產(chǎn)品電商運(yùn)營(yíng)推廣實(shí)操手冊(cè)
- 2025年山西同文職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)考試題庫(kù)帶答案
- 2025年安徽衛(wèi)生健康職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)審定版
- 2025年01月中國(guó)疾控中心信息中心公開招聘1人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 2025年湖南水利水電職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)參考答案
- (部編版2025新教材)道德與法治一年級(jí)下冊(cè)-第1課《有個(gè)新目標(biāo)》課件
- 廉政從業(yè)培訓(xùn)課件
- 安徽2025年安徽汽車職業(yè)技術(shù)學(xué)院教職工校園招聘筆試歷年參考題庫(kù)附帶答案詳解
- 2025新 公司法知識(shí)競(jìng)賽題庫(kù)與參考答案
- 2025年中國(guó)移動(dòng)通信集團(tuán)貴州限公司招聘高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 《苗圃生產(chǎn)與管理》教案-第三章 園林植物的播種育苗
- 大學(xué)生美甲創(chuàng)業(yè)項(xiàng)目路演
評(píng)論
0/150
提交評(píng)論