學(xué)生宿舍管理系統(tǒng)_第1頁
學(xué)生宿舍管理系統(tǒng)_第2頁
學(xué)生宿舍管理系統(tǒng)_第3頁
學(xué)生宿舍管理系統(tǒng)_第4頁
學(xué)生宿舍管理系統(tǒng)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

I目錄TOC\o"1-2"\h\z\u一、需求分析 2二、系統(tǒng)分析 2三、總體設(shè)計 2四、詳細(xì)設(shè)計 21、數(shù)據(jù)結(jié)構(gòu)設(shè)計 22、模塊接口設(shè)計 2五、軟件使用說明 2圖5-1學(xué)生管理系統(tǒng)主界面 2圖5-2數(shù)據(jù)輸入界面 2圖5-3按床位號顯示界面 2圖5-4按學(xué)號顯示界面 2圖5-5插入記錄界面 2圖5-6刪除記錄界面 2圖5-7輸入完成界面 2圖5-8學(xué)生信息顯示界面 2圖5-9查找成功界面 2設(shè)計總結(jié) 2參考文獻(xiàn) 2致謝 2附錄:源程序 2一、需求分析目前市面上流行的管理系統(tǒng)不少。但是,對于學(xué)校的寢室管理系統(tǒng)來說,需要大型的系統(tǒng),而且是一個操作方便,功能實用,能滿足學(xué)校寢室數(shù)據(jù)的管理及需求的系統(tǒng)。我們的目標(biāo)就是開發(fā)一個功能實用、操作方便,簡單明了的寢室管理系統(tǒng)。寢室管理系統(tǒng)對每個學(xué)生信息包含了學(xué)號、班級、姓名、寢室號等等。面對每天紛繁復(fù)雜的寢室管理工作,本管理系統(tǒng)很好的解決了工作人員的煩惱。相比傳統(tǒng)的人工管理,此管理系統(tǒng)具有:功能全面、操作簡單、檢索迅速、查找方便、可靠性高、存儲量大、成本低等絕對的優(yōu)勢。通過本管理系統(tǒng),可以大大的節(jié)約工作時間,減少工作量,提高了工作效率,能幫助工作人員更加方便、高效的管理學(xué)生。二、系統(tǒng)分析設(shè)計一個實用的信息管理系統(tǒng),能以簡便高效的方式對學(xué)生宿舍信息進(jìn)行管理和檢索,具體功能如下:系統(tǒng)以菜單方式工作,要求界面友好,易于操作;錄入學(xué)生宿舍信息用文件保存;能建立、修改和刪除學(xué)生宿舍信息;通過輸入姓名進(jìn)行查詢;具有信息瀏覽功能。三、總體設(shè)計總體設(shè)計如圖3-1所示:圖3-1圖3-1總體設(shè)計開始輸出界面選擇操作選擇1選擇2選擇3選擇4選擇5選擇6選擇7選擇8選擇9選擇0輸入記錄是是顯示記錄否否否否否否否否否退出系統(tǒng)結(jié)束按床位排序顯示按學(xué)號排序顯示是是是是插入一個記錄查找刪除記錄查找顯示記錄從文件輸入寫入文件保存是是是是否四、詳細(xì)設(shè)計本程序主要分為九個模塊,它們分別為:輸入若干條記錄、顯示所有記錄、按學(xué)號排序、按房間號排序、插入一條記錄、按姓名查找,刪除一條記錄、查找并顯示一個記錄、從文件中讀入數(shù)據(jù)、將所有記循環(huán)寫入文件。這九個函數(shù)再通過函數(shù)調(diào)用分別得以實現(xiàn)。1、數(shù)據(jù)結(jié)構(gòu)設(shè)計本程序中,對于學(xué)生宿舍各項詳細(xì)信息的記錄用了結(jié)構(gòu)數(shù)組的形式,對于主要數(shù)據(jù)結(jié)構(gòu)的應(yīng)用如下:結(jié)構(gòu)數(shù)組:typedefstruct/*定義結(jié)構(gòu)體數(shù)組*/{charroomnum[4];/*房間號*/charbednum[2];/*床位號*/charnum[10];/*學(xué)號*/charname[20];/*姓名*/}Student;主函數(shù),首先提供了程序運(yùn)行時的友好界面,列出了清單,提供用戶做出選擇,以便決定使用系統(tǒng)的哪種功能。然后,通過執(zhí)行多分支選擇語句——switch語句,分別實現(xiàn)其它各個函數(shù)的調(diào)用功能。其它各個函數(shù)的功能分別如下:(1)intInput函數(shù)用于輸入若干條記錄

(2voidDisplay函數(shù)用于顯示所有記錄

(3)voidSort_by_roomnum函數(shù)用于按房間號排序并顯示(4voidSort_by_num函數(shù)用于按學(xué)號排序并顯示 (5)voidQuery_a_record函數(shù)用于插入記錄按學(xué)號排序并顯示(6)intDelete_a_record函數(shù)用于按姓名查找,刪除一條記錄

(7)voidQuery_a_record函數(shù)用于按姓名查找并顯示一條記錄

(8)intAddfromText從文件中讀入數(shù)據(jù)

(9)voidWritetoText循環(huán)寫入數(shù)據(jù)

2、模塊接口設(shè)計本程序執(zhí)行的入口是main函數(shù),然后用switch語句實現(xiàn)對各個函數(shù)的調(diào)用。被調(diào)用的函數(shù)都是有形參的,函數(shù)通過調(diào)用函數(shù)實現(xiàn)相應(yīng)的功能。其中涉及到被調(diào)用的函數(shù)有:voidmain()/*主函數(shù)*/可以調(diào)用以下的函數(shù)intInput(Studentroom[],intn)/*輸入若干條記錄*/voidDisplay(Studentroom[],intn)/*顯示所有記錄*/voidSort_by_num(Studentroom[],intn)/*按學(xué)號排序*/voidSort_by_roomnum(Studentroom[],intn)/*房間號排序*/intInsert_a_record(Studentroom[],intn)/*插入一條記錄*/intDelete_a_record(Studentroom[],intn)/*按姓名查找,刪除一條記錄*/voidQuery_a_record(Studentroom[],intn)/*查找并顯示一個記錄*/intAddfromText(Studentroom[],intn)/*從文件中讀入數(shù)據(jù)*/voidWritetoText(Studentroom[],intn)/*將所有記錄寫入文件*/五、軟件使用說明程序運(yùn)行如下:圖5-1學(xué)生管理系統(tǒng)主界面進(jìn)入主菜單將程序進(jìn)行編譯鏈接后生成“學(xué)生管理系統(tǒng).exe”運(yùn)行該文件如圖5-1所示:按照提示選擇“1”進(jìn)行記錄的輸入(輸入一個數(shù)據(jù)后提示是否繼續(xù)輸入)如圖5-2所示:圖5-2數(shù)據(jù)輸入界面連續(xù)輸入多組數(shù)據(jù)后,按“n”結(jié)束輸入,提示按任意鍵繼續(xù),按任意鍵后選擇“2”就能顯示剛剛輸入的數(shù)據(jù)信息。顯示后提示按任意鍵繼續(xù),按任意鍵后選擇“3”進(jìn)行記錄的按床位號排序并顯示,如圖5-3所示:圖5-3按床位號顯示界面顯示后提示按任意鍵繼續(xù),按任意鍵后選擇“4”進(jìn)行記錄的按學(xué)號排序并顯示,如圖5-4所示:圖5-4按學(xué)號顯示界面顯示后提示按任意鍵繼續(xù),按任意鍵后選擇“5”按提示步驟插入一條記錄并顯示,如圖5-5所示:圖5-5插入記錄界面顯示后提示按任意鍵繼續(xù),按任意鍵后選擇“6”按提示步驟刪除一條記錄,如果沒找到該學(xué)生顯示如圖5-6所示:圖5-6刪除記錄界面如果有該學(xué)生顯示如圖5-7所示:圖5-7輸入完成界面顯示后提示按任意鍵繼續(xù),按任意鍵后選擇“7”按提示步驟查找并顯示一個記錄,如圖5-8所示:圖5-8學(xué)生信息顯示界面顯示后提示按任意鍵繼續(xù),按任意鍵后選擇“8”按提示步驟查找原有記錄文件如果找不到則出現(xiàn)無法打開文件的提示信息,如果有該文件則顯示如圖5-9所示:圖5-9查找成功界面將原有文件讀入程序,顯示后提示按任意鍵繼續(xù),按任意鍵后選擇“9”按提示步驟循環(huán)寫入記錄,如圖5-10所示:參考文獻(xiàn)C/C++程序設(shè)計教程(第二版),王連相,中國鐵道出版社,2011C語言程序設(shè)計,潭浩強(qiáng),清華大學(xué)出版社,1999C/C++程序設(shè)計上機(jī)指導(dǎo)與測試(第二版),王連相,中國鐵道出版社,2011C程序設(shè)計題解與上機(jī)指導(dǎo),潭浩強(qiáng),清華大學(xué)出版社,1999C語言函數(shù)手冊,機(jī)械工業(yè)出版社,1999C語言的實際應(yīng)用,安徽科學(xué)技術(shù)出版社,2000附錄:源程序#include<stdio.h>/*引用庫函數(shù)*/#include<stdlib.h>#include<ctype.h>#include<string.h>typedefstruct/*定義結(jié)構(gòu)體數(shù)組*/{charroomnum[4];/*房間號*/charbednum[2];/*床位號*/charnum[10];/*學(xué)號*/charname[20];/*姓名*/}Student;Studentroom1[1000];/*結(jié)構(gòu)體數(shù)組變量*/intmenu_select()/*菜單函數(shù)*/{charc;do{system("cls");/*運(yùn)行前清屏*/printf("\t\t********歡迎進(jìn)入學(xué)生宿舍管理系統(tǒng)********\n");printf("\t\t§1.輸入記錄§\n");printf("\t\t§2.顯示記錄§\n");printf("\t\t§3.按房間號排序并顯示§\n");printf("\t\t§4.按學(xué)號排序并顯示§\n");printf("\t\t§5.插入一條記錄按學(xué)號排序并顯示§\n");printf("\t\t§6.按姓名查找,刪除一條記錄§\n");printf("\t\t§7查找并顯示一個記錄§\n");printf("\t\t§8.從文件中讀入數(shù)據(jù)§\n");printf("\t\t§9.循環(huán)寫入數(shù)據(jù)§\n");printf("\t\t§0.結(jié)束程序§\n");printf("\t\t****************************************\n");/*菜單選擇*/printf("\t\t請選擇您要運(yùn)行的選項按(0-9):");c=getchar();/*讀入選擇*/}while(c<'0'||c>'9');return(c-'0');/*返回選擇*/}intInput(Studentroom[],intn)/*輸入若干條記錄*/{ inti=0;charsign,x[10];/*x[10]用于清除多余數(shù)據(jù)*/while(sign!='n'&&sign!='N')/*判斷*/{printf("\t\t房間號:");/*交互輸入*/scanf("\t\t%s",&room[n+i].roomnum);printf("\t\t床位號:");scanf("\t\t%s",&room[n+i].bednum);printf("\t\t學(xué)號:");scanf("\t\t%s",&room[n+i].num);printf("\t\t姓名:");scanf("\t\t%s",&room[n+i].name);gets(x);/*清除多余的輸入*/printf("\t\t是否繼續(xù)輸入?(Y/N)");scanf("\t\t%c",&sign);/*輸入判斷*/i++;}return(n+i);}voidDisplay(Studentroom[],intn)/*顯示所有記錄*/{inti;printf("\t\t\n");/*格式頭*/printf("\t\t房間號床位號學(xué)號姓名\n");printf("\t\t\n");for(i=1;i<n+1;i++)/*循環(huán)輸入*/{printf("\t\t%-10s%-10s%-10s%-20s\n",room[i-1].roomnum,room[i-1].bednum,room[i-1].num,room[i-1].name);if(i>1&&i%10==0)/*每十個暫停*/{ printf("\t\t\n");printf("\t\t");system("pause");printf("\t\t\n");}}printf("\t\t");system("pause");}voidSort_by_num(Studentroom[],intn)/*按學(xué)號排序*/{ inti,j,*p,*q,s;chart[10];for(i=0;i<n-1;i++)/*冒泡法排序*/for(j=0;j<n-1-i;j++)if(strcmp(room[j].num,room[j+1].num)>0){strcpy(t,room[j+1].bednum);strcpy(room[j+1].bednum,room[j].bednum);strcpy(room[j].bednum,t);strcpy(t,room[j+1].num);strcpy(room[j+1].num,room[j].num);strcpy(room[j].num,t);strcpy(t,room[j+1].name);strcpy(room[j+1].name,room[j].name);strcpy(room[j].name,t); }}voidSort_by_roomnum(Studentroom[],intn)/*按房間號排序*/{inti,j,*p,*q,s;chart[10];for(i=0;i<n-1;i++)/*冒泡法排序*/for(j=0;j<n-1-i;j++)if(strcmp(room[j].roomnum,room[j+1].roomnum)>0){strcpy(t,room[j+1].roomnum);strcpy(room[j+1].roomnum,room[j].roomnum);strcpy(room[j].roomnum,t);strcpy(t,room[j+1].bednum);strcpy(room[j+1].bednum,room[j].bednum);strcpy(room[j].bednum,t);strcpy(t,room[j+1].num);strcpy(room[j+1].num,room[j].num);strcpy(room[j].num,t);strcpy(t,room[j+1].name);strcpy(room[j+1].name,room[j].name);strcpy(room[j].name,t);}}intInsert_a_record(Studentroom[],intn)/*插入一條記錄*/{ charx[100];/*清除多余輸入所用*/printf("\t\t學(xué)生房間號:");/*交互式輸入*/scanf("\t\t%s",&room[n].roomnum);printf("\t\t學(xué)生床位號:");scanf("\t\t%s",&room[n].bednum);printf("\t\t學(xué)生學(xué)號:");scanf("\t\t%s",&room[n].num);printf("\t\t學(xué)生姓名:");scanf("\t\t%s",&room[n].name);gets(x);n++;Sort_by_num(room,n);/*調(diào)用排序函數(shù)*/printf("\t\t插入記錄成功!\n");/*返回成功信息*/return(n);}intDelete_a_record(Studentroom[],intn)/*查找并刪除一條記*/{chars[20];inti=0,j;printf("\t\t輸入他(她)的姓名:");/*交互式問尋*/scanf("%s",s);while(strcmp(room[i].name,s)!=0&&i<n)i++;/*查找判斷*/if(i==n){printf("\t\t對不起沒找到該學(xué)生!\n");/*返回失敗信息*/return(n);}for(j=i;j<n-1;j++)/*刪除操作*/{strcpy(room[j].roomnum,room[j+1].roomnum);strcpy(room[j].bednum,room[j+1].bednum);strcpy(room[j].num,room[j+1].num);strcpy(room[j].name,room[j+1].name);}printf("\t\t刪除記錄成功!\n");/*返回成功信息*/return(n-1);}voidQuery_a_record(Studentroom[],intn)/*查找顯示一個記錄*/{chars[20];inti=0;printf("\t\t輸入他(她)的姓名:");/*交互式輸入*/scanf("\t\t%s",&s);while(strcmp(room[i].name,s)!=0&&i<n)i++;/*查找判斷*/if(i==n){printf("\t\t對不起沒找到該學(xué)生!\n");/*輸入失敗信息*/return;}printf("\t\t他(她)的房間號:%s\n",room[i].roomnum);/*輸出該學(xué)生信息*/printf("\t\t他(她)的床位號:%s\n",room[i].bednum);printf("\t\t他(她)的學(xué)號:%s\n",room[i].num);}intAddfromText(Studentroom[],intn)/*從文件中讀入數(shù)據(jù)*/{inti=0,num;FILE*fp;/*定義文件指針*/charfilename[20];/*定義文件名*/printf("\t\t輸入文件名:");scanf("\t\t%s",&filename);/*輸入文件名*/if((fp=fopen(filename,"rb"))==NULL)/*打開文件*/{printf("\t\t無法打開該文件\n");/*打開失敗信息*/printf("\t\t");system("pause");return(n);}fscanf(fp,"%d",&num);/*讀入總記錄量*/while(i<num)/*循環(huán)讀入數(shù)據(jù)*/{fscanf(fp,"%s%s%s%s",room[n+i].roomnum,room[n+i].bednum,room[n+i].num,room[n+i].name);i++;}n+=num;fclose(fp);/*關(guān)閉文件*/printf("\t\t讀入成功!\n");printf("\t\t");system("pause");return(n);}voidWritetoText(Studentroom[],intn)/*將所有記錄寫入文件*/{inti=0;FILE*fp;/*定義文件指針*/charfilename[100];/*定義文件名*/printf("\t\t循環(huán)寫入數(shù)據(jù)\n");/*輸入文件名*/printf("\t\t輸入文件名:");scanf("\t\t%s",&filename);if((fp=fopen(filename,"w"))==NULL)/*打開文件*/{printf("\t\t無法打開該文件\n");system("pause");return;}fprintf(fp,"%d\n",n);/*循環(huán)寫入數(shù)據(jù)*/while(i<n){fprintf(fp,"%-10s%-10s%-10s%-10s\n",room[i].roomnum,room[i].bednum,room[i].num,room[i].name);i++;}fclose(fp);/*關(guān)閉文件*/printf("寫入成功!\n");/*返回成功信息*/}voidmain()/*主函數(shù)*/{intn=0;for(;;){switch(menu_select())/*選擇判斷*/{case1:printf("\t\t請輸入記錄\n");/*輸入若干條記錄*/n=Input(room1,n);break;case2:printf("\t\t顯示記錄\n");/*顯示所有記錄*/Display(room1,n);break;case3:printf("\t\t按房間號排序并顯示\n");Sort_by_roomnum(room1,n);/*按房間號排序*/printf("\t\t排序成功!\n"); Display(room1,n);printf("\t\t");break;case4:printf("\t\t按學(xué)號排序并顯示\n");Sort_by_num(room1,n);/*按學(xué)號排序*/printf("\t\t\t排序成功!\n");Display(room1,n);printf("\t\t");break;case5:printf("\t\t插入一條記錄按學(xué)號排序并顯示\n");n=Insert_a_record(room1,n);/*插入一條記錄*/Display(room1,n);printf("\t\t");break;

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論