




已閱讀5頁,還剩18頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
計算機程序設計基礎(C語言)課程設計題目:學生宿舍管理系統設計班 級: 計 121 學 號: 120502 120504 120506 120505 姓 名:賈 文 超 楊 曉 紅 張 永 康 陸 秀 和 指導教師 : 劉 喜 梅 孫 強 范 周 瑜 2013 年 7 月 1 日北京信息工程學院信息技術教學與實驗中心學生宿舍管理系統設計功能:實現簡單的學生宿舍基本信息管理,宿舍的基本信息包括樓號、房間號、面積、所容納人數、已入住人數等。基本要求:1.設計簡單的菜單,能夠進行系統功能選擇。2.實現信息的錄入功能。3.在已有信息的基礎上添加新的紀錄。4.刪除指定房間號的記錄。5.修改指定房間號的記錄。6.實現信息的瀏覽功能。7.按房間號查詢功能。8.按已入住人數排序功能。1.學生宿舍管理系統概述 4 1.1需求分析 4 1.2基本功能 42.學生宿舍管理系統總體設計 5 1.1管理流程圖 5 1.2管理員操作 53.模塊劃分6 1.1第一選擇模塊 6 1.2第二錄入模塊 7 1.3第三添加模塊 8 1.4第四刪除模塊 8 1.5第五修改模塊 9 1.6第六瀏覽模塊 9 1.7第七查詢模塊 10 1.8第八排序模塊 114.算法說明115.各函數模塊功能11 1.1各自定義函數功能 116.程序測試127.結論14 1.1對調試中主要問題進行總結148.體會及建議14 1.1對自己設計進行評價,指出合理和不足之處,提出改進的方案 149.學生宿舍管理系統設計參與者14 1.1 小組成員信息14 1.學生宿舍管理系統概述1.1需求分析高校學生宿舍管理系統是典型的信息管理系統(MIS),其開發主要包括后臺數據庫的建立和維護以及前端應用程序的開發兩個方面。對于前端應用程序的開發則要求應用程序能提供強大的數據操縱功能,界面友好、使用簡單方便等特點。舊的手工紀錄的宿舍管理方式已經不能適應高速發展的信息化時代,新的宿舍管理系統開發出來之后,學校的現有的宿舍信息管理將有很大的改觀,由過去的人工方式轉變為計算機方式,由效率低、數據冗余、易產生錯誤轉變為檢索迅速、查找方便、可靠性高、存儲量大。這些優點能夠極大地提高效率,也是學校科學化、正規化管理的重要條件。學生宿舍管理系統對于一個學校來說是必不可少的組成部分。對于學生信息量比較龐大,需要記錄存檔的數據比較多的高校來說,人工記錄是相當麻煩的,而且當查找某條記錄時,只能靠人工去一條條地查找,這樣不但麻煩而且效率非常低。當今社會是飛速進步的世界,計算機化管理正是適應時代的產物。21世紀的今天,信息社會占著主流地位,計算機在各行各業中的運用已經得到普及。我們針對此,設計了一套學生宿舍管理系統。學生宿舍管理系統采用的是計算機化管理,系統做的盡量人性化,使用者會感到操作非常方便,管理人員需要做的就是將數據輸入到系統的數據庫中去。由于數據庫存儲容量相當大,而且比較穩定,適合較長時間的保存,也不容易丟失。這無疑是為信息存儲量比較大的學校提供了一個方便、快捷的操作方式。本系統具有運行速度快、安全性高、穩定性好的優點,還具有修改功能,能夠快速的查詢學校所需的住宿信息。1.2基本功能高校學生宿舍管理系統的開發主要包括后臺數據庫的建立和維護以及前端應用程序的開發兩個方面,但本課題要實現的是前端應用程序的開發。在設計該系統時,會盡可能地貼近我們學生,便于管理者操作。系統在實現上具有如下功能:1 設計簡單的菜單,能夠進行系統功能選擇。2 實現信息的錄入功能。3 在已有信息的基礎上添加新的記錄。4 刪除指定房間號的記錄。5 修改指定房間號的記錄6 實現信息的瀏覽功能7 按房間號查詢功能8 按已入住人數排序功能 2.學生宿舍管理系統總體設計1.1管理流程圖 對系統可劃分為三層流程圖: 第一層流程圖:輸入宿舍信息(房間號、樓號、容納人數、手機號等) 學生宿舍 管理系統 第二層流程圖: 添加 宿舍管理系統記錄刪除選擇操作修改 第三層流程圖:房間號對應的宿舍信息 學生宿舍 管理系統選擇查詢信息原則 按已入住 人數排序 3.模塊劃分1.1選擇功能模塊圖 輸入 插入錄入存儲 刪除 修改主函數數據操作 查詢 統計輸出信息 排序 顯示1.2第二錄入模塊開始輸入宿舍信息p-livenumberp-areap-room count2+ count3+count1+ end開始1.3第三添加模塊 插入宿 舍信息用sort()函數排序 輸入宿 舍信息 將其入棧結束開始1.4第四刪除模塊輸入刪除房間號for循環,掃描存儲學生信息p-room:roomm != 刪除對應 學生信息 結束1.5第五修改模塊開始 輸入修改 房間號room for循環,掃描 存儲學生信息 p-room; room = != 修改對應 學生信息結束1.6第六瀏覽模塊(與下圖1.7類似) 開始1.7第七查詢模塊 按宿舍 長查詢 選擇查 詢方式 按宿舍號查詢 輸入要查找 宿舍長姓名開始循環,掃描存儲的宿舍信息 輸入查找 的宿舍號p-dormitoryleader: dormitoryleaderp-room: room!=!= = =輸出宿舍信息輸出宿舍信息 結束1.8第八排序模塊 開始開始循環,掃描存儲信息選出居住人數最小的宿舍與第一個宿舍交換在余下居住人數中選出最少的與第二個宿舍交換以此類推,直至排序完成 結束 4.算法說明數據類型(整形、實型、字符型、指針、數組、結構等);運算類型(算術運算、邏輯運算、自增自減運算、賦值運算等);程序結構(順序結構、判斷選擇結構、循環結構);大程序的功能分解方法(即函數的調用與使用)等,利用數組對宿舍的記錄進行循環輸入輸出,利用冒泡法記錄進行排序,利用循環查找數組中某個數據,對其進行顯示,刪除,讀入和寫入文檔等操作。 5.各函數模塊功能1.1各自定義函數功能1、void insert()(錄入系統所需的數據;將錄入的數據存儲在文件中)2、void seek()(按要求對數據進行查詢)3、void modify()(對數據進行更新操作)4、void del()(對數據進行刪除操作)5、void save()(對指定數據進行統計并輸出)6、void sort()(對指定數據排序并輸出)7、void reveal()(對指定數據產生報表輸出)8、void menu()(功能目錄) 6.程序測試顯示 請選擇菜單編號 請輸入待增加的宿舍數 請輸入第1個宿舍的房間號 輸入 4 1 1316請輸入第1個宿舍的宿舍長 請輸入第1個宿舍的樓號 請輸入第1個宿舍的宿舍面積 賈文超 1 40請輸入第1個宿舍的房間容納人數 請輸入第1個宿舍的宿舍成員 6 賈文超/陸秀和/楊曉紅/張永康/李正明/偉力請輸入第1個宿舍的手機號 請輸入第1個宿舍的居住人數6錄入完畢! 請選擇菜單編號 6結果:所有宿舍信息為:房間號 宿舍長 樓號 宿舍面積 房間容納人數1316 賈文超 1 40 6*宿舍成員 手機號 居住人數賈文超/陸秀和/楊曉紅/張永康/李正明/偉力6顯示 請選擇菜單編號輸入 2 -1.按房間號查詢- -2.按宿舍長查詢- -3.退出本菜單-請選擇子菜單編號: 1請輸入要查詢的宿舍的房間號: 1316結果:房間號 宿舍長 樓號 宿舍面積 房間容納人數1316 賈文超 1 40 6*宿舍成員 手機號 居住人數賈文超/陸秀和/楊曉紅/張永康/李正明/偉力6顯示 請選擇菜單編號 請輸入要修改的宿舍的房間號輸入 3 1316 - 請輸入新的宿舍面積 1.修改宿舍長 2.修改樓號 3.修改宿舍面積 4.修改房間容納人數 5.修改宿舍成員 6.修改手機號號碼 7.修改居住人數 8.退出本菜單 - 請選擇子菜單編號: 3 50請選擇子菜單編號: 請選擇菜單編號 8 6結果:房間號 宿舍長 樓號 宿舍面積 房間容納人數1316 賈文超 1 50 6*宿舍成員 手機號 居住人數賈文超/陸秀和/楊曉紅/張永康/李正明/偉力6 7.總結1.1對調試中主要問題進行總結 調試過程中,經常會出現輸入或顯示為亂碼的情況,這往往是上下定義的數據類型不同或定義數組長度不夠所造成的。有時候程序中還會出現錄入五個數據而只顯示四個的情況,這也往往是由于定義的結構體數組長度過低所造成的。像這類問題只要把數據類型都定義成字符型,并且定義一個合理的數組長度往往都能解決。在調試過程中我遇到最大的問題出現在刪除模塊。在運用“dormitory.txt”打開文件并對某一數據進行刪除后,往往顯示會多顯示一行數據。這是由于“dormitory.txt”寫數據時只會覆蓋數據而不會清除原文件數據,因此文件最后一行數據總會保留在原文件中。后來我先用“dormitory.txt”打開文件并讀取文件中的數據,然后再用“r”打開原文件將刪除后的數據重新寫入文件,最終檢測運行成功。 8.體會及建議 1.1對自己設計進行評價,指出合理和不足之處,提出改進的方案 本程序擁有很多的優點:第一,它具有作為一個宿舍管理系統的各個功能,包括錄入信息、添加信息、修改信息、刪除信息、查詢信息、統計信息六大主要功能。可以方便的進行住宿學生信息的管理。第二,它的各個功能模塊在實現時非常方便,例如:錄入和添加學生信息可以自己控制錄入和添加的人數;統計學生信息可以分學號、班級、專業等進行統計等等。 “萬事開頭難”這句話在我編寫程序的過程中得到了真正的體現。在最初編寫的幾天里出現了這樣那樣的錯誤一大堆,這主要是由于我對基礎知識掌握不扎實所造成的。但是隨后幾天里,我對課本知識進行了回顧并不時的向老師和同學進行請教,慢慢的對編寫程序也開始得心應手起來。程序的編寫總歸是一件費時費力的事情,但只要我們認真編寫和調試最后總能成功。 短短的兩周實習時間我收獲頗多,我相信經過這次實習必將為我以后的深入學習打下扎實的基礎。 9.學生宿舍管理系統設計參與者1.1小組成員信息 姓名 院系 班級 學號 賈文超 信息工程學院 機121 120502 陸秀和 信息工程學院 機121 120506 楊曉紅 信息工程學院 機121 120504 張永康 信息工程學院 機121 120505參考文獻:1.軟件工程導論 第四版 清華大學出版 2.C#開發實戰寶典 王小科 編著 清華大學出版社 3.C#開發大全 劉麗霞 編著 清華大學出版 4.百度知道 5.C#與.net開發網 /net/附錄:源程序清單#include /*I/O函數*/#include /*其它說明*/#include /*字符串函數*/#define BUFLEN 100 /* 緩沖區最大字符數 */#define LEN 100 /* 房間號和宿舍長最大字符數,實際請更改 */#define N 1000 /* 最大宿舍人數,實際請更改*/struct apartment /*結構體*/char roomLEN+1; /* 房間號 */char dormitoryleaderLEN+1; /* 宿舍長 */int dormitory; /* 樓號 */char area3; /* 宿舍面積 */char holdLEN+1; /* 房間容納人數 */char member1000; /* 宿舍成員 */char telLEN+1; /* 手機號號碼 */char livenumber30; /* 居住人數 */stuN;int k=1,n,m; /* 定義全局變量 */ void readfile();/* 函數聲明 */void seek();void modify();void insert();void del();void reveal();void save();void menu(); int main() while(k)menu();system(pause);return 0; void help() printf(n0.歡迎使用宿舍系統幫助!n);printf(n1.進入系統后,先刷新宿舍信息,再查詢;n);printf(n2.按照菜單提示鍵入數字代號;n);printf(n3.增加宿舍信息后,切記保存按7;n);printf(n4.謝謝您的使用!n); void readfile()/* 建立信息 */char *p=dormitory.txt;FILE *fp;int i=0;if (fp=fopen(dormitory.txt,r)=NULL) printf(Open file %s error! Strike any key to exit!,p);system(pause);exit(0);while(fscanf(fp,%s %s%d%s %s %s %s %s,stui.room,stui.dormitoryleader,&stui.dormitory,stui.area,stui.hold,stui.member,stui.tel,stui.livenumber)=8)i+;i=i;fclose(fp);n=i;printf(錄入完畢!n); void seek() /*查找*/int i,item,flag;char s121; /* 以宿舍長和房間號最長長度+1為準 */printf(-n);printf(-1.按房間號查詢-n);printf(-2.按宿舍長查詢-n);printf(-3.退出本菜單-n);printf(-n);while(1)printf(請選擇子菜單編號:);scanf(%d,&item);flag=0;switch(item)case 1:printf(請輸入要查詢的宿舍的房間號:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(stui.room,s1)=0)flag=1;printf(房間號 宿舍長 樓號 宿舍面積 房間容納人數 n);printf(-n);printf(%0s %8s %3d %7s %11s n,stui.room,stui.dormitoryleader,stui.dormitory,stui.area,stui.hold);printf(*n);printf( 宿舍成員 手機號 居住人數n);printf(-n);printf( %0s %20s %8sn,stui.member,stui.tel,stui.livenumber);if(flag=0)printf(該房間號不存在!n); break;case 2:printf(請輸入要查詢的宿舍的宿舍長:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(stui.dormitoryleader,s1)=0)flag=1;printf(房間號 宿舍長 樓號 宿舍面積 房間容納人數 n);printf(-n);printf(%0s %8s %3d %7s %11s n,stui.room,stui.dormitoryleader,stui.dormitory,stui.area,stui.hold);printf(*n);printf( 宿舍成員 手機號 居住人數n);printf(-n);printf( %0s %20s %8sn,stui.member,stui.tel,stui.livenumber);if(flag=0)printf(該宿舍長不存在!n); break;case 3:return;default:printf(請在1-3之間選擇n); void modify() /*修改信息*/int i,item,num;char area13,s1LEN+1,s2LEN+1; /* 以宿舍長和房間號最長長度+1為準 */printf(請輸入要修改的宿舍的房間號:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(stui.room,s1)=0) /*比較字符串是否相等*/num=i;printf(-n);printf(1.修改宿舍長n);printf(2.修改樓號n);printf(3.修改宿舍面積n);printf(4.修改房間容納人數n);printf(5.修改宿舍成員n);printf(6.修改手機號號碼n);printf(7.修改居住人數n);printf(8.退出本菜單n);printf(-n);while(1)printf(請選擇子菜單編號:);scanf(%d,&item);switch(item)case 1:printf(請輸入新的宿舍長:n);scanf(%s,s2);strcpy(stunum.dormitoryleader,s2); break;case 2:printf(請輸入新的樓號:n);scanf(%d,&stunum.dormitory);break;case 3:printf(請輸入新的宿舍面積:n);scanf(%s,area1);strcpy(stunum.area,area1); break;case 4:printf(請輸入新的房間容納人數:n);scanf(%s,s2);strcpy(stunum.hold,s2); break;case 5:printf(請輸入新的宿舍成員:n);scanf(%s,s2);strcpy(stunum.member,s2); break;case 6:printf(請輸入新的手機號號碼:n);scanf(%s,s2);strcpy(stunum.tel,s2); break;case 7:printf(請輸入新的居住人數:n);scanf(%s,s2);strcpy(stunum.livenumber,s2); break;case 8:return;default:printf(請在1-8之間選擇n); void sort()/*按居住人數排序*/int i,j,*p,*q,s; char temp100;for(i=0;ii;j-)if(strcmp(stuj-1.livenumber,stuj.livenumber)0)strcpy(temp,stuj-1.room);strcpy(stuj-1.room,stuj.room);strcpy(stuj.room,temp);strcpy(temp,stuj-1.dormitoryleader);strcpy(stuj-1.dormitoryleader,stuj.dormitoryleader);strcpy(stuj.dormitoryleader,temp);strcpy(temp,stuj-1.area);strcpy(stuj-1.area,stuj.area);strcpy(stuj.area,temp);strcpy(temp,stuj-1.hold);strcpy(stuj-1.hold,stuj.hold);strcpy(stuj.hold,temp);strcpy(temp,stuj-1.member);strcpy(stuj-1.member,stuj.member);strcpy(stuj.member,temp);strcpy(temp,stuj-1.tel);strcpy(stuj-1.tel,stuj.tel);strcpy(stuj.tel,temp);strcpy(temp,stuj-1.livenumber);strcpy(stuj-1.livenumber,stuj.livenumber);strcpy(stuj.livenumber,temp); p=&stuj-1.dormitory; q=&stuj.dormitory; s=*q; *q=*p; *p=s; void insert() /*插入函數*/ int i=n,j,flag;printf(請輸入待增加的宿舍數:n);scanf(%d,&m);do flag=1;while(flag)flag=0;printf(請輸入第 %d 個宿舍的房間號:n,i+1);scanf(%s,stui.room);for(j=0;ji;j+)if(strcmp(stui.room,stuj.room)=0)printf(已有該房間號,請檢查后重新錄入!n);flag=1;break; /*如有重復立即退出該層循環,提高判斷速度*/printf(請輸入第 %d 個宿舍的宿舍長:n,i+1);scanf(%s,stui.dormitoryleader);printf(請輸入第 %d 個宿舍的樓號:n,i+1);scanf(%d,&stui.dormitory);printf(請輸入第 %d 個宿舍的宿舍宿舍面積(m2):n,i+1);scanf(%s,stui.area);printf(請輸入第 %d 個宿舍的房間容納人數:n,i+1);scanf(%s,stui.hold);printf(請輸入第 %d 個宿舍的宿舍成員(注:人員之間加/):n,i+1);scanf(%s,stui.member);printf(請輸入第 %d 個宿舍的手機號:n,i+1);scanf(%s,stui.tel);printf(請輸入第 %d 個宿舍的居住人數:n,i+1);scanf(%s,stui.livenumber);if(flag=0) i=i;i+;while(in+m);n+=m;printf(錄入完畢!nn);sort(); void del()int i,j,flag=0;char s1LEN+1;printf(請輸入要刪除宿舍的房間號:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(stui.room,s1)=0) flag=1;for(j=i;jn-1;j+)stuj=stuj+1;if(flag=0)printf(該房間號不存在!n);if(flag=1)printf(刪除成功,顯示結果請選擇菜單6n);n-; void reveal() int i;printf(所有宿舍的信息為:n);printf(房間號 宿舍長 樓號 宿舍面積 房間容納人數 n);printf(-n);for(i=0;in;i+) printf(%0s %7s %5d %5s %9s n,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論