第一篇:宿舍管理系統設計
宿舍管理系統設計
1.引言
1.1 項目背景
本系統開發的主要目的是采用信息化和網絡化的方式,用于對學校宿舍進行管理,方便管理員對宿舍進行管理以及對同學們宿舍生活需求提供相應的幫助和記錄,達到及時、有效的掌握學生信息以及處理寢室問題的目的。
1.2 文檔概述
該文檔編寫的主要目的是為了定義系統索要實現的功能, 以及實現的方法和流程.同時進一步規范開發流程, 提高開發質量。
1.3定義 1.零報
無論宿舍有無異常情況都必須在每天的規定時間上報給寢室管理員。如果有學生異常情況的出現,則相關負責人應作出相應的處理,若學生沒有出現異常事件,則只需在系統中提醒無異常即可。
2.異常情況
如果宿舍出現有同學在規定時間內沒有回宿舍,或在宿舍突發疾病等異常情況,則有寢室長報告給宿舍管理員,由宿舍管理員填寫報告并幫助解決問題
3.待處理
當出現異常情況時,若事件尚未解決,則狀態為“待處理”狀態,表明此事件需要由相應的管理員進行處理解決。
4.已處理
當異常事件被處理之后,該事件被標明“已處理”狀態,則表明該事件已被處理。
2.任務概述
2.1 目標
根據《宿舍管理需求分析報告》編寫此文檔,用于指導開發人員根據客戶功能需求進行相應的程序開發。
2.2 系統網絡配置及構架方案
宿舍管理系統依托于湖北文理學院官網平臺構建,邏輯結構為環型拓撲結構,如圖一 所示,學校學工處管理員通過網絡平臺可以發送消息,每一位宿舍管理員,學生,學生教師都能看到。宿舍管理員也可以通過官網發送宿舍管理情況到服務器,學校管理員,學生等都可以登錄查看。
宿舍管理系統網絡邏輯架構圖服務器宿舍管理員學生學工處管理員學生教師
圖一:網絡結構拓撲圖
2.3 系統架構圖
宿舍管理系統???湖北文理學院官網???學生教師學生教師???學校管理員宿舍管理員???學生
圖二:系統構架圖
2.4 條件與限制
系統使用用戶主要為宿舍管理員、宿舍住宿學生、學生教師、學校管理員,因此,系統因屬于學校應用系統的范疇內,運行在學校的內部網站中。信息系統運行的前提和假設如下:
(1)學生基本信息以及宿舍各種活動信息(包括學生的姓名、學號、寢室號、所在班級等信息)已經給定。
(2)學生進出宿舍以及各種生活需求的相關信息有學校的內部存儲機制進行存儲,學生采用刷卡式。
(3)學生宿舍的信息每24小時進行一次統計,統計時間為每天23:00,并建立相關的通報機制,及時將學生的信息變更報告給寢室管理員,對于個別信息(如學生晚歸寢室等)及時報告給學校以及學生教師。
(4)信息的反饋與通報由相應的寢室管理員為基礎,向相應的學生教師反映,再由學生教師向學校反映。
(5)系統用戶僅限學校學工處統一管理,不對外提供公眾訪問。(6)進入系統的歷史記錄均要求保存。
3.總體設計
3.1 需求概述
系統宿舍管理情況要求每日在規定時間內上報給寢室管理員,一旦發現異常情況立即上報,并通知相關負責人來處理。上報可采取電話,傳真,網絡等方式。比較重大事件就采取先電話上報,涉及到相關人員或有必要需在網絡上通知一下。一般情況下,寢室管理員,學工處管理員,學生教師可以在網絡上發布消息。其他人登陸網站后可以接收到消息。學生可以反饋信息給寢室管理員。
3.2 功能分配
本系統主要包含了零報和學生宿舍異常處理模塊、學生基本信息管理模塊、學生日常進出寢室活動模塊、學生寢室故障登記模塊、學生寢室測評模塊、信息通報模塊、學生卡消費信息模塊、學生宿舍安全模塊。
各模塊的簡要功能說明如下:
1.零報和學生宿舍異常處理模塊:主要對學生宿舍出現的一些問題進行記錄。如果當天出現學生晚歸、學生宿舍設施故障、學生安全問題等,則對其進行相應的信息記錄,當天如果出現異常情況,則進行通報,若沒有,則零報。對于異常事件,若已經解決,則顯示為“已處理”,未經解決,則顯示“未處理”。
2.學生基本信息管理模塊:對學生的基本信息進行管理,如學生姓名、學號、電話、所在班級、學生教師、寢室號等信息進行存儲記錄,以便以后出現問題進行查詢解決。
3.學生日常進出寢室活動模塊:記錄學生進出寢室的時間,以及學生貴重物品攜帶的情況,學生刷卡進出寢室,若帶有物品需在相應的機器上登記并判斷,來限定學生進出寢室,并予以記載。
4. 學生寢室故障登記模塊:學生寢室出現各種故障,如斷水斷電、設施損壞等,均可上網登記。
5.學生寢室測評模塊:對學生寢室進行相應的測評,如衛生測評、五星級寢室測評、文明寢室測評等記錄。
6.信息通報模塊:對宿舍發生的新聞、寢室測評結果、異常情況處理、通報寢室及學生等信息進行發布,以便學生了解宿舍情況,7.學生卡消費信息模塊:宿舍采用校園卡進行宿舍使用水電、洗衣機等設備的費用支付,學生可在網上進行學生卡的充值、查詢使用金額和剩余金額、使用的地方等。
8.學生宿舍安全模塊:對于一些基本的安全問題進行指導說明,并對近期發生的安全事故進行通報分析,以便同學們提早做出防范。
4.模塊設計
4.1 零報和學生宿舍異常處理模塊
4.1.1 模塊描述
? 零報登記表錄入項目包括:
錄入宿舍號: 零報樓棟號和宿舍號。
錄入人姓名及聯系方式:錄入人的姓名,聯系方式。填報時間:由系統自動獲取服務器時間。
填寫完上述信息后,點擊提交按鈕系統提示用戶檢查所填信息,并提問用戶是否確認提交所填零報。如果確認,則提交零報,提交成功后提示零報已經提交成功。失敗的話給出失敗提示。如果當天已經填寫過零報或可疑情況登記表則提示零報已經提交,或已經填寫過可疑情況登記表,不能在提交零報。
? 異常情況登記表錄入項目包括:
錄入宿舍號:發生異常情況的具體樓棟號和宿舍號。
學生姓名:發生安全情況或晚歸等情況的學生姓名。選填。提示如果是發生宿舍設備故障情況就不用填寫。
性別:學生性別,要求同上。默認女。采用radio單選框。年齡:學生年齡,要求同上。
家長號碼:如果有出現晚歸的學生,或者出現安全情況,則需要聯系寢室長或班長記錄學生電話號碼和家長電話號碼,情況嚴重時需和家長聯系。
異常情況說明:這個必須要寫明是什么異常情況,例如如果是晚歸(情況惡劣)的學生,則需要受到相應處分。
填報時間:由系統自動獲取服務器時間。4.1.2 功能概述
該模塊主要包括兩個功能,一個是零報錄入,如果該地區當天未發現可疑情況,只需填寫零報,一天只許填寫一次零報。一個是異常情況登記錄入。若有異常情況,須立即填寫異常情況登記表,不可再填寫零報。
4.2 學生基本信息管理模塊
4.2.1 模塊描述
表格每一行基本信息是學生姓名和學號,后面為更多,點進去為另一個表格,包括學生姓名、學號、電話、所在班級、學生教師、寢室號等信息,以便以后出現問題進行查詢解決。
表格如下面這種形式:
更多: 4.2.2 功能概述
該模塊主要記錄了學生信息,如果學生有異議,可以來查詢。可以根據學號來查詢異常情況一欄里也有詳細的備注信息。
4.3 學生進出寢室活動模塊
4.3.1 模塊描述
記錄學生進出寢室的時間,以及學生貴重物品攜帶的情況,學生刷卡進出寢室,若帶有物品需在相應的機器上登記并判斷,來限定學生進出寢室,并予以記載。
與4.2.1的表格類似。點擊更多就可以看到進出時間以及攜帶物品情況。更多表格如下:
4.3.2 功能概述
記錄學生進出寢室的時間,以及學生貴重物品攜帶的情況,方便查詢。
4.4 學生寢室故障登記模塊
4.4.1 模塊描述
此模塊用來管理學生提交的維修報告。維修人員可以修 改報告的是否修好的狀態。任何人不能刪除維修報告。學生只能查看自己提交的維修報告。管理員可以查看具體報告內容和報告的其它一些統計信息。維修人員只能查看屬于他自己維修類型的報告刪除操作隨學生信息的刪除而級聯自動刪除。學生寢室出現各種故障,如斷水斷電、設施損壞等,均可上網登記。這個模塊由學生向宿舍管理員報告,管理員確認后登記。表格內容包括:
故障:說明發生故障情況,斷水或斷電或者水龍頭壞了等 宿舍號:記錄發生故障的宿舍號。記錄時間:由系統自動獲取服務器時間。4.4.2 功能描述
記錄宿舍故障情況,如果故障太頻繁,應該檢查一下哪里出了問題。4.5 學生寢室測評模塊
4.5.1 模塊描述
此模塊用來管理學生宿舍衛生情況。學生只能查詢屬于自己寢室的衛生情況,如果該學生換過寢室,也將他當時所住寢室的衛生信息顯示出來,即顯示全部該學生的衛生情況(包括以前住過的寢室)。院系錄入情況后,不能刪除和修改衛生情況。只有報告到校級管理員,由校級管理員自己修改。
4.5.2功能描述
學生組織定期對學生宿舍進行檢查,由宿舍管理員匯總測評并上報,校學工處對測評結果進行通報審核。4.6學生卡消費模塊
4.6.1模塊描述
此模塊用來描述學生卡的使用以及充值情況,你的卡在刷卡機上每刷一次都會有記錄,同時也會顯示你的余額,如果學生每天的消費超過卡的限定額卡在刷卡機上就會警告,如果卡上沒錢了刷卡機上也會顯示。
4.6.2功能描述
學生使用學生卡進行消費,扣除相應的金額,如果卡上沒錢可由網上進行學生卡充值。4.7信息通報模塊
4.7.1模塊描述
此模塊用來描述宿舍管理員與校學工處對于一些日常信息的通報與查看,同時還有老師以及學生自己對一些信息的查看,比如學生的作息時間、寢室的規章制度、以及某寢室被通報的信息等。4.7.2功能描述
對于一些日常信息,校學工處和宿舍管理員可進行通報和查看,學生和教師可對信息進行查看來了解最近的宿舍動態。4.8用戶管理
4.8.1模塊描述
此模塊用來描述教師、學生、宿舍管理員對自己信息的創建(申請用戶:最好用學號),創建好了以便于后面的的對自己信息的查詢(比如你的個人信息、寢室信息等),和修改個人資料寢室資料,以及系統管理員對里面成員的管理,同時也以便于校學工處對那些違反寢室規章制度學生的查找。
4.8.2功能描述
系統管理員可以對所有用戶進行管理,可創建、查詢、修改和刪除用戶,以及教師、學生、校學工處和宿舍管理員在該系統中創建賬號,并進行訪問以及信息的修改。
5.安全保密設計
根據系統用戶
第二篇:宿舍管理系統
附件B:宿舍管理系統源代碼
#include “stdio.h” #include “stdlib.h”
#define SIZE 1000
char grade;
typedef struct StuNode{
char num[11];
char name[20];
char sex[2];
char birth[11];
char hometn[13];
char dorNum[7];
char dorTel[8];
struct StuNode *next;}StuNode,*StuList;
int readToList(StuList sl,FILE *fp){
StuList p;
int i=0;
while(1){
p=(StuList)malloc(sizeof(StuNode));
if(fread(p,sizeof(StuNode),1,fp)!=1)break;
p->next=sl->next;
sl->next=p;
i++;
}
fclose(fp);
return i;}
void addNode(){
FILE *fp;
StuList sl,p,q;
if((fp=fopen(“stu_list”,“rb”))==NULL){ /*the file doesn't exist*/
p=(StuList)malloc(sizeof(StuNode));
printf(“Please enter the student's information:n”);
scanf(“%s%s%s%s%s%s%s”,&p->num,&p->name,&p->sex,&p->birth,&p->hometn,&p->dorNum,&p->dorTel);
getchar();
p->next=NULL;
if((fp=fopen(“stu_list”,“wb”))==NULL){
printf(“cannot open filen”);
return;
}
else{
if(fwrite(p,sizeof(StuNode),1,fp)!=1){
printf(“file write errorn”);
return;
}
}
fclose(fp);
}
else{
sl=(StuList)malloc(sizeof(StuNode));
sl->next=NULL;
readToList(sl,fp);
p=(StuList)malloc(sizeof(StuNode));
printf(“Please enter the student's information:n”);
scanf(“%s%s%s%s%s%s%s”,&p->num,&p->name,&p->sex,&p->birth,&p->hometn,&p->dorNum,&p->dorTel);
getchar();
q=sl->next;
while(q){
if(strcmp(q->num,p->num)==0){
printf(“This student %s existed!Press Enter to continue....”,p->num);
getchar();
clrscr();
return;
}
else q=q->next;
}
p->next=sl->next;
sl->next=p;
p=sl->next;
if((fp=fopen(“stu_list”,“wb”))==NULL){
printf(“cannot open filen”);
return;
}
else{
while(p){
if(fwrite(p,sizeof(StuNode),1,fp)!=1){
printf(“file write errorn”);
return;
}
p=p->next;
}
}
fclose(fp);
}
printf(“nSuccess!
Press Enter to continue....”);
getchar();
clrscr();}
void delNode(){
FILE *fp;
StuList sl,p,q;
char num[11];
int flag=1;
printf(“Please enter the student's num:”);
scanf(“%s”,&num);
getchar();
sl=(StuList)malloc(sizeof(StuNode));
sl->next=NULL;
if((fp=fopen(“stu_list”,“rb”))==NULL){
printf(“cannot open filen”);
return;
}
readToList(sl,fp);
p=sl;
while(p){
q=p->next;
if(strcmp(q->num,num)==0){
p->next=q->next;
free(q);
flag=0;
}
else p=p->next;
}
if(flag==1){
printf(“Not exist this student--%s!Press Enter to continue....”,num);
getchar();
clrscr();
return;
}
else if((fp=fopen(“stu_list”,“wb”))==NULL){
printf(“cannot open filen”);
return;
}
else{
p=sl->next;
while(p){
if(fwrite(p,sizeof(StuNode),1,fp)!=1){
printf(“file write errorn”);
return;
}
p=p->next;
}
fclose(fp);
}
printf(“nSuccess!
Press Enter to continue....”);
getchar();
clrscr();}
void editNode(){
FILE *fp;
StuList sl,p;
char num[11];
int flag=1;
printf(“Please enter the student's num:”);
scanf(“%s”,&num);
getchar();
sl=(StuList)malloc(sizeof(StuNode));
sl->next=NULL;
if((fp=fopen(“stu_list”,“rb”))==NULL){
printf(“cannot open filen”);
return;
}
readToList(sl,fp);
p=sl->next;
while(p){
if(strcmp(num,p->num)==0){
printf(“nThe student's old information is:n%s %s %s %s %s %s %snPlease enter the student's new information:n”,p->num,p->name,p->sex,p->birth,p->hometn,p->dorNum,p->dorTel);
scanf(“%s%s%s%s%s%s%s”,&p->num,&p->name,&p->sex,&p->birth,&p->hometn,&p->dorNum,&p->dorTel);
getchar();
flag=0;
break;
}
else p=p->next;
}
if(flag){
printf(“Not exist this student--%s!Press Enter to continue....”,num);
getchar();
clrscr();
return;
}
else if((fp=fopen(“stu_list”,“wb”))==NULL){
printf(“cannot open filen”);
return;
}
else{
p=sl->next;
while(p){
if(fwrite(p,sizeof(StuNode),1,fp)!=1){
printf(“file write errorn”);
return;
}
p=p->next;
}
fclose(fp);
}
printf(“nSuccess!
Press Enter to continue....”);
getchar();
clrscr();}
void sort(StuList sl[],int n,char key[]){
int i,j,k;
if(strcmp(key,“num”)==0){
for(i=1;i k=i; for(j=i+1;j<=n;j++) if(strcmp(sl[j]->num,sl[k]->num)<0)k=j; if(k!=i){ sl[0]=sl[i]; sl[i]=sl[k]; sl[k]=sl[0]; } } } if(strcmp(key,“name”)==0){ for(i=1;i k=i; for(j=i+1;j<=n;j++) if(strcmp(strlwr(sl[j]->name),strlwr(sl[k]->name))<0)k=j; if(k!=i){ sl[0]=sl[i]; sl[i]=sl[k]; sl[k]=sl[0]; } } } if(strcmp(key,“dorNum”)==0){ for(i=1;i k=i; for(j=i+1;j<=n;j++) if(strcmp(sl[j]->dorNum,sl[k]->dorNum)<0)k=j; if(k!=i){ sl[0]=sl[i]; sl[i]=sl[k]; sl[k]=sl[0]; } } } } void scan(char key[]){ FILE *fp; StuList sortary[SIZE],sl,p; int i,n; sl=(StuList)malloc(sizeof(StuNode)); sl->next=NULL; if((fp=fopen(“stu_list”,“rb”))==NULL){ printf(“cannot open filen”); return; } n=readToList(sl,fp); p=sl->next; for(i=1;i<=n;i++){ sortary[i]=p; p=p->next; } sort(sortary,n,key); printf(“n num name sex birth hometown dorNum dorTeln”); printf(“---------------n”); for(i=1;i<=n;i++){ printf(“%-11s %-19s%-2s %-11s %-13s %-7s %-8sn”,sortary[i]->num,sortary[i]->name,sortary[i]->sex,sortary[i]->birth,sortary[i]->hometn,sortary[i]->dorNum,sortary[i]->dorTel); } printf(“---------------n”); printf(“Press Enter to continue...”); getchar();} void search(char key[],char value[]){ FILE *fp; StuList sortary[SIZE],sl,p; int i,n,low,high,mid,flag=1; sl=(StuList)malloc(sizeof(StuNode)); sl->next=NULL; if((fp=fopen(“stu_list”,“rb”))==NULL){ printf(“cannot open filen”); return; } n=readToList(sl,fp); p=sl->next; for(i=1;i<=n;i++){ sortary[i]=p; p=p->next; } sort(sortary,n,key); low=1;high=n; while(low<=high){ mid=(low+high)/2; if(strcmp(value,sortary[mid]->num)==0){ printf(“The student's information is:n”); printf(“%-11s%-19s%-2s%-11s%-13s%-7s%-8sn”,sortary[mid]->num,sortary[mid]->name,sortary[mid]->sex,sortary[mid]->birth,sortary[mid]->hometn,sortary[mid]->dorNum,sortary[mid]->dorTel); flag=0; break; } else if(strcmp(strlwr(value),strlwr(sortary[mid]->name))==0){ printf(“Result set:n”); printf(“%-11s%-19s%-2s%-11s%-13s%-7s%-8sn”,sortary[mid]->num,sortary[mid]->name,sortary[mid]->sex,sortary[mid]->birth,sortary[mid]->hometn,sortary[mid]->dorNum,sortary[mid]->dorTel); for(i=mid+1;strcmp(strlwr(value),strlwr(sortary[i]->name))==0;i++) printf(“%-11s%-19s%-2s%-11s%-13s%-7s%-8sn”,sortary[mid]->num,sortary[mid]->name,sortary[mid]->sex,sortary[mid]->birth,sortary[mid]->hometn,sortary[mid]->dorNum,sortary[mid]->dorTel); for(i=mid-1;strcmp(strlwr(value),strlwr(sortary[i]->name))==0;i--) printf(“%-11s%-19s%-2s%-11s%-13s%-7s%-8sn”,sortary[mid]->num,sortary[mid]->name,sortary[mid]->sex,sortary[mid]->birth,sortary[mid]->hometn,sortary[mid]->dorNum,sortary[mid]->dorTel); flag=0; break; } else if(strcmp(value,sortary[mid]->dorNum)==0){ printf(“Result set:n”); printf(“%-11s%-19s%-2s%-11s%-13s%-7s%-8sn”,sortary[mid]->num,sortary[mid]->name,sortary[mid]->sex,sortary[mid]->birth,sortary[mid]->hometn,sortary[mid]->dorNum,sortary[mid]->dorTel); for(i=mid+1;strcmp(value,sortary[i]->dorNum)==0;i++) printf(“%-11s%-19s%-2s%-11s%-13s%-7s%-8sn”,sortary[i]->num,sortary[i]->name,sortary[i]->sex,sortary[i]->birth,sortary[i]->hometn,sortary[i]->dorNum,sortary[i]->dorTel); for(i=mid-1;strcmp(value,sortary[i]->dorNum)==0;i--) printf(“%-11s%-19s%-2s%-11s%-13s%-7s%-8sn”,sortary[i]->num,sortary[i]->name,sortary[i]->sex,sortary[i]->birth,sortary[i]->hometn,sortary[i]->dorNum,sortary[i]->dorTel); flag=0; break; } else if((strcmp(key,“num”)==0)&&(strcmp(value,sortary[mid]->num)<0))high=mid-1; else if((strcmp(key,“name”)==0)&&(strcmp(strlwr(value),strlwr(sortary[mid]->name))<0))high=mid-1; else if((strcmp(key,“dorNum”)==0)&&(strcmp(value,sortary[mid]->dorNum)<0))high=mid-1; else low=mid+1; } if(flag)printf(“No result!n”); printf(“Press Enter to continue...”); getchar(); clrscr();} void printMenu(){ printf(“ *********************< MENU >*********************n”); printf(“ 1.Add one student's record.n”); printf(“ 2.Delete one student's record.n”); printf(“ 3.Edit one student's record.n”); printf(“ 4.Scan all records ordered by num.n”); printf(“ 5.Scan all records ordered by name.n”); printf(“ 6.Scan all records ordered by dorNum.n”); printf(“ 7.Search one student's record.n”); printf(“ 8.Exit.n”); printf(“ **************************************************n”); printf(“Please enter your choice(1~8):”); grade=getchar(); getchar();} void main(){ char key[7],value[20]; while(1){ printMenu(); switch(grade){ case'1':addNode();break; case'2':delNode();break; case'3':editNode();break; case'4':clrscr();scan(“num”);break; case'5':clrscr();scan(“name”);break; case'6':clrscr();scan(“dorNum”);break; case'7':clrscr(); printf(“Please enter the key and value(eg:num 0606054230/name ZhangSan/dorNum 030615):n”); scanf(“%s%s”,&key,&value); while((strcmp(key,“num”)!=0)&&(strcmp(key,“name”)!=0)&&(strcmp(key,“dorNum”)!=0)){ printf(“Wrong key!It must be num/name/dorNum:n”); scanf(“%s%s”,&key,&value); getchar(); } getchar(); clrscr(); search(key,value); break; case'8':exit(0); default:clrscr(); printf(“n Have no this choice--%c!Press Enter to continue...”,grade); getchar(); clrscr(); } } } 宿舍安全用電---一個亟待解決的問題因此各高校在制定規章制度明令禁止學生在宿舍使用熱得塊、電爐、電飯鍋、電熨斗、電磁爐、電熱杯、電水壺、暖手寶、電熱毯及其他易發生火災及觸電事故的電器、嚴禁亂拉亂接電線和私自安裝插座等的同時,還不定期的進行安全檢查,一旦發現違規電器立刻采取沒收、處罰甚至于焚燒等傳統的管理措施。但是隨著學生用電需求的多樣化以及“以人為本”管理要求的提出,以往的單一化用電管理辦法已經不能滿足時代要求了。學生的用電設備越來越多,安全隱患問題也越來越嚴重。如何應用科學手段進行科學管理,是高校管理者們所提出的管理需求,也是一個急待解決的問題。北京市教委做出明確要求并發表在《北京日報》上:所有沒有安裝帶有惡性負載識別裝置的學生宿舍都要求安裝相關設備,加強安全用電管理。次日,北京市教委再次重申決定并發表在〈新京報〉上,再次強調:各高校要抓緊時間安裝帶有惡性負載識別的裝置。 2009年12月7日,中華人民共和國教育部和中華人民共和國公安部聯合發出了第28號令——《高等學校消防安全管理規定》,文件中對高校火災隱患的整改措施有明確的要求: 第三十二條 對不能及時消除的火災隱患,隱患單位應當及時向學校及相關單位的消防安全責任人或者消防安全工作主管領導報告,提出整改方案,確定整改措施、期限以及負責整改的部門、人員,并落實整改資金。 TW-SG1000系列宿舍用電智能管理系統概述 一、系統簡介: TW-SG1000系列宿舍用電智能管理系統是北京泰文科技有限公司集多位資深專家精心設計出的新一代多功能智能用電管理系統。該系統應用微電子技術精確計量電量,采用專用大規模集成電路與最新的單片處理器及外圍芯片技術設計制造。TW-SG1000宿舍用電智能管理系統組成:宿舍智能管理模塊(DDEb2-20A/2~4x16A)、數據網關(TW-Port2)、管理終端機(TW-SG100)、宿舍管理數據中心機(TW-SG100A)、系統軟件(TW-SG1000R)。具有安全用電、節能管理、精確計量等功能。 二、網絡組成: TW-SG1000系列宿舍用電智能管理系統網絡組成:宿舍智能管理模塊(DDEb2-20A/2~4x16A)與數據網關(TW-Port2)之間為RS485總線(MOD-BUS協議),采用雙絞屏蔽線穿鋼管敷設手拉手連接;數據網關(TW-Port2)與管理終端機(TW-SG100)等設備均為超五類網線以太網連接,放射式組網。 三、模塊簡介 1、宿舍智能管理模塊:DDEb2-20A/2~4x16A,為一路220V 20A交流電源輸入,2~4路16A開關輸出的綜合智能管理模塊。 2、數據網關:TW-Port2,是實現RS485轉換為以太網傳輸的網絡附件。 3、管理終端機:TW-SG100,是宿舍管理員管理操作終端設備,設置在管理員處,具備管理員權限;可以實現開關燈、售電、違章用電處罰等操作。 4、宿舍管理數據中心機:TW-SG100A,是中心處理機,設置在學生管理處,具備管理員權限、程序員權限等高級權限;可以實現入住開戶、開關燈、售電、退售、違章用電處罰、畢業銷戶、與學校相關管理部門數據交換等操作。 四、功能簡介 1、惡性負載識別功能 模塊具備惡性負載識別功能:禁止電爐、熱得快、電磁爐、微波爐、電熱毯、電吹風機等大功率或易引起接觸火災的負載使用,同時允許1.2KW~1.5KW的空調正常使用;其技術基礎區別于傳統功率限制為主的負載識別技術,傳統負載識別技術在限制了惡性負載使用的同時,把功率大于其設定識別起始功率的空調負載也限制了。 2、模塊靈活的管理功能 一路輸入、二~四路輸出,可以方便的實現宿舍的管理要求,其輸出分別對應照明、插座、空調、衛生間的供電回路;通過管理系統實現分時或分季節對照明、插座、空調、衛生間的供電;比如:晚上11時統一關燈,在需要用空調的季節把電扇和空調的電源不關斷;在可能無人在宿舍的時間段統一關掉全部電源;在有衛生間的宿舍,在夜間關燈后可以統一轉入夜間照明模式;同時對于需要限制插座用電的宿舍可以單獨限制其插座的電源;不需要使用空調電扇的季節統一關掉所有的空調電源;同時該模塊也可以當樓控模塊使用,用來控制公共照明燈等電源。 3、精確計量功能 1)模塊具備計量功能:5(20)A,1.0級 內部考核計量用。2)具有預付費功能及免費基礎電量設置功能。 3、能累計計量,支持后付費。 4、具有低電量報警功能:可設置報警電量,當用戶剩余電量低于報警值時,模塊報警,提示用戶購電。具有零度斷電功能。 5、管理中心主機通過通訊網絡采集各分散式安全模塊的數據信息并進行計算、查詢、統計、打印及參數設定,從而實現中心管理的電費計量、預售電管理及安全用電控制等功能。 6、具有實時功率顯示功能,可實時顯示用戶的用電負荷 7、能計量正負兩個方向的電能,雙方向能累計,有效防止了偷漏電現象。 8、能監控電流、電壓、頻率、有功功率、累計用電量、剩余電量等。 4、功能強大的上位機軟件(TW-SG1000R),1、電腦遠程寫電,支持退費,費率可設定; 2、開關燈管理; 3、實時監控; 4、模塊參數可設定; 5、支持數據庫; 6、支持定制,可以根據客戶需求改變軟件界面,和增加功能; 7、可以集成水表、別的電表等,幫業主實現節能管理; 8、支持校園網WEB查詢,學生可以遠程查看本宿舍的電量及違規用電情況; 9、支持權限登錄;權限管理; 10、支持分時段自動控制,最多每路一天8個時段(默認4個); 11、與一卡通系統數據對接后可以實現一卡通系統自動售電; 五、安裝維修方便 采用微斷式的模數設計,二路、三路輸出的模塊為3P(54mm)模數;四路輸出的模塊為4P(72mm)模數,35mm導軌安裝;可分散安裝于每間宿舍配電箱內, 也可集中安裝于樓層總配電箱內;維修時普通電工簡單培訓后均可完成,只需要把故障模塊從導軌上取下,同時換上備用模塊,調整模塊地址,插上通訊線和強電線就完成維修。 塔里木大學宿舍管理系統 1.系統簡介 假設學校共有20幢宿舍樓,每幢大約135個宿舍,每個宿舍有6個人。每幢宿舍有兩個宿管阿姨或大伯,負責本宿舍樓的日常管理。學校又設置后勤處管理全校的宿管阿姨或大伯。而輔導員和班主任可以通過后勤處了解本院、系、班級的宿舍情況。(例如:學生住在哪個樓,宿舍號,衛生評比等等。)宿管針對新生入校或假期開學后的學生入校及畢業生離校做登記,保證宿舍的正常運轉,尤其是新生還要做好物品領取登記。檢查記錄宿舍的財產如椅子,桌子,柜子等。(事實數據)宿舍東西壞了,比如燈壞了,暖氣不熱,則有宿舍長上報給宿管,填寫維修申請表(那幢樓,宿舍號,什么壞了,原因,時間)再有宿管將表交給后勤處。(作業級信息)后勤處收到各種表,登記表,維修表,要進行存儲。并派相關人員去處理解決問題。(戰術級信息)有時發生偶然事件職責需向輔導員及時轉達,比如學生夜不歸宿,打架斗毆,發生意外等。(戰術級信息) 2.技術要求和限制條件 (1)本系統的數據存儲至少包括:入宿離校登記表(新生入校或假期開學后生入校及畢業生離校時要做詳細登記包括姓名,班級,專業,宿舍號等),維修申請表(那幢樓,宿舍號,什么壞了,原因,時間),值班表(宿管換班時間,值班人,輔導員和班主任也會輪流值班),賣水表(某個宿管在某個時段所賣礦泉水的桶數)宿舍設施管理責任表(登記宿舍所有的財產,如果人為的破壞了其中任何東西,學生就要進行相應賠償),新生物品領取表(暖瓶,被褥,洗臉盆,洗腳盆) (2)簡化,假設學校所有宿舍情況一致。 青島農業大學 理學與信息科學學院 高級語言課程設計報告 設 計 題 目 宿舍管理系統 學生專業班級班 學生姓名(學號) 設計小組其他同學姓名(學號) 指 導 教 師 完 成 時 間 設 計 地 點 2016年12月06日 一、課程設計目的和任務 《高級語言程序設計》課程設計是計算機相關專業的主要實踐性教學環節。其目的在于加深對高級語言程序設計理論和基本知識的理解,掌握使用C語言進行面向過程設計的基本方法,提高運用面向過程知識解決實際問題的能力。為畢業設計和以后的工程實踐打下良好的基礎。 宿舍管理系統:用C語言為學生宿舍管理人員編寫一個宿舍管理軟件。設某宿舍有:101,102,201,202四個房間,每個房間可住學生<=4人,存儲結構:學號、姓名、房間號,按房間號有序,實現學生的入住、退房和查詢,按給定學號、姓名、房號查詢。 二、分析與設計 1.程序的基本功能:(1).實現新生入住登記(2).修改入住學生信息(3)實現退房 (4)實現以姓名查詢學生信息(5)實現以學號查詢學生信息(6)實現以寢室號查詢學生信息(7)實現按照寢室號從小到大排序(8)實現按學號從小到大排序(9)實現顯示所有學生信息(10)實現退出程序并保存數據 2.定義的函數及說明: 此程序由11個函數構成。 Add----------添加學生信息函數(姓名、學號、宿舍號、班級)Alter----------修改學生信息函數 Delete--------刪除學生信息函數 Display_All--------顯示所有學生信息函數 Query_S_name---------查詢函數以姓名為關鍵字進行查詢 Query_S_number-------查詢函數以學號為關鍵字進行查詢 Query_D_number------查詢函數以寢室號為關鍵字進行查詢 Save-----存儲函數 Judge_Save----退出程序時判斷是否保存函數 Menu--菜單 Main---主函數 3.系統總框圖: 三、系統實施 1.源程序代碼: #include int D_number;//學生所在寢室的宿舍號 char S_class1[10];//班級 int Total;//學生總數 }Student[16];int sushehao[4]={101,102,201,202};int count[4]={0};//判斷學號是否與表中所存學號重復 void S_number_Judge(Student S,int t){ int i;for(i=1;i<=(S->Total)-1;i++) while(strcmp(S[i].S_number,S[t].S_number)==0)//strcmp字符串比較函數,兩個字符逐個比較,相等返回值為 { printf(“學號輸入失敗,該學號已存在,請重新輸入學號!n”); printf(“請輸入學生的學號(10個字符以內):”);scanf(“%s”,S[t].S_number); getchar(); i=1; } } //添加學生信息函數 void Add(Student S){ int j;int flag=1;printf(“請輸入學生姓名(10個字符以內):”);scanf(“%s”,S[++(S->Total)].S_name);getchar();//獲取換行符 printf(“請輸入學生的學號(10個字符以內):”);scanf(“%s”,S[S->Total].S_number);getchar();S_number_Judge(S,S->Total);//判斷輸入的學號是否與表中所存在的學號重復 while(flag){ printf(“請輸入宿舍號碼:”); scanf(“%d”,&S[S->Total].D_number);for(j=0;j<4;j++){ if(S[S->Total].D_number==sushehao[j] && count[j]<4) { count[j]++; flag=0; break; } if(S[S->Total].D_number==sushehao[j]&&count[j]==4) { printf(“該宿舍已滿,請重新輸入n”); break; } } } getchar();printf(“請輸入所在班級:”);scanf(“%s”,S[S->Total].S_class1);getchar();printf(“添加成功!nn”); }//修改學生信息函數 void Alter(Student S){ int i;int flag=0;//用來判斷表中是否存在所要修改的學生的信息 char number[10];printf(“請輸入你要修改學生的學號:”);scanf(“%s”,number);getchar();for(i=1;i<=S->Total;i++) if(strcmp(S[i].S_number,number)==0) flag=i;if(!flag) printf(“你所要修改的學生信息在表中不存在!n”);else { printf(“新信息如下:n”); printf(“請輸入學生姓名(10個字符以內):”); scanf(“%s”,S[flag].S_name); getchar(); printf(“請輸入學生的學號(10個字符以內):”); scanf(“%s”,S[flag].S_number); getchar(); S_number_Judge(S,flag); printf(“請輸入宿舍號:”); scanf(“%d”,&S[flag].D_number); getchar();printf(“請輸入床鋪號碼:”);scanf(“%s”,&S[S->Total].S_bednum);getchar();printf(“請輸入所在班級:”);scanf(“%s”,&S[S->Total].S_class1);getchar(); dirty=1; printf(“修改成功!n”);} putchar('n');} //刪除學生信息 void Delete(Student S){ int i,j;int flag=0;//用來判斷表中是否存在所要刪除的學生的信息 char number[10];printf(“請輸入你要刪除學生的學號:”);scanf(“%s”,number);getchar();for(i=1;i<=S->Total;i++) if(strcmp(S[i].S_number,number)==0) flag=i;if(!flag) printf(“你所要刪除的學生在表中不存在!”);else { for(i=flag;i j=i+1; strcpy(S[i].S_name,S[j].S_name);//字符串拷貝函數,格式:符數組名,字符數組名),賦值給 strcpy(S[i].S_number,S[j].S_number); 字 strcpy(S[i].D_number=S[j].D_number; strcpy(S[i].S_bednum,S[j].S_bednum); strcpy(S[i].S_class1,S[j].S_class1);} (S->Total)--; dirty=1; printf(“刪除成功!”);} printf(“nn”);} //顯示所有學生信息函數 void Display_All(Student S){ int i;printf(“全體學生信息如下:n”);printf(“--------------------n”);/*格式頭*/ printf(“ 房間號床位號學號姓名班級 n”);printf(“--------------------n”);for(i=1;i<=S->Total;i++) printf(“ %-10d%-10s%-10s%-10s%-10sn”,S[i].D_number,S[i].S_bednum,S[i].S_number,S[i].S_name,S[i].S_class1); putchar('n');} //查詢函數以姓名為關鍵字進行查詢(順序查找)void Query_S_name(Student S){ int i,j=0;char name[10];printf(“請輸入你要查找的學生的姓名(10個字符以內):”);scanf(“%s”,name);getchar();printf(“所查找學生信息如下:n”);printf(“tt-----------------n”);/*格式頭*/ printf(“tt房間號床位號學號姓名班級 n”);printf(“tt-----------------n”);for(i=1;i<=S->Total;i++) if(strcmp(name,S[i].S_name)==0) { printf(“tt%-10d%-10s%-10s%-10s%-10sn”,S[i].D_number,S[i].S_bednum,S[i].S_number,S[i].S_name,S[i].S_class1);j=1; } if(!j) printf(“n查找失敗,表中不存在該學生的信息!nn”);} //查詢函數以學號為關鍵字進行查詢(折半查找)void Query_S_number(Student S){ int i,j=0;char number[10];printf(“請輸入你要查找的學生的學號(10個字符以內):”);scanf(“%s”,number);getchar();printf(“所查找學生信息如下:n”);printf(“tt-----------------n”);/*格式頭*/ printf(“tt房間號床位號學號姓名班級 n”);printf(“tt-----------------n”);for(i=1;i<=S->Total;i++) if(strcmp(number,S[i].S_number)==0) { printf(“tt%-10d%-10s%-10s%-10s%-10sn”,S[i].D_number,S[i].S_bednum,S[i].S_number,S[i].S_name,S[i].S_class1);j=1; } if(!j) printf(“n查找失敗,表中不存在該學生的信息!nn”);} //查詢函數以寢室號為關鍵字進行查詢(折半查找)void Query_D_number(Student S){ int i,j,m,n,base,top,mid;j=0;base=1;top=S->Total;printf(“請輸入你要查詢的寢室號:”);scanf(“%d”,&i);getchar();Sort_D_number(S);//將表中原數據按照寢室號從小到大排序 printf(“所查找寢室信息如下:n”);printf(“tt-----------------n”);/*格式頭*/ printf(“tt房間號床位號學號姓名班級 n”);printf(“tt-----------------n”);if(i>=S[1].D_number&&i<=S[S->Total].D_number){ while(base<=top) { mid=(base+top)/2; if(i==S[mid].D_number) { m=mid;n=mid-1; while(S[m].D_number==i) { printf(“tt%-10d%-10s%-10s%-10s%-10sn”,S[m].D_number,S[m].S_bednum,S[m].S_number,S[m].S_name,S[m].S_class1);m++; if(m>S->Total) break; } if(n>0) { while(S[n].D_number==i) { printf(“tt%-10d%-10s%-10s%-10s%-10sn”,S[n].D_number,S[n].S_bednum,S[n].S_number,S[n].S_name,S[n].S_class1);n--; if(n<1) break; } } j=1; putchar('n'); break; } else if(i>S[mid].D_number) base=mid+1; else top=mid-1; } } if(!j) printf(“n查找失敗,表中不存在該寢室的信息!nn”);} //存儲函數 void Save(Student S){ int i=0;FILE *fp;/*定義文件指針*/ char filename[100];/*定義文件名*/ printf(“tt輸入文件名:”);/*輸入文件名*/ scanf(“tt%s”,&filename);if((fp=fopen(filename,“w”))==NULL)/*打開文件*/ { printf(“tt無法打開該文件n”);system(“pause”);return;} fprintf(fp,“%dn”,S->Total);/*循環寫入數據*/ while(i<(S->Total)){ fprintf(fp,“%-10d%-10s%-10s%-10s%-10sn”,S[i].D_number,S[i].S_bednum,S[i].S_number,S[i].S_name,S[i].S_class1);i++;} fclose(fp);/*關閉文件*/ printf(“寫入成功!n”);/*返回成功信息*/ } //退出程序時判斷是否保存函數 void Judge_Save(int i,Student S){ char ch;if(i){ printf(“表中數據已改變,是否保存后再退出(Y/N)?:”); ch=getchar(); getchar(); while(ch!='n'&&ch!='N'&&ch!='y'&&ch!='Y') { printf(“請輸入N(n)或者Y(y):”); ch=getchar(); getchar(); } if(ch=='y'||ch=='Y') Save(S);} } //菜單 void Menu(){ system(“cls”);/*運行前清屏*/ printf(“n”);printf(“ 青島農業大學學生宿舍管理系統nn”); printf(“ n”);printf(“ 作者:明偉、李善虎、胡蒙亨n”);printf(“n”);printf(“tt=============學生宿舍管理系統===========n”);/*菜單選擇*/ printf(“tt n”); printf(“tt 1.新生入住 n”);printf(“tt 2.修改入住學生信息 n”);printf(“tt 3.退房服務 n”);printf(“tt 4.以姓名查詢學生信息 n”);printf(“tt 5.以學號查詢學生信息 n”);printf(“tt 6.以寢室號查詢學生信息 n”); printf(“tt 7.查詢全部學生信息 n”);printf(“tt 0.退出程序 n”);printf(“tt=========================================n”);} int main(){ int i;Student S;S->Total=0;do { Menu(); printf(“請選擇您要運行的選項按(0-9):”); scanf(“%d”,&i); getchar();//獲取換行符 putchar('n'); switch(i) { case 1:Add(S); system(“pause”); break; case 2:Alter(S); system(“pause”); break; case 3:Delete(S); system(“pause”); break; case 4:Query_S_name(S); system(“pause”); break; case 5:Query_S_number(S); system(“pause”); break; case 6:Query_D_number(S); system(“pause”); break; case 7:Display_All(S);system(“pause”); break; case 0:Judge_Save(dirty,S); exit(0); break; default:printf(“選擇錯誤:請在選項到之間選擇!nn”); break; } }while(i!=10);}(注:黑體部分為我負責的部分)2.程序運行說明(包括結果說明)程序運行說明 運行程序后,出現主菜單界面,按照主菜單上的編號進行操作即可,每輸入一個編號后按回車即進入該子程序,然后按照提示輸入或查詢信息。結果說明: 3.存在的問題 本程序在新生入住時將宿舍號限定在101,,12,201,202.當輸入的宿舍號不符合要求時只是重復出現“請輸入宿舍號”而沒有明確的文字提示。而且在修改入住學生信息時對宿舍號沒有限制。還需進一步完善。 四、總結與體會 當看到課程設計任務時,完全找不著頭緒,由于對C語言的認識和了解只是停留在表面,所以不知道從何下手。后來在不停的復習課本,在老師和同學的幫助下,逐漸找到了方向,也對設計中需要用到的方法和結構有所了解和認識,學會了如何使用,之后的一次課又經過仔細的思考了解了這個程序的基本框架,確定了程序的流程圖,為程序的完成奠定了基礎,接下來在寫代碼的過程中仍然遇到了很多問題,經過不斷的查閱課本和網絡,逐步解決了代碼問題,在實現整個程序功能方面,有些結構和方法不會用,最后在老師的幫助下才得以順利解決。做出來的程序在執行過程中仍然有一些問題,比如在上述“存在的問題”中提到的。設計過程確實讓我認識到了自己技術上的不足,在以后的學習中應該加強這方面的學習和重視。為以后的畢業設計和就業做準備。第三篇:宿舍智慧用電管理系統
第四篇:塔里木大學宿舍管理系統
第五篇:宿舍管理系統課程設計報告