




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、2 / 23'.計算機程序設計基礎(C語言)課程設計題目:學生宿舍管理系統設計級: 計121號:20502120504 12C5C6 120505姓 名: 賈文超 楊曉紅 張永康 陸秀和指導教師: 劉喜梅孫強范周瑜2013年7月1日北京信息工程學院信息技術教學與實驗中心學生宿舍管理系統設計功能:實現簡單的學生宿舍基本信息管理,宿舍的 基本信息包括樓號、房間號、面積、所容納 人數、已入住人數等。基本要求:1 .設計簡單的菜單,能夠進行系統功能選擇。2 .實現信息的錄入功能。3 .在已有信息的基礎上添加新的紀錄。4 .刪除指定房間號的記錄。5 .修改指定房間號的記錄。6 .實現信息的瀏覽功
2、能。7 .按房間號查詢功能。8 .按已入住人數排序功能。1 .學生宿舍管理系統概述 41.1 需求分析 41.2 基本功能 42 .學生宿舍管理系統總體設計 51.1 管理流程圖51.2 管理員操作 53.模塊戈份 61.1 第一選擇模塊 61.2 第二錄入模塊 71.3 第三添加模塊 81.4 第四刪除模塊81.5 第五修改模塊 91.6 第六瀏覽模塊 91.7 第七查詢模塊 101.8 第八排序模塊 114 .算法說明 115 .各函數模塊功能 111.1 各自定義函數功能 116 .程序測試 127 .結論 141.1對調試中主要問題進行總結 148 .體會及建議 148.1 對自己設計
3、進行評價,指出合理和不足之處,提出改進的方案 149 .學生宿舍管理系統設計參與者 141.1 小組成員信息 141 .學生宿舍管理系統概述高校學生宿舍管理系統是典型的信息管理系統(MIS),其開發主要包括后臺數據庫的建立和維護以及前端應用程序的開發兩個方面。對于前端應用程序的開 發則要求應用程序能提供強大的數據操縱功能, 界面友好、使用簡單方便等特點。 舊的手工紀錄的宿舍管理方式已經不能適應高速 發展的信息化時代,新的宿舍管 理系統開發出來之后,學校的現有的宿舍信息管理將有很大的改觀,由過去的人工方式轉變為計算機方式,由效率低、數據冗余、易產生錯誤轉變為檢索迅速、 查找方便、可靠性高、存儲量
4、大。這些優點能夠極大地提高效率,也是學校科學化、正規化管理的重要條件。學生宿舍管理系統對于一個學校來說是必不可少的組成部分。對于學生信息量比較龐大,需要記錄存檔的數據比較多的高校來說,人工記錄是相當麻煩的, 而且當查找某條記錄時,只能靠人工去一條條地查找,這樣不但麻煩而且效率非 常低。當今社會是飛速進步的世界,計算機化管理正是適應時代的產物。21世紀的今天,信息社會占著主流地位,計算機在各行各業中的運用已經得到普及。 我們針對此,設計了一套學生宿舍管理系統。學生宿舍管理系統采用的是計算機 化管理,系統做的盡量人性化,使用者會感到操作非常方便,管理人員需要做的 就是將數據輸入到系統的數據庫中去。
5、由于數據庫存儲容量相當大,而且比較穩 定,適合較長時間的保存,也不容易丟失。這無疑是為信息存儲量比較大的學校 提供了一個方便、快捷的操作方式。本系統具有運行速度快、安全性高、穩定性 好的優點,還具有修改功能,能夠快速的查詢學校所需的住宿信息。1.2基本功能高校學生宿舍管理系統的開發主要包括后臺數據庫的建立和維護以及前端 應用程序的開發兩個方面,但本課題要實現的是前端應用程序的開發。在設計該 系統時,會盡可能地貼近我們學生,便于管理者操作。系統在實現上具有如下功 能:1 .設計簡單的菜單,能夠進行系統功能選擇。2 .實現信息的錄入功能。3 .在已有信息的基礎上添加新的記錄。4 .刪除指定房問號的
6、記錄。5 .修改指定房問號的記錄6 .實現信息的瀏覽功能7 .按房間號查詢功能8 .按已入住人數排序功能2.學生宿舍管理系統總體設計1.1管理流程圖4 / 23'.對系統可劃分為三層流程圖:第一層流程圖:輸入宿舍信息(房問號、樓號、容納 人數、手機號等)f 學生宿舍 , 管理系統)第二層流程圖:第三層流程圖:12 / 23'.1.2第二錄入模塊1.3第三添加模塊開始1.6第六瀏覽模塊(與下圖1.7類似)1.7第七查詢模塊1.8第八排序模塊4 .算法說明數據類型(整形、實型、字符型、指針、數組、結構等);運算類型(算術 運算、邏輯運算、自增自減運算、賦值運算等);程序結構(順序結
7、構、判斷選 擇結構、循環結構);大程序的功能分解方法(即函數的調用與使用)等,利用 數組對宿舍的記錄進行循環輸入輸出, 利用冒泡法記錄進行排序,利用循環查找 數組中某個數據,對其進行顯示,刪除,讀入和寫入文檔等操作。5 .各函數模塊功能5.1 各自定義函數功能1、void insert()(錄入系統所需的數據;將錄入的數據存儲在文件中)2、void seek()(按要求對數據進行查詢)3、void modify()(對數據進行更新操作)4、void del()(對數據進行刪除操作)5、void save()(對指定數據進行統計并輸出)6、void sort()(對指定數據排序并輸出)7、voi
8、d reveal()(對指定數據產生報表輸出)8、void menu()(功能目錄)6.程序測試顯示請選擇菜單編號請輸入待增加的宿舍數請輸入第1個宿舍的房間號輸入411316請輸入第1個宿舍的宿舍長請輸入第1個宿舍的樓號請輸入第1個宿舍的宿舍面積賈文超140請輸入第1個宿舍的房間容納人數請輸入第1個宿舍的宿舍成員6賈文超/陸秀和/楊曉紅/張永康/李正明/偉力請輸入第1個宿舍的手機號請輸入第1個宿舍的居住人數錄入完畢!請選擇菜單編號6結果:所有宿舍信息為:房間號宿舍長樓號宿舍面積房間容納人數1316賈文超 1406*宿舍成員手機號居住人數賈文超/陸秀和/楊曉紅/張永康/李正明/偉力6顯示請選擇菜
9、單編號輸入21.按房間號查詢2.按宿舍長查詢3.退出本菜單請選擇子菜單編號:1請輸入要查詢的宿舍的房間號:1316結果:房間號宿舍長樓號宿舍面積房間容納人數1316賈文超 1406*宿舍成員手機號居住人數賈文超/陸秀和/楊曉紅/張永康/李正明/偉力6顯示請選擇菜單編號請輸入要修改的宿舍的房間號輸入31316 請輸入新的宿舍面積1, 修改宿舍長2, 修改樓號3, 修改宿舍面積4, 修改房間容納人數5, 修改宿舍成員6, 修改手機號號碼7, 修改居住人數8, 退出本菜單請選擇子菜單編號:350請選擇子菜單編號:請選擇菜單編號86結果:房間號宿舍長樓號宿舍面積房間容納人數1316賈文超 1506*宿
10、舍成員手機號居住人數賈文超/陸秀和/楊曉紅/張永康/李正明/偉力67,總結1.1對調試中主要問題進行總結調試過程中,經常會出現輸入或顯示為亂碼的情況,這往往是上下定義的數據類型不同或定義數組長度不夠所造成的。有時候程序中還會出現錄入五個數據而只顯示四個的情況,這也往往是由于定義的結構體數組長度過低所造成的。像這類問題只要把數據類型都定義成字符型,并且定義一個合理的數組長度往往都能解決。在調試過程中我遇到最大的問題出現在刪除模塊。在運用“dormitory.txt ”打開文件并對某一數據進行刪除后,往往顯示會多顯示一行 數據。這是由于“ dormitory.txt ”寫數據時只會覆蓋數據而不會清
11、除原文件數 據,因此文件最后一行數據總會保留在原文件中。后來我先用“dormitory.txt ”打開文件并讀取文件中的數據,然后再用“ r”打開原文件將刪除后的數據重新寫入 文件,最終檢測運行成功。8.體會及建議1.1對自己設計進行評價,指出合理和不足之處,提出改進的方案本程序擁有很多的優點:第一,它具有作為一個宿舍管理系統的各個功能, 包括 錄入信息、添加信息、修改信息、刪除信息、查詢信息、統計信息六大主要功能。 可以方便的進行住宿學生信息的管理。 第二,它的各個功能模塊在實現時非常方 便,例如:錄入和添加學生信息可以自己控制錄入和添加的人數;統計學生信息可以分學號、班級、專業等進行統計等
12、等。“萬事開頭難”這句話在我編寫程序的過程中得到了真正的體現。在最初編寫 的幾天里出現了這樣那樣的錯誤一大堆,這主要是由于我對基礎知識掌握不扎實 所造成的。但是隨后幾天里,我對課本知識進行了回顧并不時的向老師和同學進 行請教,慢慢的對編寫程序也開始得心應手起來。程序的編寫總歸是一件費時費 力的事情,但只要我們認真編寫和調試最后總能成功。短短的兩周實習時間我收獲頗多,我相信經過這次實習必將為我以后的深入 學習打下扎實的基礎。9.學生宿舍管理系統設計參與者1.1 小組成員信息姓名院系班級學號賈文超信息工程學院機121120502陸秀和信息工程學院機121120506楊曉紅信息工程學院機121120
13、504張永康信息工程學院機121120505參考文獻:1.軟件工程導論 第四版 清華大學出版2. C#FF發實戰寶典王小科 編著 清華大學出版社3. C#FF發大全劉麗霞編著清華大學出版4 .百度知道5 .C# 與.net開發網附錄:源程序清單#include<stdio.h>/*I/O 函數*/#include<stdlib.h>/*其它說明 */#include<string.h>/*字符串函數*/#defineBUFLEN100/*緩沖區最大字符數*/#define LEN100 /*房間號和宿舍長最大字符數,實際請更改*/#define N 1000
14、 /*最大宿舍人數,實際請更改*/ struct apartment /* 結構體 */ char room LENH; /* 房間號 */char dormitoryleader LEN+1; /* 宿舍長 */ int dormitory; /* 樓號 */ char area3; /* 宿舍面積 */ char hold LENH; /* 房間容納人數 */ char member1000; /* 宿舍成員 */ char tel LENH; /* 手機號號碼 */ char livenumber30; /* 居住人數 */ stu N int k=1,n,m; /* 定義全局變量*/
15、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.按
16、照菜單提示鍵入數字代號;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 error! Strike any key to exit!",p);sy
17、stem( "pause");exit(0);while (fscanf(fp, "%s %s%d%s %s %s %s %sStui.room,stui.dormitoryleader,&stui.dorm itory,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;/*以宿舍長和
18、房間號最長長度+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",s
19、1);for (i=0;i<n;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");pri
20、ntf("-'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;i<n;i+)|if (strcmp(stui.dormitoryleader,s1)=0)flag=1;printf("房間號宿舍
21、長 樓號宿舍面積房間容納人數n");printf("-'n");printf( "%0s %8s %3d %7s %11s n" ,stui.room,stui.dormitoryleader,stui.dormitory, stui.area,stui.hold);printf(,*手機號居住人數n");*n");printf("宿舍成員printf("-'n");printf( " %0s %20s %8sn" ,stui.member,stui.tel,
22、stui.livenumber);if (flag=0) |printf("該宿舍長不存在!n" ); break;case 3: return ;default :printf("請在 1-3 之間選擇 n");void modify() /* 修改彳言息*/int i,item,num; |char area13,s1LEh+1,s2 LEN+1; /* 以宿舍長和房間號最長長度 +1為準*/printf("請輸入要修改的宿舍的房間號:n");scanf( "%s",s1);for (i=0;i<n;i+
23、)if (strcmp(stui.room,s1)=0) /* 比較字符串是否相等 */num=i;pnntf( "n");printf("1.修改宿舍長n");printf("2.修改樓號n");printf("3.修改宿舍面積n");printf("4.修改房間容納人數n");printf("5.修改宿舍成員n");printf("6.修改手機號號碼n");printf("7.修改居住人數n");printf("8.退出本
24、菜單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.dormit
25、ory); 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);
26、 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
27、;char temp100;for (i=0;i<n-1;i+)for (j=n-1;j>i;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.dormitorylead
28、er,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.te
29、l);|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
30、=1; while (flag)flag=0;printf("請輸入第%d個宿舍的房間號:n" ,i+1);scanf( "%s",stui.room);for (j=0;j<i;j+)if (strcmp(stui.room,stuj.room)=0)printf("已有該房間號,請檢查后重新錄入!n");flag=1;break; /*如有重復立即退出該層循環,提高判斷速度*/printf("請輸入第 %d個宿舍的宿舍長:n" ,i+1);scanf( "%s" ,stui.dormi
31、toryleader);printf("請輸入第%d個宿舍的樓號:n" ,i+1);scanf( "%d",&stui.dormitory);printf("請輸入第%d個宿舍的宿舍宿舍面積(mA2):n" ,i+1);scanf( "%s",stui.area);printf("請輸入第%d個宿舍的房間容納人數:n" ,i+1);scanf( "%s",stui.hold);printf("請輸入第%d個宿舍的宿舍成員(注:人員之間加/):n"
32、,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 (i<n+m); n+=m;printf("錄入完畢! n'n");sort(); void del() int i
33、,j,flag=0; char s1 LENH;printf("請輸入要刪除宿舍的房間號:n");scanf( "%s",s1);for (i=0;i<n;i+) |if (strcmp(stui.room,s1)=0) flag=1;for (j=i;j<n-1;j+) stuj=stuj+1;if (flag=0) |printf("該房間號不存在!n");if (flag=1) | printf("刪除成功,顯示結果請選擇菜單6n");n-; void reveal() int i;printf(
34、"所有宿舍的信息為:n");printf("房間號 宿舍長樓號宿舍面積房間容納人數n" ); |printf( "n");for (i=0;i<n;i+) -| printf( "%0s %7s %5d %5s %9s n" ,stui.room,stui.dormitoryleader,stui.dormitory, stui.area,stui.hold);27 / 23'.printf("*n")printf("宿舍成員手機號居住人數n");printf("-'n");for (i=0;i<n;i+) -|p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文第17課《短文兩篇-陋室銘》課件+2024-2025學年統編版語文七年級下冊
- 初一鼓樓期末試題及答案
- 商務英語市場調研方法試題及答案
- fortran程序設計試題及答案
- 中醫網絡面試題及答案
- 創業扶持政策與地方經濟試題及答案
- 中心負壓的試題及答案
- 2025年土木工程師考試過程管理試題及答案
- 商務英語考試備考材料試題及答案2025
- 中國防水絹絲布行業市場發展前景及發展趨勢與投資戰略研究報告2025-2028版
- 機械行業重點崗位安全手冊
- 《休閑農業》課件 項目五 休閑農業項目規劃設計
- 基于大數據的公共安全風險預測模型研究報告
- 2025年廣東省廣州市荔灣區中考一模英語模擬試題
- DBJ33∕T 1104-2022 建設工程監理工作標準
- 2025年河北雄安新區雄縣事業單位招聘考試筆試高頻重點模擬試卷提升(共500題附帶答案詳解)
- 建設工程消防工程設施驗收技術指導手冊
- 現代物流園區的應急物資儲備與調配
- 甘油三酯的分解代謝趙婷講解
- 仿真對抗評估方法-深度研究
- 【MOOC期末】《大學體育射箭》(東南大學)中國大學慕課答案
評論
0/150
提交評論